Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
#! /bin/sh
|
|
|
|
#
|
2006-01-28 22:01:23 +03:00
|
|
|
# $NetBSD: regpkgset,v 1.8 2006/01/28 19:01:23 apb Exp $
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
#
|
|
|
|
# Copyright (c) 2003 Alistair G. Crooks. 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. All advertising materials mentioning features or use of this software
|
|
|
|
# must display the following acknowledgement:
|
|
|
|
# This product includes software developed by Alistair G. 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.
|
|
|
|
#
|
|
|
|
|
2006-01-04 17:18:00 +03:00
|
|
|
# Usage: regpkgset [options] set
|
|
|
|
#
|
|
|
|
# Options:
|
|
|
|
# -q Quiet.
|
|
|
|
# -v Verbose.
|
|
|
|
# -f Force.
|
|
|
|
# -m Ignore errors from missing files.
|
|
|
|
# -u Update.
|
|
|
|
# -c Cache some information in ${BUILD_INFO_CACHE}.
|
|
|
|
# -d destdir Sets DESTDIR.
|
|
|
|
# -t binpkgdir Create a binary package (in *.tgz format) in the
|
|
|
|
# specified directory. Without this option, a binary
|
|
|
|
# package is not created.
|
|
|
|
# -M metalog Use the specified metalog file to override file
|
|
|
|
# or directory attributes when creating a binary package.
|
|
|
|
# -N etcdir Use the specified directory for passwd and group files.
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
|
2006-01-04 17:18:00 +03:00
|
|
|
prog="${0##*/}"
|
|
|
|
toppid=$$
|
2006-01-03 21:31:09 +03:00
|
|
|
rundir="$(dirname "$0")" # ${0%/*} isn't good enough when there's no "/"
|
2006-01-04 17:18:00 +03:00
|
|
|
. "${rundir}/sets.subr"
|
|
|
|
|
2006-01-28 22:01:23 +03:00
|
|
|
: ${TARGET_ENDIANNESS:="$(arch_to_endian "${MACHINE_ARCH}")"}
|
2006-01-08 13:25:33 +03:00
|
|
|
export TARGET_ENDIANNESS
|
|
|
|
|
2006-01-04 17:18:00 +03:00
|
|
|
bomb()
|
|
|
|
{
|
|
|
|
kill ${toppid} # in case we were invoked from a subshell
|
|
|
|
exit 1
|
|
|
|
}
|
2004-07-23 19:11:26 +04:00
|
|
|
|
2006-01-04 17:18:00 +03:00
|
|
|
# A literal newline
|
|
|
|
nl='
|
|
|
|
'
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
|
2006-01-04 17:18:00 +03:00
|
|
|
#
|
|
|
|
# cleanup() deletes temporary files.
|
|
|
|
#
|
|
|
|
es=0
|
2006-01-28 22:01:23 +03:00
|
|
|
cleanup()
|
2006-01-04 17:18:00 +03:00
|
|
|
{
|
|
|
|
trap - 0
|
|
|
|
[ x"${BUILD_INFO_CACHE}" != x ] && rm -f "${BUILD_INFO_CACHE}"
|
|
|
|
exit ${es}
|
|
|
|
}
|
|
|
|
trap 'es=128; cleanup' 1 2 3 13 15 # HUP INT QUIT PIPE TERM
|
|
|
|
trap 'es=$?; cleanup' 0 # EXIT
|
|
|
|
|
|
|
|
#
|
|
|
|
# Parse command line args.
|
|
|
|
#
|
|
|
|
verbose=false
|
|
|
|
quiet=false
|
|
|
|
force=false
|
|
|
|
allowmissing=false
|
|
|
|
update=false
|
|
|
|
cache=false
|
|
|
|
pkgdir=""
|
|
|
|
metalog=""
|
|
|
|
etcdir=""
|
|
|
|
all_options=""
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
while [ $# -gt 1 ]; do
|
2006-01-04 17:18:00 +03:00
|
|
|
# XXX: ${all_options} doesn't correctly handle args with
|
|
|
|
# embedded shell special characters.
|
2006-01-03 21:31:09 +03:00
|
|
|
case "$1" in
|
2006-01-28 22:01:23 +03:00
|
|
|
-q) quiet=true; verbose=false ;;
|
|
|
|
-v) verbose=true; quiet=false ;;
|
2006-01-04 17:18:00 +03:00
|
|
|
-f) force=true ;;
|
|
|
|
-m) allowmissing=true ;;
|
|
|
|
-u) update=true ;;
|
|
|
|
-c) cache=true ;;
|
2006-01-28 22:01:23 +03:00
|
|
|
-d) DESTDIR="$2"; all_options="${all_options} $1"; shift ;;
|
2006-01-04 17:18:00 +03:00
|
|
|
-d*) DESTDIR="${1#-?}" ;;
|
2006-01-28 22:01:23 +03:00
|
|
|
-t) pkgdir="$2"; all_options="${all_options} $1"; shift ;;
|
2006-01-04 17:18:00 +03:00
|
|
|
-t*) pkgdir="${1#-?}" ;;
|
2006-01-28 22:01:23 +03:00
|
|
|
-M) metalog="$2"; all_options="${all_options} $1"; shift ;;
|
2006-01-04 17:18:00 +03:00
|
|
|
-M*) metalog="${1#-?}" ;;
|
2006-01-28 22:01:23 +03:00
|
|
|
-N) etcdir="$2"; all_options="${all_options} $1"; shift ;;
|
2006-01-04 17:18:00 +03:00
|
|
|
-N*) etcdir="${1#-?}" ;;
|
2006-01-28 22:01:23 +03:00
|
|
|
-*) echo "Usage: regpkgset [options] set ..."; bomb ;;
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
*) break ;;
|
|
|
|
esac
|
2006-01-04 17:18:00 +03:00
|
|
|
all_options="${all_options} $1"
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
shift
|
|
|
|
done
|
2006-01-04 17:18:00 +03:00
|
|
|
export DESTDIR
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
|
|
|
|
if [ $# -lt 1 ]; then
|
2006-01-04 17:18:00 +03:00
|
|
|
echo "Usage: regpkgset [options] set ..."
|
|
|
|
bomb
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
fi
|
|
|
|
|
2006-01-03 21:31:09 +03:00
|
|
|
case "$1" in
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
all) list="base comp etc games man misc text" ;;
|
2006-01-03 21:31:09 +03:00
|
|
|
*) list="$*" ;;
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
esac
|
|
|
|
|
2006-01-28 22:01:23 +03:00
|
|
|
if ${cache}; then
|
2006-01-04 17:18:00 +03:00
|
|
|
BUILD_INFO_CACHE="$(${MKTEMP} "/var/tmp/${prog}-BUILD_INFO.XXXXXX")"
|
2004-01-16 13:05:10 +03:00
|
|
|
export BUILD_INFO_CACHE
|
|
|
|
{
|
2006-01-04 17:18:00 +03:00
|
|
|
# These variables describe the build
|
|
|
|
# environment, not the target.
|
2006-01-03 21:31:09 +03:00
|
|
|
echo "OPSYS=$(${UNAME} -s)"
|
|
|
|
echo "OS_VERSION=$(${UNAME} -r)"
|
2006-01-03 19:40:16 +03:00
|
|
|
${MAKE} -f- all <<EOF
|
2004-01-16 13:05:10 +03:00
|
|
|
.include <bsd.own.mk>
|
|
|
|
all:
|
|
|
|
@echo OBJECT_FMT=${OBJECT_FMT}
|
|
|
|
@echo MACHINE_ARCH=${MACHINE_ARCH}
|
|
|
|
@echo MACHINE_GNU_ARCH=${MACHINE_GNU_ARCH}
|
|
|
|
EOF
|
2006-01-04 17:18:00 +03:00
|
|
|
# XXX: what's the point of reporting _PKGTOOLS_VER
|
|
|
|
# when we roll everything by hand without using
|
|
|
|
# the pkg tools?
|
2006-01-03 21:31:09 +03:00
|
|
|
echo "_PKGTOOLS_VER=$(${PKG_CREATE} -V)"
|
|
|
|
} > "${BUILD_INFO_CACHE}"
|
2004-01-16 13:05:10 +03:00
|
|
|
fi
|
|
|
|
|
2006-01-04 17:18:00 +03:00
|
|
|
#
|
|
|
|
# For each pkgset mentioned in ${list}, get a list of all pkgs in the pkgset.
|
|
|
|
#
|
|
|
|
# Sort all the pkgs into dependency order (with prerequisite pkgs before
|
|
|
|
# pkgs that depend on them).
|
|
|
|
#
|
|
|
|
# Invoke ${rundir}/regpkg for each pkg, taking care to do it in dependency
|
|
|
|
# order. If there were any pkgs for which we failed to find dependency
|
|
|
|
# information, handle them at the end.
|
|
|
|
#
|
2006-01-28 22:01:23 +03:00
|
|
|
pkgs="$(for pkgset in ${list}; do
|
2006-01-04 17:18:00 +03:00
|
|
|
${HOST_SH} "${rundir}/listpkgs" "${pkgset}" || bomb
|
2006-01-28 22:01:23 +03:00
|
|
|
done)"
|
|
|
|
tsort_input="$(${AWK} '{print $2 " " $1}' <"${rundir}/deps" || bomb)"
|
|
|
|
tsort_output="$(echo "${tsort_input}" | ${TSORT} || bomb)"
|
|
|
|
for pkg in ${tsort_output}; do
|
2006-01-04 17:18:00 +03:00
|
|
|
case "${nl}${pkgs}${nl}" in
|
|
|
|
*"${nl}${pkg}${nl}"*)
|
|
|
|
# We want this pkg.
|
|
|
|
pkgset="${pkg%%-*}"
|
|
|
|
${verbose} && echo "${prog}: registering ${pkg}"
|
|
|
|
${HOST_SH} "${rundir}/regpkg" ${all_options} \
|
|
|
|
"${pkgset}" "${pkg}" || bomb
|
|
|
|
;;
|
|
|
|
*) # pkg is mentioned in ${tsort_output} but not in ${pkgs}.
|
|
|
|
# We do not want this pkg.
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
2006-01-28 22:01:23 +03:00
|
|
|
for pkg in ${pkgs}; do
|
2006-01-04 17:18:00 +03:00
|
|
|
case "${nl}${tsort_output}${nl}" in
|
|
|
|
*"${nl}${pkg}${nl}"*)
|
|
|
|
# pkg was in the tsort output, so it would have been
|
|
|
|
# handled above.
|
|
|
|
;;
|
|
|
|
*) # This pkg was not in the tsort output.
|
|
|
|
# This is probably an error, but process the
|
|
|
|
# pkg anyway.
|
|
|
|
echo >&2 "${prog}: WARNING: ${pkg} is not mentioned in deps file"
|
|
|
|
pkgset="${pkg%%-*}"
|
|
|
|
${verbose} && echo "${prog}: registering ${pkg}"
|
|
|
|
${HOST_SH} "${rundir}/regpkg" ${all_options} \
|
|
|
|
"${pkgset}" "${pkg}" || bomb
|
|
|
|
;;
|
|
|
|
esac
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
done
|
2004-01-16 13:05:10 +03:00
|
|
|
|
Add the comments file, which is a single file containing all the COMMENT
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Add the descrs file, which is a single file containing all the DESCR
file entries from the syspkg hierarchy, brought up to date to include some
that had been missed out.
Thanks to Jim Wise for all the work that went into the syspkg sets.
Add the attrs file, which is a single file to which can be added
attributes (like preserve).
Add a regpkg script, which allows a single system package to be
registered, based simply on its setname and syspkg name. All the
information is gleaned from the lists files by means of scripts, no
source tree is needed. The version number for the system package is
calculated automatically, based on the most recent mtime of the files
that constitute a system package.
Add a regpkgset script, to register all the system packages in a set.
The set names recognised are "all", "base", "comp", "etc", "games",
"man", "misc", "text".
2003-06-13 00:04:00 +04:00
|
|
|
exit 0
|