ports/144482: actual-package-depends rejects origins at non-standard depths

Brooks Davis brooks at FreeBSD.org
Fri Mar 5 01:10:03 UTC 2010


>Number:         144482
>Category:       ports
>Synopsis:       actual-package-depends rejects origins at non-standard depths
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Mar 05 01:10:02 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Brooks Davis
>Release:        FreeBSD 8.0-RC1 i386
>Organization:
>Environment:
System: FreeBSD freefall.freebsd.org 8.0-RC1 FreeBSD 8.0-RC1 #41 r197738: Sun Oct 4 11:00:31 UTC 2009 simon at freefall.freebsd.org:/usr/src/sys/i386/compile/FREEFALL i386


	
>Description:

The introduction of the actual-package-depends target in ports/112765
sped up port installation and generally things better.  However,
it broke the recording of dependencies on packages from non-standard
subtrees of ${PORTSDIR} with depths other than 2.

For example, at work we maintain an additional set of ports at
${PORTSDIR}/aero/<category>/<port>.  The package-depends target
lists those ports when they are dependencies, but actual-package-depends
rejects them because it attempts to normalize the origin by extracting the
last two directories from the path and then checking if that is a path
relative to ${PORTSDIR}.  Since our internal ports are all three
directories deep this fails.

I propose the following patch as a compromise.  If the origin is
relative to ${PORTSDIR} it works for any depth, but if not it falls back
to the old logic.  This causes our internal ports to be recordable as
dependencies.

>How-To-Repeat:
	
>Fix:

--- bsd.port.mk.orig	2010-03-04 17:03:47.000000000 -0800
+++ bsd.port.mk	2010-03-04 17:01:46.000000000 -0800
@@ -5494,8 +5494,13 @@
 			fi; \
 		done); \
 		for dir in ${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,}; do \
-			tmp=$${dir%/*}; \
-			dir=$${tmp\#\#*/}/$${dir\#\#*/}; \
+			tmp=$${dir\#${PORTSDIR}/}; \
+			if [ "$$tmp" = "$$dir" ]; then \
+				tmp=$${dir%/*}; \
+				dir=$${tmp\#\#*/}/$${dir\#\#*/}; \
+			else \
+				dir=$$tmp; \
+			fi; \
 			set -- $$origins; \
 			while [ $$\# -gt 1 ]; do \
 				if [ ! -d "${PORTSDIR}/$$2" ]; then \

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



More information about the freebsd-ports-bugs mailing list