diff options
-rw-r--r-- | dev-lang/python/python-3.5.9.ebuild | 139 |
1 files changed, 67 insertions, 72 deletions
diff --git a/dev-lang/python/python-3.5.9.ebuild b/dev-lang/python/python-3.5.9.ebuild index 931cccc..c2ffba6 100644 --- a/dev-lang/python/python-3.5.9.ebuild +++ b/dev-lang/python/python-3.5.9.ebuild @@ -1,23 +1,25 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="5" +EAPI="7" WANT_LIBTOOL="none" -inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs +inherit autotools flag-o-matic pax-utils python-utils-r1 toolchain-funcs -MY_P="Python-${PV/_/}" +MY_P="Python-${PV}" +PYVER=$(ver_cut 1-2) PATCHSET_VERSION="3.5.4-0" DESCRIPTION="An interpreted, interactive, object-oriented programming language" HOMEPAGE="https://www.python.org/" -SRC_URI="https://www.python.org/ftp/python/${PV%_rc*}/${MY_P}.tar.xz +SRC_URI="https://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz https://dev.gentoo.org/~floppym/python/python-gentoo-patches-${PATCHSET_VERSION}.tar.xz" +S="${WORKDIR}/${MY_P}" LICENSE="PSF-2" -SLOT="3.5/3.5m" +SLOT="${PYVER}/${PYVER}m" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" -IUSE="bluetooth build elibc_uclibc examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml" +IUSE="bluetooth build examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml" RESTRICT="!test? ( test )" # Do not add a dependency on dev-lang/python to this ebuild. @@ -25,57 +27,51 @@ RESTRICT="!test? ( test )" # run the bootstrap code on your dev box and include the results in the # patchset. See bug 447752. -RDEPEND="app-arch/bzip2:0= - app-arch/xz-utils:0= - >=sys-libs/zlib-1.1.3:0= +RDEPEND="app-arch/bzip2:= + app-arch/xz-utils:= + >=sys-libs/zlib-1.1.3:= virtual/libffi:= virtual/libintl - gdbm? ( sys-libs/gdbm:0=[berkdb] ) - ncurses? ( >=sys-libs/ncurses-5.2:0= ) - readline? ( >=sys-libs/readline-4.1:0= ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( >=sys-libs/readline-4.1:= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) + !libressl? ( dev-libs/openssl:= ) + libressl? ( dev-libs/libressl:= ) ) tk? ( - >=dev-lang/tcl-8.0:0= - >=dev-lang/tk-8.0:0= - dev-tcltk/blt:0= + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= dev-tcltk/tix ) - xml? ( >=dev-libs/expat-2.1:0= )" + xml? ( >=dev-libs/expat-2.1:= )" # bluetooth requires headers from bluez DEPEND="${RDEPEND} bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils[extra-filters(+)] ) virtual/pkgconfig !sys-devel/gcc[libffi(-)]" RDEPEND+=" !build? ( app-misc/mime-types )" PDEPEND=">=app-eselect/eselect-python-20140125-r1" -S="${WORKDIR}/${MY_P}" - -PYVER=${SLOT%/*} - 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 + rm -fr Modules/expat || die + rm -fr Modules/_ctypes/libffi* || die + rm -fr Modules/zlib || die - if tc-is-cross-compiler; then - # Invokes BUILDPYTHON, which is built for the host arch - local EPATCH_EXCLUDE="*_regenerate_platform-specific_modules.patch" - fi + eapply -p0 "${WORKDIR}"/patches - EPATCH_SUFFIX="patch" epatch "${WORKDIR}/patches" - epatch "${FILESDIR}/${PN}-3.4.3-ncurses-pkg-config.patch" - epatch "${FILESDIR}/${PN}-3.5-distutils-OO-build.patch" - epatch "${FILESDIR}/3.6-disable-nis.patch" -# epatch "${FILESDIR}/python-3.5.5-libressl-compatibility.patch" - epatch "${FILESDIR}/python-3.5.5-hash-unaligned.patch" + local PATCHES=( + "${FILESDIR}/${PN}-3.4.3-ncurses-pkg-config.patch" + "${FILESDIR}/${PN}-3.5-distutils-OO-build.patch" + "${FILESDIR}/3.6-disable-nis.patch" + "${FILESDIR}/python-3.5.5-hash-unaligned.patch" + ) - epatch_user + default sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \ configure.ac \ @@ -96,13 +92,13 @@ src_configure() { local disable # disable automagic bluetooth headers detection use bluetooth || export ac_cv_header_bluetooth_bluetooth_h=no - 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. + 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 @@ -144,10 +140,6 @@ src_configure() { dbmliborder+="${dbmliborder:+:}gdbm" fi - BUILD_DIR="${WORKDIR}/${CHOST}" - mkdir -p "${BUILD_DIR}" || die - cd "${BUILD_DIR}" || die - local myeconfargs=( --with-fpectl --enable-shared @@ -164,7 +156,7 @@ src_configure() { --with-system-ffi ) - ECONF_SOURCE="${S}" OPT="" econf "${myeconfargs[@]}" + OPT="" econf "${myeconfargs[@]}" if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then eerror "configure has detected that the sem_open function is broken." @@ -178,8 +170,6 @@ src_compile() { # https://bugs.gentoo.org/594768 local -x LC_ALL=C - cd "${BUILD_DIR}" || die - emake CPPFLAGS= CFLAGS= LDFLAGS= # Work around bug 329499. See also bug 413751 and 457194. @@ -197,8 +187,6 @@ src_test() { return fi - cd "${BUILD_DIR}" || die - # Skip failing tests. local skipped_tests="gdb" @@ -206,7 +194,11 @@ src_test() { mv "${S}"/Lib/test/test_${test}.py "${T}" done + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + emake test EXTRATESTOPTS="-u-network" CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty local result=$? @@ -231,23 +223,24 @@ src_test() { src_install() { local libdir=${ED}/usr/$(get_libdir)/python${PYVER} - cd "${BUILD_DIR}" || die - emake DESTDIR="${D}" altinstall + # Remove static library + rm "${ED}"/usr/$(get_libdir)/libpython*.a || die + sed \ -e "s/\(CONFIGURE_LDFLAGS=\).*/\1/" \ -e "s/\(PY_LDFLAGS=\).*/\1/" \ -i "${libdir}/config-${PYVER}"*/Makefile || die "sed failed" # Fix collisions between different slots of Python. - rm -f "${ED}usr/$(get_libdir)/libpython3.so" + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die # Cheap hack to get version with ABIFLAGS - local abiver=$(cd "${ED}usr/include"; echo python*) + local abiver=$(cd "${ED}/usr/include"; echo python*) if [[ ${abiver} != python${PYVER} ]]; then # Replace python3.X with a symlink to python3.Xm - rm "${ED}usr/bin/python${PYVER}" || die + rm "${ED}/usr/bin/python${PYVER}" || die dosym "${abiver}" "/usr/bin/python${PYVER}" # Create python3.X-config symlink dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" @@ -258,24 +251,23 @@ src_install() { # python seems to get rebuilt in src_install (bug 569908) # Work around it for now. if has_version dev-libs/libffi[pax_kernel]; then - pax-mark E "${ED}usr/bin/${abiver}" + pax-mark E "${ED}/usr/bin/${abiver}" else - pax-mark m "${ED}usr/bin/${abiver}" + pax-mark m "${ED}/usr/bin/${abiver}" fi - use elibc_uclibc && rm -fr "${libdir}/test" - use sqlite || rm -fr "${libdir}/"{sqlite3,test/test_sqlite*} - use tk || rm -fr "${ED}usr/bin/idle${PYVER}" "${libdir}/"{idlelib,tkinter,test/test_tk*} + use sqlite || rm -r "${libdir}/"{sqlite3,test/test_sqlite*} || die + use tk || rm -r "${ED}/usr/bin/idle${PYVER}" "${libdir}/"{idlelib,tkinter,test/test_tk*} || die - use threads || rm -fr "${libdir}/multiprocessing" - use wininst || rm -f "${libdir}/distutils/command/"wininst-*.exe + use threads || rm -r "${libdir}/multiprocessing" || die + use wininst || rm "${libdir}/distutils/command/"wininst-*.exe || die - dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS} + dodoc Misc/{ACKS,HISTORY,NEWS} if use examples; then docinto examples - find "${S}"/Tools -name __pycache__ -print0 | xargs -0 rm -fr - dodoc -r "${S}"/Tools + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools fi insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \ @@ -287,7 +279,8 @@ src_install() { sed \ -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ -e "s:@PYDOC@:pydoc${PYVER}:" \ - -i "${ED}etc/conf.d/pydoc-${PYVER}" "${ED}etc/init.d/pydoc-${PYVER}" || die "sed failed" + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" # for python-exec local vars=( EPYTHON PYTHON_SITEDIR PYTHON_SCRIPTDIR ) @@ -310,8 +303,7 @@ src_install() { # python and pythonX ln -s "../../../bin/${abiver}" \ "${D}${PYTHON_SCRIPTDIR}/python${pymajor}" || die - ln -s "python${pymajor}" \ - "${D}${PYTHON_SCRIPTDIR}/python" || die + ln -s "python${pymajor}" "${D}${PYTHON_SCRIPTDIR}/python" || die # python-config and pythonX-config # note: we need to create a wrapper rather than symlinking it due # to some random dirname(argv[0]) magic performed by python-config @@ -343,11 +335,14 @@ pkg_preinst() { } eselect_python_update() { - if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then + 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 + if [[ -z "$(eselect python show --python${PV%%.*})" || \ + ! -f "${EROOT}/usr/bin/$(eselect python show --python${PV%%.*})" ]] + then eselect python update --python${PV%%.*} fi } |