| Message ID | 20250421172915.1651803-2-raj.khem@gmail.com |
|---|---|
| State | Accepted, archived |
| Commit | ff73fa7ef7666a6dbe34f15515bc3ab6e574c5b0 |
| Headers | show |
| Series | [v3,1/2] glibc: Forward -ffile-prefix-map option to assembler flags | expand |
This patch seems to have caused some regression in packaging the source for some recipes. I don't have a lot of info yet, just finished bisecting. The issue I see is with "audiofile" recipe from meta-oe that I wanted to debug with master branch: with this patch the -src package is empty. Without it, it is populated fine. I guess there are other recipes also, but that's what I stumbled upon. Will try to look at it, but if you have any ideas, I'm all ears. But in any case, FYI. On 4/21/25 19:29, Khem Raj via lists.openembedded.org wrote: > -ffile-prefix map is more comprehensive when it comes to reproducible > builds and its superset of all prefix-mapping options in compilers > > This makes is cleaner and workable across gcc and clang, clang does not > support -fcanon-prefix-map and it has to be explicitly omitted when using > clang. > > There are lambdas generated in templates by clang which still get the > absolute paths despite -fdebug-prefix-map, this helps with that as well. > > nasm is an outlier and we have fixed it by adding -fdebug-prefix-map option > luckily we do not pass DEBUG_PREFIX_MAP to nasm, in all recipes which use > nasm either pass -fdebug-prefix-map explicitly to nasm or they rewrite it > to use nasm flags syntax. > > We have discussed this in past [1] > > [1] https://patchwork.yoctoproject.org/project/oe-core/patch/20230428032030.2047920-1-raj.khem@gmail.com/#10281 > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > Cc: Jacob Kroon <jacob.kroon@gmail.com> > Cc: Martin Jansa <Martin.Jansa@gmail.com> > --- > v2: Drop using --ffile-prefix in go > v3: Fix copydebugsources to use --file-prefix-map instead of -fdebug-prefix-map > and few more places > > meta/classes-recipe/kernel-arch.bbclass | 6 ++---- > meta/conf/bitbake.conf | 14 +++++--------- > meta/lib/oe/package.py | 2 +- > meta/recipes-devtools/gcc/libgfortran.inc | 2 +- > .../python/python3-maturin_1.8.3.bb | 2 +- > meta/recipes-devtools/rust/cargo_1.85.1.bb | 2 +- > 6 files changed, 11 insertions(+), 17 deletions(-) > > diff --git a/meta/classes-recipe/kernel-arch.bbclass b/meta/classes-recipe/kernel-arch.bbclass > index 968551267f9..7aea9cd3e8e 100644 > --- a/meta/classes-recipe/kernel-arch.bbclass > +++ b/meta/classes-recipe/kernel-arch.bbclass > @@ -73,10 +73,8 @@ HOST_OBJCOPY_KERNEL_ARCH ?= "${TARGET_OBJCOPY_KERNEL_ARCH}" > > KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} \ > -fuse-ld=bfd ${DEBUG_PREFIX_MAP} \ > - -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > - -fmacro-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > - -fdebug-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > - -fmacro-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > + -ffile-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > + -ffile-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > " > KERNEL_LD = "${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}" > KERNEL_AR = "${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}" > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > index 8f90026f7c2..b4e1964f77d 100644 > --- a/meta/conf/bitbake.conf > +++ b/meta/conf/bitbake.conf > @@ -652,15 +652,11 @@ EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} " > ################################################################## > TARGET_DBGSRC_DIR ?= "/usr/src/debug/${PN}/${PV}" > # Beware: applied last to first > -DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \ > - -fmacro-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > - -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > - -fmacro-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > - -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > - -fdebug-prefix-map=${STAGING_DIR_HOST}= \ > - -fmacro-prefix-map=${STAGING_DIR_HOST}= \ > - -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \ > - -fmacro-prefix-map=${STAGING_DIR_NATIVE}= \ > +DEBUG_PREFIX_MAP ?= "\ > + -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > + -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > + -ffile-prefix-map=${STAGING_DIR_HOST}= \ > + -ffile-prefix-map=${STAGING_DIR_NATIVE}= \ > " > DEBUG_LEVELFLAG ?= "-g" > > diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py > index 0db14f21642..0bcc04ea54a 100644 > --- a/meta/lib/oe/package.py > +++ b/meta/lib/oe/package.py > @@ -991,7 +991,7 @@ def copydebugsources(debugsrcdir, sources, d): > > prefixmap = {} > for flag in cflags.split(): > - if not flag.startswith("-fdebug-prefix-map"): > + if not flag.startswith("-ffile-prefix-map"): > continue > if "recipe-sysroot" in flag: > continue > diff --git a/meta/recipes-devtools/gcc/libgfortran.inc b/meta/recipes-devtools/gcc/libgfortran.inc > index 4560421ed1f..fa6aecaaa30 100644 > --- a/meta/recipes-devtools/gcc/libgfortran.inc > +++ b/meta/recipes-devtools/gcc/libgfortran.inc > @@ -8,7 +8,7 @@ EXTRA_OECONF_PATHS = "\ > # An arm hard float target like raspberrypi4 won't build > # as CFLAGS don't make it to the fortran compiler otherwise > # (the configure script sets FC to $GFORTRAN unconditionally) > -export GFORTRAN = "${FC} -fcanon-prefix-map -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" > +export GFORTRAN = "${FC} -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" > > do_configure () { > for target in libbacktrace libgfortran > diff --git a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > index 3ec4d0c103b..08975e177f0 100644 > --- a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > +++ b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > @@ -10,7 +10,7 @@ SRC_URI[sha256sum] = "304762f86fd53a8031b1bf006d12572a2aa0a5235485031113195cc015 > > S = "${WORKDIR}/maturin-${PV}" > > -CFLAGS += "-fdebug-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" > +CFLAGS += "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" > > DEPENDS += "\ > python3-setuptools-rust-native \ > diff --git a/meta/recipes-devtools/rust/cargo_1.85.1.bb b/meta/recipes-devtools/rust/cargo_1.85.1.bb > index db18ecfda9a..150c2d2b801 100644 > --- a/meta/recipes-devtools/rust/cargo_1.85.1.bb > +++ b/meta/recipes-devtools/rust/cargo_1.85.1.bb > @@ -19,7 +19,7 @@ CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor" > > inherit cargo pkgconfig > > -DEBUG_PREFIX_MAP += "-fdebug-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" > +DEBUG_PREFIX_MAP += "-ffile-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" > > do_cargo_setup_snapshot () { > ${UNPACKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#215180): https://lists.openembedded.org/g/openembedded-core/message/215180 > Mute This Topic: https://lists.openembedded.org/mt/112379635/6084445 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [skandigraun@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
On Tue, Nov 18, 2025 at 10:12 AM Gyorgy Sarvari <skandigraun@gmail.com> wrote: > This patch seems to have caused some regression in packaging the source > for some recipes. > I don't have a lot of info yet, just finished bisecting. > > The issue I see is with "audiofile" recipe from meta-oe that I wanted to > debug with master branch: with this patch the -src package is empty. > Without it, it is populated fine. I guess there are other recipes also, > but that's what I stumbled upon. > It's an old package, I wonder if it has a mind of its own when it comes to compiler flags. I don't see anything in the recipe metadata that leads towards the issue. I wonder if this recipe can be dropped going forward. > > Will try to look at it, but if you have any ideas, I'm all ears. But in > any case, FYI. > > On 4/21/25 19:29, Khem Raj via lists.openembedded.org wrote: > > -ffile-prefix map is more comprehensive when it comes to reproducible > > builds and its superset of all prefix-mapping options in compilers > > > > This makes is cleaner and workable across gcc and clang, clang does not > > support -fcanon-prefix-map and it has to be explicitly omitted when using > > clang. > > > > There are lambdas generated in templates by clang which still get the > > absolute paths despite -fdebug-prefix-map, this helps with that as well. > > > > nasm is an outlier and we have fixed it by adding -fdebug-prefix-map > option > > luckily we do not pass DEBUG_PREFIX_MAP to nasm, in all recipes which use > > nasm either pass -fdebug-prefix-map explicitly to nasm or they rewrite it > > to use nasm flags syntax. > > > > We have discussed this in past [1] > > > > [1] > https://patchwork.yoctoproject.org/project/oe-core/patch/20230428032030.2047920-1-raj.khem@gmail.com/#10281 > > > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > Cc: Jacob Kroon <jacob.kroon@gmail.com> > > Cc: Martin Jansa <Martin.Jansa@gmail.com> > > --- > > v2: Drop using --ffile-prefix in go > > v3: Fix copydebugsources to use --file-prefix-map instead of > -fdebug-prefix-map > > and few more places > > > > meta/classes-recipe/kernel-arch.bbclass | 6 ++---- > > meta/conf/bitbake.conf | 14 +++++--------- > > meta/lib/oe/package.py | 2 +- > > meta/recipes-devtools/gcc/libgfortran.inc | 2 +- > > .../python/python3-maturin_1.8.3.bb | 2 +- > > meta/recipes-devtools/rust/cargo_1.85.1.bb | 2 +- > > 6 files changed, 11 insertions(+), 17 deletions(-) > > > > diff --git a/meta/classes-recipe/kernel-arch.bbclass > b/meta/classes-recipe/kernel-arch.bbclass > > index 968551267f9..7aea9cd3e8e 100644 > > --- a/meta/classes-recipe/kernel-arch.bbclass > > +++ b/meta/classes-recipe/kernel-arch.bbclass > > @@ -73,10 +73,8 @@ HOST_OBJCOPY_KERNEL_ARCH ?= > "${TARGET_OBJCOPY_KERNEL_ARCH}" > > > > KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} \ > > -fuse-ld=bfd ${DEBUG_PREFIX_MAP} \ > > - -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > > - -fmacro-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > > - -fdebug-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > > - -fmacro-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > > + -ffile-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > > + -ffile-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > > " > > KERNEL_LD = "${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}" > > KERNEL_AR = "${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}" > > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > > index 8f90026f7c2..b4e1964f77d 100644 > > --- a/meta/conf/bitbake.conf > > +++ b/meta/conf/bitbake.conf > > @@ -652,15 +652,11 @@ EXTRA_OEMAKE:prepend:task-install = > "${PARALLEL_MAKEINST} " > > ################################################################## > > TARGET_DBGSRC_DIR ?= "/usr/src/debug/${PN}/${PV}" > > # Beware: applied last to first > > -DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \ > > - -fmacro-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > > - -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > > - -fmacro-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > > - -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > > - -fdebug-prefix-map=${STAGING_DIR_HOST}= \ > > - -fmacro-prefix-map=${STAGING_DIR_HOST}= \ > > - -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \ > > - -fmacro-prefix-map=${STAGING_DIR_NATIVE}= \ > > +DEBUG_PREFIX_MAP ?= "\ > > + -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > > + -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > > + -ffile-prefix-map=${STAGING_DIR_HOST}= \ > > + -ffile-prefix-map=${STAGING_DIR_NATIVE}= \ > > " > > DEBUG_LEVELFLAG ?= "-g" > > > > diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py > > index 0db14f21642..0bcc04ea54a 100644 > > --- a/meta/lib/oe/package.py > > +++ b/meta/lib/oe/package.py > > @@ -991,7 +991,7 @@ def copydebugsources(debugsrcdir, sources, d): > > > > prefixmap = {} > > for flag in cflags.split(): > > - if not flag.startswith("-fdebug-prefix-map"): > > + if not flag.startswith("-ffile-prefix-map"): > > continue > > if "recipe-sysroot" in flag: > > continue > > diff --git a/meta/recipes-devtools/gcc/libgfortran.inc > b/meta/recipes-devtools/gcc/libgfortran.inc > > index 4560421ed1f..fa6aecaaa30 100644 > > --- a/meta/recipes-devtools/gcc/libgfortran.inc > > +++ b/meta/recipes-devtools/gcc/libgfortran.inc > > @@ -8,7 +8,7 @@ EXTRA_OECONF_PATHS = "\ > > # An arm hard float target like raspberrypi4 won't build > > # as CFLAGS don't make it to the fortran compiler otherwise > > # (the configure script sets FC to $GFORTRAN unconditionally) > > -export GFORTRAN = "${FC} -fcanon-prefix-map > -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} > -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" > > +export GFORTRAN = "${FC} -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} > -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" > > > > do_configure () { > > for target in libbacktrace libgfortran > > diff --git a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > > index 3ec4d0c103b..08975e177f0 100644 > > --- a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > > +++ b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > > @@ -10,7 +10,7 @@ SRC_URI[sha256sum] = > "304762f86fd53a8031b1bf006d12572a2aa0a5235485031113195cc015 > > > > S = "${WORKDIR}/maturin-${PV}" > > > > -CFLAGS += > "-fdebug-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" > > +CFLAGS += > "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" > > > > DEPENDS += "\ > > python3-setuptools-rust-native \ > > diff --git a/meta/recipes-devtools/rust/cargo_1.85.1.bb > b/meta/recipes-devtools/rust/cargo_1.85.1.bb > > index db18ecfda9a..150c2d2b801 100644 > > --- a/meta/recipes-devtools/rust/cargo_1.85.1.bb > > +++ b/meta/recipes-devtools/rust/cargo_1.85.1.bb > > @@ -19,7 +19,7 @@ CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor" > > > > inherit cargo pkgconfig > > > > -DEBUG_PREFIX_MAP += > "-fdebug-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" > > +DEBUG_PREFIX_MAP += > "-ffile-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" > > > > do_cargo_setup_snapshot () { > > ${UNPACKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh > --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#215180): > https://lists.openembedded.org/g/openembedded-core/message/215180 > > Mute This Topic: https://lists.openembedded.org/mt/112379635/6084445 > > Group Owner: openembedded-core+owner@lists.openembedded.org > > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ > skandigraun@gmail.com] > > -=-=-=-=-=-=-=-=-=-=-=- > > > >
On 11/18/25 21:18, Khem Raj wrote: > > > On Tue, Nov 18, 2025 at 10:12 AM Gyorgy Sarvari > <skandigraun@gmail.com> wrote: > > This patch seems to have caused some regression in packaging the > source > for some recipes. > I don't have a lot of info yet, just finished bisecting. > > The issue I see is with "audiofile" recipe from meta-oe that I > wanted to > debug with master branch: with this patch the -src package is empty. > Without it, it is populated fine. I guess there are other recipes > also, > but that's what I stumbled upon. > > > It's an old package, I wonder if it has a mind of its own when it > comes to compiler > flags. I don't see anything in the recipe metadata that leads towards > the issue. > I wonder if this recipe can be dropped going forward. I'm not sure if it's about the age[1], but it might be about being overly smart when it comes to compilation... as another example I noticed that sqlite3 has the same issue (which can be also opinionated about things): using this patch it generates an empty src package. I see that the debugsources.list file contains some funky paths (with added "sources" folder in the middle of the path), which is used to copy these files. But most likely I will go offline for the day, and will check back on it tomorrow, unless someone will be faster. [1]: unrelated funny thing: audiofile seems to work fine in all branches (at the least ptests), except for Kirkstone, that's what started this... > > > > Will try to look at it, but if you have any ideas, I'm all ears. > But in > any case, FYI. > > On 4/21/25 19:29, Khem Raj via lists.openembedded.org > <http://lists.openembedded.org> wrote: > > -ffile-prefix map is more comprehensive when it comes to > reproducible > > builds and its superset of all prefix-mapping options in compilers > > > > This makes is cleaner and workable across gcc and clang, clang > does not > > support -fcanon-prefix-map and it has to be explicitly omitted > when using > > clang. > > > > There are lambdas generated in templates by clang which still > get the > > absolute paths despite -fdebug-prefix-map, this helps with that > as well. > > > > nasm is an outlier and we have fixed it by adding > -fdebug-prefix-map option > > luckily we do not pass DEBUG_PREFIX_MAP to nasm, in all recipes > which use > > nasm either pass -fdebug-prefix-map explicitly to nasm or they > rewrite it > > to use nasm flags syntax. > > > > We have discussed this in past [1] > > > > [1] > https://patchwork.yoctoproject.org/project/oe-core/patch/20230428032030.2047920-1-raj.khem@gmail.com/#10281 > > > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > Cc: Jacob Kroon <jacob.kroon@gmail.com> > > Cc: Martin Jansa <Martin.Jansa@gmail.com> > > --- > > v2: Drop using --ffile-prefix in go > > v3: Fix copydebugsources to use --file-prefix-map instead of > -fdebug-prefix-map > > and few more places > > > > meta/classes-recipe/kernel-arch.bbclass | 6 ++---- > > meta/conf/bitbake.conf | 14 > +++++--------- > > meta/lib/oe/package.py | 2 +- > > meta/recipes-devtools/gcc/libgfortran.inc | 2 +- > > .../python/python3-maturin_1.8.3.bb > <http://python3-maturin_1.8.3.bb> | 2 +- > > meta/recipes-devtools/rust/cargo_1.85.1.bb > <http://cargo_1.85.1.bb> | 2 +- > > 6 files changed, 11 insertions(+), 17 deletions(-) > > > > diff --git a/meta/classes-recipe/kernel-arch.bbclass > b/meta/classes-recipe/kernel-arch.bbclass > > index 968551267f9..7aea9cd3e8e 100644 > > --- a/meta/classes-recipe/kernel-arch.bbclass > > +++ b/meta/classes-recipe/kernel-arch.bbclass > > @@ -73,10 +73,8 @@ HOST_OBJCOPY_KERNEL_ARCH ?= > "${TARGET_OBJCOPY_KERNEL_ARCH}" > > > > KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} \ > > -fuse-ld=bfd ${DEBUG_PREFIX_MAP} \ > > - -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > > - -fmacro-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > > - -fdebug-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > > - -fmacro-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > > + -ffile-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ > > + -ffile-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ > > " > > KERNEL_LD = "${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}" > > KERNEL_AR = "${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}" > > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > > index 8f90026f7c2..b4e1964f77d 100644 > > --- a/meta/conf/bitbake.conf > > +++ b/meta/conf/bitbake.conf > > @@ -652,15 +652,11 @@ EXTRA_OEMAKE:prepend:task-install = > "${PARALLEL_MAKEINST} " > > ################################################################## > > TARGET_DBGSRC_DIR ?= "/usr/src/debug/${PN}/${PV}" > > # Beware: applied last to first > > -DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \ > > - -fmacro-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > > - -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > > - -fmacro-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > > - -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > > - -fdebug-prefix-map=${STAGING_DIR_HOST}= \ > > - -fmacro-prefix-map=${STAGING_DIR_HOST}= \ > > - -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \ > > - -fmacro-prefix-map=${STAGING_DIR_NATIVE}= \ > > +DEBUG_PREFIX_MAP ?= "\ > > + -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ > > + -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ > > + -ffile-prefix-map=${STAGING_DIR_HOST}= \ > > + -ffile-prefix-map=${STAGING_DIR_NATIVE}= \ > > " > > DEBUG_LEVELFLAG ?= "-g" > > > > diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py > > index 0db14f21642..0bcc04ea54a 100644 > > --- a/meta/lib/oe/package.py > > +++ b/meta/lib/oe/package.py > > @@ -991,7 +991,7 @@ def copydebugsources(debugsrcdir, sources, d): > > > > prefixmap = {} > > for flag in cflags.split(): > > - if not flag.startswith("-fdebug-prefix-map"): > > + if not flag.startswith("-ffile-prefix-map"): > > continue > > if "recipe-sysroot" in flag: > > continue > > diff --git a/meta/recipes-devtools/gcc/libgfortran.inc > b/meta/recipes-devtools/gcc/libgfortran.inc > > index 4560421ed1f..fa6aecaaa30 100644 > > --- a/meta/recipes-devtools/gcc/libgfortran.inc > > +++ b/meta/recipes-devtools/gcc/libgfortran.inc > > @@ -8,7 +8,7 @@ EXTRA_OECONF_PATHS = "\ > > # An arm hard float target like raspberrypi4 won't build > > # as CFLAGS don't make it to the fortran compiler otherwise > > # (the configure script sets FC to $GFORTRAN unconditionally) > > -export GFORTRAN = "${FC} -fcanon-prefix-map > -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} > -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" > > +export GFORTRAN = "${FC} > -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} > -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" > > > > do_configure () { > > for target in libbacktrace libgfortran > > diff --git > a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > <http://python3-maturin_1.8.3.bb> > b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > <http://python3-maturin_1.8.3.bb> > > index 3ec4d0c103b..08975e177f0 100644 > > --- a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > <http://python3-maturin_1.8.3.bb> > > +++ b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb > <http://python3-maturin_1.8.3.bb> > > @@ -10,7 +10,7 @@ SRC_URI[sha256sum] = > "304762f86fd53a8031b1bf006d12572a2aa0a5235485031113195cc015 > > > > S = "${WORKDIR}/maturin-${PV}" > > > > -CFLAGS += > "-fdebug-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" > > +CFLAGS += > "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" > > > > DEPENDS += "\ > > python3-setuptools-rust-native \ > > diff --git a/meta/recipes-devtools/rust/cargo_1.85.1.bb > <http://cargo_1.85.1.bb> > b/meta/recipes-devtools/rust/cargo_1.85.1.bb <http://cargo_1.85.1.bb> > > index db18ecfda9a..150c2d2b801 100644 > > --- a/meta/recipes-devtools/rust/cargo_1.85.1.bb > <http://cargo_1.85.1.bb> > > +++ b/meta/recipes-devtools/rust/cargo_1.85.1.bb > <http://cargo_1.85.1.bb> > > @@ -19,7 +19,7 @@ CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor" > > > > inherit cargo pkgconfig > > > > -DEBUG_PREFIX_MAP += > "-fdebug-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" > > +DEBUG_PREFIX_MAP += > "-ffile-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" > > > > do_cargo_setup_snapshot () { > > > ${UNPACKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh > --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#215180): > https://lists.openembedded.org/g/openembedded-core/message/215180 > > Mute This Topic: https://lists.openembedded.org/mt/112379635/6084445 > > Group Owner: openembedded-core+owner@lists.openembedded.org > <mailto:openembedded-core%2Bowner@lists.openembedded.org> > > Unsubscribe: > https://lists.openembedded.org/g/openembedded-core/unsub > [skandigraun@gmail.com] > > -=-=-=-=-=-=-=-=-=-=-=- > > >
diff --git a/meta/classes-recipe/kernel-arch.bbclass b/meta/classes-recipe/kernel-arch.bbclass index 968551267f9..7aea9cd3e8e 100644 --- a/meta/classes-recipe/kernel-arch.bbclass +++ b/meta/classes-recipe/kernel-arch.bbclass @@ -73,10 +73,8 @@ HOST_OBJCOPY_KERNEL_ARCH ?= "${TARGET_OBJCOPY_KERNEL_ARCH}" KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} \ -fuse-ld=bfd ${DEBUG_PREFIX_MAP} \ - -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ - -fmacro-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ - -fdebug-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ - -fmacro-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ + -ffile-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \ + -ffile-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \ " KERNEL_LD = "${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}" KERNEL_AR = "${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}" diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 8f90026f7c2..b4e1964f77d 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -652,15 +652,11 @@ EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} " ################################################################## TARGET_DBGSRC_DIR ?= "/usr/src/debug/${PN}/${PV}" # Beware: applied last to first -DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \ - -fmacro-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ - -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ - -fmacro-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ - -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ - -fdebug-prefix-map=${STAGING_DIR_HOST}= \ - -fmacro-prefix-map=${STAGING_DIR_HOST}= \ - -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \ - -fmacro-prefix-map=${STAGING_DIR_NATIVE}= \ +DEBUG_PREFIX_MAP ?= "\ + -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} \ + -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} \ + -ffile-prefix-map=${STAGING_DIR_HOST}= \ + -ffile-prefix-map=${STAGING_DIR_NATIVE}= \ " DEBUG_LEVELFLAG ?= "-g" diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py index 0db14f21642..0bcc04ea54a 100644 --- a/meta/lib/oe/package.py +++ b/meta/lib/oe/package.py @@ -991,7 +991,7 @@ def copydebugsources(debugsrcdir, sources, d): prefixmap = {} for flag in cflags.split(): - if not flag.startswith("-fdebug-prefix-map"): + if not flag.startswith("-ffile-prefix-map"): continue if "recipe-sysroot" in flag: continue diff --git a/meta/recipes-devtools/gcc/libgfortran.inc b/meta/recipes-devtools/gcc/libgfortran.inc index 4560421ed1f..fa6aecaaa30 100644 --- a/meta/recipes-devtools/gcc/libgfortran.inc +++ b/meta/recipes-devtools/gcc/libgfortran.inc @@ -8,7 +8,7 @@ EXTRA_OECONF_PATHS = "\ # An arm hard float target like raspberrypi4 won't build # as CFLAGS don't make it to the fortran compiler otherwise # (the configure script sets FC to $GFORTRAN unconditionally) -export GFORTRAN = "${FC} -fcanon-prefix-map -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" +export GFORTRAN = "${FC} -ffile-prefix-map=${S}=${TARGET_DBGSRC_DIR} -ffile-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches" do_configure () { for target in libbacktrace libgfortran diff --git a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb index 3ec4d0c103b..08975e177f0 100644 --- a/meta/recipes-devtools/python/python3-maturin_1.8.3.bb +++ b/meta/recipes-devtools/python/python3-maturin_1.8.3.bb @@ -10,7 +10,7 @@ SRC_URI[sha256sum] = "304762f86fd53a8031b1bf006d12572a2aa0a5235485031113195cc015 S = "${WORKDIR}/maturin-${PV}" -CFLAGS += "-fdebug-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" +CFLAGS += "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" DEPENDS += "\ python3-setuptools-rust-native \ diff --git a/meta/recipes-devtools/rust/cargo_1.85.1.bb b/meta/recipes-devtools/rust/cargo_1.85.1.bb index db18ecfda9a..150c2d2b801 100644 --- a/meta/recipes-devtools/rust/cargo_1.85.1.bb +++ b/meta/recipes-devtools/rust/cargo_1.85.1.bb @@ -19,7 +19,7 @@ CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor" inherit cargo pkgconfig -DEBUG_PREFIX_MAP += "-fdebug-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" +DEBUG_PREFIX_MAP += "-ffile-prefix-map=${RUSTSRC}/vendor=${TARGET_DBGSRC_DIR}" do_cargo_setup_snapshot () { ${UNPACKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
-ffile-prefix map is more comprehensive when it comes to reproducible builds and its superset of all prefix-mapping options in compilers This makes is cleaner and workable across gcc and clang, clang does not support -fcanon-prefix-map and it has to be explicitly omitted when using clang. There are lambdas generated in templates by clang which still get the absolute paths despite -fdebug-prefix-map, this helps with that as well. nasm is an outlier and we have fixed it by adding -fdebug-prefix-map option luckily we do not pass DEBUG_PREFIX_MAP to nasm, in all recipes which use nasm either pass -fdebug-prefix-map explicitly to nasm or they rewrite it to use nasm flags syntax. We have discussed this in past [1] [1] https://patchwork.yoctoproject.org/project/oe-core/patch/20230428032030.2047920-1-raj.khem@gmail.com/#10281 Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Jacob Kroon <jacob.kroon@gmail.com> Cc: Martin Jansa <Martin.Jansa@gmail.com> --- v2: Drop using --ffile-prefix in go v3: Fix copydebugsources to use --file-prefix-map instead of -fdebug-prefix-map and few more places meta/classes-recipe/kernel-arch.bbclass | 6 ++---- meta/conf/bitbake.conf | 14 +++++--------- meta/lib/oe/package.py | 2 +- meta/recipes-devtools/gcc/libgfortran.inc | 2 +- .../python/python3-maturin_1.8.3.bb | 2 +- meta/recipes-devtools/rust/cargo_1.85.1.bb | 2 +- 6 files changed, 11 insertions(+), 17 deletions(-)