Message ID | c29e6b35-9b3c-009b-3ff5-25d57725da8b@duagon.com |
---|---|
State | New |
Headers | show |
Series | [v2] python3: Remove DEBUG_PREFIX_MAP completely from sysconfigdata | expand |
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 --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' \
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(-)