Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 May 2002 00:09:25 +0300 (EEST)
From:      Maxim Sobolev <sobomax@FreeBSD.org>
To:        kris@obsecurity.org (Kris Kennaway)
Cc:        sobomax@FreeBSD.ORG (Maxim Sobolev), ports@FreeBSD.ORG
Subject:   Re: [RFC] Improving dependency registration procedure for ports
Message-ID:  <200205052109.g45L9Qq20891@vega.vega.com>
In-Reply-To: <20020505115958.E25341@xor.obsecurity.org> from "Kris Kennaway" at May 05, 2002 11:59:58 AM

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

--%--multipart-mixed-boundary-1.20837.1020632965--%
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> 
> 
> --xJK8B5Wah2CMJs8h
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: inline
> 
> On Sun, May 05, 2002 at 04:48:45PM +0300, Maxim Sobolev wrote:
> 
> > Attached patch should resolve this problem by registering real
> > dependencies using bar's origin as a key for looking up name of
> > package installed from the bar port.
> 
> Yes, this is needed.  Thanks for doing this work!
> 
> > Another feature embodied into this patch is the ability to designate
> > "replacement" ports for bar using ALT_ORIGINS variable. Imagine
> > situation when you have bar and bar-devel port, both of which have
> > the same functionality, but the latter being a bleeding-edge
> > version of the former. In this case port maintainer could set
> > "ALT_ORIGINS=somecat/bar-devel" in somecat/bar/Makefile and make
> > all ports that could use either bar or bar-devel depending on bar.
> > Then, during package-registration process bsd.port.mk will see
> > which one is really installed and generate list of dependencies
> > accordingly. This should be very useful for things like XFree86.
> 
> I'll have to think some more about this.  I'm not sure how much use it
> will actually be.
> 
> I'll take a closer look at the patch later.

Ok, attached is extended version of that patch, which adds support
for generating packages with DEPORIGIN: feature, as described in
my pkg_create(8) commit message.

Any feedback is greatly appreciated.

Thanks!

-Maxim

--%--multipart-mixed-boundary-1.20837.1020632965--%
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: ASCII text
Content-Disposition: attachment; filename="bsd.port.mk.diff"

Index: bsd.port.mk
===================================================================
RCS file: /home/ncvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.411
diff -d -u -r1.411 bsd.port.mk
--- bsd.port.mk	27 Apr 2002 11:22:59 -0000	1.411
+++ bsd.port.mk	5 May 2002 21:04:11 -0000
@@ -3151,22 +3157,32 @@
 package-depends-list:
 	@${PACKAGE-DEPENDS-LIST}
 
-PACKAGE-DEPENDS-LIST= \
+PACKAGE-DEPENDS-LIST?= \
 	if [ "${CHILD_DEPENDS}" ]; then \
-		${ECHO_CMD} "${PKGNAME}	${.CURDIR}"; \
+		for origin in ${PKGORIGIN} ${ALT_ORIGINS}; do \
+			installed=$$(${PKG_INFO} -qO $$origin); \
+			if [ "$$installed" ]; then \
+				break; \
+			fi; \
+		done; \
+		if [ -z "$$installed" ]; then \
+			installed="${PKGNAME}"; \
+		fi; \
+		for pkgname in $$installed; do \
+			${ECHO_CMD} "$$pkgname ${.CURDIR} ${PKGORIGIN}"; \
+		done; \
 	fi; \
 	checked="${PARENT_CHECKED}"; \
-	for dir in $$(${ECHO_CMD} "${LIB_DEPENDS} ${RUN_DEPENDS}" | ${TR} '\040' '\012' | ${SED} -e 's/^[^:]*://' -e 's/:.*//') $$(${ECHO_CMD} ${DEPENDS} | ${TR} '\040' '\012' | ${SED} -e 's/:.*//'); do \
+	for dir in $$(${ECHO_CMD} "${LIB_DEPENDS} ${RUN_DEPENDS}" | ${TR} '\040' '\012' | ${SED} -e 's/^[^:]*://' -e 's/:.*//') $$(${ECHO_CMD} ${DEPENDS} | ${TR} '\040' '\012' | ${SED} -e 's/:.*//' ); do \
 		if [ -d $$dir ]; then \
 			if (${ECHO_CMD} $$checked | ${GREP} -qwv "$$dir"); then \
 				childout=$$(cd $$dir; ${MAKE} CHILD_DEPENDS=yes PARENT_CHECKED="$$checked" package-depends-list); \
 				set -- $$childout; \
-				childname=""; childdir=""; \
+				childdir=""; \
 				while [ $$\# != 0 ]; do \
-					childname="$$childname $$1"; \
 					childdir="$$childdir $$2"; \
-					${ECHO_CMD} "$$1	$$2"; \
-					shift 2; \
+					${ECHO_CMD} "$$1 $$2 $$3"; \
+					shift 3; \
 				done; \
 				checked="$$dir $$childdir $$checked"; \
 			fi; \
@@ -3178,7 +3194,7 @@
 # Print out package names.
 
 package-depends:
-	@${PACKAGE-DEPENDS-LIST} | ${AWK} '{print $$1}'
+	@${PACKAGE-DEPENDS-LIST} | ${AWK} '{print $$1":"$$3}'
 
 ################################################################
 # Everything after here are internal targets and really

--%--multipart-mixed-boundary-1.20837.1020632965--%--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




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