diff options
author | Hongxu Jia <hongxu.jia@windriver.com> | 2018-07-17 21:36:35 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-07-26 13:16:40 +0100 |
commit | 8fdbb0381dc7d9beee30c38e41e140b0a7c2838b (patch) | |
tree | d4a517db2586fdb0926fc31599c70fd9f5e0f1b8 /meta | |
parent | 206f8102a45e5e91657dd6e8c098ffe0f257b1cc (diff) | |
download | poky-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>
Diffstat (limited to 'meta')
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 | ||
10 | distutils_do_compile() { | 10 | distutils_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 | ||
17 | distutils3_do_compile() { | 17 | distutils3_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 @@ | |||
1 | From 019422d19c6401fa8f45b1311ecd31bb087c809d Mon Sep 17 00:00:00 2001 | ||
2 | From: Hongxu Jia <hongxu.jia@windriver.com> | ||
3 | Date: Tue, 17 Jul 2018 10:13:38 +0800 | ||
4 | Subject: [PATCH] conditionally do not fetch code by easy_install | ||
5 | |||
6 | If var-NO_FETCH_BUILD is set, do not allow to fetch code from | ||
7 | internet by easy_install. | ||
8 | |||
9 | Upstream-Status: Inappropriate [oe specific] | ||
10 | |||
11 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> | ||
12 | --- | ||
13 | setuptools/command/easy_install.py | 5 +++++ | ||
14 | 1 file changed, 5 insertions(+) | ||
15 | |||
16 | diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py | ||
17 | index 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 | -- | ||
33 | 2.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 | ||
9 | inherit pypi | 9 | inherit pypi |
10 | 10 | ||
11 | SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch" | ||
12 | |||
11 | SRC_URI[md5sum] = "260630ae1a64bafa39dcc53404d63829" | 13 | SRC_URI[md5sum] = "260630ae1a64bafa39dcc53404d63829" |
12 | SRC_URI[sha256sum] = "012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f" | 14 | SRC_URI[sha256sum] = "012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f" |
13 | 15 | ||