Date: Thu, 17 May 2007 17:52:57 +0200 From: Alexander Leidinger <Alexander@Leidinger.net> To: Stephen Montgomery-Smith <stephen@math.missouri.edu> Cc: freebsd-ports@freebsd.org Subject: Re: Time to abandon recursive pulling of dependencies? Message-ID: <20070517175257.29f933fc@deskjail> In-Reply-To: <464C5543.4060106@math.missouri.edu> References: <464597C6.3030406@gmx.de> <20070512174011.GA22526@xor.obsecurity.org> <4645FF71.60100@gmx.de> <20070512175824.GA23103@xor.obsecurity.org> <20070512133054.B5588@math.missouri.edu> <4646193E.5040503@gmx.de> <464665D5.1090509@math.missouri.edu> <464676CC.2000203@math.missouri.edu> <46469BF5.9030603@math.missouri.edu> <1179058696.13237.3.camel@ikaros.oook.cz> <20070513101332.L82202@math.missouri.edu> <46479215.1080401@math.missouri.edu> <4647C4FB.9050607@math.missouri.edu> <4647F182.6000402@gmx.de> <46487491.6020806@math.missouri.edu> <46488168.3030300@math.missouri.edu> <464B155A.1080105@math.missouri.edu> <464B7144.2000600@math.missouri.edu> <1179353641.79329.11.camel@rnoland-ibm.acs.internap.com> <20070517114436.3fdd55b1@deskjail> <20070517134529.7f2453ca@deskjail> <464C5543.4060106@math.missouri.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
--MP_P=ABAbROQX0jRsFVodRVe=3 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Quoting Stephen Montgomery-Smith <stephen@math.missouri.edu> (Thu, 17 May 2007 08:14:43 -0500): > Alexander Leidinger wrote: > > Quoting Alexander Leidinger <Alexander@Leidinger.net> (Thu, 17 May 2007 11:44:36 +0200): > > > >> For the difference between the redirected output case: I think the > >> gnome terminal needs a lot of time to print all the lines. But still, > >> the awk version takes around 3/4 of the time (interesting is the user > >> time, not the total time). Stephen's version can be speed up some > >> fractions by inserting a break into the first while-loop. > >> > >> Attached is my awk-version and the awk version which also includes the > >> direct dependencies. > > > > After a little review: For the awk version the embedded "sort -u" can > > be removed (it is done in the PKG_ARGS part), for Stephen's version it > > is necessary to cut down processing time in the following part. > > Agreed I played around a little bit with this, new version attached (simple error handling in awk, doing just one awk for all files). Comments please. Stephen, if I don't get problem reports I will send-pr this as you suggested. Bye, Alexander. -- STANDARDS: The principles we use to reject other people's code. http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 --MP_P=ABAbROQX0jRsFVodRVe=3 Content-Type: text/x-patch; name=bsd.port.mk.diff Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=bsd.port.mk.diff --- /usr/ports/Mk/bsd.port.mk Sat Apr 7 14:51:47 2007 +++ /space/jails/basejail/usr/ports/Mk/bsd.port.mk Thu May 17 17:46:25 2007 @@ -2321,7 +2321,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,15 +5145,43 @@ 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 \ + basename $$pkgname; \ + ${SED} -n -e "s/@comment ORIGIN://p" $$pkgname/+CONTENTS; \ + fi; \ + done); \ + for dir in ${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,}; do \ + dir=`dirname $$dir | xargs basename`/`basename $$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 --MP_P=ABAbROQX0jRsFVodRVe=3--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070517175257.29f933fc>