diff options
author | Marien Zwart <marienz@gentoo.org> | 2007-03-31 00:29:10 +0000 |
---|---|---|
committer | Marien Zwart <marienz@gentoo.org> | 2007-03-31 00:29:10 +0000 |
commit | b785f99b847361bff69e238ddb46c26dabecdbe0 (patch) | |
tree | a070fe28334448868bf5c6004b0835276e098216 /dev-lang | |
parent | Tweak to jdk checks thanks to nichoj (diff) | |
download | gentoo-2-b785f99b847361bff69e238ddb46c26dabecdbe0.tar.gz gentoo-2-b785f99b847361bff69e238ddb46c26dabecdbe0.tar.bz2 gentoo-2-b785f99b847361bff69e238ddb46c26dabecdbe0.zip |
Revision bump python 2.5 with distutils and execstack fixes (rebuilding installed extensions is recommended if upgrading from an older python 2.5 ebuild). Remove unnecessary pysqlite block. Fix python 2.3 digest problem.
(Portage version: 2.1.2.3)
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/python/ChangeLog | 9 | ||||
-rw-r--r-- | dev-lang/python/files/digest-python-2.2.3-r6 | 6 | ||||
-rw-r--r-- | dev-lang/python/files/digest-python-2.5-r2 | 6 | ||||
-rw-r--r-- | dev-lang/python/python-2.5-r2.ebuild | 328 |
4 files changed, 345 insertions, 4 deletions
diff --git a/dev-lang/python/ChangeLog b/dev-lang/python/ChangeLog index 26829989f7fb..1dd2b0451215 100644 --- a/dev-lang/python/ChangeLog +++ b/dev-lang/python/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for dev-lang/python # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/ChangeLog,v 1.226 2007/02/06 08:39:15 genone Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/ChangeLog,v 1.227 2007/03/31 00:29:10 marienz Exp $ + +*python-2.5-r2 (31 Mar 2007) + + 31 Mar 2007; Marien Zwart <marienz@gentoo.org> +python-2.5-r2.ebuild: + Revision bump python 2.5 with distutils and execstack fixes (rebuilding + installed extensions is recommended if upgrading from an older python 2.5 + ebuild). Remove unnecessary pysqlite block. Fix python 2.3 digest problem. 06 Feb 2007; Marius Mauch <genone@gentoo.org> python-2.3.5-r2.ebuild, python-2.3.5-r3.ebuild, python-2.3.6.ebuild, python-2.4.3-r1.ebuild, diff --git a/dev-lang/python/files/digest-python-2.2.3-r6 b/dev-lang/python/files/digest-python-2.2.3-r6 index 6ce81bedee20..d68a92546c72 100644 --- a/dev-lang/python/files/digest-python-2.2.3-r6 +++ b/dev-lang/python/files/digest-python-2.2.3-r6 @@ -1,6 +1,6 @@ MD5 169f89f318e252dac0c54dd1b165d229 Python-2.2.3.tgz 6709556 RMD160 3590f813582d65194b467f4ab450e360e35eb40e Python-2.2.3.tgz 6709556 SHA256 a8f92e6b89d47359fff0d1fbfe47f104afc77fd1cd5143e7332758b7bc100188 Python-2.2.3.tgz 6709556 -MD5 2d073093d0ea816037fc6fad2bfa88f5 python-gentoo-patches-2.2.3.tar.bz2 3141 -RMD160 5d841c5e240eed36d0d87bb7006d1e04feffeec1 python-gentoo-patches-2.2.3.tar.bz2 3141 -SHA256 c913f0d72a3bd0e210a1426e7f5f1b97e03e6e20ba3ed74665001d8a2aa9ac95 python-gentoo-patches-2.2.3.tar.bz2 3141 +MD5 e65c2bc4d45ecca1f5f18908263ac32e python-gentoo-patches-2.2.3.tar.bz2 3138 +RMD160 0160617413b2ee4165eb0a7ceb68e95cb36e0f25 python-gentoo-patches-2.2.3.tar.bz2 3138 +SHA256 e85f6afba9d2cd23f39c46ed5e50d48b971615cd5dc5bc7af766b201a03b3893 python-gentoo-patches-2.2.3.tar.bz2 3138 diff --git a/dev-lang/python/files/digest-python-2.5-r2 b/dev-lang/python/files/digest-python-2.5-r2 new file mode 100644 index 000000000000..65112d30ab89 --- /dev/null +++ b/dev-lang/python/files/digest-python-2.5-r2 @@ -0,0 +1,6 @@ +MD5 ddb7401e711354ca83b7842b733825a3 Python-2.5.tar.bz2 9357099 +RMD160 f6977a6c3d3ca54c27ad9270918237a7e6521d0b Python-2.5.tar.bz2 9357099 +SHA256 584fce420e39218312c86b6abb242a14b1b0c1d215e2667b0f491893e41cc236 Python-2.5.tar.bz2 9357099 +MD5 e7cf168a72f985f68d3cd7dd4eb96eb4 python-gentoo-patches-2.5-r2.tar.bz2 6047 +RMD160 b11e1d529486e2ed88bd34e1ebb0cebf6d4e47cc python-gentoo-patches-2.5-r2.tar.bz2 6047 +SHA256 f4c8d4a924f48ab35b3281cceffe7237efef69f3bc5a68c3492d8b21d60813b8 python-gentoo-patches-2.5-r2.tar.bz2 6047 diff --git a/dev-lang/python/python-2.5-r2.ebuild b/dev-lang/python/python-2.5-r2.ebuild new file mode 100644 index 000000000000..caf5bef69a5e --- /dev/null +++ b/dev-lang/python/python-2.5-r2.ebuild @@ -0,0 +1,328 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.5-r2.ebuild,v 1.1 2007/03/31 00:29:10 marienz 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. + +inherit eutils autotools flag-o-matic python multilib versionator toolchain-funcs alternatives + +# 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}" + +MY_P="Python-${PV}" +S="${WORKDIR}/${MY_P}" + +DESCRIPTION="Python is an interpreted, interactive, object-oriented programming language." +HOMEPAGE="http://www.python.org/" +SRC_URI="http://www.python.org/ftp/python/${PYVER}/${MY_P}.tar.bz2 + mirror://gentoo/python-gentoo-patches-${PV}-r2.tar.bz2" + +LICENSE="PSF-2.2" +SLOT="2.5" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd" +IUSE="ncurses gdbm ssl readline tk berkdb bootstrap ipv6 build ucs2 sqlite doc nocxx" + +# NOTE: dev-python/{elementtree,celementtree,pysqlite,ctypes,cjkcodecs} +# do not conflict with the ones in python proper. - liquidx + +DEPEND=">=sys-libs/zlib-1.1.3 + !build? ( + sqlite? ( >=dev-db/sqlite-3 ) + tk? ( >=dev-lang/tk-8.0 ) + ncurses? ( >=sys-libs/ncurses-5.2 + readline? ( >=sys-libs/readline-4.1 ) ) + berkdb? ( >=sys-libs/db-3.1 ) + gdbm? ( sys-libs/gdbm ) + ssl? ( dev-libs/openssl ) + doc? ( =dev-python/python-docs-${PV}* ) + dev-libs/expat + )" + +# NOTE: The dev-python/python-fchksum RDEPEND is needed so that this python +# provides the functionality expected from previous pythons. + +# NOTE: python-fchksum is only a RDEPEND and not a DEPEND since we don't need +# it to compile python. We just need to ensure that when we install +# python, we definitely have fchksum support. - liquidx + +# NOTE: changed RDEPEND to PDEPEND to resolve bug 88777. - kloeri + +PDEPEND="${DEPEND} dev-python/python-fchksum" +PROVIDE="virtual/python" + +# confcache breaks a dlopen check, causing python to not support +# loading .so files - marienz +RESTRICT="confcache" + +src_unpack() { + unpack ${A} + cd "${S}" + + # unnecessary termcap dep in readline (#79013) + epatch "${WORKDIR}/${PYVER}/2.5-readline.patch" + # db4.2 support + epatch "${WORKDIR}/${PYVER}/2.4.3-db4.patch" + + # adds support for PYTHON_DONTCOMPILE shell environment to + # supress automatic generation of .pyc and .pyo files - liquidx (08 Oct 03) + epatch "${WORKDIR}/${PYVER}/2.4-gentoo_py_dontcompile.patch" + epatch "${WORKDIR}/${PYVER}/2.4-disable_modules_and_ssl.patch" + epatch "${WORKDIR}/${PYVER}/2.5-mimetypes_gentoo_apache.patch" + + # prepends /usr/lib/portage/pym to sys.path + epatch "${WORKDIR}/${PYVER}/2.4-add_portage_search_path.patch" + + epatch "${WORKDIR}/${PYVER}/2.5-libdir.patch" + 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 + + # 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 tc-is-cross-compiler ; then + epatch "${WORKDIR}/${PYVER}/2.4.1-crosscompile.patch" + fi + + # fix gentoo/obsd problems (bug 117261) + epatch "${WORKDIR}/${PYVER}/2.4.3-gentoo_obsd.patch" + + # No execstack (at least on x86) + epatch "${WORKDIR}/${PYVER}/2.5-execstack.patch" + + # Do not link libpython2.5 statically in distutils extensions + epatch "${WORKDIR}/${PYVER}/2.5-linux-shlib.patch" + + # Pass -fno-strict-aliasing instead of a bunch of stuff including -O3 + # when compiling things with distutils and CFLAGS is set + # (python.org/sf/969718). + epatch "${WORKDIR}/${PYVER}/2.5-cflags.patch" + + eautoreconf +} + +src_configure() { + # disable extraneous modules with extra dependencies + if use build; then + export PYTHON_DISABLE_MODULES="readline pyexpat dbm gdbm bsddb _curses _curses_panel _tkinter _sqlite3" + export PYTHON_DISABLE_SSL=1 + else + use gdbm \ + || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} gdbm" + use berkdb \ + || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} dbm 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 sqlite \ + || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _sqlite3" + use ssl \ + || export PYTHON_DISABLE_SSL=1 + export PYTHON_DISABLE_MODULES + echo $PYTHON_DISABLE_MODULES + fi +} + +src_compile() { + filter-flags -malign-double + + # Seems to no longer be necessary + #[ "${ARCH}" = "amd64" ] && append-flags -fPIC + [ "${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 + 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 nocxx ; 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 + # modules + use ucs2 \ + && myconf="${myconf} --enable-unicode=ucs2" \ + || myconf="${myconf} --enable-unicode=ucs4" + + src_configure + + if tc-is-cross-compiler ; then + OPT="-O1" CFLAGS="" LDFLAGS="" CC="" \ + ./configure --with-cxx=no || 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 + fi + + # 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 + export LINKCC="\$(PURIFY) \$(CC)" + econf \ + --with-fpectl \ + --enable-shared \ + `use_enable ipv6` \ + --infodir='${prefix}'/share/info \ + --mandir='${prefix}'/share/man \ + --with-threads \ + --with-libc='' \ + ${myconf} || die + emake || die "Parallel make failed" +} + +src_install() { + dodir /usr + src_configure + make DESTDIR="${D}" altinstall maninstall || die + + mv ${D}/usr/bin/python${PYVER}-config ${D}/usr/bin/python-config-${PYVER} + + # 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 + + # install python-updater in /usr/sbin + newsbin ${FILESDIR}/python-updater-r1 python-updater + + # 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 build ; then + rm -rf ${D}/usr/$(get_libdir)/python${PYVER}/{test,encodings,email,lib-tk,bsddb/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 + fi + + 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 +} + +pkg_postrm() { + python_makesym + alternatives_auto_makesym "/usr/bin/idle" "idle[0-9].[0-9]" + alternatives_auto_makesym "/usr/bin/pydoc" "pydoc[0-9].[0-9]" + alternatives_auto_makesym "/usr/share/man/man1/python.1.gz" \ + "python[0-9].[0-9].1.gz" + alternatives_auto_makesym "/usr/bin/python-config" \ + "python-config-[0-9].[0-9]" + + python_mod_cleanup /usr/lib/python${PYVER} + [[ "$(get_libdir)" == "lib" ]] || \ + python_mod_cleanup /usr/$(get_libdir)/python${PYVER} +} + +pkg_postinst() { + local myroot + myroot=$(echo $ROOT | sed 's:/$::') + + python_makesym + alternatives_auto_makesym "/usr/bin/idle" "idle[0-9].[0-9]" + alternatives_auto_makesym "/usr/bin/pydoc" "pydoc[0-9].[0-9]" + alternatives_auto_makesym "/usr/bin/python-config" \ + "python-config-[0-9].[0-9]" + alternatives_auto_makesym "/usr/share/man/man1/python.1.gz" \ + "python[0-9].[0-9].1.gz" + + python_mod_optimize + python_mod_optimize -x site-packages \ + -x test ${myroot}/usr/lib/python${PYVER} + [[ "$(get_libdir)" == "lib" ]] || \ + python_mod_optimize -x site-packages \ + -x test ${myroot}/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 ${myroot}/usr/lib/portage/pym + fi + fi + + echo + ewarn + ewarn "If you have just upgraded from an older version of python you will" + ewarn "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() { + # PYTHON_DONTCOMPILE=1 breaks test_import + unset PYTHON_DONTCOMPILE + + #skip all tests that fail during emerge but pass without emerge: + #(See bug# 67970) + local skip_tests="distutils global mimetools minidom mmap strptime subprocess syntax tcl time urllib urllib2 webbrowser xml_etree sax" + + 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/lib/python${PYVER}/test" + elog "and run the tests separately." +} |