Date: Wed, 15 Dec 2010 20:08:29 +0000 (UTC) From: Doug Barton <dougb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r216464 - user/dougb/portmaster Message-ID: <201012152008.oBFK8TRE082240@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dougb Date: Wed Dec 15 20:08:29 2010 New Revision: 216464 URL: http://svn.freebsd.org/changeset/base/216464 Log: Play checkers with more code that needs to be moved up so that getopts() can use it Modified: user/dougb/portmaster/portmaster Modified: user/dougb/portmaster/portmaster ============================================================================== --- user/dougb/portmaster/portmaster Wed Dec 15 19:30:44 2010 (r216463) +++ user/dougb/portmaster/portmaster Wed Dec 15 20:08:29 2010 (r216464) @@ -263,6 +263,76 @@ safe_exit () { exit ${1:-0} } +pm_cd () { builtin cd $1 2>/dev/null || return 1; } +pm_cd_pd () { builtin cd $pd/$1 2>/dev/null || + fail "Cannot cd to port directory: $pd/$1"; } +pm_kill () { /bin/kill $* >/dev/null 2>/dev/null; } +pm_make () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l; + unset -v MASTER_RB_LIST; + /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); } +pm_make_b () { /usr/bin/make $PM_MAKE_ARGS BEFOREPORTMK=bpm $*; } +pm_mktemp () { /usr/bin/mktemp -t f-${PM_PARENT_PID}-$1 || + fail "mktemp for $1 failed"; } +pm_unlink () { /bin/test -e $1 && /bin/unlink $1; } + +# Superuser versions for commands that need root privileges + +pm_find_s () { $PM_SU_CMD /usr/bin/find $*; } +pm_install_s () { $PM_SU_CMD /usr/bin/install -o root -g wheel -m 644 $1 $2; } +pm_make_s () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l; + unset -v MASTER_RB_LIST; + $PM_SU_CMD /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); } +pm_mkdir_s () { $PM_SU_CMD /bin/mkdir -p $1; } +pm_pkg_delete_s () { $PM_SU_CMD /usr/sbin/pkg_delete $*; } +pm_rm_s () { $PM_SU_CMD /bin/rm $*; } +pm_rmdir_s () { $PM_SU_CMD /bin/rmdir $*; } +pm_unlink_s () { /bin/test -e $1 && $PM_SU_CMD /bin/unlink $1; } + +pm_v () { [ -n "$PM_VERBOSE" ] && echo "$*"; } +pm_sv () { [ -n "$PM_SU_VERBOSE" ] && echo "===>>> SU $*"; } + +# Do this here so we can have a reasonably good guess. +# May be modified below. +if [ "$$" -eq "$PM_PARENT_PID" ]; then + if [ -z "$pd" ]; then + if [ -z "$PORTSDIR" ]; then + [ -d /usr/ports ] && pd=/usr/ports + [ -z "$pd" ] && + pd=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORTSDIR 2>/dev/null` + else + pd=$PORTSDIR + fi + fi + if [ -n "$pd" ]; then + [ ! -r "${pd}/Mk/bsd.port.mk" ] && + fail "The ports directory ($pd) does not seem to contain a ports tree" + export pd + fi + + if [ -z "$pdb" ]; then + if [ -z "$PKG_DBDIR" ]; then + [ -d /var/db/pkg ] && pdb=/var/db/pkg + [ -z "$pdb" ] && + pdb=`pm_make -f/usr/share/mk/bsd.port.mk -V PKG_DBDIR 2>/dev/null` + else + pdb=$PKG_DBDIR + fi + if [ -z "$pdb" ]; then + if [ -d /var/db/pkg ]; then + pdb='/var/db/pkg' + else + fail 'The value of PKG_DBDIR cannot be empty' + fi + fi + fi + export pdb + + [ -z "$port_dbdir" -a -d /var/db/ports ] && port_dbdir=/var/db/ports + [ -z "$port_dbdir" ] && + port_dbdir=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORT_DBDIR 2>/dev/null` + [ -n "$port_dbdir" ] && export port_dbdir +fi + usage () { local pd pdb port_dbdir @@ -395,36 +465,53 @@ usage () { safe_exit ${1:-1} } -pm_cd () { builtin cd $1 2>/dev/null || return 1; } -pm_cd_pd () { builtin cd $pd/$1 2>/dev/null || - fail "Cannot cd to port directory: $pd/$1"; } -pm_kill () { /bin/kill $* >/dev/null 2>/dev/null; } -pm_make () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l; - unset -v MASTER_RB_LIST; - /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); } -pm_make_b () { /usr/bin/make $PM_MAKE_ARGS BEFOREPORTMK=bpm $*; } -pm_mktemp () { /usr/bin/mktemp -t f-${PM_PARENT_PID}-$1 || - fail "mktemp for $1 failed"; } -pm_unlink () { /bin/test -e $1 && /bin/unlink $1; } +globstrip () { local in ; in=${1%[*]} ; in=${in%\\} ; echo $in ; } -# Superuser versions for commands that need root privileges +# Takes a pattern as input +# Return values: +# 0 - Matched one and only one directory in $pdb +# 1 - No match +# 2 - Matched multiple directories # -# The following are used once, so they have $PM_SU_CMD in line: -# truncate, pkg_create, cp, /etc/rc.d/ldconfig, touch +find_glob_dirs () { + # Global: glob_dirs + local pattern -pm_find_s () { $PM_SU_CMD /usr/bin/find $*; } -pm_install_s () { $PM_SU_CMD /usr/bin/install -o root -g wheel -m 644 $1 $2; } -pm_make_s () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l; - unset -v MASTER_RB_LIST; - $PM_SU_CMD /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); } -pm_mkdir_s () { $PM_SU_CMD /bin/mkdir -p $1; } -pm_pkg_delete_s () { $PM_SU_CMD /usr/sbin/pkg_delete $*; } -pm_rm_s () { $PM_SU_CMD /bin/rm $*; } -pm_rmdir_s () { $PM_SU_CMD /bin/rmdir $*; } -pm_unlink_s () { /bin/test -e $1 && $PM_SU_CMD /bin/unlink $1; } + pattern=`globstrip $1` -pm_v () { [ -n "$PM_VERBOSE" ] && echo "$*"; } -pm_sv () { [ -n "$PM_SU_VERBOSE" ] && echo "===>>> SU $*"; } + glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*` + case "$glob_dirs" in + # Match a newline in multiple responses from find + *' +'*) return 2 ;; + $pdb/*) return ;; + esac + + unset glob_dirs + return 1 +} + +origin_from_pdb () { + local o + + o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && { + echo ${o#@comment ORIGIN:}; return 0; } + + case "$1" in bsdpan-*) return 3 ;; esac + + if [ -e "$pdb/$1/+IGNOREME" ]; then + if [ -n "$PM_VERBOSE" -o -n "$LIST_ORIGINS" ]; then + echo " ===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2 + echo " ===>>> $pdb/$1/+IGNOREME exists" >&2 + echo '' >&2 + fi + return 2 + else + echo " ===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2 + echo '' >&2 + fi + return 1 +} #=============== End functions we always want to have =============== #=============== Begin Command Line Option Processing =============== @@ -635,27 +722,13 @@ unset -f packages_init cross_idx test_co #=============== End Command Line Option Processing =============== -# Do this here so it can use the fancy functions above, and default values -# can be overridden in the rc files +# Update based on options chosen above if [ "$$" -eq "$PM_PARENT_PID" ]; then if [ -n "$PM_PACKAGES" -o -n "$PM_PACKAGES_BUILD" ]; then [ `/sbin/sysctl -n kern.osreldate 2>/dev/null` -lt 600400 ] && fail Package installation support requires FreeBSD 6.4 or newer fi - if [ -z "$pd" ]; then - if [ -z "$PORTSDIR" ]; then - [ -d /usr/ports ] && pd=/usr/ports - [ -z "$pd" ] && - pd=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORTSDIR 2>/dev/null` - else - pd=$PORTSDIR - fi - fi - - [ -n "$pd" ] && [ ! -r "${pd}/Mk/bsd.port.mk" ] && - fail "The ports directory ($pd) does not seem to contain a ports tree" - if [ -n "$PM_INDEX" ]; then if [ -z "$INDEXFILE" ]; then ver=`uname -r` @@ -724,23 +797,6 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then fail 'The value of PORTSDIR cannot be empty' fi fi - if [ -z "$pdb" ]; then - if [ -z "$PKG_DBDIR" ]; then - [ -d /var/db/pkg ] && pdb=/var/db/pkg - [ -z "$pdb" ] && - pdb=`pm_make -f/usr/share/mk/bsd.port.mk -V PKG_DBDIR 2>/dev/null` - else - pdb=$PKG_DBDIR - fi - if [ -z "$pdb" ]; then - if [ -d /var/db/pkg ]; then - pdb='/var/db/pkg' - else - fail 'The value of PKG_DBDIR cannot be empty' - fi - fi - fi - export pdb [ -z "$DISTDIR" -a "$PM_PACKAGES" != only -a -z "$CHECK_DEPENDS" -a \ -z "$CHECK_PORT_DBDIR" -a -z "$LIST_ORIGINS" ] && @@ -748,11 +804,6 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then [ -n "$DISTDIR" ] && { DISTDIR="${DISTDIR%/}/"; export DISTDIR; } - [ -z "$port_dbdir" -a -d /var/db/ports ] && port_dbdir=/var/db/ports - [ -z "$port_dbdir" ] && - port_dbdir=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORT_DBDIR 2>/dev/null` - [ -n "$port_dbdir" ] && export port_dbdir - if [ -n "$PM_PACKAGES_BUILD" -o -n "$PM_DEL_BUILD_ONLY" ]; then PM_BUILD_ONLY_LIST=pm_bol export PM_BUILD_ONLY_LIST @@ -778,28 +829,6 @@ iport_from_origin () { echo ${dir#$pdb/} } -origin_from_pdb () { - local o - - o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && { - echo ${o#@comment ORIGIN:}; return 0; } - - case "$1" in bsdpan-*) return 3 ;; esac - - if [ -e "$pdb/$1/+IGNOREME" ]; then - if [ -n "$PM_VERBOSE" -o -n "$LIST_ORIGINS" ]; then - echo " ===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2 - echo " ===>>> $pdb/$1/+IGNOREME exists" >&2 - echo '' >&2 - fi - return 2 - else - echo " ===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2 - echo '' >&2 - fi - return 1 -} - check_regular_file () { [ ! -L "$1" -a -f "$1" ] || fail "ERROR: $1 is not a regular file!" } @@ -1098,15 +1127,6 @@ read_distinfos_all () { [ -e "${DI_FILES}-e" ] && unlink ${DI_FILES}-e } -globstrip () { - local in - - in=${1%[*]} - in=${in%\\} - - echo $in -} - ports_by_category () { local pkg pm_v "===>>> Sorting ports by category" @@ -1136,30 +1156,6 @@ delete_empty_dist_subdirs () { find -d $DISTDIR -type d \( -empty -and ! -path \*\.zfs/\* \) -delete } -# Takes a pattern as input -# Return values: -# 0 - Matched one and only one directory in $pdb -# 1 - No match -# 2 - Matched multiple directories -# -find_glob_dirs () { - # Global: glob_dirs - local pattern - - pattern=`globstrip $1` - - glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*` - case "$glob_dirs" in - # Match a newline in multiple responses from find - *' -'*) return 2 ;; - $pdb/*) return ;; - esac - - unset glob_dirs - return 1 -} - init_packages_var () { # Global: PACKAGES
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201012152008.oBFK8TRE082240>