Date: Thu, 31 Dec 2009 07:58:08 +0000 (UTC) From: Doug Barton <dougb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r201332 - user/dougb/portmaster Message-ID: <200912310758.nBV7w8cN090350@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dougb Date: Thu Dec 31 07:58:08 2009 New Revision: 201332 URL: http://svn.freebsd.org/changeset/base/201332 Log: New Feature: ============ At the end of the config phase print the list of what is about to be done, and prompt the user on whether to proceed or not. This requires some infrastructure in update_port() to keep the list of what to do, and in post_config() to do the printing and prompting. This needs refinement for multiports. Internal Cleanups: ================== 1. Instead of saving some of the new variables unconditionally in safe_exit(), move the things that are only done in the config phase to that section, and move build_deps_il to the !config section. 2. Do a more thorough job with the terminal escape sequences. It now works in -a mode (although not thoroughly tested). This required some annoying twiddling of spaces and such with PM_DEPTH, but so far it seems "ok." 3. Rename init_parent_port to init_term_printf which is more accurate and less confusing. 4. Since $new_port may be set as a side effect of the new feature above, conditionalize it when we get there in the "main" process. Modified: user/dougb/portmaster/portmaster Modified: user/dougb/portmaster/portmaster ============================================================================== --- user/dougb/portmaster/portmaster Thu Dec 31 07:34:38 2009 (r201331) +++ user/dougb/portmaster/portmaster Thu Dec 31 07:58:08 2009 (r201332) @@ -208,11 +208,13 @@ safe_exit () { # Save state for the parent process to read back in echo "CUR_DEPS='$CUR_DEPS'" >> $IPC_SAVE - echo "num_of_deps='$num_of_deps'" >> $IPC_SAVE echo "dep_of_deps='$dep_of_deps'" >> $IPC_SAVE if [ -z "$CONFIG_ONLY" ]; then echo "DISPLAY_LIST='$DISPLAY_LIST'" >> $IPC_SAVE echo "INSTALLED_LIST='$INSTALLED_LIST'" >> $IPC_SAVE + + [ -n "$PM_DEL_BUILD_ONLY" ] && + echo "build_deps_il='$build_deps_il'" >> $IPC_SAVE elif [ -z "$NO_DEP_UPDATES" ]; then echo 'unset NO_DEP_UPDATES' >> $IPC_SAVE fi @@ -226,18 +228,6 @@ safe_exit () { fi [ -n "$URB_YES" ] && echo "URB_DONE_LIST='$URB_DONE_LIST'" >> $IPC_SAVE - if [ "$PM_BUILD_ONLY_LIST" = pmp_doing_build_deps ]; then - echo "build_only_dl_g='$build_only_dl_g'" >> $IPC_SAVE - echo "run_dl_g='$run_dl_g'" >> $IPC_SAVE - rundep_list=`uniquify_list $rundep_list` - echo "rundep_list='$rundep_list'" >> $IPC_SAVE - for f in $rundep_list; do - eval echo "export $f=\'\$$f\'" >> $IPC_SAVE - eval echo "export ${f}_p=\'\$${f}_p\'" >> $IPC_SAVE - done - fi - [ -n "$PM_DEL_BUILD_ONLY" ] && - echo "build_deps_il='$build_deps_il'" >> $IPC_SAVE fi exit ${1:-0} @@ -1667,19 +1657,30 @@ term_printf () { update_port () { local update_to -#[ -n "$CONFIG_ONLY" ] && { echo '' ; echo "Debug> num_deps $num_of_deps"; } - [ -n "$CONFIG_ONLY" ] && num_of_deps=$(( $num_of_deps + 1 )) dep_of_deps=$(( $dep_of_deps + 1 )) [ -n "$2" ] && update_to=" to $2" + if [ -n "$CONFIG_ONLY" ]; then + num_of_deps=$(( $num_of_deps + 1 )) + case "$1" in + */*) build_l="${build_l}\tInstall $1\n" ;; + *) build_l="${build_l}\tUpgrade ${1#$pd/}${update_to}\n" ;; + esac +#echo '' ; echo "Debug> num_deps $num_of_deps" + fi + echo "===>>> Launching child to update ${1#$pd/}${update_to}" if [ -n "$PM_DEPTH" ]; then - echo " $PM_DEPTH >> ${1#$pd/}" - term_printf " >> ${1#$pd/} (${dep_of_deps}/${num_of_deps})" + echo " ${PM_DEPTH}>> ${1#$pd/}" +term_printf "${PM_DEPTH#$PM_PARENT_PORT}>> ${1#$pd/} (${dep_of_deps}/${num_of_deps})" else + if [ -n "$UPDATE_ALL" ]; then + term_printf " >> ${1#$pd/} (${dep_of_deps}/${num_of_deps})" + else #echo '' ; echo "Debug> NO PM_DEPTH HERE" ; echo '' + fi fi [ -n "$doing_dep_check" -o \ @@ -1695,6 +1696,7 @@ update_port () { fi if [ -n "$UPDATE_ALL" ]; then + term_printf " (${num_of_deps})" echo "===>>> Returning to update check of installed ports" echo '' elif [ -n "$UPDATE_REQ_BYS" ]; then @@ -1702,6 +1704,7 @@ update_port () { elif [ -n "$CONFIG_ONLY" -a -z "$PM_PACKAGES" ]; then echo "===>>> Continuing 'make config' dependency check for $portdir" else +term_printf "${PM_DEPTH#$PM_PARENT_PORT}(${dep_of_deps}/${num_of_deps})" echo "===>>> Returning to dependency check for $portdir" fi return 0 @@ -1914,7 +1917,34 @@ create_master_rb_list () { } post_config () { - local action + local num answer action + + [ $num_of_deps -gt 0 ] && num=" (${num_of_deps})" + term_printf "$num" + +# XXX + echo '' + echo "===>>> If you choose to proceed, the following will be done:" + if [ -z "$UPDATE_ALL" ]; then +# XXX Needs something here for multiport() + if [ -n "$upg_port" ]; then + cd $pd/$portdir && new_port=`pm_make -V PKGNAME` + case `pkg_version -t $upg_port $new_port` in + \<) echo " Upgrade $upg_port to $new_port" ;; + =) echo " Re-install $upg_port" ;; + \>) echo " Downgrade $upg_port to $new_port" ;; + esac + else + echo " Install $portdir" + fi + fi + [ -n "$build_l" ] && echo -e "$build_l" + echo -n "===>>> Proceed? n/[y] " + read answer + case "$answer" in + [nN]*) safe_exit ;; + esac + unset build_l action=build if [ "$PM_PACKAGES" = only ]; then @@ -1948,15 +1978,19 @@ post_config () { [ "$real_rundep" = 'no' ] && eval build_only_dl_g=\"${build_only_dl_g}\$${var}_p \" +#[ "$real_rundep" = 'no' ] && printf "\nDebug> Inserting $var into bodlg\n\n" + eval unset $var ${var}_p done +#echo "Debug> build_only_dl_g: X${build_only_dl_g}X" ; echo '' + unset run_dl_g rundep_list PM_BUILD_ONLY_LIST=pm_bol fi } -init_parent_port () { +init_term_printf () { PM_PARENT_PORT=$1 num_of_deps=0 dep_of_deps=0 @@ -2027,7 +2061,7 @@ multiport () { num=1 for port in $worklist; do - init_parent_port "$port ${num}/${numports}" + init_term_printf "$port ${num}/${numports}" ($0 $ARGS $port) || fail "Update for $port failed" . $IPC_SAVE num=$(( $num + 1 )) @@ -2051,7 +2085,7 @@ multiport () { continue fi ;; esac - init_parent_port "$port ${num}/${numports}" + init_term_printf "$port ${num}/${numports}" ($0 $ARGS $port) || fail "Update for $port failed" . $IPC_SAVE num=$(( $num + 1 )) @@ -2113,8 +2147,8 @@ if [ "$$" -eq "$PM_PARENT_PID" -a -z "$S if [ -z "$NO_RECURSIVE_CONFIG" ]; then CONFIG_SEEN_LIST=':' ; CONFIG_ONLY=config_only - NO_DEP_UPDATES=no_dep_updates - export CONFIG_SEEN_LIST CONFIG_ONLY NO_DEP_UPDATES + NO_DEP_UPDATES=no_dep_updates ; build_l='' + export CONFIG_SEEN_LIST CONFIG_ONLY NO_DEP_UPDATES build_l if [ -n "$PM_BUILD_ONLY_LIST" ]; then run_dl_g='' ; build_only_dl_g='' ; rundep_list='' @@ -2172,7 +2206,7 @@ all_config () { } [ -n "$DI_FILES" ] && (read_distinfos)& - init_parent_port All + init_term_printf All ports_by_category echo "===>>> Starting check of installed ports for available updates" @@ -2373,10 +2407,10 @@ case "$CONFIG_SEEN_LIST" in *:${portdir} pm_cd $pd/$portdir || no_valid_port if [ -z "$PM_DEPTH" ]; then - PM_DEPTH=${upg_port:-$portdir} - [ -z "$PM_PARENT_PORT" ] && init_parent_port $portdir + PM_DEPTH="${upg_port:-$portdir} " + [ -z "$PM_PARENT_PORT" ] && init_term_printf ${upg_port:-$portdir} else - PM_DEPTH="$PM_DEPTH >> ${upg_port:-$portdir}" + PM_DEPTH="${PM_DEPTH}>> ${upg_port:-$portdir} " fi echo '' @@ -2468,6 +2502,21 @@ if [ -n "$CONFIG_ONLY" ]; then if [ ! "$$" -eq "$PM_PARENT_PID" ]; then # Save state for the parent process to read back in echo "CONFIG_SEEN_LIST='$CONFIG_SEEN_LIST'" > $IPC_SAVE +# XXX config + echo "num_of_deps='$num_of_deps'" >> $IPC_SAVE + echo "build_l='$build_l'" >> $IPC_SAVE + + if [ "$PM_BUILD_ONLY_LIST" = pmp_doing_build_deps ]; then + echo "build_only_dl_g='$build_only_dl_g'" >> $IPC_SAVE + echo "run_dl_g='$run_dl_g'" >> $IPC_SAVE + rundep_list=`uniquify_list $rundep_list` + echo "rundep_list='$rundep_list'" >> $IPC_SAVE + for f in $rundep_list; do + eval echo "export $f=\'\$$f\'" >> $IPC_SAVE + eval echo "export ${f}_p=\'\$${f}_p\'" >> $IPC_SAVE + done + fi + safe_exit elif [ -n "$UPDATE_REQ_BYS" ]; then export URB_YES=urb_yes @@ -2546,7 +2595,7 @@ if [ -n "$NO_ACTION" -a -z "$CONFIG_ONLY safe_exit fi -new_port=`pm_make -V PKGNAME` +[ -z "$new_port" ] && new_port=`pm_make -V PKGNAME` if [ -n "$PM_PACKAGES" -o "$PM_PACKAGES_BUILD" = doing_build_only_dep ]; then fetch_package () {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912310758.nBV7w8cN090350>