aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHongxu Jia <hongxu.jia@windriver.com>2018-07-17 11:17:45 +0800
committerHongxu Jia <hongxu.jia@windriver.com>2018-07-16 23:30:51 -0400
commitdfc75ebfb9a5282585d621ea66b4590dbb8b6b17 (patch)
tree0ba28442271e204fd17be285e23ad655338b4bde
parente733dc175396969a5959c8059a3f575ad254d472 (diff)
downloadopenembedded-core-contrib-hongxu/setuptools-fetch.tar.gz
openembedded-core-contrib-hongxu/setuptools-fetch.tar.bz2
openembedded-core-contrib-hongxu/setuptools-fetch.zip
distutils3/setuptools3-native: do not try to fetch code during do_compilehongxu/setuptools-fetch
If a python recipe is using setuptools and the setup_requires argument, where setuptools will use easy_install to fetch the module if it isn't present. The build failed on a machine where a proxy was required, but succeeded on a machine which had direct access to the internet Add var-NO_FETCH_BUILD, and set it in distutils_do_compile which does not allow to fetch code from internet during do_compile. Example result: ... ERROR: Do not try to fetch `pytest-runner1' for building. Please add its native recipe to DEPENDS. Traceback (most recent call last): File "setup.py", line 56, in <module> ... The improvement is flexible for test_requirements argument (used at `setup.py test'), where use easy_install also. [YOCTO #12084] Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-rw-r--r--meta/classes/distutils3.bbclass2
-rw-r--r--meta/recipes-devtools/python/python3-setuptools/0001-conditionally-do-not-fetch-code-by-easy_install.patch35
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_40.0.0.bb2
3 files changed, 39 insertions, 0 deletions
diff --git a/meta/classes/distutils3.bbclass b/meta/classes/distutils3.bbclass
index d4b92a3bb2..fea7368549 100644
--- a/meta/classes/distutils3.bbclass
+++ b/meta/classes/distutils3.bbclass
@@ -15,6 +15,8 @@ distutils3_do_configure() {
}
distutils3_do_compile() {
+ NO_FETCH_BUILD=1 \
+ NO_FETCH_BUILD_HELP="Please add its native recipe to DEPENDS." \
STAGING_INCDIR=${STAGING_INCDIR} \
STAGING_LIBDIR=${STAGING_LIBDIR} \
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
diff --git a/meta/recipes-devtools/python/python3-setuptools/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/meta/recipes-devtools/python/python3-setuptools/0001-conditionally-do-not-fetch-code-by-easy_install.patch
new file mode 100644
index 0000000000..441af1690e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/0001-conditionally-do-not-fetch-code-by-easy_install.patch
@@ -0,0 +1,35 @@
+From 019422d19c6401fa8f45b1311ecd31bb087c809d Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 17 Jul 2018 10:13:38 +0800
+Subject: [PATCH] conditionally do not fetch code by easy_install
+
+If var-NO_FETCH_BUILD is set, do not allow to fetch code from
+internet by easy_install, and log the help message from
+var-NO_FETCH_BUILD_HELP
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setuptools/command/easy_install.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
+index 85ee40f..7eb9d2a 100755
+--- a/setuptools/command/easy_install.py
++++ b/setuptools/command/easy_install.py
+@@ -637,6 +637,11 @@ class easy_install(Command):
+ os.path.exists(tmpdir) and rmtree(rmtree_safe(tmpdir))
+
+ def easy_install(self, spec, deps=False):
++ if os.environ.get('NO_FETCH_BUILD', None):
++ log.error("ERROR: Do not try to fetch `%s' for building. %s" %
++ (spec, os.environ.get('NO_FETCH_BUILD_HELP', '')))
++ return None
++
+ if not self.editable:
+ self.install_site_py()
+
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/python/python3-setuptools_40.0.0.bb b/meta/recipes-devtools/python/python3-setuptools_40.0.0.bb
index 0dc1ed8622..713a1b5b8a 100644
--- a/meta/recipes-devtools/python/python3-setuptools_40.0.0.bb
+++ b/meta/recipes-devtools/python/python3-setuptools_40.0.0.bb
@@ -1,6 +1,8 @@
require python-setuptools.inc
inherit setuptools3
+SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
+
do_install_append() {
mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
}