python3: detect libraries in STAGING_LIBDIR

Patch setup.py so that the detect_modules() function looks for required
libraries and headers in STAGING_LIBDIR / STAGING_INCDIR.

Without this patch, several extension modules are not built, even though
their dependencies are present in the compiler's search paths.
The result is the following warning, and ultimately incomplete packages:

| The necessary bits to build these optional modules were not found:
| _bz2                  _curses_panel         _dbm
| _gdbm                 _lzma                 _sqlite3
| nis                   readline              zlib
| To find the necessary bits, look in setup.py in detect_modules() for the module's name.

With the Python 3.3 version of the recipe, at least some of these modules
were built, because STAGING_LIBDIR happened to be in the search path
by coincidence. Due to changes to distutils in Python 3.4, this is no
longer the case.

A previous patch that only affects the search paths for SSL is dropped, as
this one is a more complete fix for [YOCTO #7768].

Part of the fix for [YOCTO #8048].

(From OE-Core rev: 540a223fc0fb6b07dab3316de6236924bd97613c)

Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Dominic Sacré 2015-07-28 16:58:35 +02:00 committed by Richard Purdie
parent 016f5aed00
commit 3c53a2bbd7
3 changed files with 31 additions and 42 deletions

View File

@ -1,41 +0,0 @@
Upstream-Status: Inappropriate [Embedded Specific]
Python 3 fails to compile the ssl module, later, when requesting to install packages that should include such modules
no error is shown; but a running python shell trying to import the ssl library results in an import error,
since it was never installed.
This looks for the modules in the correct directories so they are corretcly compiled and installed along with python3.
ImportError: No module named _ssl
Signed-Off-By: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Index: Python-3.4.3/setup.py
===================================================================
--- Python-3.4.3.orig/setup.py
+++ Python-3.4.3/setup.py
@@ -726,10 +726,9 @@ class PyBuildExt(build_ext):
exts.append( Extension('_socket', ['socketmodule.c'],
depends = ['socketmodule.h']) )
# Detect SSL support for the socket module (via _ssl)
- search_for_ssl_incs_in = [
- '/usr/local/ssl/include',
- '/usr/contrib/ssl/include/'
- ]
+ search_for_ssl_incs_in = []
+ for dir in [os.getenv("STAGING_INCDIR")]:
+ search_for_ssl_incs_in.append(dir)
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
)
@@ -739,9 +738,7 @@ class PyBuildExt(build_ext):
if krb5_h:
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
- ['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
- ] )
+ [os.getenv("STAGING_LIBDIR")])
if (ssl_incs is not None and
ssl_libs is not None):

View File

@ -0,0 +1,30 @@
Patch setup.py so that the detect_modules() function looks for required
libraries and headers in STAGING_LIBDIR / STAGING_INCDIR.
Without this patch, several extension modules are not built, even though
their dependencies are present in the compiler's search paths.
The result is the following warning, and ultimately incomplete packages:
| The necessary bits to build these optional modules were not found:
| _bz2 _curses_panel _dbm
| _gdbm _lzma _sqlite3
| nis readline zlib
| To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Upstream-Status: Inappropriate [Cross compile specific]
Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de>
Index: Python-3.4.3/setup.py
===================================================================
--- Python-3.4.3.orig/setup.py
+++ Python-3.4.3/setup.py
@@ -521,6 +521,8 @@ class PyBuildExt(build_ext):
else:
lib_dirs = self.compiler.library_dirs[:]
inc_dirs = self.compiler.include_dirs[:]
+ lib_dirs.append(os.environ.get('STAGING_LIBDIR'))
+ inc_dirs.append(os.environ.get('STAGING_INCDIR'))
exts = []
missing = []

View File

@ -36,7 +36,7 @@ SRC_URI += "\
file://python3-setup.py-no-host-headers-libs.patch \
file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
file://fix_ssl_include_dir.patch \
file://setup.py-find-libraries-in-staging-dirs.patch \
"
SRC_URI[md5sum] = "7d092d1bba6e17f0d9bd21b49e441dd5"
SRC_URI[sha256sum] = "b5b3963533768d5fc325a4d7a6bd6f666726002d696f1d399ec06b043ea996b8"