--crate-type=rlib
+ -Cdebuginfo=2
+ -Zremap-cwd-prefix=.
is not reproducible on Windows (original) (raw)
In #128456 (comment) we noticed that:
--crate-type=rlib
+ -C debuginfo=2
+ -Z remap-cwd-prefix=.
on Windows caused the rlib to be unreproducible.
# ignore-musl |
---|
# Objects are reproducible but their path is not. |
Two source files:
- https://github.com/rust-lang/rust/blob/0ba9db87e61adcfd9a978188f61c20d9b423a099/tests/run-make/reproducible-build/reproducible-build-aux.rs
- https://github.com/rust-lang/rust/blob/0ba9db87e61adcfd9a978188f61c20d9b423a099/tests/run-make/reproducible-build/reproducible-build.rs
Steps:
- Let "root" test directory be called
$base_dir
. rustc reproducible-build-aux.rs
mkdir test
cp reproducible-build.rs test/reproducible-build.rs
- compiler 1:
rustc --crate-type=rlib -C debuginfo=2 -Zremap-cwd-prefix=. -L $cwd reproducible-build.rs
mv libreproducible_build.rlib libfoo.rlib
cd test
- compiler 2:
rustc --crate-type=rlib -C debuginfo=2 -Zremap-cwd-prefix=. -L <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>b</mi><mi>a</mi><mi>s</mi><msub><mi>e</mi><mi>d</mi></msub><mi>i</mi><mi>r</mi><mo>−</mo><mo>−</mo><mi>o</mi><mi>u</mi><mi>t</mi><mo>−</mo><mi>d</mi><mi>i</mi><mi>r</mi><mo>=</mo></mrow><annotation encoding="application/x-tex">base_dir --out-dir=</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord mathnormal">ba</span><span class="mord mathnormal">s</span><span class="mord"><span class="mord mathnormal">e</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">d</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6984em;vertical-align:-0.0833em;"></span><span class="mord">−</span><span class="mord mathnormal">o</span><span class="mord mathnormal">u</span><span class="mord mathnormal">t</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">d</span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span></span></span></span>base_dir reproducible-build.rs
cd $base_dir
- check if
libreproducible_build.rlib
andlibfoo.rlib
are different
Marking as S-needs-repro
as I'm not sure of the root cause or exact reproduction environment; the test case failed on x86_64-msvc
ci job. I'm also not exactly sure of the intended semantics of -Z remap-cwd-prefix=.
.