Date: Sat, 1 May 2010 02:49:16 +0000 (UTC) From: Doug Barton <dougb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r207458 - user/dougb/portmaster Message-ID: <201005010249.o412nGQX055388@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dougb Date: Sat May 1 02:49:16 2010 New Revision: 207458 URL: http://svn.freebsd.org/changeset/base/207458 Log: Expand on an idea provided by mandree@ to use 'pkg_version -I' to quickly check what ports are out of date, and incorporate that check into the --index option. Feedback from users seems to indicate that this is what they expected the option did anyway, so the minor change to the feature does not seem to be a POLA violation, especially since INDEX support is still relatively new. Add the --index-first option to do what --index used to do in case anyone cares. Add a bunch more error checking for incompatible command line options. Add a new cross_idx() to handle checking the 3 --index* options and consolidate some of the old tests that were all relative to -G. We want to test the .bz2 version of INDEX to see if it's newer, and unzip it if it is. Modified: user/dougb/portmaster/portmaster Modified: user/dougb/portmaster/portmaster ============================================================================== --- user/dougb/portmaster/portmaster Sat May 1 01:56:33 2010 (r207457) +++ user/dougb/portmaster/portmaster Sat May 1 02:49:16 2010 (r207458) @@ -250,7 +250,7 @@ usage () { echo " [[[--packages|-P]|[--packages-only|-PP]] | [--packages-build]]" echo " [--packages-if-newer] [--delete-build-only] [--always-fetch]" echo " [--local-packagedir=<path>] [--delete-packages]" - echo " [--no-confirm] [--no-term-title] [--index|--index-only]" + echo " [--no-confirm] [--no-term-title] [--index|--index-first|--index-only]" echo " [-m <arguments for make>] [-x <glob pattern to exclude from building>]" echo "${0##*/} [Common flags] <full name of port directory in $pdb>" echo "${0##*/} [Common flags] <full path to $pd/foo/bar>" @@ -311,7 +311,8 @@ usage () { echo ' installed and/or updated before proceeding' echo '--no-term-title do not update the xterm title bar' echo '' - echo '--index use INDEX-[6-9] to check if a port is out of date' + echo '--index use INDEX-[6-9] exclusively to check if a port is up to date' + echo '--index-first use the INDEX for status, but double-check with the port' echo '--index-only do not try to use /usr/ports' echo '' echo '--show-work list what ports are and would be installed' @@ -409,6 +410,18 @@ e2="The --packages-build option and the esac } +cross_idx () { + local e1 + +e1='The --index, --index-first, and --index-only options are mutually exclusive' + + case "$1" in + index) [ -n "$PM_INDEX_FIRST" -o -n "$PM_INDEX_ONLY" ] && fail $e1 ;; + first) [ -n "$PM_INDEX" -o -n "$PM_INDEX_ONLY" ] && fail $e1 ;; + only) [ -n "$PM_INDEX" -o -n "$PM_INDEX_FIRST" ] && fail $e1 ;; + esac +} + for var in "$@" ; do case "$var" in -PP[A-Za-z0-9]*|-*[A-Za-z0-9]PP*) @@ -437,9 +450,11 @@ for var in "$@" ; do export PM_NO_CONFIRM ;; --no-term-title) PM_NO_TERM_TITLE=pm_no_term_title export PM_NO_TERM_TITLE ;; - --index) PM_INDEX=pm_index ; export PM_INDEX ;; + --index) cross_idx index ; PM_INDEX=pm_index ; export PM_INDEX ;; + --index-first) PM_INDEX=pm_index ; PM_INDEX_FIRST=pm_index_first + cross_idx first ; export PM_INDEX PM_INDEX_FIRST ;; --index-only) PM_INDEX=pm_index ; PM_INDEX_ONLY=pm_index_only - export PM_INDEX PM_INDEX_ONLY ;; + cross_idx only ; export PM_INDEX PM_INDEX_ONLY ;; --help) usage 0 ;; --version) version ; exit 0 ;; --clean-distfiles) CLEAN_DISTFILES=clean_distfiles ;; @@ -455,6 +470,11 @@ for var in "$@" ; do esac done +unset var + +[ -n "$PM_INDEX" -a -n "$CHECK_PORT_DBDIR" ] && + fail 'The --index* and --check-port-dbdir options are mutually exclusive' + # Do this here so it can use the fancy functions above, and default values # can be overridden in the rc files if [ "$$" -eq "$PM_PARENT_PID" ]; then @@ -484,10 +504,10 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then fi PM_INDEX="${INDEXDIR}/${INDEXFILE}" - index_time=`stat -f '%Ua' $PM_INDEX 2>/dev/null` + index_time=`stat -f '%Ua' ${PM_INDEX}.bz2 2>/dev/null` pm_sv Updating INDEX file $PM_SU_CMD $FETCHINDEX ${PM_INDEX}.bz2 ${MASTER_SITE_INDEX}${INDEXFILE}.bz2 - if [ $index_time -ne `stat -f '%Ua' $PM_INDEX 2>/dev/null` ]; then + if [ $index_time -ne `stat -f '%Ua' ${PM_INDEX}.bz2 2>/dev/null` ]; then temp_index=`pm_mktemp index` bunzip2 < ${PM_INDEX}.bz2 > $temp_index pm_install_s $temp_index $PM_INDEX @@ -495,6 +515,9 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then unset temp_index fi unset index_time + + PM_INDEX_PORTS=`pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<` + export PM_INDEX_PORTS fi if [ -z "$pd" ]; then @@ -1039,7 +1062,7 @@ while getopts 'BCDFGHKLPRabde:fghilm:nop C) DONT_PRE_CLEAN=Copt; ARGS="-C $ARGS" ;; D) DONT_SCRUB_DISTFILES=Dopt; ARGS="-D $ARGS" ;; F) FETCH_ONLY=Fopt; ARGS="-F $ARGS" ;; - G) NO_RECURSIVE_CONFIG=Gopt; unset FORCE_CONFIG; ARGS="-G $ARGS" ;; + G) NO_RECURSIVE_CONFIG=Gopt; ARGS="-G $ARGS" ;; H) HIDE_BUILD=Hopt; ARGS="-H $ARGS" ;; K) DONT_POST_CLEAN=Kopt; ARGS="-K $ARGS" ;; L) LIST_PLUS=Lopt ;; @@ -1085,7 +1108,7 @@ while getopts 'BCDFGHKLPRabde:fghilm:nop esac done shift $(( $OPTIND - 1 )) -unset -f packages_init +unset -f packages_init cross_idx [ -n "$PM_EXCL" ] && export PM_EXCL @@ -1118,13 +1141,15 @@ if [ -n "$ALWAYS_SCRUB_DISTFILES" -a -n test_command_line ALWAYS_SCRUB_DISTFILES DONT_SCRUB_DISTFILES || fail "The -d and -D options are mutually exclusive" fi -[ -n "$FETCH_ONLY" -a -n "$NO_RECURSIVE_CONFIG" ] && - unset NO_RECURSIVE_CONFIG -[ -n "$NO_RECURSIVE_CONFIG" -a -n "$PM_PACKAGES_BUILD" ] && - fail 'The --packages-build and -G options are mutually exclusive' -[ -n "$NO_RECURSIVE_CONFIG" -a -n "$PM_DEL_BUILD_ONLY" ] && - fail 'The --delete-build-only and -G options are mutually exclusive' - +if [ -n "$NO_RECURSIVE_CONFIG" ]; then + [ -n "$FETCH_ONLY" ] && unset NO_RECURSIVE_CONFIG + [ -n "$PM_PACKAGES_BUILD" ] && + fail 'The --packages-build and -G options are mutually exclusive' + [ -n "$PM_DEL_BUILD_ONLY" ] && + fail 'The --delete-build-only and -G options are mutually exclusive' + [ -n "$FORCE_CONFIG" ] && + fail 'The --force-config and -G options are mutually exclusive' +fi unset my_environment #=============== Begin functions for getopts features and main =============== @@ -1195,7 +1220,7 @@ check_pkg_version () { check_for_updates () { # Global: num_updates - local list_only nf iport origin port_ver udf do_update + local list_only nf iport origin port_ver skip udf do_update [ "$1" = 'list' ] && { list_only=list_only; nf=nonfatal; shift; } @@ -1204,15 +1229,14 @@ check_for_updates () { origin=${2:-`origin_from_pdb $iport`} || return 0 if [ -n "$PM_INDEX" ]; then - if port_ver=`parse_index $origin name`; then - check_pkg_version $iport $port_ver || - { do_update=update_index ; } - else - echo " ===>>> Warning: No INDEX entry for $origin" - fi + case "$PM_INDEX_PORTS" in + *${iport}*) port_ver=`parse_index $origin name` ; do_update=upd_idx ;; + esac + + [ -n "$PM_INDEX_FIRST" ] || skip=index_skip fi - if [ -d "$pd/$origin" -a -z "$do_update" -a -z "$PM_INDEX_ONLY" ]; then + if [ -d "$pd/$origin" -a -z "$do_update" -a -z "$skip" ]; then if ! pm_cd $pd/$origin; then if [ -e "$pdb/$iport/+IGNOREME" ]; then echo " ===>>> Warning: Unable to cd to $pd/$origin" @@ -1224,7 +1248,14 @@ check_for_updates () { fi port_ver=`pm_make -V PKGNAME` [ -z "$port_ver" ] && fail "Is $pd/$origin/Makefile missing?" + elif [ -z "$do_update" -a -z "$skip" ]; then + find_moved_port $origin $iport $nf + + # If the port has moved, we have to update it, otherwise ignore + [ -n "$moved_npd" ] && do_update=do_update6 + fi + if [ -z "$do_update" -a -n "$port_ver" ]; then udf="$pdb/$iport/PM_UPGRADE_DONE_FLAG" if [ "$iport" = "$port_ver" ]; then if [ -n "$PM_FORCE" ]; then @@ -1254,11 +1285,6 @@ check_for_updates () { else check_pkg_version $iport $port_ver $udf || do_update=do_update_check fi - elif [ -z "$do_update" -a -z "$PM_INDEX_ONLY" ]; then - find_moved_port $origin $iport $nf - - # If the port has moved, we have to update it, otherwise ignore - [ -n "$moved_npd" ] && do_update=do_update6 fi [ -z "$do_update" ] && { @@ -1269,7 +1295,7 @@ check_for_updates () { echo " ===>>> New version available: $port_ver" [ -e "$pdb/$iport/+IGNOREME" ] && echo " ===>>> +IGNOREME file is present for $1" - [ -z "$PM_INDEX_ONLY" ] && check_state + [ -z "$PM_INDEX_ONLY" ] && { pm_cd_pd $origin ; check_state; } num_updates=$(( $num_updates + 1 )) else unset moved_npd
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005010249.o412nGQX055388>