summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRepository mirror & CI <repomirrorci@gentoo.org>2021-06-23 21:52:59 +0000
committerRepository mirror & CI <repomirrorci@gentoo.org>2021-06-23 21:52:59 +0000
commit1ae2aa2c702dadc196b45d492abf026139c718d4 (patch)
tree9b178960200f3d3ae661ca737742251bb5abe117
parent2021-06-23 21:36:31 UTC (diff)
parentpython-utils-r1.eclass: Remove _python_ln_rel (diff)
downloadgentoo-1ae2aa2c702dadc196b45d492abf026139c718d4.tar.gz
gentoo-1ae2aa2c702dadc196b45d492abf026139c718d4.tar.bz2
gentoo-1ae2aa2c702dadc196b45d492abf026139c718d4.zip
Merge updates from master
-rw-r--r--app-office/gnumeric/Manifest1
-rw-r--r--app-office/gnumeric/gnumeric-1.12.50.ebuild93
-rw-r--r--dev-libs/link-grammar/Manifest1
-rw-r--r--dev-libs/link-grammar/link-grammar-5.9.1.ebuild123
-rw-r--r--eclass/distutils-r1.eclass80
-rw-r--r--eclass/multibuild.eclass8
-rw-r--r--eclass/python-any-r1.eclass34
-rw-r--r--eclass/python-r1.eclass90
-rw-r--r--eclass/python-single-r1.eclass52
-rw-r--r--eclass/python-utils-r1.eclass136
-rwxr-xr-xeclass/tests/python-utils-r1.sh4
-rw-r--r--x11-libs/goffice/Manifest1
-rw-r--r--x11-libs/goffice/goffice-0.10.50.ebuild65
13 files changed, 464 insertions, 224 deletions
diff --git a/app-office/gnumeric/Manifest b/app-office/gnumeric/Manifest
index c9cb81cc6369..a64ffdbbe412 100644
--- a/app-office/gnumeric/Manifest
+++ b/app-office/gnumeric/Manifest
@@ -1 +1,2 @@
DIST gnumeric-1.12.49.tar.xz 18057896 BLAKE2B 75ae1683feb7f37cdff4cb5fbec04b0f241e4590236ea68706180853c1a950092bf0d902652d65288b42dba13c384e1ac364cefb32b9d60c37a9948d9d7fc8eb SHA512 047d625aee3a15dd8881f2e11cc7c67d211d40be86ec018517d1b3140ff4bd031fb2cb86e48f1f6ee22432aa1f39c978bad5fd5bf5c6a1be9aa53411136429ed
+DIST gnumeric-1.12.50.tar.xz 18062104 BLAKE2B 46d15e5fe540cce904de07b263707d7fd8c29d9a2611105cdb117a3acd6693651e588b4d281038b48fbc36bba100d162c2c2ab1be589ea206272155cbd9046df SHA512 d5896cb8390c99fb3871c722116cc085b93b788fab91bf44d24f20228b8290170a0adc906160a6aa46431ae43b04079621c370dcda42658fa9ae3c1d8baf1730
diff --git a/app-office/gnumeric/gnumeric-1.12.50.ebuild b/app-office/gnumeric/gnumeric-1.12.50.ebuild
new file mode 100644
index 000000000000..63de219a0b6a
--- /dev/null
+++ b/app-office/gnumeric/gnumeric-1.12.50.ebuild
@@ -0,0 +1,93 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..9} )
+
+inherit gnome.org libtool python-r1 xdg
+
+DESCRIPTION="The GNOME Spreadsheet"
+HOMEPAGE="http://www.gnumeric.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="+introspection libgda perl"
+REQUIRED_USE="introspection? ( ${PYTHON_REQUIRED_USE} )"
+
+# Missing gnome-extra/libgnomedb required version in tree
+# but its upstream is dead and will be dropped soon.
+
+# lots of missing files, also fails tests due to 80-bit long story
+# upstream bug #721556
+RESTRICT="test"
+
+# Gnumeric has two python components
+# 1. The python loader for loading python-based plugins.
+# This component is pure python 2 and a port "is not currently being worked on".
+# 2. The python gobject-based introspection API. This component is compatible
+# with python 3.
+# Component 1. can only be re-enabled once someone has ported the upstream
+# codebase to python 3.
+# https://gitlab.gnome.org/GNOME/gnumeric/issues/419#note_618852
+RDEPEND="
+ app-arch/bzip2
+ sys-libs/zlib
+ >=dev-libs/glib-2.40.0:2
+ >=gnome-extra/libgsf-1.14.33:=
+ >=x11-libs/goffice-0.10.50:0.10
+ >=dev-libs/libxml2-2.4.12:2
+ >=x11-libs/pango-1.24.0:=
+
+ >=x11-libs/gtk+-3.8.7:3
+ x11-libs/cairo:=[svg]
+
+ introspection? (
+ ${PYTHON_DEPS}
+ >=dev-libs/gobject-introspection-1:=
+ )
+ perl? ( dev-lang/perl:= )
+ libgda? ( gnome-extra/libgda:5[gtk] )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ app-text/docbook-xml-dtd:4.5
+ app-text/yelp-tools
+ dev-util/gtk-doc-am
+ >=dev-util/intltool-0.35.0
+ virtual/pkgconfig"
+
+src_prepare() {
+ default
+
+ # Manage gi overrides ourselves
+ sed '/SUBDIRS/ s/introspection//' -i Makefile.{am,in} || die
+ elibtoolize
+}
+
+src_configure() {
+ econf \
+ --disable-gtk-doc \
+ --disable-maintainer-mode \
+ --disable-schemas-compile \
+ --disable-static \
+ --without-psiconv \
+ --without-python \
+ --with-zlib \
+ $(use_with libgda gda) \
+ $(use_enable introspection) \
+ $(use_with perl)
+}
+
+src_install() {
+ default
+ dodoc HACKING MAINTAINERS
+
+ if use introspection; then
+ python_moduleinto gi.overrides
+ python_foreach_impl python_domodule introspection/gi/overrides/Gnm.py
+ fi
+
+ # no static archives
+ find "${ED}" -name '*.la' -delete || die
+}
diff --git a/dev-libs/link-grammar/Manifest b/dev-libs/link-grammar/Manifest
index 2101dd3b0ce0..b873ef15a703 100644
--- a/dev-libs/link-grammar/Manifest
+++ b/dev-libs/link-grammar/Manifest
@@ -1,2 +1,3 @@
DIST link-grammar-5.8.0.tar.gz 3782125 BLAKE2B 8027e91212d3269b8e3ceaa5c837ad961cd2dfd92849d3989094ab771d97d30f4b228cfc1e32e9e843676aa439d790fb444823f7db69004538ad068c7bf28a45 SHA512 1262e2faf1de6f05a62f9d622f43c02253b4c241342df9b443a70ae04bd328d1fc49cd2f91c881e694f67215005833fec8b1fa9d395b1e547985b376c7415d2e
DIST link-grammar-5.8.1.tar.gz 3791847 BLAKE2B 8c89b95eaae87f0b576374c3f8c00529d61b62004718424d1ac1a41b694d8b56ba75d0a7068e1411376c260781f5adae8512976a6572e54f18d84abe98c1839e SHA512 0ef99d3ccb3d922a946f1f73b8b81cee9ece156886dab3367837e1e9f79944967da1391daf7f96ea5a95a0abdd346b642111a7939eb9aa079557c10b3efe8022
+DIST link-grammar-5.9.1.tar.gz 3809872 BLAKE2B fe0c407e2e4ea4201036647cbea7d4c2606fa9943653fcc2d3505963a00773006912b8af5c2762acf498220d2f48319a031736d59790c0fed616432973ea24ec SHA512 c8d8bc99ddd6f6190ebcb24fcafc79497c3eeab1deb3099691f55c735a0a607a8372a8dca5cd86ce7c20cd3a45e4f1cbf91bef39dc781a5b5a2246006b4f601e
diff --git a/dev-libs/link-grammar/link-grammar-5.9.1.ebuild b/dev-libs/link-grammar/link-grammar-5.9.1.ebuild
new file mode 100644
index 000000000000..2be3e58a4fd7
--- /dev/null
+++ b/dev-libs/link-grammar/link-grammar-5.9.1.ebuild
@@ -0,0 +1,123 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..9} )
+
+inherit autotools java-pkg-opt-2 python-r1 out-of-source
+
+DESCRIPTION="A Syntactic English parser"
+HOMEPAGE="https://www.abisource.com/projects/link-grammar/ https://www.link.cs.cmu.edu/link/"
+SRC_URI="https://www.abisource.com/downloads/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0/5"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="aspell +hunspell java python" # pcre
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+# XXX: sqlite is automagic
+# Does not build with >=sci-mathematics/minisat-2, bug #593662
+# add pcre support: pcre? ( dev-libs/libpcre )
+RDEPEND="
+ dev-db/sqlite:3
+ aspell? ( app-text/aspell )
+ hunspell? ( app-text/hunspell )
+ java? (
+ >=virtual/jdk-1.6:*
+ dev-java/ant-core
+ )
+ python? ( ${PYTHON_DEPS} )
+ !sci-mathematics/minisat"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-lang/swig:0
+ sys-devel/autoconf-archive
+ virtual/pkgconfig"
+
+pkg_setup() {
+ if use aspell && use hunspell; then
+ ewarn "You have enabled 'aspell' and 'hunspell' support, but both cannot coexist,"
+ ewarn "only hunspell will be built. Press Ctrl+C and set only 'aspell' USE flag if"
+ ewarn "you want aspell support."
+ fi
+ use java && java-pkg-opt-2_pkg_setup
+}
+
+src_prepare() {
+ default
+ use java && java-pkg-opt-2_src_prepare
+
+ eapply "${FILESDIR}"/${PN}-5.8.1-lld.patch
+
+ eautoreconf
+}
+
+my_src_configure() {
+ local myconf=(
+ --disable-maintainer-mode
+ --disable-editline
+ --disable-perl-bindings
+ --disable-static
+ --enable-sat-solver=bundled
+ $(use_enable aspell)
+ $(use_enable hunspell)
+ $(usex hunspell --with-hunspell-dictdir="${EPREFIX}"/usr/share/myspell '')
+ $(use_enable java java-bindings)
+ # $(use_enable pcre regex-tokenizer)
+ # $(use_with pcre)
+ )
+
+ econf \
+ --disable-python-bindings \
+ "${myconf[@]}"
+
+ if use python; then
+ python_configure() {
+ econf \
+ --enable-python-bindings \
+ "${myconf[@]}"
+ }
+ python_foreach_impl run_in_build_dir python_configure
+ fi
+}
+
+my_src_compile() {
+ local -x MAIN_BUILD_DIR="${BUILD_DIR}"
+ default
+
+ if use python; then
+ python_compile() {
+ emake -C bindings/python \
+ VPATH="${S}:${MAIN_BUILD_DIR}" \
+ _clinkgrammar_la_DEPENDENCIES="${MAIN_BUILD_DIR}"/link-grammar/liblink-grammar.la \
+ _clinkgrammar_la_LIBADD="${MAIN_BUILD_DIR}"/link-grammar/liblink-grammar.la
+ }
+ python_foreach_impl run_in_build_dir python_compile
+ fi
+}
+
+my_src_install() {
+ local -x MAIN_BUILD_DIR="${BUILD_DIR}"
+ default
+
+ if use python; then
+ python_install() {
+ emake -C bindings/python \
+ VPATH="${S}:${MAIN_BUILD_DIR}" \
+ _clinkgrammar_la_DEPENDENCIES="${MAIN_BUILD_DIR}"/link-grammar/liblink-grammar.la \
+ _clinkgrammar_la_LIBADD="${MAIN_BUILD_DIR}"/link-grammar/liblink-grammar.la \
+ DESTDIR="${D}" \
+ install
+ }
+ python_foreach_impl run_in_build_dir python_install
+ fi
+
+ # no static archives
+ find "${ED}" -name '*.la' -delete || die
+}
+
+pkg_preinst() {
+ use java && java-pkg-opt-2_pkg_preinst
+}
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 53eee173a262..cc0416fb1d9e 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -7,7 +7,7 @@
# @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org>
# Based on the work of: Krzysztof Pawlik <nelchael@gentoo.org>
-# @SUPPORTED_EAPIS: 6 7
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: A simple eclass to build Python packages using distutils.
# @DESCRIPTION:
# A simple eclass providing functions to build Python packages using
@@ -47,7 +47,7 @@ case "${EAPI:-0}" in
[0-5])
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
;;
- [6-7])
+ [6-8])
;;
*)
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
@@ -129,7 +129,7 @@ _distutils_set_globals() {
rdep+=" ${setuptools_dep}"
;;
pyproject.toml)
- bdep+=' dev-python/pyproject2setuppy[${PYTHON_USEDEP}]'
+ bdep+=' >=dev-python/pyproject2setuppy-15[${PYTHON_USEDEP}]'
;;
*)
die "Invalid DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}"
@@ -248,15 +248,16 @@ unset -f _distutils_set_globals
# }
# @CODE
-# @ECLASS-VARIABLE: mydistutilsargs
+# @ECLASS-VARIABLE: DISTUTILS_ARGS
# @DEFAULT_UNSET
# @DESCRIPTION:
-# An array containing options to be passed to setup.py.
+# An array containing options to be passed to setup.py. They are passed
+# before the default arguments, i.e. before the first command.
#
# Example:
# @CODE
# python_configure_all() {
-# mydistutilsargs=( --enable-my-hidden-option )
+# DISTUTILS_ARGS=( --enable-my-hidden-option )
# }
# @CODE
@@ -446,8 +447,9 @@ distutils_enable_tests() {
# (if ${EPYTHON} is set; fallback 'python' otherwise).
#
# setup.py will be passed the following, in order:
-# 1. ${mydistutilsargs[@]}
-# 2. additional arguments passed to the esetup.py function.
+# 1. ${DISTUTILS_ARGS[@]}
+# 2. ${mydistutilsargs[@]} (deprecated)
+# 3. additional arguments passed to the esetup.py function.
#
# Please note that setup.py will respect defaults (unless overridden
# via command-line options) from setup.cfg that is created
@@ -463,11 +465,15 @@ esetup.py() {
local setup_py=( setup.py )
if [[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]]; then
- # TODO: remove '.main' when we require v10
- setup_py=( -m pyproject2setuppy.main )
+ setup_py=( -m pyproject2setuppy )
fi
- set -- "${EPYTHON}" "${setup_py[@]}" "${mydistutilsargs[@]}" "${@}"
+ if [[ ${EAPI} != [67] && ${mydistutilsargs[@]} ]]; then
+ die "mydistutilsargs is banned in EAPI ${EAPI} (use DISTUTILS_ARGS)"
+ fi
+
+ set -- "${EPYTHON}" "${setup_py[@]}" "${DISTUTILS_ARGS[@]}" \
+ "${mydistutilsargs[@]}" "${@}"
echo "${@}" >&2
"${@}" || die -n
@@ -526,6 +532,7 @@ distutils_install_for_testing() {
local install_method=root
case ${1} in
--via-home)
+ [[ ${EAPI} == [67] ]] || die "${*} is banned in EAPI ${EAPI}"
install_method=home
shift
;;
@@ -769,8 +776,10 @@ _distutils-r1_wrap_scripts() {
local basename=${f##*/}
debug-print "${FUNCNAME}: installing wrapper at ${bindir}/${basename}"
- _python_ln_rel "${path}${EPREFIX}"/usr/lib/python-exec/python-exec2 \
- "${path}${bindir}/${basename}" || die
+ local dosym=dosym
+ [[ ${EAPI} == [67] ]] && dosym=dosym8
+ "${dosym}" -r "${path#${D}}"/usr/lib/python-exec/python-exec2 \
+ "${path#${D}}${bindir#${EPREFIX}}/${basename}"
done
for f in "${non_python_files[@]}"; do
@@ -836,7 +845,19 @@ distutils-r1_python_test() {
distutils-r1_python_install() {
debug-print-function ${FUNCNAME} "${@}"
- local args=( "${@}" )
+ local root=${D%/}/_${EPYTHON}
+ [[ ${DISTUTILS_SINGLE_IMPL} ]] && root=${D%/}
+
+ # inline DISTUTILS_ARGS logic from esetup.py in order to make
+ # argv overwriting easier
+ local args=(
+ "${DISTUTILS_ARGS[@]}"
+ "${mydistutilsargs[@]}"
+ install --skip-build --root="${root}" "${args[@]}"
+ "${@}"
+ )
+ local DISTUTILS_ARGS=()
+ local mydistutilsargs=()
# enable compilation for the install phase.
local -x PYTHONDONTWRITEBYTECODE=
@@ -852,42 +873,31 @@ distutils-r1_python_install() {
if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
# user may override --install-scripts
# note: this is poor but distutils argv parsing is dumb
- local mydistutilsargs=( "${mydistutilsargs[@]}" )
local scriptdir=${EPREFIX}/usr/bin
- # construct a list of mydistutilsargs[0] args[0] args[1]...
- local arg arg_vars
- [[ ${mydistutilsargs[@]} ]] && eval arg_vars+=(
- 'mydistutilsargs['{0..$(( ${#mydistutilsargs[@]} - 1 ))}']'
- )
- [[ ${args[@]} ]] && eval arg_vars+=(
- 'args['{0..$(( ${#args[@]} - 1 ))}']'
- )
-
- set -- "${arg_vars[@]}"
+ # rewrite all the arguments
+ set -- "${args[@]}"
+ args=()
while [[ ${@} ]]; do
- local arg_var=${1}
+ local a=${1}
shift
- local a=${!arg_var}
- case "${a}" in
+ case ${a} in
--install-scripts=*)
scriptdir=${a#--install-scripts=}
- unset "${arg_var}"
;;
--install-scripts)
- scriptdir=${!1}
- unset "${arg_var}" "${1}"
+ scriptdir=${1}
shift
;;
+ *)
+ args+=( "${a}" )
+ ;;
esac
done
fi
- local root=${D%/}/_${EPYTHON}
- [[ ${DISTUTILS_SINGLE_IMPL} ]] && root=${D%/}
-
- esetup.py install --skip-build --root="${root}" "${args[@]}"
+ esetup.py "${args[@]}"
local forbidden_package_names=(
examples test tests
diff --git a/eclass/multibuild.eclass b/eclass/multibuild.eclass
index 8f9612bc747e..37568ebf87cc 100644
--- a/eclass/multibuild.eclass
+++ b/eclass/multibuild.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: multibuild.eclass
@@ -6,7 +6,7 @@
# Michał Górny <mgorny@gentoo.org>
# @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org>
-# @SUPPORTED_EAPIS: 4 5 6 7
+# @SUPPORTED_EAPIS: 4 5 6 7 8
# @BLURB: A generic eclass for building multiple variants of packages.
# @DESCRIPTION:
# The multibuild eclass aims to provide a generic framework for building
@@ -14,10 +14,10 @@
# implementations).
case "${EAPI:-0}" in
- 0|1|2|3)
+ [0-3])
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
;;
- 4|5|6|7)
+ [4-8])
;;
*)
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
diff --git a/eclass/python-any-r1.eclass b/eclass/python-any-r1.eclass
index 49f639d5fac6..eaae5379b732 100644
--- a/eclass/python-any-r1.eclass
+++ b/eclass/python-any-r1.eclass
@@ -7,7 +7,7 @@
# @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org>
# Based on work of: Krzysztof Pawlik <nelchael@gentoo.org>
-# @SUPPORTED_EAPIS: 6 7
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: An eclass for packages having build-time dependency on Python.
# @DESCRIPTION:
# A minimal eclass for packages which need any Python interpreter
@@ -39,7 +39,7 @@
case "${EAPI:-0}" in
[0-5]) die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" ;;
- [6-7]) ;;
+ [6-8]) ;;
*) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
esac
@@ -144,7 +144,7 @@ EXPORT_FUNCTIONS pkg_setup
#
# Example value:
# @CODE
-# python_targets_python3_7(-),-python_single_target_python3_7(-)
+# python_targets_python3_7(-)
# @CODE
# @ECLASS-VARIABLE: PYTHON_SINGLE_USEDEP
@@ -239,14 +239,14 @@ if [[ ! ${_PYTHON_ANY_R1} ]]; then
# (
# dev-lang/python:3.7
# dev-python/foo[python_single_target_python3_7(-)]
-# || ( dev-python/bar[python_targets_python3_7(-),-python_single_target_python3_7(-)]
-# dev-python/baz[python_targets_python3_7(-),-python_single_target_python3_7(-)] )
+# || ( dev-python/bar[python_targets_python3_7(-)
+# dev-python/baz[python_targets_python3_7(-) )
# )
# (
# dev-lang/python:3.8
# dev-python/foo[python_single_target_python3_8(-)]
-# || ( dev-python/bar[python_targets_python3_8(-),-python_single_target_python3_8(-)]
-# dev-python/baz[python_targets_python3_8(-),-python_single_target_python3_8(-)] )
+# || ( dev-python/bar[python_targets_python3_8(-)]
+# dev-python/baz[python_targets_python3_8(-)] )
# )
# )
# @CODE
@@ -258,7 +258,7 @@ python_gen_any_dep() {
local i PYTHON_PKG_DEP out=
for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
- local PYTHON_USEDEP="python_targets_${i}(-),-python_single_target_${i}(-)"
+ local PYTHON_USEDEP="python_targets_${i}(-)"
local PYTHON_SINGLE_USEDEP="python_single_target_${i}(-)"
_python_export "${i}" PYTHON_PKG_DEP
@@ -294,7 +294,7 @@ _python_EPYTHON_supported() {
if has "${i}" "${_PYTHON_SUPPORTED_IMPLS[@]}"; then
if python_is_installed "${i}"; then
if declare -f python_check_deps >/dev/null; then
- local PYTHON_USEDEP="python_targets_${i}(-),-python_single_target_${i}(-)"
+ local PYTHON_USEDEP="python_targets_${i}(-)"
local PYTHON_SINGLE_USEDEP="python_single_target_${i}(-)"
python_check_deps
return ${?}
@@ -345,22 +345,6 @@ python_setup() {
fi
fi
- # then, try eselect-python
- local variant i
- for variant in '' '--python2' '--python3'; do
- i=$(eselect python --show ${variant} 2>/dev/null)
-
- if [[ ! ${i} ]]; then
- # no eselect-python?
- break
- elif _python_EPYTHON_supported "${i}"; then
- _python_export "${i}" EPYTHON PYTHON
- _python_wrapper_setup
- einfo "Using ${EPYTHON} to build"
- return
- fi
- done
-
# fallback to best installed impl.
# (reverse iteration over _PYTHON_SUPPORTED_IMPLS)
for (( i = ${#_PYTHON_SUPPORTED_IMPLS[@]} - 1; i >= 0; i-- )); do
diff --git a/eclass/python-r1.eclass b/eclass/python-r1.eclass
index 1eb68270a0b3..3a4d257036c8 100644
--- a/eclass/python-r1.eclass
+++ b/eclass/python-r1.eclass
@@ -7,7 +7,7 @@
# @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org>
# Based on work of: Krzysztof Pawlik <nelchael@gentoo.org>
-# @SUPPORTED_EAPIS: 6 7
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: A common, simple eclass for Python packages.
# @DESCRIPTION:
# A common eclass providing helper functions to build and install
@@ -33,7 +33,7 @@ case "${EAPI:-0}" in
[0-5])
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
;;
- [6-7])
+ [6-8])
;;
*)
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
@@ -203,15 +203,6 @@ _python_set_globals() {
local flags=( "${_PYTHON_SUPPORTED_IMPLS[@]/#/python_targets_}" )
local optflags=${flags[@]/%/(-)?}
-
- # A nice QA trick here. Since a python-single-r1 package has to have
- # at least one PYTHON_SINGLE_TARGET enabled (REQUIRED_USE),
- # the following check will always fail on those packages. Therefore,
- # it should prevent developers from mistakenly depending on packages
- # not supporting multiple Python implementations.
-
- local flags_st=( "${_PYTHON_SUPPORTED_IMPLS[@]/#/-python_single_target_}" )
- optflags+=,${flags_st[@]/%/(-)}
local requse="|| ( ${flags[*]} )"
local usedep=${optflags// /,}
@@ -304,11 +295,10 @@ _python_validate_useflags() {
# are both in PYTHON_COMPAT and match any of the patterns passed
# as parameters to the function.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# This is an internal function used to implement python_gen_cond_dep
# and deprecated python_gen_usedep.
@@ -322,7 +312,6 @@ _python_gen_usedep() {
if _python_impl_matches "${impl}" "${@}"; then
matches+=(
"python_targets_${impl}(-)?"
- "-python_single_target_${impl}(-)"
)
fi
done
@@ -342,11 +331,10 @@ _python_gen_usedep() {
# are both in PYTHON_COMPAT and match any of the patterns passed
# as parameters to the function.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# When all implementations are requested, please use ${PYTHON_USEDEP}
# instead. Please also remember to set an appropriate REQUIRED_USE
@@ -370,6 +358,7 @@ python_gen_usedep() {
if [[ ${EBUILD_PHASE} == setup ]]; then
eqawarn "python_gen_usedep() is deprecated. Please use python_gen_cond_dep instead."
fi
+ [[ ${EAPI} == [67] ]] || die "${FUNCNAME} banned in EAPI ${EAPI}"
_python_gen_usedep "${@}"
}
@@ -380,11 +369,10 @@ python_gen_usedep() {
# are both in PYTHON_COMPAT and match any of the patterns passed
# as parameters to the function.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# Example:
# @CODE
@@ -418,11 +406,10 @@ python_gen_useflags() {
# of Python implementations which are both in PYTHON_COMPAT and match
# any of the patterns passed as the remaining parameters.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# In order to enforce USE constraints on the packages, verbatim
# '${PYTHON_USEDEP}' (quoted!) may be placed in the dependency
@@ -477,11 +464,10 @@ python_gen_cond_dep() {
# patterns are passed, the output dependencies will be generated only
# for the implementations matching them.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# Use this function when you need to request different USE flags
# on the Python interpreter depending on package's USE flags. If you
@@ -534,11 +520,10 @@ python_gen_impl_dep() {
#
# Optionally, patterns may be specified to restrict the dependency to
# a subset of Python implementations supported by the ebuild.
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# This should be used along with an appropriate python_check_deps()
# that checks which of the any-of blocks were matched, and python_setup
@@ -578,8 +563,8 @@ python_gen_impl_dep() {
# (
# dev-lang/python:3.8
# dev-python/foo[python_single_target_python3_8(-)]
-# || ( dev-python/bar[python_targets_python3_8(-),-python_single_target_python3_8(-)]
-# dev-python/baz[python_targets_python3_8(-),-python_single_target_python3_8(-)] )
+# || ( dev-python/bar[python_targets_python3_8(-)]
+# dev-python/baz[python_targets_python3_8(-)] )
# )
# )
# @CODE
@@ -593,7 +578,7 @@ python_gen_any_dep() {
_python_verify_patterns "${@}"
for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; do
if _python_impl_matches "${i}" "${@}"; then
- local PYTHON_USEDEP="python_targets_${i}(-),-python_single_target_${i}(-)"
+ local PYTHON_USEDEP="python_targets_${i}(-)"
local PYTHON_SINGLE_USEDEP="python_single_target_${i}(-)"
_python_export "${i}" PYTHON_PKG_DEP
@@ -725,11 +710,10 @@ python_foreach_impl() {
# The python_check_deps() function in the any-of mode needs to be
# accompanied by appropriate any-of dependencies.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# This function needs to be used when Python is being called outside
# of python_foreach_impl calls (e.g. for shared processes like doc
@@ -806,7 +790,7 @@ python_setup() {
# first check if the interpreter is installed
python_is_installed "${impl}" || continue
# then run python_check_deps
- local PYTHON_USEDEP="python_targets_${impl}(-),-python_single_target_${impl}(-)"
+ local PYTHON_USEDEP="python_targets_${impl}(-)"
local PYTHON_SINGLE_USEDEP="python_single_target_${impl}(-)"
python_check_deps || continue
fi
@@ -862,7 +846,9 @@ python_replicate_script() {
# install the wrappers
local f
for f; do
- _python_ln_rel "${ED%/}/usr/lib/python-exec/python-exec2" "${f}" || die
+ local dosym=dosym
+ [[ ${EAPI} == [67] ]] && dosym=dosym8
+ "${dosym}" -r /usr/lib/python-exec/python-exec2 "${f#${ED}}"
done
}
diff --git a/eclass/python-single-r1.eclass b/eclass/python-single-r1.eclass
index 07db2d762ded..da0113b6d57b 100644
--- a/eclass/python-single-r1.eclass
+++ b/eclass/python-single-r1.eclass
@@ -7,7 +7,7 @@
# @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org>
# Based on work of: Krzysztof Pawlik <nelchael@gentoo.org>
-# @SUPPORTED_EAPIS: 6 7
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: An eclass for Python packages not installed for multiple implementations.
# @DESCRIPTION:
# An extension of the python-r1 eclass suite for packages which
@@ -40,7 +40,7 @@ case "${EAPI:-0}" in
[0-5])
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
;;
- [6-7])
+ [6-8])
;;
*)
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
@@ -179,12 +179,6 @@ EXPORT_FUNCTIONS pkg_setup
# python_targets_python3_4(-)
# @CODE
-# @ECLASS-VARIABLE: PYTHON_MULTI_USEDEP
-# @OUTPUT_VARIABLE
-# @DESCRIPTION:
-# This is a backwards-compatibility placeholder. Use PYTHON_USEDEP
-# instead.
-
# @ECLASS-VARIABLE: PYTHON_REQUIRED_USE
# @OUTPUT_VARIABLE
# @DESCRIPTION:
@@ -278,11 +272,10 @@ if [[ ! ${_PYTHON_SINGLE_R1} ]]; then
# are both in PYTHON_COMPAT and match any of the patterns passed
# as parameters to the function.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# This is an internal function used to implement python_gen_cond_dep.
_python_gen_usedep() {
@@ -312,11 +305,10 @@ _python_gen_usedep() {
# are both in PYTHON_COMPAT and match any of the patterns passed
# as parameters to the function.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# Example:
# @CODE
@@ -350,11 +342,10 @@ python_gen_useflags() {
# of Python implementations which are both in PYTHON_COMPAT and match
# any of the patterns passed as the remaining parameters.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# In order to enforce USE constraints on the packages, verbatim
# '${PYTHON_SINGLE_USEDEP}' and '${PYTHON_USEDEP}' (quoted!) may
@@ -395,6 +386,12 @@ python_gen_cond_dep() {
fi
local multi_usedep="python_targets_${impl}(-)"
+ if [[ ${EAPI} != [67] ]]; then
+ if [[ ${dep} == *\$\{PYTHON_MULTI_USEDEP\}* ]]; then
+ die "Replace PYTHON_MULTI_USEDEP with PYTHON_USEDEP in EAPI ${EAPI}"
+ fi
+ fi
+
local subdep=${dep//\$\{PYTHON_MULTI_USEDEP\}/${multi_usedep}}
matches+=( "python_single_target_${impl}? (
${subdep//\$\{PYTHON_USEDEP\}/${multi_usedep}} )" )
@@ -413,11 +410,10 @@ python_gen_cond_dep() {
# patterns are passed, the output dependencies will be generated only
# for the implementations matching them.
#
-# The patterns can be either fnmatch-style patterns (matched via bash
-# == operator against PYTHON_COMPAT values) or '-2' / '-3' to indicate
-# appropriately all enabled Python 2/3 implementations (alike
-# python_is_python3). Remember to escape or quote the fnmatch patterns
-# to prevent accidental shell filename expansion.
+# The patterns are fnmatch-style patterns (matched via bash
+# == operator against PYTHON_COMPAT values). Remember to escape
+# or quote the fnmatch patterns to prevent accidental shell filename
+# expansion.
#
# Use this function when you need to request different USE flags
# on the Python interpreter depending on package's USE flags. If you
diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 3dbf221eac5d..d43311762f9f 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -7,7 +7,7 @@
# @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org>
# Based on work of: Krzysztof Pawlik <nelchael@gentoo.org>
-# @SUPPORTED_EAPIS: 6 7
+# @SUPPORTED_EAPIS: 6 7 8
# @BLURB: Utility functions for packages with Python parts.
# @DESCRIPTION:
# A utility eclass providing functions to query Python implementations,
@@ -24,7 +24,7 @@
# See bug #704286, bug #781878
case "${EAPI:-0}" in
[0-5]) die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" ;;
- [6-7]) ;;
+ [6-8]) ;;
*) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
esac
@@ -34,6 +34,7 @@ fi
if [[ ! ${_PYTHON_UTILS_R1} ]]; then
+[[ ${EAPI} == [67] ]] && inherit eapi8-dosym
inherit toolchain-funcs
# @ECLASS-VARIABLE: _PYTHON_ALL_IMPLS
@@ -188,11 +189,8 @@ _python_set_impls() {
# of the patterns following it. Return 0 if it does, 1 otherwise.
# Matches if no patterns are provided.
#
-# <impl> can be in PYTHON_COMPAT or EPYTHON form. The patterns can be
-# either:
-# a) fnmatch-style patterns, e.g. 'python2*', 'pypy'...
-# b) '-2' to indicate all Python 2 variants (= !python_is_python3)
-# c) '-3' to indicate all Python 3 variants (= python_is_python3)
+# <impl> can be in PYTHON_COMPAT or EPYTHON form. The patterns
+# are fnmatch-style.
_python_impl_matches() {
[[ ${#} -ge 1 ]] || die "${FUNCNAME}: takes at least 1 parameter"
[[ ${#} -eq 1 ]] && return 0
@@ -201,15 +199,30 @@ _python_impl_matches() {
shift
for pattern; do
- if [[ ${pattern} == -2 ]]; then
- python_is_python3 "${impl}" || return 0
- elif [[ ${pattern} == -3 ]]; then
- python_is_python3 "${impl}" && return 0
- return
- # unify value style to allow lax matching
- elif [[ ${impl/./_} == ${pattern/./_} ]]; then
- return 0
- fi
+ case ${pattern} in
+ -2|python2*|pypy)
+ if [[ ${EAPI} != [67] ]]; then
+ eerror
+ eerror "Python 2 is no longer supported in Gentoo, please remove Python 2"
+ eerror "${FUNCNAME[1]} calls."
+ die "Passing ${pattern} to ${FUNCNAME[1]} is banned in EAPI ${EAPI}"
+ fi
+ ;;
+ -3)
+ # NB: "python3*" is fine, as "not pypy3"
+ if [[ ${EAPI} != [67] ]]; then
+ eerror
+ eerror "Python 2 is no longer supported in Gentoo, please remove Python 2"
+ eerror "${FUNCNAME[1]} calls."
+ die "Passing ${pattern} to ${FUNCNAME[1]} is banned in EAPI ${EAPI}"
+ fi
+ return 0
+ ;;
+ *)
+ # unify value style to allow lax matching
+ [[ ${impl/./_} == ${pattern/./_} ]] && return 0
+ ;;
+ esac
done
return 1
@@ -265,6 +278,8 @@ python_export() {
eqawarn "python_export() is part of private eclass API."
eqawarn "Please call python_get*() instead."
+ [[ ${EAPI} == [67] ]] || die "${FUNCNAME} banned in EAPI ${EAPI}"
+
_python_export "${@}"
}
@@ -534,46 +549,6 @@ python_get_scriptdir() {
echo "${PYTHON_SCRIPTDIR}"
}
-# @FUNCTION: _python_ln_rel
-# @USAGE: <from> <to>
-# @INTERNAL
-# @DESCRIPTION:
-# Create a relative symlink.
-_python_ln_rel() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local target=${1}
- local symname=${2}
-
- local tgpath=${target%/*}/
- local sympath=${symname%/*}/
- local rel_target=
-
- while [[ ${sympath} ]]; do
- local tgseg= symseg=
-
- while [[ ! ${tgseg} && ${tgpath} ]]; do
- tgseg=${tgpath%%/*}
- tgpath=${tgpath#${tgseg}/}
- done
-
- while [[ ! ${symseg} && ${sympath} ]]; do
- symseg=${sympath%%/*}
- sympath=${sympath#${symseg}/}
- done
-
- if [[ ${tgseg} != ${symseg} ]]; then
- rel_target=../${rel_target}${tgseg:+${tgseg}/}
- fi
- done
- rel_target+=${tgpath}${target##*/}
-
- debug-print "${FUNCNAME}: ${symname} -> ${target}"
- debug-print "${FUNCNAME}: rel_target = ${rel_target}"
-
- ln -fs "${rel_target}" "${symname}"
-}
-
# @FUNCTION: python_optimize
# @USAGE: [<directory>...]
# @DESCRIPTION:
@@ -622,18 +597,14 @@ python_optimize() {
instpath=/${instpath##/}
case "${EPYTHON}" in
- python2.7|python3.[34])
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"
- "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
- ;;
python*|pypy3)
- # both levels of optimization are separate since 3.5
+ # both levels of optimization are separate since py3.5
"${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"
"${PYTHON}" -O -m compileall -q -f -d "${instpath}" "${d}"
"${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
;;
*)
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"
+ die "Unknown impl for python_optimize: ${EPYTHON}"
;;
esac
done
@@ -659,7 +630,7 @@ python_optimize() {
python_scriptinto() {
debug-print-function ${FUNCNAME} "${@}"
- python_scriptroot=${1}
+ _PYTHON_SCRIPTROOT=${1}
}
# @FUNCTION: python_doexe
@@ -694,7 +665,7 @@ python_newexe() {
[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
[[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <path> <new-name>"
- local wrapd=${python_scriptroot:-/usr/bin}
+ local wrapd=${_PYTHON_SCRIPTROOT:-/usr/bin}
local f=${1}
local newfn=${2}
@@ -710,8 +681,9 @@ python_newexe() {
)
# install the wrapper
- _python_ln_rel "${ED%/}"/usr/lib/python-exec/python-exec2 \
- "${ED%/}/${wrapd}/${newfn}" || die
+ local dosym=dosym
+ [[ ${EAPI} == [67] ]] && dosym=dosym8
+ "${dosym}" -r /usr/lib/python-exec/python-exec2 "${wrapd}/${newfn}"
# don't use this at home, just call python_doscript() instead
if [[ ${_PYTHON_REWRITE_SHEBANG} ]]; then
@@ -797,7 +769,7 @@ python_newscript() {
python_moduleinto() {
debug-print-function ${FUNCNAME} "${@}"
- python_moduleroot=${1}
+ _PYTHON_MODULEROOT=${1}
}
# @FUNCTION: python_domodule
@@ -821,13 +793,13 @@ python_domodule() {
[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
local d
- if [[ ${python_moduleroot} == /* ]]; then
+ if [[ ${_PYTHON_MODULEROOT} == /* ]]; then
# absolute path
- d=${python_moduleroot}
+ d=${_PYTHON_MODULEROOT}
else
# relative to site-packages
local sitedir=$(python_get_sitedir)
- d=${sitedir#${EPREFIX}}/${python_moduleroot//.//}
+ d=${sitedir#${EPREFIX}}/${_PYTHON_MODULEROOT//.//}
fi
(
@@ -878,6 +850,8 @@ python_wrapper_setup() {
eqawarn "python_wrapper_setup() is part of private eclass API."
eqawarn "Please call python_setup() instead."
+ [[ ${EAPI} == [67] ]] || die "${FUNCNAME} banned in EAPI ${EAPI}"
+
_python_wrapper_setup "${@}"
}
@@ -917,7 +891,7 @@ _python_wrapper_setup() {
_python_export "${impl}" EPYTHON PYTHON
local pyver pyother
- if python_is_python3; then
+ if [[ ${EPYTHON} != python2* ]]; then
pyver=3
pyother=2
else
@@ -996,6 +970,9 @@ _python_wrapper_setup() {
#
# Returns 0 (true) if it is, 1 (false) otherwise.
python_is_python3() {
+ eqawarn "${FUNCNAME} is deprecated, as Python 2 is not supported anymore"
+ [[ ${EAPI} == [67] ]] || die "${FUNCNAME} banned in EAPI ${EAPI}"
+
local impl=${1:-${EPYTHON}}
[[ ${impl} ]] || die "python_is_python3: no impl nor EPYTHON"
@@ -1094,32 +1071,31 @@ python_fix_shebang() {
if [[ ${i} == *python2 ]]; then
from=python2
if [[ ! ${force} ]]; then
- python_is_python3 "${EPYTHON}" && error=1
+ error=1
fi
elif [[ ${i} == *python3 ]]; then
from=python3
- if [[ ! ${force} ]]; then
- python_is_python3 "${EPYTHON}" || error=1
- fi
else
from=python
fi
break
;;
- *python[23].[0123456789]|*pypy|*pypy3|*jython[23].[0123456789])
+ *python[23].[0-9]|*python3.[1-9][0-9]|*pypy|*pypy3|*jython[23].[0-9])
# Explicit mismatch.
if [[ ! ${force} ]]; then
error=1
else
case "${i}" in
- *python[23].[0123456789])
- from="python[23].[0123456789]";;
+ *python[23].[0-9])
+ from="python[23].[0-9]";;
+ *python3.[1-9][0-9])
+ from="python3.[1-9][0-9]";;
*pypy)
from="pypy";;
*pypy3)
from="pypy3";;
- *jython[23].[0123456789])
- from="jython[23].[0123456789]";;
+ *jython[23].[0-9])
+ from="jython[23].[0-9]";;
*)
die "${FUNCNAME}: internal error in 2nd pattern match";;
esac
diff --git a/eclass/tests/python-utils-r1.sh b/eclass/tests/python-utils-r1.sh
index 85a6a53654d3..63a94c90b715 100755
--- a/eclass/tests/python-utils-r1.sh
+++ b/eclass/tests/python-utils-r1.sh
@@ -5,6 +5,10 @@
EAPI=7
source tests-common.sh
+eqawarn() {
+ : # stub
+}
+
test_var() {
local var=${1}
local impl=${2}
diff --git a/x11-libs/goffice/Manifest b/x11-libs/goffice/Manifest
index e13f7eba6d6f..b0d8c82983da 100644
--- a/x11-libs/goffice/Manifest
+++ b/x11-libs/goffice/Manifest
@@ -1 +1,2 @@
DIST goffice-0.10.49.tar.xz 2430256 BLAKE2B 64ef27ab729f02b42742b2ae8da43c59b560d016caa707c6dccb3dc6f23eaab13b40367f145b83b1c728c9884dff164118f4a4d6f9ac5accb07596173b127271 SHA512 a185f9fc814ecd2a6e69d026ac150c38e30e1a440f7640bcfc3bfd1939b924621eabf2faafa2837e2d1835418f5481a0d0d7980f4a669e7ca1b93907b17a303a
+DIST goffice-0.10.50.tar.xz 2430608 BLAKE2B 0b06da8d58c4407465266f8c5421331d5d05731038bca191afdd1823950dde07439d458c0ddb93e0641ff81e727f055313be3c8af29bdf32214ed8b2c2cafc0b SHA512 1117540d9162d45059150281b03941ff9b6df1929dcbd7e5aa6e28010d3bb5a46902c30b6f1d35fd5b60f9afe73b58f132aa686aa1712332ea18635d5a79bd0c
diff --git a/x11-libs/goffice/goffice-0.10.50.ebuild b/x11-libs/goffice/goffice-0.10.50.ebuild
new file mode 100644
index 000000000000..33a766b3e012
--- /dev/null
+++ b/x11-libs/goffice/goffice-0.10.50.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit gnome.org libtool
+
+DESCRIPTION="A library of document-centric objects and utilities"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/goffice/"
+
+LICENSE="GPL-2"
+SLOT="0.10"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-solaris"
+IUSE="+introspection"
+
+# FIXME: add lasem to tree
+RDEPEND="
+ >=app-text/libspectre-0.2.6:=
+ >=dev-libs/glib-2.40.0:2
+ >=dev-libs/libxml2-2.4.12:2
+ dev-libs/libxslt
+ >=gnome-base/librsvg-2.22:2
+ >=gnome-extra/libgsf-1.14.24:=[introspection?]
+ >=x11-libs/cairo-1.10:=[svg]
+ >=x11-libs/gdk-pixbuf-2.22:2
+ >=x11-libs/gtk+-3.20:3
+ >=x11-libs/pango-1.24:=
+ x11-libs/libXext:=
+ x11-libs/libXrender:=
+ introspection? (
+ >=dev-libs/gobject-introspection-1:=
+ >=gnome-extra/libgsf-1.14.23:=
+ )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-lang/perl
+ dev-util/glib-utils
+ >=dev-util/gtk-doc-am-1.12
+ >=dev-util/intltool-0.35
+ virtual/perl-Compress-Raw-Zlib
+ virtual/perl-Getopt-Long
+ virtual/perl-IO-Compress
+ virtual/pkgconfig"
+
+src_prepare() {
+ default
+ elibtoolize
+}
+
+src_configure() {
+ econf \
+ --disable-gtk-doc \
+ --disable-maintainer-mode \
+ --without-lasem \
+ --with-gtk \
+ --with-config-backend=gsettings \
+ $(use_enable introspection)
+}
+
+src_install() {
+ default
+ dodoc MAINTAINERS
+
+ find "${ED}" -name '*.la' -delete || die
+}