diff mbox series

cargo-c: fix debug symbols containing TMPDIR references

Message ID 20251008130137.2266449-1-Yash.Shinde@windriver.com
State New
Headers show
Series cargo-c: fix debug symbols containing TMPDIR references | expand

Commit Message

Yash Shinde Oct. 8, 2025, 1:01 p.m. UTC
From: Yash Shinde <Yash.Shinde@windriver.com>

When building cargo-c with DEBUG mode, QA checks fail due to
absolute paths from the build environment (TMPDIR) being embedded into
the debug symbols/binaries. This causes issues such as:

  ERROR: do_package_qa: File /usr/bin/.debug/cargo-capi contains reference to TMPDIR [buildpaths]
  ERROR: do_package_qa: File /usr/bin/.debug/cargo-cinstall contains reference to TMPDIR [buildpaths]
  ERROR: do_package_qa: File /usr/bin/.debug/cargo-cbuild contains reference to TMPDIR [buildpaths]
  ERROR: do_package_qa: File /usr/bin/.debug/cargo-ctest contains reference to TMPDIR [buildpaths]

To fix this, pass an additional -ffile-prefix-map option to DEBUG_PREFIX_MAP to
ensure that paths under `${CARGO_HOME}` are remapped to `${TARGET_DBGSRC_DIR}`.
This ensures debug info is reproducible and does not leak host-specific paths.

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
---
 meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb | 2 ++
 1 file changed, 2 insertions(+)

Comments

Frédéric Martinsons Oct. 8, 2025, 5:43 p.m. UTC | #1
Do you think it is cargo-c specific? Or all recipes which inherits cargo
class must have that?

Le mer. 8 oct. 2025, 15:01, Yash Shinde via lists.openembedded.org
<Yash.Shinde=windriver.com@lists.openembedded.org> a écrit :

> From: Yash Shinde <Yash.Shinde@windriver.com>
>
> When building cargo-c with DEBUG mode, QA checks fail due to
> absolute paths from the build environment (TMPDIR) being embedded into
> the debug symbols/binaries. This causes issues such as:
>
>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-capi contains reference
> to TMPDIR [buildpaths]
>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-cinstall contains
> reference to TMPDIR [buildpaths]
>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-cbuild contains
> reference to TMPDIR [buildpaths]
>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-ctest contains
> reference to TMPDIR [buildpaths]
>
> To fix this, pass an additional -ffile-prefix-map option to
> DEBUG_PREFIX_MAP to
> ensure that paths under `${CARGO_HOME}` are remapped to
> `${TARGET_DBGSRC_DIR}`.
> This ensures debug info is reproducible and does not leak host-specific
> paths.
>
> Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
> ---
>  meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
> b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
> index fd15f02da9..5ef68e13c2 100644
> --- a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
> +++ b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
> @@ -12,6 +12,8 @@ SRC_URI = "crate://crates.io/cargo-c/${PV};name=cargo-c
> <http://crates.io/cargo-c/$%7BPV%7D;name=cargo-c> \
>  SRC_URI[cargo-c.sha256sum] =
> "17d431789b050b0fcf678455dfd5ceb7e5b45cd806140f8fe03b16b995d6cbff"
>  S = "${CARGO_VENDORING_DIRECTORY}/cargo-c-${PV}"
>
> +DEBUG_PREFIX_MAP += "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}"
> +
>  inherit cargo cargo-update-recipe-crates pkgconfig
>
>  DEPENDS = "openssl curl"
> --
> 2.49.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#224581):
> https://lists.openembedded.org/g/openembedded-core/message/224581
> Mute This Topic: https://lists.openembedded.org/mt/115653303/6213388
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> frederic.martinsons@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Yash Shinde Oct. 9, 2025, 6:44 a.m. UTC | #2
On 08-10-2025 23:13, Frédéric Martinsons wrote:
> Do you think it is cargo-c specific? Or all recipes which inherits 
> cargo class must have that?
>
The error logs pointed out to cargo-c binaries only.

For cargo, DEBUG_PREFIX_MAP is already defined:
https://git.yoctoproject.org/poky/tree/meta/recipes-devtools/rust/cargo_1.90.0.bb#n22

This remaps the rust source path i.e $RUSTSRC.
However, cargo-c uses a separate source installation directory 
($CARGO_HOME) which isn't covered
by DEBUG_PREFIX_MAP.



Regards,
Yash
> Le mer. 8 oct. 2025, 15:01, Yash Shinde via lists.openembedded.org 
> <https://urldefense.com/v3/__http://lists.openembedded.org__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9Ca4-IUA$> 
> <Yash.Shinde=windriver.com@lists.openembedded.org> a écrit :
>
>     From: Yash Shinde <Yash.Shinde@windriver.com>
>
>     When building cargo-c with DEBUG mode, QA checks fail due to
>     absolute paths from the build environment (TMPDIR) being embedded into
>     the debug symbols/binaries. This causes issues such as:
>
>       ERROR: do_package_qa: File /usr/bin/.debug/cargo-capi contains
>     reference to TMPDIR [buildpaths]
>       ERROR: do_package_qa: File /usr/bin/.debug/cargo-cinstall
>     contains reference to TMPDIR [buildpaths]
>       ERROR: do_package_qa: File /usr/bin/.debug/cargo-cbuild contains
>     reference to TMPDIR [buildpaths]
>       ERROR: do_package_qa: File /usr/bin/.debug/cargo-ctest contains
>     reference to TMPDIR [buildpaths]
>
>     To fix this, pass an additional -ffile-prefix-map option to
>     DEBUG_PREFIX_MAP to
>     ensure that paths under `${CARGO_HOME}` are remapped to
>     `${TARGET_DBGSRC_DIR}`.
>     This ensures debug info is reproducible and does not leak
>     host-specific paths.
>
>     Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
>     ---
>      meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>     <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>     | 2 ++
>      1 file changed, 2 insertions(+)
>
>     diff --git
>     a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>     <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>     b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>     <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>     index fd15f02da9..5ef68e13c2 100644
>     --- a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>     <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>     +++ b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>     <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>     @@ -12,6 +12,8 @@ SRC_URI =
>     "crate://crates.io/cargo-c/${PV};name=cargo-c
>     <https://urldefense.com/v3/__http://crates.io/cargo-c/$*7BPV*7D;name=cargo-c__;JSU!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9-NilF0c$>
>     \
>      SRC_URI[cargo-c.sha256sum] =
>     "17d431789b050b0fcf678455dfd5ceb7e5b45cd806140f8fe03b16b995d6cbff"
>      S = "${CARGO_VENDORING_DIRECTORY}/cargo-c-${PV}"
>
>     +DEBUG_PREFIX_MAP +=
>     "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}"
>     +
>      inherit cargo cargo-update-recipe-crates pkgconfig
>
>      DEPENDS = "openssl curl"
>     -- 
>     2.49.0
>
>
>     -=-=-=-=-=-=-=-=-=-=-=-
>     Links: You receive all messages sent to this group.
>     View/Reply Online (#224581):
>     https://lists.openembedded.org/g/openembedded-core/message/224581
>     <https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/message/224581__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9Y5bg2LA$>
>     Mute This Topic:
>     https://lists.openembedded.org/mt/115653303/6213388
>     <https://urldefense.com/v3/__https://lists.openembedded.org/mt/115653303/6213388__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9IEGgQYE$>
>     Group Owner: openembedded-core+owner@lists.openembedded.org
>     <mailto:openembedded-core%2Bowner@lists.openembedded.org>
>     Unsubscribe:
>     https://lists.openembedded.org/g/openembedded-core/unsub
>     <https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/unsub__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9b7ysiMA$>
>     [frederic.martinsons@gmail.com]
>     -=-=-=-=-=-=-=-=-=-=-=-
>
Frédéric Martinsons Oct. 9, 2025, 10:03 a.m. UTC | #3
On Thu, 9 Oct 2025 at 08:45, Yash Shinde <Yash.Shinde@windriver.com> wrote:

>
> On 08-10-2025 23:13, Frédéric Martinsons wrote:
>
> Do you think it is cargo-c specific? Or all recipes which inherits cargo
> class must have that?
>
> The error logs pointed out to cargo-c binaries only.
> For cargo, DEBUG_PREFIX_MAP is already defined:
>
> https://git.yoctoproject.org/poky/tree/meta/recipes-devtools/rust/cargo_1.90.0.bb#n22
>
> This remaps the rust source path i.e $RUSTSRC.
> However, cargo-c uses a separate source installation directory
> ($CARGO_HOME) which isn't covered
> by DEBUG_PREFIX_MAP.
>
>
Thanks !


>
> Regards,
> Yash
>
> Le mer. 8 oct. 2025, 15:01, Yash Shinde via lists.openembedded.org
> <https://urldefense.com/v3/__http://lists.openembedded.org__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9Ca4-IUA$>
> <Yash.Shinde=windriver.com@lists.openembedded.org> a écrit :
>
>> From: Yash Shinde <Yash.Shinde@windriver.com>
>>
>> When building cargo-c with DEBUG mode, QA checks fail due to
>> absolute paths from the build environment (TMPDIR) being embedded into
>> the debug symbols/binaries. This causes issues such as:
>>
>>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-capi contains
>> reference to TMPDIR [buildpaths]
>>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-cinstall contains
>> reference to TMPDIR [buildpaths]
>>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-cbuild contains
>> reference to TMPDIR [buildpaths]
>>   ERROR: do_package_qa: File /usr/bin/.debug/cargo-ctest contains
>> reference to TMPDIR [buildpaths]
>>
>> To fix this, pass an additional -ffile-prefix-map option to
>> DEBUG_PREFIX_MAP to
>> ensure that paths under `${CARGO_HOME}` are remapped to
>> `${TARGET_DBGSRC_DIR}`.
>> This ensures debug info is reproducible and does not leak host-specific
>> paths.
>>
>> Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
>> ---
>>  meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>> <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>> | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>> <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>> b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>> <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>> index fd15f02da9..5ef68e13c2 100644
>> --- a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>> <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>> +++ b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
>> <https://urldefense.com/v3/__http://cargo-0.91.0.bb__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb90kr3UWQ$>
>> @@ -12,6 +12,8 @@ SRC_URI = "crate://crates.io/cargo-c/${PV};name=cargo-c
>> <https://urldefense.com/v3/__http://crates.io/cargo-c/$*7BPV*7D;name=cargo-c__;JSU!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9-NilF0c$>
>> \
>>  SRC_URI[cargo-c.sha256sum] =
>> "17d431789b050b0fcf678455dfd5ceb7e5b45cd806140f8fe03b16b995d6cbff"
>>  S = "${CARGO_VENDORING_DIRECTORY}/cargo-c-${PV}"
>>
>> +DEBUG_PREFIX_MAP +=
>> "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}"
>> +
>>  inherit cargo cargo-update-recipe-crates pkgconfig
>>
>>  DEPENDS = "openssl curl"
>> --
>> 2.49.0
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#224581):
>> https://lists.openembedded.org/g/openembedded-core/message/224581
>> <https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/message/224581__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9Y5bg2LA$>
>> Mute This Topic: https://lists.openembedded.org/mt/115653303/6213388
>> <https://urldefense.com/v3/__https://lists.openembedded.org/mt/115653303/6213388__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9IEGgQYE$>
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
>> <https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/unsub__;!!AjveYdw8EvQ!eT6NUyxobn9jkx3pHarcK-637_es2YI-QyHcS2uLhyDXsf2bIzqgfXyiGljcR3YtFoalO9cR6w0vcM-0RUYHKsb9b7ysiMA$>
>> [frederic.martinsons@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
>> --
> Regards,
> Yash Shinde
>
>
diff mbox series

Patch

diff --git a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
index fd15f02da9..5ef68e13c2 100644
--- a/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
+++ b/meta/recipes-devtools/rust/cargo-c_0.10.16+cargo-0.91.0.bb
@@ -12,6 +12,8 @@  SRC_URI = "crate://crates.io/cargo-c/${PV};name=cargo-c \
 SRC_URI[cargo-c.sha256sum] = "17d431789b050b0fcf678455dfd5ceb7e5b45cd806140f8fe03b16b995d6cbff"
 S = "${CARGO_VENDORING_DIRECTORY}/cargo-c-${PV}"
 
+DEBUG_PREFIX_MAP += "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}"
+
 inherit cargo cargo-update-recipe-crates pkgconfig
 
 DEPENDS = "openssl curl"