Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Fix pkg version -t, Add portmaster support
Baptiste Daroussin committed 14 years ago
commit 475312ed92c8b331a34276ef8fd53bebb3e4df81
parent 8892a9b
2 files changed +346 -1
modified pkg/version.c
@@ -138,6 +138,8 @@ exec_version(int argc, char **argv)
	struct sbuf *cmd;
	struct sbuf *res;

+
	SLIST_INIT(&indexhead);
+

	while ((ch = getopt(argc, argv, "hIoqvl:L:XsOtT")) != -1) {
		switch (ch) {
			case 'h':
@@ -212,7 +214,6 @@ exec_version(int argc, char **argv)
				break;
		}
	} else if (opt & VERSION_INDEX) {
-
		SLIST_INIT(&indexhead);
		uname(&u);
		rel_major_ver = (int) strtol(u.release, NULL, 10);
		snprintf(indexpath, sizeof(indexpath), "%s/INDEX-%d", pkg_config("PORTSDIR"), rel_major_ver);
added ports/portmaster.patch
@@ -0,0 +1,344 @@
+
Index: portmaster
+
===================================================================
+
--- portmaster	(révision 224747)
+
+++ portmaster	(copie de travail)
+
@@ -2,6 +2,7 @@
+
 
+
 # Copyright (c) 2005-2011 Douglas Barton, All rights reserved
+
 # Please see detailed copyright below
+
+set -x
+
 
+
 trap trap_exit INT
+
 
+
@@ -291,7 +292,13 @@
+
 			 unset -v MASTER_RB_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/sbin/pkg delete $*;
+
+	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; }
+
@@ -494,13 +501,23 @@
+
 
+
 	pattern=`globstrip $1`
+
 
+
-	glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*`
+
-	case "$glob_dirs" in
+
-	# Match a newline in multiple responses from find
+
-	*'
+
-'*)		return 2 ;;
+
-	$pdb/*)	return ;;
+
-	esac
+
+	if [ -z "${use_pkgng}" ]; then
+
+		glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*`
+
+		case "$glob_dirs" in
+
+		# Match a newline in multiple responses from find
+
+		*'
+
+'*)			return 2 ;;
+
+		$pdb/*)	return ;;
+
+		esac
+
+	else
+
+		glob_dirs=`pkg info -qg ${pattern}\*`
+
+		case "$glob_dirs" in
+
+		# Match a newline in multiple responses from find
+
+		*'
+
+'*)			return 2 ;;
+
+		*)	return ;;
+
+		esac
+
+	fi
+
 
+
 	unset glob_dirs
+
 	return 1
+
@@ -509,8 +526,12 @@
+
 origin_from_pdb () {
+
 	local o
+
 
+
+	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; return 0;
+
+	fi
+
 
+
 	case "$1" in bsdpan-*) return 3 ;; esac
+
 
+
@@ -811,7 +832,11 @@
+
 		fi
+
 		unset INDEXFILE INDEXDIR
+
 
+
-		PM_INDEX_PORTS=`pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
+
+		if [ -z "${use_pkgng}" ]; then
+
+			PM_INDEX_PORTS=`pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
+
+		else
+
+			PM_INDEX_PORTS=`pkg version -Ivl\< $PM_INDEX | cut -f1 -d\<`
+
+		fi
+
 		export PM_INDEX_PORTS
+
 
+
 		if [ -z "$pd" -o "$pd" != /usr/ports ]; then
+
@@ -861,6 +886,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
+
@@ -1115,36 +1144,64 @@
+
 	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
+
+		for pkg in `pkg info -qa`; do
+
+			origin=`origin_from_pdb $pkg` || continue
+
+			if [ ! -d "$pdf/${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_maje -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
+
 	sed -i -e 1s/############/%%%%%%%%%%%%/ $DI_FILES
+
@@ -1192,22 +1249,44 @@
+
 	local pkg
+
 	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
+
+		local nb_rdep
+
+		local nb_dep
+
+		for pkg in `pkg info -qa`; do
+
+			nb_rdep=`pkg info -qr $pkg | wc -l`
+
+			nb_dep=`pkg info -qr $pkg | wc -l`
+
+			if [ $nb_rdep -gt 0 ]; then
+
+				if [ $nb_dep -gt 0 ]; then
+
+					branches="$branches ${pkg}"
+
+				else
+
+					trunks="$trunks ${pkg}"
+
+				fi
+
 			else
+
-				[ -d "$pkg" ] || continue
+
-				roots="$roots ${pkg#$pdb/}"
+
+				if [ $nb_dep -gt 0 ]; then
+
+					leaves="$leaves ${pkg}"
+
+				else
+
+					roots="$root ${pkg}"
+
+				fi
+
 			fi
+
-		fi
+
-	done
+
+		done
+
+	fi
+
 }
+
 
+
 delete_empty_dist_subdirs () {
+
@@ -1600,14 +1679,19 @@
+
 				unset port_ver
+
 			fi
+
 		else
+
-			case `pkg_version -t $iport $port_ver` in
+
+			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" ] && {
+
@@ -2224,7 +2308,12 @@
+
 			fail "No entry for $origin in $PM_INDEX"
+
 	fi
+
 
+
-	case `pkg_version -t $iport $new_port 2>/dev/null` in
+
+	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" ;;
+
@@ -2982,7 +3071,12 @@
+
 	/*)	echo '' ; no_valid_port ;;
+
 	*/*)	portdir=$argv ;;
+
 	\.)	portdir=${PWD##*/ports/} ;; # Not always $pd, could be symlink
+
-	*)	[ -d "$pdb/$argv" ] && upg_port=$argv ;;
+
+	*)	if [ -z "${use_pkgng}" ]; then
+
+			[ -d "$pdb/$argv" ] && upg_port=$argv
+
+		else
+
+			pkg info -e $argv && upg_port=$argv
+
+		fi
+
+		;;
+
 	esac
+
 
+
 	if [ -z "$portdir" -a -z "$upg_port" ]; then
+
@@ -3015,11 +3109,20 @@
+
 
+
 	case "$arg2" in
+
 	*/*)	ro_opd=$arg2 ; ro_upg_port=`iport_from_origin $ro_opd` ;;
+
-	*)	if [ -d "$pdb/$arg2" ]; then
+
-			ro_upg_port=$arg2
+
+	*)	if [ -z "${use_pkgng}" ]; then
+
+			if [ -d "$pdb/$arg2" ]; then
+
+				ro_upg_port=$arg2
+
+			else
+
+				find_glob_dirs $arg2 && ro_upg_port=${glob_dirs#$pdb/}
+
+				unset glob_dirs
+
+			fi
+
 		else
+
-			find_glob_dirs $arg2 && ro_upg_port=${glob_dirs#$pdb/}
+
-			unset glob_dirs
+
+			if pkg -e $arg2; then
+
+				ro_upg_port=$arg2
+
+			else
+
+				find_glob_dirs $arg2 && ro_upg_port=${glob_dirs}
+
+				unset glob_dirs
+
+			fi
+
 		fi
+
 		[ -n "$ro_upg_port" ] && ro_opd=`origin_from_pdb $ro_upg_port`
+
 	esac
+
@@ -3510,7 +3613,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)" ;;
+
@@ -3526,7 +3634,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)"