Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Make suitable for ports-mgmt/portmaster/files/
Alberto Villa committed 13 years ago
commit 959321470be8beb294c09f7eb7c09b577bc56cb8
parent 51ac2ee
2 files changed +1155 -1155
added ports/patch-portmaster-pkgng
@@ -0,0 +1,1155 @@
+
--- portmaster.sh.in.orig	2012-04-11 15:54:46.654580382 +0200
+
+++ portmaster.sh.in	2012-04-11 15:55:04.204455356 +0200
+
@@ -125,6 +125,8 @@
+
 			if [ -n "$files" ]; then
+
 				pm_sv Deleting \'install complete\' flags
+
 				pm_find_s $pdb -type f -name PM_UPGRADE_DONE_FLAG -delete
+
+				[ -n "$use_pkgng" ] &&
+
+					pm_find_s $pdb -type d -depth 1 -empty ! -path \*\.zfs/\* -delete 2>/dev/null
+
 			fi
+
 		fi
+
 		if [ -z "$BACKUP" -a -z "$NO_BACKUP" -a -n "$NB_DELETE" ]; then
+
@@ -212,10 +214,14 @@
+
 	if [ -n "$build_deps_il" ]; then
+
 		echo "===>>> Deleting installed build-only dependencies"
+
 		cd
+
-		for f in $build_deps_il; do
+
-			pm_v "       $f"
+
-			pm_pkg_delete_s -f $f
+
-		done
+
+		if [ -z "$use_pkgng" ]; then
+
+			for f in $build_deps_il; do
+
+				pm_v "       $f"
+
+				pm_pkg_delete_s -f $f
+
+			done
+
+		else
+
+			pm_pkg_delete_s -f $build_deps_il
+
+		fi
+
 		echo ''
+
 	fi
+
 
+
@@ -292,7 +298,13 @@
+
 			 unset -v 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 $*; }
+
+pm_pkg_delete_s   () {
+
+	if [ -z "$use_pkgng" ]; then
+
+		$PM_SU_CMD /usr/sbin/pkg_delete $*;
+
+	else
+
+		$PM_SU_CMD /usr/local/sbin/pkg delete -y $*;
+
+	fi
+
+}
+
 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; }
+
@@ -496,12 +508,17 @@
+
 
+
 	pattern=`globstrip $1`
+
 
+
-	glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*`
+
+	if [ -z "$use_pkgng" ]; then
+
+		glob_dirs=`find $pdb -depth 1 -type d -name ${pattern}\*`
+
+	else
+
+		glob_dirs=`pkg query -g "%n-%v" ${pattern}\*`
+
+	fi
+
 	case "$glob_dirs" in
+
 	# Match a newline in multiple responses from find
+
 	*'
+
 '*)		return 2 ;;
+
-	$pdb/*)	return ;;
+
+	'')	;;
+
+	*)	return ;;
+
 	esac
+
 
+
 	unset glob_dirs
+
@@ -511,20 +528,35 @@
+
 origin_from_pdb () {
+
 	local o
+
 
+
-	o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && {
+
-		echo ${o#@comment ORIGIN:}; return 0; }
+
+	if [ -z "$use_pkgng" ]; then
+
+		o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && {
+
+			echo ${o#@comment ORIGIN:}; return 0; }
+
+	else
+
+		pkg info -qo $1 2>/dev/null && return 0
+
+	fi
+
 
+
 	case "$1" in bsdpan-*) return 3 ;; esac
+
 
+
-	if [ -e "$pdb/$1/+IGNOREME" ]; then
+
+	if [ -e "$pdb/$1/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $1 ); then
+
 		if [ -n "$PM_VERBOSE" -o -n "$LIST_ORIGINS" ]; then
+
-			echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
+
+			if [ -z "$use_pkgng" ]; then
+
+				echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
+
+			else
+
+				# an error above doesn't necessarily mean there's
+
+				# a problem in +MANIFEST, so don't mention it
+
+				echo "	===>>> No origin available for $1" >&2
+
+			fi
+
 			echo "	===>>> $pdb/$1/+IGNOREME exists" >&2
+
 			echo '' >&2
+
 		fi
+
 		return 2
+
 	else
+
-		echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
+
+		if [ -z "$use_pkgng" ]; then
+
+			echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
+
+		else
+
+			# same as above
+
+			echo "	===>>> No origin available for $1" >&2
+
+		fi
+
 		echo '' >&2
+
 	fi
+
 	return 1
+
@@ -666,12 +698,17 @@
+
 	o)	REPLACE_ORIGIN=oopt ;;
+
 	p)	fail 'The -p option has been deprecated' ;;
+
 	r)	PM_URB=ropt
+
-		if [ -d "$pdb/$OPTARG" ]; then
+
+		if [ -d "$pdb/$OPTARG" ] && ( [ -z "$use_pkgng" ] || pkg info -e $OPTARG ); then
+
 			glob_dirs=$OPTARG
+
 		else
+
+			case "$OPTARG" in */*) fail 'The argument to -r must be a package name, or a glob pattern' ;; esac
+
 			find_glob_dirs $OPTARG
+
 			case $? in
+
-			1)	fail "$pdb/$OPTARG does not exist" ;;
+
+			1)	if [ -z "$use_pkgng" ]; then
+
+					fail "$pdb/$OPTARG does not exist"
+
+				else
+
+					fail "$OPTARG is not installed"
+
+				fi ;;
+
 			2)	fail 'The argument to -r must match only one port' ;;
+
 			esac
+
 		fi
+
@@ -753,6 +790,12 @@
+
 	    fail 'The -[ar] options are not compatible with other updates'
+
 
+
 	if [ -n "$PM_PACKAGES" -o -n "$PM_PACKAGES_BUILD" ]; then
+
+		if [ -n "$use_pkgng" ]; then
+
+			unset PM_PACKAGES PM_PACKAGES_BUILD PM_PACKAGES_LOCAL PM_PACKAGES_NEWER PM_ALWAYS_FETCH PM_DELETE_PACKAGES
+
+			echo "===>>> Package installation support cannot be used with pkgng yet,"
+
+			echo "       it will be disabled"
+
+			echo ''
+
+		fi
+
 		[ `/sbin/sysctl -n kern.osreldate 2>/dev/null` -lt 600400 ] &&
+
 			fail Package installation support requires FreeBSD 6.4 or newer
+
 	fi
+
@@ -818,7 +861,12 @@
+
 		fi
+
 		unset INDEXFILE INDEXDIR
+
 
+
-		PM_INDEX_PORTS=`pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
+
+		if [ -z "$use_pkgng" ]; then
+
+			pkg_version="pkg_version"
+
+		else
+
+			pkg_version="pkg version"
+
+		fi
+
+		PM_INDEX_PORTS=`$pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
+
 		export PM_INDEX_PORTS
+
 
+
 		if [ -z "$pd" -o "$pd" != /usr/ports ]; then
+
@@ -875,6 +923,10 @@
+
 iport_from_origin () {
+
 	local sn dir
+
 
+
+	if [ -n "$use_pkgng" ]; then
+
+		pkg info -q ${1} || return 1
+
+		return
+
+	fi
+
 	sn=${1#*/} ; sn=${sn%-*} ; sn=${sn%%[0-9]*}
+
 
+
 	if ! dir=`grep -l "@comment ORIGIN:${1}$" $pdb/${sn}*/+CONTENTS 2>/dev/null`; then
+
@@ -903,9 +955,11 @@
+
 	done
+
 }
+
 
+
+# useless with pkgng
+
 check_dependency_files () {
+
 	# Global: grep_deps
+
 	local origin iport ro_opd
+
+	[ -n "$use_pkgng" ] && return
+
 
+
 	origin=$1 ; iport=$2
+
 
+
@@ -985,9 +1039,11 @@
+
 	fi
+
 }
+
 
+
+# also useless with pkgng
+
 update_contents () {
+
 	local IFS delete contents origin n_port old_origin iport new_cont
+
 	local o_seen line d_missing d_origin d_iport prev_line answer
+
+	[ -n "$use_pkgng" ] && return
+
 
+
 # To prevent words in a line being treated individually
+
 IFS='
+
@@ -1083,7 +1139,7 @@
+
 	for l in `grep "^$sf|" $pd/MOVED`; do
+
 		case "$l" in
+
 		${sf}\|\|*) [ -n "$iport" ] || iport=`iport_from_origin $sf`
+
-			if [ -e "$pdb/$iport/+IGNOREME" ]; then
+
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
+
 				if [ -n "$PM_VERBOSE" ]; then
+
 					echo ''
+
 					echo "	===>>> The $sf port has been deleted"
+
@@ -1118,7 +1174,7 @@
+
 		echo ''
+
 
+
 		[ -n "$iport" ] || iport=`iport_from_origin $sf`
+
-		[ -e "$pdb/$iport/+IGNOREME" ] || return 1
+
+		[ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ) || return 1
+
 	fi
+
 	return 0
+
 }
+
@@ -1129,35 +1185,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/}
+
+	if [ -z "$use_pkgng" ]; then
+
+		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
+
+		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
+
+	fi
+
 
+
 	# Tell safe_exit that we are done
+
 	pm_unlink ${DI_FILES}-e
+
@@ -1203,25 +1286,45 @@
+
 }
+
 
+
 ports_by_category () {
+
-	local pkg
+
+	local pkg dep rdep
+
 	pm_v "===>>> Sorting ports by category"
+
 
+
-	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/}"
+
+	if [ -z "$use_pkgng" ]; then
+
+		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/}"
+
+				else
+
+					trunks="$trunks ${pkg#$pdb/}"
+
+				fi
+
 			else
+
-				trunks="$trunks ${pkg#$pdb/}"
+
+				if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
+
+					leaves="$leaves ${pkg#$pdb/}"
+
+				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"
+
+				fi
+
 			fi
+
-		fi
+
-	done
+
+		done << EOF
+
+`pkg query -a "%n-%v %?d %?r"`
+
+EOF
+
+	fi
+
 }
+
 
+
 delete_empty_dist_subdirs () {
+
@@ -1269,9 +1372,11 @@
+
 	esac
+
 }
+
 
+
+# useless with pkgng
+
 update_required_by () {
+
 	# Global: grep_deps
+
 	local do_update
+
+	[ -n "$use_pkgng" ] && /bin/unlink $grep_deps && unset grep_deps && return
+
 
+
 	if [ -e "$pdb/$1/+REQUIRED_BY" ]; then
+
 		sort $pdb/$1/+REQUIRED_BY | cmp -s $grep_deps - || do_update=do_update
+
@@ -1324,11 +1429,13 @@
+
 
+
 	echo "===>>> Checking for stale packages"
+
 	for package in `find $PACKAGES -type f | sort`; do
+
-		pkg_dir=${package##*/} ; pkg_dir=${pkg_dir%\.tbz} ; echo ''
+
+		pkg_dir=${package##*/} ; pkg_dir=${pkg_dir%\.*} ; echo ''
+
 
+
 		origin=`tar -O -zxvf $package '+CONTENTS' 2>/dev/null | grep '@comment ORIGIN:'` ||
+
-			fail Empty origin in $package
+
+			origin=`tar -O -zxvf $package '+MANIFEST' 2>/dev/null | grep '^origin:'` ||
+
+			fail "Empty origin in $package"
+
 		origin=${origin#@comment ORIGIN:}
+
+		origin=${origin#origin: }
+
 
+
 		if [ -z "$PM_INDEX" ]; then
+
 			if [ -d "$pd/$origin" ]; then
+
@@ -1344,16 +1451,28 @@
+
 		fi
+
 
+
 		if [ -n "$port_ver" ]; then
+
-			if [ "${port_ver}.tbz" = "${package##*/}" ]; then
+
+			if [ "$port_ver" = "$pkg_dir" ]; then
+
 				echo "===>>> ${package##*/} is up to date"
+
-				if [ ! -d "${pdb}/${pkg_dir}" ]; then
+
-					echo "	===>>> $pkg_dir is not installed"
+
-					echo "	===>>> Path: ${package}"
+
-					get_answer_yn y "\n\t===>>> Delete stale package: ${package##*/}"
+
-					case "$?" in
+
-					0)	echo "	===>>> Deleting $package"
+
-						pm_unlink_s $package ;;
+
-					esac
+
+				if [ -z "$use_pkgng" ]; then
+
+					if [ ! -d "${pdb}/${pkg_dir}" ]; then
+
+						echo "	===>>> $pkg_dir is not installed"
+
+						echo "	===>>> Path: ${package}"
+
+						get_answer_yn y "\n\t===>>> Delete stale package: ${package##*/}"
+
+						case "$?" in
+
+						0)	echo "	===>>> Deleting $package"
+
+							pm_unlink_s $package ;;
+
+						esac
+
+					fi
+
+				else
+
+					if ! pkg info -e $pkg_dir; then
+
+						echo "	===>>> $pkg_dir is not installed"
+
+						echo "	===>>> Path: ${package}"
+
+						get_answer_yn y "\n\t===>>> Delete stale package: ${package##*/}"
+
+						case "$?" in
+
+						0)	echo "	===>>> Deleting $package"
+
+							pm_unlink_s $package ;;
+
+						esac
+
+					fi
+
 				fi
+
 				unset port_ver
+
 				continue
+
@@ -1364,10 +1483,18 @@
+
 
+
 			unset port_ver
+
 
+
-			if [ -d "${pdb}/${pkg_dir}" ]; then
+
-				echo "	===>>> ${package##*/} matches the installed version"
+
+			if [ -z "$use_pkgng" ]; then
+
+				if [ -d "${pdb}/${pkg_dir}" ]; then
+
+					echo "	===>>> ${package##*/} matches the installed version"
+
+				else
+
+					echo "	===>>> ${package##*/} is not installed"
+
+				fi
+
 			else
+
-				echo "	===>>> ${package##*/} is not installed"
+
+				if pkg info -e $pkg_dir; then
+
+					echo "	===>>> ${package##*/} matches the installed version"
+
+				else
+
+					echo "	===>>> ${package##*/} is not installed"
+
+				fi
+
 			fi
+
 		fi
+
 
+
@@ -1406,6 +1533,7 @@
+
 fi	# [ -n "$CLEAN_PACKAGES" ]
+
 
+
 if [ -n "$CHECK_DEPENDS" ]; then
+
+	[ -n "$use_pkgng" ] && exit 0 # this is useless with pkgng
+
 	PM_VERBOSE=pmv_check_depends
+
 IFS='
+
 '
+
@@ -1452,24 +1580,42 @@
+
 	unique_list=':'
+
 
+
 	echo "===>>> Building list of installed port names"; echo ''
+
-	for pkg in $pdb/*; do
+
-		[ -d $pkg ] || continue
+
+	if [ -z "$use_pkgng" ]; then
+
+		for pkg in $pdb/*; do
+
+			[ -d $pkg ] || continue
+
 
+
-		iport=${pkg#$pdb/}
+
-		origin=`origin_from_pdb $iport` || continue
+
+			iport=${pkg#$pdb/}
+
+			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
+
 
+
-		if ! pm_cd $pd/$origin; then
+
-			echo "	===>>> $pd/$origin does not exist for $pkg"
+
-			continue
+
-		fi
+
-		unique_list="${unique_list}`make -V UNIQUENAME`:"
+
-	done
+
+			if ! pm_cd $pd/$origin; then
+
+				echo "	===>>> $pd/$origin does not exist for $pkg"
+
+				continue
+
+			fi
+
+			unique_list="${unique_list}`make -V UNIQUENAME`:"
+
+		done
+
+	else
+
+		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
+
+
+
+			if ! pm_cd $pd/$origin; then
+
+				echo "	===>>> $pd/$origin does not exist for $pkg"
+
+				continue
+
+			fi
+
+			unique_list="${unique_list}`make -V UNIQUENAME`:"
+
+		done << EOF
+
+`pkg query -a "%n-%v %o"`
+
+EOF
+
+	fi
+
 
+
 	echo "===>>> Checking $port_dbdir"
+
 
+
@@ -1570,7 +1716,7 @@
+
 
+
 	if [ -z "$do_update" -a -z "$skip" -a -z "$PM_INDEX_ONLY" ] && [ -d "$pd/$origin" ]; then
+
 		if ! pm_cd $pd/$origin; then
+
-			if [ -e "$pdb/$iport/+IGNOREME" ]; then
+
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
+
 				echo "	===>>> Warning: Unable to cd to $pd/$origin"
+
 				echo "	===>>> Continuing due to $pdb/$iport/+IGNOREME"
+
 				echo ''
+
@@ -1587,13 +1733,13 @@
+
 
+
 		# If the port has moved and no +IGNOREME, we have to update it
+
 		if [ -n "$moved_npd" ]; then
+
-			if [ ! -e "$pdb/$iport/+IGNOREME" ]; then
+
-				do_update=do_update_moved
+
-			else
+
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
+
 				echo "	===>>> Continuing due to $pdb/$iport/+IGNOREME"
+
 				echo ''
+
 				CUR_DEPS="${CUR_DEPS}${iport}:${origin}:"
+
 				return 0
+
+			else
+
+				do_update=do_update_moved
+
 			fi
+
 		fi
+
 	fi
+
@@ -1610,14 +1756,20 @@
+
 				unset port_ver
+
 			fi
+
 		else
+
-			case `pkg_version -t $iport $port_ver` in
+
+			local pkg_version
+
+			if [ -z "$use_pkgng" ]; then
+
+				pkg_version="pkg_version"
+
+			else
+
+				pkg_version="pkg version"
+
+			fi
+
+			case `$pkg_version -t $iport $port_ver` in
+
 			\<)	do_update=upd_lt ;;
+
 			=)	;;	# Can be reached if same version with different options
+
 			\>)	if [ -n "$PM_VERBOSE" ]; then
+
 					echo "	===>>> Port version $port_ver does not"
+
 					echo "	===>>> seem newer than installed $iport"
+
 				fi ;;
+
-			*)	fail "pkg_version -t $iport $port_ver gave an unexpected result"
+
+			*)	fail "$pkg_version -t $iport $port_ver gave an unexpected result"
+
 			esac
+
 
+
 			[ -z "$do_update" ] && {
+
@@ -1633,8 +1785,9 @@
+
 	if [ -n "$LIST_PLUS" ]; then
+
 		if [ -z "$moved_npd" ]; then
+
 			echo "	===>>> New version available: $port_ver"
+
-			[ -e "$pdb/$iport/+IGNOREME" ] &&
+
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
+
 				echo "	===>>> +IGNOREME file is present for $1"
+
+			fi
+
 			pm_cd_pd $origin && check_state
+
 			num_updates=$(( $num_updates + 1 ))
+
 		else
+
@@ -1689,7 +1842,13 @@
+
 	fi
+
 
+
 	pm_cd $pkgdir || fail "Cannot cd into $pkgdir to create a package"
+
-	if $PM_SU_CMD pkg_create -b $2; then
+
+	local pkg_create
+
+	if [ -z "$use_pkgng" ]; then
+
+		pkg_create="pkg_create -b"
+
+	else
+
+		pkg_create="pkg create "
+
+	fi
+
+	if $PM_SU_CMD $pkg_create $2; then
+
 		if [ "$1" = "$pbu" ]; then
+
 			if [ -n "$BACKUP" ]; then
+
 				echo "	===>>> Package saved to $1" ; echo ''
+
@@ -2028,10 +2187,14 @@
+
 fi
+
 
+
 if [ -n "$EXPUNGE" ]; then
+
-	if [ ! -d "$pdb/$EXPUNGE" ]; then
+
+	if [ ! -d "$pdb/$EXPUNGE" ] || ( [ -n "$use_pkgng" ] && ! pkg info -e $EXPUNGE ); then
+
 		find_glob_dirs $EXPUNGE
+
 		case $? in
+
-		1)	fail "No such directory/port: $pdb/$EXPUNGE" ;;
+
+		1)	if [ -z "$use_pkgng" ]; then
+
+				fail "No such directory/port: $pdb/$EXPUNGE"
+
+			else
+
+				fail "No such port: $EXPUNGE"
+
+			fi ;;
+
 		2)	echo "===>>> $EXPUNGE matched multiple ports"
+
 			fail "The -e option works with only one port at a time" ;;
+
 		0)	EXPUNGE=${glob_dirs#$pdb/}
+
@@ -2040,7 +2203,11 @@
+
 	fi
+
 
+
 	origin=`origin_from_pdb $EXPUNGE`
+
-	deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
+
+	if [ -z "$use_pkgng" ]; then
+
+		deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
+
+	else
+
+		deplist=`pkg query "%rn-%rv" $origin`
+
+	fi
+
 	if [ -n "$deplist" ]; then
+
 		echo "===>>> Warning: Ports with dependencies on ${EXPUNGE}:"
+
 		for dep in $deplist; do
+
@@ -2048,7 +2215,8 @@
+
 		done
+
 		get_answer_yn n "\n\t===>>> Delete this dependency data"
+
 		case "$?" in
+
-		0)	for f in $deplist; do
+
+		0)	[ -n "$use_pkgng" ] && exit 1 #TODO
+
+			for f in $deplist; do
+
 				update_contents delete $f $origin
+
 			done ;;
+
 		*)	exit 1 ;;
+
@@ -2058,8 +2226,13 @@
+
 	[ -n "$BACKUP" ] && { init_packages ; pm_pkg_create $pbu $EXPUNGE; }
+
 	[ -z "$DONT_SCRUB_DISTFILES" ] && { delete_all_distfiles $origin; delete_dist_list; }
+
 
+
-	echo "===>>> Running pkg_delete -f $EXPUNGE"
+
-	pm_pkg_delete_s -f $EXPUNGE || fail 'pkg_delete failed'
+
+	if [ -z "$use_pkgng" ]; then
+
+		pkg_delete="pkg_delete"
+
+	else
+
+		pkg_delete="pkg delete"
+
+	fi
+
+	echo "===>>> Running $pkg_delete -f $EXPUNGE"
+
+	pm_pkg_delete_s -f $EXPUNGE || fail "$pkg_delete failed"
+
 
+
 	echo '' ; echo "===>>> Running ${0##*/} -s $ARGS"
+
 	exec $0 -s $ARGS
+
@@ -2069,13 +2242,21 @@
+
 if [ -n "$CLEAN_STALE" ]; then
+
 	[ -z "$no_del_list" ] && export no_del_list=':'
+
 
+
-	for file in `find $pdb -type f -name \+REQUIRED_BY -empty` ; do
+
+	if [ -z "$use_pkgng" ]; then
+
+		find_stale_ports="find $pdb -type f -name \+REQUIRED_BY -empty"
+
+	else
+
+		find_stale_ports="pkg query -a \"%?r %n-%v\" | awk '/^0/ { print \$2 }'"
+
+	fi
+
+	for file in `eval $find_stale_ports` ; do
+
 		iport="${file%/+REQUIRED_BY}" ; iport=${iport#$pdb/}
+
 
+
 		case "$no_del_list" in *:${iport}:*) continue ;; esac
+
 
+
 		origin=`origin_from_pdb $iport`
+
-		deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
+
+		deplist=""
+
+		if [ -z "$use_pkgng" ]; then
+
+			deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
+
+		fi
+
 		if [ -n "$deplist" ]; then
+
 			echo ''
+
 			echo "===>>> Warning: Unrecorded dependencies on ${iport}:"
+
@@ -2088,22 +2269,32 @@
+
 			continue
+
 		fi
+
 
+
-		pkg_info $iport
+
+		if [ -z "$use_pkgng" ]; then
+
+			pkg_info $iport
+
+			pkg_delete="pkg_delete"
+
+		else
+
+			pkg info -f $iport
+
+			pkg_delete="pkg delete"
+
+		fi
+
 
+
 		get_answer_yn n "\t===>>> ${iport} is no longer depended on, delete"
+
 		case "$?" in
+
 		0)	[ -n "$BACKUP" ] && { init_packages ; pm_pkg_create $pbu $iport; }
+
 			[ -z "$DONT_SCRUB_DISTFILES" ] && { delete_all_distfiles $origin; delete_dist_list; }
+
 
+
-			echo "===>>> Running pkg_delete -f $iport"
+
-			pm_pkg_delete_s -f $iport || fail 'pkg_delete failed'
+
+			echo "===>>> Running $pkg_delete -f $iport"
+
+			pm_pkg_delete_s -f $iport || fail "$pkg_delete failed"
+
 
+
 			exec $0 -s $ARGS ;;
+
-		*)	get_answer_yn n "\t===>>> Delete this dependency data"
+
-			case "$?" in
+
-			0)	pm_unlink_s $file ;;
+
-			*)	no_del_list="${no_del_list}${iport}:" ;;
+
-			esac ;;
+
+		*)	if [ -z "$use_pkgng" ]; then
+
+				get_answer_yn n "\t===>>> Delete this dependency data"
+
+				case "$?" in
+
+				0)	pm_unlink_s $file ;;
+
+				*)	no_del_list="${no_del_list}${iport}:" ;;
+
+				esac
+
+			else
+
+				no_del_list="${no_del_list}${iport}:"
+
+			fi ;;
+
 		esac
+
 	done
+
 	exit 0
+
@@ -2126,7 +2317,7 @@
+
 	# to go out to the disk if we don't have to.
+
 	[ -z "$RESTART" ] && return 1
+
 
+
-	if [ ! -e "$pdb/${1}/PM_UPGRADE_DONE_FLAG" ]; then
+
+	if [ ! -e "$pdb/${1}/PM_UPGRADE_DONE_FLAG" ] || ( [ -n "$use_pkgng" ] && ! pkg info -e $1 ); then
+
 		return 1
+
 	else
+
 		already_done $1
+
@@ -2143,7 +2334,7 @@
+
 	case "$INTERACTIVE_YES" in *:${1}:*) return 0 ;; esac
+
 	case "$INTERACTIVE_NO" in *:${1}:*) return 1 ;; esac
+
 
+
-	if [ -e "$pdb/$1/+IGNOREME" ]; then
+
+	if [ -e "$pdb/$1/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $1 ); then
+
 		echo ''
+
 		echo "===>>> +IGNOREME file is present for $1"
+
 		echo ''
+
@@ -2243,7 +2434,13 @@
+
 			fail "No entry for $origin in $PM_INDEX"
+
 	fi
+
 
+
-	case `pkg_version -t $iport $new_port 2>/dev/null` in
+
+	local pkg_version
+
+	if [ -z "$use_pkgng" ]; then
+
+		pkg_version="pkg_version"
+
+	else
+
+		pkg_version="pkg version"
+
+	fi
+
+	case `$pkg_version -t $iport $new_port 2>/dev/null` in
+
 	\<)	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" ;;
+
@@ -2397,6 +2594,18 @@
+
 		rundeps=`gen_dep_list run-depends-list`
+
 
+
 		for dep in $d_port_list; do
+
+			# if the port is already installed, do not mark
+
+			# it as a build-only dependency, or it will be
+
+			# installed by package and/or removed
+
+			if [ -z "$use_pkgng" ]; then
+
+				iport_from_origin ${dep#$pd/} >/dev/null &&
+
+					run_dl="$run_dl $dep" &&
+
+					continue
+
+			else
+
+				pkg info -e ${dep#$pd/} &&
+
+					run_dl="$run_dl $dep" &&
+
+					continue
+
+			fi
+
 			case "$rundeps" in
+
 			*" ${dep} "*|*${dep}*)
+
 				varname=`echo ${dep#$pd/} | sed 's#[-+/\.]#_#g'`
+
@@ -2466,7 +2675,11 @@
+
 				fail "Cannot cd to $d_port"
+
 			fi
+
 			for glob in $conflicts; do
+
-				confl_p=`pkg_info -I $glob 2>/dev/null`
+
+				if [ -z "$use_pkgng" ]; then
+
+					confl_p=`pkg_info -I $glob 2>/dev/null`
+
+				else
+
+					confl_p=`pkg query -g "%n-%v" $glob 2>/dev/null`
+
+				fi
+
 				if [ -n "$confl_p" ]; then
+
 					confl_p=${confl_p%% *}
+
 					echo ''
+
@@ -2601,8 +2814,13 @@
+
 		done
+
 
+
 		for dep in $build_only_dl_g; do
+
-			grep -q "@comment DEPORIGIN:${dep#$pd/}$" $pdb/*/+CONTENTS ||
+
-				temp_bodlg="$temp_bodlg $dep"
+
+			if [ -z "$use_pkgng" ]; then
+
+				grep -q "@comment DEPORIGIN:${dep#$pd/}$" $pdb/*/+CONTENTS ||
+
+					temp_bodlg="$temp_bodlg $dep"
+
+			else
+
+				[ "`pkg query "%?r" ${dep#$pd/}`" = "1" ] ||
+
+					temp_bodlg="$temp_bodlg $dep"
+
+			fi
+
 		done
+
 
+
 		build_only_dl_g=" `uniquify_list $temp_bodlg` "
+
@@ -2626,7 +2844,7 @@
+
 
+
 urb_update () {
+
 	# Global: PM_URB_UP
+
-	local verb origin req_by
+
+	local verb origin req_by req_by_o
+
 
+
 	verb=checking ; [ -n "$1" ] && verb=updating
+
 
+
@@ -2636,15 +2854,25 @@
+
 	echo ''
+
 
+
 	for origin in $PM_URB_ORIGINS; do
+
-		for req_by in `grep -l DEPORIGIN:${origin}$ $pdb/*/+CONTENTS`; do
+
-			req_by="${req_by%/+CONTENTS}"
+
-			req_by="${req_by##*/}"
+
+		if [ -z "$use_pkgng" ]; then
+
+			for req_by in `grep -l DEPORIGIN:${origin}$ $pdb/*/+CONTENTS`; do
+
+				req_by="${req_by%/+CONTENTS}"
+
+				req_by="${req_by##*/}"
+
 
+
-			case " $PM_URB_IPORTS" in *" $req_by "*) continue ;; esac
+
-			case " $PM_URB_ORIGINS" in *" `origin_from_pdb $req_by` "*) continue ;; esac
+
+				case " $PM_URB_IPORTS" in *" $req_by "*) continue ;; esac
+
+				case " $PM_URB_ORIGINS" in *" `origin_from_pdb $req_by` "*) continue ;; esac
+
 
+
-			PM_URB_LIST="${PM_URB_LIST} ${req_by}"
+
-		done
+
+				PM_URB_LIST="${PM_URB_LIST} ${req_by}"
+
+			done
+
+		else
+
+			while read req_by req_by_o; do
+
+				case " $PM_URB_IPORTS" in *" $req_by "*) continue ;; esac
+
+				case " $PM_URB_ORIGINS" in *" $req_by_o "*) continue ;; esac
+
+				PM_URB_LIST="${PM_URB_LIST} ${req_by}"
+
+			done << EOF
+
+`pkg query "%rn-%rv %ro" ${origin}`
+
+EOF
+
+		fi
+
 	done
+
 
+
 	if [ -n "$PM_URB_LIST" ]; then
+
@@ -2656,7 +2884,11 @@
+
 
+
 	for req_by in $PM_URB_LIST; do
+
 		# Probably not needed, but JIC
+
-		[ -d "$pdb/$req_by" ] || continue
+
+		if [ -z "$use_pkgng" ]; then
+
+			[ -d "$pdb/$req_by" ] || continue
+
+		else
+
+			pkg info -e $req_by || continue
+
+		fi
+
 
+
 		pm_v "===>>> $req_by depends on $PM_URB_IPORTS"
+
 
+
@@ -2697,12 +2929,16 @@
+
 			else
+
 				fail "$pd/${port} does not exist"
+
 			fi ;;
+
-		*)	if [ -d "$pdb/$port" ]; then
+
+		*)	if [ -d "$pdb/$port" ] && ( [ -z "$use_pkgng" ] || pkg info -e $port ); then
+
 				worklist_temp="$worklist_temp $port"
+
 			else
+
 				find_glob_dirs $port
+
 				case $? in
+
-				1)	fail "$pdb/$port does not exist" ;;
+
+				1)	if [ -z "$use_pkgng" ]; then
+
+						fail "$pdb/$port does not exist"
+
+					else
+
+						fail "$port is not installed"
+
+					fi ;;
+
 				*)	local dir
+
 					for dir in $glob_dirs; do
+
 					worklist_temp="$worklist_temp ${dir#$pdb/}"
+
@@ -2806,9 +3042,16 @@
+
 		*/*)	origin=$port ;;
+
 		*)	# If an installed version does not exist at this
+
 			# point it probably got updated as a dependency
+
-			if [ ! -d "$pdb/$port" ]; then
+
-				numports=$(( $numports - 1 ))
+
-				continue
+
+			if [ -z "$use_pkgng" ]; then
+
+				if [ ! -d "$pdb/$port" ]; then
+
+					numports=$(( $numports - 1 ))
+
+					continue
+
+				fi
+
+			else
+
+				if ! pkg info -e $port; then
+
+					numports=$(( $numports - 1 ))
+
+					continue
+
+				fi
+
 			fi
+
 			origin=`origin_from_pdb $port` ;;
+
 		esac
+
@@ -3032,11 +3275,16 @@
+
 	case "$argv" in
+
 	'')	echo '' ; no_valid_port ;;
+
 	$pd/*)	portdir=${argv#$pd/} ;;
+
-	$pdb/*)	upg_port=${argv#$pdb/} ;;
+
+	$pdb/*)	if [ -z "$use_pkgng" ]; then
+
+			upg_port=${argv#$pdb/}
+
+		else
+
+			echo '' ; no_valid_port
+
+		fi ;;
+
 	/*)	echo '' ; no_valid_port ;;
+
 	*/*)	portdir=$argv ;;
+
 	\.)	portdir=${PWD##*/ports/} ;; # Not always $pd, could be symlink
+
-	*)	[ -d "$pdb/$argv" ] && upg_port=$argv ;;
+
+	*)	[ -d "$pdb/$argv" ] && ( [ -z "$use_pkgng" ] || pkg info -e $argv ) &&
+
+		upg_port=$argv ;;
+
 	esac
+
 
+
 	if [ -z "$portdir" -a -z "$upg_port" ]; then
+
@@ -3069,7 +3317,7 @@
+
 
+
 	case "$arg2" in
+
 	*/*)	ro_opd=$arg2 ; ro_upg_port=`iport_from_origin $ro_opd` ;;
+
-	*)	if [ -d "$pdb/$arg2" ]; then
+
+	*)	if [ -d "$pdb/$arg2" ] && ( [ -z "$use_pkgng" ] || pkg info -e $arg2 ); then
+
 			ro_upg_port=$arg2
+
 		else
+
 			find_glob_dirs $arg2 && ro_upg_port=${glob_dirs#$pdb/}
+
@@ -3080,12 +3328,21 @@
+
 	unset arg2
+
 
+
 	if [ -z "$ro_upg_port" ]; then
+
-		if ! grep -ql "DEPORIGIN:$ro_opd$" $pdb/*/+CONTENTS; then
+
+		if [ -z "$use_pkgng" ]; then
+
+			grep -ql "DEPORIGIN:$ro_opd$" $pdb/*/+CONTENTS
+
+		else
+
+			pkg query -a "%do" | grep -q "^$ro_opd$"
+
+		fi
+
+		if [ "$?" -eq 1 ]; then
+
 			echo ''
+
-			echo "===>>> The second argument to -o can be a port in $pdb,"
+
+			if [ -z "$use_pkgng" ]; then
+
+				echo "===>>> The second argument to -o can be a port in $pdb,"
+
+			else
+
+				echo "===>>> The second argument to -o can be a package name,"
+
+			fi
+
 			echo "       or a port directory from $pd"
+
 			echo ''
+
-			echo "       $ro_opd does not seem to be installed,"
+
+			echo "       $arg2 does not seem to be installed,"
+
 			echo '       or listed as a dependency'
+
 			echo '' ; no_valid_port
+
 		fi
+
@@ -3117,7 +3374,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
+
 	if [ -z "$PM_BUILDING" ]; then
+
 		# Only need to prompt for this once if -ai
+
@@ -3525,7 +3782,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
+
-			case `pkg_version -t $upg_port $latest_pv` in
+
+			if [ -z "$use_pkgng" ]; then
+
+				pkg_version="pkg_version"
+
+			else
+
+				pkg_version="pkg version"
+
+			fi
+
+			case `$pkg_version -t $upg_port $latest_pv` in
+
 			\<)	use_package=up_newer
+
 				pm_v "===>>> Available package ($latest_pv)"
+
 				pm_v "       is newer than installed ($upg_port)" ;;
+
@@ -3541,7 +3803,12 @@
+
 			pm_v "===>>> There is a package available ($latest_pv)"
+
 		fi
+
 	elif [ -n "$latest_pv" ]; then
+
-		case `pkg_version -t $new_port $latest_pv` in
+
+		if [ -z "$use_pkgng" ]; then
+
+			pkg_version="pkg_version"
+
+		else
+
+			pkg_version="pkg version"
+
+		fi
+
+		case `$pkg_version -t $new_port $latest_pv` in
+
 		\<)	# Could happen if ports tree is out of date
+
 			use_package=up_old_tree
+
 			pm_v "===>>> Available package ($latest_pv)"
+
@@ -3640,7 +3907,12 @@
+
 		    grep -v ^$LOCALBASE_COMPAT > $ldconfig_out
+
 
+
 		unset temp
+
-		for file in `pkg_info -q -L $UPGRADE_PORT |
+
+		if [ -z "$use_pkgng" ]; then
+
+			pkglist="pkg_info -q -L"
+
+		else
+
+			pkglist="pkg query %Fp"
+
+		fi
+
+		for file in `$pkglist $UPGRADE_PORT |
+
 		    sort - $ldconfig_out | uniq -d`; do
+
 			temp="${temp}$file "
+
 		done
+
@@ -3663,6 +3935,7 @@
+
 
+
 	if [ -n "$REPLACE_ORIGIN" -a -n "$ro_upg_port" ]; then
+
 		# Delete any existing versions of the old port
+
+		np_orphan=`pkg query "%a" $ro_upg_port`
+
 		pm_sv "Running pkg_delete for $ro_upg_port"
+
 		pm_pkg_delete_s -f $ro_upg_port
+
 	fi
+
@@ -3681,6 +3954,8 @@
+
 			unset preserve_port files
+
 		esac
+
 
+
+		# orphan state of $ro_upg_port has precedence
+
+		: ${np_orphan:=`pkg query "%a" $upg_port`}
+
 		pm_sv "Running pkg_delete for $upg_port"
+
 		pm_pkg_delete_s -f $upg_port
+
 	fi
+
@@ -3726,6 +4001,18 @@
+
 		unset port_log_args
+
 	fi
+
 
+
+	if [ -z "$UPDATE_ALL" -a -z "$REPLACE_ORIGIN" -a -z "$PM_URB" -a "${np_orphan:-1}" -eq 1 ]; then
+
+		if [ -n "$PM_MULTI_PORTS" ]; then
+
+			case "$PM_MULTI_PORTS" in
+
+			*:${upg_port:-NONE}:*)	np_orphan=0 ;;
+
+			*:${portdir}:*)		np_orphan=0 ;;
+
+			esac
+
+		else
+
+			[ "$$" -eq "$PM_PARENT_PID" ] && np_orphan=0
+
+		fi
+
+	fi
+
+	[ "${np_orphan:-1}" -eq 1 ] && PM_MAKE_ARGS="${PM_MAKE_ARGS} -DINSTALLS_DEPENDS"
+
+	unset np_orphan
+
 	# 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
+
@@ -3743,29 +4030,32 @@
+
 	fi
+
 fi
+
 
+
-for file in $preserve_port_files; do
+
-	mv $file ${file}-new
+
-	mv ${preserve_dir}/${file##*/} $file
+
-	oldmd5="MD5:`md5 -q $file`"
+
-
+
-	new_cont=`pm_mktemp contents`
+
-	while read left right; do
+
-		case "$left" in
+
-		@cwd)		short_file="${file#${right}/}" ;;
+
-		$short_file)	found_it=found_it ; continue;;
+
-		@comment)	if [ -n "$found_it" ]; then
+
-					echo -e "${short_file}-new\n$left $right"
+
-					echo -e "$short_file\n@comment $oldmd5"
+
-					unset found_it
+
-					continue
+
-				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
+
+#TODO
+
+if [ -z "$use_pkgng" ]; then
+
+	for file in $preserve_port_files; do
+
+		mv $file ${file}-new
+
+		mv ${preserve_dir}/${file##*/} $file
+
+		oldmd5="MD5:`md5 -q $file`"
+
+
+
+		new_cont=`pm_mktemp contents`
+
+		while read left right; do
+
+			case "$left" in
+
+			@cwd)		short_file="${file#${right}/}" ;;
+
+			$short_file)	found_it=found_it ; continue;;
+
+			@comment)	if [ -n "$found_it" ]; then
+
+						echo -e "${short_file}-new\n$left $right"
+
+						echo -e "$short_file\n@comment $oldmd5"
+
+						unset found_it
+
+						continue
+
+					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
+
+fi
+
 if [ -n "$preserve_dir" ]; then
+
 	rmdir $preserve_dir 2>/dev/null
+
 	unset preserve_dir preserve_port_files
+
@@ -3781,7 +4071,12 @@
+
 temp=`find $LOCALBASE_COMPAT -type d -empty 2>/dev/null`
+
 if [ -z "$temp" ] && [ -d "$LOCALBASE_COMPAT" ]; then
+
 	unset files
+
-	for file in `pkg_info -q -L $new_port`; do
+
+	if [ -z "$use_pkgng" ]; then
+
+		pkglist="pkg_info -q -L"
+
+	else
+
+		pkglist="pkg query %Fp"
+
+	fi
+
+	for file in `$pkglist $new_port`; do
+
 		[ -f "${LOCALBASE_COMPAT}/${file##*/}" ] &&
+
 			files="${files}${LOCALBASE_COMPAT}/${file##*/} "
+
 	done
+
@@ -3844,7 +4139,8 @@
+
 	/bin/unlink $dist_list_temp ; unset ds dist_list_temp
+
 fi
+
 
+
-if [ -n "$use_package" ]; then
+
+# pkgng does not need this
+
+if [ -z "$use_pkgng" -a -n "$use_package" ]; then
+
 	if grep -q DEPORIGIN $pdb/$new_port/+CONTENTS; then
+
 		echo "===>>> Updating dependencies for $new_port to match installed versions"
+
 		update_contents $pdb/$new_port/+CONTENTS
+
@@ -3879,27 +4175,29 @@
+
 	echo ''
+
 fi
+
 
+
-check_dependency_files $portdir $new_port
+
-if [ -s "$grep_deps" ]; then
+
-	echo "===>>> Updating dependency entry for $new_port in each dependent port"; pm_v
+
-	while read d_port; do
+
-		pm_v "===>>> $d_port"
+
-		dp_cont=$pdb/$d_port/+CONTENTS
+
-		[ -e "$dp_cont" ] || continue
+
-
+
-		if [ -n "$ro_opd" ]; then
+
-			grep -ql "DEPORIGIN:$ro_opd$" $dp_cont &&
+
-				update_contents $dp_cont $portdir $new_port $ro_opd
+
-		fi
+
-		# Do this one last so it can get deleted as a duplicate
+
-		# if ro_opd is present.
+
-		if grep -ql "DEPORIGIN:$portdir$" $dp_cont; then
+
-			update_contents $dp_cont $portdir $new_port
+
-		fi
+
-	done < $grep_deps
+
-	unset d_port dp_cont do_update
+
+if [ -z $use_pkgng ]; then
+
+	check_dependency_files $portdir $new_port
+
+	if [ -s "$grep_deps" ]; then
+
+		echo "===>>> Updating dependency entry for $new_port in each dependent port"; pm_v
+
+		while read d_port; do
+
+			pm_v "===>>> $d_port"
+
+			dp_cont=$pdb/$d_port/+CONTENTS
+
+			[ -e "$dp_cont" ] || continue
+
+
+
+			if [ -n "$ro_opd" ]; then
+
+				grep -ql "DEPORIGIN:$ro_opd$" $dp_cont &&
+
+					update_contents $dp_cont $portdir $new_port $ro_opd
+
+			fi
+
+			# Do this one last so it can get deleted as a duplicate
+
+			# if ro_opd is present.
+
+			if grep -ql "DEPORIGIN:$portdir$" $dp_cont; then
+
+				update_contents $dp_cont $portdir $new_port
+
+			fi
+
+		done < $grep_deps
+
+		unset d_port dp_cont do_update
+
 
+
-	update_required_by $new_port
+
+		update_required_by $new_port
+
+	fi
+
 fi
+
 
+
 if [ -n "$upg_port" ]; then
+
@@ -3924,6 +4222,7 @@
+
 
+
 [ -n "$PM_URB" -o -n "$PM_URB_UP" ] && PM_URB_DONE="${PM_URB_DONE}${new_port}:"
+
 [ -n "$PM_URB" -o -n "$PM_URB_UP" -o -n "$PM_FORCE" ] &&
+
+	pm_mkdir_s $pdb/$new_port &&
+
 	$PM_SU_CMD touch $pdb/$new_port/PM_UPGRADE_DONE_FLAG
+
 
+
 if [ -z "$DONT_SCRUB_DISTFILES" ]; then
deleted ports/portmaster.patch
@@ -1,1155 +0,0 @@
-
--- portmaster.orig	2012-01-31 03:17:17.681285114 +0100
-
+++ portmaster	2012-02-03 04:19:47.404428436 +0100
-
@@ -125,6 +125,8 @@
-
 			if [ -n "$files" ]; then
-
 				pm_sv Deleting \'install complete\' flags
-
 				pm_find_s $pdb -type f -name PM_UPGRADE_DONE_FLAG -delete
-
+				[ -n "$use_pkgng" ] &&
-
+					pm_find_s $pdb -type d -depth 1 -empty ! -path \*\.zfs/\* -delete 2>/dev/null
-
 			fi
-
 		fi
-
 		if [ -z "$BACKUP" -a -z "$NO_BACKUP" -a -n "$NB_DELETE" ]; then
-
@@ -212,10 +214,14 @@
-
 	if [ -n "$build_deps_il" ]; then
-
 		echo "===>>> Deleting installed build-only dependencies"
-
 		cd
-
-		for f in $build_deps_il; do
-
-			pm_v "       $f"
-
-			pm_pkg_delete_s -f $f
-
-		done
-
+		if [ -z "$use_pkgng" ]; then
-
+			for f in $build_deps_il; do
-
+				pm_v "       $f"
-
+				pm_pkg_delete_s -f $f
-
+			done
-
+		else
-
+			pm_pkg_delete_s -f $build_deps_il
-
+		fi
-
 		echo ''
-
 	fi
-
 
-
@@ -292,7 +298,13 @@
-
 			 unset -v 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 $*; }
-
+pm_pkg_delete_s   () {
-
+	if [ -z "$use_pkgng" ]; then
-
+		$PM_SU_CMD /usr/sbin/pkg_delete $*;
-
+	else
-
+		$PM_SU_CMD /usr/local/sbin/pkg delete -y $*;
-
+	fi
-
+}
-
 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; }
-
@@ -496,12 +508,17 @@
-
 
-
 	pattern=`globstrip $1`
-
 
-
-	glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*`
-
+	if [ -z "$use_pkgng" ]; then
-
+		glob_dirs=`find $pdb -depth 1 -type d -name ${pattern}\*`
-
+	else
-
+		glob_dirs=`pkg query -g "%n-%v" ${pattern}\*`
-
+	fi
-
 	case "$glob_dirs" in
-
 	# Match a newline in multiple responses from find
-
 	*'
-
 '*)		return 2 ;;
-
-	$pdb/*)	return ;;
-
+	'')	;;
-
+	*)	return ;;
-
 	esac
-
 
-
 	unset glob_dirs
-
@@ -511,20 +528,35 @@
-
 origin_from_pdb () {
-
 	local o
-
 
-
-	o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && {
-
-		echo ${o#@comment ORIGIN:}; return 0; }
-
+	if [ -z "$use_pkgng" ]; then
-
+		o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && {
-
+			echo ${o#@comment ORIGIN:}; return 0; }
-
+	else
-
+		pkg info -qo $1 2>/dev/null && return 0
-
+	fi
-
 
-
 	case "$1" in bsdpan-*) return 3 ;; esac
-
 
-
-	if [ -e "$pdb/$1/+IGNOREME" ]; then
-
+	if [ -e "$pdb/$1/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $1 ); then
-
 		if [ -n "$PM_VERBOSE" -o -n "$LIST_ORIGINS" ]; then
-
-			echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
-
+			if [ -z "$use_pkgng" ]; then
-
+				echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
-
+			else
-
+				# an error above doesn't necessarily mean there's
-
+				# a problem in +MANIFEST, so don't mention it
-
+				echo "	===>>> No origin available for $1" >&2
-
+			fi
-
 			echo "	===>>> $pdb/$1/+IGNOREME exists" >&2
-
 			echo '' >&2
-
 		fi
-
 		return 2
-
 	else
-
-		echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
-
+		if [ -z "$use_pkgng" ]; then
-
+			echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
-
+		else
-
+			# same as above
-
+			echo "	===>>> No origin available for $1" >&2
-
+		fi
-
 		echo '' >&2
-
 	fi
-
 	return 1
-
@@ -666,12 +698,17 @@
-
 	o)	REPLACE_ORIGIN=oopt ;;
-
 	p)	fail 'The -p option has been deprecated' ;;
-
 	r)	PM_URB=ropt
-
-		if [ -d "$pdb/$OPTARG" ]; then
-
+		if [ -d "$pdb/$OPTARG" ] && ( [ -z "$use_pkgng" ] || pkg info -e $OPTARG ); then
-
 			glob_dirs=$OPTARG
-
 		else
-
+			case "$OPTARG" in */*) fail 'The argument to -r must be a package name, or a glob pattern' ;; esac
-
 			find_glob_dirs $OPTARG
-
 			case $? in
-
-			1)	fail "$pdb/$OPTARG does not exist" ;;
-
+			1)	if [ -z "$use_pkgng" ]; then
-
+					fail "$pdb/$OPTARG does not exist"
-
+				else
-
+					fail "$OPTARG is not installed"
-
+				fi ;;
-
 			2)	fail 'The argument to -r must match only one port' ;;
-
 			esac
-
 		fi
-
@@ -753,6 +790,12 @@
-
 	    fail 'The -[ar] options are not compatible with other updates'
-
 
-
 	if [ -n "$PM_PACKAGES" -o -n "$PM_PACKAGES_BUILD" ]; then
-
+		if [ -n "$use_pkgng" ]; then
-
+			unset PM_PACKAGES PM_PACKAGES_BUILD PM_PACKAGES_LOCAL PM_PACKAGES_NEWER PM_ALWAYS_FETCH PM_DELETE_PACKAGES
-
+			echo "===>>> Package installation support cannot be used with pkgng yet,"
-
+			echo "       it will be disabled"
-
+			echo ''
-
+		fi
-
 		[ `/sbin/sysctl -n kern.osreldate 2>/dev/null` -lt 600400 ] &&
-
 			fail Package installation support requires FreeBSD 6.4 or newer
-
 	fi
-
@@ -818,7 +861,12 @@
-
 		fi
-
 		unset INDEXFILE INDEXDIR
-
 
-
-		PM_INDEX_PORTS=`pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
-
+		if [ -z "$use_pkgng" ]; then
-
+			pkg_version="pkg_version"
-
+		else
-
+			pkg_version="pkg version"
-
+		fi
-
+		PM_INDEX_PORTS=`$pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
-
 		export PM_INDEX_PORTS
-
 
-
 		if [ -z "$pd" -o "$pd" != /usr/ports ]; then
-
@@ -875,6 +923,10 @@
-
 iport_from_origin () {
-
 	local sn dir
-
 
-
+	if [ -n "$use_pkgng" ]; then
-
+		pkg info -q ${1} || return 1
-
+		return
-
+	fi
-
 	sn=${1#*/} ; sn=${sn%-*} ; sn=${sn%%[0-9]*}
-
 
-
 	if ! dir=`grep -l "@comment ORIGIN:${1}$" $pdb/${sn}*/+CONTENTS 2>/dev/null`; then
-
@@ -903,9 +955,11 @@
-
 	done
-
 }
-
 
-
+# useless with pkgng
-
 check_dependency_files () {
-
 	# Global: grep_deps
-
 	local origin iport ro_opd
-
+	[ -n "$use_pkgng" ] && return
-
 
-
 	origin=$1 ; iport=$2
-
 
-
@@ -985,9 +1039,11 @@
-
 	fi
-
 }
-
 
-
+# also useless with pkgng
-
 update_contents () {
-
 	local IFS delete contents origin n_port old_origin iport new_cont
-
 	local o_seen line d_missing d_origin d_iport prev_line answer
-
+	[ -n "$use_pkgng" ] && return
-
 
-
 # To prevent words in a line being treated individually
-
 IFS='
-
@@ -1083,7 +1139,7 @@
-
 	for l in `grep "^$sf|" $pd/MOVED`; do
-
 		case "$l" in
-
 		${sf}\|\|*) [ -n "$iport" ] || iport=`iport_from_origin $sf`
-
-			if [ -e "$pdb/$iport/+IGNOREME" ]; then
-
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
-
 				if [ -n "$PM_VERBOSE" ]; then
-
 					echo ''
-
 					echo "	===>>> The $sf port has been deleted"
-
@@ -1118,7 +1174,7 @@
-
 		echo ''
-
 
-
 		[ -n "$iport" ] || iport=`iport_from_origin $sf`
-
-		[ -e "$pdb/$iport/+IGNOREME" ] || return 1
-
+		[ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ) || return 1
-
 	fi
-
 	return 0
-
 }
-
@@ -1129,35 +1185,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/}
-
+	if [ -z "$use_pkgng" ]; then
-
+		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
-
+		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
-
+	fi
-
 
-
 	# Tell safe_exit that we are done
-
 	pm_unlink ${DI_FILES}-e
-
@@ -1203,25 +1286,45 @@
-
 }
-
 
-
 ports_by_category () {
-
-	local pkg
-
+	local pkg dep rdep
-
 	pm_v "===>>> Sorting ports by category"
-
 
-
-	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/}"
-
+	if [ -z "$use_pkgng" ]; then
-
+		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/}"
-
+				else
-
+					trunks="$trunks ${pkg#$pdb/}"
-
+				fi
-
 			else
-
-				trunks="$trunks ${pkg#$pdb/}"
-
+				if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
-
+					leaves="$leaves ${pkg#$pdb/}"
-
+				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"
-
+				fi
-
 			fi
-
-		fi
-
-	done
-
+		done << EOF
-
+`pkg query -a "%n-%v %?d %?r"`
-
+EOF
-
+	fi
-
 }
-
 
-
 delete_empty_dist_subdirs () {
-
@@ -1269,9 +1372,11 @@
-
 	esac
-
 }
-
 
-
+# useless with pkgng
-
 update_required_by () {
-
 	# Global: grep_deps
-
 	local do_update
-
+	[ -n "$use_pkgng" ] && /bin/unlink $grep_deps && unset grep_deps && return
-
 
-
 	if [ -e "$pdb/$1/+REQUIRED_BY" ]; then
-
 		sort $pdb/$1/+REQUIRED_BY | cmp -s $grep_deps - || do_update=do_update
-
@@ -1324,11 +1429,13 @@
-
 
-
 	echo "===>>> Checking for stale packages"
-
 	for package in `find $PACKAGES -type f | sort`; do
-
-		pkg_dir=${package##*/} ; pkg_dir=${pkg_dir%\.tbz} ; echo ''
-
+		pkg_dir=${package##*/} ; pkg_dir=${pkg_dir%\.*} ; echo ''
-
 
-
 		origin=`tar -O -zxvf $package '+CONTENTS' 2>/dev/null | grep '@comment ORIGIN:'` ||
-
-			fail Empty origin in $package
-
+			origin=`tar -O -zxvf $package '+MANIFEST' 2>/dev/null | grep '^origin:'` ||
-
+			fail "Empty origin in $package"
-
 		origin=${origin#@comment ORIGIN:}
-
+		origin=${origin#origin: }
-
 
-
 		if [ -z "$PM_INDEX" ]; then
-
 			if [ -d "$pd/$origin" ]; then
-
@@ -1344,16 +1451,28 @@
-
 		fi
-
 
-
 		if [ -n "$port_ver" ]; then
-
-			if [ "${port_ver}.tbz" = "${package##*/}" ]; then
-
+			if [ "$port_ver" = "$pkg_dir" ]; then
-
 				echo "===>>> ${package##*/} is up to date"
-
-				if [ ! -d "${pdb}/${pkg_dir}" ]; then
-
-					echo "	===>>> $pkg_dir is not installed"
-
-					echo "	===>>> Path: ${package}"
-
-					get_answer_yn y "\n\t===>>> Delete stale package: ${package##*/}"
-
-					case "$?" in
-
-					0)	echo "	===>>> Deleting $package"
-
-						pm_unlink_s $package ;;
-
-					esac
-
+				if [ -z "$use_pkgng" ]; then
-
+					if [ ! -d "${pdb}/${pkg_dir}" ]; then
-
+						echo "	===>>> $pkg_dir is not installed"
-
+						echo "	===>>> Path: ${package}"
-
+						get_answer_yn y "\n\t===>>> Delete stale package: ${package##*/}"
-
+						case "$?" in
-
+						0)	echo "	===>>> Deleting $package"
-
+							pm_unlink_s $package ;;
-
+						esac
-
+					fi
-
+				else
-
+					if ! pkg info -e $pkg_dir; then
-
+						echo "	===>>> $pkg_dir is not installed"
-
+						echo "	===>>> Path: ${package}"
-
+						get_answer_yn y "\n\t===>>> Delete stale package: ${package##*/}"
-
+						case "$?" in
-
+						0)	echo "	===>>> Deleting $package"
-
+							pm_unlink_s $package ;;
-
+						esac
-
+					fi
-
 				fi
-
 				unset port_ver
-
 				continue
-
@@ -1364,10 +1483,18 @@
-
 
-
 			unset port_ver
-
 
-
-			if [ -d "${pdb}/${pkg_dir}" ]; then
-
-				echo "	===>>> ${package##*/} matches the installed version"
-
+			if [ -z "$use_pkgng" ]; then
-
+				if [ -d "${pdb}/${pkg_dir}" ]; then
-
+					echo "	===>>> ${package##*/} matches the installed version"
-
+				else
-
+					echo "	===>>> ${package##*/} is not installed"
-
+				fi
-
 			else
-
-				echo "	===>>> ${package##*/} is not installed"
-
+				if pkg info -e $pkg_dir; then
-
+					echo "	===>>> ${package##*/} matches the installed version"
-
+				else
-
+					echo "	===>>> ${package##*/} is not installed"
-
+				fi
-
 			fi
-
 		fi
-
 
-
@@ -1406,6 +1533,7 @@
-
 fi	# [ -n "$CLEAN_PACKAGES" ]
-
 
-
 if [ -n "$CHECK_DEPENDS" ]; then
-
+	[ -n "$use_pkgng" ] && exit 0 # this is useless with pkgng
-
 	PM_VERBOSE=pmv_check_depends
-
 IFS='
-
 '
-
@@ -1452,24 +1580,42 @@
-
 	unique_list=':'
-
 
-
 	echo "===>>> Building list of installed port names"; echo ''
-
-	for pkg in $pdb/*; do
-
-		[ -d $pkg ] || continue
-
+	if [ -z "$use_pkgng" ]; then
-
+		for pkg in $pdb/*; do
-
+			[ -d $pkg ] || continue
-
 
-
-		iport=${pkg#$pdb/}
-
-		origin=`origin_from_pdb $iport` || continue
-
+			iport=${pkg#$pdb/}
-
+			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
-
 
-
-		if ! pm_cd $pd/$origin; then
-
-			echo "	===>>> $pd/$origin does not exist for $pkg"
-
-			continue
-
-		fi
-
-		unique_list="${unique_list}`make -V UNIQUENAME`:"
-
-	done
-
+			if ! pm_cd $pd/$origin; then
-
+				echo "	===>>> $pd/$origin does not exist for $pkg"
-
+				continue
-
+			fi
-
+			unique_list="${unique_list}`make -V UNIQUENAME`:"
-
+		done
-
+	else
-
+		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
-
+
-
+			if ! pm_cd $pd/$origin; then
-
+				echo "	===>>> $pd/$origin does not exist for $pkg"
-
+				continue
-
+			fi
-
+			unique_list="${unique_list}`make -V UNIQUENAME`:"
-
+		done << EOF
-
+`pkg query -a "%n-%v %o"`
-
+EOF
-
+	fi
-
 
-
 	echo "===>>> Checking $port_dbdir"
-
 
-
@@ -1570,7 +1716,7 @@
-
 
-
 	if [ -z "$do_update" -a -z "$skip" -a -z "$PM_INDEX_ONLY" ] && [ -d "$pd/$origin" ]; then
-
 		if ! pm_cd $pd/$origin; then
-
-			if [ -e "$pdb/$iport/+IGNOREME" ]; then
-
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
-
 				echo "	===>>> Warning: Unable to cd to $pd/$origin"
-
 				echo "	===>>> Continuing due to $pdb/$iport/+IGNOREME"
-
 				echo ''
-
@@ -1587,13 +1733,13 @@
-
 
-
 		# If the port has moved and no +IGNOREME, we have to update it
-
 		if [ -n "$moved_npd" ]; then
-
-			if [ ! -e "$pdb/$iport/+IGNOREME" ]; then
-
-				do_update=do_update_moved
-
-			else
-
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
-
 				echo "	===>>> Continuing due to $pdb/$iport/+IGNOREME"
-
 				echo ''
-
 				CUR_DEPS="${CUR_DEPS}${iport}:${origin}:"
-
 				return 0
-
+			else
-
+				do_update=do_update_moved
-
 			fi
-
 		fi
-
 	fi
-
@@ -1610,14 +1756,20 @@
-
 				unset port_ver
-
 			fi
-
 		else
-
-			case `pkg_version -t $iport $port_ver` in
-
+			local pkg_version
-
+			if [ -z "$use_pkgng" ]; then
-
+				pkg_version="pkg_version"
-
+			else
-
+				pkg_version="pkg version"
-
+			fi
-
+			case `$pkg_version -t $iport $port_ver` in
-
 			\<)	do_update=upd_lt ;;
-
 			=)	;;	# Can be reached if same version with different options
-
 			\>)	if [ -n "$PM_VERBOSE" ]; then
-
 					echo "	===>>> Port version $port_ver does not"
-
 					echo "	===>>> seem newer than installed $iport"
-
 				fi ;;
-
-			*)	fail "pkg_version -t $iport $port_ver gave an unexpected result"
-
+			*)	fail "$pkg_version -t $iport $port_ver gave an unexpected result"
-
 			esac
-
 
-
 			[ -z "$do_update" ] && {
-
@@ -1633,8 +1785,9 @@
-
 	if [ -n "$LIST_PLUS" ]; then
-
 		if [ -z "$moved_npd" ]; then
-
 			echo "	===>>> New version available: $port_ver"
-
-			[ -e "$pdb/$iport/+IGNOREME" ] &&
-
+			if [ -e "$pdb/$iport/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $iport ); then
-
 				echo "	===>>> +IGNOREME file is present for $1"
-
+			fi
-
 			pm_cd_pd $origin && check_state
-
 			num_updates=$(( $num_updates + 1 ))
-
 		else
-
@@ -1689,7 +1842,13 @@
-
 	fi
-
 
-
 	pm_cd $pkgdir || fail "Cannot cd into $pkgdir to create a package"
-
-	if $PM_SU_CMD pkg_create -b $2; then
-
+	local pkg_create
-
+	if [ -z "$use_pkgng" ]; then
-
+		pkg_create="pkg_create -b"
-
+	else
-
+		pkg_create="pkg create "
-
+	fi
-
+	if $PM_SU_CMD $pkg_create $2; then
-
 		if [ "$1" = "$pbu" ]; then
-
 			if [ -n "$BACKUP" ]; then
-
 				echo "	===>>> Package saved to $1" ; echo ''
-
@@ -2028,10 +2187,14 @@
-
 fi
-
 
-
 if [ -n "$EXPUNGE" ]; then
-
-	if [ ! -d "$pdb/$EXPUNGE" ]; then
-
+	if [ ! -d "$pdb/$EXPUNGE" ] || ( [ -n "$use_pkgng" ] && ! pkg info -e $EXPUNGE ); then
-
 		find_glob_dirs $EXPUNGE
-
 		case $? in
-
-		1)	fail "No such directory/port: $pdb/$EXPUNGE" ;;
-
+		1)	if [ -z "$use_pkgng" ]; then
-
+				fail "No such directory/port: $pdb/$EXPUNGE"
-
+			else
-
+				fail "No such port: $EXPUNGE"
-
+			fi ;;
-
 		2)	echo "===>>> $EXPUNGE matched multiple ports"
-
 			fail "The -e option works with only one port at a time" ;;
-
 		0)	EXPUNGE=${glob_dirs#$pdb/}
-
@@ -2040,7 +2203,11 @@
-
 	fi
-
 
-
 	origin=`origin_from_pdb $EXPUNGE`
-
-	deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
-
+	if [ -z "$use_pkgng" ]; then
-
+		deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
-
+	else
-
+		deplist=`pkg query "%rn-%rv" $origin`
-
+	fi
-
 	if [ -n "$deplist" ]; then
-
 		echo "===>>> Warning: Ports with dependencies on ${EXPUNGE}:"
-
 		for dep in $deplist; do
-
@@ -2048,7 +2215,8 @@
-
 		done
-
 		get_answer_yn n "\n\t===>>> Delete this dependency data"
-
 		case "$?" in
-
-		0)	for f in $deplist; do
-
+		0)	[ -n "$use_pkgng" ] && exit 1 #TODO
-
+			for f in $deplist; do
-
 				update_contents delete $f $origin
-
 			done ;;
-
 		*)	exit 1 ;;
-
@@ -2058,8 +2226,13 @@
-
 	[ -n "$BACKUP" ] && { init_packages ; pm_pkg_create $pbu $EXPUNGE; }
-
 	[ -z "$DONT_SCRUB_DISTFILES" ] && { delete_all_distfiles $origin; delete_dist_list; }
-
 
-
-	echo "===>>> Running pkg_delete -f $EXPUNGE"
-
-	pm_pkg_delete_s -f $EXPUNGE || fail 'pkg_delete failed'
-
+	if [ -z "$use_pkgng" ]; then
-
+		pkg_delete="pkg_delete"
-
+	else
-
+		pkg_delete="pkg delete"
-
+	fi
-
+	echo "===>>> Running $pkg_delete -f $EXPUNGE"
-
+	pm_pkg_delete_s -f $EXPUNGE || fail "$pkg_delete failed"
-
 
-
 	echo '' ; echo "===>>> Running ${0##*/} -s $ARGS"
-
 	exec $0 -s $ARGS
-
@@ -2069,13 +2242,21 @@
-
 if [ -n "$CLEAN_STALE" ]; then
-
 	[ -z "$no_del_list" ] && export no_del_list=':'
-
 
-
-	for file in `find $pdb -type f -name \+REQUIRED_BY -empty` ; do
-
+	if [ -z "$use_pkgng" ]; then
-
+		find_stale_ports="find $pdb -type f -name \+REQUIRED_BY -empty"
-
+	else
-
+		find_stale_ports="pkg query -a \"%?r %n-%v\" | awk '/^0/ { print \$2 }'"
-
+	fi
-
+	for file in `eval $find_stale_ports` ; do
-
 		iport="${file%/+REQUIRED_BY}" ; iport=${iport#$pdb/}
-
 
-
 		case "$no_del_list" in *:${iport}:*) continue ;; esac
-
 
-
 		origin=`origin_from_pdb $iport`
-
-		deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
-
+		deplist=""
-
+		if [ -z "$use_pkgng" ]; then
-
+			deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
-
+		fi
-
 		if [ -n "$deplist" ]; then
-
 			echo ''
-
 			echo "===>>> Warning: Unrecorded dependencies on ${iport}:"
-
@@ -2088,22 +2269,32 @@
-
 			continue
-
 		fi
-
 
-
-		pkg_info $iport
-
+		if [ -z "$use_pkgng" ]; then
-
+			pkg_info $iport
-
+			pkg_delete="pkg_delete"
-
+		else
-
+			pkg info -f $iport
-
+			pkg_delete="pkg delete"
-
+		fi
-
 
-
 		get_answer_yn n "\t===>>> ${iport} is no longer depended on, delete"
-
 		case "$?" in
-
 		0)	[ -n "$BACKUP" ] && { init_packages ; pm_pkg_create $pbu $iport; }
-
 			[ -z "$DONT_SCRUB_DISTFILES" ] && { delete_all_distfiles $origin; delete_dist_list; }
-
 
-
-			echo "===>>> Running pkg_delete -f $iport"
-
-			pm_pkg_delete_s -f $iport || fail 'pkg_delete failed'
-
+			echo "===>>> Running $pkg_delete -f $iport"
-
+			pm_pkg_delete_s -f $iport || fail "$pkg_delete failed"
-
 
-
 			exec $0 -s $ARGS ;;
-
-		*)	get_answer_yn n "\t===>>> Delete this dependency data"
-
-			case "$?" in
-
-			0)	pm_unlink_s $file ;;
-
-			*)	no_del_list="${no_del_list}${iport}:" ;;
-
-			esac ;;
-
+		*)	if [ -z "$use_pkgng" ]; then
-
+				get_answer_yn n "\t===>>> Delete this dependency data"
-
+				case "$?" in
-
+				0)	pm_unlink_s $file ;;
-
+				*)	no_del_list="${no_del_list}${iport}:" ;;
-
+				esac
-
+			else
-
+				no_del_list="${no_del_list}${iport}:"
-
+			fi ;;
-
 		esac
-
 	done
-
 	exit 0
-
@@ -2126,7 +2317,7 @@
-
 	# to go out to the disk if we don't have to.
-
 	[ -z "$RESTART" ] && return 1
-
 
-
-	if [ ! -e "$pdb/${1}/PM_UPGRADE_DONE_FLAG" ]; then
-
+	if [ ! -e "$pdb/${1}/PM_UPGRADE_DONE_FLAG" ] || ( [ -n "$use_pkgng" ] && ! pkg info -e $1 ); then
-
 		return 1
-
 	else
-
 		already_done $1
-
@@ -2143,7 +2334,7 @@
-
 	case "$INTERACTIVE_YES" in *:${1}:*) return 0 ;; esac
-
 	case "$INTERACTIVE_NO" in *:${1}:*) return 1 ;; esac
-
 
-
-	if [ -e "$pdb/$1/+IGNOREME" ]; then
-
+	if [ -e "$pdb/$1/+IGNOREME" ] && ( [ -z "$use_pkgng" ] || pkg info -e $1 ); then
-
 		echo ''
-
 		echo "===>>> +IGNOREME file is present for $1"
-
 		echo ''
-
@@ -2243,7 +2434,13 @@
-
 			fail "No entry for $origin in $PM_INDEX"
-
 	fi
-
 
-
-	case `pkg_version -t $iport $new_port 2>/dev/null` in
-
+	local pkg_version
-
+	if [ -z "$use_pkgng" ]; then
-
+		pkg_version="pkg_version"
-
+	else
-
+		pkg_version="pkg version"
-
+	fi
-
+	case `$pkg_version -t $iport $new_port 2>/dev/null` in
-
 	\<)	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" ;;
-
@@ -2397,6 +2594,18 @@
-
 		rundeps=`gen_dep_list run-depends-list`
-
 
-
 		for dep in $d_port_list; do
-
+			# if the port is already installed, do not mark
-
+			# it as a build-only dependency, or it will be
-
+			# installed by package and/or removed
-
+			if [ -z "$use_pkgng" ]; then
-
+				iport_from_origin ${dep#$pd/} >/dev/null &&
-
+					run_dl="$run_dl $dep" &&
-
+					continue
-
+			else
-
+				pkg info -e ${dep#$pd/} &&
-
+					run_dl="$run_dl $dep" &&
-
+					continue
-
+			fi
-
 			case "$rundeps" in
-
 			*" ${dep} "*|*${dep}*)
-
 				varname=`echo ${dep#$pd/} | sed 's#[-+/\.]#_#g'`
-
@@ -2466,7 +2675,11 @@
-
 				fail "Cannot cd to $d_port"
-
 			fi
-
 			for glob in $conflicts; do
-
-				confl_p=`pkg_info -I $glob 2>/dev/null`
-
+				if [ -z "$use_pkgng" ]; then
-
+					confl_p=`pkg_info -I $glob 2>/dev/null`
-
+				else
-
+					confl_p=`pkg query -g "%n-%v" $glob 2>/dev/null`
-
+				fi
-
 				if [ -n "$confl_p" ]; then
-
 					confl_p=${confl_p%% *}
-
 					echo ''
-
@@ -2601,8 +2814,13 @@
-
 		done
-
 
-
 		for dep in $build_only_dl_g; do
-
-			grep -q "@comment DEPORIGIN:${dep#$pd/}$" $pdb/*/+CONTENTS ||
-
-				temp_bodlg="$temp_bodlg $dep"
-
+			if [ -z "$use_pkgng" ]; then
-
+				grep -q "@comment DEPORIGIN:${dep#$pd/}$" $pdb/*/+CONTENTS ||
-
+					temp_bodlg="$temp_bodlg $dep"
-
+			else
-
+				[ "`pkg query "%?r" ${dep#$pd/}`" = "1" ] ||
-
+					temp_bodlg="$temp_bodlg $dep"
-
+			fi
-
 		done
-
 
-
 		build_only_dl_g=" `uniquify_list $temp_bodlg` "
-
@@ -2626,7 +2844,7 @@
-
 
-
 urb_update () {
-
 	# Global: PM_URB_UP
-
-	local verb origin req_by
-
+	local verb origin req_by req_by_o
-
 
-
 	verb=checking ; [ -n "$1" ] && verb=updating
-
 
-
@@ -2636,15 +2854,25 @@
-
 	echo ''
-
 
-
 	for origin in $PM_URB_ORIGINS; do
-
-		for req_by in `grep -l DEPORIGIN:${origin}$ $pdb/*/+CONTENTS`; do
-
-			req_by="${req_by%/+CONTENTS}"
-
-			req_by="${req_by##*/}"
-
+		if [ -z "$use_pkgng" ]; then
-
+			for req_by in `grep -l DEPORIGIN:${origin}$ $pdb/*/+CONTENTS`; do
-
+				req_by="${req_by%/+CONTENTS}"
-
+				req_by="${req_by##*/}"
-
 
-
-			case " $PM_URB_IPORTS" in *" $req_by "*) continue ;; esac
-
-			case " $PM_URB_ORIGINS" in *" `origin_from_pdb $req_by` "*) continue ;; esac
-
+				case " $PM_URB_IPORTS" in *" $req_by "*) continue ;; esac
-
+				case " $PM_URB_ORIGINS" in *" `origin_from_pdb $req_by` "*) continue ;; esac
-
 
-
-			PM_URB_LIST="${PM_URB_LIST} ${req_by}"
-
-		done
-
+				PM_URB_LIST="${PM_URB_LIST} ${req_by}"
-
+			done
-
+		else
-
+			while read req_by req_by_o; do
-
+				case " $PM_URB_IPORTS" in *" $req_by "*) continue ;; esac
-
+				case " $PM_URB_ORIGINS" in *" $req_by_o "*) continue ;; esac
-
+				PM_URB_LIST="${PM_URB_LIST} ${req_by}"
-
+			done << EOF
-
+`pkg query "%rn-%rv %ro" ${origin}`
-
+EOF
-
+		fi
-
 	done
-
 
-
 	if [ -n "$PM_URB_LIST" ]; then
-
@@ -2656,7 +2884,11 @@
-
 
-
 	for req_by in $PM_URB_LIST; do
-
 		# Probably not needed, but JIC
-
-		[ -d "$pdb/$req_by" ] || continue
-
+		if [ -z "$use_pkgng" ]; then
-
+			[ -d "$pdb/$req_by" ] || continue
-
+		else
-
+			pkg info -e $req_by || continue
-
+		fi
-
 
-
 		pm_v "===>>> $req_by depends on $PM_URB_IPORTS"
-
 
-
@@ -2697,12 +2929,16 @@
-
 			else
-
 				fail "$pd/${port} does not exist"
-
 			fi ;;
-
-		*)	if [ -d "$pdb/$port" ]; then
-
+		*)	if [ -d "$pdb/$port" ] && ( [ -z "$use_pkgng" ] || pkg info -e $port ); then
-
 				worklist_temp="$worklist_temp $port"
-
 			else
-
 				find_glob_dirs $port
-
 				case $? in
-
-				1)	fail "$pdb/$port does not exist" ;;
-
+				1)	if [ -z "$use_pkgng" ]; then
-
+						fail "$pdb/$port does not exist"
-
+					else
-
+						fail "$port is not installed"
-
+					fi ;;
-
 				*)	local dir
-
 					for dir in $glob_dirs; do
-
 					worklist_temp="$worklist_temp ${dir#$pdb/}"
-
@@ -2806,9 +3042,16 @@
-
 		*/*)	origin=$port ;;
-
 		*)	# If an installed version does not exist at this
-
 			# point it probably got updated as a dependency
-
-			if [ ! -d "$pdb/$port" ]; then
-
-				numports=$(( $numports - 1 ))
-
-				continue
-
+			if [ -z "$use_pkgng" ]; then
-
+				if [ ! -d "$pdb/$port" ]; then
-
+					numports=$(( $numports - 1 ))
-
+					continue
-
+				fi
-
+			else
-
+				if ! pkg info -e $port; then
-
+					numports=$(( $numports - 1 ))
-
+					continue
-
+				fi
-
 			fi
-
 			origin=`origin_from_pdb $port` ;;
-
 		esac
-
@@ -3032,11 +3275,16 @@
-
 	case "$argv" in
-
 	'')	echo '' ; no_valid_port ;;
-
 	$pd/*)	portdir=${argv#$pd/} ;;
-
-	$pdb/*)	upg_port=${argv#$pdb/} ;;
-
+	$pdb/*)	if [ -z "$use_pkgng" ]; then
-
+			upg_port=${argv#$pdb/}
-
+		else
-
+			echo '' ; no_valid_port
-
+		fi ;;
-
 	/*)	echo '' ; no_valid_port ;;
-
 	*/*)	portdir=$argv ;;
-
 	\.)	portdir=${PWD##*/ports/} ;; # Not always $pd, could be symlink
-
-	*)	[ -d "$pdb/$argv" ] && upg_port=$argv ;;
-
+	*)	[ -d "$pdb/$argv" ] && ( [ -z "$use_pkgng" ] || pkg info -e $argv ) &&
-
+		upg_port=$argv ;;
-
 	esac
-
 
-
 	if [ -z "$portdir" -a -z "$upg_port" ]; then
-
@@ -3069,7 +3317,7 @@
-
 
-
 	case "$arg2" in
-
 	*/*)	ro_opd=$arg2 ; ro_upg_port=`iport_from_origin $ro_opd` ;;
-
-	*)	if [ -d "$pdb/$arg2" ]; then
-
+	*)	if [ -d "$pdb/$arg2" ] && ( [ -z "$use_pkgng" ] || pkg info -e $arg2 ); then
-
 			ro_upg_port=$arg2
-
 		else
-
 			find_glob_dirs $arg2 && ro_upg_port=${glob_dirs#$pdb/}
-
@@ -3080,12 +3328,21 @@
-
 	unset arg2
-
 
-
 	if [ -z "$ro_upg_port" ]; then
-
-		if ! grep -ql "DEPORIGIN:$ro_opd$" $pdb/*/+CONTENTS; then
-
+		if [ -z "$use_pkgng" ]; then
-
+			grep -ql "DEPORIGIN:$ro_opd$" $pdb/*/+CONTENTS
-
+		else
-
+			pkg query -a "%do" | grep -q "^$ro_opd$"
-
+		fi
-
+		if [ "$?" -eq 1 ]; then
-
 			echo ''
-
-			echo "===>>> The second argument to -o can be a port in $pdb,"
-
+			if [ -z "$use_pkgng" ]; then
-
+				echo "===>>> The second argument to -o can be a port in $pdb,"
-
+			else
-
+				echo "===>>> The second argument to -o can be a package name,"
-
+			fi
-
 			echo "       or a port directory from $pd"
-
 			echo ''
-
-			echo "       $ro_opd does not seem to be installed,"
-
+			echo "       $arg2 does not seem to be installed,"
-
 			echo '       or listed as a dependency'
-
 			echo '' ; no_valid_port
-
 		fi
-
@@ -3117,7 +3374,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
-
 	if [ -z "$PM_BUILDING" ]; then
-
 		# Only need to prompt for this once if -ai
-
@@ -3525,7 +3782,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
-
-			case `pkg_version -t $upg_port $latest_pv` in
-
+			if [ -z "$use_pkgng" ]; then
-
+				pkg_version="pkg_version"
-
+			else
-
+				pkg_version="pkg version"
-
+			fi
-
+			case `$pkg_version -t $upg_port $latest_pv` in
-
 			\<)	use_package=up_newer
-
 				pm_v "===>>> Available package ($latest_pv)"
-
 				pm_v "       is newer than installed ($upg_port)" ;;
-
@@ -3541,7 +3803,12 @@
-
 			pm_v "===>>> There is a package available ($latest_pv)"
-
 		fi
-
 	elif [ -n "$latest_pv" ]; then
-
-		case `pkg_version -t $new_port $latest_pv` in
-
+		if [ -z "$use_pkgng" ]; then
-
+			pkg_version="pkg_version"
-
+		else
-
+			pkg_version="pkg version"
-
+		fi
-
+		case `$pkg_version -t $new_port $latest_pv` in
-
 		\<)	# Could happen if ports tree is out of date
-
 			use_package=up_old_tree
-
 			pm_v "===>>> Available package ($latest_pv)"
-
@@ -3640,7 +3907,12 @@
-
 		    grep -v ^$LOCALBASE_COMPAT > $ldconfig_out
-
 
-
 		unset temp
-
-		for file in `pkg_info -q -L $UPGRADE_PORT |
-
+		if [ -z "$use_pkgng" ]; then
-
+			pkglist="pkg_info -q -L"
-
+		else
-
+			pkglist="pkg query %Fp"
-
+		fi
-
+		for file in `$pkglist $UPGRADE_PORT |
-
 		    sort - $ldconfig_out | uniq -d`; do
-
 			temp="${temp}$file "
-
 		done
-
@@ -3663,6 +3935,7 @@
-
 
-
 	if [ -n "$REPLACE_ORIGIN" -a -n "$ro_upg_port" ]; then
-
 		# Delete any existing versions of the old port
-
+		np_orphan=`pkg query "%a" $ro_upg_port`
-
 		pm_sv "Running pkg_delete for $ro_upg_port"
-
 		pm_pkg_delete_s -f $ro_upg_port
-
 	fi
-
@@ -3681,6 +3954,8 @@
-
 			unset preserve_port files
-
 		esac
-
 
-
+		# orphan state of $ro_upg_port has precedence
-
+		: ${np_orphan:=`pkg query "%a" $upg_port`}
-
 		pm_sv "Running pkg_delete for $upg_port"
-
 		pm_pkg_delete_s -f $upg_port
-
 	fi
-
@@ -3726,6 +4001,18 @@
-
 		unset port_log_args
-
 	fi
-
 
-
+	if [ -z "$UPDATE_ALL" -a -z "$REPLACE_ORIGIN" -a -z "$PM_URB" -a "${np_orphan:-1}" -eq 1 ]; then
-
+		if [ -n "$PM_MULTI_PORTS" ]; then
-
+			case "$PM_MULTI_PORTS" in
-
+			*:${upg_port:-NONE}:*)	np_orphan=0 ;;
-
+			*:${portdir}:*)		np_orphan=0 ;;
-
+			esac
-
+		else
-
+			[ "$$" -eq "$PM_PARENT_PID" ] && np_orphan=0
-
+		fi
-
+	fi
-
+	[ "${np_orphan:-1}" -eq 1 ] && PM_MAKE_ARGS="${PM_MAKE_ARGS} -DINSTALLS_DEPENDS"
-
+	unset np_orphan
-
 	# 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
-
@@ -3743,29 +4030,32 @@
-
 	fi
-
 fi
-
 
-
-for file in $preserve_port_files; do
-
-	mv $file ${file}-new
-
-	mv ${preserve_dir}/${file##*/} $file
-
-	oldmd5="MD5:`md5 -q $file`"
-
-
-
-	new_cont=`pm_mktemp contents`
-
-	while read left right; do
-
-		case "$left" in
-
-		@cwd)		short_file="${file#${right}/}" ;;
-
-		$short_file)	found_it=found_it ; continue;;
-
-		@comment)	if [ -n "$found_it" ]; then
-
-					echo -e "${short_file}-new\n$left $right"
-
-					echo -e "$short_file\n@comment $oldmd5"
-
-					unset found_it
-
-					continue
-
-				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
-
+#TODO
-
+if [ -z "$use_pkgng" ]; then
-
+	for file in $preserve_port_files; do
-
+		mv $file ${file}-new
-
+		mv ${preserve_dir}/${file##*/} $file
-
+		oldmd5="MD5:`md5 -q $file`"
-
+
-
+		new_cont=`pm_mktemp contents`
-
+		while read left right; do
-
+			case "$left" in
-
+			@cwd)		short_file="${file#${right}/}" ;;
-
+			$short_file)	found_it=found_it ; continue;;
-
+			@comment)	if [ -n "$found_it" ]; then
-
+						echo -e "${short_file}-new\n$left $right"
-
+						echo -e "$short_file\n@comment $oldmd5"
-
+						unset found_it
-
+						continue
-
+					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
-
+fi
-
 if [ -n "$preserve_dir" ]; then
-
 	rmdir $preserve_dir 2>/dev/null
-
 	unset preserve_dir preserve_port_files
-
@@ -3781,7 +4071,12 @@
-
 temp=`find $LOCALBASE_COMPAT -type d -empty 2>/dev/null`
-
 if [ -z "$temp" ] && [ -d "$LOCALBASE_COMPAT" ]; then
-
 	unset files
-
-	for file in `pkg_info -q -L $new_port`; do
-
+	if [ -z "$use_pkgng" ]; then
-
+		pkglist="pkg_info -q -L"
-
+	else
-
+		pkglist="pkg query %Fp"
-
+	fi
-
+	for file in `$pkglist $new_port`; do
-
 		[ -f "${LOCALBASE_COMPAT}/${file##*/}" ] &&
-
 			files="${files}${LOCALBASE_COMPAT}/${file##*/} "
-
 	done
-
@@ -3844,7 +4139,8 @@
-
 	/bin/unlink $dist_list_temp ; unset ds dist_list_temp
-
 fi
-
 
-
-if [ -n "$use_package" ]; then
-
+# pkgng does not need this
-
+if [ -z "$use_pkgng" -a -n "$use_package" ]; then
-
 	if grep -q DEPORIGIN $pdb/$new_port/+CONTENTS; then
-
 		echo "===>>> Updating dependencies for $new_port to match installed versions"
-
 		update_contents $pdb/$new_port/+CONTENTS
-
@@ -3879,27 +4175,29 @@
-
 	echo ''
-
 fi
-
 
-
-check_dependency_files $portdir $new_port
-
-if [ -s "$grep_deps" ]; then
-
-	echo "===>>> Updating dependency entry for $new_port in each dependent port"; pm_v
-
-	while read d_port; do
-
-		pm_v "===>>> $d_port"
-
-		dp_cont=$pdb/$d_port/+CONTENTS
-
-		[ -e "$dp_cont" ] || continue
-
-
-
-		if [ -n "$ro_opd" ]; then
-
-			grep -ql "DEPORIGIN:$ro_opd$" $dp_cont &&
-
-				update_contents $dp_cont $portdir $new_port $ro_opd
-
-		fi
-
-		# Do this one last so it can get deleted as a duplicate
-
-		# if ro_opd is present.
-
-		if grep -ql "DEPORIGIN:$portdir$" $dp_cont; then
-
-			update_contents $dp_cont $portdir $new_port
-
-		fi
-
-	done < $grep_deps
-
-	unset d_port dp_cont do_update
-
+if [ -z $use_pkgng ]; then
-
+	check_dependency_files $portdir $new_port
-
+	if [ -s "$grep_deps" ]; then
-
+		echo "===>>> Updating dependency entry for $new_port in each dependent port"; pm_v
-
+		while read d_port; do
-
+			pm_v "===>>> $d_port"
-
+			dp_cont=$pdb/$d_port/+CONTENTS
-
+			[ -e "$dp_cont" ] || continue
-
+
-
+			if [ -n "$ro_opd" ]; then
-
+				grep -ql "DEPORIGIN:$ro_opd$" $dp_cont &&
-
+					update_contents $dp_cont $portdir $new_port $ro_opd
-
+			fi
-
+			# Do this one last so it can get deleted as a duplicate
-
+			# if ro_opd is present.
-
+			if grep -ql "DEPORIGIN:$portdir$" $dp_cont; then
-
+				update_contents $dp_cont $portdir $new_port
-
+			fi
-
+		done < $grep_deps
-
+		unset d_port dp_cont do_update
-
 
-
-	update_required_by $new_port
-
+		update_required_by $new_port
-
+	fi
-
 fi
-
 
-
 if [ -n "$upg_port" ]; then
-
@@ -3924,6 +4222,7 @@
-
 
-
 [ -n "$PM_URB" -o -n "$PM_URB_UP" ] && PM_URB_DONE="${PM_URB_DONE}${new_port}:"
-
 [ -n "$PM_URB" -o -n "$PM_URB_UP" -o -n "$PM_FORCE" ] &&
-
+	pm_mkdir_s $pdb/$new_port &&
-
 	$PM_SU_CMD touch $pdb/$new_port/PM_UPGRADE_DONE_FLAG
-
 
-
 if [ -z "$DONT_SCRUB_DISTFILES" ]; then