distutils is part of python. In 2.5 and newer egg files are created,
for dependency resolution. pkgsrc contains a mechanism to make 2.5+
refrain from creating egg files, but the right approach is to accomodate
them in the PLIST if upstream thinks they should be present.
The following patch:
Adds a variable in pyversion.mk to denote that 24 doesn't create egg
files. Alternately, this could be a conditional in distutils.mk, but
it seems sensible to have versions declare their capabilities.
Adds lang/python/distutils.mk, for use with python distributions that
use distutils. This is structurally cloned from egg.mk.
Supports having egg files in PLIST if the python version creates egg
files, both in using a conditional PLIST and generating it
automatically.
Changes one package to use the new mechanism. It builds with python24
and python26.
Comments requested. (Committing this doesn't affect much, since it's a
new abstraction that very little would use until packages are changed
over to it.)
Index: lang/python/distutils.mk
===================================================================
RCS file: lang/python/distutils.mk
diff -N lang/python/distutils.mk
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lang/python/distutils.mk 24 Jul 2010 01:39:23 -0000
@@ -0,0 +1,41 @@
+# $NetBSD$
+#
+# Common logic for python distributions that use distutils.
+#
+.include "../../mk/bsd.fast.prefs.mk"
+
+.include "../../lang/python/pyversion.mk"
+
+# This file should be included to package python "distributions" which
+# use distutils. See egg.mk for distributions that use setuptools and
+# extensions.mk for ad hoc cases.
+
+# Set the egg file basename. The egg file may or may not be created.
+EGG_NAME?= ${DISTNAME}
+
+PYDISTUTILSPKG= yes
+
+PY_PATCHPLIST= yes
+
+# By default, we expect distutils to create an egg-info file if Python
+# distutils can do so. If the package set PY_NO_EGG, respect that
+# choice.
+.if defined(PYDISTUTILS_NO_EGGFILES)
+# Python distutils will not create eggfiles.
+PLIST_SUBST+= EGG_MAYBE="@comment (not in 2.4) "
+PY_NO_EGG?= yes
+.else
+PLIST_SUBST+= EGG_MAYBE=""
+PY_NO_EGG?= no
+.endif
+
+# XXX Why isn't this in extension.mk instead?
+INSTALLATION_DIRS+= ${PYSITELIB}
+
+# Egg files have the version encoded, so generalize in PLIST. Make eggs
+# optional.
+PLIST_SUBST+= EGG_FILE=${EGG_NAME}-py${PYVERSSUFFIX}.egg-info
+PRINT_PLIST_AWK+= {
gsub("${PYSITELIB}/${EGG_NAME}-py${PYVERSSUFFIX}.egg-info", \
+ "$${EGG_MAYBE}$${PYSITELIB}/$${EGG_FILE}") }
+
+.include "../../lang/python/extension.mk"
Index: lang/python/pyversion.mk
===================================================================
RCS file: /cvsroot/pkgsrc/lang/python/pyversion.mk,v
retrieving revision 1.80
diff -u -p -r1.80 pyversion.mk
--- lang/python/pyversion.mk 12 Feb 2010 13:45:54 -0000 1.80
+++ lang/python/pyversion.mk 24 Jul 2010 01:39:23 -0000
@@ -134,6 +134,7 @@ PYDEPENDENCY= ${BUILDLINK_API_DEPENDS.py
PYPACKAGE= python24
PYVERSSUFFIX= 2.4
PYPKGPREFIX= py24
+PYDISTUTILS_NO_EGGFILES= YES
.else
PKG_FAIL_REASON+= "No valid Python version"
.endif
Index: security/py-crypto/Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/security/py-crypto/Makefile,v
retrieving revision 1.18
diff -u -p -r1.18 Makefile
--- security/py-crypto/Makefile 23 Jul 2010 23:12:36 -0000 1.18
+++ security/py-crypto/Makefile 24 Jul 2010 01:39:23 -0000
@@ -2,7 +2,7 @@
#
DISTNAME= pycrypto-2.1.0
-PKGREVISION= 2
+PKGREVISION= 3
PKGNAME= ${PYPKGPREFIX}-crypto-2.1.0
CATEGORIES= security python
MASTER_SITES= http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/
@@ -15,12 +15,7 @@ COMMENT= Cryptographic and hash function
PKG_DESTDIR_SUPPORT= user-destdir
-PYDISTUTILSPKG= yes
-PY_NO_EGG= no
-EGG_NAME?= ${DISTNAME}
-PLIST_SUBST+= EGG_FILE=${EGG_NAME}-py${PYVERSSUFFIX}.egg-info
-
.include "../../devel/gmp/buildlink3.mk"
-.include "../../lang/python/extension.mk"
+.include "../../lang/python/distutils.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
Index: security/py-crypto/PLIST
===================================================================
RCS file: /cvsroot/pkgsrc/security/py-crypto/PLIST,v
retrieving revision 1.4
diff -u -p -r1.4 PLIST
--- security/py-crypto/PLIST 23 Jul 2010 23:24:19 -0000 1.4
+++ security/py-crypto/PLIST 24 Jul 2010 01:39:23 -0000
@@ -265,4 +265,4 @@ ${PYSITELIB}/Crypto/__init__.pyo
${PYSITELIB}/Crypto/pct_warnings.py
${PYSITELIB}/Crypto/pct_warnings.pyc
${PYSITELIB}/Crypto/pct_warnings.pyo
-${PYSITELIB}/${EGG_FILE}
+${EGG_MAYBE}${PYSITELIB}/${EGG_FILE}
Attachment:
pgpyD29h_Otsh.pgp
Description: PGP signature