commit 1e88b1aeda67811065a87cfa6441fa6224abcef6 Author: Georg Koppen gk@torproject.org Date: Sun Oct 18 07:16:00 2020 +0000
Bug 40125: Fold in fenix-*rust and fenix-cbindgen projects --- projects/application-services/build | 2 +- projects/application-services/config | 8 +- projects/cbindgen/config | 17 +- projects/fenix-as-rust/build | 65 ------ projects/fenix-as-rust/config | 103 --------- projects/fenix-as-rust/unwind.patch | 162 ------------- projects/fenix-cbindgen/build | 32 --- projects/fenix-cbindgen/config | 16 -- projects/fenix-rust/43909.patch | 252 --------------------- projects/fenix-rust/build | 65 ------ projects/fenix-rust/config | 103 --------- projects/fenix-rust/unwind.patch | 162 ------------- projects/geckoview/build | 2 +- projects/geckoview/config | 4 +- .../43909.patch => rust/43909_145.patch} | 0 projects/rust/build | 6 +- projects/rust/config | 40 ++-- 17 files changed, 41 insertions(+), 998 deletions(-)
diff --git a/projects/application-services/build b/projects/application-services/build index 55ec519..9fb0f50 100644 --- a/projects/application-services/build +++ b/projects/application-services/build @@ -17,7 +17,7 @@ cd /var/tmp/dist tar -xf $rootdir/[% c('input_files_by_name/sqlcipher-' _ arch) %] mv sqlcipher sqlcipher-[% arch %] [% END -%] -export PATH=/var/tmp/dist/fenix-as-rust/bin:$PATH +export PATH=/var/tmp/dist/rust/bin:$PATH cd $rootdir
# application-services uses a newer NDK, 21, than everything else... diff --git a/projects/application-services/config b/projects/application-services/config index d877002..68dc794 100644 --- a/projects/application-services/config +++ b/projects/application-services/config @@ -24,19 +24,19 @@ input_files: - project: '[% c("var/compiler") %]' name: '[% c("var/compiler") %]' # We need the torbrowser-* targets for Rust, see: #40094. - - project: fenix-as-rust + - project: rust name: rust-armv7 target_prepend: - torbrowser-android-armv7 - - project: fenix-as-rust + - project: rust name: rust-aarch64 target_prepend: - torbrowser-android-aarch64 - - project: fenix-as-rust + - project: rust name: rust-x86 target_prepend: - torbrowser-android-x86 - - project: fenix-as-rust + - project: rust name: rust-x86_64 target_prepend: - torbrowser-android-x86_64 diff --git a/projects/cbindgen/config b/projects/cbindgen/config index 3dd94f6..1258b4f 100644 --- a/projects/cbindgen/config +++ b/projects/cbindgen/config @@ -1,16 +1,27 @@ # vim: filetype=yaml sw=2 -version: 0.14.1 +version: '[% c("var/cbindgen_version") %]' git_url: https://github.com/eqrion/cbindgen -git_hash: 0761b9bbe48d01ded1bbec45bbeea5544b3b1002 # v0.14.1 +git_hash: '[% c("var/cbindgen_hash") %]' filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
var: + cbindgen_version: 0.14.1 + cbindgen_hash: 0761b9bbe48d01ded1bbec45bbeea5544b3b1002 + cbindgen_vendor_hash: 1c500bc1b8de4eb400f90a528c4b5c6b2c7357e401a95c5354469a18fd365dbc container: use_container: 1 + +targets: + android: + var: + cbindgen_version: 0.14.3 + cbindgen_hash: cc2876f709808a52d132a5f84e53ca1964eb92db + cbindgen_vendor_hash: cc47db55a1c937e7bcd1cbd8664964656a4922bc35175d95c4015d452f2dcb2b + input_files: - project: container-image - name: rust project: rust # `cargo vendor vendor` in the `cbindgen` directory has vendored the sources. - URL: https://people.torproject.org/~gk/mirrors/sources/cbindgen-vendor-%5B% c('version') %].tar.bz2 - sha256sum: 1c500bc1b8de4eb400f90a528c4b5c6b2c7357e401a95c5354469a18fd365dbc + sha256sum: '[% c("var/cbindgen_vendor_hash") %]' diff --git a/projects/fenix-as-rust/build b/projects/fenix-as-rust/build deleted file mode 100644 index 5d3d5c1..0000000 --- a/projects/fenix-as-rust/build +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -[% c("var/set_default_env") -%] -distdir=/var/tmp/dist/[% project %] -mkdir -p $distdir -tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %] -export PATH="/var/tmp/dist/cmake/bin:$PATH" -tar -C /var/tmp/dist -xf [% c('input_files_by_name/prev_rust') %] -cd /var/tmp/dist/rust-[% c('var/prev_version') %]-x86_64-unknown-linux-gnu -./install.sh --prefix=$distdir-rust-old -export PATH="$distdir-rust-old/bin:$PATH" - -[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %] - -[% IF c("var/osx") %] - # We need to clear `CC` and `LDFLAGS` as they are used for the host platform - # (i.e. Linux). - unset CC - unset LDFLAGS - - mkdir $distdir/helper - # We need to adapt our CFLAGS and make sure our flags are passed down to all - # dependencies. Using `CFLAGS_x86_apple-darwin` did not do the trick, so resort - # to a wrapper script. - cat > $distdir/helper/x86_64-apple-darwin-clang << 'EOF' -#!/bin/sh -BASEDIR=/var/tmp/dist/macosx-toolchain -$BASEDIR/cctools/bin/x86_64-apple-darwin-clang -target x86_64-apple-darwin -B $BASEDIR/cctools/bin -isysroot $BASEDIR/MacOSX10.11.sdk/ -Wl,-syslibroot,$BASEDIR/MacOSX10.11.sdk/ -Wl,-dead_strip -Wl,-pie "$@" -EOF - - chmod +x $distdir/helper/x86_64-apple-darwin-clang - export PATH=$distdir/helper:$PATH -[% END %] - -cd $rootdir -mkdir /var/tmp/build -tar -C /var/tmp/build -xf [% c('input_files_by_name/rust') %] -cd /var/tmp/build/rustc-[% c('version') %]-src - -# LLVM has reproducibility issues when optimizing bitcode, which we need to -# patch. See: #32053 for more details. -cd src/llvm-project -patch -p1 < $rootdir/43909.patch -cd ../../ - -[% IF c("var/windows-i686") %] - # Cross-compiling for Windows 32bit is currently not possible without any - # patches. The reason for that is libstd expecting DWARF unwinding while most - # toolchains on Linux, targeting Windows 32bit, use SjLj unwinding. - # See: https://github.com/rust-lang/rust/issues/12859 for discussion about - # that and https://github.com/rust-lang/rust/pull/49633 for a newer attempt to - # fix this problem. We apply the patch from neersighted. - patch -p1 < $rootdir/unwind.patch -[% END %] - -mkdir build -cd build -../configure --prefix=$distdir [% c("var/configure_opt") %] - -make -j[% c("buildconf/num_procs") %] -make install -cd /var/tmp/dist -[% c('tar', { - tar_src => [ project ], - tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'), - }) %] diff --git a/projects/fenix-as-rust/config b/projects/fenix-as-rust/config deleted file mode 100644 index 4a4ae3c..0000000 --- a/projects/fenix-as-rust/config +++ /dev/null @@ -1,103 +0,0 @@ -# vim: filetype=yaml sw=2 -filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' -version: '[% c("input_file_var/rust_version") %]' - -# Those values can be changed from the input_files section of other -# projects. See bug 32436. -input_file_var: - rust_version: 1.45.2 - prev_version: 1.44.1 - -var: - prev_version: '[% c("input_file_var/prev_version") %]' - container: - use_container: 1 - -targets: - android: - var: - arch_deps: - - libssl-dev - - pkg-config - - zlib1g-dev - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("var/cross_prefix") %] --set=target.[% c("var/cross_prefix") %].cc=[% c("var/CC") %] --set=target.[% c("var/cross_prefix") %].ar=[% c("var/cross_prefix") %]-ar - - android-armv7: - var: - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].cc=[% c("var/CC") %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].ar=[% c("var/cross_prefix") %]-ar - - linux: - var: - deps: - - libc6-dev-i386 - - lib32stdc++6 - - build-essential - - python - - automake - - libssl-dev - - pkg-config - - hardening-wrapper - # We use - # `--enable-local-rust` to avoid downloading the required compiler during - # build time - # - # `--enable-vendor` to avoid downloading crates during build time and just - # use the ones which are shipped with the source - # - # `--enable-extended` to build not only rustc but cargo as well - # - # `--enable-llvm-static-stdccp` to take a libstdc++ on Jessie into account - # which is too old and if used gives undefined reference errors - # - # `--release-channel=stable` to just include stable features in the - # compiler - # - # `--sysconfdir=etc` to avoid install failures as |make install| wants to - # write to /etc otherwise - # - # the `target` triple to explicitly specify the architecture and platform - # for the compiler/std lib. Ideally, it should not be needed unless one is - # cross-compiling, but compiling `alloc_jemalloc` fails without that in a - # 32bit container. "--host=x86_64-unknown-linux-gnu" is used in its - # configure script in this case. - # `--set=` to explicitly specify the C compiler. We need to compile the - # bundled LLVM and it wants to use `cc`. However, we don't have that in - # our compiled GCC resulting in weird errors due to C and C++ compiler - # version mismatch. We avoid that with this configure option. - configure_opt: --enable-local-rust --enable-vendor --enable-extended --enable-llvm-static-stdcpp --release-channel=stable --sysconfdir=etc --target=x86_64-unknown-linux-gnu,i686-unknown-linux-gnu --set=target.x86_64-unknown-linux-gnu.cc=gcc --set=target.i686-unknown-linux-gnu.cc=gcc - - osx-x86_64: - var: - arch_deps: - - libssl-dev - - pkg-config - - zlib1g-dev - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=x86_64-apple-darwin --set=target.x86_64-apple-darwin.cc=x86_64-apple-darwin-clang - - windows: - var: - arch_deps: - - libssl-dev - - pkg-config - - zlib1g-dev - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("arch") %]-pc-windows-gnu - -input_files: - - project: container-image - - project: cmake - name: cmake - - project: '[% c("var/compiler") %]' - name: '[% c("var/compiler") %]' - - URL: 'https://static.rust-lang.org/dist/rustc-%5B% c("version") %]-src.tar.gz' - name: rust - sig_ext: asc - file_gpg_id: 1 - gpg_keyring: rust.gpg - - URL: 'https://static.rust-lang.org/dist/rust-%5B% c("var/prev_version") %]-x86_64-unknown-linux-gnu.tar.xz' - name: prev_rust - sig_ext: asc - file_gpg_id: 1 - gpg_keyring: rust.gpg - - filename: unwind.patch - enable: '[% c("var/windows-i686") %]' - - filename: 43909.patch diff --git a/projects/fenix-as-rust/unwind.patch b/projects/fenix-as-rust/unwind.patch deleted file mode 100644 index 7b22dcb..0000000 --- a/projects/fenix-as-rust/unwind.patch +++ /dev/null @@ -1,162 +0,0 @@ -From b3bea7008ece7a5bdf9b5a5dcc95e82febad1854 Mon Sep 17 00:00:00 2001 -From: Bjorn Neergaard bjorn@neersighted.com -Date: Sat, 9 Feb 2019 19:39:23 +0000 -Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux - -This is still very rough and serves as a proof-of-concept for fixing -Linux -> 32-bit MinGW cross compilation workflow. Currently, clang and -GCC's MinGW targets both only support DW2 (DWARF) or SJLJ (Set Jump Long -Jump) unwinding on 32-bit Windows. - -The default for GCC (and the way it is shipped on every major distro) is -to use SJLJ on Windows, as DWARF cannot traverse non-DWARF frames. This -would work fine, except for the fact that libgcc (our C runtime on the -MinGW platform) exports symbols under a different name when configured -to use SJLJ-style unwinding, and uses a preprocessor macro internally to -alias them. - -Because of this, we have to detect this scenario and link to the correct -symbols ourselves. Linking has been tested with a full bootstrap on both -x86_64-unknown-linux-gnu and i686-pc-windows-gnu, as well as -cross-compilation of some of my own projects. - -Obviously, the detection is a bit unrefined. Right now we -unconditionally use SJLJ when compiling Linux -> MinGW. I'd like to add -feature detection using compiler build flags or autotools-style -compilation and object analysis. Input on the best way to proceed here -is welcome. - -Also, currently there is copy-pasted/duplicated code in libunwind. -Ideally, this could be reduced, but this would likely require a -rethinking of how iOS is special-cased above, to avoid further -duplication. Input on how to best structure this file is requested. - -diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs -index 249a183189..df08d6eb0c 100644 ---- a/src/bootstrap/compile.rs -+++ b/src/bootstrap/compile.rs -@@ -162,7 +162,12 @@ pub fn std_cargo(builder: &Builder<'_>, - .arg("--features") - .arg("compiler-builtins-mem"); - } else { -- let features = builder.std_features(); -+ let mut features = builder.std_features(); -+ -+ // FIXME: Temporary detection of SJLJ MinGW compilers. -+ if builder.config.build.contains("linux") && target == "i686-pc-windows-gnu" { -+ features.push_str(" sjlj_eh"); -+ } - - if compiler.stage != 0 && builder.config.sanitizers { - // This variable is used by the sanitizer runtime crates, e.g. -diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml -index 7d60a17042..d876d0b89a 100644 ---- a/src/libstd/Cargo.toml -+++ b/src/libstd/Cargo.toml -@@ -71,3 +71,4 @@ wasm-bindgen-threads = [] - # https://github.com/rust-lang-nursery/stdsimd/blob/master/crates/std_detect/C... - std_detect_file_io = [] - std_detect_dlsym_getauxval = [] -+sjlj_eh = ["unwind/sjlj_eh"] -diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml -index 2378b0a315..0b5979ed62 100644 ---- a/src/libunwind/Cargo.toml -+++ b/src/libunwind/Cargo.toml -@@ -16,3 +16,6 @@ doc = false - core = { path = "../libcore" } - libc = { version = "0.2.43", features = ['rustc-dep-of-std'], default-features = false } - compiler_builtins = "0.1.0" -+ -+[features] -+sjlj_eh = [] -diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs -index 339b554ed6..ec2f93ed60 100644 ---- a/src/libunwind/libunwind.rs -+++ b/src/libunwind/libunwind.rs -@@ -1,10 +1,5 @@ - #![allow(nonstandard_style)] - --macro_rules! cfg_if { -- ( $( if #[cfg( $meta:meta )] { $($it1:item)* } else { $($it2:item)* } )* ) => -- ( $( $( #[cfg($meta)] $it1)* $( #[cfg(not($meta))] $it2)* )* ) --} -- - use libc::{c_int, c_void, uintptr_t}; - - #[repr(C)] -@@ -73,8 +68,8 @@ pub enum _Unwind_Context {} - pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code, - exception: *mut _Unwind_Exception); - extern "C" { -- #[unwind(allowed)] -- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !; -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] - pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception); - pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void; - pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr; -@@ -206,26 +201,52 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm - pc - } - } -+} // cfg_if! - --if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] { -- // Not 32-bit iOS -+cfg_if! { -+if #[cfg(all(target_os = "ios", target_arch = "arm"))] { -+ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace() - extern "C" { -- #[unwind(allowed)] -- pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] -+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !; -+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ } -+ -+ #[inline] -+ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code { -+ _Unwind_SjLj_RaiseException(exc) -+ } -+ -+} else if #[cfg(feature = "sjlj_eh")] { -+ extern "C" { -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] -+ pub fn _Unwind_SjLj_Resume(e: *mut _Unwind_Exception) -> !; -+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code; - pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn, - trace_argument: *mut c_void) - -> _Unwind_Reason_Code; - } --} else { -- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace() -- extern "C" { -- #[unwind(allowed)] -- pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ -+ #[inline] -+ pub unsafe fn _Unwind_Resume(exc: *mut _Unwind_Exception) -> ! { -+ _Unwind_SjLj_Resume(exc) - } - - #[inline] - pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code { - _Unwind_SjLj_RaiseException(exc) - } -+} else { -+ extern "C" { -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] -+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !; -+ pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn, -+ trace_argument: *mut c_void) -+ -> _Unwind_Reason_Code; -+ } - } - } // cfg_if! --- -2.23.0.rc0 - diff --git a/projects/fenix-cbindgen/build b/projects/fenix-cbindgen/build deleted file mode 100644 index c63a783..0000000 --- a/projects/fenix-cbindgen/build +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -[% c("var/set_default_env") -%] -distdir=/var/tmp/dist -builddir=/var/tmp/build/[% project %] -mkdir -p $distdir/[% project %] -tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/rust') %] -export PATH="/var/tmp/dist/fenix-rust/bin:$PATH" -mkdir -p /var/tmp/build -tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz - -# Now prepare the offline build -# Move the directory for hardcoding the path in .cargo/config -mv /var/tmp/build/[% project %]-[% c('version') %] $builddir -tar -C $builddir -xjf cbindgen-vendor-[% c('version') %].tar.bz2 -cd $builddir -mkdir .cargo -cat > .cargo/config << 'EOF' -[source.crates-io] -replace-with = "vendored-sources" - -[source.vendored-sources] -directory = "/var/tmp/build/fenix-cbindgen/vendor" -EOF - -cargo build --release --frozen --target x86_64-unknown-linux-gnu -mv target/x86_64-unknown-linux-gnu/release/cbindgen $distdir/[% project %] - -cd $distdir -[% c('tar', { - tar_src => [ project ], - tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'), - }) %] diff --git a/projects/fenix-cbindgen/config b/projects/fenix-cbindgen/config deleted file mode 100644 index c081451..0000000 --- a/projects/fenix-cbindgen/config +++ /dev/null @@ -1,16 +0,0 @@ -# vim: filetype=yaml sw=2 -version: 0.14.3 -git_url: https://github.com/eqrion/cbindgen -git_hash: cc2876f709808a52d132a5f84e53ca1964eb92db # v0.14.3 -filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz' - -var: - container: - use_container: 1 -input_files: - - project: container-image - - name: rust - project: fenix-rust - # `cargo vendor vendor` in the `cbindgen` directory has vendored the sources. - - URL: https://people.torproject.org/~gk/mirrors/sources/cbindgen-vendor-%5B% c('version') %].tar.bz2 - sha256sum: cc47db55a1c937e7bcd1cbd8664964656a4922bc35175d95c4015d452f2dcb2b diff --git a/projects/fenix-rust/43909.patch b/projects/fenix-rust/43909.patch deleted file mode 100644 index 78d2a75..0000000 --- a/projects/fenix-rust/43909.patch +++ /dev/null @@ -1,252 +0,0 @@ -From c95310f2d4fd3c88241c3b5d6dbf6251d34a3256 Mon Sep 17 00:00:00 2001 -From: Nikita Popov nikita.ppv@gmail.com -Date: Sat, 16 Nov 2019 16:22:18 +0100 -Subject: [PATCH] Restructure caching - -Variant on D70103. The caching is switched to always use a BB to -cache entry map, which then contains per-value caches. A separate -set contains value handles with a deletion callback. This allows us -to properly invalidate overdefined values. - -A possible alternative would be to always cache by value first and -have per-BB maps/sets in the each cache entry. In that case we could -use a ValueMap and would avoid the separate value handle set. I went -with the BB indexing at the top level to make it easier to integrate -D69914, but possibly that's not the right choice. - -Differential Revision: https://reviews.llvm.org/D70376 - -diff --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp -index 110c085d3f3..aa6862cb588 100644 ---- a/llvm/lib/Analysis/LazyValueInfo.cpp -+++ b/llvm/lib/Analysis/LazyValueInfo.cpp -@@ -133,12 +133,9 @@ namespace { - /// A callback value handle updates the cache when values are erased. - class LazyValueInfoCache; - struct LVIValueHandle final : public CallbackVH { -- // Needs to access getValPtr(), which is protected. -- friend struct DenseMapInfo<LVIValueHandle>; -- - LazyValueInfoCache *Parent; - -- LVIValueHandle(Value *V, LazyValueInfoCache *P) -+ LVIValueHandle(Value *V, LazyValueInfoCache *P = nullptr) - : CallbackVH(V), Parent(P) { } - - void deleted() override; -@@ -152,89 +149,63 @@ namespace { - /// This is the cache kept by LazyValueInfo which - /// maintains information about queries across the clients' queries. - class LazyValueInfoCache { -- /// This is all of the cached block information for exactly one Value*. -- /// The entries are sorted by the BasicBlock* of the -- /// entries, allowing us to do a lookup with a binary search. -- /// Over-defined lattice values are recorded in OverDefinedCache to reduce -- /// memory overhead. -- struct ValueCacheEntryTy { -- ValueCacheEntryTy(Value *V, LazyValueInfoCache *P) : Handle(V, P) {} -- LVIValueHandle Handle; -- SmallDenseMap<PoisoningVH<BasicBlock>, ValueLatticeElement, 4> BlockVals; -+ /// This is all of the cached information for one basic block. It contains -+ /// the per-value lattice elements, as well as a separate set for -+ /// overdefined values to reduce memory usage. -+ struct BlockCacheEntryTy { -+ SmallDenseMap<AssertingVH<Value>, ValueLatticeElement, 4> LatticeElements; -+ SmallDenseSet<AssertingVH<Value>, 4> OverDefined; - }; - -- /// This tracks, on a per-block basis, the set of values that are -- /// over-defined at the end of that block. -- typedef DenseMap<PoisoningVH<BasicBlock>, SmallPtrSet<Value *, 4>> -- OverDefinedCacheTy; -- /// Keep track of all blocks that we have ever seen, so we -- /// don't spend time removing unused blocks from our caches. -- DenseSet<PoisoningVH<BasicBlock> > SeenBlocks; -- -- /// This is all of the cached information for all values, -- /// mapped from Value* to key information. -- DenseMap<Value *, std::unique_ptr<ValueCacheEntryTy>> ValueCache; -- OverDefinedCacheTy OverDefinedCache; -- -+ /// Cached information per basic block. -+ DenseMap<PoisoningVH<BasicBlock>, BlockCacheEntryTy> BlockCache; -+ /// Set of value handles used to erase values from the cache on deletion. -+ DenseSet<LVIValueHandle, DenseMapInfo<Value *>> ValueHandles; - - public: - void insertResult(Value *Val, BasicBlock *BB, - const ValueLatticeElement &Result) { -- SeenBlocks.insert(BB); -- -+ auto &CacheEntry = BlockCache.try_emplace(BB).first->second; - // Insert over-defined values into their own cache to reduce memory - // overhead. - if (Result.isOverdefined()) -- OverDefinedCache[BB].insert(Val); -- else { -- auto It = ValueCache.find_as(Val); -- if (It == ValueCache.end()) { -- ValueCache[Val] = make_unique<ValueCacheEntryTy>(Val, this); -- It = ValueCache.find_as(Val); -- assert(It != ValueCache.end() && "Val was just added to the map!"); -- } -- It->second->BlockVals[BB] = Result; -- } -- } -- -- bool isOverdefined(Value *V, BasicBlock *BB) const { -- auto ODI = OverDefinedCache.find(BB); -- -- if (ODI == OverDefinedCache.end()) -- return false; -+ CacheEntry.OverDefined.insert(Val); -+ else -+ CacheEntry.LatticeElements.insert({ Val, Result }); - -- return ODI->second.count(V); -+ auto HandleIt = ValueHandles.find_as(Val); -+ if (HandleIt == ValueHandles.end()) -+ ValueHandles.insert({ Val, this }); - } - - bool hasCachedValueInfo(Value *V, BasicBlock *BB) const { -- if (isOverdefined(V, BB)) -- return true; -- -- auto I = ValueCache.find_as(V); -- if (I == ValueCache.end()) -+ auto It = BlockCache.find(BB); -+ if (It == BlockCache.end()) - return false; - -- return I->second->BlockVals.count(BB); -+ return It->second.OverDefined.count(V) || -+ It->second.LatticeElements.count(V); - } - - ValueLatticeElement getCachedValueInfo(Value *V, BasicBlock *BB) const { -- if (isOverdefined(V, BB)) -+ auto It = BlockCache.find(BB); -+ if (It == BlockCache.end()) -+ return ValueLatticeElement(); -+ -+ if (It->second.OverDefined.count(V)) - return ValueLatticeElement::getOverdefined(); - -- auto I = ValueCache.find_as(V); -- if (I == ValueCache.end()) -+ auto LatticeIt = It->second.LatticeElements.find(V); -+ if (LatticeIt == It->second.LatticeElements.end()) - return ValueLatticeElement(); -- auto BBI = I->second->BlockVals.find(BB); -- if (BBI == I->second->BlockVals.end()) -- return ValueLatticeElement(); -- return BBI->second; -+ -+ return LatticeIt->second; - } - - /// clear - Empty the cache. - void clear() { -- SeenBlocks.clear(); -- ValueCache.clear(); -- OverDefinedCache.clear(); -+ BlockCache.clear(); -+ ValueHandles.clear(); - } - - /// Inform the cache that a given value has been deleted. -@@ -248,23 +219,18 @@ namespace { - /// OldSucc might have (unless also overdefined in NewSucc). This just - /// flushes elements from the cache and does not add any. - void threadEdgeImpl(BasicBlock *OldSucc,BasicBlock *NewSucc); -- -- friend struct LVIValueHandle; - }; - } - - void LazyValueInfoCache::eraseValue(Value *V) { -- for (auto I = OverDefinedCache.begin(), E = OverDefinedCache.end(); I != E;) { -- // Copy and increment the iterator immediately so we can erase behind -- // ourselves. -- auto Iter = I++; -- SmallPtrSetImpl<Value *> &ValueSet = Iter->second; -- ValueSet.erase(V); -- if (ValueSet.empty()) -- OverDefinedCache.erase(Iter); -+ for (auto &Pair : BlockCache) { -+ Pair.second.LatticeElements.erase(V); -+ Pair.second.OverDefined.erase(V); - } - -- ValueCache.erase(V); -+ auto HandleIt = ValueHandles.find_as(V); -+ if (HandleIt != ValueHandles.end()) -+ ValueHandles.erase(HandleIt); - } - - void LVIValueHandle::deleted() { -@@ -274,18 +240,7 @@ void LVIValueHandle::deleted() { - } - - void LazyValueInfoCache::eraseBlock(BasicBlock *BB) { -- // Shortcut if we have never seen this block. -- DenseSet<PoisoningVH<BasicBlock> >::iterator I = SeenBlocks.find(BB); -- if (I == SeenBlocks.end()) -- return; -- SeenBlocks.erase(I); -- -- auto ODI = OverDefinedCache.find(BB); -- if (ODI != OverDefinedCache.end()) -- OverDefinedCache.erase(ODI); -- -- for (auto &I : ValueCache) -- I.second->BlockVals.erase(BB); -+ BlockCache.erase(BB); - } - - void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, -@@ -303,10 +258,11 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, - std::vector<BasicBlock*> worklist; - worklist.push_back(OldSucc); - -- auto I = OverDefinedCache.find(OldSucc); -- if (I == OverDefinedCache.end()) -+ auto I = BlockCache.find(OldSucc); -+ if (I == BlockCache.end() || I->second.OverDefined.empty()) - return; // Nothing to process here. -- SmallVector<Value *, 4> ValsToClear(I->second.begin(), I->second.end()); -+ SmallVector<Value *, 4> ValsToClear(I->second.OverDefined.begin(), -+ I->second.OverDefined.end()); - - // Use a worklist to perform a depth-first search of OldSucc's successors. - // NOTE: We do not need a visited list since any blocks we have already -@@ -320,10 +276,10 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, - if (ToUpdate == NewSucc) continue; - - // If a value was marked overdefined in OldSucc, and is here too... -- auto OI = OverDefinedCache.find(ToUpdate); -- if (OI == OverDefinedCache.end()) -+ auto OI = BlockCache.find(ToUpdate); -+ if (OI == BlockCache.end() || OI->second.OverDefined.empty()) - continue; -- SmallPtrSetImpl<Value *> &ValueSet = OI->second; -+ auto &ValueSet = OI->second.OverDefined; - - bool changed = false; - for (Value *V : ValsToClear) { -@@ -333,11 +289,6 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, - // If we removed anything, then we potentially need to update - // blocks successors too. - changed = true; -- -- if (ValueSet.empty()) { -- OverDefinedCache.erase(OI); -- break; -- } - } - - if (!changed) continue; --- -2.24.0 - diff --git a/projects/fenix-rust/build b/projects/fenix-rust/build deleted file mode 100644 index 5d3d5c1..0000000 --- a/projects/fenix-rust/build +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -[% c("var/set_default_env") -%] -distdir=/var/tmp/dist/[% project %] -mkdir -p $distdir -tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %] -export PATH="/var/tmp/dist/cmake/bin:$PATH" -tar -C /var/tmp/dist -xf [% c('input_files_by_name/prev_rust') %] -cd /var/tmp/dist/rust-[% c('var/prev_version') %]-x86_64-unknown-linux-gnu -./install.sh --prefix=$distdir-rust-old -export PATH="$distdir-rust-old/bin:$PATH" - -[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %] - -[% IF c("var/osx") %] - # We need to clear `CC` and `LDFLAGS` as they are used for the host platform - # (i.e. Linux). - unset CC - unset LDFLAGS - - mkdir $distdir/helper - # We need to adapt our CFLAGS and make sure our flags are passed down to all - # dependencies. Using `CFLAGS_x86_apple-darwin` did not do the trick, so resort - # to a wrapper script. - cat > $distdir/helper/x86_64-apple-darwin-clang << 'EOF' -#!/bin/sh -BASEDIR=/var/tmp/dist/macosx-toolchain -$BASEDIR/cctools/bin/x86_64-apple-darwin-clang -target x86_64-apple-darwin -B $BASEDIR/cctools/bin -isysroot $BASEDIR/MacOSX10.11.sdk/ -Wl,-syslibroot,$BASEDIR/MacOSX10.11.sdk/ -Wl,-dead_strip -Wl,-pie "$@" -EOF - - chmod +x $distdir/helper/x86_64-apple-darwin-clang - export PATH=$distdir/helper:$PATH -[% END %] - -cd $rootdir -mkdir /var/tmp/build -tar -C /var/tmp/build -xf [% c('input_files_by_name/rust') %] -cd /var/tmp/build/rustc-[% c('version') %]-src - -# LLVM has reproducibility issues when optimizing bitcode, which we need to -# patch. See: #32053 for more details. -cd src/llvm-project -patch -p1 < $rootdir/43909.patch -cd ../../ - -[% IF c("var/windows-i686") %] - # Cross-compiling for Windows 32bit is currently not possible without any - # patches. The reason for that is libstd expecting DWARF unwinding while most - # toolchains on Linux, targeting Windows 32bit, use SjLj unwinding. - # See: https://github.com/rust-lang/rust/issues/12859 for discussion about - # that and https://github.com/rust-lang/rust/pull/49633 for a newer attempt to - # fix this problem. We apply the patch from neersighted. - patch -p1 < $rootdir/unwind.patch -[% END %] - -mkdir build -cd build -../configure --prefix=$distdir [% c("var/configure_opt") %] - -make -j[% c("buildconf/num_procs") %] -make install -cd /var/tmp/dist -[% c('tar', { - tar_src => [ project ], - tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'), - }) %] diff --git a/projects/fenix-rust/config b/projects/fenix-rust/config deleted file mode 100644 index 0f08463..0000000 --- a/projects/fenix-rust/config +++ /dev/null @@ -1,103 +0,0 @@ -# vim: filetype=yaml sw=2 -filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' -version: '[% c("input_file_var/rust_version") %]' - -# Those values can be changed from the input_files section of other -# projects. See bug 32436. -input_file_var: - rust_version: 1.43.0 - prev_version: 1.42.0 - -var: - prev_version: '[% c("input_file_var/prev_version") %]' - container: - use_container: 1 - -targets: - android: - var: - arch_deps: - - libssl-dev - - pkg-config - - zlib1g-dev - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("var/cross_prefix") %] --set=target.[% c("var/cross_prefix") %].cc=[% c("var/CC") %] --set=target.[% c("var/cross_prefix") %].ar=[% c("var/cross_prefix") %]-ar - - android-armv7: - var: - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].cc=[% c("var/CC") %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].ar=[% c("var/cross_prefix") %]-ar - - linux: - var: - deps: - - libc6-dev-i386 - - lib32stdc++6 - - build-essential - - python - - automake - - libssl-dev - - pkg-config - - hardening-wrapper - # We use - # `--enable-local-rust` to avoid downloading the required compiler during - # build time - # - # `--enable-vendor` to avoid downloading crates during build time and just - # use the ones which are shipped with the source - # - # `--enable-extended` to build not only rustc but cargo as well - # - # `--enable-llvm-static-stdccp` to take a libstdc++ on Jessie into account - # which is too old and if used gives undefined reference errors - # - # `--release-channel=stable` to just include stable features in the - # compiler - # - # `--sysconfdir=etc` to avoid install failures as |make install| wants to - # write to /etc otherwise - # - # the `target` triple to explicitly specify the architecture and platform - # for the compiler/std lib. Ideally, it should not be needed unless one is - # cross-compiling, but compiling `alloc_jemalloc` fails without that in a - # 32bit container. "--host=x86_64-unknown-linux-gnu" is used in its - # configure script in this case. - # `--set=` to explicitly specify the C compiler. We need to compile the - # bundled LLVM and it wants to use `cc`. However, we don't have that in - # our compiled GCC resulting in weird errors due to C and C++ compiler - # version mismatch. We avoid that with this configure option. - configure_opt: --enable-local-rust --enable-vendor --enable-extended --enable-llvm-static-stdcpp --release-channel=stable --sysconfdir=etc --target=x86_64-unknown-linux-gnu,i686-unknown-linux-gnu --set=target.x86_64-unknown-linux-gnu.cc=gcc --set=target.i686-unknown-linux-gnu.cc=gcc - - osx-x86_64: - var: - arch_deps: - - libssl-dev - - pkg-config - - zlib1g-dev - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=x86_64-apple-darwin --set=target.x86_64-apple-darwin.cc=x86_64-apple-darwin-clang - - windows: - var: - arch_deps: - - libssl-dev - - pkg-config - - zlib1g-dev - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("arch") %]-pc-windows-gnu - -input_files: - - project: container-image - - project: cmake - name: cmake - - project: '[% c("var/compiler") %]' - name: '[% c("var/compiler") %]' - - URL: 'https://static.rust-lang.org/dist/rustc-%5B% c("version") %]-src.tar.gz' - name: rust - sig_ext: asc - file_gpg_id: 1 - gpg_keyring: rust.gpg - - URL: 'https://static.rust-lang.org/dist/rust-%5B% c("var/prev_version") %]-x86_64-unknown-linux-gnu.tar.xz' - name: prev_rust - sig_ext: asc - file_gpg_id: 1 - gpg_keyring: rust.gpg - - filename: unwind.patch - enable: '[% c("var/windows-i686") %]' - - filename: 43909.patch diff --git a/projects/fenix-rust/unwind.patch b/projects/fenix-rust/unwind.patch deleted file mode 100644 index 7b22dcb..0000000 --- a/projects/fenix-rust/unwind.patch +++ /dev/null @@ -1,162 +0,0 @@ -From b3bea7008ece7a5bdf9b5a5dcc95e82febad1854 Mon Sep 17 00:00:00 2001 -From: Bjorn Neergaard bjorn@neersighted.com -Date: Sat, 9 Feb 2019 19:39:23 +0000 -Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux - -This is still very rough and serves as a proof-of-concept for fixing -Linux -> 32-bit MinGW cross compilation workflow. Currently, clang and -GCC's MinGW targets both only support DW2 (DWARF) or SJLJ (Set Jump Long -Jump) unwinding on 32-bit Windows. - -The default for GCC (and the way it is shipped on every major distro) is -to use SJLJ on Windows, as DWARF cannot traverse non-DWARF frames. This -would work fine, except for the fact that libgcc (our C runtime on the -MinGW platform) exports symbols under a different name when configured -to use SJLJ-style unwinding, and uses a preprocessor macro internally to -alias them. - -Because of this, we have to detect this scenario and link to the correct -symbols ourselves. Linking has been tested with a full bootstrap on both -x86_64-unknown-linux-gnu and i686-pc-windows-gnu, as well as -cross-compilation of some of my own projects. - -Obviously, the detection is a bit unrefined. Right now we -unconditionally use SJLJ when compiling Linux -> MinGW. I'd like to add -feature detection using compiler build flags or autotools-style -compilation and object analysis. Input on the best way to proceed here -is welcome. - -Also, currently there is copy-pasted/duplicated code in libunwind. -Ideally, this could be reduced, but this would likely require a -rethinking of how iOS is special-cased above, to avoid further -duplication. Input on how to best structure this file is requested. - -diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs -index 249a183189..df08d6eb0c 100644 ---- a/src/bootstrap/compile.rs -+++ b/src/bootstrap/compile.rs -@@ -162,7 +162,12 @@ pub fn std_cargo(builder: &Builder<'_>, - .arg("--features") - .arg("compiler-builtins-mem"); - } else { -- let features = builder.std_features(); -+ let mut features = builder.std_features(); -+ -+ // FIXME: Temporary detection of SJLJ MinGW compilers. -+ if builder.config.build.contains("linux") && target == "i686-pc-windows-gnu" { -+ features.push_str(" sjlj_eh"); -+ } - - if compiler.stage != 0 && builder.config.sanitizers { - // This variable is used by the sanitizer runtime crates, e.g. -diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml -index 7d60a17042..d876d0b89a 100644 ---- a/src/libstd/Cargo.toml -+++ b/src/libstd/Cargo.toml -@@ -71,3 +71,4 @@ wasm-bindgen-threads = [] - # https://github.com/rust-lang-nursery/stdsimd/blob/master/crates/std_detect/C... - std_detect_file_io = [] - std_detect_dlsym_getauxval = [] -+sjlj_eh = ["unwind/sjlj_eh"] -diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml -index 2378b0a315..0b5979ed62 100644 ---- a/src/libunwind/Cargo.toml -+++ b/src/libunwind/Cargo.toml -@@ -16,3 +16,6 @@ doc = false - core = { path = "../libcore" } - libc = { version = "0.2.43", features = ['rustc-dep-of-std'], default-features = false } - compiler_builtins = "0.1.0" -+ -+[features] -+sjlj_eh = [] -diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs -index 339b554ed6..ec2f93ed60 100644 ---- a/src/libunwind/libunwind.rs -+++ b/src/libunwind/libunwind.rs -@@ -1,10 +1,5 @@ - #![allow(nonstandard_style)] - --macro_rules! cfg_if { -- ( $( if #[cfg( $meta:meta )] { $($it1:item)* } else { $($it2:item)* } )* ) => -- ( $( $( #[cfg($meta)] $it1)* $( #[cfg(not($meta))] $it2)* )* ) --} -- - use libc::{c_int, c_void, uintptr_t}; - - #[repr(C)] -@@ -73,8 +68,8 @@ pub enum _Unwind_Context {} - pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code, - exception: *mut _Unwind_Exception); - extern "C" { -- #[unwind(allowed)] -- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !; -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] - pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception); - pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void; - pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr; -@@ -206,26 +201,52 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm - pc - } - } -+} // cfg_if! - --if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] { -- // Not 32-bit iOS -+cfg_if! { -+if #[cfg(all(target_os = "ios", target_arch = "arm"))] { -+ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace() - extern "C" { -- #[unwind(allowed)] -- pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] -+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !; -+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ } -+ -+ #[inline] -+ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code { -+ _Unwind_SjLj_RaiseException(exc) -+ } -+ -+} else if #[cfg(feature = "sjlj_eh")] { -+ extern "C" { -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] -+ pub fn _Unwind_SjLj_Resume(e: *mut _Unwind_Exception) -> !; -+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code; - pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn, - trace_argument: *mut c_void) - -> _Unwind_Reason_Code; - } --} else { -- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace() -- extern "C" { -- #[unwind(allowed)] -- pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ -+ #[inline] -+ pub unsafe fn _Unwind_Resume(exc: *mut _Unwind_Exception) -> ! { -+ _Unwind_SjLj_Resume(exc) - } - - #[inline] - pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code { - _Unwind_SjLj_RaiseException(exc) - } -+} else { -+ extern "C" { -+ #[cfg_attr(stage0, unwind)] -+ #[cfg_attr(not(stage0), unwind(allowed))] -+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !; -+ pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code; -+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn, -+ trace_argument: *mut c_void) -+ -> _Unwind_Reason_Code; -+ } - } - } // cfg_if! --- -2.23.0.rc0 - diff --git a/projects/geckoview/build b/projects/geckoview/build index b07bd2b..8296856 100644 --- a/projects/geckoview/build +++ b/projects/geckoview/build @@ -20,7 +20,7 @@ tar -C /var/tmp/dist -xf [% c('input_files_by_name/node') %] tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %] export LLVM_CONFIG="/var/tmp/dist/clang/bin/llvm-config" tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %] -export PATH="/var/tmp/dist/fenix-rust/bin:/var/tmp/dist/fenix-cbindgen:/var/tmp/dist/nasm/bin:/var/tmp/dist/python/bin:/var/tmp/dist/node/bin:/var/tmp/dist/fenix-clang/bin:/var/tmp/dist/binutils/bin:$PATH" +export PATH="/var/tmp/dist/rust/bin:/var/tmp/dist/cbindgen:/var/tmp/dist/nasm/bin:/var/tmp/dist/python/bin:/var/tmp/dist/node/bin:/var/tmp/dist/fenix-clang/bin:/var/tmp/dist/binutils/bin:$PATH"
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
diff --git a/projects/geckoview/config b/projects/geckoview/config index 92d4a1b..c9eb23e 100644 --- a/projects/geckoview/config +++ b/projects/geckoview/config @@ -144,9 +144,9 @@ input_files: name: mozconfig - project: binutils name: binutils - - project: fenix-rust + - project: rust name: rust - - project: fenix-cbindgen + - project: cbindgen name: cbindgen - project: node name: node diff --git a/projects/fenix-as-rust/43909.patch b/projects/rust/43909_145.patch similarity index 100% rename from projects/fenix-as-rust/43909.patch rename to projects/rust/43909_145.patch diff --git a/projects/rust/build b/projects/rust/build index 5d3d5c1..8accf56 100644 --- a/projects/rust/build +++ b/projects/rust/build @@ -4,8 +4,8 @@ distdir=/var/tmp/dist/[% project %] mkdir -p $distdir tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %] export PATH="/var/tmp/dist/cmake/bin:$PATH" -tar -C /var/tmp/dist -xf [% c('input_files_by_name/prev_rust') %] -cd /var/tmp/dist/rust-[% c('var/prev_version') %]-x86_64-unknown-linux-gnu +tar -C /var/tmp/dist -xf [% c('input_files_by_name/previous_rust') %] +cd /var/tmp/dist/rust-[% c('var/previous_version') %]-x86_64-unknown-linux-gnu ./install.sh --prefix=$distdir-rust-old export PATH="$distdir-rust-old/bin:$PATH"
@@ -39,7 +39,7 @@ cd /var/tmp/build/rustc-[% c('version') %]-src # LLVM has reproducibility issues when optimizing bitcode, which we need to # patch. See: #32053 for more details. cd src/llvm-project -patch -p1 < $rootdir/43909.patch +patch -p1 < $rootdir/[% c('input_files_by_name/43909') %] cd ../../
[% IF c("var/windows-i686") %] diff --git a/projects/rust/config b/projects/rust/config index af94f05..d4529c8 100644 --- a/projects/rust/config +++ b/projects/rust/config @@ -1,40 +1,27 @@ # vim: filetype=yaml sw=2 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' -version: '[% c("input_file_var/rust_version") %]' - -# Those values can be changed from the input_files section of other -# projects. See bug 32436. -input_file_var: - rust_version: 1.43.0 - prev_version: 1.42.0 +version: '[% c("var/current_version") %]'
var: - prev_version: '[% c("input_file_var/prev_version") %]' + current_version: 1.43.0 + previous_version: 1.42.0 container: use_container: 1
targets: android: var: + current_version: '[% IF pc(c("origin_project"), "var/application_services") %]1.45.2[% ELSE %]1.43.0[% END %]' + previous_version: '[% IF pc(c("origin_project"), "var/application_services") %]1.44.1[% ELSE %]1.42.0[% END %]' arch_deps: - libssl-dev - pkg-config - zlib1g-dev - android-armv7: - var: - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=thumbv7neon-linux-androideabi --set=target.thumbv7neon-linux-androideabi.cc=$ANDROID_NDK_HOME/arm/bin/arm-linux-androideabi-gcc - - android-x86: - var: - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=i686-linux-android --set=target.i686-linux-android.cc=$ANDROID_NDK_HOME/x86/bin/i686-linux-android-gcc - - android-x86_64: - var: - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=x86_64-linux-android --set=target.x86_64-linux-android.cc=$ANDROID_NDK_HOME/x86_64/bin/x86_64-linux-android-gcc + configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("var/cross_prefix") %] --set=target.[% c("var/cross_prefix") %].cc=[% c("var/CC") %] --set=target.[% c("var/cross_prefix") %].ar=[% c("var/cross_prefix") %]-ar
- android-aarch64: + android-armv7: var: - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=aarch64-linux-android --set=target.aarch64-linux-android.cc=$ANDROID_NDK_HOME/arm64/bin/aarch64-linux-android-gcc + configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].cc=[% c("var/CC") %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].ar=[% c("var/cross_prefix") %]-ar
linux: var: @@ -98,16 +85,21 @@ input_files: name: cmake - project: '[% c("var/compiler") %]' name: '[% c("var/compiler") %]' - - URL: 'https://static.rust-lang.org/dist/rustc-%5B% c("version") %]-src.tar.gz' + - URL: 'https://static.rust-lang.org/dist/rustc-%5B% c("var/current_version") %]-src.tar.gz' name: rust sig_ext: asc file_gpg_id: 1 gpg_keyring: rust.gpg - - URL: 'https://static.rust-lang.org/dist/rust-%5B% c("var/prev_version") %]-x86_64-unknown-linux-gnu.tar.xz' - name: prev_rust + - URL: 'https://static.rust-lang.org/dist/rust-%5B% c("var/previous_version") %]-x86_64-unknown-linux-gnu.tar.xz' + name: previous_rust sig_ext: asc file_gpg_id: 1 gpg_keyring: rust.gpg - filename: unwind.patch enable: '[% c("var/windows-i686") %]' - filename: 43909.patch + name: 43909 + enable: '[% ! pc(c("origin_project"), "var/application_services") %]' + - filename: 43909_145.patch + name: 43909 + enable: '[% pc(c("origin_project"), "var/application_services") %]'