diff options
author | Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org> | 2009-08-21 00:10:48 +0000 |
---|---|---|
committer | Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org> | 2009-08-21 00:10:48 +0000 |
commit | 9f79400d0acfd651c8d152400725a77e28918e6f (patch) | |
tree | f00f0cee3eb66b7a9e4c1eb1fd9e731acd01fb1e /dev-lang/python/python-2.4.6.ebuild | |
parent | Version bump. (diff) | |
download | gentoo-2-9f79400d0acfd651c8d152400725a77e28918e6f.tar.gz gentoo-2-9f79400d0acfd651c8d152400725a77e28918e6f.tar.bz2 gentoo-2-9f79400d0acfd651c8d152400725a77e28918e6f.zip |
Small updates.
(Portage version: 14103-svn/cvs/Linux x86_64)
Diffstat (limited to 'dev-lang/python/python-2.4.6.ebuild')
-rw-r--r-- | dev-lang/python/python-2.4.6.ebuild | 311 |
1 files changed, 143 insertions, 168 deletions
diff --git a/dev-lang/python/python-2.4.6.ebuild b/dev-lang/python/python-2.4.6.ebuild index 9d9e7f5698da..a5405f7218f5 100644 --- a/dev-lang/python/python-2.4.6.ebuild +++ b/dev-lang/python/python-2.4.6.ebuild @@ -1,17 +1,17 @@ # Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.4.6.ebuild,v 1.9 2009/05/28 16:57:18 arfrever Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.4.6.ebuild,v 1.10 2009/08/21 00:10:48 arfrever Exp $ # NOTE about python-portage interactions : # - Do not add a pkg_setup() check for a certain version of portage # in dev-lang/python. It _WILL_ stop people installing from # Gentoo 1.4 images. -EAPI=1 +EAPI="1" inherit autotools eutils flag-o-matic multilib python toolchain-funcs versionator -# we need this so that we don't depends on python.eclass +# We need this so that we don't depends on python.eclass PYVER_MAJOR=$(get_major_version) PYVER_MINOR=$(get_version_component_range 2) PYVER="${PYVER_MAJOR}.${PYVER_MINOR}" @@ -19,10 +19,12 @@ PYVER="${PYVER_MAJOR}.${PYVER_MINOR}" MY_P="Python-${PV}" S="${WORKDIR}/${MY_P}" +PATCHSET_REVISION="0" + 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}.tar.bz2" + mirror://gentoo/python-gentoo-patches-${PV}$([[ "${PATCHSET_REVISION}" != "0" ]] && echo "-r${PATCHSET_REVISION}").tar.bz2" LICENSE="PSF-2.2" SLOT="2.4" @@ -31,17 +33,16 @@ IUSE="berkdb bootstrap build +cxx doc elibc_uclibc examples gdbm ipv6 ncurses re # Can't be compiled against db-4.5 Bug #179377 DEPEND=">=app-admin/eselect-python-20080925 - >=sys-libs/zlib-1.1.3 - !dev-python/cjkcodecs - !build? ( - tk? ( >=dev-lang/tk-8.0 ) - ncurses? ( >=sys-libs/ncurses-5.2 readline? ( >=sys-libs/readline-4.1 ) ) - berkdb? ( || ( sys-libs/db:4.4 sys-libs/db:4.3 ) ) - gdbm? ( sys-libs/gdbm ) - ssl? ( dev-libs/openssl ) - doc? ( dev-python/python-docs:2.4 ) - xml? ( dev-libs/expat ) - )" + >=sys-libs/zlib-1.1.3 + !build? ( + tk? ( >=dev-lang/tk-8.0 ) + ncurses? ( >=sys-libs/ncurses-5.2 readline? ( >=sys-libs/readline-4.1 ) ) + berkdb? ( || ( sys-libs/db:4.4 sys-libs/db:4.3 ) ) + gdbm? ( sys-libs/gdbm ) + ssl? ( dev-libs/openssl ) + doc? ( dev-python/python-docs:${SLOT} ) + xml? ( dev-libs/expat ) + )" # NOTE: changed RDEPEND to PDEPEND to resolve bug 88777. - kloeri # NOTE: added blocker to enforce correct merge order for bug 88777. - zmedico @@ -55,8 +56,8 @@ src_unpack() { unpack ${A} cd "${S}" - if tc-is-cross-compiler ; then - epatch "${FILESDIR}"/python-2.4.4-test-cross.patch + if tc-is-cross-compiler; then + epatch "${FILESDIR}/python-2.4.4-test-cross.patch" else rm "${WORKDIR}/${PV}"/*_all_crosscompile.patch fi @@ -72,12 +73,12 @@ src_unpack() { 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) + # 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 + [[ "${ARCH}" == "hppa" ]] && sed -e "s/utimes //" -i "${S}/configure" if ! use wininst; then - # remove microsoft windows executables + # Remove Microsoft Windows executables. rm Lib/distutils/command/wininst-*.exe fi @@ -85,71 +86,61 @@ src_unpack() { } src_configure() { - # disable extraneous modules with extra dependencies + # Disable extraneous modules with extra dependencies. if use build; then - export PYTHON_DISABLE_MODULES="readline pyexpat dbm gdbm bsddb _curses _curses_panel _tkinter" - export PYTHON_DISABLE_SSL=1 + export PYTHON_DISABLE_MODULES="dbm bsddb gdbm _curses _curses_panel readline _tkinter pyexpat" + export PYTHON_DISABLE_SSL="1" else - # dbm module can link to berkdb or gdbm -- defaults to gdbm when - # both are enabled, see #204343 - use berkdb || use gdbm \ - || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} dbm" - use gdbm \ - || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} gdbm" - use berkdb \ - || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} bsddb" - use readline \ - || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} readline" - use tk \ - || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _tkinter" - use ncurses \ - || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _curses _curses_panel" - use ssl \ - || export PYTHON_DISABLE_SSL=1 - use xml \ - || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} pyexpat" - - export PYTHON_DISABLE_MODULES - - if use !xml; then + # 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 ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + use xml || disable+=" 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 - - einfo "Disabled modules: $PYTHON_DISABLE_MODULES" fi -} - -src_compile() { - filter-flags -malign-double - [ "${ARCH}" = "alpha" ] && append-flags -fPIC - - # http://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 + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" fi export OPT="${CFLAGS}" local myconf - #if we are creating a new build image, we remove the dependency on g++ - if use build && ! use bootstrap || ! use cxx ; then + # If we are creating a new build image, we remove the dependency on g++. + if use build && ! use bootstrap || ! use cxx; then myconf="--with-cxx=no" fi - # super-secret switch. don't use this unless you know what you're - # doing. enabling UCS2 support will break your existing python + # Super-secret switch. Don't use this unless you know what you're + # doing. Enabling UCS2 support will break your existing python # modules use ucs2 \ && myconf="${myconf} --enable-unicode=ucs2" \ || myconf="${myconf} --enable-unicode=ucs4" - src_configure + filter-flags -malign-double + + [[ "${ARCH}" == "alpha" ]] && append-flags -fPIC - if tc-is-cross-compiler ; then + # 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 --with-cxx=no --{build,host}=${CBUILD} || die "cross-configure failed" emake python Parser/pgen || die "cross-make failed" @@ -157,14 +148,14 @@ src_compile() { mv Parser/pgen Parser/hostpgen make distclean sed -i \ - -e '/^HOSTPYTHON/s:=.*:=./hostpython:' \ - -e '/^HOSTPGEN/s:=.*:=./Parser/hostpgen:' \ + -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 + # Export CXX so it ends up in /usr/lib/python2.X/config/Makefile. tc-export CXX - # set LINKCC to prevent python from being linked to libstdc++.so + # Set LINKCC to prevent Python from being linked to libstdc++.so. export LINKCC="\$(PURIFY) \$(CC)" econf \ --with-fpectl \ @@ -175,52 +166,85 @@ src_compile() { --mandir='${prefix}'/share/man \ --with-libc='' \ ${myconf} - emake || die "Parallel make failed" +} + +src_compile() { + src_configure + emake || die "emake failed" +} + +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="cookielib distutils global hotshot mimetools minidom mmap posix sax strptime subprocess syntax tcl time urllib urllib2" + + # test_pow fails on alpha. + # https://bugs.python.org/issue756093 + [[ ${ARCH} == "alpha" ]] && skip_tests+=" pow" + + 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 "Portage skipped the following tests which aren't able to run from emerge:" + for test in ${skip_tests}; do + elog "test_${test}.py" + done + + elog "If you'd like to run them, you may:" + elog "cd /usr/$(get_libdir)/python${PYVER}/test" + elog "and run the tests separately." } src_install() { dodir /usr emake DESTDIR="${D}" altinstall maninstall || die "emake altinstall maninstall failed" - # install our own custom python-config + # Install our own custom python-config exeinto /usr/bin newexe "${FILESDIR}"/python-config-${PYVER}-r1 python-config-${PYVER} # Use correct libdir in python-config dosed "s:/usr/lib/:/usr/$(get_libdir)/:" /usr/bin/python-config-${PYVER} - if use build ; then - rm -rf "${D}"/usr/$(get_libdir)/python${PYVER}/{test,encodings,email,lib-tk,bsddb/test} + # Fix collisions between different slots of Python. + mv "${D}usr/bin/pydoc" "${D}usr/bin/pydoc${PYVER}" + mv "${D}usr/bin/idle" "${D}usr/bin/idle${PYVER}" + mv "${D}usr/share/man/man1/python.1" "${D}usr/share/man/man1/python${PYVER}.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}usr/$(get_libdir)/python${PYVER}/config/Makefile" + + if use build; then + rm -fr "${D}usr/$(get_libdir)/python${PYVER}/"{bsddb/test,email,encodings,lib-tk,test} else - use elibc_uclibc && rm -rf "${D}"/usr/$(get_libdir)/python${PYVER}/{test,bsddb/test} - use berkdb || rm -rf "${D}"/usr/$(get_libdir)/python${PYVER}/bsddb - use tk || rm -rf "${D}"/usr/$(get_libdir)/python${PYVER}/lib-tk + use elibc_uclibc && rm -fr "${D}usr/$(get_libdir)/python${PYVER}/"{bsddb/test,test} + use berkdb || rm -fr "${D}usr/$(get_libdir)/python${PYVER}/bsddb" + use tk || rm -fr "${D}usr/$(get_libdir)/python${PYVER}/lib-tk" fi - # Fix slotted collisions - mv "${D}"/usr/bin/pydoc "${D}"/usr/bin/pydoc${PYVER} - mv "${D}"/usr/bin/idle "${D}"/usr/bin/idle${PYVER} - mv "${D}"/usr/share/man/man1/python.1 \ - "${D}"/usr/share/man/man1/python${PYVER}.1 - rm -f "${D}"/usr/bin/smtpd.py - prep_ml_includes usr/include/python${PYVER} - # The stuff below this line extends from 2.1, and should be deprecated - # in 2.3, or possibly can wait till 2.4 - - # seems like the build do not install Makefile.pre.in anymore - # it probably shouldn't - use DistUtils, people! - insinto /usr/$(get_libdir)/python${PYVER}/config - doins "${S}"/Makefile.pre.in - - # While we're working on the config stuff... Let's fix the OPT var - # so that it doesn't have any opts listed in it. Prevents the problem - # with compiling things with conflicting opts later. - dosed -e 's:^OPT=.*:OPT=-DNDEBUG:' \ - /usr/$(get_libdir)/python${PYVER}/config/Makefile - - if use examples ; then + if use examples; then insinto /usr/share/doc/${PF}/examples doins -r "${S}"/Tools || die "doins failed" fi @@ -229,83 +253,34 @@ src_install() { newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT} } -pkg_postrm() { - eselect python update --ignore 3.0 --ignore 3.1 - python_mod_cleanup /usr/lib/python${PYVER} - [[ "$(get_libdir)" == "lib" ]] || \ - python_mod_cleanup /usr/$(get_libdir)/python${PYVER} +pkg_preinst() { + if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version ">=${CATEGORY}/${PN}-${SLOT}_alpha"; then + python_updater_warning="1" + fi } pkg_postinst() { - eselect python update --ignore 3.0 --ignore 3.1 - python_mod_optimize - python_mod_optimize -x "(site-packages|test)" \ - /usr/lib/python${PYVER} - [[ "$(get_libdir)" == "lib" ]] || \ - python_mod_optimize -x "(site-packages|test)" \ - /usr/$(get_libdir)/python${PYVER} - - # workaround possible python-upgrade-breaks-portage situation - if [ ! -f ${myroot}/usr/lib/portage/pym/portage.py ]; then - if [ -f ${myroot}/usr/lib/python2.3/site-packages/portage.py ]; then - einfo "Working around possible python-portage upgrade breakage" - mkdir -p ${myroot}/usr/lib/portage/pym - cp ${myroot}/usr/lib/python2.4/site-packages/{portage,xpak,output,cvstree,getbinpkg,emergehelp,dispatch_conf}.py ${myroot}/usr/lib/portage/pym - python_mod_optimize /usr/lib/portage/pym - fi + eselect python update --ignore 3.0 --ignore 3.1 --ignore 3.2 + + python_mod_optimize -x "(site-packages|test)" /usr/lib/python${PYVER} + [[ "$(get_libdir)" != "lib" ]] && python_mod_optimize -x "(site-packages|test)" /usr/$(get_libdir)/python${PYVER} + + 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' to rebuild Python modules." + ewarn + ewarn "\e[1;31m************************************************************************\e[0m" + ewarn + ebeep 12 fi - - echo - ewarn - ewarn "If you have just upgraded from an older version of python you" - ewarn "will need to run:" - ewarn - ewarn "/usr/sbin/python-updater" - ewarn - ewarn "This will automatically rebuild all the python dependent modules" - ewarn "to run with python-${PYVER}." - ewarn - ewarn "Your original Python is still installed and can be accessed via" - ewarn "/usr/bin/python2.x." - ewarn - ebeep 5 } -src_test() { - # Tests won't work when cross compiling - if tc-is-cross-compiler ; then - elog "Disabling tests due to crosscompiling." - return - fi - - # Disabling byte compiling breaks test_import - python_enable_pyc - - #skip all tests that fail during emerge but pass without emerge: - #(See bug# 67970) - local skip_tests="cookielib distutils global hotshot mimetools minidom mmap posix sax strptime subprocess syntax tcl time urllib urllib2" - - # test_pow fails on alpha. - # http://bugs.python.org/issue756093 - [[ ${ARCH} == "alpha" ]] && skip_tests="${skip_tests} pow" - - 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 "Portage skipped the following tests which aren't able to run from emerge:" - for test in ${skip_tests} ; do - elog "test_${test}.py" - done +pkg_postrm() { + eselect python update --ignore 3.0 --ignore 3.1 --ignore 3.2 - elog "If you'd like to run them, you may:" - elog "cd /usr/lib/python${PYVER}/test" - elog "and run the tests separately." + python_mod_cleanup /usr/lib/python${PYVER} + [[ "$(get_libdir)" != "lib" ]] && python_mod_cleanup /usr/$(get_libdir)/python${PYVER} } |