diff options
-rw-r--r-- | dev-lang/unladen-swallow/Manifest | 4 | ||||
-rw-r--r-- | dev-lang/unladen-swallow/files/fix-destdir-install.patch | 13 | ||||
-rw-r--r-- | dev-lang/unladen-swallow/files/install-version.patch | 58 | ||||
-rw-r--r-- | dev-lang/unladen-swallow/files/install-version2.patch | 72 | ||||
-rw-r--r-- | dev-lang/unladen-swallow/unladen-swallow-9999.ebuild | 321 |
5 files changed, 468 insertions, 0 deletions
diff --git a/dev-lang/unladen-swallow/Manifest b/dev-lang/unladen-swallow/Manifest new file mode 100644 index 0000000..7328751 --- /dev/null +++ b/dev-lang/unladen-swallow/Manifest @@ -0,0 +1,4 @@ +AUX fix-destdir-install.patch 482 RMD160 5a29ad928dba4aff7c48719bd394fa4158aaee1e SHA1 62bfa5b4ba83235895ad5a202af0a198e3b0074b SHA256 be980ec3eaaccbda74a176824cc610c5844523dbff0365a4361f2d57bcb3397a +AUX install-version.patch 1966 RMD160 973fca97288337635102eae860a6ee2b8621f30c SHA1 c80f8a803b1950471f908accc40982abb773ade2 SHA256 f3982ba14d29dcaf9849e6ecfa284a1b051e23304cb901e295c98a1bbb62e0a4 +AUX install-version2.patch 3400 RMD160 6a9becb4f692ea37530c629fcf65373a7b95e4d2 SHA1 99dba159d5c1bddaefe00680a164af53e48d6ea5 SHA256 1efcfd19086a2246b7c1d40a287769bc7b924e11ddb35901d0ade9c5f65a679d +EBUILD unladen-swallow-9999.ebuild 10242 RMD160 bbe1987b144be4c2691730f9baa245b2c84da7fd SHA1 8cc1d270fc0f01e7e77d45be8cac92ac78604cbb SHA256 e193330c0ee8f80235ecfe8dcebef49cc7b8c84fdd66292c8a651d74327e8455 diff --git a/dev-lang/unladen-swallow/files/fix-destdir-install.patch b/dev-lang/unladen-swallow/files/fix-destdir-install.patch new file mode 100644 index 0000000..ba7e00c --- /dev/null +++ b/dev-lang/unladen-swallow/files/fix-destdir-install.patch @@ -0,0 +1,13 @@ +Index: Makefile.pre.in +=================================================================== +--- Makefile.pre.in (revision 1060) ++++ Makefile.pre.in (working copy) +@@ -1094,7 +1094,7 @@ + fi; \ + fi + @if test @BUILD_LLVM@ != disabled ; then \ +- $(INSTALL_DATA) $(BCLIBRARY) $(DESTSHARED); \ ++ $(INSTALL_DATA) $(BCLIBRARY) $(DESTDIR)$(DESTSHARED); \ + fi + $(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c + $(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o diff --git a/dev-lang/unladen-swallow/files/install-version.patch b/dev-lang/unladen-swallow/files/install-version.patch new file mode 100644 index 0000000..dbedc84 --- /dev/null +++ b/dev-lang/unladen-swallow/files/install-version.patch @@ -0,0 +1,58 @@ +Index: Python/global_llvm_data.cc +=================================================================== +--- Python/global_llvm_data.cc (revision 1060) ++++ Python/global_llvm_data.cc (working copy) +@@ -64,17 +64,21 @@ + #define STRINGIFY(X) STRINGIFY2(X) + #define STRINGIFY2(X) #X + // The basename of the bitcode file holding the standard library. ++#ifdef PYTHON_INSTALL_VERSION ++#define Py_BC_VERSION_COMPONENT PYTHON_INSTALL_VERSION ++#else ++#define Py_BC_VERSION_COMPONENT STRINGIFY(PY_MAJOR_VERSION) \ ++ STRINGIFY(PY_MINOR_VERSION) ++#endif ++ + #ifdef MS_WINDOWS + #ifdef Py_DEBUG +-#define LIBPYTHON_BC "python" STRINGIFY(PY_MAJOR_VERSION) \ +- STRINGIFY(PY_MINOR_VERSION) "_d.bc" ++#define LIBPYTHON_BC "python" Py_BC_VERSION_COMPONENT "_d.bc" + #else +-#define LIBPYTHON_BC "python" STRINGIFY(PY_MAJOR_VERSION) \ +- STRINGIFY(PY_MINOR_VERSION) ".bc" ++#define LIBPYTHON_BC "python" Py_BC_VERSION_COMPONENT ".bc" + #endif + #else +-#define LIBPYTHON_BC "libpython" STRINGIFY(PY_MAJOR_VERSION) "." \ +- STRINGIFY(PY_MINOR_VERSION) ".bc" ++#define LIBPYTHON_BC "libpython" Py_BC_VERSION_COMPONENT ".bc" + #endif + + // Searches for the bitcode file holding the Python standard library. +Index: configure.in +=================================================================== +--- configure.in (revision 1060) ++++ configure.in (working copy) +@@ -4,11 +4,12 @@ + dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61). + + # Set VERSION so we only need to edit in one place (i.e., here) +-m4_define(PYTHON_VERSION, 2.6) ++m4_define(PYTHON_VERSION, 2.6-unladen) + + AC_REVISION($Revision: 75132 $) + AC_PREREQ(2.61) + AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs) ++AC_DEFINE(PYTHON_INSTALL_VERSION, "2.6-unladen") + AC_CONFIG_SRCDIR([Include/object.h]) + AC_CONFIG_HEADER(pyconfig.h) + +@@ -24,6 +25,7 @@ + #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ + #endif + ++#define PYTHON_INSTALL_VERSION PYTHON_INSTALL_VERSION + #endif /*Py_PYCONFIG_H*/ + ]) + diff --git a/dev-lang/unladen-swallow/files/install-version2.patch b/dev-lang/unladen-swallow/files/install-version2.patch new file mode 100644 index 0000000..b0b457d --- /dev/null +++ b/dev-lang/unladen-swallow/files/install-version2.patch @@ -0,0 +1,72 @@ +diff -urN Lib/distutils/command/build.py Lib/distutils/command/build.py +--- Lib/distutils/command/build.py 2010-02-04 21:32:01.000000000 -0800 ++++ Lib/distutils/command/build.py 2010-02-04 22:49:25.000000000 -0800 +@@ -83,7 +83,7 @@ + "--plat-name only supported on Windows (try " + "using './configure --help' on your platform)") + +- plat_specifier = ".%s-%s" % (self.plat_name, sys.version[0:3]) ++ plat_specifier = ".%s-%s" % (self.plat_name, sys.version[0:3] + "-unladen") + + # Make it so Python 2.x and Python 2.x with --with-pydebug don't + # share the same build directories. Doing so confuses the build +diff -urN Lib/distutils/command/build_ext.py Lib/distutils/command/build_ext.py +--- Lib/distutils/command/build_ext.py 2010-02-04 21:32:01.000000000 -0800 ++++ Lib/distutils/command/build_ext.py 2010-02-04 22:49:25.000000000 -0800 +@@ -758,9 +758,9 @@ + else: + from distutils import sysconfig + if sysconfig.get_config_var('Py_ENABLE_SHARED'): +- template = "python%d.%d" ++ template = "python%s" + pythonlib = (template % +- (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) ++ (sys.version[0:3] + "-unladen",)) + return ext.libraries + [pythonlib] + else: + return ext.libraries +diff -urN Lib/distutils/sysconfig.py Lib/distutils/sysconfig.py +--- Lib/distutils/sysconfig.py 2010-02-04 21:32:01.000000000 -0800 ++++ Lib/distutils/sysconfig.py 2010-02-04 22:49:26.000000000 -0800 +@@ -52,7 +52,7 @@ + leaving off the patchlevel. Sample return values could be '1.5' + or '2.2'. + """ +- return sys.version[:3] ++ return sys.version[:3] + "-unladen" + + + def get_python_inc(plat_specific=0, prefix=None): +diff -urN Lib/site.py Lib/site.py +--- Lib/site.py 2010-02-04 21:31:58.000000000 -0800 ++++ Lib/site.py 2010-02-04 22:49:32.000000000 -0800 +@@ -252,7 +252,7 @@ + else: + USER_BASE = env_base if env_base else joinuser("~", ".local") + USER_SITE = os.path.join(USER_BASE, "lib", +- "python" + sys.version[:3], ++ "python" + sys.version[:3] + "-unladen", + "site-packages") + + if ENABLE_USER_SITE and os.path.isdir(USER_SITE): +@@ -274,7 +274,7 @@ + sitedirs.append(os.path.join(prefix, "Lib", "site-packages")) + elif os.sep == '/': + sitedirs.append(os.path.join(prefix, "lib", +- "python" + sys.version[:3], ++ "python" + sys.version[:3] + "-unladen", + "site-packages")) + sitedirs.append(os.path.join(prefix, "lib", "site-python")) + else: +diff -urN setup.py setup.py +--- setup.py 2010-01-15 01:09:04.000000000 -0800 ++++ setup.py 2010-02-05 01:19:44.656255205 -0800 +@@ -22,7 +22,7 @@ + + def record_build_dir(): + """Record the relative path to the build diretory for site.py.""" +- build_dir = "build/lib.%s-%.3s" % (get_platform(), sys.version) ++ build_dir = "build/lib.%s-%.3s-unladen" % (get_platform(), sys.version) + + build_dir_file = os.path.join(os.path.dirname(sys.executable), "build_dir") + f = open(build_dir_file, "w") diff --git a/dev-lang/unladen-swallow/unladen-swallow-9999.ebuild b/dev-lang/unladen-swallow/unladen-swallow-9999.ebuild new file mode 100644 index 0000000..93e0b12 --- /dev/null +++ b/dev-lang/unladen-swallow/unladen-swallow-9999.ebuild @@ -0,0 +1,321 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.6.4-r1.ebuild,v 1.1 2010/01/26 18:52:04 arfrever Exp $ + +EAPI="2" + +ESVN_REPO_URI="http://unladen-swallow.googlecode.com/svn/trunk" +inherit subversion autotools eutils flag-o-matic multilib pax-utils python toolchain-funcs + +MY_P="Python-${PV}" +S="${WORKDIR}/trunk" + +PATCHSET_REVISION="2" + +DESCRIPTION="Python is an interpreted, interactive, object-oriented programming language." +HOMEPAGE="http://www.python.org/" +#SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.bz2 +# mirror://gentoo/python-gentoo-patches-${PV}$([[ "${PATCHSET_REVISION}" != "0" ]] && echo "-r${PATCHSET_REVISION}").tar.bz2" +#SRC_URI="mirror://gentoo/python-gentoo-patches-${PV}$([[ "${PATCHSET_REVISION}" != "0" ]] && echo "-r${PATCHSET_REVISION}").tar.bz2" + +LICENSE="PSF-2.2" +SLOT="2.6" +PYTHON_ABI="unladen-$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" + +# NOTE: dev-python/{elementtree,celementtree,pysqlite,ctypes} +# do not conflict with the ones in python proper. - liquidx + +RDEPEND=">=app-admin/eselect-python-20090606 + >=sys-libs/zlib-1.1.3 + virtual/libffi + virtual/libintl + !build? ( + berkdb? ( || ( + 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 + ) ) + doc? ( dev-python/python-docs:${SLOT} ) + gdbm? ( sys-libs/gdbm ) + ncurses? ( + >=sys-libs/ncurses-5.2 + readline? ( >=sys-libs/readline-4.1 ) + ) + sqlite? ( >=dev-db/sqlite-3 ) + ssl? ( dev-libs/openssl ) + tk? ( >=dev-lang/tk-8.0 ) + xml? ( >=dev-libs/expat-2 ) + )" +DEPEND="${RDEPEND} + dev-util/pkgconfig + !sys-devel/gcc[libffi] + >=sys-devel/clang-2.7" +RDEPEND+=" !build? ( app-misc/mime-types )" +PDEPEND="app-admin/python-updater" + +PROVIDE="virtual/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 + + if ! has_version "=dev-lang/python-3*"; then + elog "It is highly recommended to additionally install Python 3, but without configuring Python wrapper to use Python 3." + fi +} + +src_prepare() { + # Ensure that internal copies of expat and libffi aren't used. +# rm -fr Modules/expat +# rm -fr Modules/_ctypes/libffi* + + if tc-is-cross-compiler; then + epatch "${FILESDIR}/python-2.5-cross-printf.patch" + epatch "${FILESDIR}/python-2.6-chflags-cross.patch" + epatch "${FILESDIR}/python-2.6-test-cross.patch" + else + rm "${WORKDIR}/${PV}"/*_all_crosscompile.patch + fi + + epatch "${FILESDIR}"/fix-destdir-install.patch + epatch "${FILESDIR}"/install-version.patch + epatch "${FILESDIR}"/install-version2.patch + +# EPATCH_SUFFIX="patch" epatch "${WORKDIR}/${PV}" + + 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@@" + + # Fix os.utime() on hppa. utimes it not supported but unfortunately reported as working - gmsoft (22 May 04) + # PLEASE LEAVE THIS FIX FOR NEXT VERSIONS AS IT'S A CRITICAL FIX !!! + [[ "${ARCH}" == "hppa" ]] && sed -e "s/utimes //" -i "${S}/configure" + + if ! use wininst; then + # Remove Microsoft Windows executables. + rm Lib/distutils/command/wininst-*.exe + fi + + # Fix OtherFileTests.testStdin() not to assume + # that stdin is a tty for bug #248081. + sed -e "s:'osf1V5':'osf1V5' and sys.stdin.isatty():" -i Lib/test/test_file.py || die "sed failed" + + AT_NO_RECURSIVE=1 eautoreconf +} + +src_configure() { + # Disable extraneous modules with extra dependencies. + if use build; then + 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 + + export OPT="${CFLAGS}" + + filter-flags -malign-double + + [[ "${ARCH}" == "alpha" ]] && append-flags -fPIC + + # https://bugs.gentoo.org/show_bug.cgi?id=50309 + if is-flag -O3; then + is-flag -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.6 correctly. + # Needed on FreeBSD unless Python 2.6 is already installed. + # Please query BSD team before removing this! + append-ldflags "-L." + + 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-libc='' \ + --with-system-ffi + echo "configured" +} + +src_compile() { + ( emake ) && return + emake -j1 || die "failed building" +} + +src_test() { + # Tests won't 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 all tests that fail during emerge but pass without emerge: + # (See bug #67970) + local skip_tests="distutils httpservers minidom pyexpat sax tcl" + + # test_ctypes fails with PAX kernel (bug #234498). + host-is-pax && skip_tests+=" ctypes" + + for test in ${skip_tests}; do + mv "${S}/Lib/test/test_${test}.py" "${T}" + done + + # Rerun failed tests in verbose mode (regrtest -w). + EXTRATESTOPTS="-w" make test || die "make test failed" + + 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'd like to run them, you may:" + elog "cd $(python_get_libdir)/test" + elog "and run the tests separately." + + python_disable_pyc +} + +src_install() { + emake DESTDIR="${D}" altinstall maninstall || die "emake altinstall maninstall failed" + + mv "${D}usr/bin/python${PYTHON_ABI}-config" "${D}usr/bin/python-config-${PYTHON_ABI}" + + # Fix collisions between different slots of Python. + mv "${D}usr/bin/2to3" "${D}usr/bin/2to3-${PYTHON_ABI}" + mv "${D}usr/bin/pydoc" "${D}usr/bin/pydoc${PYTHON_ABI}" + mv "${D}usr/bin/idle" "${D}usr/bin/idle${PYTHON_ABI}" + mv "${D}usr/share/man/man1/python.1" "${D}usr/share/man/man1/python${PYTHON_ABI}.1" + rm -f "${D}usr/bin/smtpd.py" + + # Fix the OPT variable so that it doesn't have any flags listed in it. + # Prevents the problem with compiling things with conflicting flags later. + sed -e "s:^OPT=.*:OPT=-DNDEBUG:" -i "${D}$(python_get_libdir)/config/Makefile" + + if use build; then + rm -fr "${D}$(python_get_libdir)/"{bsddb,email,lib-tk,sqlite3,test} + else + use elibc_uclibc && rm -fr "${D}$(python_get_libdir)/"{bsddb/test,test} + use berkdb || rm -fr "${D}$(python_get_libdir)/"{bsddb,test/test_bsddb*} + use sqlite || rm -fr "${D}$(python_get_libdir)/"{sqlite3,test/test_sqlite*} + use tk || rm -fr "${D}$(python_get_libdir)/lib-tk" + fi + + use threads || rm -fr "${D}$(python_get_libdir)/multiprocessing" + + prep_ml_includes $(python_get_includedir) + + if use examples; then + insinto /usr/share/doc/${PF}/examples + doins -r "${S}/Tools" || die "doins failed" + fi + + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYTHON_ABI} + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYTHON_ABI} + + # Don't install empty directory. + rmdir "${D}$(python_get_libdir)/lib-old" +} + +pkg_preinst() { + if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version ">=${CATEGORY}/${PN}-${SLOT}_alpha"; then + python_updater_warning="1" + fi +} + +eselect_python_update() { + local ignored_python_slots_options= + [[ "$(eselect python show)" == "python2."* ]] && ignored_python_slots_options="--ignore 3.0 --ignore 3.1 --ignore 3.2" + + # Create python2 symlink. + eselect python update --ignore 3.0 --ignore 3.1 --ignore 3.2 > /dev/null + + eselect python update ${ignored_python_slots_options} +} + +pkg_postinst() { + eselect_python_update + + python_mod_optimize -x "(site-packages|test)" $(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) +} |