From owner-freebsd-ports-bugs@FreeBSD.ORG Fri May 18 15:00:15 2007 Return-Path: <owner-freebsd-ports-bugs@FreeBSD.ORG> X-Original-To: freebsd-ports-bugs@hub.freebsd.org Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9BDB116A40B for <freebsd-ports-bugs@hub.freebsd.org>; Fri, 18 May 2007 15:00:15 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 700B413C4C6 for <freebsd-ports-bugs@hub.freebsd.org>; Fri, 18 May 2007 15:00:15 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l4IF0Fho066878 for <freebsd-ports-bugs@freefall.freebsd.org>; Fri, 18 May 2007 15:00:15 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l4IF0FNj066877; Fri, 18 May 2007 15:00:15 GMT (envelope-from gnats) Resent-Date: Fri, 18 May 2007 15:00:15 GMT Resent-Message-Id: <200705181500.l4IF0FNj066877@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, "Alexander Leidinger" <netchild@FreeBSD.org> Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6D8AE16A401; Fri, 18 May 2007 14:51:53 +0000 (UTC) (envelope-from netchild@freebsd.org) Received: from redbull.bpaserver.net (redbullneu.bpaserver.net [213.198.78.217]) by mx1.freebsd.org (Postfix) with ESMTP id 9EC5D13C44B; Fri, 18 May 2007 14:51:52 +0000 (UTC) (envelope-from netchild@freebsd.org) Received: from outgoing.leidinger.net (p54A5CDFD.dip.t-dialin.net [84.165.205.253]) by redbull.bpaserver.net (Postfix) with ESMTP id 503FA2E137; Fri, 18 May 2007 16:30:49 +0200 (CEST) Received: from deskjail.leidinger.net (deskjail.Leidinger.net [192.168.1.109]) by outgoing.leidinger.net (Postfix) with ESMTP id 838005B48A3; Fri, 18 May 2007 16:30:33 +0200 (CEST) Message-Id: <1179498648.13221@deskjail.leidinger.net> Date: Fri, 18 May 2007 16:30:48 +0200 From: "Alexander Leidinger" <netchild@FreeBSD.org> To: "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org> X-Send-Pr-Version: gtk-send-pr 0.4.8 Cc: Stephen Montgomery-Smith <stephen@math.missouri.edu> Subject: ports/112765: [patch] Speed improvements for package registration (about 30 times faster dependency computing) X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports <freebsd-ports-bugs.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-ports-bugs>, <mailto:freebsd-ports-bugs-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/freebsd-ports-bugs> List-Post: <mailto:freebsd-ports-bugs@freebsd.org> List-Help: <mailto:freebsd-ports-bugs-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-ports-bugs>, <mailto:freebsd-ports-bugs-request@freebsd.org?subject=subscribe> X-List-Received-Date: Fri, 18 May 2007 15:00:15 -0000 >Number: 112765 >Category: ports >Synopsis: [patch] Speed improvements for package registration (about 30 times faster dependency computing) >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 May 18 15:00:14 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Alexander Leidinger >Release: FreeBSD 7.0-CURRENT i386 >Organization: FreeBSD >Environment: System: FreeBSD 7.0-CURRENT #249: Tue Apr 24 10:56:32 CEST 2007 root@Magellan.Leidinger.net:/usr/src/sys/i386/compile/WORK >Description: Based upon a patch from Stephen (CCed) and a hint from rdivacky, I produced a patch which - changes the package registration (package-depends) from pkgnames/dependencies in the ports collection to pkgnames/dependencies as installed on the current system (actual-package-depends) - speeds up the process from about 2min 30sec to about 5sec for gnome2 on my system Depending on the config options used to install a system, the output of package-depends is different from actual-package-depends. This is intended and there should be no change for a stock run on the ports build cluster. >How-To-Repeat: >Fix: --- bsd.port.mk.diff begins here --- --- Mk/bsd.port.mk Sat Apr 7 14:51:47 2007 +++ Mk/bsd.port.mk Fri May 18 11:36:58 2007 @@ -692,8 +692,16 @@ # - Show all directories which are build-dependencies # for this port. # package-depends-list -# - Show all directories which are -# package-dependencies for this port. +# - Show all directories which are package-dependencies +# for this port. This is based upon the dependency +# tree as recorded in the Makefiles of the ports +# collection, not as recorded in the currently +# installed ports. +# actual-package-depends-list +# - Like package-depends-list but with the difference +# that the dependencies of the currently installed +# ports are used instead of the dependencies as +# recorded in the ports collection. # run-depends-list # - Show all directories which are run-dependencies # for this port. @@ -2321,7 +2329,7 @@ DISABLE_CONFLICTS= YES .endif .if !defined(PKG_ARGS) -PKG_ARGS= -v -c -${COMMENT:Q} -d ${DESCR} -f ${TMPPLIST} -p ${PREFIX} -P "`cd ${.CURDIR} && ${MAKE} package-depends | ${GREP} -v -E ${PKG_IGNORE_DEPENDS} | ${SORT} -u`" ${EXTRA_PKG_ARGS} $${_LATE_PKG_ARGS} +PKG_ARGS= -v -c -${COMMENT:Q} -d ${DESCR} -f ${TMPPLIST} -p ${PREFIX} -P "`cd ${.CURDIR} && ${MAKE} actual-package-depends | ${GREP} -v -E ${PKG_IGNORE_DEPENDS} | ${SORT} -u`" ${EXTRA_PKG_ARGS} $${_LATE_PKG_ARGS} .if !defined(NO_MTREE) PKG_ARGS+= -m ${MTREE_FILE} .endif @@ -5145,16 +5153,45 @@ shift 3; \ done; \ checked="$$dir $$childdir $$checked"; \ - else \\ + else \ ${ECHO_MSG} "${PKGNAME}: \"$$dir\" non-existent -- dependency list incomplete" >&2; \ fi; \ done +ACTUAL-PACKAGE-DEPENDS?= \ + if [ "${_LIB_RUN_DEPENDS}" != " " ]; then \ + origins=$$(for pkgname in ${PKG_DBDIR}/*; do \ + if [ -e $$pkgname/+CONTENTS ]; then \ + ${ECHO_CMD} $${pkgname\#\#*/}; \ + ${SED} -n -e "s/@comment ORIGIN://p" $$pkgname/+CONTENTS; \ + fi; \ + done); \ + for dir in ${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,}; do \ + tmp=$${dir%/*}; \ + dir=$${tmp\#\#*/}/$${dir\#\#*/}; \ + set -- $$origins; \ + while [ $$\# != 0 ]; do \ + if [ $$dir = $$2 ]; then \ + ${ECHO_CMD} $$1:$$dir; \ + if [ -e ${PKG_DBDIR}/$$1/+CONTENTS ]; then \ + packagelist="$$packagelist ${PKG_DBDIR}/$$1/+CONTENTS"; \ + fi; \ + break; \ + fi; \ + shift 2; \ + done; \ + done; \ + [ -z "$$packagelist" ] || ${AWK} -F '( |:)' 'BEGIN { pkgname="broken_contents" } /@pkgdep / { pkgname=$$2 } /@comment DEPORIGIN:/ { printf "%s:%s\n", pkgname, $$3; pkgname="broken_contents" }' $$packagelist; \ + fi + # Print out package names. package-depends: @${PACKAGE-DEPENDS-LIST} | ${AWK} '{print $$1":"$$3}' +actual-package-depends: + @${ACTUAL-PACKAGE-DEPENDS} + # Build packages for port and dependencies package-recursive: package --- bsd.port.mk.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: