Manish Jain wrote: >...Does each child start 'make fetch' in the background ?
make checksum, yes. >Further, how can portmaster be tuned to automatically ignore ports which >are actually marked as IGNORE in the port directory ? This is not >covered in the manpage. It respects IGNORE (it checks for it in the port Makefile, and also hands off to bsd.port.mk, which respects it). If you mean +IGNOREME, the others have answered your question. >While doing portmaster -a, I have only managed to stop portmaster from >building exactly one port specified with the -x option. Can I get to >stop multiple ports from being built ? Is there regular expression >support for the -x option ? Not in the sense that you mean, at least that I'm aware of. This one of the things that needs improvement. It is a bit awkward, because it uses the shell's built-in POSIX getopts to parse options, and then calls itself recursively. One way you could fix it would be to apply a patch like: --- portmaster.orig 2009-07-01 12:36:14.000000000 -0400 +++ portmaster 2009-07-01 18:55:59.000000000 -0400 @@ -9,7 +9,7 @@ if [ -z "$PARENT_PID" ]; then PARENT_PID=$$ : ${TMPDIR:=/tmp} - UPGRADE_TOOL=portmaster + UPGRADE_TOOL=$0 # /usr/local is needed in the path for make PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin @@ -788,7 +788,11 @@ u) UNATTENDED=uopt; ARGS="-u $ARGS" ;; v) PM_VERBOSE=vopt; ARGS="-v $ARGS" ;; w) SAVE_SHARED=wopt; ARGS="-w $ARGS" ;; - x) EXCL=$OPTARG ;; + x) if [ -z "${OPTARG%%-*}" ]; then + fail 'The -x option requires an argument' + else + EXCL="-x $OPTARG $EXCL" + fi ;; *) echo '' ; echo "===>>> Try ${0##*/} --help"; exit 1 ;; esac done @@ -810,10 +814,7 @@ [ -n "$FETCH_ONLY" -a -n "$NO_RECURSIVE_CONFIG" ] && fail "The -F and -G options are mutually exclusive" if [ -n "$EXCL" ]; then - case "$EXCL" in - -*) fail 'The -x option requires an argument' ;; - *) ARGS="-x $EXCL $ARGS" ;; - esac + ARGS="$EXCL $ARGS" fi #=============== Begin functions for getopts features and main =============== @@ -1461,14 +1462,17 @@ check_exclude () { [ -n "$EXCL" ] || return 0 - case "$1" in - *${EXCL}*) - if [ -n "$PM_VERBOSE" ]; then - echo "===>>> Skipping $1" - echo " because it matches the pattern: *${EXCL}*" - fi - return 1 ;; - esac + for pkgglob in `echo "$EXCL" | sed -e 's#-x##g'` + do + case "$1" in + *${pkgglob}*) + if [ -n "$PM_VERBOSE" ]; then + echo "===>>> Skipping $1" + echo " because it matches the pattern: *${pkgglob}*" + fi + return 1 ;; + esac ; + done return 0 } (Mind the whitespace because of my MUA.) Then you could just use repeated -x flags, each with one and only one package glob that you wanted to exclude. I changed the definition of UPGRADE_TOOL so that you could put this script in your path under another name, say "jainpmaster", and then call it independently of the original portmaster. As usual, I make no claim that this is the best, only, or most elegant way to do this. Regards, b. _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"