kumquat-buildroot/package/python3
Thomas Petazzoni 4b6e8f010a package/pkg-python: fix for per-package directories
With per-package directory support, Python external modules are
causing a problem: the _sysconfigdata.py module installed by the
Python interpreter contains a number of paths that are relative to the
current package per-package directory, i.e python or python3. For
example:

'BLDSHARED': '/home/thomas/projets/buildroot/output/per-package/python/host/bin/arm-linux-gcc -shared',
'CC': '/home/thomas/projets/buildroot/output/per-package/python/host/bin/arm-linux-gcc',
'CXX': '/home/thomas/projets/buildroot/output/per-package/python/host/bin/arm-linux-g++',
etc.

These paths are problematic, because it means that the wrong compiler
gets used when building external Python modules: instead of using the
compiler from the external Python module per-package host directory,
it uses the one from the 'python' or 'python3' per-package host
directory. Due to this, any native dependency needed by the external
Python module is not found, even though it is properly present in the
current package per-package directory.

Of course, the problem occurs with both target Python modules and host
Python modules.

To fix this, we simply rewrite those paths in _sysconfigdata.py before
building a Python package.

Interestingly, until now, the _sysconfidata.py that was used during
the build was the one from $(TARGET_DIR), which is a bit unusual: it
is more common to use files from $(STAGING_DIR) during the build
process. So this commit changes the PYTHON_PATH and PYTHON3_PATH
variables so that they point to $(STAGING_DIR), which makes the
_sysconfigdata.py fixup in $(STAGING_DIR) effective.

Fixes:

  http://autobuild.buildroot.net/results/a24b0555fd4261b50dc3986635c30717d9cbe764/ (python-psycopg2)
  http://autobuild.buildroot.net/results/080fa893e1b0e7a8c8a31ac1c98eb8871b97264d/ (python-alsaaudio)
  http://autobuild.buildroot.net/results/79bc070f98d6d9d8ef78df12b248cdc7d0e405c3/ (python-lxml)
  and many more Python packages that use native code with a native library

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2020-02-18 23:16:15 +01:00
..
0001-Make-the-build-of-pyc-files-conditional.patch
0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch
0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch
0004-Adjust-library-header-paths-for-cross-compilation.patch
0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch
0006-Don-t-add-multiarch-paths.patch
0007-Abort-on-failed-module-build.patch
0008-Serial-ioctl-workaround.patch
0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch
0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch
0011-Override-system-locale-and-set-to-default-when-addin.patch
0012-Add-importlib-fix-for-PEP-3147-issue.patch
0013-Add-an-option-to-disable-installation-of-test-module.patch
0014-Add-an-option-to-disable-pydoc.patch
0015-Add-an-option-to-disable-lib2to3.patch
0016-Add-option-to-disable-the-sqlite3-module.patch
0017-Add-an-option-to-disable-the-tk-module.patch
0018-Add-an-option-to-disable-the-curses-module.patch
0019-Add-an-option-to-disable-expat.patch
0020-Add-an-option-to-disable-CJK-codecs.patch
0021-Add-an-option-to-disable-NIS.patch
0022-Add-an-option-to-disable-unicodedata.patch
0023-Add-an-option-to-disable-IDLE.patch
0024-Add-an-option-to-disable-decimal.patch
0025-Add-an-option-to-disable-the-ossaudiodev-module.patch
0026-Add-an-option-to-disable-openssl-support.patch
0027-Add-an-option-to-disable-the-readline-module.patch
0028-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch
0029-python-config.sh-don-t-reassign-prefix.patch
0030-Fix-cross-compiling-the-uuid-module.patch
0031-Add-an-option-to-disable-uuid-module.patch
0032-fix-building-on-older-distributions.patch
0033-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch
Config.in
Config.in.host
python3.hash
python3.mk