diff mbox series

[v2] python3: Remove DEBUG_PREFIX_MAP completely from sysconfigdata

Message ID c29e6b35-9b3c-009b-3ff5-25d57725da8b@duagon.com
State New
Headers show
Series [v2] python3: Remove DEBUG_PREFIX_MAP completely from sysconfigdata | expand

Commit Message

Jorge Sanjuan Garcia March 5, 2025, 2:47 p.m. UTC
Paths in DEBUG_PREFIX_MAP are not being removed from sysconfigdata correctly.

The contents of DEBUG_PREFIX_MAP is typically a set of flags defined as
space separeted values. However, the sysconfigdata build artifact contains
those as line separated values.

Eg of DEBUG_PREFIX_MAP:
```
DEBUG_PREFIX_MAP="
         -fcanon-prefix-map  \
         -fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2 \
         -fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  \
         -fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/build=/usr/src/debug/python3/3.13.2 \
         ... \
"
```

From sysconfigdata artifact:
```
'CFLAGS': '-fno-strict-overflow '
           '-Wsign-compare '
           '-DNDEBUG '
           '-g '
           '-O3 '
           '-Wall '
           '-O2 '
           '-g '
           '-fcanon-prefix-map  '
           '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
           '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
           '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/build=/usr/src/debug/python3/3.13.2  '
           '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/build=/usr/src/debug/python3/3.13.2  '
           '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot=  '
           '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot=  '
           '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot-native=  '
           '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot-native=  '
           '-pipe  '
           ...
```

Create regular expresion for sed that would replace every entry from
DEBUG_PREFIX_MAP to remove build paths.

Also, avoid having previous sed expressions that may partially replace
values from DEBUG_PREFIX_MAP with `/build/path/unavailable/`, which will
make the removal of all DEBUG_PREFIX_MAP entries fail.

Before applying this patch:
```
'CFLAGS': '-fno-strict-overflow '
            '-Wsign-compare '
            '-DNDEBUG '
            '-g '
            '-O3 '
            '-Wall '
            '-O2 '
            '-g '
            '-fcanon-prefix-map  '
            '-fmacro-prefix-map=/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
            '-fdebug-prefix-map=/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
            '-fmacro-prefix-map=/build/path/unavailable/=/usr/src/debug/python3/3.13.2  '
            '-fdebug-prefix-map=/build/path/unavailable/=/usr/src/debug/python3/3.13.2  '
            '-fdebug-prefix-map==  '
            '-fmacro-prefix-map==  '
            '-fdebug-prefix-map==  '
            '-fmacro-prefix-map==  '
            '-pipe  '
            ...
```

After applying this patch:
```
'CFLAGS': '-fno-strict-overflow '
           '-Wsign-compare '
           '-DNDEBUG '
           '-g '
           '-O3 '
           '-Wall '
           '-O2 '
           '-g                   '
           '-pipe '
           ...
```

Signed-off-by: Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com>
---
  meta/recipes-devtools/python/python3_3.13.2.bb | 10 ++++------
  1 file changed, 4 insertions(+), 6 deletions(-)

Comments

Alexander Kanavin March 5, 2025, 3:46 p.m. UTC | #1
Thanks, lgtm.

Alex

On Wed, 5 Mar 2025 at 15:47, Jorge Sanjuan Garcia
<dev-jorge.sanjuangarcia@duagon.com> wrote:
>
> Paths in DEBUG_PREFIX_MAP are not being removed from sysconfigdata correctly.
>
> The contents of DEBUG_PREFIX_MAP is typically a set of flags defined as
> space separeted values. However, the sysconfigdata build artifact contains
> those as line separated values.
>
> Eg of DEBUG_PREFIX_MAP:
> ```
> DEBUG_PREFIX_MAP="
>          -fcanon-prefix-map  \
>          -fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2 \
>          -fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  \
>          -fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/build=/usr/src/debug/python3/3.13.2 \
>          ... \
> "
> ```
>
> From sysconfigdata artifact:
> ```
> 'CFLAGS': '-fno-strict-overflow '
>            '-Wsign-compare '
>            '-DNDEBUG '
>            '-g '
>            '-O3 '
>            '-Wall '
>            '-O2 '
>            '-g '
>            '-fcanon-prefix-map  '
>            '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
>            '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
>            '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/build=/usr/src/debug/python3/3.13.2  '
>            '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/build=/usr/src/debug/python3/3.13.2  '
>            '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot=  '
>            '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot=  '
>            '-fdebug-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot-native=  '
>            '-fmacro-prefix-map=/build/tmp/work/core2-64-oe-linux/python3/3.13.2/recipe-sysroot-native=  '
>            '-pipe  '
>            ...
> ```
>
> Create regular expresion for sed that would replace every entry from
> DEBUG_PREFIX_MAP to remove build paths.
>
> Also, avoid having previous sed expressions that may partially replace
> values from DEBUG_PREFIX_MAP with `/build/path/unavailable/`, which will
> make the removal of all DEBUG_PREFIX_MAP entries fail.
>
> Before applying this patch:
> ```
> 'CFLAGS': '-fno-strict-overflow '
>             '-Wsign-compare '
>             '-DNDEBUG '
>             '-g '
>             '-O3 '
>             '-Wall '
>             '-O2 '
>             '-g '
>             '-fcanon-prefix-map  '
>             '-fmacro-prefix-map=/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
>             '-fdebug-prefix-map=/python3/3.13.2/Python-3.13.2=/usr/src/debug/python3/3.13.2  '
>             '-fmacro-prefix-map=/build/path/unavailable/=/usr/src/debug/python3/3.13.2  '
>             '-fdebug-prefix-map=/build/path/unavailable/=/usr/src/debug/python3/3.13.2  '
>             '-fdebug-prefix-map==  '
>             '-fmacro-prefix-map==  '
>             '-fdebug-prefix-map==  '
>             '-fmacro-prefix-map==  '
>             '-pipe  '
>             ...
> ```
>
> After applying this patch:
> ```
> 'CFLAGS': '-fno-strict-overflow '
>            '-Wsign-compare '
>            '-DNDEBUG '
>            '-g '
>            '-O3 '
>            '-Wall '
>            '-O2 '
>            '-g                   '
>            '-pipe '
>            ...
> ```
>
> Signed-off-by: Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com>
> ---
>   meta/recipes-devtools/python/python3_3.13.2.bb | 10 ++++------
>   1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/meta/recipes-devtools/python/python3_3.13.2.bb b/meta/recipes-devtools/python/python3_3.13.2.bb
> index 52fac76c00..e6922f74fa 100644
> --- a/meta/recipes-devtools/python/python3_3.13.2.bb
> +++ b/meta/recipes-devtools/python/python3_3.13.2.bb
> @@ -206,10 +206,6 @@ do_install:append:class-native() {
>           # tarballs and sysroot creation.
>           find ${D} -name *.pyc -delete
>
> -        # Nothing should be looking into ${B} for python3-native
> -        sed -i -e 's:${B}:/build/path/unavailable/:g' \
> -                ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile
> -
>           # disable the lookup in user's site-packages globally
>           sed -i 's#ENABLE_USER_SITE = None#ENABLE_USER_SITE = False#' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
>
> @@ -217,6 +213,7 @@ do_install:append:class-native() {
>           mv ${D}/${bindir}/${PN}/python*config ${D}/${bindir}/
>   }
>
> +
>   do_install:append() {
>           for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
>               python3 ${UNPACKDIR}/reformat_sysconfig.py $c
> @@ -231,7 +228,6 @@ do_install:append() {
>                   -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
>                   -e "s,^ 'INCLUDEPY'.*, 'INCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
>                   -e "s,^ 'CONFINCLUDEPY'.*, 'CONFINCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
> -                -e "s,${B},/build/path/unavailable/,g" \
>                   $sysconfigfile
>           cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
>
> @@ -290,11 +286,13 @@ SSTATE_HASHEQUIV_FILEMAP = " \
>       populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
>       "
>   PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
> +DEBUG_PREFIX_MAP_REGEX = "${@'\\|'.join(d.getVar('DEBUG_PREFIX_MAP').split())}"
>
>   py_package_preprocess () {
>           # Remove references to buildmachine paths in target Makefile and _sysconfigdata
>           sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
> -                -e 's|${DEBUG_PREFIX_MAP}||g' \
> +                -e 's,${DEBUG_PREFIX_MAP_REGEX},,g' \
> +                -e 's,${B},/build/path/unavailable/,g' \
>                   -e 's:${HOSTTOOLS_DIR}/::g' \
>                   -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
>                   -e 's:${RECIPE_SYSROOT}::g' \
> --
> 2.43.0
>
diff mbox series

Patch

diff --git a/meta/recipes-devtools/python/python3_3.13.2.bb b/meta/recipes-devtools/python/python3_3.13.2.bb
index 52fac76c00..e6922f74fa 100644
--- a/meta/recipes-devtools/python/python3_3.13.2.bb
+++ b/meta/recipes-devtools/python/python3_3.13.2.bb
@@ -206,10 +206,6 @@  do_install:append:class-native() {
          # tarballs and sysroot creation.
          find ${D} -name *.pyc -delete

-        # Nothing should be looking into ${B} for python3-native
-        sed -i -e 's:${B}:/build/path/unavailable/:g' \
-                ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile
-
          # disable the lookup in user's site-packages globally
          sed -i 's#ENABLE_USER_SITE = None#ENABLE_USER_SITE = False#' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py

@@ -217,6 +213,7 @@  do_install:append:class-native() {
          mv ${D}/${bindir}/${PN}/python*config ${D}/${bindir}/
  }

+
  do_install:append() {
          for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
              python3 ${UNPACKDIR}/reformat_sysconfig.py $c
@@ -231,7 +228,6 @@  do_install:append() {
                  -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
                  -e "s,^ 'INCLUDEPY'.*, 'INCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
                  -e "s,^ 'CONFINCLUDEPY'.*, 'CONFINCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
-                -e "s,${B},/build/path/unavailable/,g" \
                  $sysconfigfile
          cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py

@@ -290,11 +286,13 @@  SSTATE_HASHEQUIV_FILEMAP = " \
      populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
      "
  PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
+DEBUG_PREFIX_MAP_REGEX = "${@'\\|'.join(d.getVar('DEBUG_PREFIX_MAP').split())}"

  py_package_preprocess () {
          # Remove references to buildmachine paths in target Makefile and _sysconfigdata
          sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
-                -e 's|${DEBUG_PREFIX_MAP}||g' \
+                -e 's,${DEBUG_PREFIX_MAP_REGEX},,g' \
+                -e 's,${B},/build/path/unavailable/,g' \
                  -e 's:${HOSTTOOLS_DIR}/::g' \
                  -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
                  -e 's:${RECIPE_SYSROOT}::g' \