From dm@home.dinoex.sub.org  Mon Mar 18 22:00:30 2002
Return-Path: <dm@home.dinoex.sub.org>
Received: from net2.dinoex.sub.org (net2.dinoex.de [212.184.201.182])
	by hub.freebsd.org (Postfix) with ESMTP id 4D61F37B416
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 18 Mar 2002 22:00:29 -0800 (PST)
Received: from home.dinoex.sub.org (home [217.6.200.196])
	by net2.dinoex.sub.org (8.12.2/8.12.2) with ESMTP id g2J60MwA012367
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 19 Mar 2002 07:00:23 +0100 (CET)
	(envelope-from dm@home.dinoex.sub.org)
Received: (from dm@localhost)
	by home.dinoex.sub.org (8.12.2/8.12.2/Submit) id g2J60Lvk051442;
	Tue, 19 Mar 2002 07:00:21 +0100 (CET)
	(envelope-from dm)
Message-Id: <200203190600.g2J60Lvk051442@home.dinoex.sub.org>
Date: Tue, 19 Mar 2002 07:00:21 +0100 (CET)
From: dirk.meyer@dinoex.sub.org
Reply-To: dirk.meyer@dinoex.sub.org
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: Installs existing packages for dependecies
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         36083
>Category:       ports
>Synopsis:       [PATCH] Installs existing packages for dependecies
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    portmgr
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Mar 18 22:10:01 PST 2002
>Closed-Date:    Thu Apr 17 03:28:52 PDT 2003
>Last-Modified:  Thu Apr 17 03:28:52 PDT 2003
>Originator:     Dirk Meyer
>Release:        FreeBSD 4.4-STABLE i386
>Organization:
privat
>Environment:
System: FreeBSD 4.5-STABLE i386

>Description:

	While package build, dependencies are always build.
	This patch installs an existing package with
	correct version.

>How-To-Repeat:

	This patch installs an existing package with correct version.
	to activate add to /etc/make.conf: USE_DEPENDED_PACKAGES=yes 

	This feature might even be on by default.

>Fix:

	apply a patch:

--- bsd.port.mk.orig	Sun Mar 17 00:37:02 2002
+++ bsd.port.mk	Tue Mar 19 06:56:27 2002
@@ -522,6 +522,8 @@
 #				  when you noticed the distfile you just fetched has
 #				  a different checksum and you intend to verify if
 #				  the port still works with it.
+# USE_DEPENDED_PACKAGES - Install dependencies from existing packages instead
+#						  of building it again.
 
 # Start of pre-makefile section.
 .if !defined(AFTERPORTMK)
@@ -1217,6 +1219,7 @@
 .endif
 
 PKG_CMD?=		/usr/sbin/pkg_create
+PKG_ADD?=	/usr/sbin/pkg_add
 PKG_DELETE?=	/usr/sbin/pkg_delete
 PKG_INFO?=		/usr/sbin/pkg_info
 .if !defined(PKG_ARGS)
@@ -2974,7 +2977,13 @@
 			if [ ! -d "$$dir" ]; then \
 				${ECHO_MSG} "     >> No directory for $$prog.  Skipping.."; \
 			else \
-				(cd $$dir; ${MAKE} $$target $$depends_args) ; \
+				subpkgfile=`(cd $$dir; ${MAKE} $$depends_args -V PKGFILE)`; \
+				if [ -r "$${subpkgfile}" -a X${USE_DEPENDED_PACKAGES} != "X" ]; then \
+					${ECHO_MSG} "===>   Installing existing package $${subpkgfile}"; \
+					${PKG_ADD} $${subpkgfile}; \
+				else \
+					(cd $$dir; ${MAKE} $$target $$depends_args) ; \
+				fi ; \
 				${ECHO_MSG} "===>   Returning to build of ${PKGNAME}"; \
 			fi; \
 		fi; \
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports->portmgr 
Responsible-Changed-By: petef 
Responsible-Changed-When: Mon Mar 18 22:40:12 PST 2002 
Responsible-Changed-Why:  
Over to maintainers 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36083 
State-Changed-From-To: open->analyzed 
State-Changed-By: kris 
State-Changed-When: Sun Feb 23 15:02:51 PST 2003 
State-Changed-Why:  
Currently being tested (modified version of patch) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36083 
State-Changed-From-To: analyzed->closed 
State-Changed-By: kris 
State-Changed-When: Sat Mar 1 18:09:32 PST 2003 
State-Changed-Why:  
Patch committed, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36083 
State-Changed-From-To: closed->open 
State-Changed-By: dinoex 
State-Changed-When: Sun Mar 2 10:43:56 PST 2003 
State-Changed-Why:  
Thanks, but there is a slight bug in the commit: 

sample: 
===>  Extracting for lsh-current-1.5.1 

From: dirk.meyer@dinoex.sub.org (Dirk Meyer)
To: FreeBSD-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: ports/36083: [PATCH] Installs existing packages for
	dependecies
Date: Sun, 02 Mar 2003 20:04:06 +0100

 I missed a case that was covered in my initial patch:
 When the option is set and the packaes dos not exist.
 
 please review.
 
 kind regards Dirk
 
 - Dirk Meyer, Im Grund 4, 34317 Habichtswald, Germany
 - [dirk.meyer@dinoex.sub.org],[dirk.meyer@guug.de],[dinoex@FreeBSD.org]
 
 Index: bsd.port.mk
 ===================================================================
 RCS file: /home/pcvs/ports/Mk/bsd.port.mk,v
 retrieving revision 1.441
 diff -u -r1.441 bsd.port.mk
 --- bsd.port.mk	2 Mar 2003 02:06:56 -0000	1.441
 +++ bsd.port.mk	2 Mar 2003 18:58:33 -0000
 @@ -3494,12 +3494,13 @@
  			if [ ! -d "$$dir" ]; then \
  				${ECHO_MSG} "     >> No directory for $$prog.  Skipping.."; \
  			else \
 -				(cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ; \
  				if [ X${USE_PACKAGE_DEPENDS} != "X" ]; then \
  					subpkgfile=`(cd $$dir; ${MAKE} $$depends_args -V PKGFILE)`; \
  					if [ -r "$${subpkgfile}" ]; then \
  						${ECHO_MSG} "===>   Installing existing package $${subpkgfile}"; \
  						${PKG_ADD} $${subpkgfile}; \
 +					else \
 +					  (cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ; \
  					fi; \
  				else \
  					(cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ; \

From: dirk.meyer@dinoex.sub.org (Dirk Meyer)
To: FreeBSD-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: ports/36083: [PATCH] Installs existing packages for
	dependecies
Date: Mon, 24 Mar 2003 21:36:04 +0100

 Latest commit does work as expected.
 Further improvements
 
 - lib-depends was not touched by the initial patch.
 - ignore this when target is configure or extract.
 
 kind regards Dirk
 
 - Dirk Meyer, Im Grund 4, 34317 Habichtswald, Germany
 - [dirk.meyer@dinoex.sub.org],[dirk.meyer@guug.de],[dinoex@FreeBSD.org]
 
 Index: bsd.port.mk
 ===================================================================
 RCS file: /home/pcvs/ports/Mk/bsd.port.mk,v
 retrieving revision 1.444
 @@ -3496,7 +3458,7 @@
  			else \
  				if [ X${USE_PACKAGE_DEPENDS} != "X" ]; then \
  					subpkgfile=`(cd $$dir; ${MAKE} $$depends_args -V PKGFILE)`; \
 -					if [ -r "$${subpkgfile}" ]; then \
 +					if [ -r "$${subpkgfile}" -a "$$target" = "${DEPENDS_TARGET}" ]; then \
  						${ECHO_MSG} "===>   Installing existing package $${subpkgfile}"; \
  						${PKG_ADD} $${subpkgfile}; \
  					else \
 @@ -3550,7 +3512,17 @@
  			if [ ! -d "$$dir" ]; then \
  				${ECHO_MSG} "     >> No directory for $$lib.  Skipping.."; \
  			else \
 -				(cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ; \
 +				if [ X${USE_PACKAGE_DEPENDS} != "X" ]; then \
 +					subpkgfile=`(cd $$dir; ${MAKE} $$depends_args -V PKGFILE)`; \
 +					if [ -r "$${subpkgfile}" -a "$$target" = "${DEPENDS_TARGET}" ]; then \
 +						${ECHO_MSG} "===>   Installing existing package $${subpkgfile}"; \
 +						${PKG_ADD} $${subpkgfile}; \
 +					else \
 +					  (cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ; \
 +					fi; \
 +				else \
 +					(cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ; \
 +				fi ; \
  				${ECHO_MSG} "===>   Returning to build of ${PKGNAME}"; \
  				if ! ${LDCONFIG} -r | ${GREP} -qwE -e "-l$$pattern"; then \
  					${ECHO_MSG} "Error: shared library \"$$lib\" does not exist"; \
State-Changed-From-To: open->analyzed 
State-Changed-By: kris 
State-Changed-When: Sat Apr 12 20:29:42 PDT 2003 
State-Changed-Why:  
Currently being tested on bento 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36083 
State-Changed-From-To: analyzed->closed 
State-Changed-By: kris 
State-Changed-When: Thu Apr 17 03:28:42 PDT 2003 
State-Changed-Why:  
Patch committed, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36083 
>Unformatted:
 >> Checksum OK for lsh-1.5.1.tar.gz. 
 ===>  Patching for lsh-current-1.5.1 
 ===>  Applying FreeBSD patches for lsh-current-1.5.1 
 ===>  Configuring for lsh-current-1.5.1 
 ===>   lsh-current-1.5.1 depends on file: /usr/local/include/gmp.h - found 
 ===>   lsh-current-1.5.1 depends on file: /usr/local/share/slib/require.scm - not found 
 ===>    Verifying install for /usr/local/share/slib/require.scm in /usr/ports/lang/slib 
 ===>  Extracting for slib-2d1_2 
 >> Checksum OK for slib2d1.zip. 
 ===>   slib-2d1_2 depends on executable: unzip - found 
 ===>  Patching for slib-2d1_2 
 ===>  Configuring for slib-2d1_2 
 ===>  Installing for slib-2d1_2 
 ===>   slib-2d1_2 depends on executable: guile - found 
 /bin/mkdir -p /usr/local/share/slib 
 install -c -o root -g wheel -m 444 /data/image/usr/ports/lang/slib/work/slib/*.scm /usr/local/share/slib 
 /bin/rm -f /usr/local/share/guile/slib 
 /bin/ln -sf /usr/local/share/slib /usr/local/share/guile/slib 
 /usr/local/bin/guile -c  "(use-modules (ice-9 slib)) (require 'new-catalog)" 
 ===>   Generating temporary packing list 
 ===>   Registering installation for slib-2d1_2 
 ===>   Installing existing package /usr/ports/packages/All/slib-2d1_2.tgz 
 pkg_add: package 'slib-2d1_2' or its older version already installed 
 *** Error code 1 
 
 The make in the dependency is called twice. 
 Which cause no harm beside some extra cycles. 
 
 Index: bsd.port.mk 
 =================================================================== 
 RCS file: /home/pcvs/ports/Mk/bsd.port.mk,v 
 retrieving revision 1.441 
 diff -u -r1.441 bsd.port.mk 
 --- bsd.port.mk	2 Mar 2003 02:06:56 -0000	1.441 
 +++ bsd.port.mk	2 Mar 2003 18:42:05 -0000 
 @@ -3494,7 +3494,6 @@ 
 if [ ! -d "$$dir" ]; then  
 ${ECHO_MSG} "     >> No directory for $$prog.  Skipping..";  
 else  
 -				(cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ;  
 if [ X${USE_PACKAGE_DEPENDS} != "X" ]; then  
 subpkgfile=`(cd $$dir; ${MAKE} $$depends_args -V PKGFILE)`;  
 if [ -r "$${subpkgfile}" ]; then  
 
 Stop in /usr/ports/current/lsh2. 
 
 http://www.freebsd.org/cgi/query-pr.cgi?pr=36083 
