* [gentoo-dev] [PATCH 1/3] distutils-r1.eclass: Depend on setuptools by default
@ 2019-11-29 13:32 Michał Górny
2019-11-29 13:32 ` [gentoo-dev] [PATCH 2/3] dev-python/setuptools: Disable setuptools self-dependency Michał Górny
2019-11-29 13:32 ` [gentoo-dev] [PATCH 3/3] sys-apps/portage: Disable setuptools dependency Michał Górny
0 siblings, 2 replies; 3+ messages in thread
From: Michał Górny @ 2019-11-29 13:32 UTC (permalink / raw)
To: gentoo-dev; +Cc: python, dev-portage, Michał Górny
Add a new DISTUTILS_USE_SETUPTOOLS top variable, and make it default
to BDEPEND-ing on dev-python/setuptools (which should be correct
for the majority of packages). Packages that either need RDEPEND
or no dependency at all can override it.
Also add a check for correct value in esetup.py. This should make it
easy for developers to adjust the new variable in their packages.
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
eclass/distutils-r1.eclass | 82 +++++++++++++++++++++++++++++++++++---
1 file changed, 76 insertions(+), 6 deletions(-)
diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index f44f0aee9c21..083a72bd0589 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -77,9 +77,23 @@ esac
# to be exported. It must be run in order for the eclass functions
# to function properly.
+# @ECLASS-VARIABLE: DISTUTILS_USE_SETUPTOOLS
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Controls adding dev-python/setuptools dependency. The allowed values
+# are:
+#
+# - no -- do not add the dependency (pure distutils package)
+# - bdepend -- add it to BDEPEND (the default)
+# - rdepend -- add it to BDEPEND+RDEPEND (when using entry_points)
+#
+# This variable is effective only if DISTUTILS_OPTIONAL is disabled.
+# It needs to be set before the inherit line.
+: ${DISTUTILS_USE_SETUPTOOLS:=bdepend}
+
if [[ ! ${_DISTUTILS_R1} ]]; then
-[[ ${EAPI} == [45] ]] && inherit eutils
+[[ ${EAPI} == [456] ]] && inherit eutils
[[ ${EAPI} == [56] ]] && inherit xdg-utils
inherit multiprocessing toolchain-funcs
@@ -97,15 +111,35 @@ fi
if [[ ! ${_DISTUTILS_R1} ]]; then
-if [[ ! ${DISTUTILS_OPTIONAL} ]]; then
- RDEPEND=${PYTHON_DEPS}
+_distutils_set_globals() {
+ local rdep=${PYTHON_DEPS}
+ local bdep=${rdep}
+
+ case ${DISTUTILS_USE_SETUPTOOLS} in
+ no)
+ ;;
+ bdepend)
+ bdep+=" dev-python/setuptools[${PYTHON_USEDEP}]"
+ ;;
+ rdepend)
+ bdep+=" dev-python/setuptools[${PYTHON_USEDEP}]"
+ rdep+=" dev-python/setuptools[${PYTHON_USEDEP}]"
+ ;;
+ *)
+ die "Invalid DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}"
+ ;;
+ esac
+
+ RDEPEND=${rdep}
if [[ ${EAPI} != [56] ]]; then
- BDEPEND=${PYTHON_DEPS}
+ BDEPEND=${bdep}
else
- DEPEND=${PYTHON_DEPS}
+ DEPEND=${bdep}
fi
REQUIRED_USE=${PYTHON_REQUIRED_USE}
-fi
+}
+[[ ! ${DISTUTILS_OPTIONAL} ]] && _distutils_set_globals
+unset -f _distutils_set_globals
# @ECLASS-VARIABLE: PATCHES
# @DEFAULT_UNSET
@@ -395,6 +429,41 @@ distutils_enable_tests() {
return 0
}
+# @FUNCTION: _distutils-r1_verify_use_setuptools
+# @INTERNAL
+# @DESCRIPTION:
+# Check setup.py for signs that DISTUTILS_USE_SETUPTOOLS have been set
+# incorrectly.
+_distutils_verify_use_setuptools() {
+ [[ ${DISTUTILS_OPTIONAL} ]] && return
+
+ # ok, those are cheap greps. we can try toimprove them if we hit
+ # false positives.
+ local expected=no
+ if [[ ${CATEGORY}/${PN} == dev-python/setuptools ]]; then
+ # as a special case, setuptools provides itself ;-)
+ :
+ elif grep -E -q -s '(from|import)\s+setuptools' setup.py; then
+ if grep -E -q -s 'entry_points\s+=' setup.py; then
+ expected=rdepend
+ else
+ expected=bdepend
+ fi
+ fi
+
+ if [[ ${DISTUTILS_USE_SETUPTOOLS} != ${expected} ]]; then
+ if [[ ! ${_DISTUTILS_SETUPTOOLS_WARNED} ]]; then
+ _DISTUTILS_SETUPTOOLS_WARNED=1
+ local def=
+ [[ ${DISTUTILS_USE_SETUPTOOLS} == bdepend ]] && def=' (default?)'
+
+ eqawarn "DISTUTILS_USE_SETUPTOOLS value is probably incorrect"
+ eqawarn " value: DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}${def}"
+ eqawarn " expected: DISTUTILS_USE_SETUPTOOLS=${expected}"
+ fi
+ fi
+}
+
# @FUNCTION: esetup.py
# @USAGE: [<args>...]
# @DESCRIPTION:
@@ -417,6 +486,7 @@ esetup.py() {
[[ ${EAPI} != [45] ]] && die_args+=( -n )
[[ ${BUILD_DIR} ]] && _distutils-r1_create_setup_cfg
+ _distutils_verify_use_setuptools
set -- "${EPYTHON:-python}" setup.py "${mydistutilsargs[@]}" "${@}"
--
2.24.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-dev] [PATCH 2/3] dev-python/setuptools: Disable setuptools self-dependency
2019-11-29 13:32 [gentoo-dev] [PATCH 1/3] distutils-r1.eclass: Depend on setuptools by default Michał Górny
@ 2019-11-29 13:32 ` Michał Górny
2019-11-29 13:32 ` [gentoo-dev] [PATCH 3/3] sys-apps/portage: Disable setuptools dependency Michał Górny
1 sibling, 0 replies; 3+ messages in thread
From: Michał Górny @ 2019-11-29 13:32 UTC (permalink / raw)
To: gentoo-dev; +Cc: python, dev-portage, Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
dev-python/setuptools/setuptools-40.6.3.ebuild | 1 +
dev-python/setuptools/setuptools-41.5.1.ebuild | 1 +
dev-python/setuptools/setuptools-42.0.0.ebuild | 1 +
dev-python/setuptools/setuptools-42.0.1.ebuild | 1 +
dev-python/setuptools/setuptools-9999.ebuild | 1 +
5 files changed, 5 insertions(+)
diff --git a/dev-python/setuptools/setuptools-40.6.3.ebuild b/dev-python/setuptools/setuptools-40.6.3.ebuild
index d5d482efd58e..a21883a89f89 100644
--- a/dev-python/setuptools/setuptools-40.6.3.ebuild
+++ b/dev-python/setuptools/setuptools-40.6.3.ebuild
@@ -2,6 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=6
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python2_7 python3_{5,6,7} pypy{,3} )
PYTHON_REQ_USE="xml(+)"
diff --git a/dev-python/setuptools/setuptools-41.5.1.ebuild b/dev-python/setuptools/setuptools-41.5.1.ebuild
index ff4a7aa54630..a7b9022b6a0c 100644
--- a/dev-python/setuptools/setuptools-41.5.1.ebuild
+++ b/dev-python/setuptools/setuptools-41.5.1.ebuild
@@ -2,6 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} pypy{,3} )
PYTHON_REQ_USE="xml(+)"
diff --git a/dev-python/setuptools/setuptools-42.0.0.ebuild b/dev-python/setuptools/setuptools-42.0.0.ebuild
index e7aa7c945a85..8c33401e75bd 100644
--- a/dev-python/setuptools/setuptools-42.0.0.ebuild
+++ b/dev-python/setuptools/setuptools-42.0.0.ebuild
@@ -2,6 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} pypy{,3} )
PYTHON_REQ_USE="xml(+)"
diff --git a/dev-python/setuptools/setuptools-42.0.1.ebuild b/dev-python/setuptools/setuptools-42.0.1.ebuild
index 0c293d1ea950..58369bab16cb 100644
--- a/dev-python/setuptools/setuptools-42.0.1.ebuild
+++ b/dev-python/setuptools/setuptools-42.0.1.ebuild
@@ -2,6 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} pypy{,3} )
PYTHON_REQ_USE="xml(+)"
diff --git a/dev-python/setuptools/setuptools-9999.ebuild b/dev-python/setuptools/setuptools-9999.ebuild
index 8d522c4213f5..34b0627c0728 100644
--- a/dev-python/setuptools/setuptools-9999.ebuild
+++ b/dev-python/setuptools/setuptools-9999.ebuild
@@ -2,6 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} pypy{,3} )
PYTHON_REQ_USE="xml(+)"
--
2.24.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-dev] [PATCH 3/3] sys-apps/portage: Disable setuptools dependency
2019-11-29 13:32 [gentoo-dev] [PATCH 1/3] distutils-r1.eclass: Depend on setuptools by default Michał Górny
2019-11-29 13:32 ` [gentoo-dev] [PATCH 2/3] dev-python/setuptools: Disable setuptools self-dependency Michał Górny
@ 2019-11-29 13:32 ` Michał Górny
1 sibling, 0 replies; 3+ messages in thread
From: Michał Górny @ 2019-11-29 13:32 UTC (permalink / raw)
To: gentoo-dev; +Cc: python, dev-portage, Michał Górny
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
sys-apps/portage/portage-2.3.66-r1.ebuild | 1 +
sys-apps/portage/portage-2.3.69.ebuild | 1 +
sys-apps/portage/portage-2.3.76-r1.ebuild | 1 +
sys-apps/portage/portage-2.3.79.ebuild | 1 +
sys-apps/portage/portage-2.3.80-r1.ebuild | 1 +
sys-apps/portage/portage-9999.ebuild | 1 +
6 files changed, 6 insertions(+)
diff --git a/sys-apps/portage/portage-2.3.66-r1.ebuild b/sys-apps/portage/portage-2.3.66-r1.ebuild
index b7031ec44e2f..7f5d996b6ab5 100644
--- a/sys-apps/portage/portage-2.3.66-r1.ebuild
+++ b/sys-apps/portage/portage-2.3.66-r1.ebuild
@@ -3,6 +3,7 @@
EAPI=5
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=(
pypy
python3_5 python3_6 python3_7
diff --git a/sys-apps/portage/portage-2.3.69.ebuild b/sys-apps/portage/portage-2.3.69.ebuild
index fbbb9c85705c..854c01cd6e53 100644
--- a/sys-apps/portage/portage-2.3.69.ebuild
+++ b/sys-apps/portage/portage-2.3.69.ebuild
@@ -3,6 +3,7 @@
EAPI=5
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=(
pypy
python3_5 python3_6 python3_7
diff --git a/sys-apps/portage/portage-2.3.76-r1.ebuild b/sys-apps/portage/portage-2.3.76-r1.ebuild
index ff8abf53e72d..28afff0ae724 100644
--- a/sys-apps/portage/portage-2.3.76-r1.ebuild
+++ b/sys-apps/portage/portage-2.3.76-r1.ebuild
@@ -3,6 +3,7 @@
EAPI=5
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=(
pypy
python3_5 python3_6 python3_7
diff --git a/sys-apps/portage/portage-2.3.79.ebuild b/sys-apps/portage/portage-2.3.79.ebuild
index 163dfbc60ec7..fef4b86a2498 100644
--- a/sys-apps/portage/portage-2.3.79.ebuild
+++ b/sys-apps/portage/portage-2.3.79.ebuild
@@ -3,6 +3,7 @@
EAPI=5
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=(
pypy
python3_5 python3_6 python3_7 python3_8
diff --git a/sys-apps/portage/portage-2.3.80-r1.ebuild b/sys-apps/portage/portage-2.3.80-r1.ebuild
index 6d384ab8fdd8..494eb2b43686 100644
--- a/sys-apps/portage/portage-2.3.80-r1.ebuild
+++ b/sys-apps/portage/portage-2.3.80-r1.ebuild
@@ -3,6 +3,7 @@
EAPI=5
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=(
pypy
python3_5 python3_6 python3_7 python3_8
diff --git a/sys-apps/portage/portage-9999.ebuild b/sys-apps/portage/portage-9999.ebuild
index 6401c40dee2a..04544afb66d4 100644
--- a/sys-apps/portage/portage-9999.ebuild
+++ b/sys-apps/portage/portage-9999.ebuild
@@ -3,6 +3,7 @@
EAPI=6
+DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=(
pypy
python3_5 python3_6 python3_7 python3_8
--
2.24.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-11-29 13:33 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-29 13:32 [gentoo-dev] [PATCH 1/3] distutils-r1.eclass: Depend on setuptools by default Michał Górny
2019-11-29 13:32 ` [gentoo-dev] [PATCH 2/3] dev-python/setuptools: Disable setuptools self-dependency Michał Górny
2019-11-29 13:32 ` [gentoo-dev] [PATCH 3/3] sys-apps/portage: Disable setuptools dependency Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox