[meta-python][PATCH] python3-pandas: fix stripping of build paths from generated sources

Khem Raj <[email protected]>
Newsgroups org.openembedded.lists.openembedded-devel
Message-ID <[email protected]>
do_install failed because the glob in do_install:prepend did not match
anything, leaving sed with a literal path to a non-existent file:

  sed: can't read .../build/pandas/_libs/sparse.cpython-*/pandas/_libs/sparse.pyx.c: No such file or directory

meson names the per-target private directory <target>.so.p and puts the
generated sources directly in it, so the actual file is

  ${B}/pandas/_libs/sparse.cpython-314-x86_64-linux-gnu.so.p/sparse.pyx.c

The do_compile:append hunk was meant to do the same job for every
generated source, but it searched for ${WORKDIR}/pandas-${PV}, which no
longer exists now that sources are unpacked under ${WORKDIR}/sources, so
it silently matched nothing.

Fix the remaining pass to look for ${S} and drop the redundant (and
fragile) per-file sed in do_install:prepend. Also parenthesise the -o
expression so the name filter applies to both alternatives, and use
-print0/-0.

Signed-off-by: Khem Raj <[email protected]>
---
 .../recipes-devtools/python/python3-pandas_3.0.5.bb   | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/meta-python/recipes-devtools/python/python3-pandas_3.0.5.bb b/meta-python/recipes-devtools/python/python3-pandas_3.0.5.bb
index a9bae34f72..c159113a21 100644
--- a/meta-python/recipes-devtools/python/python3-pandas_3.0.5.bb
+++ b/meta-python/recipes-devtools/python/python3-pandas_3.0.5.bb
@@ -35,13 +35,10 @@ PYTHONPATH:prepend:class-target = "${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}:"
 export PYTHONPATH

 do_compile:append() {
-    # Fix absolute paths in generated files
-    find ${B} -name "*.c" -o -name "*.cpp" | xargs -r \
-        sed -i 's|${WORKDIR}/pandas-${PV}/|${TARGET_DBGSRC_DIR}/|g'
-}
-
-do_install:prepend() {
-	sed -i -e 's;${S};;g' ${B}/pandas/_libs/sparse.cpython-*/pandas/_libs/sparse.pyx.c
+    # Cython embeds the path of the .pyx it was generated from into the
+    # generated C sources, which are shipped in the -dbg package
+    find ${B} \( -name "*.c" -o -name "*.cpp" \) -print0 | xargs -0 -r \
+        sed -i 's|${S}/|${TARGET_DBGSRC_DIR}/|g'
 }

 EXTRA_OEMESON:append:class-target = " -Dnumpy_inc_dir=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/numpy/_core/include "
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.