Import of pkgsrc-2016Q3

This commit is contained in:
2016-10-14 07:49:11 +02:00
committed by Lionel Sambuc
parent 9d819b6d54
commit 1242aa1e36
35952 changed files with 949749 additions and 377083 deletions

View File

@@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.110 2015/08/17 08:15:40 wiz Exp $
# $NetBSD: Makefile,v 1.113 2016/01/24 19:35:26 markd Exp $
#
COMMENT= Tools for use in the packages collection
@@ -18,6 +18,7 @@ SUBDIR+= distbb
SUBDIR+= genpkgng
SUBDIR+= genrpm
SUBDIR+= gensolpkg
SUBDIR+= gimme
SUBDIR+= gnome-packagekit
SUBDIR+= libkver
SUBDIR+= libnbcompat
@@ -55,6 +56,7 @@ SUBDIR+= pkgdiff
SUBDIR+= pkgfind
SUBDIR+= pkgin
SUBDIR+= pkglint
SUBDIR+= pkglint4
SUBDIR+= pkgse
SUBDIR+= pkgsrc-todo
SUBDIR+= pkgsurvey
@@ -66,6 +68,7 @@ SUBDIR+= rdigest
SUBDIR+= revbump
SUBDIR+= rpm2pkg
SUBDIR+= shlock
SUBDIR+= texlive2pkg
SUBDIR+= url2pkg
SUBDIR+= verifypc
SUBDIR+= x11-links

View File

@@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.21 2014/03/03 03:33:18 obache Exp $
# $NetBSD: Makefile,v 1.22 2015/11/25 12:52:47 jperkin Exp $
PKGNAME= autoswc-1.6
CATEGORIES= pkgtools sysutils
@@ -19,13 +19,6 @@ CACHEDIR= /var/db/autoswc
MKCONF= /etc/mk.conf
OWN_DIRS= ${CACHEDIR}
EVAL_PREFIX+= PREFIX.autoconf=autoconf
PREFIX.autoconf_DEFAULT= ${LOCALBASE}
EVAL_PREFIX+= PREFIX.automake=automake
PREFIX.automake_DEFAULT= ${LOCALBASE}
EVAL_PREFIX+= PREFIX.libtool=libtool
PREFIX.libtool_DEFAULT= ${LOCALBASE}
SUBST_CLASSES+= build
SUBST_MESSAGE.build= Building autoswc.
SUBST_STAGE.build= do-build
@@ -33,11 +26,11 @@ SUBST_FILES.build= autoswc
SUBST_FILES.build+= autoswc.8
SUBST_FILES.build+= autoswc.mk
SUBST_FILES.build+= config.site
SUBST_SED.build= -e 's|@ACLOCAL@|${PREFIX.automake}/bin/aclocal|g'
SUBST_SED.build+= -e 's|@AUTOCONF@|${PREFIX.autoconf}/bin/autoconf|g'
SUBST_SED.build+= -e 's|@AUTOMAKE@|${PREFIX.automake}/bin/automake|g'
SUBST_SED.build= -e 's|@ACLOCAL@|${LOCALBASE}/bin/aclocal|g'
SUBST_SED.build+= -e 's|@AUTOCONF@|${LOCALBASE}/bin/autoconf|g'
SUBST_SED.build+= -e 's|@AUTOMAKE@|${LOCALBASE}/bin/automake|g'
SUBST_SED.build+= -e 's|@CACHEDIR@|${CACHEDIR}|g'
SUBST_SED.build+= -e 's|@LIBTOOLIZE@|${PREFIX.libtool}/bin/libtoolize|g'
SUBST_SED.build+= -e 's|@LIBTOOLIZE@|${LOCALBASE}/bin/libtoolize|g'
SUBST_SED.build+= -e 's|@MACHINE_GNU_PLATFORM@|${MACHINE_GNU_PLATFORM}|g'
SUBST_SED.build+= -e 's|@MAKE@|${MAKE}|g'
SUBST_SED.build+= -e 's|@MKCONF@|${MKCONF}|g'

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.49 2015/09/08 04:41:04 dholland Exp $
# $NetBSD: Makefile,v 1.52 2016/09/08 14:28:12 joerg Exp $
PKGNAME= bootstrap-mk-files-20150908
PKGNAME= bootstrap-mk-files-20160908
CATEGORIES= pkgtools
CONFLICTS+= mk-files-[0-9]*
@@ -8,6 +8,7 @@ CONFLICTS+= mk-files-[0-9]*
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= http://www.pkgsrc.org/
COMMENT= *.mk files for the bootstrap bmake utility
LICENSE= original-bsd
NO_PKGTOOLS_REQD_CHECK= # defined
BOOTSTRAP_PKG= yes

View File

@@ -1,4 +1,4 @@
# $NetBSD: AIX.sys.mk,v 1.1 2008/07/03 20:06:21 joerg Exp $
# $NetBSD: AIX.sys.mk,v 1.2 2016/09/08 14:28:12 joerg Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
unix?= We run Unix
@@ -24,20 +24,7 @@ COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= cc
.if ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "arm26" || \
${MACHINE_ARCH} == "arm32" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "m68k" || \
${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
${MACHINE_ARCH} == "sparc" || \
${MACHINE_ARCH} == "vax"
DBG?= -O2
.elif ${MACHINE_ARCH} == "x86_64"
DBG?=
.else
DBG?= -O
.endif
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: IRIX.sys.mk,v 1.4 2011/08/29 10:43:35 cheusov Exp $
# $NetBSD: IRIX.sys.mk,v 1.5 2016/09/08 14:28:12 joerg Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
unix?= We run Unix
@@ -22,7 +22,7 @@ LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= cc
NOGCCERROR?= # defined
DBG?= -O2
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: Linux.sys.mk,v 1.6 2015/08/31 09:03:19 jperkin Exp $
# $NetBSD: Linux.sys.mk,v 1.7 2016/09/08 14:28:12 joerg Exp $
# NetBSD: sys.mk,v 1.58 2000/08/22 17:38:49 bjh21 Exp
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
@@ -25,20 +25,7 @@ COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= cc
.if ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "arm26" || \
${MACHINE_ARCH} == "arm32" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "m68k" || \
${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
${MACHINE_ARCH} == "sparc" || \
${MACHINE_ARCH} == "vax"
DBG?= -O2
.elif ${MACHINE_ARCH} == "x86_64"
DBG?=
.else
DBG?= -O
.endif
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: Minix.sys.mk,v 1.3 2015/06/11 09:20:56 joerg Exp $
# $NetBSD: Minix.sys.mk,v 1.4 2016/09/08 14:28:12 joerg Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
unix?= We run Unix.
@@ -21,7 +21,7 @@ COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= gcc
DBG?=
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: NetBSD.sys.mk,v 1.1.1.1 2006/07/14 23:13:01 jlam Exp $
# $NetBSD: NetBSD.sys.mk,v 1.2 2016/09/08 14:28:12 joerg Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
unix?= We run NetBSD.
@@ -23,20 +23,7 @@ COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= cc
.if ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "arm26" || \
${MACHINE_ARCH} == "arm32" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "m68k" || \
${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
${MACHINE_ARCH} == "sparc" || \
${MACHINE_ARCH} == "vax"
DBG?= -O2
.elif ${MACHINE_ARCH} == "x86_64"
DBG?=
.else
DBG?= -O
.endif
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: OpenBSD.sys.mk,v 1.1.1.1 2006/07/14 23:13:01 jlam Exp $
# $NetBSD: OpenBSD.sys.mk,v 1.2 2016/09/08 14:28:12 joerg Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
unix?= We run OpenBSD.
@@ -23,15 +23,7 @@ COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= cc
.if ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "m68k" || \
${MACHINE_ARCH} == "sparc" || \
${MACHINE_ARCH} == "vax"
DBG?= -O2
.else
DBG?= -O
.endif
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: QNX.sys.mk,v 1.1 2015/07/04 07:19:08 ryoon Exp $
# $NetBSD: QNX.sys.mk,v 1.2 2016/09/08 14:28:12 joerg Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
unix?= We run Unix
@@ -24,20 +24,7 @@ COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= gcc
.if ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "arm26" || \
${MACHINE_ARCH} == "arm32" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "m68k" || \
${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
${MACHINE_ARCH} == "sparc" || \
${MACHINE_ARCH} == "vax"
DBG?= -O2
.elif ${MACHINE_ARCH} == "x86_64"
DBG?=
.else
DBG?= -O
.endif
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: SunOS.bsd.own.mk.in,v 1.2 2015/08/31 09:03:19 jperkin Exp $
# $NetBSD: SunOS.bsd.own.mk.in,v 1.3 2016/04/11 12:37:48 jperkin Exp $
.if !defined(_BSD_OWN_MK_)
_BSD_OWN_MK_=1
@@ -220,7 +220,11 @@ PRINTOBJDIR= printf "xxx: .MAKE\n\t@echo \$${.OBJDIR}\n" | ${MAKE} -B -s -f-
# The NOxxx variables should only be used by Makefiles.
#
.if exists(/usr/bin/mandoc)
MKCATPAGES?=no
.else
MKCATPAGES?=yes
.endif
.if defined(NODOC)
MKDOC=no

View File

@@ -1,4 +1,4 @@
# $NetBSD: SunOS.sys.mk,v 1.7 2015/08/31 09:03:19 jperkin Exp $
# $NetBSD: SunOS.sys.mk,v 1.8 2016/09/08 14:28:12 joerg Exp $
# NetBSD: sys.mk,v 1.58 2000/08/22 17:38:49 bjh21 Exp
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
@@ -26,20 +26,7 @@ LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
# Unless told otherwise, assume GNU CC
CC?= gcc
.if ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "arm26" || \
${MACHINE_ARCH} == "arm32" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "m68k" || \
${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
${MACHINE_ARCH} == "sparc" || \
${MACHINE_ARCH} == "vax"
DBG?= -O2
.elif ${MACHINE_ARCH} == "x86_64"
DBG?=
.else
DBG?= -O
.endif
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,4 +1,4 @@
# $NetBSD: sys.mk,v 1.1.1.1 2006/07/14 23:13:01 jlam Exp $
# $NetBSD: sys.mk,v 1.2 2016/09/08 14:28:12 joerg Exp $
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
unix?= We run Unix
@@ -24,20 +24,7 @@ COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
CC?= cc
.if ${MACHINE_ARCH} == "alpha" || \
${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "arm26" || \
${MACHINE_ARCH} == "arm32" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "m68k" || \
${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
${MACHINE_ARCH} == "sparc" || \
${MACHINE_ARCH} == "vax"
DBG?= -O2
.elif ${MACHINE_ARCH} == "x86_64"
DBG?=
.else
DBG?= -O
.endif
DBG?= -O2
CFLAGS?= ${DBG}
COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.53 2014/10/09 14:06:49 wiz Exp $
# $NetBSD: Makefile,v 1.54 2015/12/29 21:21:20 wiz Exp $
PKGNAME= createbuildlink-3.16
PKGNAME= createbuildlink-3.17
CATEGORIES= pkgtools sysutils
MAINTAINER= pkgsrc-users@NetBSD.org

View File

@@ -1,6 +1,6 @@
#!/bin/sh
#
# $NetBSD: createbuildlink,v 1.36 2015/07/04 16:18:39 joerg Exp $
# $NetBSD: createbuildlink,v 1.37 2015/12/29 21:21:20 wiz Exp $
#
# Copyright (c) 2002 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -39,7 +39,7 @@
# Create an initial buildlink3.mk from a package's Makefile and PLIST
#
REV=`echo '$Revision: 1.36 $' | sed 's/\\$//g'`
REV=`echo '$Revision: 1.37 $' | sed 's/\\$//g'`
tmpdir=/tmp
spacesintab=8
makefile=Makefile
@@ -90,6 +90,7 @@ PKGNAME=`@MAKE@ show-var VARNAME=PKGNAME`
PKGVER=`echo $PKGNAME | sed -e 's/^.*-//'`
PKGNOVER=`echo $PKGNAME | sed -e 's/-[^-]*$//'`
PKGUPPER=`echo $PKGNOVER | tr '[:lower:]' '[:upper:]' | tr - _`
GO_PACKAGE=`@MAKE@ show-var VARNAME=GO_SRCPATH`
PREFIX=LOCALBASE
##
@@ -139,6 +140,15 @@ ${PKGUPPER}_BUILDLINK3_MK:=
EOF
if [ -n "$GO_PACKAGE" ]
then
sed -f $sedrules <<EOF
BUILDLINK_CONTENTS_FILTER.$PKGNOVER= \${EGREP} gopkg/
BUILDLINK_DEPMETHOD.$PKGNOVER?= build
EOF
fi
sed -f $sedrules <<EOF
BUILDLINK_API_DEPENDS.$PKGNOVER+= $PKGNOVER>=$PKGVER
EOF

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.13 2015/07/07 15:00:25 jperkin Exp $
# $NetBSD: Makefile,v 1.16 2016/09/15 17:08:14 joerg Exp $
PKGNAME= cwrappers-20150707
PKGNAME= cwrappers-20160908
CATEGORIES= pkgtools sysutils
MAINTAINER= joerg@NetBSD.org

View File

@@ -1,4 +1,4 @@
/* $NetBSD: cleanup-cc.c,v 1.2 2015/04/19 14:30:07 jperkin Exp $ */
/* $NetBSD: cleanup-cc.c,v 1.3 2016/01/10 19:13:05 bsiegert Exp $ */
/*-
* Copyright (c) 2009 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -65,7 +65,7 @@ cleanup_cc(struct arglist *args)
if (strncmp(arg->val, "-I", 2) == 0 ||
strncmp(arg->val, "-L", 2) == 0 ||
strncmp(arg->val, "-Wl,-rpath,", 11) == 0 ||
strncmp(arg->val, "-Wl,-rpath-link,", 15) == 0) {
strncmp(arg->val, "-Wl,-rpath-link,", 16) == 0) {
i = wrapper_hash(arg->val) & (CLEANUP_HASH - 1);
TAILQ_FOREACH(arg3, hashtab + i, tmp_link) {
if (strcmp(arg->val, arg3->val) == 0) {

View File

@@ -1,4 +1,4 @@
/* $NetBSD: generic-transform-cc.c,v 1.3 2015/04/19 14:30:07 jperkin Exp $ */
/* $NetBSD: generic-transform-cc.c,v 1.4 2016/03/14 20:16:08 markd Exp $ */
/*-
* Copyright (c) 2009 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -360,6 +360,19 @@ generic_transform_cc(struct arglist *args)
ruleset = &include_rules;
opt_arg = NULL;
}
else if (strcmp(arg->val, "-isystem") == 0) {
opt_arg = arg;
arg = arg2;
if (arg == NULL || arg->val[0] == '-') {
errx(255, "Missing argument for %s",
opt_arg->val);
}
ruleset = &include_rules;
arg2 = TAILQ_NEXT(arg, link);
len = strlen(arg->val);
prefix = "";
path = arg->val;
}
#endif
else if (strncmp(arg->val, "-L", 2) == 0) {
len -= 2;

View File

@@ -1,4 +1,4 @@
/* $NetBSD: normalise-cc.c,v 1.3 2015/07/07 15:00:25 jperkin Exp $ */
/* $NetBSD: normalise-cc.c,v 1.4 2016/09/15 17:08:14 joerg Exp $ */
/*-
* Copyright (c) 2009 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -104,8 +104,16 @@ normalise_cc(struct arglist *args)
}
TAILQ_FOREACH_SAFE(arg, args, link, arg2) {
if (strcmp(arg->val, "-o") == 0 ||
strcmp(arg->val, "-dylib_file") == 0 ||
if (strcmp(arg->val, "-o") == 0) {
/* Output to stdout ("-") is explicitly valid. */
if (arg2 == NULL ||
(arg2->val[0] == '-' && arg2->val[1] != '\0'))
errx(255, "Missing argument for %s", arg->val);
arg2 = TAILQ_NEXT(arg2, link);
continue;
}
if (strcmp(arg->val, "-dylib_file") == 0 ||
strcmp(arg->val, "-dylib_install_name") == 0 ||
strcmp(arg->val, "-install_name") == 0 ||
strcmp(arg->val, "-seg_addr_table_filename") == 0 ||

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2001 Alistair G. Crooks. All rights reserved.
/*-
* Copyright (c) 2001-2016 Alistair Crooks <agc@NetBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -9,22 +10,15 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Alistair G. Crooks.
* 4. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

View File

@@ -1,4 +1,4 @@
# $Id: Makefile.in,v 1.5 2007/07/03 18:54:02 joerg Exp $
# $Id: Makefile.in,v 1.6 2016/03/03 22:11:07 agc Exp $
@SET_MAKE@
SHELL = @SHELL@
@@ -42,12 +42,14 @@ LDFLAGS= @LDFLAGS@
LINK= $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
COMPILE= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS)
digest_OBJS = digest.o md5c.o rmd160.o rmd160hl.o sha2.o sha2hl.o \
md5hl.o sha1.o sha1hl.o tiger.o whirlpool.o
digest_OBJS = digest.o keccak.o md5c.o md5hl.o rmd160.o \
rmd160hl.o sha1.o sha1hl.o sha2.o sha2hl.o sha3.o sha3hl.o \
tiger.o whirlpool.o
SRCS= digest.c md5c.c rmd160.c rmd160hl.c sha2.c sha2hl.c md5hl.c sha1.c \
sha1hl.c md5.h rmd160.h sha1.h sha2.h tiger.c tiger.h whirlpool.c \
whirlpool.h
SRCS= digest.c keccak.c md5c.c md5hl.c rmd160.c \
rmd160hl.c sha1.c sha1hl.c sha2.c sha2hl.c sha3.c sha3hl.c \
tiger.c whirlpool.c \
md5.h rmd160.h sha1.h sha2.h sha3.h tiger.h whirlpool.h
DISTFILES= $(SRCS) AUTHORS COPYING DESCR INSTALL Makefile.in NEWS aclocal.m4 \
config.guess config.h.in config.sub configure configure.ac install-sh \

View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for nbsd-digest 20121220.
# Generated by GNU Autoconf 2.69 for nbsd-digest 20160304.
#
# Report bugs to <agc@netbsd.org>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='nbsd-digest'
PACKAGE_TARNAME='nbsd-digest'
PACKAGE_VERSION='20121220'
PACKAGE_STRING='nbsd-digest 20121220'
PACKAGE_VERSION='20160304'
PACKAGE_STRING='nbsd-digest 20160304'
PACKAGE_BUGREPORT='agc@netbsd.org'
PACKAGE_URL=''
@@ -1242,7 +1242,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures nbsd-digest 20121220 to adapt to many kinds of systems.
\`configure' configures nbsd-digest 20160304 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1312,7 +1312,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of nbsd-digest 20121220:";;
short | recursive ) echo "Configuration of nbsd-digest 20160304:";;
esac
cat <<\_ACEOF
@@ -1392,7 +1392,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
nbsd-digest configure 20121220
nbsd-digest configure 20160304
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1937,7 +1937,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by nbsd-digest $as_me 20121220, which was
It was created by nbsd-digest $as_me 20160304, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4707,7 +4707,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by nbsd-digest $as_me 20121220, which was
This file was extended by nbsd-digest $as_me 20160304, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -4769,7 +4769,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
nbsd-digest config.status 20121220
nbsd-digest config.status 20160304
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@@ -1,7 +1,7 @@
dnl $Id: configure.ac,v 1.18 2013/01/03 10:20:31 dholland Exp $
dnl $Id: configure.ac,v 1.20 2016/03/04 23:09:25 agc Exp $
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT([nbsd-digest],[20121220],[agc@netbsd.org])
AC_INIT([nbsd-digest],[20160304],[agc@netbsd.org])
AC_CONFIG_SRCDIR([digest.c])
AC_CONFIG_HEADER(config.h)
AC_ARG_PROGRAM

View File

@@ -1,7 +1,7 @@
.\" $NetBSD: digest.1,v 1.7 2013/07/20 21:50:52 wiz Exp $
.\" $NetBSD: digest.1,v 1.8 2016/03/03 22:11:07 agc Exp $
.\"
.\"
.\" Copyright (c) 2001 Alistair G. Crooks. All rights reserved.
.\" Copyright (c) 2001-2016 Alistair Crooks <agc@NetBSD.org>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@@ -11,27 +11,19 @@
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by Alistair G. Crooks.
.\" 4. The name of the author may not be used to endorse or promote
.\" products derived from this software without specific prior written
.\" permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
.\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
.\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
.\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\"
.Dd March 23, 2005
.Dd February 16, 2016
.Dt DIGEST 1
.Os
.Sh NAME
@@ -39,15 +31,30 @@
.Nd calculate message digests
.Sh SYNOPSIS
.Nm
.Op Fl "Vt"
.Ar algorithm
.Op file ...
.Op Ar
.Sh DESCRIPTION
The
.Nm
utility calculates message digests of files or,
if no file is specified, standard input.
.Pp
It can also run self tests via the
.Fl t
command line option; the only self tests currently defined are
for the
.Dv SHA3
set of digests.
.Pp
The
.Fl V
command line option prints the version number of
.Nm
and exits successfully.
.Pp
The list of possible algorithms is:
.Bl -tag -width Ds
.Bl -tag -width SHA3_512xxx
.It md5
the
.Xr md5 3
@@ -68,6 +75,22 @@ algorithm will be used.
the
sha384
algorithm will be used.
.It sha3_224
the
sha3_224
algorithm will be used.
.It sha3_256
the
sha3_256
algorithm will be used.
.It sha3_384
the
sha3_384
algorithm will be used.
.It sha3_512
the
sha3_512
algorithm will be used.
.It sha512
the
sha512

View File

@@ -1,7 +1,8 @@
/* $NetBSD: digest.c,v 1.15 2007/09/21 18:44:36 joerg Exp $ */
/* $NetBSD: digest.c,v 1.16 2016/03/03 22:11:07 agc Exp $ */
/*
* Copyright (c) 2001-2005 Alistair G. Crooks. All rights reserved.
/*-
* Copyright (c) 2001-2016 Alistair Crooks <agc@NetBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -11,36 +12,22 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Alistair G. Crooks.
* 4. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifndef lint
__COPYRIGHT("@(#) Copyright (c) 2001-2005 \
The NetBSD Foundation, Inc. All rights reserved.");
__RCSID("$NetBSD: digest.c,v 1.15 2007/09/21 18:44:36 joerg Exp $");
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
@@ -51,6 +38,7 @@ __RCSID("$NetBSD: digest.c,v 1.15 2007/09/21 18:44:36 joerg Exp $");
#include <rmd160.h>
#include <sha1.h>
#include <sha2.h>
#include <sha3.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -79,6 +67,10 @@ typedef struct alg_t {
RMD160_CTX rmd;
SHA256_CTX sha256;
SHA384_CTX sha384;
SHA3_224_CTX sha3_224;
SHA3_256_CTX sha3_256;
SHA3_384_CTX sha3_384;
SHA3_512_CTX sha3_512;
SHA512_CTX sha512;
tiger_context_t tiger;
whirlpool_context_t whirlpool;
@@ -99,6 +91,18 @@ static alg_t algorithms[] = {
{ "SHA256", SHA256_DIGEST_LENGTH,
(HASH_init) SHA256_Init, (HASH_update) SHA256_Update,
(HASH_end) SHA256_End, (HASH_file) SHA256_File },
{ "SHA3_224", SHA3_224_DIGEST_LENGTH,
(HASH_init) SHA3_224_Init, (HASH_update) SHA3_224_Update,
(HASH_end) SHA3_224_End, (HASH_file) SHA3_224_File },
{ "SHA3_256", SHA3_256_DIGEST_LENGTH,
(HASH_init) SHA3_256_Init, (HASH_update) SHA3_256_Update,
(HASH_end) SHA3_256_End, (HASH_file) SHA3_256_File },
{ "SHA3_384", SHA3_384_DIGEST_LENGTH,
(HASH_init) SHA3_384_Init, (HASH_update) SHA3_384_Update,
(HASH_end) SHA3_384_End, (HASH_file) SHA3_384_File },
{ "SHA3_512", SHA3_512_DIGEST_LENGTH,
(HASH_init) SHA3_512_Init, (HASH_update) SHA3_512_Update,
(HASH_end) SHA3_512_End, (HASH_file) SHA3_512_File },
{ "SHA384", SHA384_DIGEST_LENGTH,
(HASH_init) SHA384_Init, (HASH_update) SHA384_Update,
(HASH_end) SHA384_End, (HASH_file) SHA384_File },
@@ -161,46 +165,58 @@ int
main(int argc, char **argv)
{
alg_t *alg;
int rval;
int test;
int ok;
int i;
#ifdef HAVE_SETLOCALE
(void) setlocale(LC_ALL, "");
#endif
while ((i = getopt(argc, argv, "V")) != -1) {
test = 0;
while ((i = getopt(argc, argv, "Vt")) != -1) {
switch(i) {
case 'V':
printf("%s\n", VERSION);
return EXIT_SUCCESS;
case 't':
test = 1;
break;
}
}
argc -= optind;
argv += optind;
if (argc == 0) {
if (test) {
/* there's room for other tests here -- agc */
printf("self test mode starting\n");
ok = 1;
if (SHA3_Selftest() != 0) {
ok = 0;
}
printf("self test mode completed\n");
return (ok) ? EXIT_SUCCESS : EXIT_FAILURE;
}
/* check for correct usage */
if (argc == optind) {
(void) fprintf(stderr, "Usage: %s algorithm [file...]\n",
argv[-optind]);
argv[0]);
return EXIT_FAILURE;
}
if ((alg = find_algorithm(argv[0])) == NULL) {
(void) fprintf(stderr, "No such algorithm `%s'\n", argv[0]);
/* check we know the digest algorithm */
if ((alg = find_algorithm(argv[optind])) == NULL) {
(void) fprintf(stderr, "No such algorithm `%s'\n", argv[optind]);
exit(EXIT_FAILURE);
}
argc--;
argv++;
rval = EXIT_SUCCESS;
if (argc == 0) {
ok = 1;
if (argc == optind + 1) {
if (!digest_file(NULL, alg)) {
(void) fprintf(stderr, "stdin\n");
rval = EXIT_FAILURE;
fprintf(stderr, "stdin\n");
ok = 0;
}
} else {
for (i = 0 ; i < argc ; i++) {
for (i = optind + 1 ; i < argc ; i++) {
if (!digest_file(argv[i], alg)) {
(void) fprintf(stderr, "%s\n", argv[i]);
rval = EXIT_FAILURE;
fprintf(stderr, "%s\n", argv[i]);
ok = 0;
}
}
}
return rval;
return (ok) ? EXIT_SUCCESS : EXIT_FAILURE;
}

View File

@@ -0,0 +1,176 @@
/*-
* Copyright (c) 2015 Taylor R. Campbell
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <stdint.h>
#include "keccak.h"
#define secret /* can't use in variable-time operations, should zero */
#define FOR5(X, STMT) do \
{ \
(X) = 0; (STMT); \
(X) = 1; (STMT); \
(X) = 2; (STMT); \
(X) = 3; (STMT); \
(X) = 4; (STMT); \
} while (0)
static inline secret uint64_t
rol64(secret uint64_t v, unsigned c)
{
return ((v << c) | (v >> (64 - c)));
}
static inline void
keccakf1600_theta(secret uint64_t A[25])
{
secret uint64_t C0, C1, C2, C3, C4;
unsigned y;
C0 = C1 = C2 = C3 = C4 = 0;
FOR5(y, {
C0 ^= A[0 + 5*y];
C1 ^= A[1 + 5*y];
C2 ^= A[2 + 5*y];
C3 ^= A[3 + 5*y];
C4 ^= A[4 + 5*y];
});
FOR5(y, {
A[0 + 5*y] ^= C4 ^ rol64(C1, 1);
A[1 + 5*y] ^= C0 ^ rol64(C2, 1);
A[2 + 5*y] ^= C1 ^ rol64(C3, 1);
A[3 + 5*y] ^= C2 ^ rol64(C4, 1);
A[4 + 5*y] ^= C3 ^ rol64(C0, 1);
});
}
static inline void
keccakf1600_rho_pi(secret uint64_t A[25])
{
secret uint64_t T, U;
/*
* Permute by (x,y) |---> (y, 2x + 3y mod 5) starting at (1,0),
* rotate the ith element by (i + 1)(i + 2)/2 mod 64.
*/
U = A[ 1]; T = U;
U = A[10]; A[10] = rol64(T, 1); T = U;
U = A[ 7]; A[ 7] = rol64(T, 3); T = U;
U = A[11]; A[11] = rol64(T, 6); T = U;
U = A[17]; A[17] = rol64(T, 10); T = U;
U = A[18]; A[18] = rol64(T, 15); T = U;
U = A[ 3]; A[ 3] = rol64(T, 21); T = U;
U = A[ 5]; A[ 5] = rol64(T, 28); T = U;
U = A[16]; A[16] = rol64(T, 36); T = U;
U = A[ 8]; A[ 8] = rol64(T, 45); T = U;
U = A[21]; A[21] = rol64(T, 55); T = U;
U = A[24]; A[24] = rol64(T, 2); T = U;
U = A[ 4]; A[ 4] = rol64(T, 14); T = U;
U = A[15]; A[15] = rol64(T, 27); T = U;
U = A[23]; A[23] = rol64(T, 41); T = U;
U = A[19]; A[19] = rol64(T, 56); T = U;
U = A[13]; A[13] = rol64(T, 8); T = U;
U = A[12]; A[12] = rol64(T, 25); T = U;
U = A[ 2]; A[ 2] = rol64(T, 43); T = U;
U = A[20]; A[20] = rol64(T, 62); T = U;
U = A[14]; A[14] = rol64(T, 18); T = U;
U = A[22]; A[22] = rol64(T, 39); T = U;
U = A[ 9]; A[ 9] = rol64(T, 61); T = U;
U = A[ 6]; A[ 6] = rol64(T, 20); T = U;
A[ 1] = rol64(T, 44);
}
static inline void
keccakf1600_chi(secret uint64_t A[25])
{
secret uint64_t B0, B1, B2, B3, B4;
unsigned y;
FOR5(y, {
B0 = A[0 + 5*y];
B1 = A[1 + 5*y];
B2 = A[2 + 5*y];
B3 = A[3 + 5*y];
B4 = A[4 + 5*y];
A[0 + 5*y] ^= ~B1 & B2;
A[1 + 5*y] ^= ~B2 & B3;
A[2 + 5*y] ^= ~B3 & B4;
A[3 + 5*y] ^= ~B4 & B0;
A[4 + 5*y] ^= ~B0 & B1;
});
}
static void
keccakf1600_round(secret uint64_t A[25])
{
keccakf1600_theta(A);
keccakf1600_rho_pi(A);
keccakf1600_chi(A);
}
void
keccakf1600(secret uint64_t A[25])
{
/*
* RC[i] = \sum_{j = 0,...,6} rc(j + 7i) 2^(2^j - 1),
* rc(t) = (x^t mod x^8 + x^6 + x^5 + x^4 + 1) mod x in GF(2)[x]
*/
static const uint64_t RC[24] = {
0x0000000000000001ULL,
0x0000000000008082ULL,
0x800000000000808aULL,
0x8000000080008000ULL,
0x000000000000808bULL,
0x0000000080000001ULL,
0x8000000080008081ULL,
0x8000000000008009ULL,
0x000000000000008aULL,
0x0000000000000088ULL,
0x0000000080008009ULL,
0x000000008000000aULL,
0x000000008000808bULL,
0x800000000000008bULL,
0x8000000000008089ULL,
0x8000000000008003ULL,
0x8000000000008002ULL,
0x8000000000000080ULL,
0x000000000000800aULL,
0x800000008000000aULL,
0x8000000080008081ULL,
0x8000000000008080ULL,
0x0000000080000001ULL,
0x8000000080008008ULL,
};
unsigned i;
for (i = 0; i < 24; i++) {
keccakf1600_round(A);
A[0] ^= RC[i];
}
}

View File

@@ -0,0 +1,34 @@
/*-
* Copyright (c) 2015 Taylor R. Campbell
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef KECCAK_H
#define KECCAK_H
#include <stdint.h>
void keccakf1600(uint64_t A[25]);
#endif /* KECCAK_H */

View File

@@ -0,0 +1,636 @@
/*-
* Copyright (c) 2015 Taylor R. Campbell
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* SHA-3: FIPS-202, Permutation-Based Hash and Extendable-Ouptut Functions
*/
#include <assert.h>
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include "keccak.h"
#include "sha3.h"
#define MIN(a,b) ((a) < (b) ? (a) : (b))
void *(*volatile sha3_explicit_memset_impl)(void *, int, size_t) = &memset;
static void *
sha3_explicit_memset(void *buf, int c, size_t n)
{
return (*sha3_explicit_memset_impl)(buf, c, n);
}
static inline uint64_t
le64dec(const void *buf)
{
const uint8_t *p = buf;
return (((uint64_t)p[0]) |
((uint64_t)p[1] << 8) |
((uint64_t)p[2] << 16) |
((uint64_t)p[3] << 24) |
((uint64_t)p[4] << 32) |
((uint64_t)p[5] << 40) |
((uint64_t)p[6] << 48) |
((uint64_t)p[7] << 56));
}
static inline void
le64enc(void *buf, uint64_t v)
{
uint8_t *p = buf;
*p++ = v; v >>= 8;
*p++ = v; v >>= 8;
*p++ = v; v >>= 8;
*p++ = v; v >>= 8;
*p++ = v; v >>= 8;
*p++ = v; v >>= 8;
*p++ = v; v >>= 8;
*p++ = v;
}
/*
* Common body. All the SHA-3 functions share code structure. They
* differ only in the size of the chunks they split the message into:
* for digest size d, they are split into chunks of 200 - d bytes.
*/
static inline unsigned
sha3_rate(unsigned d)
{
const unsigned cw = 2*d/8; /* capacity in words */
return 25 - cw;
}
static void
sha3_init(struct sha3 *C, unsigned rw)
{
unsigned iw;
C->nb = 8*rw;
for (iw = 0; iw < 25; iw++)
C->A[iw] = 0;
}
static void
sha3_update(struct sha3 *C, const uint8_t *data, size_t len, unsigned rw)
{
uint64_t T;
unsigned ib, iw; /* index of byte/word */
assert(0 < C->nb);
/* If there's a partial word, try to fill it. */
if ((C->nb % 8) != 0) {
T = 0;
for (ib = 0; ib < MIN(len, C->nb % 8); ib++)
T |= (uint64_t)data[ib] << (8*ib);
C->A[rw - (C->nb + 7)/8] ^= T << (8*(8 - (C->nb % 8)));
C->nb -= ib;
data += ib;
len -= ib;
/* If we filled the buffer, permute now. */
if (C->nb == 0) {
keccakf1600(C->A);
C->nb = 8*rw;
}
/* If that exhausted the input, we're done. */
if (len == 0)
return;
}
/* At a word boundary. Fill any partial buffer. */
assert((C->nb % 8) == 0);
if (C->nb < 8*rw) {
for (iw = 0; iw < MIN(len, C->nb)/8; iw++)
C->A[rw - C->nb/8 + iw] ^= le64dec(data + 8*iw);
C->nb -= 8*iw;
data += 8*iw;
len -= 8*iw;
/* If we filled the buffer, permute now. */
if (C->nb == 0) {
keccakf1600(C->A);
C->nb = 8*rw;
} else {
/* Otherwise, less than a word left. */
assert(len < 8);
goto partial;
}
}
/* At a buffer boundary. Absorb input one buffer at a time. */
assert(C->nb == 8*rw);
while (8*rw <= len) {
for (iw = 0; iw < rw; iw++)
C->A[iw] ^= le64dec(data + 8*iw);
keccakf1600(C->A);
data += 8*rw;
len -= 8*rw;
}
/* Partially fill the buffer with as many words as we can. */
for (iw = 0; iw < len/8; iw++)
C->A[rw - C->nb/8 + iw] ^= le64dec(data + 8*iw);
C->nb -= 8*iw;
data += 8*iw;
len -= 8*iw;
partial:
/* Partially fill the last word with as many bytes as we can. */
assert(len < 8);
assert(0 < C->nb);
assert((C->nb % 8) == 0);
T = 0;
for (ib = 0; ib < len; ib++)
T |= (uint64_t)data[ib] << (8*ib);
C->A[rw - C->nb/8] ^= T;
C->nb -= ib;
assert(0 < C->nb);
}
static void
sha3_final(uint8_t *h, unsigned d, struct sha3 *C, unsigned rw)
{
unsigned nw, iw;
assert(d <= 8*25);
assert(0 < C->nb);
/* Append 01, pad with 10*1 up to buffer boundary, LSB first. */
nw = (C->nb + 7)/8;
assert(0 < nw);
assert(nw <= rw);
C->A[rw - nw] ^= (uint64_t)0x06 << (8*(8*nw - C->nb));
C->A[rw - 1] ^= 0x8000000000000000ULL;
/* Permute one last time. */
keccakf1600(C->A);
/* Reveal the first 8d bits of state, forget 1600-8d of them. */
for (iw = 0; iw < d/8; iw++)
le64enc(h + 8*iw, C->A[iw]);
h += 8*iw;
d -= 8*iw;
if (0 < d) {
/* For SHA3-224, we need to expose a partial word. */
uint64_t T = C->A[iw];
do {
*h++ = T & 0xff;
T >>= 8;
} while (--d);
}
(void)sha3_explicit_memset(C->A, 0, sizeof C->A);
C->nb = 0;
}
static void
shake_final(uint8_t *h, unsigned d, struct sha3 *C, unsigned rw)
{
unsigned nw, iw;
assert(0 < C->nb);
/* Append 1111, pad with 10*1 up to buffer boundary, LSB first. */
nw = (C->nb + 7)/8;
assert(0 < nw);
assert(nw <= rw);
C->A[rw - nw] ^= (uint64_t)0x1f << (8*(8*nw - C->nb));
C->A[rw - 1] ^= 0x8000000000000000ULL;
/* Permute, reveal first rw words of state, repeat. */
while (8*rw <= d) {
keccakf1600(C->A);
for (iw = 0; iw < rw; iw++)
le64enc(h + 8*iw, C->A[iw]);
h += 8*iw;
d -= 8*iw;
}
/*
* If 8*rw (the output rate in bytes) does not divide d, more
* words are wanted: permute again and reveal a little more.
*/
if (0 < d) {
keccakf1600(C->A);
for (iw = 0; iw < d/8; iw++)
le64enc(h + 8*iw, C->A[iw]);
h += 8*iw;
d -= 8*iw;
/*
* If 8 does not divide d, more bytes are wanted:
* reveal them.
*/
if (0 < d) {
uint64_t T = C->A[iw];
do {
*h++ = T & 0xff;
T >>= 8;
} while (--d);
}
}
(void)sha3_explicit_memset(C->A, 0, sizeof C->A);
C->nb = 0;
}
void
SHA3_224_Init(SHA3_224_CTX *C)
{
sha3_init(&C->C224, sha3_rate(SHA3_224_DIGEST_LENGTH));
}
void
SHA3_224_Update(SHA3_224_CTX *C, const uint8_t *data, size_t len)
{
sha3_update(&C->C224, data, len, sha3_rate(SHA3_224_DIGEST_LENGTH));
}
void
SHA3_224_Final(uint8_t h[SHA3_224_DIGEST_LENGTH], SHA3_224_CTX *C)
{
sha3_final(h, SHA3_224_DIGEST_LENGTH, &C->C224,
sha3_rate(SHA3_224_DIGEST_LENGTH));
}
void
SHA3_256_Init(SHA3_256_CTX *C)
{
sha3_init(&C->C256, sha3_rate(SHA3_256_DIGEST_LENGTH));
}
void
SHA3_256_Update(SHA3_256_CTX *C, const uint8_t *data, size_t len)
{
sha3_update(&C->C256, data, len, sha3_rate(SHA3_256_DIGEST_LENGTH));
}
void
SHA3_256_Final(uint8_t h[SHA3_256_DIGEST_LENGTH], SHA3_256_CTX *C)
{
sha3_final(h, SHA3_256_DIGEST_LENGTH, &C->C256,
sha3_rate(SHA3_256_DIGEST_LENGTH));
}
void
SHA3_384_Init(SHA3_384_CTX *C)
{
sha3_init(&C->C384, sha3_rate(SHA3_384_DIGEST_LENGTH));
}
void
SHA3_384_Update(SHA3_384_CTX *C, const uint8_t *data, size_t len)
{
sha3_update(&C->C384, data, len, sha3_rate(SHA3_384_DIGEST_LENGTH));
}
void
SHA3_384_Final(uint8_t h[SHA3_384_DIGEST_LENGTH], SHA3_384_CTX *C)
{
sha3_final(h, SHA3_384_DIGEST_LENGTH, &C->C384,
sha3_rate(SHA3_384_DIGEST_LENGTH));
}
void
SHA3_512_Init(SHA3_512_CTX *C)
{
sha3_init(&C->C512, sha3_rate(SHA3_512_DIGEST_LENGTH));
}
void
SHA3_512_Update(SHA3_512_CTX *C, const uint8_t *data, size_t len)
{
sha3_update(&C->C512, data, len, sha3_rate(SHA3_512_DIGEST_LENGTH));
}
void
SHA3_512_Final(uint8_t h[SHA3_512_DIGEST_LENGTH], SHA3_512_CTX *C)
{
sha3_final(h, SHA3_512_DIGEST_LENGTH, &C->C512,
sha3_rate(SHA3_512_DIGEST_LENGTH));
}
void
SHAKE128_Init(SHAKE128_CTX *C)
{
sha3_init(&C->C128, sha3_rate(128/8));
}
void
SHAKE128_Update(SHAKE128_CTX *C, const uint8_t *data, size_t len)
{
sha3_update(&C->C128, data, len, sha3_rate(128/8));
}
void
SHAKE128_Final(uint8_t *h, size_t d, SHAKE128_CTX *C)
{
shake_final(h, d, &C->C128, sha3_rate(128/8));
}
void
SHAKE256_Init(SHAKE256_CTX *C)
{
sha3_init(&C->C256, sha3_rate(256/8));
}
void
SHAKE256_Update(SHAKE256_CTX *C, const uint8_t *data, size_t len)
{
sha3_update(&C->C256, data, len, sha3_rate(256/8));
}
void
SHAKE256_Final(uint8_t *h, size_t d, SHAKE256_CTX *C)
{
shake_final(h, d, &C->C256, sha3_rate(256/8));
}
static void
sha3_selftest_prng(void *buf, size_t len, uint32_t seed)
{
uint8_t *p = buf;
size_t n = len;
uint32_t t, a, b;
a = 0xdead4bad * seed;
b = 1;
while (n--) {
t = a + b;
*p++ = t >> 24;
a = b;
b = t;
}
}
int
SHA3_Selftest(void)
{
const uint8_t d224_0[] = { /* SHA3-224(0-bit) */
0x6b,0x4e,0x03,0x42,0x36,0x67,0xdb,0xb7,
0x3b,0x6e,0x15,0x45,0x4f,0x0e,0xb1,0xab,
0xd4,0x59,0x7f,0x9a,0x1b,0x07,0x8e,0x3f,
0x5b,0x5a,0x6b,0xc7,
};
const uint8_t d256_0[] = { /* SHA3-256(0-bit) */
0xa7,0xff,0xc6,0xf8,0xbf,0x1e,0xd7,0x66,
0x51,0xc1,0x47,0x56,0xa0,0x61,0xd6,0x62,
0xf5,0x80,0xff,0x4d,0xe4,0x3b,0x49,0xfa,
0x82,0xd8,0x0a,0x4b,0x80,0xf8,0x43,0x4a,
};
const uint8_t d384_0[] = { /* SHA3-384(0-bit) */
0x0c,0x63,0xa7,0x5b,0x84,0x5e,0x4f,0x7d,
0x01,0x10,0x7d,0x85,0x2e,0x4c,0x24,0x85,
0xc5,0x1a,0x50,0xaa,0xaa,0x94,0xfc,0x61,
0x99,0x5e,0x71,0xbb,0xee,0x98,0x3a,0x2a,
0xc3,0x71,0x38,0x31,0x26,0x4a,0xdb,0x47,
0xfb,0x6b,0xd1,0xe0,0x58,0xd5,0xf0,0x04,
};
const uint8_t d512_0[] = { /* SHA3-512(0-bit) */
0xa6,0x9f,0x73,0xcc,0xa2,0x3a,0x9a,0xc5,
0xc8,0xb5,0x67,0xdc,0x18,0x5a,0x75,0x6e,
0x97,0xc9,0x82,0x16,0x4f,0xe2,0x58,0x59,
0xe0,0xd1,0xdc,0xc1,0x47,0x5c,0x80,0xa6,
0x15,0xb2,0x12,0x3a,0xf1,0xf5,0xf9,0x4c,
0x11,0xe3,0xe9,0x40,0x2c,0x3a,0xc5,0x58,
0xf5,0x00,0x19,0x9d,0x95,0xb6,0xd3,0xe3,
0x01,0x75,0x85,0x86,0x28,0x1d,0xcd,0x26,
};
const uint8_t shake128_0_41[] = { /* SHAKE128(0-bit, 41) */
0x7f,0x9c,0x2b,0xa4,0xe8,0x8f,0x82,0x7d,
0x61,0x60,0x45,0x50,0x76,0x05,0x85,0x3e,
0xd7,0x3b,0x80,0x93,0xf6,0xef,0xbc,0x88,
0xeb,0x1a,0x6e,0xac,0xfa,0x66,0xef,0x26,
0x3c,0xb1,0xee,0xa9,0x88,0x00,0x4b,0x93,0x10,
};
const uint8_t shake256_0_73[] = { /* SHAKE256(0-bit, 73) */
0x46,0xb9,0xdd,0x2b,0x0b,0xa8,0x8d,0x13,
0x23,0x3b,0x3f,0xeb,0x74,0x3e,0xeb,0x24,
0x3f,0xcd,0x52,0xea,0x62,0xb8,0x1b,0x82,
0xb5,0x0c,0x27,0x64,0x6e,0xd5,0x76,0x2f,
0xd7,0x5d,0xc4,0xdd,0xd8,0xc0,0xf2,0x00,
0xcb,0x05,0x01,0x9d,0x67,0xb5,0x92,0xf6,
0xfc,0x82,0x1c,0x49,0x47,0x9a,0xb4,0x86,
0x40,0x29,0x2e,0xac,0xb3,0xb7,0xc4,0xbe,
0x14,0x1e,0x96,0x61,0x6f,0xb1,0x39,0x57,0x69,
};
const uint8_t d224_1600[] = { /* SHA3-224(200 * 0xa3) */
0x93,0x76,0x81,0x6a,0xba,0x50,0x3f,0x72,
0xf9,0x6c,0xe7,0xeb,0x65,0xac,0x09,0x5d,
0xee,0xe3,0xbe,0x4b,0xf9,0xbb,0xc2,0xa1,
0xcb,0x7e,0x11,0xe0,
};
const uint8_t d256_1600[] = { /* SHA3-256(200 * 0xa3) */
0x79,0xf3,0x8a,0xde,0xc5,0xc2,0x03,0x07,
0xa9,0x8e,0xf7,0x6e,0x83,0x24,0xaf,0xbf,
0xd4,0x6c,0xfd,0x81,0xb2,0x2e,0x39,0x73,
0xc6,0x5f,0xa1,0xbd,0x9d,0xe3,0x17,0x87,
};
const uint8_t d384_1600[] = { /* SHA3-384(200 * 0xa3) */
0x18,0x81,0xde,0x2c,0xa7,0xe4,0x1e,0xf9,
0x5d,0xc4,0x73,0x2b,0x8f,0x5f,0x00,0x2b,
0x18,0x9c,0xc1,0xe4,0x2b,0x74,0x16,0x8e,
0xd1,0x73,0x26,0x49,0xce,0x1d,0xbc,0xdd,
0x76,0x19,0x7a,0x31,0xfd,0x55,0xee,0x98,
0x9f,0x2d,0x70,0x50,0xdd,0x47,0x3e,0x8f,
};
const uint8_t d512_1600[] = { /* SHA3-512(200 * 0xa3) */
0xe7,0x6d,0xfa,0xd2,0x20,0x84,0xa8,0xb1,
0x46,0x7f,0xcf,0x2f,0xfa,0x58,0x36,0x1b,
0xec,0x76,0x28,0xed,0xf5,0xf3,0xfd,0xc0,
0xe4,0x80,0x5d,0xc4,0x8c,0xae,0xec,0xa8,
0x1b,0x7c,0x13,0xc3,0x0a,0xdf,0x52,0xa3,
0x65,0x95,0x84,0x73,0x9a,0x2d,0xf4,0x6b,
0xe5,0x89,0xc5,0x1c,0xa1,0xa4,0xa8,0x41,
0x6d,0xf6,0x54,0x5a,0x1c,0xe8,0xba,0x00,
};
const uint8_t shake128_1600_41[] = { /* SHAKE128(200 * 0xa3, 41) */
0x13,0x1a,0xb8,0xd2,0xb5,0x94,0x94,0x6b,
0x9c,0x81,0x33,0x3f,0x9b,0xb6,0xe0,0xce,
0x75,0xc3,0xb9,0x31,0x04,0xfa,0x34,0x69,
0xd3,0x91,0x74,0x57,0x38,0x5d,0xa0,0x37,
0xcf,0x23,0x2e,0xf7,0x16,0x4a,0x6d,0x1e,0xb4,
};
const uint8_t shake256_1600_73[] = { /* SHAKE256(200 * 0xa3, 73) */
0xcd,0x8a,0x92,0x0e,0xd1,0x41,0xaa,0x04,
0x07,0xa2,0x2d,0x59,0x28,0x86,0x52,0xe9,
0xd9,0xf1,0xa7,0xee,0x0c,0x1e,0x7c,0x1c,
0xa6,0x99,0x42,0x4d,0xa8,0x4a,0x90,0x4d,
0x2d,0x70,0x0c,0xaa,0xe7,0x39,0x6e,0xce,
0x96,0x60,0x44,0x40,0x57,0x7d,0xa4,0xf3,
0xaa,0x22,0xae,0xb8,0x85,0x7f,0x96,0x1c,
0x4c,0xd8,0xe0,0x6f,0x0a,0xe6,0x61,0x0b,
0x10,0x48,0xa7,0xf6,0x4e,0x10,0x74,0xcd,0x62,
};
const uint8_t d0[] = {
0x6c,0x02,0x1a,0xc6,0x65,0xaf,0x80,0xfb,
0x52,0xe6,0x2d,0x27,0xe5,0x02,0x88,0x84,
0xec,0x1c,0x0c,0xe7,0x0b,0x94,0x55,0x83,
0x19,0xf2,0xbf,0x09,0x86,0xeb,0x1a,0xbb,
0xc3,0x0d,0x1c,0xef,0x22,0xfe,0xc5,0x4c,
0x45,0x90,0x66,0x14,0x00,0x6e,0xc8,0x79,
0xdf,0x1e,0x02,0xbd,0x75,0xe9,0x60,0xd8,
0x60,0x39,0x85,0xc9,0xc4,0xee,0x33,0xab,
};
const unsigned mlen[6] = { 0, 3, 128, 129, 255, 1024 };
uint8_t m[1024], d[73];
SHA3_224_CTX sha3224;
SHA3_256_CTX sha3256;
SHA3_384_CTX sha3384;
SHA3_512_CTX sha3512;
SHAKE128_CTX shake128;
SHAKE256_CTX shake256;
SHA3_512_CTX ctx;
unsigned mi;
/*
* NIST test vectors from
* <http://csrc.nist.gov/groups/ST/toolkit/examples.html#aHashing>:
* 0-bit, 1600-bit repeated 0xa3 (= 0b10100011).
*/
SHA3_224_Init(&sha3224);
SHA3_224_Final(d, &sha3224);
if (memcmp(d, d224_0, 28) != 0)
return -1;
SHA3_256_Init(&sha3256);
SHA3_256_Final(d, &sha3256);
if (memcmp(d, d256_0, 32) != 0)
return -1;
SHA3_384_Init(&sha3384);
SHA3_384_Final(d, &sha3384);
if (memcmp(d, d384_0, 48) != 0)
return -1;
SHA3_512_Init(&sha3512);
SHA3_512_Final(d, &sha3512);
if (memcmp(d, d512_0, 64) != 0)
return -1;
SHAKE128_Init(&shake128);
SHAKE128_Final(d, 41, &shake128);
if (memcmp(d, shake128_0_41, 41) != 0)
return -1;
SHAKE256_Init(&shake256);
SHAKE256_Final(d, 73, &shake256);
if (memcmp(d, shake256_0_73, 73) != 0)
return -1;
(void)memset(m, 0xa3, 200);
SHA3_224_Init(&sha3224);
SHA3_224_Update(&sha3224, m, 200);
SHA3_224_Final(d, &sha3224);
if (memcmp(d, d224_1600, 28) != 0)
return -1;
SHA3_256_Init(&sha3256);
SHA3_256_Update(&sha3256, m, 200);
SHA3_256_Final(d, &sha3256);
if (memcmp(d, d256_1600, 32) != 0)
return -1;
SHA3_384_Init(&sha3384);
SHA3_384_Update(&sha3384, m, 200);
SHA3_384_Final(d, &sha3384);
if (memcmp(d, d384_1600, 48) != 0)
return -1;
SHA3_512_Init(&sha3512);
SHA3_512_Update(&sha3512, m, 200);
SHA3_512_Final(d, &sha3512);
if (memcmp(d, d512_1600, 64) != 0)
return -1;
SHAKE128_Init(&shake128);
SHAKE128_Update(&shake128, m, 200);
SHAKE128_Final(d, 41, &shake128);
if (memcmp(d, shake128_1600_41, 41) != 0)
return -1;
SHAKE256_Init(&shake256);
SHAKE256_Update(&shake256, m, 200);
SHAKE256_Final(d, 73, &shake256);
if (memcmp(d, shake256_1600_73, 73) != 0)
return -1;
/*
* Hand-crufted test vectors with unaligned message lengths.
*/
SHA3_512_Init(&ctx);
for (mi = 0; mi < 6; mi++) {
sha3_selftest_prng(m, mlen[mi], (224/8)*mlen[mi]);
SHA3_224_Init(&sha3224);
SHA3_224_Update(&sha3224, m, mlen[mi]);
SHA3_224_Final(d, &sha3224);
SHA3_512_Update(&ctx, d, 224/8);
}
for (mi = 0; mi < 6; mi++) {
sha3_selftest_prng(m, mlen[mi], (256/8)*mlen[mi]);
SHA3_256_Init(&sha3256);
SHA3_256_Update(&sha3256, m, mlen[mi]);
SHA3_256_Final(d, &sha3256);
SHA3_512_Update(&ctx, d, 256/8);
}
for (mi = 0; mi < 6; mi++) {
sha3_selftest_prng(m, mlen[mi], (384/8)*mlen[mi]);
SHA3_384_Init(&sha3384);
SHA3_384_Update(&sha3384, m, mlen[mi]);
SHA3_384_Final(d, &sha3384);
SHA3_512_Update(&ctx, d, 384/8);
}
for (mi = 0; mi < 6; mi++) {
sha3_selftest_prng(m, mlen[mi], (512/8)*mlen[mi]);
SHA3_512_Init(&sha3512);
SHA3_512_Update(&sha3512, m, mlen[mi]);
SHA3_512_Final(d, &sha3512);
SHA3_512_Update(&ctx, d, 512/8);
}
SHA3_512_Final(d, &ctx);
if (memcmp(d, d0, 64) != 0)
return -1;
return 0;
}

View File

@@ -0,0 +1,141 @@
/*-
* Copyright (c) 2015 Taylor R. Campbell
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef SHA3_H
#define SHA3_H
#include <stddef.h>
#include <stdint.h>
struct sha3 {
uint64_t A[25];
unsigned nb; /* number of bytes remaining to fill buffer */
};
typedef struct { struct sha3 C224; } SHA3_224_CTX;
typedef struct { struct sha3 C256; } SHA3_256_CTX;
typedef struct { struct sha3 C384; } SHA3_384_CTX;
typedef struct { struct sha3 C512; } SHA3_512_CTX;
typedef struct { struct sha3 C128; } SHAKE128_CTX;
typedef struct { struct sha3 C256; } SHAKE256_CTX;
#define SHA3_224_DIGEST_LENGTH 28
#define SHA3_256_DIGEST_LENGTH 32
#define SHA3_384_DIGEST_LENGTH 48
#define SHA3_512_DIGEST_LENGTH 64
#define SHA3_224_DIGEST_STRING_LENGTH ((2 * SHA3_224_DIGEST_LENGTH) + 1)
#define SHA3_256_DIGEST_STRING_LENGTH ((2 * SHA3_256_DIGEST_LENGTH) + 1)
#define SHA3_384_DIGEST_STRING_LENGTH ((2 * SHA3_384_DIGEST_LENGTH) + 1)
#define SHA3_512_DIGEST_STRING_LENGTH ((2 * SHA3_512_DIGEST_LENGTH) + 1)
#ifdef SHA3_PROTECT_NAMESPACE
#define SHA3_224_Init digest_SHA3_224_Init
#define SHA3_224_Update digest_SHA3_224_Update
#define SHA3_224_Final digest_SHA3_224_Final
#define SHA3_224_End digest_SHA3_224_End
#define SHA3_224_Data digest_SHA3_224_Data
#define SHA3_224_File digest_SHA3_224_File
#define SHA3_256_Init digest_SHA3_256_Init
#define SHA3_256_Update digest_SHA3_256_Update
#define SHA3_256_Final digest_SHA3_256_Final
#define SHA3_256_End digest_SHA3_256_End
#define SHA3_256_Data digest_SHA3_256_Data
#define SHA3_256_File digest_SHA3_256_File
#define SHA3_384_Init digest_SHA3_384_Init
#define SHA3_384_Update digest_SHA3_384_Update
#define SHA3_384_Final digest_SHA3_384_Final
#define SHA3_384_End digest_SHA3_384_End
#define SHA3_384_Data digest_SHA3_384_Data
#define SHA3_384_File digest_SHA3_384_File
#define SHA3_512_Init digest_SHA3_512_Init
#define SHA3_512_Update digest_SHA3_512_Update
#define SHA3_512_Final digest_SHA3_512_Final
#define SHA3_512_End digest_SHA3_512_End
#define SHA3_512_Data digest_SHA3_512_Data
#define SHA3_512_File digest_SHA3_512_File
#endif /* SHA3_PROTECT_NAMESPACE */
#ifndef __BEGIN_DECLS
# if defined(__cplusplus)
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
# else
# define __BEGIN_DECLS
# define __END_DECLS
# endif
#endif
__BEGIN_DECLS
void SHA3_224_Init(SHA3_224_CTX *);
void SHA3_224_Update(SHA3_224_CTX *, const uint8_t *, size_t);
void SHA3_224_Final(uint8_t[SHA3_224_DIGEST_LENGTH], SHA3_224_CTX *);
void SHA3_256_Init(SHA3_256_CTX *);
void SHA3_256_Update(SHA3_256_CTX *, const uint8_t *, size_t);
void SHA3_256_Final(uint8_t[SHA3_256_DIGEST_LENGTH], SHA3_256_CTX *);
void SHA3_384_Init(SHA3_384_CTX *);
void SHA3_384_Update(SHA3_384_CTX *, const uint8_t *, size_t);
void SHA3_384_Final(uint8_t[SHA3_384_DIGEST_LENGTH], SHA3_384_CTX *);
void SHA3_512_Init(SHA3_512_CTX *);
void SHA3_512_Update(SHA3_512_CTX *, const uint8_t *, size_t);
void SHA3_512_Final(uint8_t[SHA3_512_DIGEST_LENGTH], SHA3_512_CTX *);
void SHAKE128_Init(SHAKE128_CTX *);
void SHAKE128_Update(SHAKE128_CTX *, const uint8_t *, size_t);
void SHAKE128_Final(uint8_t *, size_t, SHAKE128_CTX *);
void SHAKE256_Init(SHAKE256_CTX *);
void SHAKE256_Update(SHAKE256_CTX *, const uint8_t *, size_t);
void SHAKE256_Final(uint8_t *, size_t, SHAKE256_CTX *);
int SHA3_Selftest(void);
char *SHA3_224_End(SHA3_224_CTX*, char[SHA3_224_DIGEST_STRING_LENGTH]);
char *SHA3_224_Data(const uint8_t*, size_t, unsigned char *);
char *SHA3_224_File(char *, char *);
char *SHA3_256_End(SHA3_256_CTX*, char[SHA3_256_DIGEST_STRING_LENGTH]);
char *SHA3_256_Data(const uint8_t*, size_t, unsigned char *);
char *SHA3_256_File(char *, char *);
char *SHA3_384_End(SHA3_384_CTX*, char[SHA3_384_DIGEST_STRING_LENGTH]);
char *SHA3_384_Data(const uint8_t*, size_t, unsigned char *);
char *SHA3_384_File(char *, char *);
char *SHA3_512_End(SHA3_512_CTX*, char[SHA3_512_DIGEST_STRING_LENGTH]);
char *SHA3_512_Data(const uint8_t*, size_t, unsigned char *);
char *SHA3_512_File(char *, char *);
__END_DECLS
#endif /* SHA3_H */

View File

@@ -0,0 +1,316 @@
/* $NetBSD: sha3hl.c,v 1.1 2016/03/03 22:11:07 agc Exp $ */
/*
* sha3hl.c
* This code is derived from sha2hl.c, hence the following licence
* reproduction.
*
* This code is not a verbatim copy, since some routines have been added,
* and some bugs have been fixed.
*
* Version 1.0.0beta1
*
* Written by Aaron D. Gifford <me@aarongifford.com>
*
* Copyright 2000 Aaron D. Gifford. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AND CONTRIBUTOR(S) ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTOR(S) BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#include "sha3.h"
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#ifndef _DIAGASSERT
#define _DIAGASSERT(cond) assert(cond)
#endif
#ifndef MEMSET_BZERO
#define MEMSET_BZERO(p,l) memset((p), 0, (l))
#endif
/*
* Constant used by SHA3_224/256/384/512_End() functions for converting the
* digest to a readable hexadecimal character string:
*/
static const char sha3_hex_digits[] = "0123456789abcdef";
char *
SHA3_224_File(char *filename, char *buf)
{
unsigned char buffer[BUFSIZ * 20];
SHA3_224_CTX ctx;
int fd, num, oerrno;
_DIAGASSERT(filename != NULL);
/* XXX: buf may be NULL ? */
SHA3_224_Init(&ctx);
if ((fd = open(filename, O_RDONLY)) < 0)
return (0);
while ((num = read(fd, buffer, sizeof(buffer))) > 0)
SHA3_224_Update(&ctx, buffer, (size_t) num);
oerrno = errno;
close(fd);
errno = oerrno;
return (num < 0 ? 0 : SHA3_224_End(&ctx, buf));
}
char *
SHA3_224_End(SHA3_224_CTX *ctx, char buffer[])
{
unsigned char digest[SHA3_224_DIGEST_LENGTH], *d = digest;
unsigned char *ret;
int i;
/* Sanity check: */
assert(ctx != NULL);
if ((ret = buffer) != NULL) {
SHA3_224_Final(digest, ctx);
for (i = 0; i < SHA3_224_DIGEST_LENGTH; i++) {
*buffer++ = sha3_hex_digits[(*d & 0xf0) >> 4];
*buffer++ = sha3_hex_digits[*d & 0x0f];
d++;
}
*buffer = (char) 0;
} else {
(void) MEMSET_BZERO(ctx, sizeof(SHA3_224_CTX));
}
(void) MEMSET_BZERO(digest, SHA3_224_DIGEST_LENGTH);
return ret;
}
char *
SHA3_224_Data(const uint8_t * data, size_t len, unsigned char *digest)
{
SHA3_224_CTX ctx;
SHA3_224_Init(&ctx);
SHA3_224_Update(&ctx, data, len);
return SHA3_224_End(&ctx, digest);
}
char *
SHA3_256_File(char *filename, char *buf)
{
unsigned char buffer[BUFSIZ * 20];
SHA3_256_CTX ctx;
int fd, num, oerrno;
_DIAGASSERT(filename != NULL);
/* XXX: buf may be NULL ? */
SHA3_256_Init(&ctx);
if ((fd = open(filename, O_RDONLY)) < 0)
return (0);
while ((num = read(fd, buffer, sizeof(buffer))) > 0)
SHA3_256_Update(&ctx, buffer, (size_t) num);
oerrno = errno;
close(fd);
errno = oerrno;
return (num < 0 ? 0 : SHA3_256_End(&ctx, buf));
}
char *
SHA3_256_End(SHA3_256_CTX *ctx, char buffer[])
{
unsigned char digest[SHA3_256_DIGEST_LENGTH], *d = digest;
unsigned char *ret;
int i;
/* Sanity check: */
assert(ctx != NULL);
if ((ret = buffer) != NULL) {
SHA3_256_Final(digest, ctx);
for (i = 0; i < SHA3_256_DIGEST_LENGTH; i++) {
*buffer++ = sha3_hex_digits[(*d & 0xf0) >> 4];
*buffer++ = sha3_hex_digits[*d & 0x0f];
d++;
}
*buffer = (char) 0;
} else {
(void) MEMSET_BZERO(ctx, sizeof(SHA3_256_CTX));
}
(void) MEMSET_BZERO(digest, SHA3_256_DIGEST_LENGTH);
return ret;
}
char *
SHA3_256_Data(const uint8_t * data, size_t len, unsigned char *digest)
{
SHA3_256_CTX ctx;
SHA3_256_Init(&ctx);
SHA3_256_Update(&ctx, data, len);
return SHA3_256_End(&ctx, digest);
}
char *
SHA3_384_File(char *filename, char *buf)
{
unsigned char buffer[BUFSIZ * 20];
SHA3_384_CTX ctx;
int fd, num, oerrno;
_DIAGASSERT(filename != NULL);
/* XXX: buf may be NULL ? */
SHA3_384_Init(&ctx);
if ((fd = open(filename, O_RDONLY)) < 0)
return (0);
while ((num = read(fd, buffer, sizeof(buffer))) > 0)
SHA3_384_Update(&ctx, buffer, (size_t) num);
oerrno = errno;
close(fd);
errno = oerrno;
return (num < 0 ? 0 : SHA3_384_End(&ctx, buf));
}
char *
SHA3_384_End(SHA3_384_CTX *ctx, char buffer[])
{
unsigned char digest[SHA3_384_DIGEST_LENGTH], *d = digest;
unsigned char *ret;
int i;
/* Sanity check: */
assert(ctx != NULL);
if ((ret = buffer) != NULL) {
SHA3_384_Final(digest, ctx);
for (i = 0; i < SHA3_384_DIGEST_LENGTH; i++) {
*buffer++ = sha3_hex_digits[(*d & 0xf0) >> 4];
*buffer++ = sha3_hex_digits[*d & 0x0f];
d++;
}
*buffer = (char) 0;
} else {
(void) MEMSET_BZERO(ctx, sizeof(SHA3_384_CTX));
}
(void) MEMSET_BZERO(digest, SHA3_384_DIGEST_LENGTH);
return ret;
}
char *
SHA3_384_Data(const uint8_t * data, size_t len, unsigned char *digest)
{
SHA3_384_CTX ctx;
SHA3_384_Init(&ctx);
SHA3_384_Update(&ctx, data, len);
return SHA3_384_End(&ctx, digest);
}
char *
SHA3_512_File(char *filename, char *buf)
{
unsigned char buffer[BUFSIZ * 20];
SHA3_512_CTX ctx;
int fd, num, oerrno;
_DIAGASSERT(filename != NULL);
/* XXX: buf may be NULL ? */
SHA3_512_Init(&ctx);
if ((fd = open(filename, O_RDONLY)) < 0)
return (0);
while ((num = read(fd, buffer, sizeof(buffer))) > 0)
SHA3_512_Update(&ctx, buffer, (size_t) num);
oerrno = errno;
close(fd);
errno = oerrno;
return (num < 0 ? 0 : SHA3_512_End(&ctx, buf));
}
char *
SHA3_512_End(SHA3_512_CTX *ctx, char buffer[])
{
unsigned char digest[SHA3_512_DIGEST_LENGTH], *d = digest;
unsigned char *ret;
int i;
/* Sanity check: */
assert(ctx != NULL);
if ((ret = buffer) != NULL) {
SHA3_512_Final(digest, ctx);
for (i = 0; i < SHA3_512_DIGEST_LENGTH; i++) {
*buffer++ = sha3_hex_digits[(*d & 0xf0) >> 4];
*buffer++ = sha3_hex_digits[*d & 0x0f];
d++;
}
*buffer = (char) 0;
} else {
(void) MEMSET_BZERO(ctx, sizeof(SHA3_512_CTX));
}
(void) MEMSET_BZERO(digest, SHA3_512_DIGEST_LENGTH);
return ret;
}
char *
SHA3_512_Data(const uint8_t * data, size_t len, unsigned char *digest)
{
SHA3_512_CTX ctx;
SHA3_512_Init(&ctx);
SHA3_512_Update(&ctx, data, len);
return SHA3_512_End(&ctx, digest);
}

View File

@@ -1,7 +1,8 @@
/* $NetBSD: tiger.h,v 1.6 2010/01/23 13:25:12 obache Exp $ */
/* $NetBSD: tiger.h,v 1.7 2016/03/03 22:11:07 agc Exp $ */
/*
* Copyright © 2005 Alistair Crooks. All rights reserved.
/*-
* Copyright (c) 2005-2016 Alistair Crooks <agc@NetBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -11,25 +12,17 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Alistair Crooks
* for the NetBSD project.
* 4. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef TIGER_H_
#define TIGER_H_
@@ -48,7 +41,7 @@
typedef struct tiger_context_t {
uint64_t ctx[3];
int first_time;
int first_time;
} tiger_context_t;
void TIGERInit(tiger_context_t *);

View File

@@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.20 2014/08/30 11:15:31 cheusov Exp $
# $NetBSD: Makefile,v 1.21 2016/06/12 16:05:40 cheusov Exp $
#
DISTNAME= distbb-0.47.1
DISTNAME= distbb-0.47.2
CATEGORIES= pkgtools
MASTER_SITES= ftp://ftp.NetBSD.org/pub/NetBSD/misc/cheusov/distbb/ \
http://mova.org/~cheusov/pub/distbb/

View File

@@ -1,5 +1,6 @@
$NetBSD: distinfo,v 1.15 2014/08/30 11:15:31 cheusov Exp $
$NetBSD: distinfo,v 1.17 2016/06/12 16:05:40 cheusov Exp $
SHA1 (distbb-0.47.1.tar.gz) = a444cdd6e93b88fbb00389417c947b1fc5e43097
RMD160 (distbb-0.47.1.tar.gz) = 3f008a80fcf5bc7e6719dcace116e9ce4e648748
Size (distbb-0.47.1.tar.gz) = 52433 bytes
SHA1 (distbb-0.47.2.tar.gz) = ef8637e5a3e4a9a1e19360ea8cd2dccdd98b993a
RMD160 (distbb-0.47.2.tar.gz) = d9976ca3e3454cc3effef0af375afa0a634f1ffd
SHA512 (distbb-0.47.2.tar.gz) = 7724d7dadc6ec3aa244b49ea73903b617eecf02e3861eb76c9b2e56defebf8f4deb4b58be7225e401e5a109f09b8b85e10c2277df042e039da2ed4111cbaa065
Size (distbb-0.47.2.tar.gz) = 52475 bytes

View File

@@ -1,8 +1,9 @@
$NetBSD: distinfo,v 1.8 2012/02/16 19:38:28 hans Exp $
$NetBSD: distinfo,v 1.10 2016/09/08 14:58:06 jperkin Exp $
SHA1 (gensolpkg-1.10.tar.gz) = d7981f6c2159a1a2304a5e446185ce6b2ade7305
RMD160 (gensolpkg-1.10.tar.gz) = 829d5078431b1f9f15f639ce13e124f77b00a6f2
SHA512 (gensolpkg-1.10.tar.gz) = e49a3914e57ce563acacb32ffbb138ce40c47fe60ba2c87d0317e00af4b73412740cb291997e1bd8467b9738d9e52fa5a78357b69468b4ca31c018978e9787ec
Size (gensolpkg-1.10.tar.gz) = 8430 bytes
SHA1 (patch-aa) = 9f4427f6593a96f232205ae8d7ea91f4f1cf8def
SHA1 (patch-aa) = a07a5d7f3f6893ea68618eeebb89ed1d558584d8
SHA1 (patch-ab) = 0ecef672900def2d2f2151943effdaaf16f8e221
SHA1 (patch-ac) = 1da06afa9c8128d3334f7251e8e0bc21f7945d72

View File

@@ -1,4 +1,4 @@
$NetBSD: patch-aa,v 1.3 2012/02/16 19:38:28 hans Exp $
$NetBSD: patch-aa,v 1.4 2016/09/08 14:58:06 jperkin Exp $
--- Makefile.orig Sun Jan 21 23:26:06 2001
+++ Makefile
@@ -27,4 +27,4 @@ $NetBSD: patch-aa,v 1.3 2012/02/16 19:38:28 hans Exp $
- /usr/ucb/install -c -m 0755 -s ${BIN} ${PREFIX}/sbin/${BIN}
- /usr/ucb/install -c -m 0444 gensolpkg.1 ${PREFIX}/man/man1/gensolpkg.1
+ ${INSTALL} -c -m 0755 -s ${BIN} ${PREFIX}/sbin/${BIN}
+ ${INSTALL} -c -m 0444 gensolpkg.1 ${PREFIX}/man/man1/gensolpkg.1
+ ${INSTALL} -c -m 0444 gensolpkg.1 ${PREFIX}/${PKGMANDIR}/man1/gensolpkg.1

20
pkgtools/gimme/DESCR Normal file
View File

@@ -0,0 +1,20 @@
Sometimes, there's a need to just build a package without any of the
installed pre-requisites being used. Or building a one-off package
which can then be used elsewhere.
This package helps to produce other binary packages, using pkg_comp to
build them in a chroot. The chroot is populated either by cloning the
current operating system, or by using pre-existing binary sets. As an
example:
# gimme -c vip
will clone the current operating system on this host, and use it to
make a chroot in which the sysutils/vip package will be built.
Similarly, to build packages and all their pre-requisites afresh,
something like
# gimme -c mercurial git-base
would be used.

29
pkgtools/gimme/Makefile Normal file
View File

@@ -0,0 +1,29 @@
# $NetBSD: Makefile,v 1.1.1.1 2015/11/22 21:57:38 agc Exp $
DISTNAME= gimme-20151122
CATEGORIES= pkgtools
MASTER_SITES= # empty
DISTFILES= # empty
MAINTAINER= agc@NetBSD.org
HOMEPAGE= http://www.NetBSD.org/
COMMENT= Script to make binary packages in a chroot
LICENSE= modified-bsd
ONLY_FOR_PLATFORM= NetBSD-*-*
DEPENDS+= pkg_comp>=1.38nb1:../../pkgtools/pkg_comp
AUTO_MKDIRS= yes
do-extract:
${CP} -R ${FILESDIR} ${WRKSRC}
do-build:
@${ECHO} "Build done"
do-install:
${INSTALL_SCRIPT} ${WRKSRC}/gimme.sh ${DESTDIR}${PREFIX}/bin/gimme
${INSTALL_MAN} ${WRKSRC}/gimme.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/gimme.1
.include "../../mk/bsd.pkg.mk"

3
pkgtools/gimme/PLIST Normal file
View File

@@ -0,0 +1,3 @@
@comment $NetBSD: PLIST,v 1.1.1.1 2015/11/22 21:57:38 agc Exp $
bin/gimme
man/man1/gimme.1

1
pkgtools/gimme/distinfo Normal file
View File

@@ -0,0 +1 @@
$NetBSD: distinfo,v 1.1.1.1 2015/11/22 21:57:38 agc Exp $

View File

@@ -0,0 +1,75 @@
.\" $NetBSD: gimme.1,v 1.1.1.1 2015/11/22 21:57:38 agc Exp $
.\"
.\" Copyright (c) 2015 Alistair Crooks <agc@NetBSD.org>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd November 22, 2015
.Dt GIMME 1
.Os
.Sh NAME
.Nm gimme
.Nd script to build binary packages in a chroot
.Sh SYNOPSIS
.Nm
.Op Fl cv
.Op Fl d Ar distribdir
.Ar package ...
.Sh DESCRIPTION
The
.Nm
uses
.Xr pkg_comp
to manage a chroot environment in which binary packages can
be built easily.
Pre-existing binary sets can be used, or a clone of the
operating system in the current environment can be used.
.Pp
To use a clone of the current operating system in the chroot,
the
.Fl c
argument is used.
Alternatively, one can use pre-existing sets, which will
be taken from the directory specified by the
.Fl d
argument.
.Pp
Packages can be specified by the one-word base name of the
package, like
.Dq mercurial
or by specifying the category and directory name, like
.Dq devel/mercurial .
.Sh EXIT STATUS
The
.Nm
utility will return 0 for a successful verification,
1 if the file's signature does not match what was expected,
or 2 if any other error occurs.
.Sh SEE ALSO
.Xr pkg_comp 1
.Sh HISTORY
The
.Nm
command first appeared in
.Nx 8.0 .
.Sh AUTHORS
.An Alistair Crooks Aq agc@NetBSD.org .

187
pkgtools/gimme/files/gimme.sh Executable file
View File

@@ -0,0 +1,187 @@
#! /bin/sh
# $NetBSD: gimme.sh,v 1.1.1.1 2015/11/22 21:57:38 agc Exp $
# Copyright (c) 2015 Alistair Crooks <agc@NetBSD.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# small script to be used to provide binary packages
# args:
# -c use current host to provide base operating system
# -d use the sets in this dir as base operating system
# -v be verbose in operation
current=false
distribdir=''
while [ $# -gt 0 ]; do
case "$1" in
-c) current=true ;;
-d) distribdir="$2"; shift ;;
-v) set -x ;;
*) break ;;
esac
shift
done
# check whether sudo is needed
case "$(id -u)" in
0) sudo="" ;;
*) sudo=sudo ;;
esac
# function to clean up stuff
cleanup() {
case "${conf}" in
"") ;;
*) if [ -f /root/pkg_comp/${conf} ]; then
${sudo} rm -f /root/pkg_comp/${conf}
fi
;;
esac
if ${current}; then
case "${distribdir}" in
"") ;;
*) if [ -d ${distribdir} ]; then
${sudo} rm -rf ${distribdir}
fi
;;
esac
fi
}
trap cleanup 9 15
pkgsdir=/usr/pkgsrc/packages/All
conf=gimme.$$
# don't need the chatty message about editing by hand
${sudo} pkg_comp -c ${conf} maketemplate >/dev/null
base_files='
./altroot
./bin
./lib
./libdata
./libexec
./rescue
./sbin
./usr/bin
./usr/lib
./usr/libdata
./usr/libexec
./usr/mdec
./usr/sbin
./var/chroot
./var/db
./var/games
./var/heimdal
./var/log/rdist
./var/mail
./var/msgs
./var/preserve
./var/quotas
./var/run
./var/rwho
./var/shm
./var/spool
./var/tmp/vi.recover
./var/tpm
./var/www
./var/yp/binding
'
etc_files='
.cshrc
.profile
boot.cfg
./dev/MAKEDEV
./dev/MAKEDEV.local
./etc
./var/at/at.deny
./var/crash/minfree
./var/cron/tabs/root
./var/games
./var/log
./var/msgs
./var/run/utmp
./var/run/utmpx
./var/yp/Makefile.yp
./var/yp/nicknames
'
# current means to use current os as basis for compilation
if ${current}; then
echo "creating temporary set files for operating system"
distribdir=$(${sudo} mktemp -d /tmp/gimmesets.XXXXXX)
${sudo} mkdir -p ${distribdir}/binary/sets
tmptmpdir=$(${sudo} mktemp -d /tmp/tmptmp.XXXXXX)
${sudo} chmod 1777 ${tmptmpdir}
vartmptmpdir=$(${sudo} mktemp -d /tmp/tmptmp.XXXXXX)
${sudo} chmod 1777 ${vartmptmpdir}
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/base.tgz -s '|'./${tmptmpdir}'|./tmp|' -s '|'./${vartmptmpdir}'|./var/tmp|' ${base_files} ./${tmptmpdir} ./${vartmptmpdir})
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/comp.tgz ./usr/include)
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/etc.tgz ${etc_files})
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/kern-GENERIC.tgz ./netbsd)
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/text.tgz ./usr/share)
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/xbase.tgz ./usr/X11R7/bin ./usr/X11R7/lib ./usr/X11R7/man ./usr/libdata/debug/usr/X11R7)
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/xcomp.tgz ./usr/X11R7/include)
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/xetc.tgz ./etc/X11 ./etc/fonts ./etc/rc.d/fccache ./etc/rc.d/xdm ./etc/rc.d/xfs)
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/xfont.tgz ./usr/X11R7/lib/X11/fonts)
(cd / && ${sudo} tar -czf ${distribdir}/binary/sets/xserver.tgz ./usr/X11R7/bin/X ./usr/X11R7/bin/Xnest ./usr/X11R7/bin/Xorg ./usr/X11R7/bin/Xvfb ./usr/X11R7/share)
${sudo} rm -rf ${tmptmpdir} ${vartmptmpdir}
fi
# set where the binary sets are
case "${distribdir}" in
"") ;;
*)
tmp=$(mktemp /tmp/gimme.XXXXXX)
sed -e 's|^DISTRIBDIR=.*|DISTRIBDIR='${distribdir}'|' /root/pkg_comp/${conf}.conf > ${tmp} &&
${sudo} mv ${tmp} /root/pkg_comp/${conf}.conf
;;
esac
# sanity check for distribdir
if [ ! -f ${distribdir}/binary/sets/etc.tgz ]; then
t1=${distribdir##/binary/sets}
if [ -f ${t1}/etc.tgz ]; then
echo "Info: no need to specify "/binary/sets" on end of distribdir"
distribdir=${t1}
else
echo "can't find binary sets in ${distribdir}" >&2
cleanup
exit 1
fi
fi
# use pkg_comp to make the packages
${sudo} pkg_comp -c ${conf} makeroot
for p in $@; do
${sudo} pkg_comp -c ${conf} build ${p}
ls -al ${pkgsdir}/${p}*
done
${sudo} pkg_comp -c ${conf} removeroot
cleanup

View File

@@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.50 2015/06/12 10:50:55 wiz Exp $
# $NetBSD: Makefile,v 1.56 2016/08/03 10:23:18 adam Exp $
DISTNAME= gnome-packagekit-0.4.0
PKGREVISION= 39
PKGREVISION= 43
CATEGORIES= pkgtools gnome
MASTER_SITES= http://www.packagekit.org/releases/
@@ -18,7 +18,7 @@ USE_PKGLOCALEDIR= yes
GCONF_SCHEMAS+= gnome-packagekit.schemas
PY_PATCHPLIST= yes
PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # not yet ported as of 0.4.0
PYTHON_VERSIONS_INCOMPATIBLE= 34 35 # not yet ported as of 0.4.0
# needed for gnome-packagekit-0.4 and gtk2-2.20 -- remove on next update
BUILDLINK_TRANSFORM+= rm:-DG_DISABLE_DEPRECATED

View File

@@ -1,7 +1,8 @@
$NetBSD: distinfo,v 1.6 2013/08/14 05:31:04 obache Exp $
$NetBSD: distinfo,v 1.7 2015/11/04 00:38:39 agc Exp $
SHA1 (gnome-packagekit-0.4.0.tar.gz) = 8a204535c4a219b8987af756db999ec4f3caa84e
RMD160 (gnome-packagekit-0.4.0.tar.gz) = 9c1de792b00749ea54fe44d7287cf55228df4bdf
SHA512 (gnome-packagekit-0.4.0.tar.gz) = 53d892ab873c5e58fdfa3b7a6a468682c5a3ead2ebe8bc830498c21d5c3e70cba2268048bf10aa6902fba5080ead6fc774906b599d0cf009b59619307aab6d8b
Size (gnome-packagekit-0.4.0.tar.gz) = 2732798 bytes
SHA1 (patch-aa) = e9b6d7a9d8034aad4e418b7c1e6cfe753e560c0a
SHA1 (patch-ab) = 88522542563043b06358e98fa323eb94b9e34679

View File

@@ -1,8 +1,8 @@
# $NetBSD: Makefile.inc,v 1.4 2003/12/13 17:45:59 seb Exp $
# $NetBSD: Makefile.inc,v 1.5 2016/03/20 19:15:33 seb Exp $
.if defined(PREFIX)
# build from pkgsrc
LIBDIR= ${PREFIX}/lib
LIBDIR= ${PREFIX}/lib
BINDIR= ${PREFIX}/sbin
MANDIR= ${PREFIX}/man
.else

View File

@@ -1,5 +1,5 @@
/* $NetBSD: getdelim.c,v 1.1 2015/04/19 12:22:14 tnn Exp $ */
/* $NetBSD-src: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp $ */
/* $NetBSD: getdelim.c,v 1.2 2015/12/25 20:12:46 joerg Exp $ */
/* NetBSD-src: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.

View File

@@ -1,5 +1,5 @@
/* $NetBSD: getline.c,v 1.1 2015/04/19 12:22:14 tnn Exp $ */
/* $NetBSD-src: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp $ */
/* $NetBSD: getline.c,v 1.2 2015/12/25 20:12:46 joerg Exp $ */
/* NetBSD-src: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.

View File

@@ -1,4 +1,4 @@
/* $NetBSD: queue.h,v 1.8 2009/03/02 13:54:56 joerg Exp $ */
/* $NetBSD: queue.h,v 1.9 2015/12/13 21:56:27 joerg Exp $ */
/*
* Copyright (c) 1991, 1993
@@ -306,12 +306,11 @@ struct { \
(var) = (next))
#endif
#ifndef TAILQ_FOREACH_REVERSE
#undef TAILQ_FOREACH_REVERSE
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
(var); \
(var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
#endif
#ifndef TAILQ_EMPTY
#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)

View File

@@ -1,4 +1,4 @@
/* $NetBSD: statvfs.h,v 1.5 2013/09/08 16:24:43 ryoon Exp $ */
/* $NetBSD: statvfs.h,v 1.6 2015/12/11 23:28:10 ryoon Exp $ */
/*-
* Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -60,10 +60,10 @@
#define VFS_NAMELEN 32
#define VFS_MNAMELEN 1024
#if defined(fsblkcnt_t)
#if !defined(fsblkcnt_t)
typedef uint64_t fsblkcnt_t; /* fs block count (statvfs) */
#endif
#if defined(fsfilcnt_t)
#if !defined(fsfilcnt_t)
typedef uint64_t fsfilcnt_t; /* fs file count */
#endif

View File

@@ -1,4 +1,4 @@
# $NetBSD: inplace.mk,v 1.12 2015/04/21 00:26:48 joerg Exp $
# $NetBSD: inplace.mk,v 1.13 2015/12/03 14:37:30 jperkin Exp $
#
# This file should not be included directly. Use USE_FEATURES instead.
#
@@ -28,10 +28,12 @@ post-extract: libnbcompat-extract
.PHONY: libnbcompat-extract
libnbcompat-extract:
${RUN} ${CP} -R ${LIBNBCOMPAT_FILESDIR} ${LIBNBCOMPAT_SRCDIR}
${RM} -f ${LIBNBCOMPAT_SRCDIR}/config.guess ${LIBNBCOMPAT_SRCDIR}/config.sub
${LN} -fs ${PKGSRCDIR}/mk/gnu-config/config.guess ${LIBNBCOMPAT_SRCDIR}/config.guess
${LN} -fs ${PKGSRCDIR}/mk/gnu-config/config.sub ${LIBNBCOMPAT_SRCDIR}/config.sub
.if !empty(LIBNBCOMPAT_USE_PIC:M[Yy][Ee][Ss])
${RUN} ${CP} -R ${LIBNBCOMPAT_FILESDIR} ${LIBNBCOMPAT_PICDIR}
${RM} -f ${LIBNBCOMPAT_PICDIR}/config.guess ${LIBNBCOMPAT_PICDIR}/config.sub
${LN} -fs ${PKGSRCDIR}/mk/gnu-config/config.guess ${LIBNBCOMPAT_PICDIR}/config.guess
${LN} -fs ${PKGSRCDIR}/mk/gnu-config/config.sub ${LIBNBCOMPAT_PICDIR}/config.sub
.endif

View File

@@ -1,6 +1,7 @@
# $NetBSD: Makefile,v 1.21 2015/07/01 19:57:31 tron Exp $
# $NetBSD: Makefile,v 1.25 2016/07/09 06:38:48 wiz Exp $
PKGNAME= lintpkgsrc-4.89
PKGNAME= lintpkgsrc-4.92
PKGREVISION= 1
CATEGORIES= pkgtools
MAINTAINER= pkgsrc-users@NetBSD.org

View File

@@ -4,7 +4,7 @@ NNAAMMEE
lliinnttppkkggssrrcc -- verifier for the pkgsrc tree
SSYYNNOOPPSSIISS
lliinnttppkkggssrrcc [--BBDDddLLllmmOOooppRRrrSSuuVVyyzz] [--EE _f_i_l_e] [--gg _p_k_g_s_r_c_m_a_p] [--II _f_i_l_e]
lliinnttppkkggssrrcc [--BBDDddLLllmmOOooppRRrrSSuuyyzz] [--EE _f_i_l_e] [--gg _p_k_g_s_r_c_m_a_p] [--II _f_i_l_e]
[--KK _P_A_C_K_A_G_E_S] [--MM _D_I_S_T_D_I_R] [--PP _P_K_G_S_R_C_D_I_R] [_m_a_k_e_f_i_l_e _._._.]
DDEESSCCRRIIPPTTIIOONN
@@ -41,7 +41,7 @@ DDEESSCCRRIIPPTTIIOONN
things, against the current version found in pkgsrc. This
database provides most or all of the data required for
running lliinnttppkkggssrrcc with any combination of --BB, --OO, --RR, --SS,
--VV, --dd, --gg, --ii, --pp, or --uu.
--dd, --gg, --ii, --pp, or --uu.
--ii Check the version of each installed package against the
current version in pkgsrc.
@@ -50,7 +50,7 @@ DDEESSCCRRIIPPTTIIOONN
_/_e_t_c_/_m_k_._c_o_n_f or defaulted to _$_{_P_K_G_S_R_C_D_I_R_}_/_p_a_c_k_a_g_e_s.
Note: lintpkgsrc treats _P_A_C_K_A_G_E_S slightly differently to
the pkgsrc build system. --pp, --RR, and --VV check for binary
the pkgsrc build system. --pp and --RR check for binary
packages in any depth of PACKAGES subdirs - this allows
packages for all architectures/OS versions to be checked
simultaneously with an _/_e_t_c_/_m_k_._c_o_n_f construct of the form:
@@ -107,10 +107,6 @@ DDEESSCCRRIIPPTTIIOONN
Warning: The behaviour of this command may change in a
later version.
--VV List any prebuilt packages in any subdirs of _P_A_C_K_A_G_E_S with
known vulnerabilities, based on the data in
_$_{_P_K_G_S_R_C_D_I_R_}_/_d_i_s_t_f_i_l_e_s_/_p_k_g_-_v_u_l_n_e_r_a_b_i_l_i_t_i_e_s.
--yy Remove orphaned distfiles, i.e., those that do not belong
to any currently installed package.
@@ -120,9 +116,9 @@ AAUUTTHHOORRSS
David Brownlee <_a_b_s_@_n_e_t_b_s_d_._o_r_g>
BBUUGGSS
The --RR, --VV, and --pp options default to using _P_A_C_K_A_G_E_S as the base
directory from which to search for binary packages. If this includes OS
or architecture information then packages for other OS/architecture
The --RR and --pp options default to using _P_A_C_K_A_G_E_S as the base directory
from which to search for binary packages. If this includes OS or
architecture information then packages for other OS/architecture
combinations will be missed. In this case _P_A_C_K_A_G_E_S can be overridden
with --KK or set conditionally in _/_e_t_c_/_m_k_._c_o_n_f based on the value of
_L_I_N_T_P_K_G_S_R_C.

View File

@@ -1,16 +1,16 @@
.\" $NetBSD: lintpkgsrc.1,v 1.4 2014/11/24 09:50:34 wiz Exp $
.\" $NetBSD: lintpkgsrc.1,v 1.5 2016/03/12 09:05:22 wiz Exp $
.\"
.\" Copyright (c) 1999 by David Brownlee (abs@netbsd.org)
.\" Absolutely no warranty.
.\"
.Dd November 24, 2014
.Dd March 12, 2016
.Dt LINTPKGSRC 1
.Sh NAME
.Nm lintpkgsrc
.Nd verifier for the pkgsrc tree
.Sh SYNOPSIS
.Nm
.Op Fl BDdLlmOopRrSuVyz
.Op Fl BDdLlmOopRrSuyz
.Op Fl E Ar file
.Op Fl g Ar pkgsrcmap
.Op Fl I Ar file
@@ -62,7 +62,6 @@ with any combination of
.Fl O ,
.Fl R ,
.Fl S ,
.Fl V ,
.Fl d ,
.Fl g ,
.Fl i ,
@@ -81,10 +80,9 @@ or defaulted to
Note: lintpkgsrc treats
.Em PACKAGES
slightly differently to the pkgsrc build system.
.Fl p ,
.Fl R ,
.Fl p
and
.Fl V
.Fl R
check for
binary packages in any depth of PACKAGES subdirs - this allows packages for all
architectures/OS versions to be checked simultaneously with an
@@ -157,11 +155,6 @@ to ensure all the distfiles needed for
the latest version are present.
.Pp
Warning: The behaviour of this command may change in a later version.
.It Fl V
List any prebuilt packages in any subdirs of
.Em PACKAGES
with known vulnerabilities, based on the data in
.Pa ${PKGSRCDIR}/distfiles/pkg-vulnerabilities .
.It Fl y
Remove orphaned distfiles, i.e., those that do not belong to any
currently installed package.
@@ -172,8 +165,7 @@ Remove distfiles for currently installed packages.
.An David Brownlee Aq Mt abs@netbsd.org
.Sh BUGS
The
.Fl R ,
.Fl V ,
.Fl R
and
.Fl p
options default to using

View File

@@ -1,6 +1,6 @@
#! @PERL@
# $NetBSD: lintpkgsrc.pl,v 1.6 2015/07/01 19:57:31 tron Exp $
# $NetBSD: lintpkgsrc.pl,v 1.11 2016/03/12 09:06:29 wiz Exp $
# Written by David Brownlee <abs@netbsd.org>.
#
@@ -32,7 +32,6 @@ my (
$pkg_installver, # installed version of pkg_install pseudo-pkg
$default_vars, # Set for Makefiles, inc PACKAGES & PKGSRCDIR
%opt, # Command line options
%vuln, # vulnerability data
@matched_prebuiltpackages, # List of obsolete prebuilt package paths
@prebuilt_pkgdirs, # Use to follow symlinks in prebuilt pkgdirs
%prebuilt_pkgdir_cache, # To avoid symlink loops in prebuilt_pkgdirs
@@ -58,7 +57,6 @@ if (
|| defined $opt{R}
|| defined $opt{O}
|| defined $opt{S}
|| defined $opt{V}
|| defined $opt{E}
|| defined $opt{y}
|| defined $opt{z}
@@ -154,7 +152,7 @@ sub main() {
if (m/^(\w+) ?\(([^\)]+)\) = (\S+)/)
{
my($dn);
if ($2 =~ /^patch-[a-z0-9]+$/)
if ($2 =~ /^patch-[\w.+\-]+$/)
{ next; }
$dn = $2;
# Strip leading ./ which sometimes gets added
@@ -253,26 +251,9 @@ sub main() {
# List obsolete or NO_BIN_ON_FTP/RESTRICTED prebuilt packages
#
if ( $opt{p} || $opt{O} || $opt{R} || $opt{V} ) {
if ( $opt{V} ) {
my ($vuln) = "$pkgdistdir/pkg-vulnerabilities";
if ( $opt{p} || $opt{O} || $opt{R} ) {
scan_pkgsrc_makefiles($pkgsrcdir);
if ( !open( VULN, $vuln ) ) {
fail("Unable to open '$vuln': $!");
}
while (<VULN>) {
s/#.*//;
if (/([^*?[]+)(<|>|<=|>=)(\d\S+)/) {
my ( $pkg, $cmp, $ver ) = ( $1, $2, $3 );
push( @{ $vuln{$pkg} }, "$cmp $ver" );
}
}
close(VULN);
}
if ( $opt{p} || $opt{O} || $opt{R} || $opt{V} ) {
scan_pkgsrc_makefiles($pkgsrcdir);
}
@prebuilt_pkgdirs = ( $default_vars->{PACKAGES} );
%prebuilt_pkgdir_cache = ();
@@ -427,18 +408,6 @@ sub check_prebuilt_packages() {
$pkg = canonicalize_pkgname($pkg);
if ( $opt{V} && $vuln{$pkg} ) {
foreach my $chk ( @{ $vuln{$pkg} } ) {
my ( $test, $matchver ) = split( ' ', $chk );
if ( deweycmp( $ver, $test, $matchver ) ) {
print "$File::Find::dir/$_\n";
push( @matched_prebuiltpackages, "$File::Find::dir/$_" );
last;
}
}
}
my ($pkgs);
if ( $pkgs = $pkglist->pkgs($pkg) ) {
my ($pkgver) = $pkgs->pkgver($ver);
@@ -627,7 +596,7 @@ sub get_default_makefile_vars() {
$default_vars->{LOWER_OPSYS} = lc( $default_vars->{OPSYS} );
if ( $opt{P} ) {
$default_vars->{PKGSRCDIR} = $opt{P};
$default_vars->{PKGSRCDIR} = realpath($opt{P});
}
else {
$default_vars->{PKGSRCDIR} = $conf_pkgsrcdir;
@@ -646,18 +615,18 @@ sub get_default_makefile_vars() {
}
if ( $opt{P} ) {
$default_vars->{PKGSRCDIR} = $opt{P};
$default_vars->{PKGSRCDIR} = realpath($opt{P});
}
if ( $opt{M} ) {
$default_vars->{DISTDIR} = $opt{M};
$default_vars->{DISTDIR} = realpath($opt{M});
}
else {
$default_vars->{DISTDIR} ||= $default_vars->{PKGSRCDIR} . '/distfiles';
}
if ( $opt{K} ) {
$default_vars->{PACKAGES} = $opt{K};
$default_vars->{PACKAGES} = realpath($opt{K});
}
# Extract some variables from bsd.pkg.mk
@@ -1596,7 +1565,7 @@ sub scan_pkgsrc_distfiles_vs_distinfo($$$$) {
$dt = $1;
$dn = $2;
$ds = $3;
if ( $dn =~ /^patch-[\w.\-]+$/ ) {
if ( $dn =~ /^patch-[\w.+\-]+$/ ) {
next;
}
@@ -1626,12 +1595,6 @@ sub scan_pkgsrc_distfiles_vs_distinfo($$$$) {
}
verbose(" ($numpkg packages)\n");
# Do not mark the vulnerabilities file as unknown
$distfiles{'pkg-vulnerabilities'} = {
path => 'pkg-vulnerabilities',
sum => 'IGNORE'
};
# check each file in $pkgdistdir
find ( { wanted => sub {
my ($dist);
@@ -1739,7 +1702,6 @@ Prebuilt package options: Makefile options:
-p : List old/obsolete -B : List packages marked as 'BROKEN'
-O : List OSVERSION_SPECIFIC -d : Check 'DEPENDS' up to date
-R : List NO_BIN_ON_FTP/RESTRICTED -S : List packages not in 'SUBDIRS'
-V : List known vulnerabilities
Misc:
-E file : Export the internal pkgsrc database to file

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.10 2015/07/05 11:47:14 jperkin Exp $
# $NetBSD: Makefile,v 1.11 2016/03/03 04:41:15 agc Exp $
PKGNAME= mksandbox-1.5
PKGNAME= mksandbox-1.6
CATEGORIES= pkgtools
MAINTAINER= agc@NetBSD.org

View File

@@ -1,6 +1,6 @@
#! /bin/sh
# $NetBSD: mksandbox,v 1.8 2015/07/05 11:47:14 jperkin Exp $
# $NetBSD: mksandbox,v 1.9 2016/03/03 04:41:15 agc Exp $
# Copyright (c) 2002,2012 Alistair Crooks <agc@NetBSD.org>
# All rights reserved.
@@ -28,7 +28,8 @@
# Usage: mksandbox [--mounthost=host] [--rodirs=dir1,...] [--rwdirs=dir1,...]
# [--pkgsrc=dir] [--src=srcdir] [--xsrc=xsrcdir]
# [--without-pkgsrc] [--without-x] [--verbose] sandbox-dir
# [--without-src] [--without-pkgsrc] [--without-x]
# [--verbose] sandbox-dir
#
# A small shell script to set up a sandbox (usually for a pkgsrc bulk
# build), using null mounts.
@@ -51,7 +52,8 @@ usage()
{
echo "usage: mksandbox [--mounthost=host] [--rodirs=dir1,...] [--rwdirs=dir1,...]"
echo " [--pkgsrc=dir] [--src=srcdir] [--xsrc=xsrcdir]"
echo " [--without-pkgsrc] [--without-x] [--verbose] sandbox-dir"
echo " [--without-src] [--without-pkgsrc] [--without-x]"
echo " [--verbose] sandbox-dir"
exit 1
}
@@ -178,6 +180,7 @@ while [ $# -gt 0 ]; do
--rodirs=*) rodirs=`echo $1 | $sedprog -e 's|^--rodirs=||'` ;;
--rwdirs=*) rwdirs=`echo $1 | $sedprog -e 's|^--rwdirs=||'` ;;
--without-pkgsrc) with_pkgsrc=no ;;
--without-src) need_src=no ;;
--without-x) with_x=no ;;
--verbose) set -x ;;
-*) usage ;;

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.21 2014/11/30 01:10:12 cheusov Exp $
# $NetBSD: Makefile,v 1.23 2015/11/07 18:20:49 cheusov Exp $
DISTNAME= pkgnih-0.13.0
DISTNAME= pkgnih-0.14.1
PKGNAME= ${DISTNAME:S/pkgnih/nih/}
CATEGORIES= pkgtools
MASTER_SITES= ftp://ftp.NetBSD.org/pub/NetBSD/misc/cheusov/nih/ \
@@ -11,7 +11,7 @@ HOMEPAGE= https://github.com/cheusov/pkgnih
COMMENT= Package manager for pkgsrc
LICENSE= 2-clause-bsd
DEPENDS+= pkg_summary-utils>=0.63.0:../../pkgtools/pkg_summary-utils
DEPENDS+= pkg_summary-utils>=0.66.0:../../pkgtools/pkg_summary-utils
DEPENDS+= digest-[0-9]*:../../pkgtools/digest
DEPENDS+= pkg_install>=20100915:../../pkgtools/pkg_install

View File

@@ -1,5 +1,6 @@
$NetBSD: distinfo,v 1.11 2014/11/30 01:10:12 cheusov Exp $
$NetBSD: distinfo,v 1.13 2015/11/07 18:20:49 cheusov Exp $
SHA1 (pkgnih-0.13.0.tar.gz) = 68fd6e02da90589cfed77cc9901d5679b5ab8f32
RMD160 (pkgnih-0.13.0.tar.gz) = db9c836be6f6d5ead9762d8c36661d77131508c2
Size (pkgnih-0.13.0.tar.gz) = 50607 bytes
SHA1 (pkgnih-0.14.1.tar.gz) = 9209cc1b337d85be57f7ea1bcb1c526929fd2353
RMD160 (pkgnih-0.14.1.tar.gz) = 1325c00972486a8829eb17f1af0e900f2707921a
SHA512 (pkgnih-0.14.1.tar.gz) = 12949569cde257a4375a15e9cd024970eb12295fa854400a34433693e6e812b526673dd9b99e5bfe0310710583039492643da7911656e86e4f9fecd5bfad6ab2
Size (pkgnih-0.14.1.tar.gz) = 53384 bytes

View File

@@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.28 2015/08/21 07:40:39 wiz Exp $
# $NetBSD: Makefile,v 1.29 2016/06/08 19:24:17 wiz Exp $
PKGNAME= p5-pkgsrc-Dewey-1.1
PKGREVISION= 6
PKGREVISION= 7
CATEGORIES= pkgtools perl5
MAINTAINER= wiz@NetBSD.org

View File

@@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.47 2015/04/25 14:24:45 tnn Exp $
# $NetBSD: Makefile,v 1.52 2016/08/03 10:23:19 adam Exp $
DISTNAME= PackageKit-0.4.0
PKGREVISION= 35
PKGREVISION= 38
PKGNAME= ${DISTNAME:S/PackageKit/packagekit/}
CATEGORIES= pkgtools
MASTER_SITES= http://www.freedesktop.org/software/PackageKit/releases/
@@ -48,7 +48,7 @@ PKGCONFIG_OVERRIDE+= data/packagekit-qt.pc.in
PKGCONFIG_OVERRIDE+= data/packagekit-glib.pc.in
PY_PATCHPLIST= yes
PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # not yet ported as of 0.4.0
PYTHON_VERSIONS_INCOMPATIBLE= 34 35 # not yet ported as of 0.4.0
REPLACE_PYTHON= backends/test/helpers/PackageKitDbusTest.py \
lib/python/packagekit/client.py \

View File

@@ -1,4 +1,4 @@
# $NetBSD: buildlink3.mk,v 1.15 2015/04/06 08:17:16 adam Exp $
# $NetBSD: buildlink3.mk,v 1.16 2016/04/11 19:01:37 ryoon Exp $
BUILDLINK_TREE+= packagekit
@@ -6,7 +6,7 @@ BUILDLINK_TREE+= packagekit
PACKAGEKIT_BUILDLINK3_MK:=
BUILDLINK_API_DEPENDS.packagekit+= packagekit>=0.4.0
BUILDLINK_ABI_DEPENDS.packagekit+= packagekit>=0.4.0nb34
BUILDLINK_ABI_DEPENDS.packagekit+= packagekit>=0.4.0nb37
BUILDLINK_PKGSRCDIR.packagekit?= ../../pkgtools/packagekit
.include "../../databases/sqlite3/buildlink3.mk"

View File

@@ -1,7 +1,8 @@
$NetBSD: distinfo,v 1.5 2013/06/23 18:21:41 jperkin Exp $
$NetBSD: distinfo,v 1.6 2015/11/04 00:38:40 agc Exp $
SHA1 (PackageKit-0.4.0.tar.gz) = 896a769a929d4813a9ab2b9ebea47c4fb7ed12d7
RMD160 (PackageKit-0.4.0.tar.gz) = e71a0c16009ac04457ddad895de663d7e4da08b1
SHA512 (PackageKit-0.4.0.tar.gz) = 684dc8bfa58c55aa0e559974f9532f624ff16c3e792907393e7492829bf6b6f97bf73b548ed5b29053c457675bd01f1af0fce645a2f991607798c41ec76a4924
Size (PackageKit-0.4.0.tar.gz) = 2801146 bytes
SHA1 (patch-aa) = a5d7f4b6d908cc84372d47cc2e1d3bf4b8f16234
SHA1 (patch-ab) = 026e2b8039eccbda4d4255b1f95fc779067b3d3c

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.15 2014/07/29 11:37:46 joerg Exp $
# $NetBSD: Makefile,v 1.24 2016/06/23 15:07:39 joerg Exp $
DISTNAME= pbulk-base-0.48
DISTNAME= pbulk-base-0.53
COMMENT= Core components of the modular bulk build framework
.include "../../pkgtools/pbulk/Makefile.common"
@@ -21,14 +21,8 @@ CONFLICTS= pbulk<0.39
CPPFLAGS+= -Wno-clobbered
.endif
.if ${OPSYS} == "SunOS"
LDADD+= -lsocket -lresolv
MAKE_ENV+= LDADD=${LDADD:Q}
.endif
.if ${OPSYS} == "Linux"
CPPFLAGS+= -D_GNU_SOURCE
.endif
CPPFLAGS.Linux+= -D_GNU_SOURCE
LDFLAGS.SunOS+= -lsocket -lresolv
BUILD_DIRS= lib pbuild presolve pscan

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.73 2015/09/13 11:45:36 joerg Exp $
# $NetBSD: Makefile,v 1.77 2016/05/09 00:08:21 joerg Exp $
PKGNAME= pbulk-0.57
PKGNAME= pbulk-0.61
COMMENT= Modular bulk build framework
.include "../../pkgtools/pbulk/Makefile.common"
@@ -39,7 +39,7 @@ SUBST_VARS.tools= AWK BZIP2 CHOWN DIGEST GZIP_CMD ID MAIL_CMD NEATO \
CONF_FILES+= share/examples/pbulk/pbulk.conf ${PKG_SYSCONFDIR}/pbulk.conf
PBULK_CONFIG= ${PKG_SYSCONFDIR}/pbulk.conf
PBULK_CONFIG_VERSION= 0.53
PBULK_CONFIG_VERSION= 0.54
INSTALLATION_DIRS= bin libexec/pbulk share/examples/pbulk
USE_BSD_MAKEFILE= yes

View File

@@ -1,4 +1,4 @@
/* $NetBSD: netaddr.c,v 1.8 2014/03/14 09:45:31 jperkin Exp $ */
/* $NetBSD: netaddr.c,v 1.11 2015/12/07 16:52:39 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -33,48 +33,180 @@
#include <nbcompat.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <nbcompat/netdb.h>
#include <nbcompat/stdlib.h>
#include <nbcompat/string.h>
#include "pbulk.h"
int
parse_sockaddr_in(const char *str, struct sockaddr_in *addr)
struct listener {
LIST_ENTRY(listener) ls_link;
struct event ls_event;
int ls_fd;
};
static LIST_HEAD(, listener) all_listener = LIST_HEAD_INITIALIZER(&all_listener);
void
shutdown_listeners(void)
{
const char *port_sep;
char *port_end;
struct in_addr in;
unsigned long tmp;
if ((port_sep = strrchr(str, ':')) != NULL) {
char *addr_part = strdup(str);
addr_part[port_sep - str] = '\0';
if (inet_aton(addr_part, &in) == 0) {
free(addr_part);
return -1;
}
free(addr_part);
str = port_sep + 1;
} else {
memset(&in, 0, sizeof(in));
struct listener *ls;
while ((ls = LIST_FIRST(&all_listener)) != NULL) {
LIST_REMOVE(ls, ls_link);
event_del(&ls->ls_event);
close(ls->ls_fd);
free(ls);
}
}
errno = 0;
tmp = strtoul(str, &port_end, 10);
if (*str == '\0' || *port_end != '\0' || errno != 0 || tmp > 0xfffful)
static int
split_netaddr(const char *str, char **host, char **port, int *numeric)
{
const char *sep = strrchr(str, ':');
if (sep == NULL) {
*numeric = 0;
*host = NULL;
*port = xstrdup(str);
return 0;
}
if (sep[1] == '\0') {
warnx("invalid network address with empty port: %s", str);
return -1;
memset(addr, 0, sizeof(struct sockaddr_in));
addr->sin_port = htons((in_port_t)tmp);
addr->sin_addr = in;
#if !defined(__sun) && !defined(__hpux) && !defined(__INTERIX) && \
!defined(__digital__) && !defined(__linux) && !defined(__sgi)
addr->sin_len = sizeof(*addr);
#endif
addr->sin_family = AF_INET;
}
if (sep == str) {
/* Consider ":port" as equivalent to just "port". */
*numeric = 0;
*host = NULL;
*port = xstrdup(sep + 1);
return 0;
}
if (str[0] == '[' && sep[-1] == ']') {
/* Recognize URL-style numeric IPv6 addresses in []. */
*numeric = 1;
*host = xstrndup(str + 1, sep - str - 2);
*port = xstrdup(sep + 1);
return 0;
}
if (memchr(str, ':', sep - str) != NULL) {
warnx("invalid network with colon in host name: %s", str);
return -1;
}
*numeric = 0;
*host = xstrndup(str, sep - str);
*port = xstrdup(sep + 1);
return 0;
}
static struct addrinfo *
prepare_getaddrinfo(const char *netaddr, int passive)
{
struct addrinfo hints, *result;
char *host, *port;
int numeric, rv;
if (split_netaddr(netaddr, &host, &port, &numeric))
return NULL;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
if (passive)
hints.ai_flags |= AI_PASSIVE;
if (numeric)
hints.ai_flags |= AI_NUMERICHOST;
rv = getaddrinfo(host, port, &hints, &result);
free(host);
free(port);
if (rv != 0) {
if (rv == EAI_SYSTEM)
warn("getaddrinfo failed");
else
warnx("getaddrinfo failed: %s", gai_strerror(rv));
return NULL;
}
return result;
}
int
connect_sockaddr(const char *netaddr)
{
struct addrinfo *result, *res;
int s;
if ((result = prepare_getaddrinfo(netaddr, 0)) == NULL)
return -1;
s = -1;
for (res = result; res != NULL; res = res->ai_next) {
s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (s == -1)
continue;
if (connect(s, res->ai_addr, res->ai_addrlen) != -1)
break;
close(s);
s = -1;
}
freeaddrinfo(result);
return s;
}
static int
bind_and_listen(struct addrinfo *res, void (*cb)(int, void *))
{
static const int one = 1;
struct listener *ls;
int s;
s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (s == -1)
return 0;
if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) {
close(s);
return 0;
}
#ifdef IPV6_V6ONLY
/*
* Disable mapped IPv4, which is still the default at least on Linux.
* It doesn't matter if an error occurs, but success allows binding
* to both IPv4 and IPv6 wild card addresses. Otherwise,
* the second bind would fail.
*/
if (res->ai_family == AF_INET6)
setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, &one, sizeof(one));
#endif
if (bind(s, res->ai_addr, res->ai_addrlen) == -1) {
close(s);
return 0;
}
if (listen(s, 5) == -1) {
close(s);
return 0;
}
ls = xmalloc(sizeof(*ls));
ls->ls_fd = s;
LIST_INSERT_HEAD(&all_listener, ls, ls_link);
event_add(&ls->ls_event, s, 0, 1, cb, NULL);
return 1;
}
int
listen_sockaddr(const char *netaddr, void (*cb)(int, void *))
{
struct addrinfo *result, *res;
int got_address;
if ((result = prepare_getaddrinfo(netaddr, 0)) == NULL)
return -1;
got_address = 0;
for (res = result; res != NULL; res = res->ai_next)
got_address |= bind_and_listen(res, cb);
freeaddrinfo(result);
return got_address ? 0 : -1;
}

View File

@@ -1,4 +1,4 @@
/* $NetBSD: pbulk.h,v 1.5 2014/01/15 13:52:10 joerg Exp $ */
/* $NetBSD: pbulk.h,v 1.6 2015/12/07 16:52:39 joerg Exp $ */
/*-
* Copyright (c) 2007, 2009 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -75,8 +75,9 @@ void deferred_write(int fd, const void *, size_t,
ssize_t atomic_read(int, void *, size_t);
ssize_t atomic_write(int, const void *, size_t);
int parse_sockaddr_in(const char *, struct sockaddr_in *);
int connect_sockaddr(const char *);
int listen_sockaddr(const char *, void (*)(int, void *));
void shutdown_listeners(void);
pid_t fork_chdir_exec(const char *, const char *,
const char * const *, int *);
char *read_from_child(const char *, const char *,

View File

@@ -1,4 +1,4 @@
/* $NetBSD: client.c,v 1.4 2012/01/19 18:53:32 joerg Exp $ */
/* $NetBSD: client.c,v 1.6 2015/12/07 16:52:39 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -52,20 +52,13 @@
void
client_mode(const char *client_port)
{
struct sockaddr_in dst;
uint32_t build_info_len;
ssize_t recv_bytes, sent_bytes;
char *build_info;
int fd;
if (parse_sockaddr_in(client_port, &dst))
errx(1, "Could not parse addr/port");
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd == -1)
err(1, "Could not create socket");
if (connect(fd, (struct sockaddr *)&dst, sizeof(dst)) == -1)
err(1, "Could not connect socket");
if ((fd = connect_sockaddr(client_port)) == -1)
err(1, "Could not creation connection to %s", client_port);
loop:
sent_bytes = atomic_write(fd, "G", 1);
@@ -84,6 +77,8 @@ loop:
if (recv_bytes != 4)
errx(1, "Premature end while reading build info from socket");
build_info_len = ntohl(build_info_len);
if (build_info_len == 0)
exit(0);
if (build_info_len < 10 || build_info_len > 0xffffff)
errx(1, "Invalid build info length from master");

View File

@@ -1,4 +1,4 @@
/* $NetBSD: jobs.c,v 1.15 2014/01/15 13:52:10 joerg Exp $ */
/* $NetBSD: jobs.c,v 1.16 2015/11/03 19:06:47 joerg Exp $ */
/*-
* Copyright (c) 2007, 2009, 2011 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -364,6 +364,12 @@ build_tree(void)
}
}
int
has_job(void)
{
return !TAILQ_EMPTY(&buildable_jobs);
}
struct build_job *
get_job(void)
{

View File

@@ -1,4 +1,4 @@
/* $NetBSD: master.c,v 1.9 2013/01/14 14:33:28 jperkin Exp $ */
/* $NetBSD: master.c,v 1.11 2015/12/07 16:52:39 joerg Exp $ */
/*-
* Copyright (c) 2007, 2009 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -53,8 +53,6 @@
static int clients_started;
static LIST_HEAD(, build_peer) active_peers, inactive_peers, unassigned_peers;
static struct event listen_event;
static int listen_event_socket;
static struct signal_event child_event;
static pid_t child_pid;
@@ -71,6 +69,11 @@ struct build_peer {
static void assign_job(void *);
static void recv_command(struct build_peer *);
static void
do_nothing(void *arg)
{
}
static void
kill_peer(void *arg)
{
@@ -177,10 +180,16 @@ shutdown_master(void)
struct timeval tv;
struct build_peer *peer;
event_del(&listen_event);
(void)close(listen_event_socket);
LIST_FOREACH(peer, &inactive_peers, peer_link)
(void)shutdown(peer->fd, SHUT_RDWR);
shutdown_listeners();
LIST_FOREACH(peer, &inactive_peers, peer_link) {
uint32_t net_build_info_len = htonl(0);
(void)memcpy(peer->tmp_buf, &net_build_info_len, 4);
deferred_write(peer->fd, peer->tmp_buf, 4, peer, do_nothing,
kill_peer);
}
/* Give clients a second to close connections to prevent TIME_WAIT. */
tv.tv_sec = 1;
tv.tv_usec = 0;
event_loopexit(&tv);
@@ -243,12 +252,9 @@ static void
listen_handler(int sock, void *arg)
{
struct build_peer *peer;
struct sockaddr_in src;
socklen_t src_len;
int fd;
src_len = sizeof(src);
if ((fd = accept(sock, (struct sockaddr *)&src, &src_len)) == -1) {
if ((fd = accept(sock, NULL, 0)) == -1) {
warn("Could not accept connection");
return;
}
@@ -291,30 +297,14 @@ child_handler(struct signal_event *ev)
void
master_mode(const char *master_port, const char *start_script)
{
struct sockaddr_in dst;
int fd;
LIST_INIT(&active_peers);
LIST_INIT(&inactive_peers);
LIST_INIT(&unassigned_peers);
event_init();
if (parse_sockaddr_in(master_port, &dst))
errx(1, "Could not parse addr/port");
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd == -1)
err(1, "Could not create socket");
if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
err(1, "Could not set close-on-exec flag");
if (bind(fd, (struct sockaddr *)&dst, sizeof(dst)) == -1)
err(1, "Could not bind socket");
if (listen(fd, 5) == -1)
err(1, "Could not listen on socket");
event_add(&listen_event, fd, 0, 1, listen_handler, NULL);
listen_event_socket = fd;
if (listen_sockaddr(master_port, listen_handler))
errx(1, "Could not create listen socket for %s", master_port);
if (start_script) {
signal_add(&child_event, SIGCHLD, child_handler);
@@ -330,6 +320,4 @@ master_mode(const char *master_port, const char *start_script)
}
event_dispatch();
(void)close(fd);
}

View File

@@ -1,4 +1,4 @@
/* $NetBSD: pbuild.c,v 1.6 2013/01/14 14:33:28 jperkin Exp $ */
/* $NetBSD: pbuild.c,v 1.7 2015/11/03 19:06:47 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -150,6 +150,7 @@ main(int argc, char **argv)
if (argc != 0)
usage();
client_mode(client_port);
/* UNREACHABLE */
}
if (argc != 3)
@@ -160,10 +161,12 @@ main(int argc, char **argv)
init_jobs(argv[0], argv[1], argv[2]);
if (master_port != NULL)
master_mode(master_port, start_script);
else
standalone_mode();
if (has_job()) {
if (master_port != NULL)
master_mode(master_port, start_script);
else
standalone_mode();
}
if (report_file)
finish_build(report_file);

View File

@@ -1,4 +1,4 @@
/* $NetBSD: pbuild.h,v 1.6 2011/11/27 19:53:30 joerg Exp $ */
/* $NetBSD: pbuild.h,v 1.7 2015/11/03 19:06:47 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -114,6 +114,7 @@ struct build_job {
extern int verbosity;
void init_jobs(const char *, const char *, const char *);
int has_job(void);
struct build_job *get_job(void);
void process_job(struct build_job *, enum job_state, int);
int build_package(const char *, size_t);

View File

@@ -1,4 +1,4 @@
.\" $NetBSD: pbulk-build.1,v 1.1.1.1 2007/06/19 19:49:55 joerg Exp $
.\" $NetBSD: pbulk-build.1,v 1.2 2015/12/07 16:52:39 joerg Exp $
.\"
.\" Copyright (c) 2007 Thomas Klausner and Joerg Sonnenberger.
.\" All rights reserved.
@@ -32,16 +32,16 @@
.Nd build all packages specified in input file
.Sh SYNOPSIS
.Nm
.Fl s Oo Ar ip: Oc Ns Ar port
.Fl s Oo Ar host: Oc Ns Ar port
.Nm
.Op Fl v
.Fl c Oo Ar ip: Oc Ns Ar port
.Fl c Oo Ar host: Oc Ns Ar port
.Fl b Ar build_script
.Nm
.Op Fl I Ar start_script
.Op Fl r Ar report_file
.Op Fl v
.Fl m Oo Ar ip: Oc Ns Ar port
.Fl m Oo Ar host: Oc Ns Ar port
.Ar input success error
.Nm
.Op Fl r Ar report_file
@@ -61,11 +61,11 @@ for building the packages.
See
.Sx BUILD SCRIPT FORMAT
for details.
.It Fl c Oo Ar ip: Oc Ns Ar port
.It Fl c Oo Ar host: Oc Ns Ar port
Obtain jobs from master running on the given
.Ar port
(or
.Ar ip:port ) .
.Ar host:port ) .
If used with
.Fl v ,
print the name of the package to build to stdout.
@@ -73,18 +73,18 @@ print the name of the package to build to stdout.
Run
.Ar start_script
after opening the socket and wait for completion before entering build loop.
.It Fl m Oo Ar ip: Oc Ns Ar port
.It Fl m Oo Ar host : Oc Ns Ar port
Enter master mode.
The master binds to
.Ar port
(or
.Ar ip:port )
.Ar host:port )
and waits for clients to connect and build individual packages.
.It Fl s Oo Ar ip: Oc Ns Ar port
.It Fl s Oo Ar host: Oc Ns Ar port
Query the master running on the given
.Ar port
(or
.Ar ip:port )
.Ar host:port )
for the current number of successful, open, and failed builds.
.It Fl r Ar report_file
Write name of each package,

View File

@@ -1,4 +1,4 @@
/* $NetBSD: stat.c,v 1.3 2008/01/15 22:14:30 joerg Exp $ */
/* $NetBSD: stat.c,v 1.4 2015/12/07 16:52:39 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -52,21 +52,14 @@
void
stat_mode(const char *client_port)
{
struct sockaddr_in dst;
ssize_t recv_bytes, sent_bytes;
char buf[7 * 4];
struct build_stat st;
uint32_t tmp;
int fd;
if (parse_sockaddr_in(client_port, &dst))
errx(1, "Could not parse addr/port");
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd == -1)
err(1, "Could not create socket");
if (connect(fd, (struct sockaddr *)&dst, sizeof(dst)) == -1)
err(1, "Could not connect socket");
if ((fd = connect_sockaddr(client_port)) == -1)
err(1, "Could not creation connection to %s", client_port);
sent_bytes = write(fd, "S", 1);
if (sent_bytes == -1)

View File

@@ -1,4 +1,4 @@
/* $NetBSD: client.c,v 1.3 2009/03/06 15:21:17 joerg Exp $ */
/* $NetBSD: client.c,v 1.6 2016/06/20 17:54:43 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -48,10 +48,105 @@
#include "pbulk.h"
#include "pscan.h"
void
client_mode(const char *client_port)
static void
find_full_tree_client(int fd, const char *bmake_path)
{
const char * extract_subdir[] = {
bmake_path,
"show-subdir-var",
"VARNAME=SUBDIR",
NULL
};
char **pkgs;
size_t i, allocated_pkgs, len_pkgs, len_pkgs_data;
char *cat_path;
char *buf, *buf_orig, *cat, *cat_orig;
size_t buf_len, cat_len;
uint32_t net_len_pkgs_data;
ssize_t sent_bytes;
buf = read_from_child(pkgsrc_tree, bmake_path, extract_subdir);
if (buf == NULL)
err(1, "Cannot extract categories");
cat = cat_orig = buf;
allocated_pkgs = len_pkgs = 0;
len_pkgs_data = 0;
pkgs = NULL;
for (;;) {
cat += strspn(cat, " \t\n");
cat_len = strcspn(cat, " \t\n");
if (cat_len == 0)
break;
cat_path = xasprintf("%s/%.*s", pkgsrc_tree, (int)cat_len, cat);
buf_orig = buf = read_from_child(cat_path, bmake_path, extract_subdir);
free(cat_path);
if (buf == NULL) {
warnx("Cannot extract subdirectories for %.*s", (int)cat_len, cat);
cat += cat_len;
continue;
}
for (;;) {
buf += strspn(buf, " \t\n");
buf_len = strcspn(buf, " \t\n");
if (buf_len == 0)
break;
if (len_pkgs == allocated_pkgs) {
if (allocated_pkgs == 0) {
allocated_pkgs = 1024;
pkgs = xmalloc(sizeof(*pkgs) *
allocated_pkgs);
} else {
allocated_pkgs *= 2;
pkgs = xrealloc(pkgs,
sizeof(*pkgs) * allocated_pkgs);
}
}
pkgs[len_pkgs] = xasprintf("%.*s/%.*s", (int)cat_len,
cat, (int)buf_len, buf);
len_pkgs_data += strlen(pkgs[len_pkgs]) + 1;
++len_pkgs;
buf += buf_len;
}
free(buf_orig);
cat += cat_len;
}
free(cat_orig);
if (len_pkgs_data > 0xfffffffful)
errx(1, "Directory list too large");
net_len_pkgs_data = ntohl((uint32_t)len_pkgs_data);
sent_bytes = atomic_write(fd, &net_len_pkgs_data, 4);
if (sent_bytes == -1)
err(1, "Could not write to socket");
if (sent_bytes != 4)
errx(1, "Premature end of stream while writing to socket");
for (i = 0; i < len_pkgs; ++i) {
size_t l = strlen(pkgs[i]);
sent_bytes = atomic_write(fd, pkgs[i], l);
if (sent_bytes == -1)
err(1, "Could not write to socket");
if ((size_t)sent_bytes != l)
errx(1, "Premature end of stream while writing to socket");
sent_bytes = atomic_write(fd, "\n", 1);
if (sent_bytes == -1)
err(1, "Could not write to socket");
if (sent_bytes != 1)
errx(1, "Premature end of stream while writing to socket");
free(pkgs[i]);
}
free(pkgs);
}
void
client_mode(const char *client_port, const char *bmake_path)
{
struct sockaddr_in dst;
uint16_t path_len;
uint32_t net_output_len;
ssize_t recv_bytes, sent_bytes;
@@ -59,14 +154,8 @@ client_mode(const char *client_port)
char *path, *output;
int fd;
if (parse_sockaddr_in(client_port, &dst))
errx(1, "Could not parse addr/port");
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd == -1)
err(1, "Could not create socket");
if (connect(fd, (struct sockaddr *)&dst, sizeof(dst)) == -1)
err(1, "Could not connect socket");
if ((fd = connect_sockaddr(client_port)) == -1)
err(1, "Could not creation connection to %s", client_port);
loop:
recv_bytes = atomic_read(fd, &path_len, 2);
@@ -77,6 +166,8 @@ loop:
if (recv_bytes != 2)
errx(1, "Premature end while reading path length from socket");
path_len = ntohs(path_len);
if (path_len == 0)
exit(0);
if (path_len < 3)
errx(1, "Invalid path length from master");
@@ -87,6 +178,13 @@ loop:
err(1, "Could not read from socket");
if (recv_bytes != path_len || strlen(path) != path_len)
errx(1, "Premature end of stream while reading path from socket");
if (strcmp(path, "find_full_tree") == 0) {
free(path);
find_full_tree_client(fd, bmake_path);
goto loop;
}
if (path[0] == '/' ||
strchr(path, '/') == NULL ||
strchr(path, '/') != strrchr(path, '/') ||
@@ -109,12 +207,12 @@ loop:
errx(1, "Output too large");
net_output_len = htonl((uint32_t)output_len);
sent_bytes = write(fd, &net_output_len, 4);
sent_bytes = atomic_write(fd, &net_output_len, 4);
if (sent_bytes == -1)
err(1, "Could not write to socket");
if (sent_bytes != 4)
errx(1, "Premature end of stream while writing to socket");
sent_bytes = write(fd, output, output_len);
sent_bytes = atomic_write(fd, output, output_len);
if (sent_bytes == -1)
err(1, "Could not write to socket");
if ((size_t)sent_bytes != output_len)

View File

@@ -1,4 +1,4 @@
/* $NetBSD: jobs.c,v 1.7 2012/11/30 16:22:49 joerg Exp $ */
/* $NetBSD: jobs.c,v 1.9 2016/06/20 17:54:43 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -296,6 +296,28 @@ add_job_full(const char *location)
++len_jobs;
}
int
has_job(void)
{
size_t i;
struct scan_entry *e;
struct scan_job * job;
for (i = first_undone_job; i < len_jobs; ++i) {
job = &jobs[i];
if (job->state != JOB_OPEN)
continue;
e = find_old_scan(job->pkg_location);
if (e == NULL)
return 1;
job->scan_output = xstrdup(e->data);
process_job(job, JOB_DONE);
i = first_undone_job - 1;
}
return 0;
}
struct scan_job *
get_job(void)
{
@@ -320,11 +342,32 @@ get_job(void)
return NULL;
}
static void
parse_full_tree(char *data) {
char *eol;
while (*data) {
eol = strchr(data, '\n');
if (eol == NULL)
err(1, "Incomplete line in full tree list");
if (data == eol)
continue;
*eol = '\0';
add_job_full(data);
data = eol + 1;
}
}
void
process_job(struct scan_job *job, enum job_state state)
{
job->state = state;
if (state == JOB_DONE &&
strcmp(job->pkg_location, "find_full_tree") == 0) {
parse_full_tree(job->scan_output);
}
for (; first_undone_job < len_jobs; ++first_undone_job) {
if (jobs[first_undone_job].state != JOB_DONE)
break;
@@ -489,6 +532,8 @@ write_jobs(const char *output_file)
warnx("%s was not processed", jobs[i].pkg_location);
continue;
}
if (strcmp(jobs[i].pkg_location, "find_full_tree") == 0)
continue;
if (jobs[i].scan_output == NULL) {
warnx("Scan failed for %s", jobs[i].pkg_location);
continue;

View File

@@ -1,4 +1,4 @@
/* $NetBSD: master.c,v 1.8 2013/01/14 14:33:28 jperkin Exp $ */
/* $NetBSD: master.c,v 1.12 2016/06/23 15:07:39 joerg Exp $ */
/*-
* Copyright (c) 2007, 2009 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -53,8 +53,6 @@
static int clients_started;
static LIST_HEAD(, scan_peer) active_peers, inactive_peers;
static struct event listen_event;
static int listen_event_socket;
static struct signal_event child_event;
static pid_t child_pid;
@@ -70,6 +68,12 @@ struct scan_peer {
};
static void assign_job(struct scan_peer *);
static void reassign_jobs(void);
static void
do_nothing(void *arg)
{
}
static void
kill_peer(void *arg)
@@ -103,6 +107,7 @@ finish_job(void *arg)
LIST_REMOVE(peer, peer_link);
process_job(peer->job, JOB_DONE);
assign_job(peer);
reassign_jobs();
}
static void
@@ -154,10 +159,17 @@ shutdown_master(void)
struct timeval tv;
struct scan_peer *peer;
event_del(&listen_event);
(void)close(listen_event_socket);
LIST_FOREACH(peer, &inactive_peers, peer_link)
(void)shutdown(peer->fd, SHUT_RDWR);
shutdown_listeners();
LIST_FOREACH(peer, &inactive_peers, peer_link) {
uint16_t net_job_len = htons(0);
(void)memcpy(peer->tmp_buf, &net_job_len, 2);
deferred_write(peer->fd, peer->tmp_buf, 2, peer, do_nothing,
kill_peer);
}
/* Give clients a second to close connections to prevent TIME_WAIT. */
tv.tv_sec = 1;
tv.tv_usec = 0;
event_loopexit(&tv);
@@ -191,16 +203,28 @@ assign_job(struct scan_peer *peer)
kill_peer);
}
static void
reassign_jobs(void)
{
struct scan_peer *peer;
while ((peer = LIST_FIRST(&inactive_peers)) != NULL) {
if (!has_job())
break;
LIST_REMOVE(peer, peer_link);
assign_job(peer);
if (peer-> job == NULL)
break;
}
}
static void
listen_handler(int sock, void *arg)
{
struct scan_peer *peer;
struct sockaddr_in src;
socklen_t src_len;
int fd;
src_len = sizeof(src);
if ((fd = accept(sock, (struct sockaddr *)&src, &src_len)) == -1) {
if ((fd = accept(sock, NULL, 0)) == -1) {
warn("Could not accept connection");
return;
}
@@ -218,7 +242,6 @@ listen_handler(int sock, void *arg)
static void
child_handler(struct signal_event *ev)
{
struct scan_peer *peer;
int status;
if (waitpid(child_pid, &status, WNOHANG) == -1) {
@@ -231,41 +254,19 @@ child_handler(struct signal_event *ev)
clients_started = 1;
signal_del(ev);
while ((peer = LIST_FIRST(&inactive_peers)) != NULL) {
LIST_REMOVE(peer, peer_link);
assign_job(peer);
if (peer-> job == NULL)
break;
}
reassign_jobs();
}
void
master_mode(const char *master_port, const char *start_script)
{
struct sockaddr_in dst;
int fd;
LIST_INIT(&active_peers);
LIST_INIT(&inactive_peers);
event_init();
if (parse_sockaddr_in(master_port, &dst))
errx(1, "Could not parse addr/port");
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd == -1)
err(1, "Could not create socket");
if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
err(1, "Could not set close-on-exec flag");
if (bind(fd, (struct sockaddr *)&dst, sizeof(dst)) == -1)
err(1, "Could not bind socket");
if (listen(fd, 5) == -1)
err(1, "Could not listen on socket");
event_add(&listen_event, fd, 0, 1, listen_handler, NULL);
listen_event_socket = fd;
if (listen_sockaddr(master_port, listen_handler))
errx(1, "Could not create listen socket for %s", master_port);
if (start_script) {
signal_add(&child_event, SIGCHLD, child_handler);
@@ -281,6 +282,4 @@ master_mode(const char *master_port, const char *start_script)
}
event_dispatch();
(void)close(fd);
}

View File

@@ -1,4 +1,4 @@
.\" $NetBSD: pbulk-scan.1,v 1.1.1.1 2007/06/19 19:49:57 joerg Exp $
.\" $NetBSD: pbulk-scan.1,v 1.2 2015/12/07 16:52:40 joerg Exp $
.\"
.\" Copyright (c) 2007 Thomas Klausner and Joerg Sonnenberger.
.\" All rights reserved.
@@ -33,13 +33,13 @@
.Sh SYNOPSIS
.Nm
.Op Fl v
.Fl c Oo Ar ip: Oc Ns Ar port
.Fl c Oo Ar host: Oc Ns Ar port
.Fl M Ar make
.Ar pkgsrc
.Nm
.Op Fl lv
.Op Fl I Ar start_script
.Op Fl m Oo Ar ip: Oc Ns Ar port
.Op Fl m Oo Ar host: Oc Ns Ar port
.Fl M Ar make
.Ar pkgsrc output
.Sh DESCRIPTION
@@ -48,11 +48,11 @@ extracts information for a pbulk bulk build from a pkgsrc tree.
.Pp
Supported options are:
.Bl -tag -width 15n -offset indent
.It Fl c Oo Ar ip: Oc Ns Ar port
.It Fl c Oo Ar host: Oc Ns Ar port
Connect to pbulk bulk build master process on
.Ar port
(or
.Ar ip:port ) .
.Ar host:port ) .
.It Fl I Ar start_script
Run
.Ar start_script
@@ -72,14 +72,14 @@ Usually
.Dq make
or
.Dq bmake .
.It Fl m Oo Ar ip: Oc Ns Ar port
.It Fl m Oo Ar host: Oc Ns Ar port
Enter master mode.
In this mode,
.Nm
waits for connections on
.Ar port
(or
.Ar ip:port ) .
.Ar host:port ) .
.It Fl v
Log each location to be scanned or other progress to stdout.
.El

View File

@@ -1,4 +1,4 @@
/* $NetBSD: pscan.c,v 1.8 2012/11/23 12:13:35 joerg Exp $ */
/* $NetBSD: pscan.c,v 1.10 2016/06/20 17:54:43 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -136,7 +136,7 @@ main(int argc, char **argv)
usage();
pkgsrc_tree = argv[0];
client_mode(client_port);
client_mode(client_port, bmake_path);
}
if (argc != 2)
@@ -145,15 +145,20 @@ main(int argc, char **argv)
pkgsrc_tree = argv[0];
output_file = argv[1];
if (limited_scan == 0)
find_full_tree();
else
if (limited_scan != 0)
read_limited_list();
if (master_port != NULL)
master_mode(master_port, start_script);
else
standalone_mode();
if (master_port != NULL) {
if (limited_scan == 0)
add_job_full("find_full_tree");
if (has_job())
master_mode(master_port, start_script);
} else {
if (limited_scan == 0)
find_full_tree();
if (has_job())
standalone_mode();
}
write_jobs(output_file);

View File

@@ -1,4 +1,4 @@
/* $NetBSD: pscan.h,v 1.3 2012/11/23 12:13:35 joerg Exp $ */
/* $NetBSD: pscan.h,v 1.5 2016/06/20 17:54:43 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -52,7 +52,7 @@ extern const char *pkgsrc_tree;
char *scan_pkglocation(const char *);
void client_mode(const char *);
void client_mode(const char *, const char *);
void master_mode(const char *, const char *);
void add_job(const char *, size_t, const char *, size_t);
@@ -60,5 +60,6 @@ void add_job_full(const char *);
struct scan_job *get_job(void);
void process_job(struct scan_job *, enum job_state);
void write_jobs(const char *);
int has_job(void);
void read_old_scan(const char *);
void read_old_scan(const char *);

View File

@@ -1,5 +1,5 @@
#!@SH@
# $NetBSD: pkg-build,v 1.27 2015/09/13 11:45:37 joerg Exp $
# $NetBSD: pkg-build,v 1.30 2016/05/09 00:08:21 joerg Exp $
#
# Copyright (c) 2007, 2008 Joerg Sonnenberger <joerg@NetBSD.org>.
# All rights reserved.
@@ -39,11 +39,8 @@ if [ "${config_version}" != "@PBULK_CONFIG_VERSION@" ]; then
fi
default_sync_package() {
mkdir -p ${packages}/All
cp "$1" "${packages}/All/${pkgname}${pkg_sufx}"
for cat in $3; do
mkdir -p ${packages}/$cat
ln -fs ../All/${pkgname}${pkg_sufx} ${packages}/$cat/${pkgname}${pkg_sufx}
done
}
cleanup() {
@@ -78,7 +75,6 @@ run_make() {
}
run_usergroup() {
[ "${use_destdir}" != no ] || return 0
case "${usergroup_phase}" in
*configure)
[ "$1" != "configure" ] || ${make} create-usergroup clean
@@ -125,20 +121,13 @@ if [ "$use_unprivileged_checksum" != "no" ]; then
else
run_checksum=run_direct
fi
case "$use_destdir" in
user-destdir)
if [ "$use_destdir" = user-destdir ]; then
run_build=run_su
run_install=run_su
;;
destdir)
else
run_build=run_su
run_install=run_direct
;;
*)
run_build=run_direct
run_install=run_direct
;;
esac
fi
if [ `@ID@ -u` -ne 0 ]; then
run_checksum=run_direct
@@ -156,10 +145,8 @@ set -e
mkdir -p ${bulklog}/${pkgname}
rm -f ${bulklog}/${pkgname}/*
if [ "$use_destdir" = "destdir" -o "$use_destdir" = "user-destdir" ]; then
touch ${bulklog}/${pkgname}/work.log
@CHOWN@ ${unprivileged_user} ${bulklog}/${pkgname}/work.log
fi
touch ${bulklog}/${pkgname}/work.log
@CHOWN@ ${unprivileged_user} ${bulklog}/${pkgname}/work.log
pkg_add_normal() {
PKG_PATH=${packages}/All ${pkg_add} -K ${cur_pkgdb} "$@"
@@ -206,11 +193,9 @@ run_make run_direct stage-package-create > ${bulklog}/${pkgname}/package.log 2>&
pkgfile=$(run_make run_direct show-var VARNAME=STAGE_PKGFILE)
# When using DESTDIR build, add the package once to test install rules.
# This is not done for potential bootstrap packages as they might already
# be installed.
if [ "${use_destdir}" != "no" ] && \
[ -z "${is_bootstrap}" ]; then
# Add the package once to test install rules. This is not done for
# potential bootstrap packages as they might already be installed.
if [ -z "${is_bootstrap}" ]; then
if ! ${pkg_add_cmd} ${pkgfile} \
>> ${bulklog}/${pkgname}/package.log 2>&1; then
cleanup

View File

@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.1 2015/07/04 14:37:25 khorben Exp $
# $NetBSD: Makefile,v 1.4 2016/08/27 21:57:05 khorben Exp $
VERSION= 1.5.4
VERSION= 1.8.7
DISTNAME= ${VERSION}
PKGNAME= pkg-${VERSION}
CATEGORIES= pkgtools

View File

@@ -1,4 +1,4 @@
@comment $NetBSD: PLIST,v 1.1 2015/07/04 14:37:25 khorben Exp $
@comment $NetBSD: PLIST,v 1.3 2016/08/27 21:57:05 khorben Exp $
include/pkg.h
lib/libpkg.la
lib/libpkg_static.la
@@ -53,3 +53,4 @@ share/examples/pkg/periodic/security/460.pkg-checksum
share/examples/pkg/periodic/weekly/400.status-pkg
share/examples/pkg/pkg.conf.sample
share/zsh/site-functions/_pkg
@pkgdir etc/periodic

View File

@@ -1,5 +1,7 @@
$NetBSD: distinfo,v 1.1 2015/07/04 14:37:25 khorben Exp $
$NetBSD: distinfo,v 1.5 2016/08/27 21:57:05 khorben Exp $
SHA1 (1.5.4.tar.gz) = 2e58510fa9b9eb97b6d9e0d62e527228601af1c1
RMD160 (1.5.4.tar.gz) = b38582e325752a329eb353212783850db6b138ea
Size (1.5.4.tar.gz) = 2937244 bytes
SHA1 (1.8.7.tar.gz) = 93ce7126a7e036bb21153bfabc923cd74b701a6b
RMD160 (1.8.7.tar.gz) = 80d421c73a1406ac64c62a0b460928ec9ad75ce5
SHA512 (1.8.7.tar.gz) = 462775ea9cef6f5741c895d2d4b872abbe269bbaab78d4d601a1b77655d267bb339f1ef69595a9f9342cedf773462177755550b024df4e0ef57c427e229487b1
Size (1.8.7.tar.gz) = 2972264 bytes
SHA1 (patch-docs_Makefile.am) = aa6d5c9310c644d13d55c3176cd186c37cccc7c2

View File

@@ -0,0 +1,15 @@
$NetBSD: patch-docs_Makefile.am,v 1.1 2016/04/01 13:11:14 jperkin Exp $
Support PKGMANDIR.
--- docs/Makefile.am.orig 2015-06-11 13:46:28.000000000 +0000
+++ docs/Makefile.am
@@ -35,7 +35,7 @@ dist_man_MANS= pkg-add.8 \
pkg_printf.3 \
pkg_repos.3
-mandir= $(prefix)/man
+mandir= $(prefix)/${PKGMANDIR}
EXTRA_DIST= fix-xrefs
.PHONY: run-fix-xrefs

View File

@@ -1,6 +1,7 @@
# $NetBSD: Makefile,v 1.54 2015/08/17 08:18:31 wiz Exp $
# $NetBSD: Makefile,v 1.55 2015/11/21 23:10:27 agc Exp $
PKGNAME= pkg_comp-1.38
PKGREVISION= 1
CATEGORIES= pkgtools
MAINTAINER= jmmv@NetBSD.org

View File

@@ -1,4 +1,4 @@
.\" $NetBSD: pkg_comp.8,v 1.40 2015/08/17 08:18:31 wiz Exp $
.\" $NetBSD: pkg_comp.8,v 1.41 2015/11/21 23:10:27 agc Exp $
.\"
.\" pkg_comp - Build packages inside a clean chroot environment
.\" Copyright (c) 2002, 2003, 2004, 2005 Julio M. Merino Vidal <jmmv@NetBSD.org>
@@ -185,7 +185,7 @@ like
or a plain name like
.Sq colorls .
Defaults to nothing.
.It BUILD_TARGET
.It BUILD_PKG_COMP_TARGET
The pkgsrc target to use when building packages.
It can contain any target supported by the pkgsrc system, but
reasonable values are:
@@ -507,7 +507,7 @@ will take care to umount needed mount points.
This executes several targets automatically, using
.Sy AUTO_TARGET
as
.Sy BUILD_TARGET
.Sy BUILD_PKG_COMP_TARGET
during the build.
The order is: makeroot, build and removeroot.
This is useful to create binary packages of several pkgsrc and their

View File

@@ -1,6 +1,6 @@
#!/bin/sh
#
# $NetBSD: pkg_comp.sh,v 1.42 2015/08/17 08:18:31 wiz Exp $
# $NetBSD: pkg_comp.sh,v 1.43 2015/11/21 23:10:27 agc Exp $
#
# pkg_comp - Build packages inside a clean chroot environment
# Copyright (c) 2002, 2003, 2004, 2005 Julio M. Merino Vidal <jmmv@NetBSD.org>
@@ -45,8 +45,8 @@ _MKCONF_VARS="WRKDIR_BASENAME MKOBJDIRS BSDSRCDIR WRKOBJDIR DISTDIR PACKAGES \
PKGSRC_COMPILER \
LIBKVER_STANDALONE_PREFIX PKG_DBDIR"
_TEMPLATE_VARS="DESTDIR ROOTSHELL COPYROOTCFG BUILD_TARGET DISTRIBDIR SETS \
SETS_X11 REAL_SRC REAL_SRC_OPTS REAL_PKGSRC \
_TEMPLATE_VARS="DESTDIR ROOTSHELL BUILD_PKG_COMP_TARGET COPYROOTCFG DISTRIBDIR \
SETS SETS_X11 REAL_SRC REAL_SRC_OPTS REAL_PKGSRC \
REAL_PKGSRC_OPTS REAL_DISTFILES REAL_DISTFILES_OPTS \
REAL_PACKAGES REAL_PACKAGES_OPTS REAL_PKGVULNDIR \
NETBSD_RELEASE MAKEROOT_HOOKS MOUNT_HOOKS UMOUNT_HOOKS \
@@ -105,7 +105,7 @@ env_setdefaults()
: ${ROOTSHELL:=/bin/ksh}
: ${COPYROOTCFG:=no}
: ${AUTO_TARGET:=package}
: ${BUILD_TARGET:=package}
: ${BUILD_PKG_COMP_TARGET:=package}
: ${DISTRIBDIR:=/var/pub/NetBSD}
: ${SETS:=base.tgz comp.tgz etc.tgz kern-GENERIC.tgz text.tgz}
: ${SETS_X11:=xbase.tgz xcomp.tgz xetc.tgz xfont.tgz xserver.tgz}
@@ -621,10 +621,10 @@ makeroot_libkver()
local prefix script statfile
if [ "$NETBSD_RELEASE" != "no" ]; then
_BUILD_TARGET="$BUILD_TARGET"
BUILD_TARGET="standalone-install"
_BUILD_PKG_COMP_TARGET="$BUILD_PKG_COMP_TARGET"
BUILD_PKG_COMP_TARGET="standalone-install"
build_and_install pkgtools/libkver
BUILD_TARGET="$_BUILD_TARGET"
BUILD_PKG_COMP_TARGET="$_BUILD_PKG_COMP_TARGET"
echo "LD_PRELOAD=${LIBKVER_STANDALONE_PREFIX}/lib/libkver.so; export LD_PRELOAD" >> $DESTDIR/etc/shrc
echo "setenv LD_PRELOAD ${LIBKVER_STANDALONE_PREFIX}/lib/libkver.so" >> $DESTDIR/etc/csh.login
echo "setenv LD_PRELOAD ${LIBKVER_STANDALONE_PREFIX}/lib/libkver.so" >> $DESTDIR/etc/csh.cshrc
@@ -678,7 +678,7 @@ pkg_auto()
fi
checkroot
_BUILD_RESUME=${rfile} BUILD_TARGET=${target} pkg_build ${pkgs}
_BUILD_RESUME=${rfile} BUILD_PKG_COMP_TARGET=${target} pkg_build ${pkgs}
pkg_removeroot
}
@@ -734,7 +734,7 @@ pkg_build()
init_script $script
cat >> $script <<EOF
cd /usr/pkgsrc/$p
make $BUILD_TARGET
make $BUILD_PKG_COMP_TARGET
if [ \$? != 0 ]; then
touch /pkg_comp/tmp/`basename $statfile`
fi

View File

@@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.10 2015/06/12 10:50:56 wiz Exp $
# $NetBSD: Makefile,v 1.11 2016/07/09 06:38:48 wiz Exp $
PKGNAME= pkg_distinst-0.02
PKGREVISION= 4
PKGREVISION= 5
CATEGORIES= pkgtools
MAINTAINER= pkgsrc-users@NetBSD.org

View File

@@ -1,8 +1,8 @@
# $NetBSD: Makefile,v 1.40 2015/07/04 16:18:39 joerg Exp $
# $NetBSD: Makefile,v 1.42 2016/07/09 06:38:48 wiz Exp $
#
PKGNAME= pkg_filecheck-0.4
PKGREVISION= 4
PKGREVISION= 6
CATEGORIES= pkgtools devel
MAINTAINER= pkgsrc-users@NetBSD.org
@@ -14,6 +14,9 @@ WRKSRC= ${WRKDIR}
USE_TOOLS+= perl:run
USE_FEATURES= fts_open
USE_FEATURES+= nbcompat
NBCOMPAT_CONFIGURE_ARGS+= --enable-db
FILES_SUBST+= PKG_DBDIR=${PKG_DBDIR:Q}
CONF_FILES= ${PREFIX}/share/examples/pkg_filecheck/pkg_filecheck.conf \
${PKG_SYSCONFDIR}/pkg_filecheck.conf
@@ -50,6 +53,6 @@ do-install:
${INSTALL_DATA} ${WRKSRC}/pkg_filecheck.conf \
${DESTDIR}${PREFIX}/share/examples/pkg_filecheck/pkg_filecheck.conf
.include "../../mk/bdb.buildlink3.mk"
# Must use the same libdb as pkg_install, which means the nbcompat one.
#.include "../../mk/bdb.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

View File

@@ -1,5 +1,5 @@
/*
$NetBSD: pkg_filecheck.c,v 1.6 2007/09/08 21:57:59 jlam Exp $
$NetBSD: pkg_filecheck.c,v 1.7 2016/06/11 21:26:19 dholland Exp $
pkg_filecheck.c -- check for files not owned by any package
Copyright (C) 2001 Dieter Baron
@@ -32,7 +32,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <db_185.h>
#include <nbcompat/db.h>
#include <errno.h>
#include <fcntl.h>
#include <fts.h>

View File

@@ -1,4 +1,4 @@
.\" $NetBSD: pkg_filecheck.conf.5,v 1.1.1.1 2003/07/13 16:15:34 wiz Exp $
.\" $NetBSD: pkg_filecheck.conf.5,v 1.2 2016/06/11 21:34:54 dholland Exp $
.\"
.\" Copyright (c) 2003 Thomas Klausner
.\" All rights reserved.
@@ -24,7 +24,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd July 13, 2003
.Dd June 11, 2016
.Dt PKG_FILECHECK.CONF 5
.Os
.Sh NAME
@@ -72,4 +72,5 @@ are ignored.
only allows filenames, not paths, as
.Sy db
arguments.
.Pp
It is not possible to ignore single files, only whole subtrees.

View File

@@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.211 2015/09/07 09:06:04 jperkin Exp $
# $NetBSD: Makefile,v 1.218 2016/06/21 12:23:01 joerg Exp $
# Notes to package maintainers:
#
@@ -7,6 +7,7 @@
# change in the pkg_* tools that pkgsrc relies on for proper operation.
PKGNAME= pkg_install-${VERSION}
PKGREVISION= 1
CATEGORIES= pkgtools
MAINTAINER= agc@NetBSD.org
@@ -76,7 +77,7 @@ CPPFLAGS+= -D_FILE_OFFSET_BITS=64
CPPFLAGS+= -DDEF_UMASK=${DEF_UMASK}
MAKE_ENV+= MACHINE_ARCH=${MACHINE_ARCH}
MAKE_ENV+= PKGSRC_MACHINE_ARCH=${MACHINE_ARCH}
MAKE_ENV+= OPSYS=${OPSYS}
MAKE_ENV+= CATMAN_SECTION_SUFFIX=${CATMAN_SECTION_SUFFIX:Q}
MAKE_ENV+= MANINSTALL=${MANINSTALL:Q}
@@ -107,6 +108,7 @@ VERSION!= ${AWK} '/PKGTOOLS_VERSION/ {print $$3}' \
BUILDLINK_API_DEPENDS.libarchive+= libarchive>=2.8.0
.include "../../archivers/bzip2/builtin.mk"
.include "../../archivers/xz/builtin.mk"
.include "../../archivers/libarchive/builtin.mk"
.include "../../devel/zlib/builtin.mk"
.include "../../security/openssl/builtin.mk"
@@ -145,7 +147,14 @@ LDFLAGS+= -L${WRKDIR}/libarchive/.libs
# Until we support pkgsrc openssl at bootstrap time, disable it completely
# if asked to avoid the builtin.
. if empty(USE_BUILTIN.openssl:M[Yy][Ee][Ss])
LIBARCHIVE_CONFIGURE_ARGS= --without-openssl
LIBARCHIVE_CONFIGURE_ARGS+= --without-openssl
. endif
# Only use XZ if we actually have builtin support for it. Some systems
# install the header, but without usable library or prefer to not use
# the system version, so give them some control.
. if empty(USE_BUILTIN.xz:M[Yy][Ee][Ss])
LIBARCHIVE_CONFIGURE_ARGS+= --without-lzma
. endif
LIBARCHIVE_LIBS= ${SED} -n -e 's/^Libs.private://p' \
@@ -157,20 +166,14 @@ CONFIG_GUESS_OVERRIDE+= ${WRKDIR}/libarchive/build/autoconf/config.guess \
CONFIG_SUB_OVERRIDE+= ${WRKDIR}/libarchive/build/autoconf/config.sub \
${WRKSRC}/config.sub
. if ${OPSYS} == "Cygwin"
CPPFLAGS+= -DLIBARCHIVE_STATIC
. endif
CPPFLAGS.Cygwin+= -DLIBARCHIVE_STATIC
. if ${OPSYS} == "Darwin"
# Make sure that the linker used our static library instead of the
# (outdated) dynamic library "/usr/lib/libarchive.dylib".
LDFLAGS+= -Wl,-search_paths_first
. endif
LDFLAGS.Darwin+= -Wl,-search_paths_first
. if ${OPSYS} == "SunOS"
# workaround for pkg/45491
CONFIGURE_ENV+= ac_cv_header_ext2fs_ext2_fs_h=no
. endif
CONFIGURE_ENV.SunOS+= ac_cv_header_ext2fs_ext2_fs_h=no
# Hack to make sure that the libarchive version is replaced
pre-configure: config-guess-override config-sub-override
@@ -210,6 +213,7 @@ pre-configure:
${CONFIG_SHELL} ${CONFIG_SHELL_FLAGS} ./configure \
--disable-bsdcpio --disable-bsdtar --disable-shared \
--disable-dependency-tracking --without-expat \
--disable-maintainer-mode \
--without-iconv --without-lzo2 --without-nettle \
--without-xml2 \
${LIBARCHIVE_CONFIGURE_ARGS}

View File

@@ -1,11 +1,11 @@
# $NetBSD: Makefile.in,v 1.10 2013/09/11 14:39:21 wiz Exp $
# $NetBSD: Makefile.in,v 1.12 2016/06/30 17:42:04 wiz Exp $
BOOTSTRAP= @bootstrap@
.if empty(BOOTSTRAP)
SUBDIRS= lib add admin create delete info
.else
SUBDIRS= lib admin create info
SUBDIRS= lib add admin create info
.endif
all:
@@ -22,4 +22,3 @@ distclean: clean
rm -f config.log config.status configure.lineno
rm -f Makefile */Makefile
rm -f lib/config.h lib/pkg_install.conf.5 lib/pkg_install.conf.cat
rm -f bpm/bpm.sh

View File

@@ -1,4 +1,4 @@
# $NetBSD: Makefile.in,v 1.31 2015/09/07 09:06:04 jperkin Exp $
# $NetBSD: Makefile.in,v 1.33 2015/12/27 12:36:42 joerg Exp $
srcdir= @srcdir@
@@ -14,17 +14,24 @@ cat1dir= $(mandir)/cat1
CC= @CC@
CCLD= $(CC)
CPPFLAGS= @CPPFLAGS@ -I. -I$(srcdir) -I../lib
DEFS= @DEFS@ -DOPSYS_NAME=\"$(OPSYS)\" -DMACHINE_ARCH=\"$(MACHINE_ARCH)\" -DBINDIR=\"$(sbindir)\"
DEFS= @DEFS@ -DOPSYS_NAME=\"$(OPSYS)\" -DPKGSRC_MACHINE_ARCH=\"$(PKGSRC_MACHINE_ARCH)\" -DBINDIR=\"$(sbindir)\"
CFLAGS= @CFLAGS@
LDFLAGS= @LDFLAGS@ -L../lib
BOOTSTRAP= @bootstrap@
SSL_SUPPORT= @ssl_support@
.if empty(BOOTSTRAP)
LIBS= -linstall -lnetpgpverify -larchive -lbz2 -lz -lfetch
.if !empty(SSL_SUPPORT)
LIBS+= -lssl -lcrypto
CPPFLAGS+= -DHAVE_SSL
.endif
LIBS+= @LIBS@
.else
LIBS= -linstall ${STATIC_LIBARCHIVE} @LIBS@
CPPFLAGS+= -DBOOTSTRAP
.endif
INSTALL= @INSTALL@

View File

@@ -1,4 +1,4 @@
/* $NetBSD: main.c,v 1.30 2015/07/20 13:59:44 khorben Exp $ */
/* $NetBSD: main.c,v 1.32 2015/12/27 12:36:42 joerg Exp $ */
#if HAVE_CONFIG_H
#include "config.h"
@@ -7,7 +7,7 @@
#if HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
__RCSID("$NetBSD: main.c,v 1.30 2015/07/20 13:59:44 khorben Exp $");
__RCSID("$NetBSD: main.c,v 1.32 2015/12/27 12:36:42 joerg Exp $");
/*
*
@@ -33,9 +33,6 @@ __RCSID("$NetBSD: main.c,v 1.30 2015/07/20 13:59:44 khorben Exp $");
#if HAVE_ERR_H
#include <err.h>
#endif
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#include "lib.h"
#include "add.h"
@@ -162,7 +159,10 @@ main(int argc, char **argv)
free(pkgdbdir);
}
#ifndef BOOTSTRAP
process_pkg_path();
#endif
TAILQ_INIT(&pkgs);
if (argc == 0) {
@@ -171,6 +171,7 @@ main(int argc, char **argv)
usage();
}
#ifndef BOOTSTRAP
if (strcasecmp(do_license_check, "no") == 0)
LicenseCheck = 0;
else if (strcasecmp(do_license_check, "yes") == 0)
@@ -183,6 +184,7 @@ main(int argc, char **argv)
if (LicenseCheck)
load_license_lists();
#endif
/* Get all the remaining package names, if any */
for (; argc > 0; --argc, ++argv) {

View File

@@ -1,4 +1,4 @@
/* $NetBSD: perform.c,v 1.106 2014/12/30 15:13:20 wiz Exp $ */
/* $NetBSD: perform.c,v 1.108 2015/12/27 12:36:42 joerg Exp $ */
#if HAVE_CONFIG_H
#include "config.h"
#endif
@@ -6,7 +6,7 @@
#if HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
__RCSID("$NetBSD: perform.c,v 1.106 2014/12/30 15:13:20 wiz Exp $");
__RCSID("$NetBSD: perform.c,v 1.108 2015/12/27 12:36:42 joerg Exp $");
/*-
* Copyright (c) 2003 Grant Beattie <grant@NetBSD.org>
@@ -907,7 +907,7 @@ check_platform(struct pkg_task *pkg)
if (OverrideMachine != NULL)
effective_arch = OverrideMachine;
else
effective_arch = MACHINE_ARCH;
effective_arch = PKGSRC_MACHINE_ARCH;
/* If either the OS or arch are different, bomb */
if (strcmp(OPSYS_NAME, pkg->buildinfo[BI_OPSYS]) ||
@@ -1246,6 +1246,9 @@ static int check_input(const char *line, size_t len)
static int
check_signature(struct pkg_task *pkg, int invalid_sig)
{
#ifdef BOOTSTRAP
return 0;
#else
char *line;
size_t len;
@@ -1282,11 +1285,15 @@ check_signature(struct pkg_task *pkg, int invalid_sig)
}
warnx("Unknown value of configuration variable VERIFIED_INSTALLATION");
return 1;
#endif
}
static int
check_vulnerable(struct pkg_task *pkg)
{
#ifdef BOOTSTRAP
return 0;
#else
static struct pkg_vulnerabilities *pv;
int require_check;
char *line;
@@ -1325,11 +1332,15 @@ check_vulnerable(struct pkg_task *pkg)
return 1;
}
return 0;
#endif
}
static int
check_license(struct pkg_task *pkg)
{
#ifdef BOOTSTRAP
return 0;
#else
if (LicenseCheck == 0)
return 0;
@@ -1353,6 +1364,7 @@ check_license(struct pkg_task *pkg)
warnx("Invalid LICENSE for package `%s'", pkg->pkgname);
return 1;
}
#endif
}
/*
@@ -1361,7 +1373,9 @@ check_license(struct pkg_task *pkg)
static int
pkg_do(const char *pkgpath, int mark_automatic, int top_level)
{
#ifndef BOOTSTRAP
char *archive_name;
#endif
int status, invalid_sig;
struct pkg_task *pkg;
@@ -1369,6 +1383,16 @@ pkg_do(const char *pkgpath, int mark_automatic, int top_level)
status = -1;
#ifdef BOOTSTRAP
pkg->archive = archive_read_new();
archive_read_support_compression_all(pkg->archive);
archive_read_support_format_all(pkg->archive);
if (archive_read_open_filename(pkg->archive, pkgpath, 1024)) {
warnx("no pkg found for '%s', sorry.", pkgpath);
archive_read_free(pkg->archive);
goto clean_find_archive;
}
#else
pkg->archive = find_archive(pkgpath, top_level, &archive_name);
if (pkg->archive == NULL) {
warnx("no pkg found for '%s', sorry.", pkgpath);
@@ -1378,6 +1402,7 @@ pkg_do(const char *pkgpath, int mark_automatic, int top_level)
invalid_sig = pkg_verify_signature(archive_name, &pkg->archive, &pkg->entry,
&pkg->pkgname);
free(archive_name);
#endif
if (pkg->archive == NULL)
goto clean_memory;

View File

@@ -1,4 +1,4 @@
# $NetBSD: Makefile.in,v 1.29 2015/09/07 09:06:05 jperkin Exp $
# $NetBSD: Makefile.in,v 1.30 2015/12/27 12:18:20 joerg Exp $
srcdir= @srcdir@
@@ -27,19 +27,20 @@ INSTALL= @INSTALL@
PROG= pkg_admin
SCRIPTS= audit-packages download-vulnerability-list
CPPFLAGS= @CPPFLAGS@ -I. -I$(srcdir) -I../lib
.if empty(BOOTSTRAP)
LIBS= -linstall -lnetpgpverify -larchive -lbz2 -lz -lfetch
.if !empty(SSL_SUPPORT)
LIBS+= -lssl -lcrypto
CFLAGS+= -DHAVE_SSL
CPPFLAGS+= -DHAVE_SSL
.endif
LIBS+= @LIBS@
OBJS= audit.o check.o main.o
CPPFLAGS= @CPPFLAGS@ -I. -I$(srcdir) -I../lib
.else
LIBS= -linstall @LIBS@
OBJS= check.o main.o
CPPFLAGS= @CPPFLAGS@ -I. -I$(srcdir) -I../lib -DBOOTSTRAP
CPPFLAGS+= -DBOOTSTRAP
.endif
all: $(PROG) $(SCRIPTS)

View File

@@ -1,114 +0,0 @@
.\" $NetBSD: bpm.1,v 1.8 2013/07/20 21:50:53 wiz Exp $ */
.\"
.\" Copyright (c) 2003,2009 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Alistair Crooks (agc@NetBSD.org)
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd August 3, 2007
.Dt BPM 1
.Os
.Sh NAME
.Nm bpm
.Nd menu-based binary package manager
.Sh SYNOPSIS
.Nm
.Op Fl hnVv
.Op Fl b Ar baseURL
.Op Fl m Ar machine
.Op Fl r Ar release
.Op Fl w Ar seconds
.Sh DESCRIPTION
The
.Nm
command is used to locate and install binary packages from any
reachable URL.
.Pp
The following command-line options are supported:
.Bl -tag -width indent
.It Fl b Ar baseURL
Specify a base URL from which to download binary packages.
The default URL is
.Pa ftp://ftp.NetBSD.org/pub/pkgsrc/packages .
.It Fl h
Print a help message and then exit.
.It Fl m Ar machine
Use
.Ar machine
as the machine architecture to be used, instead of that returned by
.Xr uname 1 .
.It Fl n
Don't actually execute the commands to add the package.
.It Fl r Ar release
Use
.Ar release
as the operating system release to be used, instead of that returned by
.Xr uname 1 .
.It Fl V
Print version number and exit.
.It Fl v
Turn on verbose output.
.It Fl w Ar seconds
The number of
.Ar seconds
to wait after displaying an error message and returning to
normal menu operations.
.El
.Pp
.Nm
provides a menu-based binary package manager for
.Nx .
.Nm
first connects to the URL using
.Xr ftp 1 ,
and displays a list of categories for which binary packages exist.
If no categories are displayed, it could
be that the machine architecture or operating system release string
have been wrongly interpreted, and that it will be necessary to override
this values by means of the command line options.
Within a category, a list of packages will be displayed, and by selecting
one using the number assigned to it, the package will be downloaded
automatically, and installed, using the
.Xr pkg_add 1
utility.
It is also possible to change the category currently being examined,
and to quit from the utility, simply by selecting the appropriate choices
on the menu.
.Sh ENVIRONMENT
The environment variables which govern the behavior of
.Xr ftp 1
and
.Xr pkg_add 1
are valid for
.Nm .
.Sh SEE ALSO
.Xr ftp 1 ,
.Xr pkg_add 1 ,
.Xr uname 1
.Sh AUTHORS
The
.Nm
utility was written by
.An Alistair Crooks Aq Mt agc@NetBSD.org .

View File

@@ -1,220 +0,0 @@
#! /bin/sh
#
# $NetBSD: bpm.sh.in,v 1.5 2012/02/21 18:32:14 wiz Exp $
#
# Copyright (c) 2003,2009 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
# by Alistair Crooks (agc@NetBSD.org)
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
die()
{
echo >&2 "$@"
exit 1
}
check_prog()
{
_var="$1"; _name="$2"
eval _tmp=\"\$$_var\"
if [ "x$_tmp" != "x" ]; then
# Variable is already set (by the user, for example)
return 0
fi
for _d in `echo $PATH | tr ':' ' '`; do
if [ -x "$_d/$_name" ]; then
# Program found
eval $_var=\""$_d/$_name"\"
return 1
fi
done
die "$_name not found in path."
}
check_prog awkprog awk
check_prog echoprog echo
check_prog ftpprog ftp
check_prog idprog id
check_prog moreprog more
check_prog pkg_addprog pkg_add
check_prog rmprog rm
check_prog sedprog sed
check_prog suprog su
check_prog unameprog uname
# print version and exit
version() {
$pkg_addprog -V
exit 0
}
# temporary files
tmpcategories=/tmp/categories.$$
tmppackages=/tmp/packages.$$
# some base parameters
base=ftp://ftp.NetBSD.org/pub/pkgsrc/packages
release=`${unameprog} -r | ${sedprog} -e 's/_STABLE//'`
machine=`${unameprog} -m`
sleepsecs=1
doit=""
while [ $# -gt 0 ]; do
case $1 in
-V) version ;;
-b) base=$2; shift ;;
-h) ${echoprog} "$0 [-b BaseURL] [-h] [-m machine] [-n] [-r release] [-v] [-w secs]"; exit 0;;
-m) machine=$2; shift ;;
-n) doit=":" ;;
-r) release=$2; shift ;;
-v) set -x ;;
-w) sleepsecs=$2; shift ;;
*) break ;;
esac
shift
done
category=""
while true; do
# if we don't have a packages file, then we need to choose a category
case "$category" in
"") # get possible categories
if [ ! -f $tmpcategories ]; then
${echoprog} "Downloading package categories from ${base}..."
${echoprog} "** QUIT" > $tmpcategories
${echoprog} ls | ${ftpprog} ${base}/${release}/${machine}/ 2>/dev/null | \
${awkprog} 'NF == 9 { if ($9 != "All") print $9 }' >> $tmpcategories
fi
# check for bad release numbering
# - it usually shows with 0 categories being displayed
${awkprog} 'END { if (NR == 1) { print "\n\n\n*** No categories found - is the OS release set properly? ***\n\n\n" } }' < $tmpcategories
# display possible categories
${awkprog} '{ print NR ". " $0 }' < $tmpcategories | ${moreprog}
# read a category number from the user
${echoprog} -n "Please type the category number: "
read choice
# validate user's choice
case "$choice" in
0|1) ${rmprog} -f $tmpcategories $tmppackages; exit 0 ;;
[2-9]|[0-9]*) category=`${awkprog} 'NR == '$choice' { print }' < $tmpcategories` ;;
*) category="" ;;
esac
case "$category" in
"") ${echoprog} "No such category \"$choice\""
sleep $sleepsecs
continue
;;
esac
# get possible packages
${echoprog} ""
${echoprog} "Downloading package names from ${base}/${category}..."
${echoprog} "** QUIT" > $tmppackages
${echoprog} "** Change category" >> $tmppackages
${echoprog} ls | ${ftpprog} ${base}/${release}/${machine}/${category}/ 2>/dev/null \
| ${awkprog} 'NF == 11 { print $9 }' >> $tmppackages
;;
esac
# display possible packages
${awkprog} '{ print NR ". " $0 }' < $tmppackages | ${moreprog}
# read a package number from the user
${echoprog} -n "Please type the package number: "
read choice
# validate user's choice
case "$choice" in
1) ${rmprog} -f $tmppackages $tmpcategories; exit 0 ;;
2) category=""; continue ;; # no package to install - choose new category
[3-9]|[0-9]*) package=`${awkprog} 'NR == '$choice' { print }' < $tmppackages` ;;
*) package="" ;;
esac
case "$package" in
"") ${echoprog} "No such package \"$choice\""
sleep $sleepsecs
continue
;;
esac
# check it's not already installed
pkgbase=`${echoprog} ${package} | ${sedprog} -e 's|-[0-9].*||'`
installed=`pkg_info -e $pkgbase`
case "$installed" in
"") ;;
*) ${echoprog} "$package selected, but $installed already installed"
sleep $sleepsecs
continue
;;
esac
# Tell people what we're doing
${echoprog} ""
${echoprog} "Adding package ${base}/${release}/${machine}/${category}/${package}"
cmd="env PKG_PATH=${base}/${release}/${machine}/All ${pkg_addprog} ${package}"
# check if we need to become root for this
if [ `${idprog} -u` != 0 ]; then
${echoprog} "Becoming root@`/bin/hostname` to add a binary package"
${echoprog} -n "`${echoprog} ${suprog} | $awkprog '{ print $1 }'` "
$doit ${suprog} root -c "$cmd"
success=$?
else
$doit $cmd
success=$?
fi
# give feedback after adding the package
case $success in
0) ${echoprog} "$package successfully installed" ;;
*) ${echoprog} "Problems when installing $package - please try again" ;;
esac
${echoprog} ""
${echoprog} -n "[Q]uit, [C]hange category, [I]nstall another package: "
read choice
case "$choice" in
[Qq]) break ;;
[Cc]) category="" ;;
[Ii]) ;;
esac
done
${rmprog} -f $tmpcategories $tmppackages
exit 0

View File

@@ -4798,7 +4798,7 @@ fi
done
for ac_header in assert.h ctype.h dirent.h err.h errno.h fnctl.h \
for ac_header in assert.h ctype.h dirent.h err.h errno.h fcntl.h \
fnmatch.h glob.h grp.h inttypes.h limits.h pwd.h signal.h \
stdarg.h stdio.h stdlib.h string.h time.h unistd.h vis.h
do :
@@ -4813,9 +4813,8 @@ fi
done
for ac_header in sys/cdefs.h sys/file.h sys/ioctl.h sys/param.h \
sys/queue.h sys/stat.h sys/time.h sys/types.h sys/utsname.h \
sys/wait.h
for ac_header in sys/cdefs.h sys/file.h sys/ioctl.h sys/queue.h \
sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -5282,7 +5281,7 @@ SYSCONFDIR="$sysconfdir"
PKG_DBDIR="$pkgdbdir"
ac_config_files="$ac_config_files Makefile add/Makefile admin/Makefile bpm/bpm.sh create/Makefile delete/Makefile info/Makefile lib/Makefile lib/pkg_install.conf.5 lib/pkg_install.conf.cat"
ac_config_files="$ac_config_files Makefile add/Makefile admin/Makefile create/Makefile delete/Makefile info/Makefile lib/Makefile lib/pkg_install.conf.5 lib/pkg_install.conf.cat"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -5978,7 +5977,6 @@ do
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"add/Makefile") CONFIG_FILES="$CONFIG_FILES add/Makefile" ;;
"admin/Makefile") CONFIG_FILES="$CONFIG_FILES admin/Makefile" ;;
"bpm/bpm.sh") CONFIG_FILES="$CONFIG_FILES bpm/bpm.sh" ;;
"create/Makefile") CONFIG_FILES="$CONFIG_FILES create/Makefile" ;;
"delete/Makefile") CONFIG_FILES="$CONFIG_FILES delete/Makefile" ;;
"info/Makefile") CONFIG_FILES="$CONFIG_FILES info/Makefile" ;;

View File

@@ -1,4 +1,4 @@
dnl $NetBSD: configure.ac,v 1.39 2015/01/22 18:15:39 pho Exp $
dnl $NetBSD: configure.ac,v 1.42 2016/06/30 17:42:04 wiz Exp $
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
AC_INIT([pkg_install], [20090911], [joerg@NetBSD.org])
@@ -64,12 +64,11 @@ AC_CHECK_LIB(db, __db185_open, , AC_SEARCH_LIBS(dbopen, [db db1]))
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([assert.h ctype.h dirent.h err.h errno.h fnctl.h \
AC_CHECK_HEADERS([assert.h ctype.h dirent.h err.h errno.h fcntl.h \
fnmatch.h glob.h grp.h inttypes.h limits.h pwd.h signal.h \
stdarg.h stdio.h stdlib.h string.h time.h unistd.h vis.h])
AC_CHECK_HEADERS([sys/cdefs.h sys/file.h sys/ioctl.h sys/param.h \
sys/queue.h sys/stat.h sys/time.h sys/types.h sys/utsname.h \
sys/wait.h])
AC_CHECK_HEADERS([sys/cdefs.h sys/file.h sys/ioctl.h sys/queue.h \
sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h])
# Checks for library functions.
AC_CHECK_FUNCS([vfork])
@@ -173,7 +172,7 @@ AC_SUBST(SYSCONFDIR)
PKG_DBDIR="$pkgdbdir"
AC_SUBST(PKG_DBDIR)
AC_CONFIG_FILES([Makefile add/Makefile admin/Makefile bpm/bpm.sh \
AC_CONFIG_FILES([Makefile add/Makefile admin/Makefile \
create/Makefile delete/Makefile info/Makefile \
lib/Makefile lib/pkg_install.conf.5 lib/pkg_install.conf.cat])
AC_OUTPUT

Some files were not shown because too many files have changed in this diff Show More