summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHongxu Jia <hongxu.jia@windriver.com>2018-07-17 21:36:35 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-07-26 13:16:40 +0100
commit8fdbb0381dc7d9beee30c38e41e140b0a7c2838b (patch)
treed4a517db2586fdb0926fc31599c70fd9f5e0f1b8
parent206f8102a45e5e91657dd6e8c098ffe0f257b1cc (diff)
downloadpoky-8fdbb0381dc7d9beee30c38e41e140b0a7c2838b.tar.gz
distutils/setuptools-native, distutils3/setuptools3-native: do not try to fetch code during do_compile
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] (From OE-Core rev: 57414f4a1c549e6faaa110e6e95ff601b05b7361) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/distutils.bbclass1
-rw-r--r--meta/classes/distutils3.bbclass1
-rw-r--r--meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch34
-rw-r--r--meta/recipes-devtools/python/python-setuptools.inc2
4 files changed, 38 insertions, 0 deletions
diff --git a/meta/classes/distutils.bbclass b/meta/classes/distutils.bbclass
index 1930c35292..c2f74039cb 100644
--- a/meta/classes/distutils.bbclass
+++ b/meta/classes/distutils.bbclass
@@ -8,6 +8,7 @@ DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \
8 --install-data=${D}/${datadir}" 8 --install-data=${D}/${datadir}"
9 9
10distutils_do_compile() { 10distutils_do_compile() {
11 NO_FETCH_BUILD=1 \
11 STAGING_INCDIR=${STAGING_INCDIR} \ 12 STAGING_INCDIR=${STAGING_INCDIR} \
12 STAGING_LIBDIR=${STAGING_LIBDIR} \ 13 STAGING_LIBDIR=${STAGING_LIBDIR} \
13 ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS} || \ 14 ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS} || \
diff --git a/meta/classes/distutils3.bbclass b/meta/classes/distutils3.bbclass
index d4b92a3bb2..f8aca5e62f 100644
--- a/meta/classes/distutils3.bbclass
+++ b/meta/classes/distutils3.bbclass
@@ -15,6 +15,7 @@ distutils3_do_configure() {
15} 15}
16 16
17distutils3_do_compile() { 17distutils3_do_compile() {
18 NO_FETCH_BUILD=1 \
18 STAGING_INCDIR=${STAGING_INCDIR} \ 19 STAGING_INCDIR=${STAGING_INCDIR} \
19 STAGING_LIBDIR=${STAGING_LIBDIR} \ 20 STAGING_LIBDIR=${STAGING_LIBDIR} \
20 ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \ 21 ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
diff --git a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
new file mode 100644
index 0000000000..4b17921880
--- /dev/null
+++ b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
@@ -0,0 +1,34 @@
1From 019422d19c6401fa8f45b1311ecd31bb087c809d Mon Sep 17 00:00:00 2001
2From: Hongxu Jia <hongxu.jia@windriver.com>
3Date: Tue, 17 Jul 2018 10:13:38 +0800
4Subject: [PATCH] conditionally do not fetch code by easy_install
5
6If var-NO_FETCH_BUILD is set, do not allow to fetch code from
7internet by easy_install.
8
9Upstream-Status: Inappropriate [oe specific]
10
11Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
12---
13 setuptools/command/easy_install.py | 5 +++++
14 1 file changed, 5 insertions(+)
15
16diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
17index 85ee40f..7eb9d2a 100755
18--- a/setuptools/command/easy_install.py
19+++ b/setuptools/command/easy_install.py
20@@ -637,6 +637,11 @@ class easy_install(Command):
21 os.path.exists(tmpdir) and rmtree(rmtree_safe(tmpdir))
22
23 def easy_install(self, spec, deps=False):
24+ if os.environ.get('NO_FETCH_BUILD', None):
25+ log.error("ERROR: Do not try to fetch `%s' for building. "
26+ "Please add its native recipe to DEPENDS." % spec)
27+ return None
28+
29 if not self.editable:
30 self.install_site_py()
31
32--
332.7.4
34
diff --git a/meta/recipes-devtools/python/python-setuptools.inc b/meta/recipes-devtools/python/python-setuptools.inc
index ab1c013ef1..2c59a2936b 100644
--- a/meta/recipes-devtools/python/python-setuptools.inc
+++ b/meta/recipes-devtools/python/python-setuptools.inc
@@ -8,6 +8,8 @@ PYPI_PACKAGE_EXT = "zip"
8 8
9inherit pypi 9inherit pypi
10 10
11SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
12
11SRC_URI[md5sum] = "260630ae1a64bafa39dcc53404d63829" 13SRC_URI[md5sum] = "260630ae1a64bafa39dcc53404d63829"
12SRC_URI[sha256sum] = "012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f" 14SRC_URI[sha256sum] = "012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f"
13 15