Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 May 2011 10:08:26 +0000 (UTC)
From:      Florent Thoumie <flz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r222353 - projects/portbuild/scripts
Message-ID:  <201105271008.p4RA8QoK017075@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: flz
Date: Fri May 27 10:08:26 2011
New Revision: 222353
URL: http://svn.freebsd.org/changeset/base/222353

Log:
  portbuild: prepare for pkgng.

Modified:
  projects/portbuild/scripts/buildscript

Modified: projects/portbuild/scripts/buildscript
==============================================================================
--- projects/portbuild/scripts/buildscript	Fri May 27 10:08:25 2011	(r222352)
+++ projects/portbuild/scripts/buildscript	Fri May 27 10:08:26 2011	(r222353)
@@ -50,12 +50,21 @@ add_pkg() {
     arch=$(uname -m)
     echo "adding dependencies"
     for i in $pkgs; do
-      echo "pkg_add $i"
+      echo "adding package $i"
       base=$(basename $i ${pkg_sufx})
-      if pkg_info -q -e $base; then
+      if [ $use_pkgng = "no" ]; then
+        pkg_cmd_info="pkg_info -qe"
+        pkg_cmd_add="pkg_add"
+      else
+        pkg_cmd_info="pkg info -qeO"
+        pkg_cmd_add="pkg add"
+      fi
+      eval $pkg_cmd_info $base >/dev/null 2>&1
+      if [ $? -eq 0 ]; then
         echo "skipping $base, already added"
       else
-        if ! pkg_add $i; then
+        eval $pkg_cmd_add $i >/dev/null 2>&1
+        if [ $? -ne 0 ]; then
           echo "error in dependency $i, exiting"
           cleanup 0
         fi
@@ -78,24 +87,45 @@ del_pkg() {
       recursion=0
       for i in $pkgs; do
         base=$(basename $i ${pkg_sufx})
-        if [ -s /var/db/pkg/${base}/+REQUIRED_BY ]; then
+        if [ $use_pkgng = "no" ]; then
+          dependents=$(cat /var/db/pkg/${base}/+REQUIRED_BY 2>/dev/null)
+          pkg_cmd_check="cd /var/db/pkg && test -d"
+        else
+          dependents=$(pkg info -qOr $base)
+          pkg_cmd_check="pkg info -qO"
+        fi
+        if [ -n "$dependents" ]; then
           recursion=1
           nextpkg="${base} ${nextpkg}"
-        elif [ -d /var/db/pkg/${base}/ ]; then
-          delpkg="${base} ${delpkg}"
+        else
+          eval $pkg_cmd_check $base >/dev/null 2>&1
+          if [ $? -eq 0 ]; then
+            delpkg="${base} ${delpkg}"
+          fi
         fi
       done
       pkgs="${nextpkg}"
       if [ "$dellist" != "" -a "$dellist" = "$delpkg" ]; then
+        if [ $use_pkgng = "no" ]; then
+          leftover=$(cd /var/db/pkg && find * -type d -maxdepth 1)
+        else
+          leftover=$(pkg info -qa)
+        fi
         echo "deleted list =\""$dellist"\", packages to delete ="\"$delpkg\"
         echo "The following packages were left behind (perhaps your dependency list is incomplete):"
-        ls /var/db/pkg
-        echo "error in pkg_delete, exiting"
+        echo $leftover
+        echo "error while removing package, exiting"
         cleanup 0
       else 
         for j in ${delpkg}; do
           echo "Deleting ${j}"
-          if ! (pkg_delete -f $j); then
+          if [ $use_pkgng = "no" ]; then
+            pkg_delete -f ${j}
+          else
+            jorig=$(pkg info -qOo ${j})
+            pkg delete -f ${jorig}
+          fi
+          if [ $? -ne 0 ]; then
             echo "--> error in pkg_delete, exiting"
             cleanup 0
           fi
@@ -128,6 +158,13 @@ restr=$(make -V RESTRICTED)
 # Inherit from environment set by portbuild.
 pkg_sufx=${PKG_SUFX}
 
+# Use pkgng if available.
+if [ -x /usr/sbin/pkg ]; then
+  use_pkgng="yes"
+else
+  use_pkgng="no"
+fi
+
 # Keep restricted distfiles in a subdirectory for extra protection
 # against leakage
 if [ ! -z "$restr" ]; then
@@ -358,10 +395,17 @@ EOF
   # Concatenate and remove duplicates
   BRD=$(echo $BD $RD | tr ' ' '\n' | sort -u | tr '\n' ' ')
   del_pkg ${BRD}
-  cd /var/db/pkg
-  if [ $(echo $(echo * | wc -c)) != 2 ]; then
-    echo "leftover packages:" *
-    del_pkg *
+
+  if [ $use_pkgng = "no" ]; then
+    cd /var/db/pkg
+    leftover=$(find * -type d -maxdepth 1)
+  else
+    leftover=$(pkg info -qa)
+  fi
+
+  if [ -n "$leftover" ]; then
+    echo "leftover packages:" $leftover
+    del_pkg $leftover
     echo "1" > /tmp/status
     cleanup 0
   fi



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105271008.p4RA8QoK017075>