summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-lang/unladen-swallow/Manifest4
-rw-r--r--dev-lang/unladen-swallow/files/fix-destdir-install.patch13
-rw-r--r--dev-lang/unladen-swallow/files/install-version.patch58
-rw-r--r--dev-lang/unladen-swallow/files/install-version2.patch72
-rw-r--r--dev-lang/unladen-swallow/unladen-swallow-9999.ebuild321
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)
+}