Commit 5476b727 authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Peter Korsgaard
Browse files

python: improve isolation of build environment and error handling



This commit mainly fixes bug #7268 by improving the isolation of
the build environment by making sure some host environment header
paths do not leak into the target build. The investigation was done by
David <buildroot-2014@inbox.com>. This is done by not calling the
add_multiarch_paths() function of setup.py when we're cross-compiling,
a change made in the newly introduced
python-013-dont-add-multiarch-path.patch.

In addition to this, another patch is added to make sure the build is
aborted when one of the Python module fails to build. This is done in
python-014-abort-on-failed-modules.patch. Without this, the Python
setup.py script simply logs which module failed to build, but doesn't
abort, so it's hard to notice when there is a problem.

[Peter: slightly reword commit message]
Cc: David <buildroot-2014@inbox.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <peter@korsgaard.com>
parent 13f8c392
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
Don't add multiarch paths

The add_multiarch_paths() function leads, in certain build
environments, to the addition of host header paths to the CFLAGS,
which is not appropriate for cross-compilation. This patch fixes that
by simply removing the call to add_multiarch_paths() when we're
cross-compiling.

Investigation done by David <buildroot-2014@inbox.com>.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -454,9 +454,9 @@
         if not cross_compiling:
             add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
             add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+            self.add_multiarch_paths()
         if cross_compiling:
             self.add_gcc_paths()
-        self.add_multiarch_paths()
 
         # Add paths specified in the environment variables LDFLAGS and
         # CPPFLAGS for header and library files.
+21 −0
Original line number Diff line number Diff line
Abort on failed module build

When building a Python module fails, the setup.py script currently
doesn't exit with an error, and simply continues. This is not a really
nice behavior, so this patch changes setup.py to abort with an error,
so that the build issue is clearly noticeable.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -281,6 +281,7 @@
             print "Failed to build these modules:"
             print_three_column(failed)
             print
+            sys.exit(1)
 
     def build_extension(self, ext):