package/pkg-python: fix PKG_PYTHON_FIXUP_SYSCONFIGDATA
authorHerve Codina <herve.codina@bootlin.com>
Tue, 17 Aug 2021 08:39:15 +0000 (10:39 +0200)
committerYann E. MORIN <yann.morin.1998@free.fr>
Sat, 28 Aug 2021 14:43:30 +0000 (16:43 +0200)
Find used by PKG_PYTHON_FIXUP_SYSCONFIGDATA can fail if directories
are not present. This failure is silently ignored because find is
on the LHS of a pipe.

This commit fixes the find failure. HOST_DIR is used as the starting
point and the search is filtered on the expected directories.

This commit also adds -print0 and the $(Q) verbosity flag as minor
changes.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
[yann.morin.1998@free.fr:
  - split long line with the two -path options
  - move "| xargs ..." onto its own line
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
package/pkg-python.mk

index 59a48e5a873d2bea1d642545cf55ec1661014811..8b24aeb3b1dd2507b09e02908987293694aa7ddd 100644 (file)
@@ -92,11 +92,25 @@ 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
-       find $(HOST_DIR)/lib/python* $(STAGING_DIR)/usr/lib/python* \
-               -name "_sysconfigdata*.py" | xargs --no-run-if-empty \
-               $(SED) "s:$(PER_PACKAGE_DIR)/[^/]\+/:$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/:g"
+       $(Q)find $(HOST_DIR) \
+               \(    -path '$(HOST_DIR)/lib/python*' \
+                  -o -path '$(STAGING_DIR)/usr/lib/python*' \
+               \) \
+               -name "_sysconfigdata*.py" -print0 \
+       | xargs -0 --no-run-if-empty \
+               $(SED) 's:$(PER_PACKAGE_DIR)/[^/]\+/:$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/:g'
 endef
 endif