Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Sep 2012 10:25:38 GMT
From:      Stefan Esser <se@FreeBSD.org>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/171406: [Patch] Make PORTAUDIT work with PKGNG
Message-ID:  <201209071025.q87APcrg042222@red.freebsd.org>
Resent-Message-ID: <201209071030.q87AU5kI055699@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         171406
>Category:       ports
>Synopsis:       [Patch] Make PORTAUDIT work with PKGNG
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Sep 07 10:30:04 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Stefan Esser
>Release:        FreeBSD 10.0-CURRENT amd64
>Organization:
FreeBSD.Org
>Environment:
System: FreeBSD xyzzy 10.0-CURRENT FreeBSD 10.0-CURRENT #33 r239375M: Sun Aug 19 00:18:08 CEST 2012 root@xyzzy:/sys/amd64/compile/SE amd64
>Description:
The portaudit tool has not been converted to work with PKGNG.

The attached patch adds support for PKGNG. The new pkg tools
are used, if /var/db/pkg/local.sqlite exists. If that is the
case, "pkg info" and "pkg version" are used throughout the
script (instead of pkg_info and pkg_version). In my testing
this suffices to make portaudit use PKGNG.

The actual change (indentation changes omitted, whitespace not preserved) is:

-----------------------------------------------------------
--- portaudit-cmd.sh~   2012-09-03 12:41:14.020639095 +0200
+++ portaudit-cmd.sh    2012-09-03 12:41:14.020639095 +0200
@@ -120,6 +120,10 @@
                return 0
        fi

+       if [ -f "%%DATABASEDIR%%/../pkg/local.sqlite" ]; then
+               pkg_info="%%LOCALBASE%%/sbin/pkg info"
+               pkg_version="%%LOCALBASE%%/sbin/pkg version"
+       else
        if [ -z "${pkg_info:-}" ]; then
                if [ -x "%%LOCALBASE%%/sbin/pkg_info" ]; then
                        pkg_info="%%LOCALBASE%%/sbin/pkg_info"
@@ -142,6 +146,7 @@
                echo "$pkg_info is too old, please update port sysutils/pkg_install-devel"
                return 1
        fi
+       fi

        if [ ! -r "$portaudit_dir/$portaudit_filename" ]; then
                echo "portaudit: Database missing, run \`portaudit -F' to update." >&2
-----------------------------------------------------------

I did not introduce a new substitution parameter for the location
of the PKGNG SQlite database. Instead "%%DATABASEDIR%%/../pkg" is
used, which is clearly sub-optimal. But I wanted to provide the
smallest patch (without additional changes to the port's Makefile).
>How-To-Repeat:
Run unmodified portaudit command on system with WITH_PKGNG.
>Fix:
Apply the patch contained in the following UUENCODED chunk.
It is identical to the above diff but fixes the indentation, too.


Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	/tmp/patch-portaudit-cmd.sh
#
echo x - /tmp/patch-portaudit-cmd.sh
sed 's/^X//' >/tmp/patch-portaudit-cmd.sh << 'd0647a32b451421e98a36b979b972812'
X--- portaudit-cmd.sh	2012-09-03 12:41:14.020639095 +0200
X+++ portaudit-cmd.sh-SE	2012-09-03 12:17:25.076889421 +0200
X@@ -120,27 +120,32 @@
X 		return 0
X 	fi
X 
X-	if [ -z "${pkg_info:-}" ]; then
X-		if [ -x "%%LOCALBASE%%/sbin/pkg_info" ]; then
X-			pkg_info="%%LOCALBASE%%/sbin/pkg_info"
X-		else
X-			pkg_info="/usr/sbin/pkg_info"
X+	if [ -f "%%DATABASEDIR%%/../pkg/local.sqlite" ]; then 
X+		pkg_info="%%LOCALBASE%%/sbin/pkg info"
X+		pkg_version="%%LOCALBASE%%/sbin/pkg version"
X+	else
X+		if [ -z "${pkg_info:-}" ]; then
X+			if [ -x "%%LOCALBASE%%/sbin/pkg_info" ]; then
X+				pkg_info="%%LOCALBASE%%/sbin/pkg_info"
X+			else
X+				pkg_info="/usr/sbin/pkg_info"
X+			fi
X 		fi
X-	fi
X 
X-	if [ -z "${pkg_version:-}"]; then
X-		case "$pkg_info" in
X-		*/*)
X-			pkg_version="${pkg_info%/*}/pkg_version";;
X-		*)
X-			pkg_version="pkg_version";;
X-		esac
X-	fi
X+		if [ -z "${pkg_version:-}"]; then
X+			case "$pkg_info" in
X+			*/*)
X+				pkg_version="${pkg_info%/*}/pkg_version";;
X+			*)
X+				pkg_version="pkg_version";;
X+			esac
X+		fi
X 
X-	PKG_INSTALL_VER=`$pkg_info -qP 2>/dev/null`
X-	if [ -z "$PKG_INSTALL_VER" -o "$PKG_INSTALL_VER" -lt %%REQPKGVER%% ]; then
X-		echo "$pkg_info is too old, please update port sysutils/pkg_install-devel"
X-		return 1
X+		PKG_INSTALL_VER=`$pkg_info -qP 2>/dev/null`
X+		if [ -z "$PKG_INSTALL_VER" -o "$PKG_INSTALL_VER" -lt %%REQPKGVER%% ]; then
X+			echo "$pkg_info is too old, please update port sysutils/pkg_install-devel"
X+			return 1
X+		fi
X 	fi
X 
X 	if [ ! -r "$portaudit_dir/$portaudit_filename" ]; then
d0647a32b451421e98a36b979b972812
exit



>Release-Note:
>Audit-Trail:
>Unformatted:



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