From 51563211f1ddc9662e89cad5c1a2495fcdf9f117 Mon Sep 17 00:00:00 2001 From: Georgy Yakovlev Date: Thu, 8 Oct 2020 12:32:12 -0700 Subject: dev-lang/rust: bump to 1.47.0 we now install to /usr/lib/rust/ this is more robust and mirrors how rustup installs rust, also most slotted toolchain projects already to it, so we follow Bug: https://bugs.gentoo.org/734018 PR: https://github.com/gentoo/gentoo/pull/16846 Package-Manager: Portage-3.0.8, Repoman-3.0.1 Signed-off-by: Georgy Yakovlev --- dev-lang/rust/Manifest | 15 + ...46.0-don-t-create-prefix-at-time-of-check.patch | 31 ++ ....0-ignore-broken-and-non-applicable-tests.patch | 75 +++ dev-lang/rust/files/gentoo-musl-target-specs.patch | 168 ++++++ dev-lang/rust/rust-1.47.0.ebuild | 582 +++++++++++++++++++++ 5 files changed, 871 insertions(+) create mode 100644 dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch create mode 100644 dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch create mode 100644 dev-lang/rust/files/gentoo-musl-target-specs.patch create mode 100644 dev-lang/rust/rust-1.47.0.ebuild (limited to 'dev-lang') diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest index 9c9eea3dce4d..9e09ade946ea 100644 --- a/dev-lang/rust/Manifest +++ b/dev-lang/rust/Manifest @@ -40,6 +40,21 @@ DIST rust-1.45.1-powerpc64le-unknown-linux-gnu.tar.xz 119234164 BLAKE2B 4148957f DIST rust-1.45.1-s390x-unknown-linux-gnu.tar.xz 124758156 BLAKE2B ff62e14d5ae9f7213ebc24d694317ff292cb0d7d2a67f0ca284cddd2b9f594547b01a6c647780d47989d4405072f377d37fc03933431a3df804e37bc1248e803 SHA512 278411c6308eaa4d732ff4c0f448d808a5ee74dae5f3eaf04773ccf65c9bc5963153f62346d30de0f577dd6da89c55bed280c2fb0e50d2075e3c30a3649fc4e8 DIST rust-1.45.1-x86_64-unknown-linux-gnu.tar.xz 117764080 BLAKE2B cafe6e4f7c28112879089d75703a1b1ce7c0cf9b5ab5beeb4ddf343f7bc93e8704bc105ba0bd95f1df6d62439f206d8f4ae9090330af857ec0a249540eb63122 SHA512 13ee5ff7cae29440e32fb140404ff01414d66f0ea8d79777fb1586541de1ee6ef8e12f9249c35374501460a2352f7d0f6035b5bdc2f0daa91d772a157657ec0b DIST rust-1.45.1-x86_64-unknown-linux-musl.tar.xz 123820216 BLAKE2B 1afe48589e5eec15d8fdb31d52b2ada49688e78a311298d421a8b2d4c0cc6a708223e5976518d66506584dc2adc63651b62b8c1fc3c3ccfaff80e2ef7ade5078 SHA512 39875878acfeb05d7b72bab2dea51063a523fa7ad136d582ba28603df7f8b1c3360e5838e5f9b08f396969e52bb1fc672fa4c08cf5f8ffc39128af129b6b17a6 +DIST rust-1.46.0-aarch64-unknown-linux-gnu.tar.xz 127384736 BLAKE2B a1efd25cf429a309a454ef5db38c68d642920e859ef6effbe88ace7f3c4050ae7e9cf10d2f5b70405475ffcbbbc80338e3a5e4b3cb632c555e31a0ebc1b76cd4 SHA512 53e5d8afadaa9505286dce4acbb911126d17bc7bf45ea4685070ff07be7f6c7860e543a7686eeac695e7e3e127ca38ba2f09b73467fbf5f92d0b2195467c51f2 +DIST rust-1.46.0-arm-unknown-linux-gnueabi.tar.xz 121741008 BLAKE2B d277cb19c9f9641f216eba9ddb8bdb0a1bf70b7376e82798dad3116ff6d976c6ec8f6442831ae6a3c64cfdb46c59cf47b482df5200af49ba5eeccb663538084b SHA512 74cc1c8f56c88bdb669d52edca69c8aed7500e51498e8bf4099b2edbf85a2beab1e6d447029eb24e12fdfcbf2272f5d8b741eb4aa48fe83dac44759478429284 +DIST rust-1.46.0-arm-unknown-linux-gnueabihf.tar.xz 120726564 BLAKE2B 5ef9c319d4744016e336a8d8bde99b2b9183dd13fc6873d4f0e239a52a86e054d42ee48ca1a84ac42d140b1bbe234f4eeaf90717f14959ad6966681429eef233 SHA512 89972cc03c05dd5bc003f6cf16e062b935b3fda288ae0c3d32a3d08ccdcbf7699c306aa3c017a13e76f13f8dca7a951ec98f23507de978ae87cffb6d6907af5c +DIST rust-1.46.0-armv7-unknown-linux-gnueabihf.tar.xz 123912836 BLAKE2B 97cdb2e8d643826f7dd1554096e14c58c35b38cc2eebb49c478343bf8bc157995a9f1099c014800701d34edbf0f0798ac29babbd2a5bf261d1956bc731b0a99c SHA512 c7e320fd5169c99bf8a12fb5bf1c5fb19a05d14f75ce655e4b64cad3456594ef09be1da7ac34a09b5d84da0c857d1a6e5a0695b5ff04cda491ea92fea15d28dc +DIST rust-1.46.0-i686-unknown-linux-gnu.tar.xz 141319800 BLAKE2B 712227e42b8597ee1c645cb344042e79ca40aef0e22d783c4a0c042bd07f686aafd9b80bebe0dfe69b4b012056509bfe510fffa8ba5357656d459fe5885fe0fe SHA512 b01e9b06c9de50e43bc6b5e1a5e6cc49dab1cf28b9cf0a8b974d2630c7ed4c6a5df6f321c872e11eb622c42f1d8cfaec77c1b67254a84365464fe3415acfa07f +DIST rust-1.46.0-mips-unknown-linux-gnu.tar.xz 110175584 BLAKE2B 23e38e81d281d0df23795ff60e4a7503f63d443d966bc6d5068edc50fc0dd90e2fe45eb90b901a1fb3f8f813375533eaa142d625b661f5d76d2097b0cf572606 SHA512 0635060dd15f548834e5c946ec8deea10bf234f550f6a01d4d491f45e0d5f16e957f99caba14c91225d100e7c59e909869b816dfffe9f8681c09e9e5b6ca2bdd +DIST rust-1.46.0-mips64-unknown-linux-gnuabi64.tar.xz 117357812 BLAKE2B c3118a0b710ceaffda8523840551306d4bbc7c78fc26016fc1ac0037c2a7cd68f56c11999f7e3bc435f93e0dbebf348fdc52255cc5978bdffb2d55dc9d56e23e SHA512 5dc6de40429e72ecad9546390f1f5e626d388938c7bc50a56fb258787b45e8d7363170d8d1a2bff56fbd8bef22060b6cb0c50fb016ccc7d4fb767ba6b7e80c2d +DIST rust-1.46.0-mipsel-unknown-linux-gnu.tar.xz 111804692 BLAKE2B 4779d5602f2107321d5c6042dce1baaf6eec2f60cf2ba4330bf72fda0868d7e8294cf573b3ffab3654a0689d11599f2fc37430005686e91439abc7ae6fefb977 SHA512 3c9d17fa89636d37e125d7665883abc9912330d4a1f5291d44771fd1cbb17d604deccc07685cb567f1b141dde3668d5ef55f3661b04e4506d5337d69acc6738c +DIST rust-1.46.0-powerpc-unknown-linux-gnu.tar.xz 111495200 BLAKE2B d618c61a05507abe13d1294594187a4552896cb61396c2f8bd6e506a71ab4bb5cd26ae3b2b573d1d5a4ea79fb4dd2238a2ae34059357ef397264beb0b67cbc34 SHA512 38df2204bd4bfe7371365266651a84da218ba909c3ae107432f6fef892e71488d193b8f54fe6738edd91aa0ca029038d864806b25289254711bd10f736bcc2d7 +DIST rust-1.46.0-powerpc64-unknown-linux-gnu.tar.xz 124882812 BLAKE2B 2362e25d39cfd2039ce18db08f43bceaaccd208ec113c16f6718803eadda964bb254a6afc606765a00026adc93cf366495d3546d6aac8a7444088f519d421c9b SHA512 40f9423d838cab74b9920372e728c4ca7057005d83af587387dd2b164a0bf93de65cebc035320bce25f80914c63ce65b84218b9a776b0b905428e4cba0821b8b +DIST rust-1.46.0-powerpc64le-unknown-linux-gnu.tar.xz 130200900 BLAKE2B d38a7f131983aee27e6af59ab03999e7420745a0f9256b2623e71f36dd6f12605025dbdc510bd5ffb73e0d31a5c7e56a791bdf718b2eba629d08e2f75221b1c8 SHA512 986f0bf7995f35836b73fb7045cf43ae5efe0c2543c75c66cdcc0f8c1dd3513def3c291e021241e328142deaca690ce113526ffc870c4412a7841f244258a43e +DIST rust-1.46.0-s390x-unknown-linux-gnu.tar.xz 134521076 BLAKE2B d3efd71dd7db812736680929185ad5f58a2dbf7d1b8a6f851834dd7b41713fc171dbcdf2472bedc13751bfeed58070d919d2a1138765ab75c0f4bdf817cb6418 SHA512 b6146695225ff6d0516e7bb6bc4620599356bb89b14f429a09d9d7f8715a94e8e218402346d5c9a10eeb54c0bdc40fb179289216b0cb4edd5bdf886f6b69aab4 +DIST rust-1.46.0-x86_64-unknown-linux-gnu.tar.xz 127200200 BLAKE2B 7d755e0622cda99d111490197b21ff4aaeb7b13292804566bc677b7b1d833eaa644b7a801863a1a01e3aa34be28a80344cae69edc57f8c8788884c78e037b750 SHA512 95f5adc2d2137010c7e5ac8a0fc70485250b4f9a909cb8b164b35fffff76ab88e9b09d305bfac37324ed080c5fc7643001d2abec5454ca911dc3513f1af52c88 +DIST rust-1.46.0-x86_64-unknown-linux-musl.tar.xz 142372372 BLAKE2B 7d3672234b61b772e2311127db569b37296bf3a9bf86841fb78c6d20da6a6abfc6c866ba4aa7cc44c12eebb0744fbeb401b491314db9eb481b926792cadcca22 SHA512 e2599c4c10fe9725e63524d89c0be869d43347620b0f6ff1a93cee5e7219f5560c6171d8eda99e5624eba60b9d488bfe0942c23eacdbac2ba42e4cd63f14b7c9 DIST rustc-1.44.1-src.tar.xz 94756856 BLAKE2B 60f536c3ba0fa1fec4b6333ee57809ee5226090ad5041c14a136b4356ff3b898062e06c3fe54effe873e27931ac8fcb902cd48a38615a8de7eebc6ecb3bdc2bd SHA512 1c17002edae844a710db9b144c17171416330dc565343c65af8a6e112fb61555e2025bb4cf33cac1229d7df689e6ff8858b91ae00552400ccacafaf1de11849b DIST rustc-1.45.2-src.tar.xz 98683036 BLAKE2B a4102a5d4744b7ccc9b076aba00c39d69532f777e7d39e0e4ce2033b663b43e27b55034fdb3a1e13379fae9a16bff9e7748865a84507f7388ef0ebf9d421eac7 SHA512 cc6250c0bc844e77ca6dd7ae013e434ed3009b001914114866ed31f28edf3960221454d131e298b15050e3b8153fb8298d509559c2f7307c64611aa8e36b4d25 DIST rustc-1.46.0-src.tar.xz 101868452 BLAKE2B da9798596b124a10d79c236a871228f05e5f571d22c2259328e7026c91e088c85f5de9c0536a16531e0cb10477bfcd16d3ac11467979f5561cb6199442b877ef SHA512 099857f1d295043587a4e2a65ef3e6a90e12c8b6958e98535a1656c113c553f9a9b621aba8a19cf21bd8d2c79d27cbfa4b8e6fabbcb3cbfee23b545be7b450b4 +DIST rustc-1.47.0-src.tar.xz 104143736 BLAKE2B 0454094dde35275488046826da87655e51bf0795481d6d08fd70d644bfc12481bca8641166106ef32f20494906025244715b16ff21a1c023f4bd2818aab42521 SHA512 6ba83c0158f8130ddeae7e070417a2121d8a548c8fe97e28bce116d84048636c75aaee78e0c92cd43a50f5679a1223fc226cc8c5ba9bbd1465e84c5c6034d5c9 diff --git a/dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch b/dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch new file mode 100644 index 000000000000..9064a52ac2d3 --- /dev/null +++ b/dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch @@ -0,0 +1,31 @@ +From 6b31232a9d32529e30765108f30365ac48587ce6 Mon Sep 17 00:00:00 2001 +From: Georgy Yakovlev +Date: Thu, 8 Oct 2020 15:48:33 -0700 +Subject: [PATCH] don't create prefix at time of check + +--- + src/bootstrap/install.rs | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/src/bootstrap/install.rs b/src/bootstrap/install.rs +index d9ee3bc..c5da9ce 100644 +--- a/src/bootstrap/install.rs ++++ b/src/bootstrap/install.rs +@@ -73,12 +73,8 @@ fn install_sh( + let docdir_default = datadir_default.join("doc/rust"); + 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::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)) +- }); ++ ++ let prefix = builder.config.prefix.as_ref().unwrap_or(&prefix_default); + 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); +-- +2.28.0 + diff --git a/dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch new file mode 100644 index 000000000000..ff1707f4b8a4 --- /dev/null +++ b/dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch @@ -0,0 +1,75 @@ +From 1879d1d1a284bf51c752e47db284ce22701ed5d0 Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sun, 16 Sep 2018 16:38:48 +0000 +Subject: [PATCH 12/15] Ignore broken and non-applicable tests + +c-link-to-rust-va-list-fn: unstable feature, broken on aarch64, #56475 +env-funky-keys: can't handle LD_PRELOAD (e.g. sandbox) +long-linker-command-lines: takes >10 minutes to run (but still passes) +simd-intrinsic-generic-bitmask.rs: broken on BE, #59356 +sparc-struct-abi: no sparc target +sysroot-crates-are-unstable: can't run rustc without RPATH +--- + src/test/codegen/sparc-struct-abi.rs | 1 + + src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile | 2 ++ + src/test/run-make-fulldeps/long-linker-command-lines/Makefile | 2 ++ + src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 ++ + src/test/ui/env-funky-keys.rs | 1 + + 6 files changed, 10 insertions(+) + +diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs +index 78e5b14a212..6f93e93286b 100644 +--- a/src/test/codegen/sparc-struct-abi.rs ++++ b/src/test/codegen/sparc-struct-abi.rs +@@ -4,6 +4,7 @@ + + // only-sparc64 + // compile-flags: -O --target=sparc64-unknown-linux-gnu --crate-type=rlib ++// ignore-test + #![feature(no_core, lang_items)] + #![no_core] + +diff --git a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile b/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile +index f124ca2ab61..363b18f0985 100644 +--- a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile ++++ b/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile +@@ -1,3 +1,5 @@ ++# ignore-aarch64 ++ + -include ../tools.mk + + all: +diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile +index 5876fbc94bc..5f167ece1a2 100644 +--- a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile ++++ b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile +@@ -1,3 +1,5 @@ ++# ignore-test ++ + -include ../tools.mk + + all: +diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile +index 9e770706857..6d92ec5cec8 100644 +--- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile ++++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile +@@ -1,1 +1,3 @@ ++# ignore-test ++ + all: + python2.7 test.py +diff --git a/src/test/ui/env-funky-keys.rs b/src/test/ui/env-funky-keys.rs +index c5c824ac58d..f3fe047a79c 100644 +--- a/src/test/ui/env-funky-keys.rs ++++ b/src/test/ui/env-funky-keys.rs +@@ -1,6 +1,7 @@ + // run-pass + // Ignore this test on Android, because it segfaults there. + ++// ignore-test + // ignore-android + // ignore-windows + // ignore-cloudabi no execve +-- +2.24.1 + diff --git a/dev-lang/rust/files/gentoo-musl-target-specs.patch b/dev-lang/rust/files/gentoo-musl-target-specs.patch new file mode 100644 index 000000000000..0661a26841b7 --- /dev/null +++ b/dev-lang/rust/files/gentoo-musl-target-specs.patch @@ -0,0 +1,168 @@ +From 9fb44efd4a6270443ca2a06a098c83cf9820cc8b Mon Sep 17 00:00:00 2001 +From: Georgy Yakovlev +Date: Thu, 8 Oct 2020 22:38:54 -0700 +Subject: [PATCH] add gentoo musl target specs + +Directly based on patch by Samuel Holland +Found at: https://github.com/smaeul/portage-overlay/blob/master/dev-lang/rust/files/ + +Signed-off-by: Georgy Yakovlev +--- + src/librustc_target/spec/aarch64_gentoo_linux_musl.rs | 11 +++++++++++ + .../spec/armv7_gentoo_linux_musleabihf.rs | 11 +++++++++++ + src/librustc_target/spec/i686_gentoo_linux_musl.rs | 11 +++++++++++ + src/librustc_target/spec/mod.rs | 8 ++++++++ + .../spec/powerpc64_gentoo_linux_musl.rs | 11 +++++++++++ + .../spec/powerpc64le_gentoo_linux_musl.rs | 11 +++++++++++ + src/librustc_target/spec/powerpc_gentoo_linux_musl.rs | 11 +++++++++++ + src/librustc_target/spec/x86_64_gentoo_linux_musl.rs | 11 +++++++++++ + 8 files changed, 85 insertions(+) + create mode 100644 src/librustc_target/spec/aarch64_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs + create mode 100644 src/librustc_target/spec/i686_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/x86_64_gentoo_linux_musl.rs + +diff --git a/src/librustc_target/spec/aarch64_gentoo_linux_musl.rs b/src/librustc_target/spec/aarch64_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..420fe7c +--- /dev/null ++++ b/src/librustc_target/spec/aarch64_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::aarch64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "aarch64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs b/src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs +new file mode 100644 +index 0000000..067e2d6 +--- /dev/null ++++ b/src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::armv7_unknown_linux_musleabihf::target()?; ++ ++ base.llvm_target = "armv7-gentoo-linux-musleabihf".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/i686_gentoo_linux_musl.rs b/src/librustc_target/spec/i686_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..1cd39cd +--- /dev/null ++++ b/src/librustc_target/spec/i686_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::i686_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "i686-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs +index fa29ff3..a685600 100644 +--- a/src/librustc_target/spec/mod.rs ++++ b/src/librustc_target/spec/mod.rs +@@ -490,6 +490,14 @@ macro_rules! supported_targets { + } + + supported_targets! { ++ ("aarch64-gentoo-linux-musl", aarch64_gentoo_linux_musl), ++ ("armv7-gentoo-linux-musleabihf", armv7_gentoo_linux_musleabihf), ++ ("i686-gentoo-linux-musl", i686_gentoo_linux_musl), ++ ("powerpc-gentoo-linux-musl", powerpc_gentoo_linux_musl), ++ ("powerpc64-gentoo-linux-musl", powerpc64_gentoo_linux_musl), ++ ("powerpc64le-gentoo-linux-musl", powerpc64le_gentoo_linux_musl), ++ ("x86_64-gentoo-linux-musl", x86_64_gentoo_linux_musl), ++ + ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu), + ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32), + ("i686-unknown-linux-gnu", i686_unknown_linux_gnu), +diff --git a/src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs b/src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..e840bb2 +--- /dev/null ++++ b/src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs b/src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..1037d82 +--- /dev/null ++++ b/src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64le_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64le-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/powerpc_gentoo_linux_musl.rs b/src/librustc_target/spec/powerpc_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..a623ffe +--- /dev/null ++++ b/src/librustc_target/spec/powerpc_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/x86_64_gentoo_linux_musl.rs b/src/librustc_target/spec/x86_64_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..f330473 +--- /dev/null ++++ b/src/librustc_target/spec/x86_64_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::x86_64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "x86_64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +-- +2.28.0 + diff --git a/dev-lang/rust/rust-1.47.0.ebuild b/dev-lang/rust/rust-1.47.0.ebuild new file mode 100644 index 000000000000..bc0dd9a95b40 --- /dev/null +++ b/dev-lang/rust/rust-1.47.0.ebuild @@ -0,0 +1,582 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6..9} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib-build python-any-r1 rust-toolchain toolchain-funcs + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.xz + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430 + NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA" + +IUSE="clippy cpu_flags_x86_sse2 debug doc libressl miri nightly parallel-compiler rls rustfmt +system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# 1. List all the working slots (with min versions) in ||, newest first. +# 2. Update the := to specify *max* version, e.g. < 12. +# 3. Specify LLVM_MAX_SLOT, e.g. 11. +LLVM_DEPEND=" + || ( + sys-devel/llvm:11[${LLVM_TARGET_USEDEPS// /,}] + sys-devel/llvm:10[${LLVM_TARGET_USEDEPS// /,}] + ) + /dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rustc version!" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run \'eselect rust\' and set correct rust version" + die + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=6144 + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rls 512 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + M=$(( $(usex system-llvm 0 2048) + ${M} )) + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 15 10) * ${M} / 10 )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + use system-bootstrap && boostrap_rust_version_check + + # required to link agains system libs, otherwise + # crates use bundled sources and compile own static version + export LIBGIT2_SYS_USE_PKG_CONFIG=1 + export LIBSSH2_SYS_USE_PKG_CONFIG=1 + export PKG_CONFIG_ALLOW_CROSS=1 + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "$LLVM_MAX_SLOT")/bin/llvm-config" + + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +src_prepare() { + if ! use system-bootstrap; then + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets="${rust_targets},\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets="${rust_targets},\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' src/librustc_target/spec/wasm32_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + local tools="\"cargo\"," + if use clippy; then + tools="\"clippy\",$tools" + fi + if use miri; then + tools="\"miri\",$tools" + fi + if use rls; then + tools="\"rls\",\"analysis\",\"src\",$tools" + fi + if use rustfmt; then + tools="\"rustfmt\",$tools" + fi + + local rust_stage0_root + if use system-bootstrap; then + rust_stage0_root="$(rustc --print sysroot)" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + + rust_target="$(rust_abi)" + + cat <<- EOF > "${S}"/config.toml + [llvm] + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + [build] + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + docs = $(toml_usex doc) + compiler-docs = $(toml_usex doc) + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = false + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debuginfo-level-rustc = 0 + backtrace = true + incremental = false + default-linker = "$(tc-getCC)" + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + backtrace-on-ice = true + jemalloc = false + [dist] + src-tarball = false + EOF + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + cat <<- EOF >> "${S}"/config.env + CFLAGS_${rust_target}=${arch_cflags} + EOF + + cat <<- EOF >> "${S}"/config.toml + [target.${rust_target}] + cc = "$(tc-getBUILD_CC)" + cxx = "$(tc-getBUILD_CXX)" + linker = "$(tc-getCC)" + ar = "$(tc-getAR)" + EOF + # librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + if use elibc_musl; then + cat <<- EOF >> "${S}"/config.toml + crt-static = false + EOF + fi + if use system-llvm; then + cat <<- EOF >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + EOF + fi + done + if use wasm; then + cat <<- EOF >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + EOF + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/ + + # extra targets defined as a bash array + # spec format: :: + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form :: + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, : + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- EOF >> "${S}"/config.toml + [target.${cross_rust_target}] + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ar = "${cross_toolchain}-ar" + EOF + if use system-llvm; then + cat <<- EOF >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + EOF + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following settings:" + cat "${S}"/config.toml || die +} + +src_compile() { + # we need \n IFS to have config.env with spaces loaded properly. #734018 + ( + IFS=$'\n' + env $(cat "${S}"/config.env) RUST_BACKTRACE=1\ + "${EPYTHON}" ./x.py build -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + ) +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! ( + IFS=$'\n' + env $(cat "${S}"/config.env) RUST_BACKTRACE=1 \ + "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + ) + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + # https://github.com/rust-lang/rust/issues/77721 + # also 1.46.0-don-t-create-prefix-at-time-of-check.patch + dodir "/usr/lib/${PN}/${PV}" + ( + IFS=$'\n' + env $(cat "${S}"/config.env) DESTDIR="${D}" \ + "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml || die + ) + + # bug #689562, #689160 + rm -v "${D}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${D}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + dobashcomp build/tmp/dist/cargo-image/etc/bash_completion.d/cargo + + local symlinks=( + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + cargo + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rls && symlinks+=( rls ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust//bin/rustc- + # need to fix eselect-rust to remove this hack. + mv -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${i}-${PV}" || die + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}-${PV}" "${ED}/usr/lib/${PN}/${PV}/bin/${i}" || die + dosym "../lib/${PN}/${PV}/bin/${i}-${PV}" "/usr/bin/${i}-${PV}" + done + dosym "../../lib/${PN}/${PV}/share/doc" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/${PN}/${PV}/lib" + MANPATH="${EPREFIX}/usr/lib/${PN}/${PV}/share/man" + $(usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '') + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-EOF > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/share/doc/rust + EOF + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use rls; then + echo /usr/bin/rls >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" +} + +pkg_postinst() { + eselect rust update --if-unset + + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} -- cgit v1.2.3-65-gdbad