diff --git a/mingw-w64-rust/0001-add-missing-libs.patch b/mingw-w64-rust/0001-add-missing-libs.patch index e13e817aa5..4182d52e45 100644 --- a/mingw-w64-rust/0001-add-missing-libs.patch +++ b/mingw-w64-rust/0001-add-missing-libs.patch @@ -1,16 +1,14 @@ -diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs +diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs index caa2740408..52738a47f7 100644 ---- a/src/librustc_llvm/build.rs -+++ b/src/librustc_llvm/build.rs -@@ -269,6 +269,9 @@ +--- a/compiler/rustc_llvm/build.rs ++++ b/compiler/rustc_llvm/build.rs +@@ -269,6 +269,7 @@ // LLVM requires symbols from this library, but apparently they're not printed // during llvm-config? if target.contains("windows-gnu") { + println!("cargo:rustc-link-lib=static-nobundle=ffi"); -+ println!("cargo:rustc-link-lib=static-nobundle=z3"); -+ println!("cargo:rustc-link-lib=stdc++"); - println!("cargo:rustc-link-lib=static-nobundle=gcc_s"); println!("cargo:rustc-link-lib=static-nobundle=pthread"); } + } -- 2.12.0 diff --git a/mingw-w64-rust/0002-fix-install-msys2.patch b/mingw-w64-rust/0002-fix-install-msys2.patch index b8217d0e32..ee07934190 100644 --- a/mingw-w64-rust/0002-fix-install-msys2.patch +++ b/mingw-w64-rust/0002-fix-install-msys2.patch @@ -1,13 +1,12 @@ --- rustc-1.29.2-src/src/bootstrap/install.rs.orig 2018-10-26 14:13:58.455571300 +0300 +++ rustc-1.29.2-src/src/bootstrap/install.rs 2018-10-26 14:14:35.225835900 +0300 -@@ -74,9 +74,7 @@ - let bindir_default = PathBuf::from("bin"); - let libdir_default = PathBuf::from("lib"); - let mandir_default = datadir_default.join("man"); -- let prefix = builder.config.prefix.as_ref().map_or(prefix_default, |p| { -- fs::canonicalize(p).unwrap_or_else(|_| panic!("could not canonicalize {}", p.display())) -- }); -+ let prefix = builder.config.prefix.as_ref().unwrap_or(&prefix_default); +@@ -74,8 +74,7 @@ + let prefix = builder.config.prefix.as_ref().map_or(prefix_default, |p| { + fs::create_dir_all(p) + .unwrap_or_else(|err| panic!("could not create {}: {}", p.display(), err)); +- fs::canonicalize(p) +- .unwrap_or_else(|err| panic!("could not canonicalize {}: {}", p.display(), err)) ++ p.to_path_buf() + }); let sysconfdir = builder.config.sysconfdir.as_ref().unwrap_or(&sysconfdir_default); let datadir = builder.config.datadir.as_ref().unwrap_or(&datadir_default); - let docdir = builder.config.docdir.as_ref().unwrap_or(&docdir_default); diff --git a/mingw-w64-rust/70163.patch b/mingw-w64-rust/70163.patch deleted file mode 100644 index 7699728d49..0000000000 --- a/mingw-w64-rust/70163.patch +++ /dev/null @@ -1,211 +0,0 @@ -From 841558d3bdc9c9510b841c438838196378741021 Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Tue, 4 Feb 2020 19:23:45 +0100 -Subject: [PATCH 1/5] Remove trailing newline from llvm-config output - ---- - src/bootstrap/test.rs | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs -index aa1d1b7c42413..b52fbe4666eb3 100644 ---- a/src/bootstrap/test.rs -+++ b/src/bootstrap/test.rs -@@ -1141,6 +1141,8 @@ impl Step for Compiletest { - let llvm_config = builder.ensure(native::Llvm { target: builder.config.build }); - if !builder.config.dry_run { - let llvm_version = output(Command::new(&llvm_config).arg("--version")); -+ // Remove trailing newline from llvm-config output. -+ let llvm_version = llvm_version.trim_end(); - cmd.arg("--llvm-version").arg(llvm_version); - } - if !builder.is_rust_llvm(target) { - -From 7a14f9ed4fa60f4d8fc042fc678c80c14a850dc0 Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Sat, 18 Jan 2020 23:00:30 +0100 -Subject: [PATCH 2/5] Fix LLVM version handling in compiletest - -Convert version string to integer before comparing. Otherwise -we get into trouble with double digit versions ;) ---- - src/tools/compiletest/src/header.rs | 27 ++++++++++++++++++----- - src/tools/compiletest/src/header/tests.rs | 5 ++--- - 2 files changed, 23 insertions(+), 9 deletions(-) - -diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs -index 2a24a8c3c9485..cb648db8830ef 100644 ---- a/src/tools/compiletest/src/header.rs -+++ b/src/tools/compiletest/src/header.rs -@@ -191,6 +191,7 @@ impl EarlyProps { - return true; - } - if let Some(ref actual_version) = config.llvm_version { -+ let actual_version = version_to_int(actual_version); - if line.starts_with("min-llvm-version") { - let min_version = line - .trim_end() -@@ -199,7 +200,7 @@ impl EarlyProps { - .expect("Malformed llvm version directive"); - // Ignore if actual version is smaller the minimum required - // version -- &actual_version[..] < min_version -+ actual_version < version_to_int(min_version) - } else if line.starts_with("min-system-llvm-version") { - let min_version = line - .trim_end() -@@ -208,7 +209,7 @@ impl EarlyProps { - .expect("Malformed llvm version directive"); - // Ignore if using system LLVM and actual version - // is smaller the minimum required version -- config.system_llvm && &actual_version[..] < min_version -+ config.system_llvm && actual_version < version_to_int(min_version) - } else if line.starts_with("ignore-llvm-version") { - // Syntax is: "ignore-llvm-version [- ]" - let range_components = line -@@ -219,15 +220,15 @@ impl EarlyProps { - .take(3) // 3 or more = invalid, so take at most 3. - .collect::>(); - match range_components.len() { -- 1 => &actual_version[..] == range_components[0], -+ 1 => actual_version == version_to_int(range_components[0]), - 2 => { -- let v_min = range_components[0]; -- let v_max = range_components[1]; -+ let v_min = version_to_int(range_components[0]); -+ let v_max = version_to_int(range_components[1]); - if v_max < v_min { - panic!("Malformed LLVM version range: max < min") - } - // Ignore if version lies inside of range. -- &actual_version[..] >= v_min && &actual_version[..] <= v_max -+ actual_version >= v_min && actual_version <= v_max - } - _ => panic!("Malformed LLVM version directive"), - } -@@ -238,6 +239,20 @@ impl EarlyProps { - false - } - } -+ -+ fn version_to_int(version: &str) -> u32 { -+ let version_without_suffix = version.split('-').next().unwrap(); -+ let components: Vec = version_without_suffix -+ .split('.') -+ .map(|s| s.parse().expect("Malformed version component")) -+ .collect(); -+ match components.len() { -+ 1 => components[0] * 10000, -+ 2 => components[0] * 10000 + components[1] * 100, -+ 3 => components[0] * 10000 + components[1] * 100 + components[2], -+ _ => panic!("Malformed version"), -+ } -+ } - } - } - -diff --git a/src/tools/compiletest/src/header/tests.rs b/src/tools/compiletest/src/header/tests.rs -index 6c478f7e29da4..31d991e0c2f87 100644 ---- a/src/tools/compiletest/src/header/tests.rs -+++ b/src/tools/compiletest/src/header/tests.rs -@@ -122,9 +122,8 @@ fn llvm_version() { - config.llvm_version = Some("9.3.1-rust-1.43.0-dev".to_owned()); - assert!(!parse_rs(&config, "// min-llvm-version 9.2").ignore); - -- // FIXME. -- // config.llvm_version = Some("10.0.0-rust".to_owned()); -- // assert!(!parse_rs(&config, "// min-llvm-version 9.0").ignore); -+ config.llvm_version = Some("10.0.0-rust".to_owned()); -+ assert!(!parse_rs(&config, "// min-llvm-version 9.0").ignore); - } - - #[test] - -From 66008eb9e4e46bb5c12a215e2abe2338617c2582 Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Sun, 19 Jan 2020 22:47:45 +0100 -Subject: [PATCH 3/5] Adjust data layout in test - ---- - .../run-make-fulldeps/target-specs/my-awesome-platform.json | 2 +- - .../target-specs/my-x86_64-unknown-linux-gnu-platform.json | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json b/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json -index 8d028280a8da7..00de3de05f07a 100644 ---- a/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json -+++ b/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json -@@ -1,5 +1,5 @@ - { -- "data-layout": "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", -+ "data-layout": "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128", - "linker-flavor": "gcc", - "llvm-target": "i686-unknown-linux-gnu", - "target-endian": "little", -diff --git a/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json b/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json -index 48040ae3da0ef..6d5e964ed4fee 100644 ---- a/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json -+++ b/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json -@@ -1,6 +1,6 @@ - { - "pre-link-args": {"gcc": ["-m64"]}, -- "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128", -+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", - "linker-flavor": "gcc", - "llvm-target": "x86_64-unknown-linux-gnu", - "target-endian": "little", - -From a94fa896cc92d5e0678376cf5aa8b64af0899732 Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Tue, 4 Feb 2020 20:35:50 +0100 -Subject: [PATCH 4/5] Fix timeTraceProfilerInitialize for LLVM 10 - ---- - src/rustllvm/PassWrapper.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp -index 90d24d20737db..9e8614e3b6d34 100644 ---- a/src/rustllvm/PassWrapper.cpp -+++ b/src/rustllvm/PassWrapper.cpp -@@ -67,7 +67,11 @@ extern "C" void LLVMInitializePasses() { - } - - extern "C" void LLVMTimeTraceProfilerInitialize() { --#if LLVM_VERSION_GE(9, 0) -+#if LLVM_VERSION_GE(10, 0) -+ timeTraceProfilerInitialize( -+ /* TimeTraceGranularity */ 0, -+ /* ProcName */ "rustc"); -+#elif LLVM_VERSION_GE(9, 0) - timeTraceProfilerInitialize(); - #endif - } - -From 497f879b1e24c369362bcd821959ffabc50a8a31 Mon Sep 17 00:00:00 2001 -From: Nikita Popov -Date: Mon, 2 Mar 2020 22:37:55 +0100 -Subject: [PATCH 5/5] Update CreateMemSet() usage for LLVM 10 - ---- - src/rustllvm/RustWrapper.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp -index 25cfee3373dc4..799adb418822d 100644 ---- a/src/rustllvm/RustWrapper.cpp -+++ b/src/rustllvm/RustWrapper.cpp -@@ -1333,8 +1333,13 @@ extern "C" LLVMValueRef LLVMRustBuildMemSet(LLVMBuilderRef B, - LLVMValueRef Dst, unsigned DstAlign, - LLVMValueRef Val, - LLVMValueRef Size, bool IsVolatile) { -+#if LLVM_VERSION_GE(10, 0) -+ return wrap(unwrap(B)->CreateMemSet( -+ unwrap(Dst), unwrap(Val), unwrap(Size), MaybeAlign(DstAlign), IsVolatile)); -+#else - return wrap(unwrap(B)->CreateMemSet( - unwrap(Dst), unwrap(Val), unwrap(Size), DstAlign, IsVolatile)); -+#endif - } - - extern "C" LLVMValueRef diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index 5b65bcb232..688b1ce761 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -6,7 +6,7 @@ _realname=rust _bootstrapping=yes pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.43.0 +pkgver=1.48.0 pkgrel=1 pkgdesc="Systems programming language focused on safety, speed and concurrency (mingw-w64)" arch=('any') @@ -24,7 +24,7 @@ makedepends=("bison" "${MINGW_PACKAGE_PREFIX}-llvm" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-openssl" - "${MINGW_PACKAGE_PREFIX}-python2" + "${MINGW_PACKAGE_PREFIX}-python" $([[ "$_bootstrapping" == "no" ]] && echo "${MINGW_PACKAGE_PREFIX}-rust") "${MINGW_PACKAGE_PREFIX}-zlib") options=('staticlibs') @@ -35,17 +35,15 @@ source=("https://static.rust-lang.org/dist/${_realname}c-${pkgver}-src.tar.gz"{, "0002-fix-install-msys2.patch" "0003-link-with-system-curl.patch" "0004-unbundle-gcc.patch" - "0005-win32-config.patch" - "70163.patch") -sha256sums=('75f6ac6c9da9f897f4634d5a07be4084692f7ccc2d2bb89337be86cfc18453a1' + "0005-win32-config.patch") +sha256sums=('0e763e6db47d5d6f91583284d2f989eacc49b84794d1443355b85c58d67ae43b' 'SKIP' '500f9bd7452c8d35115ad823d8fcb9bda8b86878c2a0f57f9e6a72fc4ba9a8f5' - 'c1b3a4d234ba10d2baf9cc1a15e830f1b722b10d80f37b316f47501f5274c9c5' - 'e54e1da8428c484f41005bf4f9f7a8643253306e115b23e4dc17b24a6647ecab' + '20aae51f8fe525d677d81f4075011db4f413420393ccd212ba21d503880ddb61' + '13cb1817ef83b396e16fe271172a77648bffe5e90efbbe98eb5fefc5a8d91860' 'b16f65dfdc79e7a722b3e2589e90a1431a971038dd5dfa1394ec0427e3c0a2b4' '1a3d00f3bcf5c21beaa20ee729c45b7b3d76cd2a2c6b70562020f11c1e9dcc6d' - '061f1cf5374c926bc130a4afbde005dcd09fdbaee079469ad045fd23a7a88a2c' - 'fcdd07eaf0790064223811aa710392bab15e489842619328e72f336290e06cdb') + '061f1cf5374c926bc130a4afbde005dcd09fdbaee079469ad045fd23a7a88a2c') validpgpkeys=('108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE') # Rust Language (Tag and Release Signing Key) noextract=(${_realname}c-${pkgver}-src.tar.gz) @@ -60,7 +58,6 @@ prepare() { #patch -p1 -i "${srcdir}/0003-link-with-system-curl.patch" patch -p1 -i "${srcdir}/0004-unbundle-gcc.patch" patch -p1 -i "${srcdir}/0005-win32-config.patch" - patch -p1 -i "${srcdir}/70163.patch" } build() { @@ -87,28 +84,32 @@ build() { --enable-ninja \ --enable-extended \ --disable-codegen-tests \ - --python=${MINGW_PREFIX}/bin/python2 \ --llvm-root=${MINGW_PREFIX} \ + --python=${MINGW_PREFIX}/bin/python \ ${_rust_conf} DEP_NGHTTP_ROOT=${MINGW_PREFIX} \ DEP_OPENSSL_ROOT=${MINGW_PREFIX} \ DEP_Z_ROOT=${MINGW_PREFIX} \ - ${MINGW_PREFIX}/bin/python2 ../${_realname}c-${pkgver}-src/x.py build -j"$(nproc)" --verbose + ${MINGW_PREFIX}/bin/python ../${_realname}c-${pkgver}-src/x.py build --verbose } check() { cd "${srcdir}/${CARCH}" # it might fail on Windows - ${MINGW_PREFIX}/bin/python2 ../${_realname}c-${pkgver}-src/x.py test || true + DEP_NGHTTP_ROOT=${MINGW_PREFIX} \ + DEP_OPENSSL_ROOT=${MINGW_PREFIX} \ + DEP_Z_ROOT=${MINGW_PREFIX} \ + ${MINGW_PREFIX}/bin/python ../${_realname}c-${pkgver}-src/x.py test || true } package() { cd "${srcdir}/${CARCH}" + DEP_NGHTTP_ROOT=${MINGW_PREFIX} \ DEP_OPENSSL_ROOT=${MINGW_PREFIX} \ DEP_Z_ROOT=${MINGW_PREFIX} \ - DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/python2 ../${_realname}c-${pkgver}-src/x.py install --verbose + DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/python ../${_realname}c-${pkgver}-src/x.py install --verbose rm -f ${pkgdir}${MINGW_PREFIX}/bin/libgcc*.dll rm -f ${pkgdir}${MINGW_PREFIX}/bin/libstd*.dll