Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Update ports/patch-portmaster-pkgng for portmaster-3.13.1
Matthew Seaman committed 13 years ago
commit ec7c6c9721a2b5e32b9bdd77eafd5b14d61e01fc
parent 4e36617
1 file changed +148 -189
modified ports/patch-portmaster-pkgng
@@ -3,16 +3,16 @@ $FreeBSD$

--- portmaster.sh.in.orig
+++ portmaster.sh.in
-
@@ -49,7 +49,7 @@
+
@@ -47,7 +47,7 @@
 #=============== Begin functions we always want to have ===============
 
 version () {
-
-	echo '' ; echo "===>>> Version 3.13"
-
+	echo '' ; echo "===>>> Version 3.13 (pkgng patch 1.2)"
-
 	#svn='$FreeBSD: user/dougb/portmaster/portmaster 238195 2012-07-07 10:13:20Z dougb $'
+
-	echo '' ; echo "===>>> Version 3.13.1"
+
+	echo '' ; echo "===>>> Version 3.13.1 (pkgng patch 1.3)"
+
 	#svn='$FreeBSD: user/dougb/portmaster/portmaster 238532 2012-07-16 11:58:44Z dougb $'
 }
 
-
@@ -136,6 +136,8 @@
+
@@ -134,6 +134,8 @@
 			if [ -n "$files" ]; then
 				pm_sv Deleting \'install complete\' flags
 				pm_find_s $pdb -type f -name PM_UPGRADE_DONE_FLAG -delete
@@ -21,7 +21,7 @@ $FreeBSD$
 			fi
 		fi
 		if [ -z "$BACKUP" -a -z "$NO_BACKUP" -a -n "$NB_DELETE" ]; then
-
@@ -189,9 +191,14 @@
+
@@ -187,9 +189,14 @@
 		fi
 
 		: ${PAGER:='less -e'}
@@ -39,7 +39,7 @@ $FreeBSD$
 		echo "===>>> Done displaying pkg-message files" ; echo '' ) | $PAGER ;;
 	esac
 
-
@@ -234,10 +241,14 @@
+
@@ -232,10 +239,14 @@
 	if [ -n "$build_deps_il" ]; then
 		echo "===>>> Deleting installed build-only dependencies"
 		cd
@@ -58,8 +58,8 @@ $FreeBSD$
 		echo ''
 	fi
 
-
@@ -325,7 +336,13 @@
-
 			 unset -v PM_URB_LIST;
+
@@ -323,7 +334,13 @@
+
 pm_make_s         () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l PM_URB_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 $*; }
@@ -73,7 +73,7 @@ $FreeBSD$
 pm_rm_s           () { $PM_SU_CMD /bin/rm $*; }
 pm_rmdir_s        () { $PM_SU_CMD /bin/rmdir $*; }
 pm_unlink_s       () { [ -e "$1" ] && $PM_SU_CMD /bin/unlink $1; }
-
@@ -373,6 +390,10 @@
+
@@ -371,6 +388,10 @@
 	[ -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
@@ -84,7 +84,7 @@ $FreeBSD$
 fi
 
 usage () {
-
@@ -529,12 +550,17 @@
+
@@ -527,12 +548,17 @@
 
 	pattern=`globstrip $1`
 
@@ -104,7 +104,7 @@ $FreeBSD$
 	esac
 
 	unset glob_dirs
-
@@ -544,20 +570,35 @@
+
@@ -542,20 +568,35 @@
 origin_from_pdb () {
 	local o
 
@@ -145,7 +145,7 @@ $FreeBSD$
 		echo '' >&2
 	fi
 	return 1
-
@@ -699,12 +740,17 @@
+
@@ -697,12 +738,17 @@
 	o)	REPLACE_ORIGIN=oopt ;;
 	p)	fail 'The -p option has been deprecated' ;;
 	r)	PM_URB=ropt
@@ -165,7 +165,7 @@ $FreeBSD$
 			2)	fail 'The argument to -r must match only one port' ;;
 			esac
 		fi
-
@@ -786,6 +832,12 @@
+
@@ -784,6 +830,12 @@
 	    fail 'The -[ar] options are not compatible with other updates'
 
 	if [ -n "$PM_PACKAGES" -o -n "$PM_PACKAGES_BUILD" ]; then
@@ -178,7 +178,7 @@ $FreeBSD$
 		[ `/sbin/sysctl -n kern.osreldate 2>/dev/null` -lt 600400 ] &&
 			fail Package installation support requires FreeBSD 6.4 or newer
 	fi
-
@@ -852,7 +904,12 @@
+
@@ -850,7 +902,12 @@
 		fi
 		unset INDEXFILE INDEXDIR
 
@@ -192,7 +192,7 @@ $FreeBSD$
 		export PM_INDEX_PORTS
 
 		if [ -z "$pd" -o "$pd" != /usr/ports ]; then
-
@@ -909,6 +966,10 @@
+
@@ -907,6 +964,10 @@
 iport_from_origin () {
 	local sn dir
 
@@ -203,7 +203,7 @@ $FreeBSD$
 	sn=${1#*/} ; sn=${sn%-*} ; sn=${sn%%[0-9]*}
 
 	if ! dir=`grep -l "@comment ORIGIN:${1}$" $pdb/${sn}*/+CONTENTS 2>/dev/null`; then
-
@@ -937,7 +998,9 @@
+
@@ -935,7 +996,9 @@
 	done
 }
 
@@ -213,17 +213,17 @@ $FreeBSD$
 	# Global: grep_deps
 	local origin iport ro_opd
 
-
@@ -1019,7 +1082,9 @@
+
@@ -1017,7 +1080,9 @@
 	fi
 }
 
-
+# Also useless with pkgng
+
+# redundant with pkgng
 update_contents () {
+	[ -n "$use_pkgng" ] && return
-
 	local IFS delete contents origin n_port old_origin iport new_cont
+
 	local IFS delete contents origin n_port old_origin iport
 	local o_seen line d_missing d_origin d_iport prev_line answer
 
-
@@ -1119,7 +1184,7 @@
+
@@ -1117,7 +1182,7 @@
 	for l in `grep "^$sf|" $pd/MOVED`; do
 		case "$l" in
 		${sf}\|\|*) [ -n "$iport" ] || iport=`iport_from_origin $sf`
@@ -232,7 +232,7 @@ $FreeBSD$
 				if [ -n "$PM_VERBOSE" ]; then
 					echo ''
 					echo "	===>>> The $sf port has been deleted"
-
@@ -1154,7 +1219,7 @@
+
@@ -1152,24 +1217,36 @@
 		echo ''
 
 		[ -n "$iport" ] || iport=`iport_from_origin $sf`
@@ -241,153 +241,107 @@ $FreeBSD$
 	fi
 	return 0
 }
-
@@ -1165,35 +1230,62 @@
-
 	echo '############' > $DI_FILES		# Make the file > 0 bytes
-
 	echo "===>>> Gathering distinfo list for installed ports"
-
 	echo ''
-
-	for pkg in ${pdb}/*; do
-
-		[ -d $pkg ] || continue
-
-		iport=${pkg#$pdb/}
+
 
+
+all_pkgs_by_origin () {
+	if [ -z "$use_pkgng" ]; then
-
+		for pkg in ${pdb}/*; do
+
+		local pkg iport origin
+
+
+
+		for pkg in ${pdb}/* ; do
+			[ -d $pkg ] || continue
+			iport=${pkg#$pdb/}
-
 
-
-		origin=`origin_from_pdb $iport` || continue
+
+
+			origin=`origin_from_pdb $iport` || continue
-
 
-
-		if [ ! -d "$pd/$origin" ]; then
-
-			find_moved_port $origin $iport nonfatal >/dev/null
-
-			[ -n "$moved_npd" ] || continue
-
-			origin=$moved_npd
-
-		fi
-
+			if [ ! -d "$pd/$origin" ]; then
-
+				find_moved_port $origin $iport nonfatal >/dev/null
-
+				[ -n "$moved_npd" ] || continue
-
+				origin=$moved_npd
-
+			fi
-
 
-
-		origin="${pd}/${origin}"
-
+			origin="${pd}/${origin}"
-
 
-
-		if [ -s "${origin}/distinfo" ]; then
-
-			distinfo="${origin}/distinfo"
-
-		else
-
-			pm_cd $origin || continue
-
-			distinfo=`pm_make -V DISTINFO_FILE`
-
-			[ -n "$distinfo" ] || fail "No DISTINFO_FILE in $origin"
-
-		fi
-
+			if [ -s "${origin}/distinfo" ]; then
-
+				distinfo="${origin}/distinfo"
-
+			else
-
+				pm_cd $origin || continue
-
+				distinfo=`pm_make -V DISTINFO_FILE`
-
+				[ -n "$distinfo" ] || fail "No DISTINFO_FILE in $origin"
-
+			fi
-
 
-
-		if [ -s "$distinfo" ]; then
-
-			grep '^SHA256 ' $distinfo | while read disc1 f disc2; do
-
-				f=${f#(} ; f=${f%)}
-
-				echo $f >> $DI_FILES
-
-			done
-
-		fi
-
-	done
-
+			if [ -s "$distinfo" ]; then
-
+				grep '^SHA256 ' $distinfo | while read disc1 f disc2; do
-
+					f=${f#(} ; f=${f%)}
-
+					echo $f >> $DI_FILES
-
+				done
-
+			fi
+
+			echo $iport $origin
+		done
+	else
-
+		pkg query -a "%n-%v %o" | while read pkg origin; do
-
+			if [ ! -d "$pd/${origin}" ]; then
-
+				find_moved_port $origin $pkg nonfatal >/dev/null
-
+				[ -n "$moved_npd" ] || continue
-
+				origin=$moved_npd
-
+			fi
-
+
-
+			origin="${pd}/${origin}"
-
+
-
+			if [ -s "${origin}/distinfo" ]; then
-
+				distinfo="${origin}/distinfo"
-
+			else
-
+				pm_cd $origin || continue
-
+				distinfo=`pm_make -V DISTINFO_FILE`
-
+				[ -n "$distinfo" ] || fail "No DISTINFO_FILE in $origin"
-
+			fi
-
+
-
+			if [ -s "$distinfo" ]; then
-
+				grep '^SHA256 ' $distinfo | while read disc1 f disc2; do
-
+					f=${f#(} ; f=${f%)}
-
+					echo $f >> $DI_FILES
-
+				done
-
+			fi
-
+		done
+
+		pkg query -a "%n-%v %o"
+	fi
+
+	return
+
+}
+
+
+
 read_distinfos () {
+
-	local pkg iport origin distinfo s f discard
+
+	local iport origin distinfo s f discard
 
-
 	# Tell safe_exit that we are done
-
 	pm_unlink ${DI_FILES}-e
-
@@ -1239,25 +1331,45 @@
-
 }
+
 	echo '############' > $DI_FILES		# Make the file > 0 bytes
+
 	echo "===>>> Gathering distinfo list for installed ports"
+
 	echo ''
+
 
+
-	for pkg in ${pdb}/*; do
+
-		[ -d $pkg ] || continue
+
-		iport=${pkg#$pdb/}
+
-
+
-		origin=`origin_from_pdb $iport` || continue
+
-
+
+	all_pkgs_by_origin | while read iport origin; do
+
 		if [ ! -d "$pd/$origin" ]; then
+
 			find_moved_port $origin $iport nonfatal >/dev/null
+
 			[ -n "$moved_npd" ] || continue
+
@@ -1245,29 +1322,43 @@
 
-
 ports_by_category () {
-
-	local pkg
-
+	local pkg dep rdep
 	pm_v "===>>> Sorting ports by category"
 
+
-	num_roots=0; num_trunks=0; num_branches=0; num_leaves=0
-	for pkg in $pdb/*; do
-		if [ -s "$pkg/+REQUIRED_BY" ]; then
-			if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
-				branches="$branches ${pkg#$pdb/}"
+
-				num_branches=$(( $num_branches + 1 ))
+
-			else
+
-				trunks="$trunks ${pkg#$pdb/}"
+
-				num_trunks=$(( $num_trunks + 1 ))
+
-			fi
+
-		else
+
-			if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
+
-				leaves="$leaves ${pkg#$pdb/}"
+
-				num_leaves=$(( $num_leaves + 1 ))
+	if [ -z "$use_pkgng" ]; then
+
+		num_roots=0; num_trunks=0; num_branches=0; num_leaves=0
+		for pkg in $pdb/*; do
+			if [ -s "$pkg/+REQUIRED_BY" ]; then
+				if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
+					branches="$branches ${pkg#$pdb/}"
+
+					num_branches=$(( $num_branches + 1 ))
+				else
+					trunks="$trunks ${pkg#$pdb/}"
+
+					num_trunks=$(( $num_trunks + 1 ))
+				fi
 			else
-
-				trunks="$trunks ${pkg#$pdb/}"
+
-				[ -d "$pkg" ] || continue
+
-				roots="$roots ${pkg#$pdb/}"
+
-				num_roots=$(( $num_roots + 1 ))
+				if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
+					leaves="$leaves ${pkg#$pdb/}"
+
+					num_leaves=$(( $num_leaves + 1 ))
+				else
+					[ -d "$pkg" ] || continue
+					roots="$roots ${pkg#$pdb/}"
-
+				fi
-
 			fi
-
-		else
-
-			if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
-
-				leaves="$leaves ${pkg#$pdb/}"
-
+		done
-
+	else
-
+		while read pkg dep rdep; do
-
+			if [ $rdep -eq 1 ]; then
-
+				if [ $dep -eq 1 ]; then
-
+					branches="$branches $pkg"
-
+				else
-
+					trunks="$trunks $pkg"
-
+				fi
-
 			else
-
-				[ -d "$pkg" ] || continue
-
-				roots="$roots ${pkg#$pdb/}"
-
+				if [ $dep -eq 1 ]; then
-
+					leaves="$leaves $pkg"
-
+				else
-
+					roots="$roots $pkg"
+
+					num_roots=$(( $num_roots + 1 ))
+				fi
 			fi
-		fi
-	done
-
+		done << EOF
-
+`pkg query -a "%n-%v %?d %?r"`
-
+EOF
+
+		done
+
 
+
-	num_ports=$(( $num_roots + $num_trunks + $num_branches + $num_leaves ))
+
+		num_ports=$(( $num_roots + $num_trunks + $num_branches + $num_leaves ))
+
+	else
+
+		roots=`   pkg query -e "%#d = 0 && %#r = 0" "%n-%v"`
+
+		trunks=`  pkg query -e "%#d = 0 && %#r > 0" "%n-%v"`
+
+		branches=`pkg query -e "%#d > 0 && %#r > 0" "%n-%v"`
+
+		leaves=`  pkg query -e "%#d > 0 && %#r = 0" "%n-%v"`
+
+
+
+		num_roots=$(echo    $(echo $roots    | wc -w))
+
+		num_trunks=$(echo   $(echo $trunks   | wc -w))
+
+		num_branches=$(echo $(echo $branches | wc -w))
+
+		num_leaves=$(echo   $(echo $leaves   | wc -w))
+
+
+
+		num_ports=$(echo $(pkg query -a "%n-%v" | wc -w))
+	fi
 }
 
 delete_empty_dist_subdirs () {
-
@@ -1305,7 +1417,9 @@
+
@@ -1315,7 +1406,9 @@
 	esac
 }
 
@@ -397,7 +351,7 @@ $FreeBSD$
 	# Global: needws
 	local do_update
 
-
@@ -1315,7 +1429,7 @@
+
@@ -1325,7 +1418,7 @@
 	else
 		do_update=do_update2
 	fi
@@ -406,7 +360,7 @@ $FreeBSD$
 		pm_v "	===>>> Updating $1/+REQUIRED_BY"
 		needws=needws_urb
 		pm_install_s $grep_deps $pdb/$1/+REQUIRED_BY
-
@@ -1361,11 +1475,15 @@
+
@@ -1371,11 +1464,15 @@
 
 	echo "===>>> Checking for stale packages"
 	for package in `find $PACKAGES -type f | sort`; do
@@ -425,7 +379,7 @@ $FreeBSD$
 
 		if [ -z "$PM_INDEX" ]; then
 			if [ -d "$pd/$origin" ]; then
-
@@ -1381,16 +1499,28 @@
+
@@ -1391,16 +1488,28 @@
 		fi
 
 		if [ -n "$port_ver" ]; then
@@ -463,7 +417,7 @@ $FreeBSD$
 				fi
 				unset port_ver
 				continue
-
@@ -1401,10 +1531,18 @@
+
@@ -1411,10 +1520,18 @@
 
 			unset port_ver
 
@@ -485,7 +439,7 @@ $FreeBSD$
 			fi
 		fi
 
-
@@ -1443,6 +1581,10 @@
+
@@ -1453,6 +1570,10 @@
 fi	# [ -n "$CLEAN_PACKAGES" ]
 
 if [ -n "$CHECK_DEPENDS" ]; then
@@ -496,7 +450,7 @@ $FreeBSD$
 	PM_VERBOSE=pmv_check_depends
 IFS='
 '
-
@@ -1489,24 +1631,42 @@
+
@@ -1499,24 +1620,42 @@
 	unique_list=':'
 
 	echo "===>>> Building list of installed port names"; echo ''
@@ -554,7 +508,7 @@ $FreeBSD$
 
 	echo "===>>> Checking $port_dbdir"
 
-
@@ -1607,7 +1767,7 @@
+
@@ -1617,7 +1756,7 @@
 
 	if [ -z "$do_update" -a -z "$skip" -a -z "$PM_INDEX_ONLY" ] && [ -d "$pd/$origin" ]; then
 		if ! pm_cd $pd/$origin; then
@@ -563,7 +517,7 @@ $FreeBSD$
 				echo "	===>>> Warning: Unable to cd to $pd/$origin"
 				echo "	===>>> Continuing due to $pdb/$iport/+IGNOREME"
 				echo ''
-
@@ -1624,13 +1784,13 @@
+
@@ -1634,13 +1773,13 @@
 
 		# If the port has moved and no +IGNOREME, we have to update it
 		if [ -n "$moved_npd" ]; then
@@ -580,7 +534,7 @@ $FreeBSD$
 			fi
 		fi
 	fi
-
@@ -1647,14 +1807,20 @@
+
@@ -1657,14 +1796,20 @@
 				unset port_ver
 			fi
 		else
@@ -603,7 +557,7 @@ $FreeBSD$
 			esac
 
 			[ -z "$do_update" ] && {
-
@@ -1670,8 +1836,9 @@
+
@@ -1680,8 +1825,9 @@
 	if [ -n "$LIST_PLUS" ]; then
 		if [ -z "$moved_npd" ]; then
 			echo "	===>>> New version available: $port_ver"
@@ -614,7 +568,7 @@ $FreeBSD$
 			pm_cd_pd $origin && check_state
 			num_updates=$(( $num_updates + 1 ))
 		else
-
@@ -1726,7 +1893,13 @@
+
@@ -1736,7 +1882,13 @@
 	fi
 
 	pm_cd $pkgdir || fail "Cannot cd into $pkgdir to create a package"
@@ -629,7 +583,7 @@ $FreeBSD$
 		if [ "$1" = "$pbu" ]; then
 			if [ -n "$BACKUP" ]; then
 				echo "	===>>> Package saved to $1" ; echo ''
-
@@ -2080,10 +2253,14 @@
+
@@ -2085,10 +2237,14 @@
 fi
 
 if [ -n "$EXPUNGE" ]; then
@@ -646,7 +600,7 @@ $FreeBSD$
 		2)	echo "===>>> $EXPUNGE matched multiple ports"
 			fail "The -e option works with only one port at a time" ;;
 		0)	EXPUNGE=${glob_dirs#$pdb/}
-
@@ -2092,15 +2269,24 @@
+
@@ -2097,15 +2253,24 @@
 	fi
 
 	origin=`origin_from_pdb $EXPUNGE`
@@ -676,7 +630,7 @@ $FreeBSD$
 				update_contents delete $f $origin
 			done ;;
 		*)	exit 1 ;;
-
@@ -2110,8 +2296,13 @@
+
@@ -2115,8 +2280,13 @@
 	[ -n "$BACKUP" ] && { init_packages ; pm_pkg_create $pbu $EXPUNGE; }
 	[ -z "$DONT_SCRUB_DISTFILES" ] && delete_all_distfiles $origin
 
@@ -692,7 +646,7 @@ $FreeBSD$
 
 	echo '' ; echo "===>>> Running ${0##*/} -s $ARGS"
 	exec $0 -s $ARGS
-
@@ -2121,13 +2312,21 @@
+
@@ -2126,13 +2296,21 @@
 if [ -n "$CLEAN_STALE" ]; then
 	[ -z "$no_del_list" ] && export no_del_list=':'
 
@@ -716,7 +670,7 @@ $FreeBSD$
 		if [ -n "$deplist" ]; then
 			echo ''
 			echo "===>>> Warning: Unrecorded dependencies on ${iport}:"
-
@@ -2140,22 +2339,32 @@
+
@@ -2145,22 +2323,32 @@
 			continue
 		fi
 
@@ -757,7 +711,7 @@ $FreeBSD$
 		esac
 	done
 	exit 0
-
@@ -2178,7 +2387,7 @@
+
@@ -2183,7 +2371,7 @@
 	# to go out to the disk if we don't have to.
 	[ -z "$RESTART" ] && return 1
 
@@ -766,7 +720,7 @@ $FreeBSD$
 		return 1
 	else
 		already_done $1
-
@@ -2195,7 +2404,7 @@
+
@@ -2200,7 +2388,7 @@
 	case "$INTERACTIVE_YES" in *:${1}:*) return 0 ;; esac
 	case "$INTERACTIVE_NO" in *:${1}:*) return 1 ;; esac
 
@@ -775,7 +729,7 @@ $FreeBSD$
 		echo ''
 		echo "===>>> +IGNOREME file is present for $1"
 		echo ''
-
@@ -2307,7 +2516,13 @@
+
@@ -2312,7 +2500,13 @@
 			fail "No entry for $origin in $PM_INDEX"
 	fi
 
@@ -790,7 +744,7 @@ $FreeBSD$
 	\<)	build_l="${build_l}\tUpgrade $iport to $new_port\n" ;;
 	=)	build_l="${build_l}\tRe-install $iport\n" ;;
 	\>)	build_l="${build_l}\tDowngrade $iport to $new_port\n" ;;
-
@@ -2456,6 +2671,18 @@
+
@@ -2463,6 +2657,18 @@
 		rundeps=`gen_dep_list run-depends-list`
 
 		for dep in $d_port_list; do
@@ -809,7 +763,7 @@ $FreeBSD$
 			case "$rundeps" in
 			*" ${dep} "*|*${dep}*)
 				varname=`echo ${dep#$pd/} | sed 's#[-+/\.]#_#g'`
-
@@ -2525,7 +2752,11 @@
+
@@ -2532,7 +2738,11 @@
 				fail "Cannot cd to $d_port"
 			fi
 			for glob in $conflicts; do
@@ -822,7 +776,7 @@ $FreeBSD$
 				if [ -n "$confl_p" ]; then
 					confl_p=${confl_p%% *}
 					d_port="$pd/`origin_from_pdb $confl_p`"
-
@@ -2665,7 +2896,11 @@
+
@@ -2672,7 +2882,11 @@
 		done
 
 		for dep in $build_only_dl_g; do
@@ -835,7 +789,7 @@ $FreeBSD$
 			[ -n "$PM_DEL_BUILD_ONLY" ] &&
 				iport_from_origin ${dep#$pd/} >/dev/null && continue
 			temp_bodlg="$temp_bodlg $dep"
-
@@ -2692,7 +2927,7 @@
+
@@ -2699,7 +2913,7 @@
 
 urb_update () {
 	# Global: PM_URB_UP
@@ -844,7 +798,7 @@ $FreeBSD$
 
 	verb=checking ; [ -n "$1" ] && verb=updating
 
-
@@ -2702,15 +2937,25 @@
+
@@ -2709,15 +2923,25 @@
 	echo ''
 
 	for origin in $PM_URB_ORIGINS; do
@@ -877,7 +831,7 @@ $FreeBSD$
 	done
 
 	if [ -n "$PM_URB_LIST" ]; then
-
@@ -2722,7 +2967,11 @@
+
@@ -2729,7 +2953,11 @@
 
 	for req_by in $PM_URB_LIST; do
 		# Probably not needed, but JIC
@@ -890,7 +844,7 @@ $FreeBSD$
 
 		pm_v "===>>> $req_by depends on $PM_URB_IPORTS"
 
-
@@ -2763,12 +3012,16 @@
+
@@ -2770,12 +2998,16 @@
 			else
 				fail "$pd/${port} does not exist"
 			fi ;;
@@ -909,7 +863,7 @@ $FreeBSD$
 				*)	local dir
 					for dir in $glob_dirs; do
 					worklist_temp="$worklist_temp ${dir#$pdb/}"
-
@@ -2876,9 +3129,16 @@
+
@@ -2887,9 +3119,16 @@
 		*/*)	origin=$port ;;
 		*)	# If an installed version does not exist at this
 			# point it probably got updated as a dependency
@@ -929,7 +883,7 @@ $FreeBSD$
 			fi
 			origin=`origin_from_pdb $port` ;;
 		esac
-
@@ -3102,11 +3362,16 @@
+
@@ -3112,11 +3351,16 @@
 	case "$argv" in
 	'')	echo '' ; no_valid_port ;;
 	$pd/*)	portdir=${argv#$pd/} ;;
@@ -948,7 +902,7 @@ $FreeBSD$
 	esac
 
 	if [ -z "$portdir" -a -z "$upg_port" ]; then
-
@@ -3139,7 +3404,7 @@
+
@@ -3149,7 +3393,7 @@
 
 	case "$arg2" in
 	*/*)	ro_opd=$arg2 ; ro_upg_port=`iport_from_origin $ro_opd` ;;
@@ -957,7 +911,7 @@ $FreeBSD$
 			ro_upg_port=$arg2
 		else
 			find_glob_dirs $arg2 && ro_upg_port=${glob_dirs#$pdb/}
-
@@ -3154,12 +3419,21 @@
+
@@ -3164,12 +3408,21 @@
 	unset arg2
 
 	if [ -z "$ro_upg_port" ]; then
@@ -982,16 +936,16 @@ $FreeBSD$
 			echo '       or listed as a dependency'
 			echo '' ; no_valid_port
 		fi
-
@@ -3191,7 +3465,7 @@
+
@@ -3201,7 +3454,7 @@
 fi
 [ -z "$upg_port" -a -z "$REPLACE_ORIGIN" ] && upg_port=`iport_from_origin ${portdir}`
 
-if [ -e "$pdb/$upg_port/+IGNOREME" ]; then
+if [ -e "$pdb/$upg_port/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $upg_port ); then
-
 	# Adding to CUR_DEPS means we will not get here in the build unless -G
+
 	# Adding to CUR_DEPS means we will not get here in the build
 	if [ -z "$PM_BUILDING" ]; then
 		# Only need to prompt for this once if -ai
-
@@ -3587,7 +3861,12 @@
+
@@ -3599,7 +3852,12 @@
 		pm_v "===>>> Available package ($latest_pv) matches the current version"
 	elif [ -n "$latest_pv" -a -n "$PM_PACKAGES_NEWER" ]; then
 		if [ -n "$upg_port" ]; then
@@ -1005,7 +959,7 @@ $FreeBSD$
 			\<)	use_package=up_newer
 				pm_v "===>>> Available package ($latest_pv)"
 				pm_v "       is newer than installed ($upg_port)" ;;
-
@@ -3603,7 +3882,12 @@
+
@@ -3615,7 +3873,12 @@
 			pm_v "===>>> There is a package available ($latest_pv)"
 		fi
 	elif [ -n "$latest_pv" ]; then
@@ -1019,8 +973,8 @@ $FreeBSD$
 		\<)	# Could happen if ports tree is out of date
 			use_package=up_old_tree
 			pm_v "===>>> Available package ($latest_pv)"
-
@@ -3702,7 +3986,12 @@
-
 		    grep -v ^$LOCALBASE_COMPAT > $ldconfig_out
+
@@ -3715,7 +3978,12 @@
+
 		    grep -v ^$LOCALBASE_COMPAT > $pm_mktemp_file
 
 		unset temp
-		for file in `pkg_info -q -L $UPGRADE_PORT |
@@ -1030,10 +984,10 @@ $FreeBSD$
+			pkglist="pkg query %Fp"
+		fi
+		for file in `$pkglist $UPGRADE_PORT |
-
 		    sort - $ldconfig_out | uniq -d`; do
+
 		    sort - $pm_mktemp_file | uniq -d`; do
 			temp="${temp}$file "
 		done
-
@@ -3725,6 +4014,7 @@
+
@@ -3738,6 +4006,7 @@
 
 	if [ -n "$REPLACE_ORIGIN" -a -n "$ro_upg_port" ]; then
 		# Delete any existing versions of the old port
@@ -1041,7 +995,7 @@ $FreeBSD$
 		pm_sv "Running pkg_delete for $ro_upg_port"
 		pm_pkg_delete_s -f $ro_upg_port
 	fi
-
@@ -3744,6 +4034,8 @@
+
@@ -3757,6 +4026,8 @@
 			unset preserve_port files
 		esac
 
@@ -1050,7 +1004,7 @@ $FreeBSD$
 		pm_sv "Running pkg_delete for $upg_port"
 		pm_pkg_delete_s -f $upg_port
 	fi
-
@@ -3790,6 +4082,18 @@
+
@@ -3803,6 +4074,18 @@
 		unset port_log_args
 	fi
 
@@ -1069,7 +1023,7 @@ $FreeBSD$
 	# Defining NO_DEPENDS ensures that we will control the installation
 	# of the depends, not bsd.port.mk.
 	eval pm_make_s -DNO_DEPENDS install $port_log_args || install_failed $new_port
-
@@ -3807,29 +4111,31 @@
+
@@ -3820,29 +4103,31 @@
 	fi
 fi
 
@@ -1078,7 +1032,7 @@ $FreeBSD$
-	mv ${preserve_dir}/${file##*/} $file
-	oldmd5="MD5:`md5 -q $file`"
-
-
-	pm_mktemp contents ; new_cont=$pm_mktemp_file
+
-	pm_mktemp contents
-	while read left right; do
-		case "$left" in
-		@cwd)		short_file="${file#${right}/}" ;;
@@ -1091,10 +1045,10 @@ $FreeBSD$
-				fi ;;
-		esac
-		echo "$left $right"
-
-	done < $pdb/$new_port/+CONTENTS > $new_cont
-
-	pm_install_s $new_cont $contents
-
-	pm_unlink $new_cont
-
-	unset file oldmd5 new_cont left right short_file
+
-	done < $pdb/$new_port/+CONTENTS > $pm_mktemp_file
+
-	pm_install_s $pm_mktemp_file $contents
+
-	pm_unlink $pm_mktemp_file
+
-	unset file oldmd5 pm_mktemp_file left right short_file
-done
+if [ -z "$use_pkgng" ]; then
+	for file in $preserve_port_files; do
@@ -1102,7 +1056,7 @@ $FreeBSD$
+		mv ${preserve_dir}/${file##*/} $file
+		oldmd5="MD5:`md5 -q $file`"
+	
-
+		pm_mktemp contents ; new_cont=$pm_mktemp_file
+
+		pm_mktemp contents
+		while read left right; do
+			case "$left" in
+			@cwd)		short_file="${file#${right}/}" ;;
@@ -1115,16 +1069,16 @@ $FreeBSD$
+					fi ;;
+			esac
+			echo "$left $right"
-
+		done < $pdb/$new_port/+CONTENTS > $new_cont
-
+		pm_install_s $new_cont $contents
-
+		pm_unlink $new_cont
-
+		unset file oldmd5 new_cont left right short_file
+
+		done < $pdb/$new_port/+CONTENTS > $pm_mktemp_file
+
+		pm_install_s $pm_mktemp_file $contents
+
+		pm_unlink $pm_mktemp_file
+
+		unset file oldmd5 pm_mktemp_file left right short_file
+	done
+fi
 if [ -n "$preserve_dir" ]; then
 	rmdir $preserve_dir 2>/dev/null
 	unset preserve_dir preserve_port_files
-
@@ -3845,14 +4151,19 @@
+
@@ -3858,14 +4143,19 @@
 temp=`find $LOCALBASE_COMPAT -type d -empty 2>/dev/null`
 if [ -z "$temp" ] && [ -d "$LOCALBASE_COMPAT" ]; then
 	unset files
@@ -1146,8 +1100,13 @@ $FreeBSD$
 		$PM_SU_CMD /etc/rc.d/ldconfig start > /dev/null
 	fi
 	unset temp file files
-
@@ -3906,7 +4217,8 @@
-
 	/bin/unlink $dist_list_temp ; unset distinfo dist_list_temp file line
+
@@ -3917,11 +4207,13 @@
+
 	done
+
 
+
 	pm_sv "Installing $dist_list\n"
+
+	pm_mkdir_s ${dist_list%/*}
+
 	pm_install_s $pm_mktemp_file $dist_list
+
 	/bin/unlink $pm_mktemp_file ; unset distinfo pm_mktemp_file file line
 fi
 
-if [ -n "$use_package" ]; then
@@ -1156,7 +1115,7 @@ $FreeBSD$
 	if grep -q DEPORIGIN $pdb/$new_port/+CONTENTS; then
 		echo -e "===>>> Updating dependencies for $new_port to match installed versions\n"
 		update_contents $pdb/$new_port/+CONTENTS ; pm_v
-
@@ -3928,7 +4240,7 @@
+
@@ -3943,7 +4235,7 @@
 if [ -n "$MAKE_PACKAGE" ]; then
 	if [ -z "$use_package" ]; then
 		echo "===>>> Creating a package for new version $new_port"
@@ -1165,7 +1124,7 @@ $FreeBSD$
 		echo "	===>>> Package saved to $PACKAGES/All" ; echo ''
 	else
 		pm_pkg_create $PACKAGES $new_port
-
@@ -3941,29 +4253,37 @@
+
@@ -3956,29 +4248,37 @@
 	pm_v
 fi
 
@@ -1224,7 +1183,7 @@ $FreeBSD$
 if [ -n "$upg_port" ]; then
 	if [ ! "$upg_port" = "$new_port" ]; then
 		ilist="Upgrade of $upg_port to $new_port"
-
@@ -3979,13 +4299,15 @@
+
@@ -3994,13 +4294,15 @@
 fi
 
 INSTALLED_LIST="${INSTALLED_LIST}\t${ilist}\n"