Date: Wed, 10 Jun 2009 15:47:27 -0800 From: Mel Flynn <mel.flynn+fbsd.ports@mailing.thruhere.net> To: freebsd-ports@freebsd.org Cc: ports@freebsd.org, Wesley Shields <wxs@freebsd.org>, python@freebsd.org, miwi@freebsd.org Subject: Re: Python 2.6 update with portmaster Message-ID: <200906101547.28358.mel.flynn%2Bfbsd.ports@mailing.thruhere.net> In-Reply-To: <20090610205236.GD65705@atarininja.org> References: <20090610132647.GC40713@atarininja.org> <200906101244.43479.mel.flynn%2Bfbsd.ports@mailing.thruhere.net> <20090610205236.GD65705@atarininja.org>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Wednesday 10 June 2009 12:52:36 Wesley Shields wrote:
> On Wed, Jun 10, 2009 at 12:44:42PM -0800, Mel Flynn wrote:
> > On Wednesday 10 June 2009 05:26:47 Wesley Shields wrote:
> > > It will be quite slow compared to using pkg_which (the normal method)
> > > so be patient.
> >
> > Does pkg_which use the pkgdb? If so, maybe we could have pkg_info grow a
> > cache for future encounters, or we can create one:
>
> My guess is that pkg_which is using pkgdb, which is why it is
> significantly faster.
>
> > % grep -v '^@' /var/db/pkg/*/+CONTENTS >/tmp/pkg_info.cache
> > % FOUND=`sed -ne 's,^/var/db/pkg/\(.*\)/+CONTENTS:lib/python2.6/site-
> > packages/xcbgen/error.py$,\1,p' /tmp/pkg_info.cache`; echo $FOUND
> > xcb-proto-1.4
> >
> > So:
> > 's,^${PKG_DBDIR}/\(.*\)/+CONTENTS:$$f$$,\1,p'
>
> I think there is a SoC project in the works to make our pkg utilities
> much better. I don't know any of the details but I can only hope that
> speed is one of the things being improved.
True, however the above can be done now, though it's a bit tricky to squeeze
into the find command, one could put this as shell script in files/pkg_which.
And patch Makefile as attached.
I haven't got a system to run this on, since I switched to 2.6 everywhere a
long time ago, but the find command on the shell produced the desired output.
> > > [1]: http://people.freebsd.org/~wxs/python26-portmaster.diff
> >
> > What's this for?
> > +JOBS= sysctl -n kern.smp.cpus
> >
> > Should be != if it's gonna be used, but it's not referenced anywhere else
> > that I can see.
>
> It's used in XARGS_CMD to provide a bit of parallelism in an effort to
> be a bit faster.
That was pretty blind of me.
--
Mel
[-- Attachment #2 --]
Index: python/Makefile
===================================================================
RCS file: /home/ncvs/ports/lang/python/Makefile,v
retrieving revision 1.161
diff -u -r1.161 Makefile
--- python/Makefile 31 Jul 2007 16:28:32 -0000 1.161
+++ python/Makefile 10 Jun 2009 23:03:32 -0000
@@ -24,8 +24,19 @@
@${DO_NADA}
# Major upgrade support
-PORTUPGRADE_CMD?= ${LOCALBASE}/sbin/portupgrade
-PKG_WHICH_CMD?= ${LOCALBASE}/sbin/pkg_which
+PORTUPGRADE_CMD= ${LOCALBASE}/sbin/portupgrade
+PKG_WHICH_CMD= ${LOCALBASE}/sbin/pkg_which
+XARGS_CMD= ${XARGS} -0
+
+.if defined(USE_PORTMASTER)
+PORTUPGRADE_CMD= ${LOCALBASE}/sbin/portmaster
+PORTUPGRADE_ARGS?= ""
+PKG_WHICH_CMD= ${SETENV} LOCALBASE=${LOCALBASE} PKG_DBDIR=${PKG_DBDIR} \
+ ${SH} ${FILESDIR}/pkg_which
+JOBS= sysctl -n kern.smp.cpus
+XARGS_CMD= ${XARGS} -L 1 -0 -P $$(${JOBS})
+.endif
+
upgrade-site-packages:
@if [ ! -x ${PORTUPGRADE_CMD} ]; then \
${ECHO_MSG} "Please install ports-mgmt/portupgrade."; \
@@ -36,14 +47,21 @@
if [ -d ${PREFIX}/lib/python$$ver ]; then \
UPD=`${FIND} ${PREFIX}/lib/python$$ver \
-type f -print0 | \
- ${XARGS} -0 ${PKG_WHICH_CMD} | \
+ ${XARGS_CMD} ${PKG_WHICH_CMD} | \
${GREP} -Fv '?' | \
${EGREP} -v '^python2?[0-5]?-2' | \
${SORT} -u`; \
if [ "$$UPD" ]; then \
- ${PORTUPGRADE_CMD} -f $$UPD; \
+ if [ -n ${PORTUPGRADE_ARGS} ]; then \
+ ${PORTUPGRADE_CMD} ${PORTUPGRADE_ARGS} -f $$UPD; \
+ else \
+ ${PORTUPGRADE_CMD} -f $$UPD; \
+ fi; \
fi; \
fi; \
- done \
+ done
+.if defined(USE_PORTMASTER)
+ ${PKG_WHICH_CMD} -r
+.endif
.include <bsd.port.mk>
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906101547.28358.mel.flynn%2Bfbsd.ports>
