package/pkg-generic.mk: move python fixup to generic package infrastructure
Fixing _sysconfigdata*.{py,pyc} was previously done by python package infrastructure. Some packages use python stuff without using python package infrastructure. These packages perform overwrites and need the specific python fixup to fix them. In order to be sure to fix all of these packages, the python fixup is moved to the generic package infrastructure and applied to all packages. This follows the same principle as for the .la libtool files fixup. Signed-off-by: Herve Codina <herve.codina@bootlin.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
parent
afde8fb8f3
commit
6c1d9995b5
@ -103,6 +103,30 @@ define fixup-libtool-files
|
||||
endef
|
||||
endif
|
||||
|
||||
# Make sure python _sysconfigdata*.py files only reference the current
|
||||
# per-package directory.
|
||||
#
|
||||
# Can't use $(foreach d, $(HOST_DIR)/lib/python* $(STAGING_DIR)/usr/lib/python*, ...)
|
||||
# because those directories may be created in the same recipe this macro will
|
||||
# be expanded in.
|
||||
# Additionally, either or both may be missing, which would make find whine and
|
||||
# fail.
|
||||
# So we just use HOST_DIR as a starting point, and filter on the two directories
|
||||
# of interest.
|
||||
ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)
|
||||
define FIXUP_PYTHON_SYSCONFIGDATA
|
||||
$(Q)find $(HOST_DIR) \
|
||||
\( -path '$(HOST_DIR)/lib/python*' \
|
||||
-o -path '$(STAGING_DIR)/usr/lib/python*' \
|
||||
\) \
|
||||
\( \( -name "_sysconfigdata*.pyc" -delete \) \
|
||||
-o \( -name "_sysconfigdata*.py" -print0 \) \
|
||||
\) \
|
||||
| xargs -0 --no-run-if-empty \
|
||||
$(SED) 's:$(PER_PACKAGE_DIR)/[^/]\+/:$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/:g'
|
||||
endef
|
||||
endif
|
||||
|
||||
# Functions to collect statistics about installed files
|
||||
|
||||
# $(1): base directory to search in
|
||||
@ -836,7 +860,8 @@ $(2)_PRE_LEGAL_INFO_HOOKS ?=
|
||||
$(2)_POST_LEGAL_INFO_HOOKS ?=
|
||||
$(2)_TARGET_FINALIZE_HOOKS ?=
|
||||
$(2)_ROOTFS_PRE_CMD_HOOKS ?=
|
||||
$(2)_POST_PREPARE_HOOKS ?=
|
||||
|
||||
$(2)_POST_PREPARE_HOOKS += FIXUP_PYTHON_SYSCONFIGDATA
|
||||
|
||||
ifeq ($$($(2)_TYPE),target)
|
||||
ifneq ($$(HOST_$(2)_KCONFIG_VAR),)
|
||||
|
@ -92,30 +92,6 @@ HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS = \
|
||||
--root=/ \
|
||||
--single-version-externally-managed
|
||||
|
||||
# Make sure python _sysconfigdata*.py files only reference the current
|
||||
# per-package directory.
|
||||
#
|
||||
# Can't use $(foreach d, $(HOST_DIR)/lib/python* $(STAGING_DIR)/usr/lib/python*, ...)
|
||||
# because those directories may be created in the same recipe this macro will
|
||||
# be expanded in.
|
||||
# Additionally, either or both may be missing, which would make find whine and
|
||||
# fail.
|
||||
# So we just use HOST_DIR as a starting point, and filter on the two directories
|
||||
# of interest.
|
||||
ifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)
|
||||
define PKG_PYTHON_FIXUP_SYSCONFIGDATA
|
||||
$(Q)find $(HOST_DIR) \
|
||||
\( -path '$(HOST_DIR)/lib/python*' \
|
||||
-o -path '$(STAGING_DIR)/usr/lib/python*' \
|
||||
\) \
|
||||
\( \( -name "_sysconfigdata*.pyc" -delete \) \
|
||||
-o \( -name "_sysconfigdata*.py" -print0 \) \
|
||||
\) \
|
||||
| xargs -0 --no-run-if-empty \
|
||||
$(SED) 's:$(PER_PACKAGE_DIR)/[^/]\+/:$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/:g'
|
||||
endef
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# inner-python-package -- defines how the configuration, compilation
|
||||
# and installation of a Python package should be done, implements a
|
||||
@ -260,8 +236,6 @@ $(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/bin/$$($(2)_NEEDS_HOST_PYTHON)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(2)_PRE_CONFIGURE_HOOKS += PKG_PYTHON_FIXUP_SYSCONFIGDATA
|
||||
|
||||
#
|
||||
# Build step. Only define it if not already defined by the package .mk
|
||||
# file.
|
||||
|
Loading…
Reference in New Issue
Block a user