Commit Graph

256 Commits

Author SHA1 Message Date
Yash Shinde
bd0535ddf8 cargo-c: fix debug symbols containing TMPDIR references
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.

(From OE-Core rev: 3239961e35434592c06ec2cae2885ab464d35744)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-10-13 18:01:03 +01:00
Deepesh Varatharajan
ca53eab63f cargo-c: update 0.10.15 -> 0.10.16
(From OE-Core rev: d3cf1b37ce8686dc0781aff9bf35f4487c2c76a6)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-10-02 11:28:03 +01:00
Yash Shinde
61ce087049 rust: Upgrade 1.89.0 -> 1.90.0
https://blog.rust-lang.org/2025/09/18/Rust-1.90.0/

* Recent changes in rustc require 'target-c-int-width' to be an integer,
  not a string. This fixes type consistency when generating target specs.
  https://github.com/rust-lang/rust/pull/142352.

* Rebase existing patches with v1.90.0.

* Drop merged patches with rust v1.90.0.
  - backport-fix-test-string-merging.patch
  2d51acd2fb

* The "remote-test-server" bin is now generated in stage1-tools-bin dir
  rather than stage2. Update the test suite accordingly.

  The tests/{assembly/codegen} dirs are renamed to
  tests/{assembly,codegen}-llvm. Update the test suite and
  patches accordingly.
  https://github.com/rust-lang/rust/pull/144249/commits

* Use "//@ ignore-riscv64" tag for tests failing on riscv-64 instead of previous
  "only-<target_arch>" tags.

  Test results summary:

   rust v1.90.0
   +-----------+--------+---------+
   | Machine   | Passed | Ignored |
   +-----------+--------+---------+
   | arm-32    | 29,517 |  1,529  |
   | arm-64    | 29,608 |  1,471  |
   | x86-32    | 29,508 |  1,507  |
   | x86-64    | 29,903 |  1,275  |
   | riscv-64  | 29,584 |  1,494  |
   +-----------+--------+---------+

   Test results difference (1.90 - 1.89):
   +-----------+--------+---------+
   | Machine   | Passed | Ignored |
   +-----------+--------+---------+
   | arm-32    |  +278  |   +61   |
   | arm-64    |  +279  |   +59   |
   | x86-32    |  +277  |   +58   |
   | x86-64    |  +419  |   +50   |
   | riscv-64  |  +280  |   +58   |
   +-----------+--------+---------+

(From OE-Core rev: 86d09ec9cdbcea6e076ebac6e1243f9e20fb4378)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-09-25 11:09:05 +01:00
Alexander Kanavin
4c56cbbdee cargo-c: update 0.10.14 -> 0.10.15
(From OE-Core rev: 363cc3166329d2457c531e7d6375fe0c63f1e90e)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-09-15 17:57:23 +01:00
Jayasurya Maganuru
917430ed34 rust: Upgrade 1.88.0 -> 1.89.0
Rust stable version upgraded to 1.89.0
https://blog.rust-lang.org/2025/08/07/Rust-1.89.0/

* Drop merged patches with rust v1.89.0.
  - 0001-Disable-libunwind-cross-architecture-unwinding.patch
  - triagebot.patch

* Update and rebase existing patches with rust v1.89.0.
  - revert-link-std-statically-in-rustc_driver-feature.patch
  - rust-oe-selftest.patch
  - 0001-src-core-build_steps-tool.rs-switch-off-lto-for-rust.patch
  - 0001-riscv32-Define-plain-syscalls-as-their-time64-varian.patch
    (To fix build failures for riscv with musl, this patch adds
     aliases for plain syscalls to their time64 variants in libc-0.2.174,
     These changes are in addition to similar fixes already applied
     to libc-0.2.172)
  - 0001-Define-more-ioctl-codes-on-riscv32gc-unknown-linux-g.patch
    (Changes for libc-0.2.170 are no longer needed, as that version
     is not present in rust v1.89.0 vendor sources)

* OE-selftests:
  - Doc-tests fail in 55 crates,test-float-parse tests also fail.
    These tests are excluded to ensure the overall test suite passes.

   Test Results Summary:
   +-----------+--------+---------+
   | Machine   | Passed | Ignored |
   +-----------+--------+---------+
   | arm-32    | 29,239 | 1,468   |
   | arm-64    | 29,329 | 1,412   |
   | x86-32    | 29,231 | 1,449   |
   | x86-64    | 29,484 | 1,225   |
   | riscv-64  | 29,304 | 1,436   |
   +-----------+--------+---------+

(From OE-Core rev: fca454a188592c9fa854e93ff1a9c3e70a681e23)

Signed-off-by: Jayasurya Maganuru <Maganuru.Jayasurya@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-28 10:47:08 +01:00
Peter Marko
ec1ae11f78 recipes: cleanup CVE_STATUS which are resolved now
The don't show up in CVE metrics anymore since they were either fixed
upstream or recipe version was upgraded meanwhile.

* bind CVE-2019-6470: cpe got corrected in nvd db
* libxml2 CVE-2023-45322: version is now higher than NVD cpe
* zlib CVE-2023-45853: version is now higher than NVD cpe
* gcc CVE-2021-37322: version is now higher than NVD cpe
* python3
  * CVE-2007-4559: version is now higher than NVD cpe
  * CVE-2019-18348: version is now higher than NVD cpe
  * CVE-2020-15523: version is now higher than NVD cpe
  * CVE-2022-26488: version is now higher than NVD cpe
  * CVE-2015-20107: version is now higher than NVD cpe
  * CVE-2023-36632: version is now higher than NVD cpe
* rust
  * CVE-2024-24576: NVD has no cpe, but we have newer version as fix
  * CVE-2024-43402: version is now higher than NVD cpe
* cups CVE-2021-25317: version is now higher than NVD cpe
* ghostscript CVE-2023-38559: version is now higher than NVD cpe
* libtirpc CVE-2021-46828: version is now higher than NVD cpe
* unzip CVE-2008-0888: version is now higher than NVD cpe
* ffmpeg CVE-2023-39018: cpe got corrected in nvd db
* libxslt CVE-2022-29824: version is now higher than NVD cpe
* libyaml
  * CVE-2024-35325: CVE is now rejected in NVD DB
  * CVE-2024-35326: CVE is now rejected in NVD DB
  * CVE-2024-35328: CVE is now rejected in NVD DB

Also add comment for iputils regarding reports for FKIE/NVD2.

Also remove some trailing spaces in python recipe.

(From OE-Core rev: 73ee9789183aa95072af2b51ac9e08203f4e33f9)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-28 10:47:08 +01:00
Peter Tatrai
125ff9747b rust: backport cstring-merging test fix for PowerPC targets
The Rust cstring-merging assembly test was failing on PowerPC targets due to
LLVM's GlobalMerge optimization pass merging all global string constants into
a single merged global. This caused the test's CHECK directives to fail as
they expected separate .Lanon labels for each string literal ("foo", "bar",
"baz").

The test verifies that C-style string literals are correctly placed in
mergeable read-only sections (.rodata.str1.1) with proper section flags
(aMS - Allocatable, Merge, Strings) for linker optimization.

This backports the upstream fix that disables the GlobalMerge pass
(-Cllvm-args=-enable-global-merge=0) specifically for this test, allowing
it to verify the expected assembly structure without interference from
the optimization.

Fixes test failure:
- tests/assembly/cstring-merging.rs on powerpc-poky-linux-gnu

Backport of 2d51acd2fb

(From OE-Core rev: 2435b16b050ebdca0f70fe9ed1eebfdd3bacf19d)

Signed-off-by: Peter Tatrai <peter.tatrai.ext@siemens.com>
Tested-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-14 10:31:10 +01:00
Peter Tatrai
65e4a4739e rust: disable executable-no-mangle-strip test on PowerPC due to linker issue
The executable-no-mangle-strip test fails on PowerPC target with an undefined
reference error when linking. The linker attempts to resolve this undefined symbol
at link time, causing the test to fail with:
  undefined reference to `THIS_SYMBOL_SHOULD_BE_UNDEFINED'

The test is designed to verify garbage collection behavior of #[no_mangle]
functions and used(compiler)] statics. This appears to be a PowerPC-specific
linker behavior issue.

Temporarily disable this test on PowerPC until the underlying issue is
resolved upstream.

Related upstream issue: https://github.com/rust-lang/rust/issues/144777

Fixes oe-selftest failure:
- tests/ui/linking/executable-no-mangle-strip.rs on powerpc-poky-linux-gnu

(From OE-Core rev: 58ccb78de7e87f2f17d8ee47be545de49b8e2450)

Signed-off-by: Peter Tatrai <peter.tatrai.ext@siemens.com>
Tested-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-14 10:31:10 +01:00
Khem Raj
02b3910444 cargo-c: Update patches to latest versions
getrandom patch is accepted upstream with minor changes
parking_lot patch has addressed upstream feedback

(From OE-Core rev: 9f0f41d8e3fe00df37d926d99fb490614b51dde7)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-07 12:11:15 +01:00
Khem Raj
474e912372 libstd-rs: Fix build regression on rv32
This started to fail with rust 1.88, due to rust libc
upgrade

(From OE-Core rev: f9145bc8bec77e1f454f80c4e5576567daa99ac8)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Jayasurya Maganuru
006da82356 rust: Upgrade 1.87.0 -> 1.88.0
Rust stable version updated to 1.88.0.
https://blog.rust-lang.org/2025/06/26/Rust-1.88.0/

* Rebase existing patches with v1.88.0

* Exclude tidy and coverage-dump from OE self-tests due to test failures
  Although the build completes successfully, OE self-tests fail:
  tools/coverage-dump panics during test execution.
  tools/tidy fails due to a mismatched GCC submodule commit.
  These tests are excluded to allow successful OE self-test runs.

* Two tests from the`codegen` modules now fail only on riscv64.
  Enable them on arm32/64 and x86-32/64 targets, while restricting
  them on riscv64 via `only-<target_arch>` tags.

  Bugzilla link - https://bugzilla.yoctoproject.org/show_bug.cgi?id=15944

  Test Results Summary:
  +-----------+--------+---------+
  | Machine   | Passed | Ignored |
  +-----------+--------+---------+
  | arm-32    | 28,664 | 1,451   |
  | arm-64    | 28,748 | 1,396   |
  | x86-32    | 28,657 | 1,432   |
  | x86-64    | 28,904 | 1,213   |
  | riscv-64  | 28,722 | 1,421   |
  +-----------+--------+---------+

(From OE-Core rev: 5afc9bdbabfdbcb784ceb637926111e6c7648f41)

Signed-off-by: Jayasurya Maganuru <Maganuru.Jayasurya@windriver.com>
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-31 10:48:35 +01:00
Khem Raj
615eb70d5a cargo-c: Upgrade to 0.10.14+cargo-0.89.0
Fix build on riscv32 while here.

(From OE-Core rev: 34b07ad6330173fc8319b8db69410cf72af48395)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-28 14:51:50 +01:00
Khem Raj
dd39bbd9c2 rust: Update riscv32 patch with the backport
This is the patch that got merged into libc finally

(From OE-Core rev: eb79f29c5c2bf8fce13c02c7d7ca362c61e2b0ff)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-28 14:51:50 +01:00
Yash Shinde
24cab297ed cargo-c-native: Update 0.10.5 -> 0.10.13
cargo-c native version updated to stable version 0.10.13+cargo-0.88.0.
https://crates.io/crates/cargo-c

Drop the merged patch defining ioctl codes for riscv32
after the verion upgrade.

(From OE-Core rev: 56abe99a953873853c726ee5a6458c4a65298a9c)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-26 11:02:34 +01:00
Yash Shinde
6c529c908c rust: Upgrade 1.86.0 -> 1.87.0
Rust stable version updated to 1.87.0.
https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/

* Update LLVM data-layout for arm64.
  LLVM requires matching data layouts and
  the aarch64 llvm data-layout was updated to to allow using
  32-bit signed/unsigned pointers when building 64-bit targets
  using 270, 271 and 272 address spaces.

  e985396145
  c9f27275c1

* Rebase existing patches with v1.87.0.

* Two tests from the `ui` and `codegen` modules now fail only on riscv64.
  Enable them on arm32/64 and x86-32/64 targets, while restricting
  them on riscv64 via `only-<target_arch>` tags.

  Test Results Summary:

  +-----------+--------+---------+
  | Machine   | Passed | Ignored |
  +-----------+--------+---------+
  | arm-32    | 28,320 | 901     |
  | arm-64    | 28,400 | 849     |
  | x86-32    | 28,285 | 885     |
  | x86-64    | 28,518 | 676     |
  | riscv-64  | 27,845 | 868     |
  +-----------+--------+---------+

* Backport triagebot.patch to skip tidy linkcheck when triagebot.toml
  is not present. Distribution tarballs won't include triagebot.toml,
  which causes tidy checks to fail.
  This backport ensures tidy checks can still run successfully
  even when the file is missing.

  https://github.com/rust-lang/rust/pull/142666/commits

* During rust installation, some binaries were installed from
  'stage2-tools' built path to '${D}${bindir}'. However, from
  v1.87 the stage2-tools are no longer built by default.
  Update logic to install from `stage1-tools` instead.

(From OE-Core rev: 16ce25e6970b4a50f6433606a0c87d22ec74ea5a)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-26 11:02:34 +01:00
Yash Shinde
6f39c76f60 rust: Drop obsolete rust-lld and extended tools dependencies
Some dependencies introduced during the v1.86 upgrade
were needed only for rust-lld and certain LLVM extended tools,
not for the Rust compiler itself.

Since rust-lld and the extended tools are now disabled, these
dependencies have become obsolete. Additionally, related tasks
such as packaging zsh files and removing cargo binaries are no longer relevant.
They can be re-enabled later if needed.

(From OE-Core rev: 42141da566c9512b338900967e7e81e9e8b49150)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-26 11:02:34 +01:00
Alexander Kanavin
dc9faa3cdc meta: remove consecutive blank lines
Some of them were introduced by mass-removal of S = WORKDIR/git assignments;
rather than try to fix up (or redo) just these, I've run this sed command over
the whole tree:

sed -i -z -E 's/([ \t\f\v\r]*\n){3,}/\n\n/g' `find . -name *.bb -o -name *.inc`

The rationale is that more than one empty line is wasting vertical screen space, and
does nothing for readability.

(From OE-Core rev: cedc4ff7c9bcfb22a20e43e47f9759f4007a4f1a)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-20 12:07:27 +01:00
Alexander Kanavin
efb0410d38 meta: set S from UNPACKDIR in recipes that use only local files
There is no need to have two assignments; also setting S from
UNPACKDIR (and not vice versa) is more logical as unpack
task comes first, and tasks that come after unpack use S to access
unpack results.

Also adjust reference test data in selftest/recipeutils to reflect changes in test recipes.

(From OE-Core rev: f64b7e5fb3181734c8dde87b27e872a026261a74)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-20 12:07:26 +01:00
Alexander Kanavin
e1f059f34e meta: set S to be in UNPACKDIR in recipes that explicitly set S
(From OE-Core rev: 7321cc17ae5483f17fe9cdffea7b62acd9d9c3a2)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-20 12:07:26 +01:00
Yash Shinde
72d932cc5b rust: Upgrade 1.85.1->1.86.0
Rust stable version updated to 1.86.0.
https://blog.rust-lang.org/2025/04/03/Rust-1.86.0.html

* Add pkgconfig-native and openssl to resolve openssl-sys crate
dependency on pkg-config. As per rust document this is a required dependency.

Fixes:
| error: failed to run custom build command for `openssl-sys v0.9.106`
| Could not find openssl via pkg-config:
|   The pkg-config command could not be found.
|
|   Most likely, you need to install a pkg-config package for your OS.
|   Try `apt install pkg-config`, or `yum install pkg-config`,
|   or `pkg install pkg-config`, or `apk add pkgconfig` depending on your distribution

https://crates.io/crates/openssl-sys/0.9.108/dependencies
https://github.com/rust-lang/rust/blob/master/INSTALL.md#dependencies

* Add Ninja as a dependency for building Rust to prevent bootstrap
  build regression.

Fixes:
| Building LLD for x86_64-unknown-linux-gnu
|
| Couldn't find required command: ninja (or ninja-build)
|
| You should install ninja as described at
| <https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages>,
| or set `ninja = false` in the `[llvm]` section of `config.toml`.
| Alternatively, set `download-ci-llvm = true` in that `[llvm]` section
| to download LLVM rather than building it.

* Add bash to DEPENDS to resolve missing dependency for subtree-sync.sh
Fixes:
ERROR: rust-1.86.0-r0 do_package_qa: QA Issue: /usr/lib/rustlib/src/rust/library/portable-simd/subtree-sync.sh
contained in package rust requires /bin/bash, but no providers found in RDEPENDS:rust? [file-rdeps]

* Add do_install:append() task to remove cargo bin from rust native builds.
This resolves the following conflict:

Fixes:
ERROR: libstd-rs-1.86.0-r0 do_prepare_recipe_sysroot: The file /usr/bin/cargo is
installed by both rust-native and cargo-native, aborting

* Update Unicode-3.0 license checksums.
License-Update: Copyright and license files to distributions are updated.

f9c16997dc
  It adds copyright and license files (including HTML versions) to distributions,
  aligns with license compliance tools like reuse, and ensures all required
  license texts are properly included and formatted.

* Disable building of extended Rust tools to reduce build time and filesystem usage.
  Update config.toml to disable building of extended Rust tools that are not required.
  This helps minimize unnecessary build time and filesystem usage.

* The "remote-test-server" bin is now generated in stage2-tools-bin dir
  rather than stage1. Update the test suite accordingly.

* Fix do_package QA issue by packing missing zsh files and directories:

Fixes:
do_package: QA Issue: rust: Files/directories were installed but not shipped in any package:
/usr/share/zsh
/usr/share/zsh/site-functions
/usr/share/zsh/site-functions/_cargo
Please set FILES such that these items are packaged. Alternatively if they are unneeded,
avoid installing them or delete them within do_install

* From v1.86.0, a "self-contained" LLD is built as part of rust
 bootstrap build. This results in additional build time and
 installations. Disable rust-lld in config.toml to prevent it.

 References: https://github.com/rust-lang/rust/pull/135001
             8744b44e6b

* Drop Zdual-proc-macros-additional-check.patch patch
 since it's merged with v1.86.0
 139d6ba054

* LTO config is applied to rustdoc from v1.86.0.
 Rebase 0001-src-core-build_steps-tool.rs-switch-off-lto-for-rust.patch
 which disables it to avoid suffixes in binaries causing non-reproducibility.
 https://github.com/rust-lang/rust/commit/1fe351b

* Restrict tests using "//@only <target_arch>" to avoid failures on riscv64,
  which is now part of default AB testing. Since riscv64 is Tier 2
  with no automated testing, some tests may fail. This approach ensures tests continue
  running on supported architectures while skipping them on riscv64.
  https://doc.rust-lang.org/rustc/platform-support.html#tier-2-with-host-tools

(From OE-Core rev: c064ef18343a956aea397d36d2e7665d6c8afd7d)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-12 13:12:06 +01:00
Khem Raj
d8d8f83bd1 rust: Disable cross-unwinding support in llvm libunwind
This is default in LLVM but rust does not use cmake to build itself
so it needs to replicate the behavior

Fixes rust build with clang/musl for aarch64

(From OE-Core rev: f05d42d11e56cbbda6034bd7f773dc690b68bdbd)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-29 15:14:37 +01:00
Ross Burton
2b6afab777 rust: remove file-native DEPENDS
It's unclear what this was for: there's no use of "file" or libmagic in
the recipe, and the guide to building Rust from source doesn't list file
as a dependency[1].

[1] https://github.com/rust-lang/rust/blob/master/INSTALL.md#dependencies

(From OE-Core rev: 79dcbed250cfe8ab05dd6e075905ad37de6d3bc4)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-27 09:01:16 +01:00
Ross Burton
2dadccd9e6 rust: consolidate rust-llvm dependencies
There's no need to have multiple overrides for this, as BBCLASSEXTEND
will automatically map the dependencies as needed.

(From OE-Core rev: ffa699332551fbbb95a0e388385667dc2706da6a)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-27 09:01:16 +01:00
Ross Burton
ff053b4711 rust: remove python3-native DEPENDS
This dependency has always existed in the oe-core recipes but isn't
explicitly needed here: the host Python is sufficient.

Note that rust-common still inherits on python3native[1] so this doesn't
yet actually have a meaningful change to the dependency tree.

[1] oe-core 4abd6ee9d4 ("rust-common.bbclass: rewrite toolchain wrappers in (native) python")

(From OE-Core rev: aee45fc067b2ccf3e365deb94584089b60cc7d4e)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-27 09:01:16 +01:00
Khem Raj
522af6e5ce rust: Use patchelf in place of chrpath to edit rpaths
chrpath has limitations e.g. the original rpath in ELF have to bigger in size
than the one being edited into it by chrpath, some toolchains do not use RPATH
but emit the RUNPATHs into ELF files and chrpath is not able to handle the
runpaths, this is the case with mips and pp32 build of rust, especially
when using clang compiler to build them.

patchelf can do more:

Modify RUNPATH entries
Add RPATH/RUNPATH where none existed
Set longer paths than the original
Convert between RPATH and RUNPATH

(From OE-Core rev: 22b903f6620455e142e836412d3f7f6a4f03bea7)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-22 14:36:49 +01:00
Deepesh Varatharajan
8dc5f3376d rust: re-enable the unit tests that are previously ignored
Some unit tests were previously marked as ignored due to failures in earlier
versions of Rust. With the upgrade to Rust 1.85.1, these tests are now passing
consistently. They've been re-enabled and verified to run successfully on the
latest version.

(From OE-Core rev: 56149c8c2108973666251e21609a7210a91984cf)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-15 10:55:26 +01:00
Khem Raj
6410bbd6a6 rust: Fix build with GCC-15 on aarch64/musl
GCC-15 has _CHKFEAT_GCS defined in arm_acle.h to indicate gcs intrinsics
support, this trips llvm libunwind gcs feature detection logic to set
gcs feature on. However the contructs used in unwindlib are assuming clang
and the needed target attribute is not available in gcc it should be +gcs
to work with both clang and gcc

(From OE-Core rev: aa5b42b32093fdd10e0a8f8a124322610c84f60b)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-01 14:22:54 +01:00
Deepesh Varatharajan
ba50aac23c rust: re-enable the unit tests that are ignored
Some unit tests were previously marked as ignored due to failures in earlier
versions of Rust. With the upgrade to Rust 1.85.1, these tests are now passing
consistently. They've been re-enabled and verified to run successfully on the
latest version.

(From OE-Core rev: 65c207fb034848f9ef0de8cf8725c5eded363aca)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-23 09:47:42 +01:00
Khem Raj
ea00dbbcf3 bitbake.conf: Switch prefix mapping to use -ffile-prefix-map
-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

(From OE-Core rev: ff73fa7ef7666a6dbe34f15515bc3ab6e574c5b0)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Jacob Kroon <jacob.kroon@gmail.com>
Cc: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-23 09:47:42 +01:00
Deepesh Varatharajan
84913de99d rust: re-enable the unit tests that are ignored
Some unit tests were previously marked as ignored due to failures in earlier
versions of Rust. With the upgrade to Rust 1.85.1, these tests are now passing
consistently. They've been re-enabled and verified to run successfully on the
latest version.

(From OE-Core rev: 775108f131412122beb2b844dc5e2a4d47ce3b89)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-20 10:11:16 +01:00
Yoann Congal
ff32331d4d cargo-c: Update patch Upstream-Status
https://github.com/rust-lang/libc/pull/4382 was merge as
4b439b0953

(From OE-Core rev: d34f49cc604733c7d714a72b3a3d66a99aa65c79)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-16 17:41:30 +01:00
Peter Kjellerstedt
9378c20729 libstd-rs: Correct the license to use Unicode-3.0
This was missed in commit 3130069fdebb92f20b962fa8074564a27c3fb6b9.

(From OE-Core rev: 1378a4b39e7a0c38c74e0133f31df7f70ed7d6ea)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-16 17:41:30 +01:00
Khem Raj
77e5b8db1e cargo-c,rust: Fix build on risv32
Apply fix in libc that are needed for rustix-0.38 to build.

(From OE-Core rev: c21fd6f1c0b6a9df9950c541025f24e342b7a118)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-10 11:05:34 +01:00
Khem Raj
e11fc01d7b rust-llvm: Disable benchmarks by cmake options
Drop patch to exclusively disable it in code
It seems to be fixed upstream [1]

[1] https://github.com/rust-lang/cmake-rs/pull/158

(From OE-Core rev: 60b4b0808a3b961917ed8abe16b9f7df2a311952)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-08 15:49:17 +01:00
Richard Purdie
efe76a5095 rust-llvm: Disable libedit
This option currently floats and is leading to non-deterministic builds. It
is used for commandline option tab completion which we don't need in our
builds in general, let alone internally within rust's llvm.

This should fix autobuilder deterministic build issues.

(From OE-Core rev: c31859be39c68f215576ba73b8a3d66c8ea590d3)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-02 19:02:56 +01:00
Yash Shinde
09d8efe144 rust: Upgrade 1.85.0->1.85.1
Rust stable version updated to 1.85.1
https://blog.rust-lang.org/2025/03/18/Rust-1.85.1.html

Dropped patches:
downgrade-bootstrap-cc.patch since it's merged with v1.85.1.

(From OE-Core rev: b141115b9c8e052df096e55d92972b1db4c84f4e)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-01 22:08:36 +01:00
Yash Shinde
bac7bb5b7a rust: Upgrade 1.84.1->1.85.0
Rust stable version updated to 1.85.0
https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html

Some of the major updates:

- Update LIC_FILES_CHKSUM in libstd-rs and rust recipes.
License-Update: Unicode license text is updated to Unicode-3.0 License.
6d2a3e9786
[RP: Update LICENSE to reference Unicode-3.0]

- Pass '-Zforce-unstable-if-unmarked' to RUSTFLAGS in libstd-rs.bb
Fix: https://github.com/rust-lang/rust/issues/133857#issuecomment-2526341227

- Downgrade bootstrap cc version causing bootstrap to fail on custom targets. (Backported from v1.85.1)
Fix: e4ca11f87f

- Explicitly set float ABI for all ARM 32 bits targets.
Fix: a51fefcaab

- Rust v1.85.0 tarball doesn't ship gcc tree.
Drop "remove_gcc_directory" postfunc which removed it and prevented the bloat.
Fix: 13c3f9b949

Adapted the patch changes with v1.85.0:
  repro-issue-fix-with-cc-crate-hashmap.patch
  revert-link-std-statically-in-rustc_driver-feature.patch
  rust-oe-selftest.patch
  rv32-cargo-rustix-0.38.40-fix.patch

Dropped patches:
  fix-tidy-check-failure.patch since it's merged with v1.85.0.

(From OE-Core rev: 3130069fdebb92f20b962fa8074564a27c3fb6b9)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-01 22:08:36 +01:00
Yash Shinde
9733fce7d6 rust: Update "do_update_snapshot" task for rust-snapshot.inc
The 'do_update_snapshot' task is failed with below error:
Exception: FileNotFoundError: [Errno 2] No such file or directory: '.../rustc-1.83.0-src/src/stage0.json'

There are changes in use of key-value format in stage0 file in
rust sources and the rust recipe should be apdated for that.

Changes in rust:
1adfffd07f

(From OE-Core rev: d64456f6ea58d683993b0bc7294baa889bafdf7b)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-01 22:08:36 +01:00
Richard Purdie
c4a5e590b5 rust-llvm: Compile llvm to use dynamic libraries
Our main llvm recipe uses dynamic linking already but rust-llvm does not.
Enabling this significanly reduces the size of llvm-rust to about a third
of what it was, which is a bettter configuration for us leading to smaller
TMPDIR and sstate objects.

(From OE-Core rev: 2b6a6d4199e4eed65f20351d077a04a7cf9da460)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-04-01 11:58:25 +01:00
Richard Purdie
3f8cb421e3 rust-source: Fix remove_gcc_directory
The patch works for rust-native but not other recipes which change ${S}.
Set it to use the correct path so it works for llvm-rust, cargo and others,
maximising the space saving.

(From OE-Core rev: 1aee0bc109c1457159440c279ddc1fe5a8d89586)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-29 15:24:34 +00:00
Deepesh Varatharajan
01dbb30d39 rust: Oe-selftest changes for rust v1.84.1
Ignore the failing unit test.

The tidy check failed due to a typo, which was already reported and
fixed in the Rust upstream.

Upstream-Status: Backport [8e77349782]

(From OE-Core rev: 94a244a14075ead1b3b5e966c0fe713cd448cad8)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-27 13:41:58 +00:00
Deepesh Varatharajan
28a077b4aa rust: Fix build failure when multilibs are enabled
When multilibs are enabled, building rust is failing because of the following commit
68034f837a
with stage1/rustc cannot able to find dependent *.so files. The issue is
been fixed inrust-master with the following commit by passing the necessary library
paths before executing stage1/rustc

Upstream-Status: Backport [139d6ba054]

(From OE-Core rev: ab29b970ba7e08eabca92018d103af5f249ed2c5)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-27 13:41:58 +00:00
Deepesh Varatharajan
6d78fbe5c5 rust: Upgrade 1.83.0->1.84.1
Rust stable version updated to 1.84.1.
https://blog.rust-lang.org/2025/01/30/Rust-1.84.1.html

Renamed and modified the below patch to adapt the new version.
rv32-cargo-rustix-0.38.37-fix.patch->rv32-cargo-rustix-0.38.38-fix.patch

Modified the below patches to adapt the new version.
repro-issue-fix-with-cc-crate-hashmap.patch
revert-link-std-statically-in-rustc_driver-feature.patch

Dropped the below patches :
0001-NFC-fix-build-failure-100993.patch
6ee49080e4

revert-Zdual-proc-macros-additional-check.patch
Issue is fixed in rust-master and the fix is backported in the
subsequent patch of the series.

(From OE-Core rev: 4265f668de8c6708cb3a003ad655559031724149)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-27 13:41:58 +00:00
Deepesh Varatharajan
824f05fe73 rust: Fix build break because of "download-rustc" and "llvm-tools"
>From Rust 1.84, the download-rustc and llvm-tools options were set to True
(previously they were False)

cce6f03754
(download-rustc)

38f0c099b2
(llvm-tools)

For tarball sources, the download-rustc option should be False, so it has been
reverted back to False.

Setting llvm-tools to True caused issues with finding llvm-objcopy, so this
has been changed back to False.

Upstream-Status: https://github.com/rust-lang/rust/pull/134240/

(From OE-Core rev: 2eb952d839e72c24a4180a57631c77910a0da980)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-27 13:41:58 +00:00
Deepesh Varatharajan
2cb5d1accc rust: Fix bloat issue in recent rust updates
Remove the "src/gcc" directory from the Rust source code to reduce the
filesystem build space.

In Rust 1.83 (and 1.84), a full GCC-14 tree was included, which caused
the tar.xz archive to increase by 128 MB and the unpacked sources to
grow by 1.3 GB. This was an upstream error that has been resolved in
Rust 1.85.

After updating to Rust 1.85 we can revert this removal of "src/gcc"

(From OE-Core rev: 26a345adc8e050657bfa0b51ea92a3d89e698d9a)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-27 13:41:58 +00:00
Deepesh Varatharajan
274827980c rust: Oe-selftest changes for rust v1.83.0
Few unit tests are failing for x86_64 arch.
Ignore the failing unit tests.

Upstream-Status: Pending

(From OE-Core rev: c71f9efc3140d279813ff6eb474fdbf5e677e348)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-05 21:26:54 +00:00
Deepesh Varatharajan
5c9f0206dc rust: Fix build break because of download-ci-llvm
Previously, download-ci-llvm was set to false. However, with the following commit:
7d579046c8 ,
which has been present from rust_1.83, it was changed to true. As a result, after
updating to rust_1.83, we encountered the following error during the build:

-------------------------------------------------------------------------------
| thread 'main' panicked at src/core/config/config.rs:2047:13:
| setting build-target.llvm-config is incompatible with download-ci-llvm.
| note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
-------------------------------------------------------------------------------

To resolve this issue, we are setting download-ci-llvm back to false.

(From OE-Core rev: d43424cba7e93ee30b410d0a024be441e2336dbd)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-05 21:26:54 +00:00
Deepesh Varatharajan
72e21bef1a rust: Upgrade 1.82.0->1.83.0
Rust stable version updated to 1.83.0.
https://blog.rust-lang.org/2024/11/28/Rust-1.83.0.html

Renamed and modified the below patch to adapt the new version.
rv32-cargo-rustix-0.38.34-fix.patch->rv32-cargo-rustix-0.38.37-fix.patch

Modified the below patches to adapt the new version.
repro-issue-fix-with-cc-crate-hashmap.patch
revert-link-std-statically-in-rustc_driver-feature.patch

Dropped: zlib-off64_t.patch
a566e156b3kq

Because of the following commit ,
68034f837a
when we enable lib32, getting build failure because there is a check for target
support for "-Zdual-proc-macros" flag not functioning properly when lib32 is
enabled in the build environment. So for now reverting this commit and bring
back the previous behavior, where the "-Zdual-proc-macros" flag is always
added for building proc macros, regardless of the target architecture's support.
This would bypass the check introduced in the patch, allowing the build to
proceed without error, even when building for a 64-bit architecture with lib32 enabled.

(From OE-Core rev: 40d8dafdf556d7ce79c12a6de872193be9a0928a)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-03-05 21:26:54 +00:00
Khem Raj
dfe34c2337 rust-llvm: Fix build break found with clang
call and callee have mismatched types, this patch fixes it

(From OE-Core rev: 88e5970998fb4c72844056be19e3a9f77de3f4d6)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Randy MacLeod <Randy.MacLeod@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-02-28 07:49:18 +00:00
Deepesh Varatharajan
36f4602671 rust: Oe-selftest changes for rust v1.82.0
A few tests are getting failed with x86 arch.The unsupported/failing tests
are added to the exclude list and ignore the failing unit tests.

Upstream-Status: Pending

(From OE-Core rev: b1340173be2a3a91fbb135eb0e24e50c3b996425)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-02-20 11:57:49 +00:00