summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2019-11-19 06:15:35 +0000
committer Eric Hameleers <alien@slackware.com>2019-11-19 17:59:50 +0100
commit7ee27456e2684ea8fc924497c44049dd1ad15925 (patch)
tree5db715363fb47527d22cceea2e75ce33cedc3924 /source
parentfa3f92ac782f8531079bf9584fe6714fc3d7c5ed (diff)
downloadcurrent-7ee27456e2684ea8fc924497c44049dd1ad15925.tar.gz
current-7ee27456e2684ea8fc924497c44049dd1ad15925.tar.xz
Tue Nov 19 06:15:35 UTC 201920191119061535
d/rust-1.39.0-x86_64-1.txz: Upgraded.
Diffstat (limited to 'source')
-rw-r--r--source/d/rust/0001-WIP-minimize-the-rust-std-component.patch55
-rw-r--r--source/d/rust/hack.diff29
-rwxr-xr-xsource/d/rust/rust.SlackBuild23
-rw-r--r--source/d/rust/rust.url14
-rw-r--r--source/xap/FTBFSlog4
-rw-r--r--source/xap/mozilla-firefox/firefox-rust-1.39.x.patch172
-rw-r--r--source/xap/mozilla-firefox/firefox.node.py.patch46
-rwxr-xr-xsource/xap/mozilla-firefox/mozilla-firefox.SlackBuild4
-rw-r--r--source/xap/mozilla-thunderbird/firefox.node.py.patch46
-rwxr-xr-xsource/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild4
-rw-r--r--source/xap/mozilla-thunderbird/thunderbird-rust-1.39.x.patch172
11 files changed, 553 insertions, 16 deletions
diff --git a/source/d/rust/0001-WIP-minimize-the-rust-std-component.patch b/source/d/rust/0001-WIP-minimize-the-rust-std-component.patch
new file mode 100644
index 00000000..e46a7265
--- /dev/null
+++ b/source/d/rust/0001-WIP-minimize-the-rust-std-component.patch
@@ -0,0 +1,55 @@
+--- ./src/bootstrap/dist.rs.orig 2019-11-07 16:25:16.099477103 -0600
++++ ./src/bootstrap/dist.rs 2019-11-07 16:31:36.510445625 -0600
+@@ -675,36 +675,28 @@
+ return distdir(builder).join(format!("{}-{}.tar.gz", name, target));
+ }
+
+- // We want to package up as many target libraries as possible
+- // for the `rust-std` package, so if this is a host target we
+- // depend on librustc and otherwise we just depend on libtest.
+- if builder.hosts.iter().any(|t| t == target) {
+- builder.ensure(compile::Rustc { compiler, target });
+- } else {
+- builder.ensure(compile::Std { compiler, target });
+- }
++ builder.ensure(compile::Std { compiler, target });
++ builder.ensure(compile::Rustc { compiler, target });
+
+ let image = tmpdir(builder).join(format!("{}-{}-image", name, target));
+ let _ = fs::remove_dir_all(&image);
+
+- let dst = image.join("lib/rustlib").join(target);
++ let dst = image.join("lib/rustlib").join(target).join("lib");
+ t!(fs::create_dir_all(&dst));
+- let mut src = builder.sysroot_libdir(compiler, target).to_path_buf();
+- src.pop(); // Remove the trailing /lib folder from the sysroot_libdir
+- builder.cp_filtered(&src, &dst, &|path| {
+- if let Some(name) = path.file_name().and_then(|s| s.to_str()) {
+- if name == builder.config.rust_codegen_backends_dir.as_str() {
+- return false
+- }
+- if name == "bin" {
+- return false
+- }
+- if name.contains("LLVM") {
+- return false
+- }
++
++ let compiler_to_use = builder.compiler_for(compiler.stage, compiler.host, target);
++ let stamp = dbg!(compile::libstd_stamp(builder, compiler_to_use, target));
++ for (path, host) in builder.read_stamp_file(&stamp) {
++ if !host {
++ builder.copy(&path, &dst.join(path.file_name().unwrap()));
+ }
+- true
+- });
++ }
++ let stamp = dbg!(compile::librustc_stamp(builder, compiler_to_use, target));
++ for (path, host) in builder.read_stamp_file(&stamp) {
++ if !host {
++ builder.copy(&path, &dst.join(path.file_name().unwrap()));
++ }
++ }
+
+ let mut cmd = rust_installer(builder);
+ cmd.arg("generate")
diff --git a/source/d/rust/hack.diff b/source/d/rust/hack.diff
new file mode 100644
index 00000000..c5031fb0
--- /dev/null
+++ b/source/d/rust/hack.diff
@@ -0,0 +1,29 @@
+--- ./src/bootstrap/dist.rs.orig 2019-11-07 18:12:33.835944390 -0600
++++ ./src/bootstrap/dist.rs 2019-11-07 22:05:17.991788876 -0600
+@@ -676,7 +676,6 @@
+ }
+
+ builder.ensure(compile::Std { compiler, target });
+- builder.ensure(compile::Rustc { compiler, target });
+
+ let image = tmpdir(builder).join(format!("{}-{}-image", name, target));
+ let _ = fs::remove_dir_all(&image);
+@@ -691,12 +690,12 @@
+ builder.copy(&path, &dst.join(path.file_name().unwrap()));
+ }
+ }
+- let stamp = dbg!(compile::librustc_stamp(builder, compiler_to_use, target));
+- for (path, host) in builder.read_stamp_file(&stamp) {
+- if !host {
+- builder.copy(&path, &dst.join(path.file_name().unwrap()));
+- }
+- }
++ // let stamp = dbg!(compile::librustc_stamp(builder, compiler_to_use, target));
++ // for (path, host) in builder.read_stamp_file(&stamp) {
++ // if !host {
++ // builder.copy(&path, &dst.join(path.file_name().unwrap()));
++ // }
++ // }
+
+ let mut cmd = rust_installer(builder);
+ cmd.arg("generate")
diff --git a/source/d/rust/rust.SlackBuild b/source/d/rust/rust.SlackBuild
index 7e6b3dbc..2dee9b21 100755
--- a/source/d/rust/rust.SlackBuild
+++ b/source/d/rust/rust.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/bash
# Copyright 2017 Andrew Clemons, Wellington, New Zealand
-# Copyright 2017, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2017, 2018, 2019 Patrick J. Volkerding, Sebeka, Minnesota, USA
# Copyright 2017 Stuart Winter
# All rights reserved.
#
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=rust
SRCNAM="${PKGNAM}c"
-VERSION=${VERSION:-1.37.0}
+VERSION=${VERSION:-1.39.0}
BUILD=${BUILD:-1}
# Set this to YES to build with the system LLVM, or NO to use the bundled LLVM.
@@ -34,9 +34,9 @@ BUILD=${BUILD:-1}
SYSTEM_LLVM=${SYSTEM_LLVM:-YES}
# Bootstrap variables (might not be kept updated for latest Rust):
-RSTAGE0_VERSION=${RSTAGE0_VERSION:-1.36.0}
-RSTAGE0_DIR=${RSTAGE0_DIR:-2019-07-04}
-CSTAGE0_VERSION=${CSTAGE0_VERSION:-0.37.0}
+RSTAGE0_VERSION=${RSTAGE0_VERSION:-1.38.0}
+RSTAGE0_DIR=${RSTAGE0_DIR:-2019-09-26}
+CSTAGE0_VERSION=${CSTAGE0_VERSION:-0.39.0}
CSTAGE0_DIR=${CSTAGE0_DIR:-$RSTAGE0_DIR}
# Automatically determine the architecture we're building on:
@@ -148,6 +148,10 @@ if [ "${SYSTEM_LLVM}" = "YES" ]; then
zcat $CWD/link_libffi.diff.gz | patch -p1 --verbose || exit 1
fi
+# Try to debloat the build:
+zcat $CWD/0001-WIP-minimize-the-rust-std-component.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/hack.diff.gz | patch -p1 --verbose || exit 1
+
if [ "$LOCAL_BOOTSTRAP" != "yes" ] ; then
# rust requires bootstrapping with the previous rust version.
# versions are defined in src/stage0.txt.
@@ -165,6 +169,7 @@ fi
cat << EOF > config.toml
[llvm]
ccache = "/usr/bin/ccache"
+link-shared = true
[build]
build = "$BARCH-unknown-linux-$BABI"
@@ -213,9 +218,9 @@ fi
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
export PKG_CONFIG_ALLOW_CROSS=1
@@ -263,7 +268,7 @@ sed -i "s,/tmp/package-rust/,/,g" $PKG/usr/lib$LIBDIRSUFFIX/rustlib/install.log
gzip -9 $PKG/usr/lib$LIBDIRSUFFIX/rustlib/manifest-*
# Correct permissions on shared libraries:
-find $PKG/usr/lib$LIBDIRSUFFIX -name "*.so" -exec chmod 755 "{}" \;
+find $PKG/usr/lib$LIBDIRSUFFIX -name "*.so" -exec chmod 755 "{}" \+
# Evidently there are a lot of duplicated libraries in this tree, so let's
# try to save some space:
@@ -280,7 +285,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
done
# Compress man pages:
-find $PKG/usr/man -type f -exec gzip -9 {} \;
+find $PKG/usr/man -type f -exec gzip -9 {} \+
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
# Add some documentation:
diff --git a/source/d/rust/rust.url b/source/d/rust/rust.url
index de0c3c01..a6838aff 100644
--- a/source/d/rust/rust.url
+++ b/source/d/rust/rust.url
@@ -1,5 +1,5 @@
# Source code (repacked to .tar.xz):
-lftpget https://static.rust-lang.org/dist/rustc-1.37.0-src.tar.gz
+lftpget https://static.rust-lang.org/dist/rustc-1.39.0-src.tar.gz
gzip -d rustc-*tar.gz
plzip -9 -v rustc-*tar
@@ -12,12 +12,12 @@ plzip -9 -v rustc-*tar
exit 0
# i686 bootstrap:
-lftpget https://static.rust-lang.org/dist/2019-07-04/cargo-0.37.0-i686-unknown-linux-gnu.tar.gz
-lftpget https://static.rust-lang.org/dist/2019-07-04/rust-std-1.36.0-i686-unknown-linux-gnu.tar.gz
-lftpget https://static.rust-lang.org/dist/2019-07-04/rustc-1.36.0-i686-unknown-linux-gnu.tar.gz
+lftpget https://static.rust-lang.org/dist/2019-09-26/cargo-0.39.0-i686-unknown-linux-gnu.tar.gz
+lftpget https://static.rust-lang.org/dist/2019-09-26/rust-std-1.38.0-i686-unknown-linux-gnu.tar.gz
+lftpget https://static.rust-lang.org/dist/2019-09-26/rustc-1.38.0-i686-unknown-linux-gnu.tar.gz
# x86_64 bootstrap:
-lftpget https://static.rust-lang.org/dist/2019-07-04/cargo-0.37.0-x86_64-unknown-linux-gnu.tar.gz
-lftpget https://static.rust-lang.org/dist/2019-07-04/rust-std-1.36.0-x86_64-unknown-linux-gnu.tar.gz
-lftpget https://static.rust-lang.org/dist/2019-07-04/rustc-1.36.0-x86_64-unknown-linux-gnu.tar.gz
+lftpget https://static.rust-lang.org/dist/2019-09-26/cargo-0.39.0-x86_64-unknown-linux-gnu.tar.gz
+lftpget https://static.rust-lang.org/dist/2019-09-26/rust-std-1.38.0-x86_64-unknown-linux-gnu.tar.gz
+lftpget https://static.rust-lang.org/dist/2019-09-26/rustc-1.38.0-x86_64-unknown-linux-gnu.tar.gz
diff --git a/source/xap/FTBFSlog b/source/xap/FTBFSlog
index 4661e1ad..c732de9c 100644
--- a/source/xap/FTBFSlog
+++ b/source/xap/FTBFSlog
@@ -1,3 +1,7 @@
+Tue Nov 19 06:05:34 UTC 2019
+ mozilla-firefox: Patch for rust-1.39.0 and node.js related build failure.
+ mozilla-thunderbird: Patch for rust-1.39.0 and node.js related build failure.
++--------------------------+
Tue Sep 10 16:55:23 UTC 2019
gftp: patch to fix breakage from removal of stropts.h in glibc-2.30.
mozilla-firefox: Compile with gcc/g++ for glibc-2.30.
diff --git a/source/xap/mozilla-firefox/firefox-rust-1.39.x.patch b/source/xap/mozilla-firefox/firefox-rust-1.39.x.patch
new file mode 100644
index 00000000..9494776e
--- /dev/null
+++ b/source/xap/mozilla-firefox/firefox-rust-1.39.x.patch
@@ -0,0 +1,172 @@
+Source: Gentoo
+
+Based on https://github.com/rust-lang/rust/issues/64710
+
+--- third_party/rust/bindgen/.cargo-checksum.json
++++ third_party/rust/bindgen/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"9af635e7bad9021a49742a312faf6178b757dbd48aabc998931d6f491f14c179","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"5a1f556c6a57c0a6ccc65e19c27718e0f4b32381a8efcc80f6601b33c58c5d59","build.rs":"a9f6915c54d75f357ce32f96327bf4df53dc81a505b70831978f9dac6f43841d","src/callbacks.rs":"b24d7982332c6a35928f134184ddf4072fe4545a45546b97b9b0e0c1fbb77c08","src/clang.rs":"e9203eb5a1b432efebafcd011896e35e8c9145037bf99e7bb3709dc1b8e8e783","src/codegen/bitfield_unit.rs":"88b0604322dc449fc9284850eadc1f5d14b42fa747d4258bae0b6b9535f52dfd","src/codegen/bitfield_unit_tests.rs":"2073ac6a36e0bc9afaef5b1207966817c8fb7a1a9f6368c3b1b8f79822efbfba","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"fbd23e68dd51ccaddeb9761394d5df2db49baded0e2dccf6bbc52a2d6de502eb","src/codegen/impl_debug.rs":"f82969461d522fb758eca552ceaf189122a404cbb47fcc16008bfe52fc62aefa","src/codegen/impl_partialeq.rs":"d40d9ee2849c4d3d557b033c4d3af5e6de4a44347f67c0f016198086338811af","src/codegen/mod.rs":"238d989e13b7556e5d120a2bfe85b43332fba56cbe8df886d4c32e650fff1247","src/codegen/struct_layout.rs":"3fa5524aff82365ce292b0cc85080514c85a6dbd31bce90f001773b995dda28e","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"c5fd7149f4a3b41fd4f89ade08505170942f4bc791bcb6a34fdddd3ae61856f8","src/ir/analysis/derive.rs":"325d4c1c1e6194e743f42a2316f1501b0ef852fe309f2e9cac3434825ad235f0","src/ir/analysis/has_destructor.rs":"63644f479738df35e531d3324ff892614083c3656e0747aa34d9f20dada878ec","src/ir/analysis/has_float.rs":"76162a309e4285a806755a08c687a3e7bc894a100a63da4e88584035e215b11d","src/ir/analysis/has_type_param_in_array.rs":"fdbc0af28a144c88ea2de83e6e6da5e1ffb40e3dd63fd7a708095d085bb06f94","src/ir/analysis/has_vtable.rs":"5788372d27bdbaaf0454bc17be31a5480918bc41a8a1c4832e8c61185c07f9cd","src/ir/analysis/mod.rs":"1f218e15c19f6666512908abc853fa7ff9ca5d0fafd94f026d9e4b0ce287ec3c","src/ir/analysis/sizedness.rs":"8dc10043d872e68e660ef96edca4d9733f95be45cdad4893462fa929b335014f","src/ir/analysis/template_params.rs":"6312c008bbc80f50e72a766756c8daddea0b6eeb31ec924b83a231df931e170e","src/ir/annotations.rs":"39a5ab19f4d5dfa617577e4a0d0d2b67b5369d480c7cca4b14d172458c9843f0","src/ir/comment.rs":"c48abe01c5af0f09f583a89f1394bc6c161b40f6c8f0f600bbfe3c907b47969b","src/ir/comp.rs":"ca439407faefbe3a198246f0a1dbdf4e40307e45eaaad317e85d1aab37bb31fc","src/ir/context.rs":"599226eb04d337a1b1b13af91af91bdb02dbd5f26f274cbc0ebc4489eb144fc0","src/ir/derive.rs":"34f9aa76b6c9c05136bb69dcd6455397faef571a567254d2c541d50a962994db","src/ir/dot.rs":"95ed2968fc3239d87892e9f1edf1ed6dd18630d949564961765967ea1d16960c","src/ir/enum_ty.rs":"9cc242d6b3c1866665594e8b306860ee39c0ea42d22198d46b7fded473fe3e84","src/ir/function.rs":"2d41d9df19f42b0c383f338be4c026c005853a8d1caf5f3e5a2f3a8dad202232","src/ir/int.rs":"07e0c7dbd2dd977177fae3acd2a14adf271c6cf9ff4b57cddc11d50734fd4801","src/ir/item.rs":"3bcdb69b793350e5744aec3577cdbb1e5068ece5220c38763cecd82dfb5e8f03","src/ir/item_kind.rs":"dbeae8c4fd0e5c9485d325aea040e056a1f2cd6d43fc927dee8fe1c0c59a7197","src/ir/layout.rs":"d49582081f5f86f7595afbe4845f38fb3b969a840b568f4a49b265e7d790bb5b","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"758aa955a0c5d6ad82606c88a1f4cd1d93e666b71e82d43b18b1aaae96cf888a","src/ir/template.rs":"c0f8570b927dfd6a421fc4ce3094ec837a3ed936445225dbfac961e8e0842ae5","src/ir/traversal.rs":"ea751379a5aec02f93f8d2c61e18232776b1f000dbeae64b9a7195ba21a19dd6","src/ir/ty.rs":"952fb04cd6a71a2bca5c509aecacb42a1de0cae75824941541a38dc589f0993a","src/ir/var.rs":"8bdafb6d02f2c55ae11c28d88b19fb7a65ba8466da12ff039ae4c16c790b291e","src/lib.rs":"d5c8b404c515d30fc2d78b28eb84cff6b256f1f1e2dbd6aca280529bb2af6879","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"e519053bcdde6bc88f60f955246a02d53b3db1cc5ccd1612e6675b790b7460b0","src/options.rs":"041d635c8f6712ca32676a68f06d0245faed5577d9513786e058540ea2a69a7f","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"5cb72fc3714c0d79e9e942d003349c0775fafd7cd0c9603c65f5261883bbf9cf","src/time.rs":"3b763e6fee51d0eb01228dfe28bc28a9f692aff73b2a7b90a030902e0238fca6"},"package":"6bd7710ac8399ae1ebe1e3aac7c9047c4f39f2c94b33c997f482f49e96991f7c"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"9af635e7bad9021a49742a312faf6178b757dbd48aabc998931d6f491f14c179","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"5a1f556c6a57c0a6ccc65e19c27718e0f4b32381a8efcc80f6601b33c58c5d59","build.rs":"a9f6915c54d75f357ce32f96327bf4df53dc81a505b70831978f9dac6f43841d","src/callbacks.rs":"b24d7982332c6a35928f134184ddf4072fe4545a45546b97b9b0e0c1fbb77c08","src/clang.rs":"e9203eb5a1b432efebafcd011896e35e8c9145037bf99e7bb3709dc1b8e8e783","src/codegen/bitfield_unit.rs":"88b0604322dc449fc9284850eadc1f5d14b42fa747d4258bae0b6b9535f52dfd","src/codegen/bitfield_unit_tests.rs":"2073ac6a36e0bc9afaef5b1207966817c8fb7a1a9f6368c3b1b8f79822efbfba","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"fbd23e68dd51ccaddeb9761394d5df2db49baded0e2dccf6bbc52a2d6de502eb","src/codegen/impl_debug.rs":"f82969461d522fb758eca552ceaf189122a404cbb47fcc16008bfe52fc62aefa","src/codegen/impl_partialeq.rs":"d40d9ee2849c4d3d557b033c4d3af5e6de4a44347f67c0f016198086338811af","src/codegen/mod.rs":"238d989e13b7556e5d120a2bfe85b43332fba56cbe8df886d4c32e650fff1247","src/codegen/struct_layout.rs":"3fa5524aff82365ce292b0cc85080514c85a6dbd31bce90f001773b995dda28e","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"c5fd7149f4a3b41fd4f89ade08505170942f4bc791bcb6a34fdddd3ae61856f8","src/ir/analysis/derive.rs":"325d4c1c1e6194e743f42a2316f1501b0ef852fe309f2e9cac3434825ad235f0","src/ir/analysis/has_destructor.rs":"63644f479738df35e531d3324ff892614083c3656e0747aa34d9f20dada878ec","src/ir/analysis/has_float.rs":"76162a309e4285a806755a08c687a3e7bc894a100a63da4e88584035e215b11d","src/ir/analysis/has_type_param_in_array.rs":"fdbc0af28a144c88ea2de83e6e6da5e1ffb40e3dd63fd7a708095d085bb06f94","src/ir/analysis/has_vtable.rs":"8c92a52c0f859c7bec7bfbc36b9d18f904baab0c8c9dc1b3e7af34de1a0b0da4","src/ir/analysis/mod.rs":"1f218e15c19f6666512908abc853fa7ff9ca5d0fafd94f026d9e4b0ce287ec3c","src/ir/analysis/sizedness.rs":"71f1a37f75b971ea5b0d8457473cc410947dbf706cb6d2c0338916910b78a675","src/ir/analysis/template_params.rs":"6312c008bbc80f50e72a766756c8daddea0b6eeb31ec924b83a231df931e170e","src/ir/annotations.rs":"39a5ab19f4d5dfa617577e4a0d0d2b67b5369d480c7cca4b14d172458c9843f0","src/ir/comment.rs":"c48abe01c5af0f09f583a89f1394bc6c161b40f6c8f0f600bbfe3c907b47969b","src/ir/comp.rs":"ca439407faefbe3a198246f0a1dbdf4e40307e45eaaad317e85d1aab37bb31fc","src/ir/context.rs":"599226eb04d337a1b1b13af91af91bdb02dbd5f26f274cbc0ebc4489eb144fc0","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"95ed2968fc3239d87892e9f1edf1ed6dd18630d949564961765967ea1d16960c","src/ir/enum_ty.rs":"9cc242d6b3c1866665594e8b306860ee39c0ea42d22198d46b7fded473fe3e84","src/ir/function.rs":"2d41d9df19f42b0c383f338be4c026c005853a8d1caf5f3e5a2f3a8dad202232","src/ir/int.rs":"07e0c7dbd2dd977177fae3acd2a14adf271c6cf9ff4b57cddc11d50734fd4801","src/ir/item.rs":"3bcdb69b793350e5744aec3577cdbb1e5068ece5220c38763cecd82dfb5e8f03","src/ir/item_kind.rs":"dbeae8c4fd0e5c9485d325aea040e056a1f2cd6d43fc927dee8fe1c0c59a7197","src/ir/layout.rs":"d49582081f5f86f7595afbe4845f38fb3b969a840b568f4a49b265e7d790bb5b","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"758aa955a0c5d6ad82606c88a1f4cd1d93e666b71e82d43b18b1aaae96cf888a","src/ir/template.rs":"c0f8570b927dfd6a421fc4ce3094ec837a3ed936445225dbfac961e8e0842ae5","src/ir/traversal.rs":"ea751379a5aec02f93f8d2c61e18232776b1f000dbeae64b9a7195ba21a19dd6","src/ir/ty.rs":"952fb04cd6a71a2bca5c509aecacb42a1de0cae75824941541a38dc589f0993a","src/ir/var.rs":"8bdafb6d02f2c55ae11c28d88b19fb7a65ba8466da12ff039ae4c16c790b291e","src/lib.rs":"d5c8b404c515d30fc2d78b28eb84cff6b256f1f1e2dbd6aca280529bb2af6879","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"e519053bcdde6bc88f60f955246a02d53b3db1cc5ccd1612e6675b790b7460b0","src/options.rs":"041d635c8f6712ca32676a68f06d0245faed5577d9513786e058540ea2a69a7f","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"5cb72fc3714c0d79e9e942d003349c0775fafd7cd0c9603c65f5261883bbf9cf","src/time.rs":"3b763e6fee51d0eb01228dfe28bc28a9f692aff73b2a7b90a030902e0238fca6"},"package":"6bd7710ac8399ae1ebe1e3aac7c9047c4f39f2c94b33c997f482f49e96991f7c"}
+\ No newline at end of file
+--- third_party/rust/bindgen/src/ir/analysis/has_vtable.rs
++++ third_party/rust/bindgen/src/ir/analysis/has_vtable.rs
+@@ -9,17 +9,17 @@ use std::ops;
+ use {HashMap, Entry};
+
+ /// The result of the `HasVtableAnalysis` for an individual item.
+-#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord)]
++#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+ pub enum HasVtableResult {
+- /// The item has a vtable, but the actual vtable pointer is in a base
+- /// member.
+- BaseHasVtable,
++ /// The item does not have a vtable pointer.
++ No,
+
+ /// The item has a vtable and the actual vtable pointer is within this item.
+ SelfHasVtable,
+
+- /// The item does not have a vtable pointer.
+- No
++ /// The item has a vtable, but the actual vtable pointer is in a base
++ /// member.
++ BaseHasVtable,
+ }
+
+ impl Default for HasVtableResult {
+@@ -28,21 +28,6 @@ impl Default for HasVtableResult {
+ }
+ }
+
+-impl cmp::PartialOrd for HasVtableResult {
+- fn partial_cmp(&self, rhs: &Self) -> Option<cmp::Ordering> {
+- use self::HasVtableResult::*;
+-
+- match (*self, *rhs) {
+- (x, y) if x == y => Some(cmp::Ordering::Equal),
+- (BaseHasVtable, _) => Some(cmp::Ordering::Greater),
+- (_, BaseHasVtable) => Some(cmp::Ordering::Less),
+- (SelfHasVtable, _) => Some(cmp::Ordering::Greater),
+- (_, SelfHasVtable) => Some(cmp::Ordering::Less),
+- _ => unreachable!(),
+- }
+- }
+-}
+-
+ impl HasVtableResult {
+ /// Take the least upper bound of `self` and `rhs`.
+ pub fn join(self, rhs: Self) -> Self {
+--- third_party/rust/bindgen/src/ir/analysis/sizedness.rs
++++ third_party/rust/bindgen/src/ir/analysis/sizedness.rs
+@@ -22,13 +22,14 @@ use {HashMap, Entry};
+ ///
+ /// We initially assume that all types are `ZeroSized` and then update our
+ /// understanding as we learn more about each type.
+-#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord)]
++#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+ pub enum SizednessResult {
+- /// Has some size that is known to be greater than zero. That doesn't mean
+- /// it has a static size, but it is not zero sized for sure. In other words,
+- /// it might contain an incomplete array or some other dynamically sized
+- /// type.
+- NonZeroSized,
++ /// The type is zero-sized.
++ ///
++ /// This means that if it is a C++ type, and is not being used as a base
++ /// member, then we must add an `_address` byte to enforce the
++ /// unique-address-per-distinct-object-instance rule.
++ ZeroSized,
+
+ /// Whether this type is zero-sized or not depends on whether a type
+ /// parameter is zero-sized or not.
+@@ -52,12 +53,11 @@ pub enum SizednessResult {
+ /// https://github.com/rust-lang-nursery/rust-bindgen/issues/586
+ DependsOnTypeParam,
+
+- /// The type is zero-sized.
+- ///
+- /// This means that if it is a C++ type, and is not being used as a base
+- /// member, then we must add an `_address` byte to enforce the
+- /// unique-address-per-distinct-object-instance rule.
+- ZeroSized,
++ /// Has some size that is known to be greater than zero. That doesn't mean
++ /// it has a static size, but it is not zero sized for sure. In other words,
++ /// it might contain an incomplete array or some other dynamically sized
++ /// type.
++ NonZeroSized,
+ }
+
+ impl Default for SizednessResult {
+@@ -66,21 +66,6 @@ impl Default for SizednessResult {
+ }
+ }
+
+-impl cmp::PartialOrd for SizednessResult {
+- fn partial_cmp(&self, rhs: &Self) -> Option<cmp::Ordering> {
+- use self::SizednessResult::*;
+-
+- match (*self, *rhs) {
+- (x, y) if x == y => Some(cmp::Ordering::Equal),
+- (NonZeroSized, _) => Some(cmp::Ordering::Greater),
+- (_, NonZeroSized) => Some(cmp::Ordering::Less),
+- (DependsOnTypeParam, _) => Some(cmp::Ordering::Greater),
+- (_, DependsOnTypeParam) => Some(cmp::Ordering::Less),
+- _ => unreachable!(),
+- }
+- }
+-}
+-
+ impl SizednessResult {
+ /// Take the least upper bound of `self` and `rhs`.
+ pub fn join(self, rhs: Self) -> Self {
+--- third_party/rust/bindgen/src/ir/derive.rs
++++ third_party/rust/bindgen/src/ir/derive.rs
+@@ -92,10 +92,10 @@ pub trait CanDeriveOrd {
+ ///
+ /// Initially we assume that we can derive trait for all types and then
+ /// update our understanding as we learn more about each type.
+-#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord)]
++#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
+ pub enum CanDerive {
+- /// No, we cannot.
+- No,
++ /// Yes, we can derive automatically.
++ Yes,
+
+ /// The only thing that stops us from automatically deriving is that
+ /// array with more than maximum number of elements is used.
+@@ -103,8 +103,8 @@ pub enum CanDerive {
+ /// This means we probably can "manually" implement such trait.
+ Manually,
+
+- /// Yes, we can derive automatically.
+- Yes,
++ /// No, we cannot.
++ No,
+ }
+
+ impl Default for CanDerive {
+@@ -113,22 +113,6 @@ impl Default for CanDerive {
+ }
+ }
+
+-impl cmp::PartialOrd for CanDerive {
+- fn partial_cmp(&self, rhs: &Self) -> Option<cmp::Ordering> {
+- use self::CanDerive::*;
+-
+- let ordering = match (*self, *rhs) {
+- (x, y) if x == y => cmp::Ordering::Equal,
+- (No, _) => cmp::Ordering::Greater,
+- (_, No) => cmp::Ordering::Less,
+- (Manually, _) => cmp::Ordering::Greater,
+- (_, Manually) => cmp::Ordering::Less,
+- _ => unreachable!()
+- };
+- Some(ordering)
+- }
+-}
+-
+ impl CanDerive {
+ /// Take the least upper bound of `self` and `rhs`.
+ pub fn join(self, rhs: Self) -> Self {
diff --git a/source/xap/mozilla-firefox/firefox.node.py.patch b/source/xap/mozilla-firefox/firefox.node.py.patch
new file mode 100644
index 00000000..11e2b843
--- /dev/null
+++ b/source/xap/mozilla-firefox/firefox.node.py.patch
@@ -0,0 +1,46 @@
+
+diff --git a/python/mozbuild/mozbuild/action/node.py b/python/mozbuild/mozbuild/action/node.py
+--- a/python/mozbuild/mozbuild/action/node.py
++++ b/python/mozbuild/mozbuild/action/node.py
+@@ -47,24 +47,35 @@ def execute_node_cmd(node_cmd_list):
+ printed to stderr instead.
+ """
+
+ try:
+ printable_cmd = ' '.join(pipes.quote(arg) for arg in node_cmd_list)
+ print('Executing "{}"'.format(printable_cmd), file=sys.stderr)
+ sys.stderr.flush()
+
+- output = subprocess.check_output(node_cmd_list)
++ # We need to redirect stderr to a pipe because
++ # https://github.com/nodejs/node/issues/14752 causes issues with make.
++ proc = subprocess.Popen(
++ node_cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
++
++ stdout, stderr = proc.communicate()
++ retcode = proc.wait()
++
++ if retcode != 0:
++ print(stderr, file=sys.stderr)
++ sys.stderr.flush()
++ sys.exit(retcode)
+
+ # Process the node script output
+ #
+ # XXX Starting with an empty list means that node scripts can
+ # (intentionally or inadvertently) remove deps. Do we want this?
+ deps = []
+- for line in output.splitlines():
++ for line in stdout.splitlines():
+ if 'dep:' in line:
+ deps.append(line.replace('dep:', ''))
+ else:
+ print(line, file=sys.stderr)
+ sys.stderr.flush()
+
+ return set(deps)
+
+
+
+
+
diff --git a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
index c36e23a6..c255012e 100755
--- a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
+++ b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
@@ -201,6 +201,10 @@ zcat $CWD/ff.ui.scrollToClick.diff.gz | patch -p1 --verbose || exit 1
# Fix building with latest Rust:
zcat $CWD/unbreakdocs.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/firefox-rust-1.39.x.patch.gz | patch -p0 --verbose || exit 1
+
+# Fix a build failure caused by node.js:
+zcat $CWD/firefox.node.py.patch.gz | patch -p1 --verbose || exit 1
# Fetch localization, if requested
# https://bugzilla.mozilla.org/show_bug.cgi?id=1256955
diff --git a/source/xap/mozilla-thunderbird/firefox.node.py.patch b/source/xap/mozilla-thunderbird/firefox.node.py.patch
new file mode 100644
index 00000000..11e2b843
--- /dev/null
+++ b/source/xap/mozilla-thunderbird/firefox.node.py.patch
@@ -0,0 +1,46 @@
+
+diff --git a/python/mozbuild/mozbuild/action/node.py b/python/mozbuild/mozbuild/action/node.py
+--- a/python/mozbuild/mozbuild/action/node.py
++++ b/python/mozbuild/mozbuild/action/node.py
+@@ -47,24 +47,35 @@ def execute_node_cmd(node_cmd_list):
+ printed to stderr instead.
+ """
+
+ try:
+ printable_cmd = ' '.join(pipes.quote(arg) for arg in node_cmd_list)
+ print('Executing "{}"'.format(printable_cmd), file=sys.stderr)
+ sys.stderr.flush()
+
+- output = subprocess.check_output(node_cmd_list)
++ # We need to redirect stderr to a pipe because
++ # https://github.com/nodejs/node/issues/14752 causes issues with make.
++ proc = subprocess.Popen(
++ node_cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
++
++ stdout, stderr = proc.communicate()
++ retcode = proc.wait()
++
++ if retcode != 0:
++ print(stderr, file=sys.stderr)
++ sys.stderr.flush()
++ sys.exit(retcode)
+
+ # Process the node script output
+ #
+ # XXX Starting with an empty list means that node scripts can
+ # (intentionally or inadvertently) remove deps. Do we want this?
+ deps = []
+- for line in output.splitlines():
++ for line in stdout.splitlines():
+ if 'dep:' in line:
+ deps.append(line.replace('dep:', ''))
+ else:
+ print(line, file=sys.stderr)
+ sys.stderr.flush()
+
+ return set(deps)
+
+
+
+
+
diff --git a/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild b/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
index 43a45422..ef593e77 100755
--- a/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
+++ b/source/xap/mozilla-thunderbird/mozilla-thunderbird.SlackBuild
@@ -178,6 +178,10 @@ zcat $CWD/tb.ui.scrollToClick.diff.gz | patch -p1 --verbose || exit 1
# Fix building with latest Rust:
zcat $CWD/unbreakdocs.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/thunderbird-rust-1.39.x.patch.gz | patch -p0 --verbose || exit 1
+
+# Fix a build failure caused by node.js:
+zcat $CWD/firefox.node.py.patch.gz | patch -p1 --verbose || exit 1
# Bypass a test that fails the build:
zcat $CWD/gkrust.a.no.networking.check.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/xap/mozilla-thunderbird/thunderbird-rust-1.39.x.patch b/source/xap/mozilla-thunderbird/thunderbird-rust-1.39.x.patch
new file mode 100644
index 00000000..9494776e
--- /dev/null
+++ b/source/xap/mozilla-thunderbird/thunderbird-rust-1.39.x.patch
@@ -0,0 +1,172 @@
+Source: Gentoo
+
+Based on https://github.com/rust-lang/rust/issues/64710
+
+--- third_party/rust/bindgen/.cargo-checksum.json
++++ third_party/rust/bindgen/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"9af635e7bad9021a49742a312faf6178b757dbd48aabc998931d6f491f14c179","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"5a1f556c6a57c0a6ccc65e19c27718e0f4b32381a8efcc80f6601b33c58c5d59","build.rs":"a9f6915c54d75f357ce32f96327bf4df53dc81a505b70831978f9dac6f43841d","src/callbacks.rs":"b24d7982332c6a35928f134184ddf4072fe4545a45546b97b9b0e0c1fbb77c08","src/clang.rs":"e9203eb5a1b432efebafcd011896e35e8c9145037bf99e7bb3709dc1b8e8e783","src/codegen/bitfield_unit.rs":"88b0604322dc449fc9284850eadc1f5d14b42fa747d4258bae0b6b9535f52dfd","src/codegen/bitfield_unit_tests.rs":"2073ac6a36e0bc9afaef5b1207966817c8fb7a1a9f6368c3b1b8f79822efbfba","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"fbd23e68dd51ccaddeb9761394d5df2db49baded0e2dccf6bbc52a2d6de502eb","src/codegen/impl_debug.rs":"f82969461d522fb758eca552ceaf189122a404cbb47fcc16008bfe52fc62aefa","src/codegen/impl_partialeq.rs":"d40d9ee2849c4d3d557b033c4d3af5e6de4a44347f67c0f016198086338811af","src/codegen/mod.rs":"238d989e13b7556e5d120a2bfe85b43332fba56cbe8df886d4c32e650fff1247","src/codegen/struct_layout.rs":"3fa5524aff82365ce292b0cc85080514c85a6dbd31bce90f001773b995dda28e","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"c5fd7149f4a3b41fd4f89ade08505170942f4bc791bcb6a34fdddd3ae61856f8","src/ir/analysis/derive.rs":"325d4c1c1e6194e743f42a2316f1501b0ef852fe309f2e9cac3434825ad235f0","src/ir/analysis/has_destructor.rs":"63644f479738df35e531d3324ff892614083c3656e0747aa34d9f20dada878ec","src/ir/analysis/has_float.rs":"76162a309e4285a806755a08c687a3e7bc894a100a63da4e88584035e215b11d","src/ir/analysis/has_type_param_in_array.rs":"fdbc0af28a144c88ea2de83e6e6da5e1ffb40e3dd63fd7a708095d085bb06f94","src/ir/analysis/has_vtable.rs":"5788372d27bdbaaf0454bc17be31a5480918bc41a8a1c4832e8c61185c07f9cd","src/ir/analysis/mod.rs":"1f218e15c19f6666512908abc853fa7ff9ca5d0fafd94f026d9e4b0ce287ec3c","src/ir/analysis/sizedness.rs":"8dc10043d872e68e660ef96edca4d9733f95be45cdad4893462fa929b335014f","src/ir/analysis/template_params.rs":"6312c008bbc80f50e72a766756c8daddea0b6eeb31ec924b83a231df931e170e","src/ir/annotations.rs":"39a5ab19f4d5dfa617577e4a0d0d2b67b5369d480c7cca4b14d172458c9843f0","src/ir/comment.rs":"c48abe01c5af0f09f583a89f1394bc6c161b40f6c8f0f600bbfe3c907b47969b","src/ir/comp.rs":"ca439407faefbe3a198246f0a1dbdf4e40307e45eaaad317e85d1aab37bb31fc","src/ir/context.rs":"599226eb04d337a1b1b13af91af91bdb02dbd5f26f274cbc0ebc4489eb144fc0","src/ir/derive.rs":"34f9aa76b6c9c05136bb69dcd6455397faef571a567254d2c541d50a962994db","src/ir/dot.rs":"95ed2968fc3239d87892e9f1edf1ed6dd18630d949564961765967ea1d16960c","src/ir/enum_ty.rs":"9cc242d6b3c1866665594e8b306860ee39c0ea42d22198d46b7fded473fe3e84","src/ir/function.rs":"2d41d9df19f42b0c383f338be4c026c005853a8d1caf5f3e5a2f3a8dad202232","src/ir/int.rs":"07e0c7dbd2dd977177fae3acd2a14adf271c6cf9ff4b57cddc11d50734fd4801","src/ir/item.rs":"3bcdb69b793350e5744aec3577cdbb1e5068ece5220c38763cecd82dfb5e8f03","src/ir/item_kind.rs":"dbeae8c4fd0e5c9485d325aea040e056a1f2cd6d43fc927dee8fe1c0c59a7197","src/ir/layout.rs":"d49582081f5f86f7595afbe4845f38fb3b969a840b568f4a49b265e7d790bb5b","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"758aa955a0c5d6ad82606c88a1f4cd1d93e666b71e82d43b18b1aaae96cf888a","src/ir/template.rs":"c0f8570b927dfd6a421fc4ce3094ec837a3ed936445225dbfac961e8e0842ae5","src/ir/traversal.rs":"ea751379a5aec02f93f8d2c61e18232776b1f000dbeae64b9a7195ba21a19dd6","src/ir/ty.rs":"952fb04cd6a71a2bca5c509aecacb42a1de0cae75824941541a38dc589f0993a","src/ir/var.rs":"8bdafb6d02f2c55ae11c28d88b19fb7a65ba8466da12ff039ae4c16c790b291e","src/lib.rs":"d5c8b404c515d30fc2d78b28eb84cff6b256f1f1e2dbd6aca280529bb2af6879","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"e519053bcdde6bc88f60f955246a02d53b3db1cc5ccd1612e6675b790b7460b0","src/options.rs":"041d635c8f6712ca32676a68f06d0245faed5577d9513786e058540ea2a69a7f","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"5cb72fc3714c0d79e9e942d003349c0775fafd7cd0c9603c65f5261883bbf9cf","src/time.rs":"3b763e6fee51d0eb01228dfe28bc28a9f692aff73b2a7b90a030902e0238fca6"},"package":"6bd7710ac8399ae1ebe1e3aac7c9047c4f39f2c94b33c997f482f49e96991f7c"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"9af635e7bad9021a49742a312faf6178b757dbd48aabc998931d6f491f14c179","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"5a1f556c6a57c0a6ccc65e19c27718e0f4b32381a8efcc80f6601b33c58c5d59","build.rs":"a9f6915c54d75f357ce32f96327bf4df53dc81a505b70831978f9dac6f43841d","src/callbacks.rs":"b24d7982332c6a35928f134184ddf4072fe4545a45546b97b9b0e0c1fbb77c08","src/clang.rs":"e9203eb5a1b432efebafcd011896e35e8c9145037bf99e7bb3709dc1b8e8e783","src/codegen/bitfield_unit.rs":"88b0604322dc449fc9284850eadc1f5d14b42fa747d4258bae0b6b9535f52dfd","src/codegen/bitfield_unit_tests.rs":"2073ac6a36e0bc9afaef5b1207966817c8fb7a1a9f6368c3b1b8f79822efbfba","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"fbd23e68dd51ccaddeb9761394d5df2db49baded0e2dccf6bbc52a2d6de502eb","src/codegen/impl_debug.rs":"f82969461d522fb758eca552ceaf189122a404cbb47fcc16008bfe52fc62aefa","src/codegen/impl_partialeq.rs":"d40d9ee2849c4d3d557b033c4d3af5e6de4a44347f67c0f016198086338811af","src/codegen/mod.rs":"238d989e13b7556e5d120a2bfe85b43332fba56cbe8df886d4c32e650fff1247","src/codegen/struct_layout.rs":"3fa5524aff82365ce292b0cc85080514c85a6dbd31bce90f001773b995dda28e","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"c5fd7149f4a3b41fd4f89ade08505170942f4bc791bcb6a34fdddd3ae61856f8","src/ir/analysis/derive.rs":"325d4c1c1e6194e743f42a2316f1501b0ef852fe309f2e9cac3434825ad235f0","src/ir/analysis/has_destructor.rs":"63644f479738df35e531d3324ff892614083c3656e0747aa34d9f20dada878ec","src/ir/analysis/has_float.rs":"76162a309e4285a806755a08c687a3e7bc894a100a63da4e88584035e215b11d","src/ir/analysis/has_type_param_in_array.rs":"fdbc0af28a144c88ea2de83e6e6da5e1ffb40e3dd63fd7a708095d085bb06f94","src/ir/analysis/has_vtable.rs":"8c92a52c0f859c7bec7bfbc36b9d18f904baab0c8c9dc1b3e7af34de1a0b0da4","src/ir/analysis/mod.rs":"1f218e15c19f6666512908abc853fa7ff9ca5d0fafd94f026d9e4b0ce287ec3c","src/ir/analysis/sizedness.rs":"71f1a37f75b971ea5b0d8457473cc410947dbf706cb6d2c0338916910b78a675","src/ir/analysis/template_params.rs":"6312c008bbc80f50e72a766756c8daddea0b6eeb31ec924b83a231df931e170e","src/ir/annotations.rs":"39a5ab19f4d5dfa617577e4a0d0d2b67b5369d480c7cca4b14d172458c9843f0","src/ir/comment.rs":"c48abe01c5af0f09f583a89f1394bc6c161b40f6c8f0f600bbfe3c907b47969b","src/ir/comp.rs":"ca439407faefbe3a198246f0a1dbdf4e40307e45eaaad317e85d1aab37bb31fc","src/ir/context.rs":"599226eb04d337a1b1b13af91af91bdb02dbd5f26f274cbc0ebc4489eb144fc0","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"95ed2968fc3239d87892e9f1edf1ed6dd18630d949564961765967ea1d16960c","src/ir/enum_ty.rs":"9cc242d6b3c1866665594e8b306860ee39c0ea42d22198d46b7fded473fe3e84","src/ir/function.rs":"2d41d9df19f42b0c383f338be4c026c005853a8d1caf5f3e5a2f3a8dad202232","src/ir/int.rs":"07e0c7dbd2dd977177fae3acd2a14adf271c6cf9ff4b57cddc11d50734fd4801","src/ir/item.rs":"3bcdb69b793350e5744aec3577cdbb1e5068ece5220c38763cecd82dfb5e8f03","src/ir/item_kind.rs":"dbeae8c4fd0e5c9485d325aea040e056a1f2cd6d43fc927dee8fe1c0c59a7197","src/ir/layout.rs":"d49582081f5f86f7595afbe4845f38fb3b969a840b568f4a49b265e7d790bb5b","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"758aa955a0c5d6ad82606c88a1f4cd1d93e666b71e82d43b18b1aaae96cf888a","src/ir/template.rs":"c0f8570b927dfd6a421fc4ce3094ec837a3ed936445225dbfac961e8e0842ae5","src/ir/traversal.rs":"ea751379a5aec02f93f8d2c61e18232776b1f000dbeae64b9a7195ba21a19dd6","src/ir/ty.rs":"952fb04cd6a71a2bca5c509aecacb42a1de0cae75824941541a38dc589f0993a","src/ir/var.rs":"8bdafb6d02f2c55ae11c28d88b19fb7a65ba8466da12ff039ae4c16c790b291e","src/lib.rs":"d5c8b404c515d30fc2d78b28eb84cff6b256f1f1e2dbd6aca280529bb2af6879","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"e519053bcdde6bc88f60f955246a02d53b3db1cc5ccd1612e6675b790b7460b0","src/options.rs":"041d635c8f6712ca32676a68f06d0245faed5577d9513786e058540ea2a69a7f","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"5cb72fc3714c0d79e9e942d003349c0775fafd7cd0c9603c65f5261883bbf9cf","src/time.rs":"3b763e6fee51d0eb01228dfe28bc28a9f692aff73b2a7b90a030902e0238fca6"},"package":"6bd7710ac8399ae1ebe1e3aac7c9047c4f39f2c94b33c997f482f49e96991f7c"}
+\ No newline at end of file
+--- third_party/rust/bindgen/src/ir/analysis/has_vtable.rs
++++ third_party/rust/bindgen/src/ir/analysis/has_vtable.rs
+@@ -9,17 +9,17 @@ use std::ops;
+ use {HashMap, Entry};
+
+ /// The result of the `HasVtableAnalysis` for an individual item.
+-#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord)]
++#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+ pub enum HasVtableResult {
+- /// The item has a vtable, but the actual vtable pointer is in a base
+- /// member.
+- BaseHasVtable,
++ /// The item does not have a vtable pointer.
++ No,
+
+ /// The item has a vtable and the actual vtable pointer is within this item.
+ SelfHasVtable,
+
+- /// The item does not have a vtable pointer.
+- No
++ /// The item has a vtable, but the actual vtable pointer is in a base
++ /// member.
++ BaseHasVtable,
+ }
+
+ impl Default for HasVtableResult {
+@@ -28,21 +28,6 @@ impl Default for HasVtableResult {
+ }
+ }
+
+-impl cmp::PartialOrd for HasVtableResult {
+- fn partial_cmp(&self, rhs: &Self) -> Option<cmp::Ordering> {
+- use self::HasVtableResult::*;
+-
+- match (*self, *rhs) {
+- (x, y) if x == y => Some(cmp::Ordering::Equal),
+- (BaseHasVtable, _) => Some(cmp::Ordering::Greater),
+- (_, BaseHasVtable) => Some(cmp::Ordering::Less),
+- (SelfHasVtable, _) => Some(cmp::Ordering::Greater),
+- (_, SelfHasVtable) => Some(cmp::Ordering::Less),
+- _ => unreachable!(),
+- }
+- }
+-}
+-
+ impl HasVtableResult {
+ /// Take the least upper bound of `self` and `rhs`.
+ pub fn join(self, rhs: Self) -> Self {
+--- third_party/rust/bindgen/src/ir/analysis/sizedness.rs
++++ third_party/rust/bindgen/src/ir/analysis/sizedness.rs
+@@ -22,13 +22,14 @@ use {HashMap, Entry};
+ ///
+ /// We initially assume that all types are `ZeroSized` and then update our
+ /// understanding as we learn more about each type.
+-#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord)]
++#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+ pub enum SizednessResult {
+- /// Has some size that is known to be greater than zero. That doesn't mean
+- /// it has a static size, but it is not zero sized for sure. In other words,
+- /// it might contain an incomplete array or some other dynamically sized
+- /// type.
+- NonZeroSized,
++ /// The type is zero-sized.
++ ///
++ /// This means that if it is a C++ type, and is not being used as a base
++ /// member, then we must add an `_address` byte to enforce the
++ /// unique-address-per-distinct-object-instance rule.
++ ZeroSized,
+
+ /// Whether this type is zero-sized or not depends on whether a type
+ /// parameter is zero-sized or not.
+@@ -52,12 +53,11 @@ pub enum SizednessResult {
+ /// https://github.com/rust-lang-nursery/rust-bindgen/issues/586
+ DependsOnTypeParam,
+
+- /// The type is zero-sized.
+- ///
+- /// This means that if it is a C++ type, and is not being used as a base
+- /// member, then we must add an `_address` byte to enforce the
+- /// unique-address-per-distinct-object-instance rule.
+- ZeroSized,
++ /// Has some size that is known to be greater than zero. That doesn't mean
++ /// it has a static size, but it is not zero sized for sure. In other words,
++ /// it might contain an incomplete array or some other dynamically sized
++ /// type.
++ NonZeroSized,
+ }
+
+ impl Default for SizednessResult {
+@@ -66,21 +66,6 @@ impl Default for SizednessResult {
+ }
+ }
+
+-impl cmp::PartialOrd for SizednessResult {
+- fn partial_cmp(&self, rhs: &Self) -> Option<cmp::Ordering> {
+- use self::SizednessResult::*;
+-
+- match (*self, *rhs) {
+- (x, y) if x == y => Some(cmp::Ordering::Equal),
+- (NonZeroSized, _) => Some(cmp::Ordering::Greater),
+- (_, NonZeroSized) => Some(cmp::Ordering::Less),
+- (DependsOnTypeParam, _) => Some(cmp::Ordering::Greater),
+- (_, DependsOnTypeParam) => Some(cmp::Ordering::Less),
+- _ => unreachable!(),
+- }
+- }
+-}
+-
+ impl SizednessResult {
+ /// Take the least upper bound of `self` and `rhs`.
+ pub fn join(self, rhs: Self) -> Self {
+--- third_party/rust/bindgen/src/ir/derive.rs
++++ third_party/rust/bindgen/src/ir/derive.rs
+@@ -92,10 +92,10 @@ pub trait CanDeriveOrd {
+ ///
+ /// Initially we assume that we can derive trait for all types and then
+ /// update our understanding as we learn more about each type.
+-#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord)]
++#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
+ pub enum CanDerive {
+- /// No, we cannot.
+- No,
++ /// Yes, we can derive automatically.
++ Yes,
+
+ /// The only thing that stops us from automatically deriving is that
+ /// array with more than maximum number of elements is used.
+@@ -103,8 +103,8 @@ pub enum CanDerive {
+ /// This means we probably can "manually" implement such trait.
+ Manually,
+
+- /// Yes, we can derive automatically.
+- Yes,
++ /// No, we cannot.
++ No,
+ }
+
+ impl Default for CanDerive {
+@@ -113,22 +113,6 @@ impl Default for CanDerive {
+ }
+ }
+
+-impl cmp::PartialOrd for CanDerive {
+- fn partial_cmp(&self, rhs: &Self) -> Option<cmp::Ordering> {
+- use self::CanDerive::*;
+-
+- let ordering = match (*self, *rhs) {
+- (x, y) if x == y => cmp::Ordering::Equal,
+- (No, _) => cmp::Ordering::Greater,
+- (_, No) => cmp::Ordering::Less,
+- (Manually, _) => cmp::Ordering::Greater,
+- (_, Manually) => cmp::Ordering::Less,
+- _ => unreachable!()
+- };
+- Some(ordering)
+- }
+-}
+-
+ impl CanDerive {
+ /// Take the least upper bound of `self` and `rhs`.
+ pub fn join(self, rhs: Self) -> Self {