svn commit: r470286 - in head/ports-mgmt/portmaster: . files

Stefan Esser se at FreeBSD.org
Fri May 18 10:43:34 UTC 2018


Author: se
Date: Fri May 18 10:43:32 2018
New Revision: 470286
URL: https://svnweb.freebsd.org/changeset/ports/470286

Log:
  Cache some build parameters in the environment that were recalculated over
  and over for individual ports. This significantly reduces the time to scan
  for updates if many ports with USES=compiler are present.
  
  Based on a suggestion and code fragment provided by Tijl Coosemans.
  
  While here commit a few changes present in my local version that should not
  cause any functional change.
  
  Submitted by:	tijl
  Approved by:	antoine (implicit)

Modified:
  head/ports-mgmt/portmaster/Makefile
  head/ports-mgmt/portmaster/files/patch-portmaster

Modified: head/ports-mgmt/portmaster/Makefile
==============================================================================
--- head/ports-mgmt/portmaster/Makefile	Fri May 18 10:19:00 2018	(r470285)
+++ head/ports-mgmt/portmaster/Makefile	Fri May 18 10:43:32 2018	(r470286)
@@ -2,7 +2,7 @@
 
 PORTNAME=	portmaster
 PORTVERSION=	3.19
-PORTREVISION=	8
+PORTREVISION=	9
 CATEGORIES=	ports-mgmt
 
 MAINTAINER=	se at FreeBSD.org

Modified: head/ports-mgmt/portmaster/files/patch-portmaster
==============================================================================
--- head/ports-mgmt/portmaster/files/patch-portmaster	Fri May 18 10:19:00 2018	(r470285)
+++ head/ports-mgmt/portmaster/files/patch-portmaster	Fri May 18 10:43:32 2018	(r470286)
@@ -31,6 +31,15 @@
  	fi
  
  	case "$DISPLAY_LIST" in
+@@ -260,7 +260,7 @@ safe_exit () {
+ 		parent_exit $1
+ 	else
+ 		# Save state for the parent process to read back in
+-		> $IPC_SAVE
++		: > $IPC_SAVE
+ 		if [ -z "$PM_FIRST_PASS" ]; then
+ 			echo "DISPLAY_LIST='$DISPLAY_LIST'" >> $IPC_SAVE
+ 			echo "INSTALLED_LIST='$INSTALLED_LIST'" >> $IPC_SAVE
 @@ -308,20 +308,19 @@ safe_exit () {
  	exit ${1:-0}
  } # safe_exit()
@@ -94,8 +103,20 @@
  [ -n "$PM_NO_MAKE_CONFIG" -a -n "$PM_FORCE_CONFIG" ] && unset PM_NO_MAKE_CONFIG
  
  if [ -n "$LIST" -o -n "$LIST_PLUS" ]; then
-@@ -1004,21 +1008,23 @@ get_answer_yn () {
+@@ -927,6 +931,11 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
+ 	fi
+ fi	# [ "$$" -eq "$PM_PARENT_PID" ]
  
++#=============== cache some build parameters in the environment ===============
++
++export SCRIPTSDIR="$pd/Mk/Scripts"
++eval "$(PORTSDIR="$pd" MAKE=make /bin/sh "$SCRIPTSDIR/ports_env.sh")"
++
+ #=============== Begin functions relevant to --features and main ===============
+ 
+ # find installed port for given origin (with optional @flavor) in the pkg DB
+@@ -1004,21 +1013,23 @@ get_answer_yn () {
+ 
  match_flavor () {
  	local origin=$(dir_part $1)
 -	local flavor=$(flavor_part $1)
@@ -122,17 +143,17 @@
  }
  
  # Find the new origin for moved ports
-@@ -1056,7 +1062,8 @@ find_moved_port () {
+@@ -1056,7 +1067,8 @@ find_moved_port () {
  			fi ;;
  		${sf}\|*) moved_npd=${moved#*\|}	# New port directory
  			moved_npd=${moved_npd%%\|*}
 -			[ -n $(flavor_part $moved_npd) ] && match_flavor $moved_npd $iport
-+			[ -n $(flavor_part $moved_npd) ] && moved_npd=$(match_flavor $moved_npd $iport)
++			[ -n "$(flavor_part $moved_npd)" ] && moved_npd=$(match_flavor $moved_npd $iport)
 +				
  			echo ''
  			echo "	===>>> The $sf port moved to $moved_npd"
  			echo "	===>>> Reason: ${moved##*|}"
-@@ -1146,7 +1153,6 @@ read_distinfos_all () {
+@@ -1146,11 +1158,10 @@ read_distinfos_all () {
  	echo ''
  
  	for origin in ${pd}/*/*; do
@@ -140,7 +161,12 @@
  		case "${origin#$pd/}" in
  		Mk/*|T*|distfiles/*|packages/*|*/[Mm]akefile*|CVS/*|*/CVS|base/*) continue ;; esac
  
-@@ -1377,14 +1383,14 @@ if [ -n "$CHECK_PORT_DBDIR" ]; then
+-		pm_isdir "$origin" ] || continue
++		pm_isdir "$origin" || continue
+ 
+ 		if [ -s "${origin}/distinfo" ]; then
+ 			distinfo="${origin}/distinfo"
+@@ -1377,14 +1388,14 @@ if [ -n "$CHECK_PORT_DBDIR" ]; then
  		if ! pm_isdir_pd "$origin"; then
  			find_moved_port $origin $pkg nonfatal >/dev/null
  			[ -n "$moved_npd" ] || continue
@@ -157,7 +183,7 @@
  	done <<-EOF
  	$(all_pkgs_by_origin)
  	EOF
-@@ -1502,7 +1508,7 @@ check_for_updates () {
+@@ -1502,7 +1513,7 @@ check_for_updates () {
  	fi
  
  	if [ -z "$do_update" -a -z "$skip" -a -z "$PM_INDEX_ONLY" ] && pm_isdir "$pd/$origin"; then
@@ -166,7 +192,7 @@
  			if pm_islocked "$iport"; then
  				echo "	===>>> Warning: Unable to cd to $pd/$origin"
  				echo "	===>>> Continuing due to $pdb/$iport/+IGNOREME"
-@@ -2175,23 +2181,29 @@ update_pm_nu () {
+@@ -2175,23 +2186,29 @@ update_pm_nu () {
  }
  
  update_build_l () {
@@ -200,7 +226,7 @@
  	find_new_port "$originflavor" # sets global variable new_port
  
  	case `pkg version -t $iport $new_port 2>/dev/null` in
-@@ -2203,8 +2215,9 @@ update_build_l () {
+@@ -2203,8 +2220,9 @@ update_build_l () {
  }
  
  update_port () {
@@ -211,7 +237,7 @@
  	if [ -n "$2" ]; then
  		echo "===>>> Launching child to update $1 to $2"
  	else
-@@ -2300,7 +2313,7 @@ make_dep_list () {
+@@ -2300,7 +2318,7 @@ make_dep_list () {
  			fail "make_dep_list: Unsupported option '$dep_type'"
  		esac
  	done
@@ -220,7 +246,7 @@
  }
  
  gen_dep_list () {
-@@ -2368,15 +2381,17 @@ dependency_check () {
+@@ -2368,15 +2386,17 @@ dependency_check () {
  		rundeps=`gen_dep_list run-depends-list`
  
  		for dep in $d_port_list; do
@@ -241,7 +267,7 @@
  				rundep_list="$rundep_list $varname"
  				eval $varname=\"$portdir \$$varname\"
  				eval ${varname}_p=$dep
-@@ -2409,7 +2424,10 @@ dependency_check () {
+@@ -2409,7 +2429,10 @@ dependency_check () {
  
  	# Do not export, for THIS parent process only
  	[ -n "$PM_FIRST_PASS" ] && doing_dep_check=doing_dep_check
@@ -253,7 +279,7 @@
  		origin="${d_port#$pd/}"
  		if [ -n "$SHOW_WORK" ]; then
  			iport=`iport_from_origin $origin`
-@@ -2429,20 +2447,14 @@ dependency_check () {
+@@ -2429,20 +2452,14 @@ dependency_check () {
  		[ -z "$PM_URB_UP" ] &&
  			case "$CUR_DEPS" in *:${origin}:*) continue ;; esac
  
@@ -278,7 +304,7 @@
  			fi
  			for glob in $conflicts; do
  				confl_p=`pkg query -g "%n-%v" $glob 2>/dev/null`
-@@ -2498,7 +2510,11 @@ dependency_check () {
+@@ -2498,7 +2515,11 @@ dependency_check () {
  			check_for_updates $iport $origin || fail 'Update failed'
  		else
  			check_interactive $origin || continue
@@ -291,16 +317,27 @@
  		fi
  	done
  	[ -n "$PM_FIRST_PASS" ] && unset doing_dep_check
-@@ -2773,7 +2789,7 @@ multiport () {
+@@ -2773,8 +2794,8 @@ multiport () {
  
  		num=$(( $num + 1 ))
  		init_term_printf "$port ${num}/${numports}"
 -		("$program" $ARGS $port) || update_failed=update_failed
+-		. $IPC_SAVE && > $IPC_SAVE
 +		($program $ARGS $port) || update_failed=update_failed
- 		. $IPC_SAVE && > $IPC_SAVE
++		. $IPC_SAVE && : > $IPC_SAVE
  		[ -n "$update_failed" ] && fail "Update for $port failed"
  
-@@ -3029,8 +3045,12 @@ no_valid_port () {
+ 		case "$PM_NEEDS_UPDATE" in
+@@ -2823,7 +2844,7 @@ multiport () {
+ 		num=$(( $num + 1 ))
+ 		init_term_printf "$port ${num}/${numports}"
+ 		("$program" $ARGS $port) || update_failed=update_failed
+-		. $IPC_SAVE && > $IPC_SAVE
++		. $IPC_SAVE && : > $IPC_SAVE
+ 		[ -n "$update_failed" ] && fail "Update for $port failed"
+ 	done
+ 
+@@ -3029,8 +3050,12 @@ no_valid_port () {
  	echo "===>>> Try $progname --help" ; echo '' ; safe_exit 1
  }
  
@@ -313,7 +350,7 @@
  	export_flavor $(flavor_part $portdir)
  	[ -n "$portdir" ] && { argv=$portdir ; unset portdir; }
  	argv=${argv:-$1} ; argv=${argv%/} ; argv=`globstrip $argv`
-@@ -3061,6 +3081,8 @@ if [ -z "$REPLACE_ORIGIN" ]; then
+@@ -3061,9 +3086,11 @@ if [ -z "$REPLACE_ORIGIN" ]; then
  		unset glob_dirs
  	fi
  	unset argv
@@ -321,9 +358,22 @@
 +	[ "$make_target" != install ] && PM_MAKE_ARGS="-DDISABLE_CONFLICTS $PM_MAKE_ARGS"
  else
  	portdir="${1#$pd/}" ; portdir="${portdir%/}"
- 	export_flavor=$(flavor_part $portdir)
-@@ -3142,8 +3164,9 @@ iport_from_pkgname () {
+-	export_flavor=$(flavor_part $portdir)
++	export_flavor $(flavor_part $portdir)
+ 	if [ -z "$PM_INDEX_ONLY" ]; then
+ 		pm_isdir_pd "$portdir" ] || missing=missing
+ 	else
+@@ -3076,7 +3103,7 @@ else
+ 		echo '' ; no_valid_port
+ 	fi
  
+-	upg_port=`iport_from_origin $portdir` || upg_port=$opd
++	upg_port=`iport_from_origin $portdir` || upg_port=$opd	# <se> $opd is never set???
+ 	arg2=${2#$pd/} ; arg2=${arg2#$pdb/} ; arg2=${arg2%/}
+ 
+ 	case "$arg2" in
+@@ -3142,8 +3169,9 @@ iport_from_pkgname () {
+ 
  	dir=$(dir_part $1)
  	flavor=$(flavor_part $1)
 -	pkgname=$(FLAVOR=$flavor make -C "$pd/$dir" -V PKGNAME) || return 1
@@ -334,7 +384,7 @@
  }
  
  if [ -z "$upg_port" -a -z "$REPLACE_ORIGIN" ]; then
-@@ -3229,11 +3252,14 @@ if [ -n "$PM_FIRST_PASS" -a -z "$FETCH_ONLY" ]; then
+@@ -3229,11 +3257,14 @@ if [ -n "$PM_FIRST_PASS" -a -z "$FETCH_ONLY" ]; then
  		fi
  	fi
  
@@ -350,7 +400,16 @@
  # Do these things first time through
  if [ -z "$PM_INDEX_ONLY" -a -z "$PM_BUILDING" -a -z "$SHOW_WORK" -a -z "$NO_ACTION" ]; then
  	# Do not start this in the background until we are sure we are going to proceed
-@@ -3636,15 +3662,21 @@ pkg_flavor () {
+@@ -3389,7 +3420,7 @@ fetch_package () {
+ 		export ppd
+ 	fi
+ 
+-	pm_isdir "$ppd" ] || { pm_sv Creating $ppd; pm_mkdir_s $ppd; }
++	pm_isdir "$ppd" || { pm_sv Creating $ppd; pm_mkdir_s $ppd; }
+ 
+ 	if [ -z "$FETCH_ARGS" ]; then
+ 		FETCH_ARGS=`pm_make -f/usr/share/mk/bsd.port.mk -V FETCH_ARGS 2>/dev/null`
+@@ -3636,15 +3667,21 @@ pkg_flavor () {
  	pm_make pretty-flavors-package-names | sed -ne 's!^\([A-Za-z0-9_]*\): *'$pkg'$!\1!p';
  }
  	export_flavor=$(pkg_flavor $new_port)
@@ -373,7 +432,7 @@
  else
  	[ -z "$local_package" ] && {
  		fetch_package $latest_pv || fail "Fetch for ${latest_pv}.txz failed"; }
-@@ -3808,7 +3840,7 @@ if [ -z "$temp" ] && pm_isdir "$LOCALBASE_COMPAT"; the
+@@ -3808,7 +3845,7 @@ if [ -z "$temp" ] && pm_isdir "$LOCALBASE_COMPAT"; the
  
  	if [ -n "$files" ]; then
  		pm_sv Removing old shared libraries, and running ldconfig
@@ -382,7 +441,7 @@
  		$PM_SU_CMD /etc/rc.d/ldconfig start > /dev/null
  	fi
  	unset temp file files
-@@ -3876,9 +3908,12 @@ if [ -n "$MAKE_PACKAGE" ]; then
+@@ -3876,9 +3913,12 @@ if [ -n "$MAKE_PACKAGE" ]; then
  fi
  
  if [ -z "$use_package" -a -z "$DONT_POST_CLEAN" ]; then


More information about the svn-ports-head mailing list