Add a new "-I realprefix" arg. When making syspkgs, we need to use
"-P ${DESTDIR} -I /". ("-I" chosen for similarity to pkg_create.) XXX: makeplist seems to be quite broken, in that it looks at the files and directories that are actually present in DESTDIR, whereas I thought its job was to provide an list of what *should* be there, regardless of what is *actually* there. Fixing this seems to require a change to the format of the "lists" files, so that they can unambiguously identify directories. Reviewed by agc
This commit is contained in:
parent
1983ec7bd3
commit
faa76ace30
@ -1,33 +1,47 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Print out the files in some or all lists.
|
||||
# Usage: makeplist [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname
|
||||
# Usage: makeplist [options] setname pkgname
|
||||
# options:
|
||||
# -a arch set arch (e.g, m68k, mips, powerpc)
|
||||
# -m machine set machine (e.g, amiga, i386, macppc)
|
||||
# -s setsdir directory to find sets
|
||||
# -p prefix prefix for package creation
|
||||
# -I realprefix prefix for eventual installation
|
||||
# setname pkgname set and package to build plist for
|
||||
#
|
||||
|
||||
rundir="$(dirname "$0")" # ${0%/*} isn't good enough when there's no "/"
|
||||
. "${rundir}/sets.subr"
|
||||
prefix=/
|
||||
realprefix=/
|
||||
got_realprefix=false
|
||||
|
||||
usage()
|
||||
{
|
||||
usage() {
|
||||
cat 1>&2 <<USAGE
|
||||
Usage: ${0##*/} [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname
|
||||
Usage: $0 [options] setname pkgname"
|
||||
options:"
|
||||
-a arch set arch (e.g, m68k, mips, powerpc) [${MACHINE_ARCH}]
|
||||
-m machine set machine (e.g, amiga, i386, macppc) [${MACHINE}]
|
||||
-s setsdir directory to find sets [${setsdir}]
|
||||
-p prefix prefix for created plist [${prefix}]
|
||||
-I realprefix prefix for eventual installation [${realprefix}]
|
||||
setname pkgname set and package to build plist for
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
# handle args
|
||||
while getopts a:m:p:s: ch; do
|
||||
while getopts a:I:m:p:s: ch; do
|
||||
case ${ch} in
|
||||
a)
|
||||
MACHINE_ARCH="${OPTARG}"
|
||||
MACHINE_CPU="$(arch_to_cpu "${OPTARG}")"
|
||||
;;
|
||||
I)
|
||||
realprefix=${OPTARG}
|
||||
got_realprefix=true
|
||||
;;
|
||||
m)
|
||||
MACHINE="${OPTARG}"
|
||||
;;
|
||||
@ -49,6 +63,10 @@ fi
|
||||
setname="$1"
|
||||
pkgname="$2"
|
||||
|
||||
if ! ${got_realprefix}; then
|
||||
realprefix="${prefix}"
|
||||
fi
|
||||
|
||||
filename="/tmp/makeplist.$$"
|
||||
ffilename="/tmp/makeplist.files.$$"
|
||||
dfilename="/tmp/makeplist.dirs.$$"
|
||||
@ -63,6 +81,19 @@ list_set_files "${setname}" | \
|
||||
SELECTDIRS="-prune -type d"
|
||||
SELECTNONDIRS="! -type d -print -o ( -type d -prune )"
|
||||
|
||||
#
|
||||
# XXX: The "lists" do not differentiate between directories and files.
|
||||
# But we need to differentiate between them, so we do so by checking
|
||||
# what's actually present in the file system. Files or directories that
|
||||
# are listed in the "lists" but that do not exist in the file system end
|
||||
# up not appearing in our output, and this subverts a large part of the
|
||||
# purpose of the "lists".
|
||||
#
|
||||
# XXX: Given that we have to figure out what is or is not a directory
|
||||
# without assistance from the "lists", it would be much more efficient
|
||||
# to consult the metalog instead of the file system.
|
||||
#
|
||||
|
||||
cd "${prefix}"
|
||||
#
|
||||
# Match the directories. Use find(1) to avoid repeat calls to
|
||||
@ -94,7 +125,7 @@ done > "${ffilename}"
|
||||
|
||||
cd -
|
||||
|
||||
echo "@cwd ${prefix}"
|
||||
echo "@cwd ${realprefix}"
|
||||
if [ -s "${ffilename}" ]; then
|
||||
cat "${ffilename}"
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user