Maybe back when .cargo/config.in was added, the directory indicated for
vendored crates needed to be absolute. That is at least not the case
with the current supported versions of rust.
The current setup has a few caveats:
- .cargo/config.in has shown to become stale (it currently contains
multiple unused entries)
- non-gecko build tasks have to generate a .cargo/config on their own if
they want to use vendored crates
- in turn, non-gecko build tasks that don't, may unknowingly get their
dependencies from crates.io (see the recent attempt at moving
geckodriver builds to a separate task).
By checking in a .cargo/config file, we can alleviate the last two, but
that comes at the price of `cargo update` not wanting to act when
.cargo/config exists, because of the source replacement configuration.
But rust vendor gently generates a suitable configuration on its own, so
we can use that to generate a .cargo/config automatically. Which
addresses the first caveat of the current setup. That leaves us with
`cargo update` not working out of the box, but that just requires people
running it to manually remove .cargo/config first. Which is arguably
what rust wants you to do in the first place. It's kind of incidental
that we started with a .cargo/config.in rather than .cargo/config.
Now, while a simple .cargo/config works, that's not enough for the case
where the objdir doesn't live inside the source directory. In that case
cargo looks for the configuration from the objdir, and fails to find it.
So we still need a .cargo/config.in, which we generate with a little
trick.
Differential Revision: https://phabricator.services.mozilla.com/D43012
--HG--
rename : .cargo/config.in => .cargo/config
extra : moz-landing-system : lando
All the commits have been reviewed by Mozilla peers on the Cranelift repository.
Differential Revision: https://phabricator.services.mozilla.com/D42479
--HG--
extra : moz-landing-system : lando
Changes have been reviewed on the Cranelift side; this is just a bump to the
latest version.
Differential Revision: https://phabricator.services.mozilla.com/D36327
--HG--
extra : rebase_source : 66c188e223fc956562e4d4c901afa059a178da8a
extra : histedit_source : 39ce43e74dd1666440a39a25703c4f5023e0472b
We need this to be able to land the second half of the jump tables
patch, since cranelift APIs have changed.
Differential Revision: https://phabricator.services.mozilla.com/D33598
--HG--
extra : rebase_source : 00ccd0ffe14b463670912c40e81b258d45421ca3
The one optimization introduced by this is the rearrangement of branches to
prefer fallthrough whenever possible, as well as folding branches when
comparing against 0. See also
https://github.com/CraneStation/cranelift/pull/629 for details.
Differential Revision: https://phabricator.services.mozilla.com/D28512
--HG--
extra : rebase_source : f0d765a1cb1e2f7872037c18b9951077a08ae4b7
extra : histedit_source : 1a1dd95618e166705f7165c045f3b5af12f96d5b
This is the first time we pin a specific Cranelift commit hash to use in Gecko.
The target-lexicon hack is removed and instead we introduce a vendor patch for
cranelift-codegen/cranelift-wasm themselves.
Notable changes happen in top-level Cargo.toml, .cargo/config.in and
js/src/wasm/cranelift/Cargo.toml; the rest has been generated by `mach vendor
rust`.
Differential Revision: https://phabricator.services.mozilla.com/D27316
--HG--
extra : moz-landing-system : lando
This update from the official sources brings in the changes that we were
using glandium's fork for, as well as changes enabling us to tweak more
settings on Windows.
Differential Revision: https://phabricator.services.mozilla.com/D25888
--HG--
extra : moz-landing-system : lando
This adds the Firefox-required build.rs hack and reverts the commit
that added bitmasks in a way that depends on Rust 1.34 compiler
internals.
Depends on D20288
Differential Revision: https://phabricator.services.mozilla.com/D20289
--HG--
extra : moz-landing-system : lando
The current setup uses different ways for different platforms, with
different workarounds, even using extra configuration items for Windows.
Now that there can't be a difference between the host per the build
system and the host per rust, we can get rid of those configuration
items, and use a more common infrastructure.
We cannot, however, avoid using wrapper scripts, because per-target rust
link-arg flags don't work up great.
The downside is that multiplies the number of wrappers, as we now have
to have a different one for host and target, and then we have .bat files
and shell scripts for, respectively, Windows hosts, and other hosts.
Depends on D24321
Differential Revision: https://phabricator.services.mozilla.com/D24322
--HG--
extra : moz-landing-system : lando
The current setup uses different ways for different platforms, with
different workarounds, even using extra configuration items for Windows.
Now that there can't be a difference between the host per the build
system and the host per rust, we can get rid of those configuration
items, and use a more common infrastructure.
We cannot, however, avoid using wrapper scripts, because per-target rust
link-arg flags don't work up great.
The downside is that multiplies the number of wrappers, as we now have
to have a different one for host and target, and then we have .bat files
and shell scripts for, respectively, Windows hosts, and other hosts.
Depends on D24321
Differential Revision: https://phabricator.services.mozilla.com/D24322
--HG--
extra : moz-landing-system : lando
The fix for build bug 1512541 causes an Android build issue. The issue has been fixed upstream in LMDB's development branch, but the fix hasn't made it to LMDB's release branch. So I backported it to a branch in the mozilla/lmdb-rs repo, and this change switches to that branch to fix the Android build issue.
Differential Revision: https://phabricator.services.mozilla.com/D18767
--HG--
extra : moz-landing-system : lando
This includes the necessary changes for the serde replacement upgrade from
WR PR 2777 as well.
MozReview-Commit-ID: 6Q7Wjer1JHS
--HG--
extra : rebase_source : 1df561ecb5503c1cece033a959e8a7182a185072
The spidermonkey mozjs and rust-bindings builds run sed on
$topsrcdir/.cargo/config.in to generate the cargo config they use, but
they previously only replaced the @top_srcdir@ substitution. This patch
makes them replace any other substitutions with an empty value to add
a bit of future-proofing.
MozReview-Commit-ID: 1DzP9vXxHMD
--HG--
extra : rebase_source : e8c0268a2a6e91ca2000b340beee2dcff0636591
We currently use a 32-bit Rust toolchain for win32 builds, but this can lead
to OOM situations. This patch makes win32 builds use a 64-bit Rust toolchain,
which requires a little bit of extra configuration because rustc needs to
be able to find a link.exe that produces 64-bit binaries for building
things like build scripts, which are host binaries.
We will now generate a batch file that sets LIB to the paths to 64-bit
libraries and invokes the x64-targeting link.exe, and add a section to the
.cargo/config file to instruct cargo to use that batch file as the linker
when producing 64-bit binaries.
MozReview-Commit-ID: 9vKBbm7Gvra
--HG--
extra : rebase_source : 599b3b661c7a8a5db1f32a2a9732fc202fb55e1e
The branch is based off serde 1.0.23 and includes additional changes for faster
enum deserialization which we want for WebRender. The changes are in the process
of being upstreamed but will take a while.
MozReview-Commit-ID: 4xaPQpffzYL