aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-lang/python/python-3.5.9.ebuild139
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
}