diff mbox series

[scarthgap] rust: rustdoc reproducibility issue fix

Message ID 20240819095638.29008-1-Deepesh.Varatharajan@windriver.com
State Rejected
Delegated to: Steve Sakoman
Headers show
Series [scarthgap] rust: rustdoc reproducibility issue fix | expand

Commit Message

Varatharajan, Deepesh Aug. 19, 2024, 9:56 a.m. UTC
From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>

The 'codegen-units' option split the crate into multiple compilation units for parallel compilation.
Currently, this split is causing the rustdoc to generate differnt binary between the builds.
To fix this the codegen-units & the lto options are disabled.

More info about options:
https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units
https://doc.rust-lang.org/rustc/codegen-options/index.html#lto

Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
---
 ...ue-fix-cargo-config-for-codegenunits.patch | 29 +++++++++++++++++++
 meta/recipes-devtools/rust/rust-source.inc    |  1 +
 meta/recipes-devtools/rust/rust_1.75.0.bb     |  1 +
 3 files changed, 31 insertions(+)
 create mode 100644 meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch

Comments

Alexander Kanavin Aug. 19, 2024, 10:12 a.m. UTC | #1
As this is fixing reproducibility, should it also remove rust from
reproducibility exceptions at the same time?

Alex

On Mon, 19 Aug 2024 at 11:57, deepesh.varatharajan via
lists.openembedded.org
<deepesh.varatharajan=windriver.com@lists.openembedded.org> wrote:
>
> From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
>
> The 'codegen-units' option split the crate into multiple compilation units for parallel compilation.
> Currently, this split is causing the rustdoc to generate differnt binary between the builds.
> To fix this the codegen-units & the lto options are disabled.
>
> More info about options:
> https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units
> https://doc.rust-lang.org/rustc/codegen-options/index.html#lto
>
> Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
> Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
> ---
>  ...ue-fix-cargo-config-for-codegenunits.patch | 29 +++++++++++++++++++
>  meta/recipes-devtools/rust/rust-source.inc    |  1 +
>  meta/recipes-devtools/rust/rust_1.75.0.bb     |  1 +
>  3 files changed, 31 insertions(+)
>  create mode 100644 meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch
>
> diff --git a/meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch b/meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch
> new file mode 100644
> index 0000000000..fdb2a4a498
> --- /dev/null
> +++ b/meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch
> @@ -0,0 +1,29 @@
> +commit e2e7017350d0b5324811fef3b841f98b00273887
> +Author: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
> +Date:   Fri Jul 26 06:35:59 2024 -0700
> +
> +    rust: rustdoc reproducibility issue fix
> +
> +    The 'codegen-units' option split the crate into multiple compilation units for parallel compilation.
> +    Currently, this split is causing the rustdoc to generate differnt binary between the builds.
> +    To fix this the codegen-units & the lto options are disabled.
> +
> +    More info about options:
> +    https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units
> +    https://doc.rust-lang.org/rustc/codegen-options/index.html#lto
> +
> +Upstream-Status: Inappropriate [oe specific]
> +
> +Signed-off-by: Deepesh Varatharajan <deepesh.varatharajan@windriver.com>
> +---
> +--- a/.cargo/config.toml
> ++++ b/.cargo/config.toml
> +@@ -3,3 +3,7 @@
> +
> + [source.vendored-sources]
> + directory = "vendor"
> ++
> ++[profile.release]
> ++codegen-units = 1
> ++
> +
> diff --git a/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
> index b14221b6cb..4ffc9faf18 100644
> --- a/meta/recipes-devtools/rust/rust-source.inc
> +++ b/meta/recipes-devtools/rust/rust-source.inc
> @@ -13,6 +13,7 @@ SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;n
>              file://target-build-value.patch;patchdir=${RUSTSRC} \
>              file://0001-Handle-vendored-sources-when-remapping-paths.patch;patchdir=${RUSTSRC} \
>              file://repro-issue-fix-with-v175.patch;patchdir=${RUSTSRC} \
> +           file://rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch;patchdir=${RUSTSRC} \
>  "
>  SRC_URI[rust.sha256sum] = "4526f786d673e4859ff2afa0bab2ba13c918b796519a25c1acce06dba9542340"
>
> diff --git a/meta/recipes-devtools/rust/rust_1.75.0.bb b/meta/recipes-devtools/rust/rust_1.75.0.bb
> index c33f31d261..7cd34a61c3 100644
> --- a/meta/recipes-devtools/rust/rust_1.75.0.bb
> +++ b/meta/recipes-devtools/rust/rust_1.75.0.bb
> @@ -132,6 +132,7 @@ python do_configure() {
>      config.add_section("rust")
>      config.set("rust", "rpath", e(True))
>      config.set("rust", "remap-debuginfo", e(True))
> +    config.set("rust", "lto", "\"off\"")
>      config.set("rust", "channel", e(d.expand("${RUST_CHANNEL}")))
>
>      # Whether or not to optimize the compiler and standard library
> --
> 2.43.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#203498): https://lists.openembedded.org/g/openembedded-core/message/203498
> Mute This Topic: https://lists.openembedded.org/mt/107977579/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch b/meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch
new file mode 100644
index 0000000000..fdb2a4a498
--- /dev/null
+++ b/meta/recipes-devtools/rust/files/rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch
@@ -0,0 +1,29 @@ 
+commit e2e7017350d0b5324811fef3b841f98b00273887
+Author: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
+Date:   Fri Jul 26 06:35:59 2024 -0700
+
+    rust: rustdoc reproducibility issue fix
+
+    The 'codegen-units' option split the crate into multiple compilation units for parallel compilation. 
+    Currently, this split is causing the rustdoc to generate differnt binary between the builds.
+    To fix this the codegen-units & the lto options are disabled.
+
+    More info about options:
+    https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units
+    https://doc.rust-lang.org/rustc/codegen-options/index.html#lto
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Deepesh Varatharajan <deepesh.varatharajan@windriver.com>
+---
+--- a/.cargo/config.toml
++++ b/.cargo/config.toml
+@@ -3,3 +3,7 @@
+
+ [source.vendored-sources]
+ directory = "vendor"
++
++[profile.release]
++codegen-units = 1
++
+
diff --git a/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
index b14221b6cb..4ffc9faf18 100644
--- a/meta/recipes-devtools/rust/rust-source.inc
+++ b/meta/recipes-devtools/rust/rust-source.inc
@@ -13,6 +13,7 @@  SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;n
             file://target-build-value.patch;patchdir=${RUSTSRC} \
             file://0001-Handle-vendored-sources-when-remapping-paths.patch;patchdir=${RUSTSRC} \
             file://repro-issue-fix-with-v175.patch;patchdir=${RUSTSRC} \
+	    file://rustdoc-repro-issue-fix-cargo-config-for-codegenunits.patch;patchdir=${RUSTSRC} \
 "
 SRC_URI[rust.sha256sum] = "4526f786d673e4859ff2afa0bab2ba13c918b796519a25c1acce06dba9542340"
 
diff --git a/meta/recipes-devtools/rust/rust_1.75.0.bb b/meta/recipes-devtools/rust/rust_1.75.0.bb
index c33f31d261..7cd34a61c3 100644
--- a/meta/recipes-devtools/rust/rust_1.75.0.bb
+++ b/meta/recipes-devtools/rust/rust_1.75.0.bb
@@ -132,6 +132,7 @@  python do_configure() {
     config.add_section("rust")
     config.set("rust", "rpath", e(True))
     config.set("rust", "remap-debuginfo", e(True))
+    config.set("rust", "lto", "\"off\"")
     config.set("rust", "channel", e(d.expand("${RUST_CHANNEL}")))
 
     # Whether or not to optimize the compiler and standard library