diff options
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/python/Manifest | 17 | ||||
-rw-r--r-- | dev-lang/python/files/linux2.patch | 24 | ||||
-rw-r--r-- | dev-lang/python/files/pydoc.conf | 8 | ||||
-rwxr-xr-x | dev-lang/python/files/pydoc.init | 27 | ||||
-rw-r--r-- | dev-lang/python/files/python-2.4.4-test-cross.patch | 19 | ||||
-rw-r--r-- | dev-lang/python/files/python-2.5-cross-printf.patch | 34 | ||||
-rw-r--r-- | dev-lang/python/files/python-2.6-chflags-cross.patch | 59 | ||||
-rw-r--r-- | dev-lang/python/files/python-2.6-test-cross.patch | 19 | ||||
-rw-r--r-- | dev-lang/python/files/python-2.7.1-BJA-cross.diff | 29 | ||||
-rw-r--r-- | dev-lang/python/files/python-3.1.3-BJA-cross.diff | 30 | ||||
-rw-r--r-- | dev-lang/python/files/python-3.2-soname_typo.patch | 51 | ||||
-rw-r--r-- | dev-lang/python/files/python-config-2.4-r1 | 58 | ||||
-rw-r--r-- | dev-lang/python/python-2.7.1-r1.ebuild | 365 | ||||
-rw-r--r-- | dev-lang/python/python-3.1.3-r1.ebuild | 336 |
14 files changed, 1076 insertions, 0 deletions
diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest new file mode 100644 index 00000000..ae2fe8d2 --- /dev/null +++ b/dev-lang/python/Manifest @@ -0,0 +1,17 @@ +AUX linux2.patch 606 RMD160 0cca6f619a98e6090d01f4a80c2178c323416a47 SHA1 8fc817c8da2f74d3ccc93d84a1bc713ed26c00e2 SHA256 a178120a3022ecb14044c82eff7e828f6d060b6885acacd4a4d8569fde372fd7 +AUX pydoc.conf 330 RMD160 0cd619ec251597e0fcadc05bfd249915e73baa17 SHA1 a56100d45378c554b9822f6ed512a6cb7841ef50 SHA256 a45ebba2de5f2b0e963db4101507203d095c5ff667ae5002c4897a9c87786fa1 +AUX pydoc.init 679 RMD160 79ccfb6179974f4a4f35238c122b9640753e7e43 SHA1 e7bb706ae4ef94d28874677c4f92b82d08d7999a SHA256 8f6c1753a28462fa61d22a927debed7ec3994b3617d728932357e739ede6516f +AUX python-2.4.4-test-cross.patch 977 RMD160 8fdcd45dc202993988f7a1c2b3d918068883b99e SHA1 96f25777150ba05765282a43f08da6b6fab3cb73 SHA256 ff2a131776d560d188ec5069e17fea3eb09c26fdd02124ae5ff34d791c9fd9f6 +AUX python-2.5-cross-printf.patch 903 RMD160 8dc0ee148120aaf7667624bdb5574bb6af5d2a00 SHA1 596e05be8cde43e4cdd87c8ed06ebb40828f7cea SHA256 1e91e5123d74d89aa8fc9dc60d98516b785f851e43da9b634ae535130e24e780 +AUX python-2.6-chflags-cross.patch 1716 RMD160 b0ec772a41a24d51f4c7430b19bcc6251cd6be87 SHA1 4745cd53cef503c41c50573ad97f40eb89fd4bcd SHA256 7c36689db47720052069725036983c2fb6959f425e3777aae55976b2788d463f +AUX python-2.6-test-cross.patch 914 RMD160 1f421b5565d39a24b887e85cbecaf3857741f756 SHA1 9c05fbe28aac6373f24317db5c277bc4549dde0c SHA256 8264f6ffe5aedcce67bea00b0346e5416a5486da2229bf82fe748d87ec65c4de +AUX python-2.7.1-BJA-cross.diff 1355 RMD160 90c8e6d8433052e893c2f5cb5e3dea3b3bf5f5d5 SHA1 3cd7d1351c9b4439745038b97b04cd6cee310f79 SHA256 69bd7fb750ca6b4b7b9f24795ef7572507d91e859eab66163ef8cc1a523aa1c1 +AUX python-3.1.3-BJA-cross.diff 931 RMD160 050586946dbbfc8357e0270055677d3c425c22f9 SHA1 93659614d7505ba40a01c9f41b03fd429c7b498c SHA256 a55958807d2d226921e299bba899cc566186e66cf2d1d6a64bdf701c0898ece7 +AUX python-3.2-soname_typo.patch 1724 RMD160 1b112382152731768b655279145c7caa31d1094f SHA1 808fdab3b1d1664fc20c67dce008e7ea48134a4e SHA256 776366c3cc67c7d66883846acee8cc1b795c25f6e35e927793be8c54162491e2 +AUX python-config-2.4-r1 1624 RMD160 e4e6893c9e8414289c0c70c0f4be58835911e376 SHA1 addf9a6eb81e636364264a6abb3d96f01ea0cf90 SHA256 923a9e896f99cca5aa4ccbb02f981c6e26a2b1aa42326de2359d3c884bde2a9f +DIST Python-2.7.1.tar.bz2 11722546 RMD160 3ce59305f6cd3fb320a53771d0ea01ec0687005f SHA1 fbe1894322ff91b80726e269c97454f4129fc2a3 SHA256 80e387bcf57eae8ce26726753584fd63e060ec11682d1145af921e85fd612292 +DIST Python-3.1.3.tar.bz2 9875464 RMD160 730f3b8eb1a41f1b7c469fc81be734bb802cb9f9 SHA1 aeadf1eb7f450aab77a8972c042bc5f49bcf2288 SHA256 77f6f41a51be4ca85d83670405c8281dd1237bb00d8be8a7560cb3ccdf5558cb +DIST python-gentoo-patches-2.7.1-r1.tar.bz2 13384 RMD160 d79de2520244a8b9c5de61c9bc591a4e538a7736 SHA1 72a0b75ab891ee20041a65dc2642ee6cf40642be SHA256 cc9b4239a3276c6fd447e3bb3ab8a2f94fbc49e08bb5b20ba5f05b4becda2bf8 +DIST python-gentoo-patches-3.1.3-r1.tar.bz2 13730 RMD160 73f922d850e464e589c7a3cfb8f755d36167d156 SHA1 9228b63c980b80dd7e8dd9e0276c29af18692e33 SHA256 f23056436b298ed0ff9823b52902aaaa63eae0c4585a4a19e47571685127631e +EBUILD python-2.7.1-r1.ebuild 11161 RMD160 95a90a182be0ae83ec5508a38732faefd6cbf9cb SHA1 dc5bd6196095d4c0335d6c16ef7999ef85d6dbb6 SHA256 59458c10f433c602e36ec6b2e913c891c7ebd643a1dd996fda202920db1f6fcd +EBUILD python-3.1.3-r1.ebuild 9838 RMD160 bf62cbba7a999e356c2642f1032687dcc396267e SHA1 a76b0f6e9b81c548c880f7f45fe96e7abdeea22d SHA256 508cb80e100775885f9caff5770eee8e448b18e0487c8c1aa5d2c473aae4921f diff --git a/dev-lang/python/files/linux2.patch b/dev-lang/python/files/linux2.patch new file mode 100644 index 00000000..c3414238 --- /dev/null +++ b/dev-lang/python/files/linux2.patch @@ -0,0 +1,24 @@ +http://hg.python.org/cpython/rev/c816479f6aaf/ +diff --git a/configure b/configure +--- a/configure ++++ b/configure +@@ -2995,6 +2995,7 @@ then + MACHDEP="$ac_md_system$ac_md_release" + + case $MACHDEP in ++ linux*) MACHDEP="linux2";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + atheos*) MACHDEP="atheos";; +diff --git a/configure.in b/configure.in +--- a/configure.in ++++ b/configure.in +@@ -293,6 +293,7 @@ then + MACHDEP="$ac_md_system$ac_md_release" + + case $MACHDEP in ++ linux*) MACHDEP="linux2";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + atheos*) MACHDEP="atheos";; + diff --git a/dev-lang/python/files/pydoc.conf b/dev-lang/python/files/pydoc.conf new file mode 100644 index 00000000..4a98fd40 --- /dev/null +++ b/dev-lang/python/files/pydoc.conf @@ -0,0 +1,8 @@ +# /etc/init.d/pydoc.conf +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/files/pydoc.conf,v 1.2 2008/06/30 15:10:28 hawking Exp $ + +# This file contains the configuration information for pydoc's internal +# webserver. The variables should be rather self explanatory :-) + +# Default port for Python's pydoc server +PYDOC_PORT=7464 diff --git a/dev-lang/python/files/pydoc.init b/dev-lang/python/files/pydoc.init new file mode 100755 index 00000000..f67371d8 --- /dev/null +++ b/dev-lang/python/files/pydoc.init @@ -0,0 +1,27 @@ +#!/sbin/runscript +# Copyright 1999-2011 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public Licence v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/files/pydoc.init,v 1.3 2011/05/17 15:14:43 arfrever Exp $ + +depend() { + need net +} + +start() { + if [ -z "${PYDOC_PORT}" ]; then + eerror "Port not set" + return 1 + fi + + ebegin "Starting pydoc server on port ${PYDOC_PORT}" + start-stop-daemon --start --background --make-pidfile \ + --pidfile /var/run/pydoc.pid \ + --startas /usr/bin/@PYDOC@ -- -p "${PYDOC_PORT}" + eend $? +} + +stop() { + ebegin "Stopping pydoc server" + start-stop-daemon --stop --quiet --pidfile /var/run/pydoc.pid + eend $? +} diff --git a/dev-lang/python/files/python-2.4.4-test-cross.patch b/dev-lang/python/files/python-2.4.4-test-cross.patch new file mode 100644 index 00000000..d32cb3ff --- /dev/null +++ b/dev-lang/python/files/python-2.4.4-test-cross.patch @@ -0,0 +1,19 @@ +--- Python-2.4.4/Lib/test/test_multibytecodec.py.orig 2007-09-10 14:52:34.424592960 -0400 ++++ Python-2.4.4/Lib/test/test_multibytecodec.py 2007-09-10 14:53:30.646201491 -0400 +@@ -81,11 +81,11 @@ class Test_ISO2022(unittest.TestCase): + uni = u':hu4:unit\xe9 de famille' + self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni) + +- def test_iso2022_jp_g0(self): +- self.failIf('\x0e' in u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) +- for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): +- e = u'\u3406'.encode(encoding) +- self.failIf(filter(lambda x: x >= '\x80', e)) ++# def test_iso2022_jp_g0(self): ++# self.failIf('\x0e' in u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) ++# for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): ++# e = u'\u3406'.encode(encoding) ++# self.failIf(filter(lambda x: x >= '\x80', e)) + + def test_bug1572832(self): + if sys.maxunicode >= 0x10000: diff --git a/dev-lang/python/files/python-2.5-cross-printf.patch b/dev-lang/python/files/python-2.5-cross-printf.patch new file mode 100644 index 00000000..9a3eaf71 --- /dev/null +++ b/dev-lang/python/files/python-2.5-cross-printf.patch @@ -0,0 +1,34 @@ +http://bugs.gentoo.org/239110 + +assume %zd is supported when cross-compiling. any target we care about +supports it, so ... + +--- configure.in ++++ configure.in +@@ -3417,7 +3417,7 @@ + + + +-AC_MSG_CHECKING(for %zd printf() format support) ++AC_CACHE_CHECK([for %zd printf() format support], [py_cv_has_zd_printf], [dnl + AC_TRY_RUN([#include <stdio.h> + #include <stddef.h> + #include <string.h> +@@ -3451,10 +3451,13 @@ + return 1; + + return 0; +-}], +-[AC_MSG_RESULT(yes) +- AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])], +- AC_MSG_RESULT(no)) ++}], [py_cv_has_zd_printf="yes"], ++ [py_cv_has_zd_printf="no"], ++ [py_cv_has_zd_printf="cross -- assuming yes"] ++)]) ++if test "$py_cv_has_zd_printf" != "no" ; then ++ AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t]) ++fi + + AC_CHECK_TYPE(socklen_t,, + AC_DEFINE(socklen_t,int, diff --git a/dev-lang/python/files/python-2.6-chflags-cross.patch b/dev-lang/python/files/python-2.6-chflags-cross.patch new file mode 100644 index 00000000..9c4b6d2a --- /dev/null +++ b/dev-lang/python/files/python-2.6-chflags-cross.patch @@ -0,0 +1,59 @@ +if we're cross-compiling, fall back to a link-only test rather than trying +to run a program for the chflags functions + +--- python-2.6/configure.in ++++ python-2.6/configure.in +@@ -2565,7 +2565,7 @@ + + # On Tru64, chflags seems to be present, but calling it will + # exit Python +-AC_MSG_CHECKING(for chflags) ++AC_CACHE_CHECK([for chflags], [py_cv_has_chflags], [dnl + AC_TRY_RUN([ + #include <sys/stat.h> + #include <unistd.h> +@@ -2575,12 +2575,18 @@ + return 1; + return 0; + } +-],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) +- AC_MSG_RESULT(yes), +- AC_MSG_RESULT(no) +-) ++], [py_cv_has_chflags="yes"], ++ [py_cv_has_chflags="no"], ++ [py_cv_has_chflags="cross"]) ++]) ++if test "$py_cv_has_chflags" = "cross" ; then ++ AC_CHECK_FUNC([chflags], [py_cv_has_chflags="yes"], [py_cv_has_chflags="no"]) ++fi ++if test "$py_cv_has_chflags" = "yes" ; then ++ AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) ++fi + +-AC_MSG_CHECKING(for lchflags) ++AC_CACHE_CHECK([for lchflags], [py_cv_has_lchflags], [dnl + AC_TRY_RUN([ + #include <sys/stat.h> + #include <unistd.h> +@@ -2590,10 +2596,16 @@ + return 1; + return 0; + } +-],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) +- AC_MSG_RESULT(yes), +- AC_MSG_RESULT(no) +-) ++], [py_cv_has_lchflags="yes"], ++ [py_cv_has_lchflags="no"], ++ [py_cv_has_lchflags="cross"]) ++]) ++if test "$py_cv_has_lchflags" = "cross" ; then ++ AC_CHECK_FUNC([lchflags], [py_cv_has_lchflags="yes"], [py_cv_has_lchflags="no"]) ++fi ++if test "$py_cv_has_lchflags" = "yes" ; then ++ AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) ++fi + + dnl Check if system zlib has *Copy() functions + dnl diff --git a/dev-lang/python/files/python-2.6-test-cross.patch b/dev-lang/python/files/python-2.6-test-cross.patch new file mode 100644 index 00000000..0ff41939 --- /dev/null +++ b/dev-lang/python/files/python-2.6-test-cross.patch @@ -0,0 +1,19 @@ +--- Lib/test/test_multibytecodec.py.orig 2008-04-19 18:48:59.000000000 +0300 ++++ Lib/test/test_multibytecodec.py 2008-04-19 18:49:44.000000000 +0300 +@@ -212,11 +212,11 @@ + uni = u':hu4:unit\xe9 de famille' + self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni) + +- def test_iso2022_jp_g0(self): +- self.failIf('\x0e' in u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) +- for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): +- e = u'\u3406'.encode(encoding) +- self.failIf(filter(lambda x: x >= '\x80', e)) ++ #def test_iso2022_jp_g0(self): ++ # self.failIf('\x0e' in u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) ++ # for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): ++ # e = u'\u3406'.encode(encoding) ++ # self.failIf(filter(lambda x: x >= '\x80', e)) + + def test_bug1572832(self): + if sys.maxunicode >= 0x10000: diff --git a/dev-lang/python/files/python-2.7.1-BJA-cross.diff b/dev-lang/python/files/python-2.7.1-BJA-cross.diff new file mode 100644 index 00000000..9d6c1cf6 --- /dev/null +++ b/dev-lang/python/files/python-2.7.1-BJA-cross.diff @@ -0,0 +1,29 @@ +--- Python-2.7.1/Makefile.pre.in.ori 2011-10-02 23:12:02.563007250 +0200 ++++ Python-2.7.1/Makefile.pre.in 2011-10-02 23:12:16.435076152 +0200 +@@ -934,26 +934,6 @@ + done; \ + done + $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt +- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- ./$(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST) -f \ +- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ +- $(DESTDIR)$(LIBDEST) +- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- ./$(HOSTPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST) -f \ +- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ +- $(DESTDIR)$(LIBDEST) +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- ./$(HOSTPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST)/site-packages -f \ +- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- ./$(HOSTPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ +- -d $(LIBDEST)/site-packages -f \ +- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages +- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +- ./$(HOSTPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()" + + # Create the PLATDIR source directory, if one wasn't distributed.. + $(srcdir)/Lib/$(PLATDIR): diff --git a/dev-lang/python/files/python-3.1.3-BJA-cross.diff b/dev-lang/python/files/python-3.1.3-BJA-cross.diff new file mode 100644 index 00000000..2c45f528 --- /dev/null +++ b/dev-lang/python/files/python-3.1.3-BJA-cross.diff @@ -0,0 +1,30 @@ +--- Python-3.1.3/configure.in.ori 2011-10-02 22:30:36.695328093 +0200 ++++ Python-3.1.3/configure.in 2011-10-02 22:37:37.248498660 +0200 +@@ -3533,6 +3533,7 @@ + + # Multiprocessing check for broken sem_getvalue + AC_MSG_CHECKING(for broken sem_getvalue) ++AC_CACHE_VAL(ac_cv_broken_sem_getvalue, + AC_TRY_RUN([ + #include <unistd.h> + #include <fcntl.h> +@@ -3555,10 +3556,16 @@ + return res==-1 ? 1 : 0; + } + ] +-,AC_MSG_RESULT(no), +- AC_MSG_RESULT(yes) +- AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1, define to 1 if your sem_getvalue is broken.) ++, ac_cv_broken_sem_getvalue=no, ++ ac_cv_broken_sem_getvalue=yes, ++ ac_cv_broken_sem_getvalue=no) + ) ++AC_MSG_RESULT($ac_cv_broken_sem_getvalue) ++if test $ac_cv_broken_sem_getvalue = yes ++then ++ AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1, ++ [define to 1 if your sem_getvalue is broken]) ++fi + + # determine what size digit to use for Python's longs + AC_MSG_CHECKING([digit size for Python's longs]) diff --git a/dev-lang/python/files/python-3.2-soname_typo.patch b/dev-lang/python/files/python-3.2-soname_typo.patch new file mode 100644 index 00000000..357274c4 --- /dev/null +++ b/dev-lang/python/files/python-3.2-soname_typo.patch @@ -0,0 +1,51 @@ +# HG changeset patch +# User Martin v. Löwis <martin@v.loewis.de> +# Date 1304919465 -7200 +# Node ID 749686064642118c5ccc8ad28105472321931353 +# Parent 4f3f67a595fb05f04d89ed906df911b743e47463 +Use --as-needed when linking libpython3.so. Closes #11347. +Patch by Arfrever Frehtes Taifersar Arahesis. + +diff --git a/Makefile.pre.in b/Makefile.pre.in +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -76,6 +76,7 @@ PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIG + # environment variables + PY_CPPFLAGS= -I. -IInclude -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS) + PY_LDFLAGS= $(CONFIGURE_LDFLAGS) $(LDFLAGS) ++NO_AS_NEEDED= @NO_AS_NEEDED@ + LDLAST= @LDLAST@ + SGI_ABI= @SGI_ABI@ + CCSHARED= @CCSHARED@ +@@ -459,7 +460,7 @@ libpython$(LDVERSION).so: $(LIBRARY_OBJS + fi + + libpython3.so: libpython$(LDVERSION).so +- $(BLDSHARED) -o $@ -Wl,-hl$@ $^ ++ $(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ + + libpython$(LDVERSION).dylib: $(LIBRARY_OBJS) + $(CC) -dynamiclib -Wl,-single_module $(PY_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \ +diff --git a/configure.in b/configure.in +--- a/configure.in ++++ b/configure.in +@@ -525,6 +525,18 @@ then + fi + + ++AC_MSG_CHECKING([for -Wl,--no-as-needed]) ++save_LDFLAGS="$LDFLAGS" ++LDFLAGS="$LDFLAGS -Wl,--no-as-needed" ++AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], ++ [NO_AS_NEEDED="-Wl,--no-as-needed" ++ AC_MSG_RESULT([yes])], ++ [NO_AS_NEEDED="" ++ AC_MSG_RESULT([no])]) ++LDFLAGS="$save_LDFLAGS" ++AC_SUBST(NO_AS_NEEDED) ++ ++ + # checks for UNIX variants that set C preprocessor variables + AC_USE_SYSTEM_EXTENSIONS + + diff --git a/dev-lang/python/files/python-config-2.4-r1 b/dev-lang/python/files/python-config-2.4-r1 new file mode 100644 index 00000000..af451131 --- /dev/null +++ b/dev-lang/python/files/python-config-2.4-r1 @@ -0,0 +1,58 @@ +#! /usr/bin/python2.4 + +import sys +import os +import getopt +from distutils import sysconfig + +valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', + 'ldflags', 'help'] + +def exit_with_usage(code=1): + print >>sys.stderr, "Usage: %s [%s]" % (sys.argv[0], + '|'.join('--'+opt for opt in valid_opts)) + sys.exit(code) + +try: + opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) +except getopt.error: + exit_with_usage() + +if not opts: + #exit_with_usage() + #be compatible with our old python-config-2.4 + import string + print "-lpython2.4 -lm -L/usr/lib/python2.4/config",string.join(string.split(sysconfig.get_config_var("MODLIBS"))) + sys.exit(0) + +opt = opts[0][0] + +pyver = sysconfig.get_config_var('VERSION') +getvar = sysconfig.get_config_var + +if opt == '--help': + exit_with_usage(0) + +elif opt == '--prefix': + print sysconfig.PREFIX + +elif opt == '--exec-prefix': + print sysconfig.EXEC_PREFIX + +elif opt in ('--includes', '--cflags'): + flags = ['-I' + sysconfig.get_python_inc(), + '-I' + sysconfig.get_python_inc(plat_specific=True)] + if opt == '--cflags': + flags.extend(getvar('CFLAGS').split()) + print ' '.join(flags) + +elif opt in ('--libs', '--ldflags'): + libs = getvar('LIBS').split() + getvar('SYSLIBS').split() + libs.append('-lpython'+pyver) + # add the prefix/lib/pythonX.Y/config dir, but only if there is no + # shared library in prefix/lib/. + if opt == '--ldflags' and not getvar('Py_ENABLE_SHARED'): + libs.insert(0, '-L' + getvar('LIBPL')) + print ' '.join(libs) + + diff --git a/dev-lang/python/python-2.7.1-r1.ebuild b/dev-lang/python/python-2.7.1-r1.ebuild new file mode 100644 index 00000000..4003f137 --- /dev/null +++ b/dev-lang/python/python-2.7.1-r1.ebuild @@ -0,0 +1,365 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.7.1-r1.ebuild,v 1.12 2011/05/17 15:14:43 arfrever Exp $ + +EAPI="2" +WANT_AUTOMAKE="none" + +inherit autotools eutils flag-o-matic multilib python toolchain-funcs + +if [[ "${PV}" == *_pre* ]]; then + inherit subversion + + ESVN_PROJECT="python" + ESVN_REPO_URI="http://svn.python.org/projects/python/branches/release27-maint" + ESVN_REVISION="" +else + MY_PV="${PV%_p*}" + MY_P="Python-${MY_PV}" +fi + +PATCHSET_REVISION="1" + +DESCRIPTION="Python is an interpreted, interactive, object-oriented programming language." +HOMEPAGE="http://www.python.org/" +if [[ "${PV}" == *_pre* ]]; then + SRC_URI="" +else + SRC_URI="http://www.python.org/ftp/python/${MY_PV}/${MY_P}.tar.bz2 + mirror://gentoo/python-gentoo-patches-${MY_PV}$([[ "${PATCHSET_REVISION}" != "0" ]] && echo "-r${PATCHSET_REVISION}").tar.bz2" +fi + +LICENSE="PSF-2.2" +SLOT="2.7" +PYTHON_ABI="${SLOT}" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd" +IUSE="-berkdb build doc elibc_uclibc examples gdbm ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml" + +RDEPEND=">=app-admin/eselect-python-20091230 + >=sys-libs/zlib-1.1.3 + virtual/libffi + virtual/libintl + !build? ( + berkdb? ( || ( + sys-libs/db:4.8 + sys-libs/db:4.7 + sys-libs/db:4.6 + sys-libs/db:4.5 + sys-libs/db:4.4 + sys-libs/db:4.3 + sys-libs/db:4.2 + ) ) + gdbm? ( sys-libs/gdbm ) + ncurses? ( + >=sys-libs/ncurses-5.2 + readline? ( >=sys-libs/readline-4.1 ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3[extensions] ) + ssl? ( dev-libs/openssl ) + tk? ( >=dev-lang/tk-8.0 ) + xml? ( >=dev-libs/expat-2 ) + ) + !!<sys-apps/portage-2.1.9" +DEPEND="${RDEPEND} + $([[ "${PV}" == *_pre* ]] && echo "=${CATEGORY}/${PN}-${PV%%.*}*") + dev-util/pkgconfig + $([[ "${PV}" =~ ^[[:digit:]]+\.[[:digit:]]+_pre ]] && echo "doc? ( dev-python/sphinx )") + !sys-devel/gcc[libffi]" +RDEPEND+=" !build? ( app-misc/mime-types ) + $([[ "${PV}" =~ ^[[:digit:]]+\.[[:digit:]]+_pre ]] || echo "doc? ( dev-python/python-docs:${SLOT} )")" +PDEPEND="app-admin/python-updater" + +if [[ "${PV}" != *_pre* ]]; then + S="${WORKDIR}/${MY_P}" +fi + +pkg_setup() { + python_pkg_setup + + if use berkdb; then + ewarn "\"bsddb\" module is out-of-date and no longer maintained inside dev-lang/python. It has" + ewarn "been additionally removed in Python 3. You should use external, still maintained \"bsddb3\"" + ewarn "module provided by dev-python/bsddb3 which supports both Python 2 and Python 3." + fi +} + +src_prepare() { + # Ensure that internal copies of expat, libffi and zlib are not used. + rm -fr Modules/expat + rm -fr Modules/_ctypes/libffi* + rm -fr Modules/zlib + + if [[ "${PV}" =~ ^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+_pre ]]; then + if grep -Eq '#define PY_RELEASE_LEVEL[[:space:]]+PY_RELEASE_LEVEL_FINAL' Include/patchlevel.h; then + # Update micro version, release level and version string. + local micro_version="${PV%_pre*}" + micro_version="${micro_version##*.}" + local version_string="${PV%.*}.$((${micro_version} - 1))+" + sed \ + -e "s/\(#define PY_MICRO_VERSION[[:space:]]\+\)[^[:space:]]\+/\1${micro_version}/" \ + -e "s/\(#define PY_RELEASE_LEVEL[[:space:]]\+\)[^[:space:]]\+/\1PY_RELEASE_LEVEL_ALPHA/" \ + -e "s/\(#define PY_VERSION[[:space:]]\+\"\)[^\"]\+\(\"\)/\1${version_string}\2/" \ + -i Include/patchlevel.h || die "sed failed" + fi + fi + + local excluded_patches + if ! tc-is-cross-compiler; then + excluded_patches="*_all_crosscompile.patch" + fi + + local patchset_dir + if [[ "${PV}" == *_pre* ]]; then + patchset_dir="${FILESDIR}/${SLOT}-${PATCHSET_REVISION}" + else + patchset_dir="${WORKDIR}/${MY_PV}" + fi + + EPATCH_EXCLUDE="${excluded_patches}" EPATCH_SUFFIX="patch" epatch "${patchset_dir}" + + epatch ${FILESDIR}/${P}-BJA-cross.diff + + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \ + Lib/distutils/command/install.py \ + Lib/distutils/sysconfig.py \ + Lib/site.py \ + Lib/sysconfig.py \ + Lib/test/test_site.py \ + Makefile.pre.in \ + Modules/Setup.dist \ + Modules/getpath.c \ + setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@" + + if ! use wininst; then + # Remove Microsoft Windows executables. + rm Lib/distutils/command/wininst-*.exe + fi + + # Support versions of Autoconf other than 2.65. + sed -e "/version_required(2\.65)/d" -i configure.in || die "sed failed" + + if [[ "${PV}" == *_pre* ]]; then + sed -e "s/\(-DSVNVERSION=\).*\( -o\)/\1\\\\\"${ESVN_REVISION}\\\\\"\2/" -i Makefile.pre.in || die "sed failed" + fi + + eautoreconf +} + +src_configure() { + if use build; then + # Disable extraneous modules with extra dependencies. + export PYTHON_DISABLE_MODULES="dbm _bsddb gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat" + export PYTHON_DISABLE_SSL="1" + else + # dbm module can be linked against berkdb or gdbm. + # Defaults to gdbm when both are enabled, #204343. + local disable + use berkdb || use gdbm || disable+=" dbm" + use berkdb || disable+=" _bsddb" + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat. + export PYTHON_DISABLE_MODULES="${disable}" + + if ! use xml; then + ewarn "You have configured Python without XML support." + ewarn "This is NOT a recommended configuration as you" + ewarn "may face problems parsing any XML documents." + fi + fi + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + if [[ "$(gcc-major-version)" -ge 4 ]]; then + append-flags -fwrapv + fi + + filter-flags -malign-double + + [[ "${ARCH}" == "alpha" ]] && append-flags -fPIC + + # https://bugs.gentoo.org/show_bug.cgi?id=50309 + if is-flagq -O3; then + is-flagq -fstack-protector-all && replace-flags -O3 -O2 + use hardened && replace-flags -O3 -O2 + fi + + if tc-is-cross-compiler; then + OPT="-O1" CFLAGS="" LDFLAGS="" CC="" \ + ./configure --{build,host}=${CBUILD} || die "cross-configure failed" + emake python Parser/pgen || die "cross-make failed" + mv python hostpython + mv Parser/pgen Parser/hostpgen + make distclean + sed -i \ + -e "/^HOSTPYTHON/s:=.*:=./hostpython:" \ + -e "/^HOSTPGEN/s:=.*:=./Parser/hostpgen:" \ + Makefile.pre.in || die "sed failed" + fi + + # Export CXX so it ends up in /usr/lib/python2.X/config/Makefile. + tc-export CXX + + # Set LDFLAGS so we link modules with -lpython2.7 correctly. + # Needed on FreeBSD unless Python 2.7 is already installed. + # Please query BSD team before removing this! + append-ldflags "-L." + + local dbmliborder + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + if use berkdb; then + dbmliborder+="${dbmliborder:+:}bdb" + fi + + OPT="" econf \ + --with-fpectl \ + --enable-shared \ + $(use_enable ipv6) \ + $(use_with threads) \ + $(use wide-unicode && echo "--enable-unicode=ucs4" || echo "--enable-unicode=ucs2") \ + --infodir='${prefix}/share/info' \ + --mandir='${prefix}/share/man' \ + --with-dbmliborder="${dbmliborder}" \ + --with-libc="" \ + --enable-loadable-sqlite-extensions \ + --with-system-expat \ + --with-system-ffi +} + +src_compile() { + emake EPYTHON="python${PV%%.*}" || die "emake failed" +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + # Byte compiling should be enabled here. + # Otherwise test_import fails. + python_enable_pyc + + # Skip failing tests. + local skip_tests="distutils gdb minidom pyexpat sax" + + for test in ${skip_tests}; do + mv "${S}/Lib/test/test_${test}.py" "${T}" + done + + # Rerun failed tests in verbose mode (regrtest -w). + emake test EXTRATESTOPTS="-w" < /dev/tty + local result="$?" + + for test in ${skip_tests}; do + mv "${T}/test_${test}.py" "${S}/Lib/test/test_${test}.py" + done + + elog "The following tests have been skipped:" + for test in ${skip_tests}; do + elog "test_${test}.py" + done + + elog "If you would like to run them, you may:" + elog "cd '${EPREFIX}$(python_get_libdir)/test'" + elog "and run the tests separately." + + python_disable_pyc + + if [[ "${result}" -ne 0 ]]; then + die "emake test failed" + fi +} + +src_install() { + [[ -z "${ED}" ]] && ED="${D%/}${EPREFIX}/" + + emake DESTDIR="${D}" altinstall maninstall || die "emake altinstall maninstall failed" + python_clean_installation_image -q + + sed -e "s/\(LDFLAGS=\).*/\1/" -i "${ED}$(python_get_libdir)/config/Makefile" || die "sed failed" + + mv "${ED}usr/bin/python${SLOT}-config" "${ED}usr/bin/python-config-${SLOT}" + + # Fix collisions between different slots of Python. + mv "${ED}usr/bin/2to3" "${ED}usr/bin/2to3-${SLOT}" + mv "${ED}usr/bin/pydoc" "${ED}usr/bin/pydoc${SLOT}" + mv "${ED}usr/bin/idle" "${ED}usr/bin/idle${SLOT}" + rm -f "${ED}usr/bin/smtpd.py" + + if use build; then + rm -fr "${ED}usr/bin/idle${SLOT}" "${ED}$(python_get_libdir)/"{bsddb,idlelib,lib-tk,sqlite3,test} + else + use elibc_uclibc && rm -fr "${ED}$(python_get_libdir)/"{bsddb/test,test} + use berkdb || rm -fr "${ED}$(python_get_libdir)/"{bsddb,test/test_bsddb*} + use sqlite || rm -fr "${ED}$(python_get_libdir)/"{sqlite3,test/test_sqlite*} + use tk || rm -fr "${ED}usr/bin/idle${SLOT}" "${ED}$(python_get_libdir)/"{idlelib,lib-tk} + fi + + use threads || rm -fr "${ED}$(python_get_libdir)/multiprocessing" + + dodoc Misc/{ACKS,HISTORY,NEWS} || die "dodoc failed" + + if use examples; then + insinto /usr/share/doc/${PF}/examples + doins -r "${S}/Tools" || die "doins failed" + fi + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT} || die "newconfd failed" + newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT} || die "newinitd failed" + sed -e "s:@PYDOC@:pydoc${SLOT}:" -i "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed" + + # Do not install empty directory. + rmdir "${ED}$(python_get_libdir)/lib-old" +} + +pkg_preinst() { + if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version "${CATEGORY}/${PN}:2.7"; then + python_updater_warning="1" + fi +} + +eselect_python_update() { + [[ -z "${EROOT}" || (! -d "${EROOT}" && -d "${ROOT}") ]] && EROOT="${ROOT%/}${EPREFIX}/" + + if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then + eselect python update + fi + + if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then + eselect python update --python${PV%%.*} + fi +} + +pkg_postinst() { + eselect_python_update + + python_mod_optimize -f -x "/(site-packages|test|tests)/" $(python_get_libdir) + + if [[ "${python_updater_warning}" == "1" ]]; then + ewarn + ewarn "\e[1;31m************************************************************************\e[0m" + ewarn + ewarn "You have just upgraded from an older version of Python." + ewarn "You should run 'python-updater \${options}' to rebuild Python modules." + ewarn + ewarn "\e[1;31m************************************************************************\e[0m" + ewarn + ebeep 12 + fi +} + +pkg_postrm() { + eselect_python_update + + python_mod_cleanup $(python_get_libdir) +} diff --git a/dev-lang/python/python-3.1.3-r1.ebuild b/dev-lang/python/python-3.1.3-r1.ebuild new file mode 100644 index 00000000..7cbd6a94 --- /dev/null +++ b/dev-lang/python/python-3.1.3-r1.ebuild @@ -0,0 +1,336 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-3.1.3-r1.ebuild,v 1.9 2011/08/27 21:09:43 neurogeek Exp $ + +EAPI="3" +WANT_AUTOMAKE="none" + +inherit autotools eutils flag-o-matic multilib python toolchain-funcs + +if [[ "${PV}" == *_pre* ]]; then + inherit subversion + + ESVN_PROJECT="python" + ESVN_REPO_URI="http://svn.python.org/projects/python/branches/release31-maint" + ESVN_REVISION="" +else + MY_PV="${PV%_p*}" + MY_P="Python-${MY_PV}" +fi + +PATCHSET_REVISION="1" + +DESCRIPTION="Python is an interpreted, interactive, object-oriented programming language." +HOMEPAGE="http://www.python.org/" +if [[ "${PV}" == *_pre* ]]; then + SRC_URI="" +else + SRC_URI="http://www.python.org/ftp/python/${MY_PV}/${MY_P}.tar.bz2 + mirror://gentoo/python-gentoo-patches-${MY_PV}$([[ "${PATCHSET_REVISION}" != "0" ]] && echo "-r${PATCHSET_REVISION}").tar.bz2" +fi + +LICENSE="PSF-2" +SLOT="3.1" +PYTHON_ABI="${SLOT}" +KEYWORDS="~alpha amd64 ~arm hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh ~sparc x86 ~sparc-fbsd ~x86-fbsd" +IUSE="build doc elibc_uclibc examples gdbm ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml" + +RDEPEND=">=app-admin/eselect-python-20091230 + >=sys-libs/zlib-1.1.3 + virtual/libffi + virtual/libintl + !build? ( + gdbm? ( sys-libs/gdbm ) + ncurses? ( + >=sys-libs/ncurses-5.2 + readline? ( >=sys-libs/readline-4.1 ) + ) + sqlite? ( >=dev-db/sqlite-3.3.3:3 ) + ssl? ( dev-libs/openssl ) + tk? ( >=dev-lang/tk-8.0 ) + xml? ( >=dev-libs/expat-2 ) + )" +DEPEND="${RDEPEND} + $([[ "${PV}" == *_pre* ]] && echo "=${CATEGORY}/${PN}-${PV%%.*}*") + dev-util/pkgconfig + $([[ "${PV}" =~ ^[[:digit:]]+\.[[:digit:]]+_pre ]] && echo "doc? ( dev-python/sphinx )") + !sys-devel/gcc[libffi]" +RDEPEND+=" !build? ( app-misc/mime-types ) + $([[ "${PV}" =~ ^[[:digit:]]+\.[[:digit:]]+_pre ]] || echo "doc? ( dev-python/python-docs:${SLOT} )")" +PDEPEND="app-admin/python-updater" + +if [[ "${PV}" != *_pre* ]]; then + S="${WORKDIR}/${MY_P}" +fi + +pkg_setup() { + python_pkg_setup +} + +src_prepare() { + # Ensure that internal copies of expat, libffi and zlib are not used. + rm -fr Modules/expat + rm -fr Modules/_ctypes/libffi* + rm -fr Modules/zlib + + if [[ "${PV}" =~ ^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+_pre ]]; then + if grep -Eq '#define PY_RELEASE_LEVEL[[:space:]]+PY_RELEASE_LEVEL_FINAL' Include/patchlevel.h; then + # Update micro version, release level and version string. + local micro_version="${PV%_pre*}" + micro_version="${micro_version##*.}" + local version_string="${PV%.*}.$((${micro_version} - 1))+" + sed \ + -e "s/\(#define PY_MICRO_VERSION[[:space:]]\+\)[^[:space:]]\+/\1${micro_version}/" \ + -e "s/\(#define PY_RELEASE_LEVEL[[:space:]]\+\)[^[:space:]]\+/\1PY_RELEASE_LEVEL_ALPHA/" \ + -e "s/\(#define PY_VERSION[[:space:]]\+\"\)[^\"]\+\(\"\)/\1${version_string}\2/" \ + -i Include/patchlevel.h || die "sed failed" + fi + fi + + local excluded_patches + if ! tc-is-cross-compiler; then + excluded_patches="*_all_crosscompile.patch" + fi + + local patchset_dir + if [[ "${PV}" == *_pre* ]]; then + patchset_dir="${FILESDIR}/${SLOT}-${PATCHSET_REVISION}" + else + patchset_dir="${WORKDIR}/${MY_PV}" + fi + + EPATCH_EXCLUDE="${excluded_patches}" EPATCH_SUFFIX="patch" epatch "${patchset_dir}" + + epatch ${FILESDIR}/${P}-BJA-cross.diff + + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \ + Lib/distutils/command/install.py \ + Lib/distutils/sysconfig.py \ + Lib/site.py \ + Makefile.pre.in \ + Modules/Setup.dist \ + Modules/getpath.c \ + setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@" + + if ! use wininst; then + # Remove Microsoft Windows executables. + rm Lib/distutils/command/wininst-*.exe + fi + + if [[ "${PV}" == *_pre* ]]; then + sed -e "s/\(-DSVNVERSION=\).*\( -o\)/\1\\\\\"${ESVN_REVISION}\\\\\"\2/" -i Makefile.pre.in || die "sed failed" + fi + + eautoreconf +} + +src_configure() { + if use build; then + # Disable extraneous modules with extra dependencies. + export PYTHON_DISABLE_MODULES="gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat" + export PYTHON_DISABLE_SSL="1" + else + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat. + export PYTHON_DISABLE_MODULES="${disable}" + + if ! use xml; then + ewarn "You have configured Python without XML support." + ewarn "This is NOT a recommended configuration as you" + ewarn "may face problems parsing any XML documents." + fi + fi + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + if [[ "$(gcc-major-version)" -ge 4 ]]; then + append-flags -fwrapv + fi + + filter-flags -malign-double + + [[ "${ARCH}" == "alpha" ]] && append-flags -fPIC + + # https://bugs.gentoo.org/show_bug.cgi?id=50309 + if is-flagq -O3; then + is-flagq -fstack-protector-all && replace-flags -O3 -O2 + use hardened && replace-flags -O3 -O2 + fi + + if tc-is-cross-compiler; then + OPT="-O1" CFLAGS="" LDFLAGS="" CC="" \ + ./configure --{build,host}=${CBUILD} || die "cross-configure failed" + emake python Parser/pgen || die "cross-make failed" + mv python hostpython + mv Parser/pgen Parser/hostpgen + make distclean + sed -i \ + -e "/^HOSTPYTHON/s:=.*:=./hostpython:" \ + -e "/^HOSTPGEN/s:=.*:=./Parser/hostpgen:" \ + Makefile.pre.in || die "sed failed" + fi + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + tc-export CXX + + # Set LDFLAGS so we link modules with -lpython3.1 correctly. + # Needed on FreeBSD unless Python 3.1 is already installed. + # Please query BSD team before removing this! + append-ldflags "-L." + + local dbmliborder + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + OPT="" econf \ + --with-fpectl \ + --enable-shared \ + $(use_enable ipv6) \ + $(use_with threads) \ + $(use_with wide-unicode) \ + --infodir='${prefix}/share/info' \ + --mandir='${prefix}/share/man' \ + --with-computed-gotos \ + --with-dbmliborder="${dbmliborder}" \ + --with-libc="" \ + --with-system-ffi +} + +src_compile() { + emake EPYTHON="python${PV%%.*}" || die "emake failed" +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + if ! use threads; then + ewarn "Disabling tests due to USE=\"-threads\"" + return + fi + + # Byte compiling should be enabled here. + # Otherwise test_import fails. + python_enable_pyc + + # Skip failing tests. + local skip_tests="distutils" + + for test in ${skip_tests}; do + mv "${S}/Lib/test/test_${test}.py" "${T}" + done + + # Rerun failed tests in verbose mode (regrtest -w). + emake test EXTRATESTOPTS="-w" < /dev/tty + local result="$?" + + for test in ${skip_tests}; do + mv "${T}/test_${test}.py" "${S}/Lib/test/test_${test}.py" + done + + elog "The following tests have been skipped:" + for test in ${skip_tests}; do + elog "test_${test}.py" + done + + elog "If you would like to run them, you may:" + elog "cd '${EPREFIX}$(python_get_libdir)/test'" + elog "and run the tests separately." + + python_disable_pyc + + if [[ "${result}" -ne 0 ]]; then + die "emake test failed" + fi +} + +src_install() { + emake DESTDIR="${D}" altinstall || die "emake altinstall failed" + python_clean_installation_image -q + + mv "${ED}usr/bin/python${SLOT}-config" "${ED}usr/bin/python-config-${SLOT}" + + # Fix collisions between different slots of Python. + mv "${ED}usr/bin/2to3" "${ED}usr/bin/2to3-${SLOT}" + mv "${ED}usr/bin/pydoc3" "${ED}usr/bin/pydoc${SLOT}" + mv "${ED}usr/bin/idle3" "${ED}usr/bin/idle${SLOT}" + rm -f "${ED}usr/bin/smtpd.py" + + if use build; then + rm -fr "${ED}usr/bin/idle${SLOT}" "${ED}$(python_get_libdir)/"{idlelib,sqlite3,test,tkinter} + else + use elibc_uclibc && rm -fr "${ED}$(python_get_libdir)/test" + use sqlite || rm -fr "${ED}$(python_get_libdir)/"{sqlite3,test/test_sqlite*} + use tk || rm -fr "${ED}usr/bin/idle${SLOT}" "${ED}$(python_get_libdir)/"{idlelib,tkinter,test/test_tk*} + fi + + use threads || rm -fr "${ED}$(python_get_libdir)/multiprocessing" + + dodoc Misc/{ACKS,HISTORY,NEWS} || die "dodoc failed" + + if use examples; then + insinto /usr/share/doc/${PF}/examples + doins -r "${S}/Tools" || die "doins failed" + fi + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT} || die "newconfd failed" + newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT} || die "newinitd failed" + sed -e "s:@PYDOC@:pydoc${SLOT}:" -i "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed" +} + +pkg_preinst() { + if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version ">=${CATEGORY}/${PN}-${SLOT}_alpha"; then + python_updater_warning="1" + fi +} + +eselect_python_update() { + if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then + eselect python update + fi + + if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then + eselect python update --python${PV%%.*} + fi +} + +pkg_postinst() { + eselect_python_update + + python_mod_optimize -f -x "/(site-packages|test|tests)/" $(python_get_libdir) + + if [[ "${python_updater_warning}" == "1" ]]; then + ewarn + ewarn "\e[1;31m************************************************************************\e[0m" + ewarn + ewarn "You have just upgraded from an older version of Python." + ewarn "You should run 'python-updater \${options}' to rebuild Python modules." + ewarn + ewarn "\e[1;31m************************************************************************\e[0m" + ewarn + + local n + for ((n = 0; n < 12; n++)); do + echo -ne "\a" + sleep 1 + done + fi +} + +pkg_postrm() { + eselect_python_update + + python_mod_cleanup $(python_get_libdir) +} |