add paraview

This commit is contained in:
none 2024-03-17 13:29:07 +01:00
parent de33d1f0e9
commit 20a6d99334
28 changed files with 2072 additions and 0 deletions

View File

@ -0,0 +1,25 @@
From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001
From: Jory Pratt <anarchy@gentoo.org>
Date: Tue, 2 Aug 2022 18:32:53 -0500
Subject: [PATCH] Enable dynamic linking by default for musl
Signed-off-by: Jory Pratt <anarchy@gentoo.org>
---
compiler/rustc_target/src/spec/linux_musl_base.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/compiler/rustc_target/src/spec/linux_musl_base.rs b/compiler/rustc_target/src/spec/linux_musl_base.rs
index 207a87ab0..8a5a43363 100644
--- a/compiler/rustc_target/src/spec/linux_musl_base.rs
+++ b/compiler/rustc_target/src/spec/linux_musl_base.rs
@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions {
base.crt_objects_fallback = Some(CrtObjectsFallback::Musl);
// These targets statically link libc by default
- base.crt_static_default = true;
+ base.crt_static_default = false;
base
}
--
2.35.1

View File

@ -0,0 +1,34 @@
From 92aa5f6b272bcdc020a34f8d90f9ef851b5b4504 Mon Sep 17 00:00:00 2001
From: John Millikin <john@john-millikin.com>
Date: Mon, 9 Jan 2023 13:54:21 +0900
Subject: [PATCH] Disable `linux_ext` in wasm32 and fortanix rustdoc builds.
The `std::os::unix` module is stubbed out when building docs for these
target platforms. The introduction of Linux-specific extension traits
caused `std::os::net` to depend on sub-modules of `std::os::unix`,
which broke rustdoc for the `wasm32-unknown-unknown` target.
Adding an additional `#[cfg]` guard solves that rustdoc failure by
not declaring `linux_ext` on targets with a stubbed `std::os::unix`.
---
library/std/src/os/net/mod.rs | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/library/std/src/os/net/mod.rs b/library/std/src/os/net/mod.rs
index 5ec267c41e97c..b7046dd7c598c 100644
--- a/library/std/src/os/net/mod.rs
+++ b/library/std/src/os/net/mod.rs
@@ -1,4 +1,13 @@
//! OS-specific networking functionality.
+// See cfg macros in `library/std/src/os/mod.rs` for why these platforms must
+// be special-cased during rustdoc generation.
+#[cfg(not(all(
+ doc,
+ any(
+ all(target_arch = "wasm32", not(target_os = "wasi")),
+ all(target_vendor = "fortanix", target_env = "sgx")
+ )
+)))]
#[cfg(any(target_os = "linux", target_os = "android", doc))]
pub(super) mod linux_ext;

View File

@ -0,0 +1,30 @@
From 1879d1d1a284bf51c752e47db284ce22701ed5d0 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
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
---
test/ui/env-funky-keys.rs | 1 +
6 files changed, 10 insertions(+)
diff --git a/tests/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs
index c5c824ac58d..f3fe047a79c 100644
--- a/tests/ui/env-funky-keys.rs
+++ b/tests/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

View File

@ -0,0 +1,23 @@
https://github.com/rust-lang/rust/pull/113579 which reverts the broken
https://github.com/rust-lang/rust/pull/110906.
From: ekusiadadus <ekusiadadus@gmail.com>
Date: Wed, 12 Jul 2023 00:54:27 +0900
Subject: [PATCH] Revert "fix: :bug: etc/bash_complettion -> src/etc/... to
avoid copy error"
This reverts commit 08ce68b6a6bad360e9c3611ad60cf6598401f878.
--- a/src/bootstrap/dist.rs
+++ b/src/bootstrap/dist.rs
@@ -1074,11 +1074,7 @@ impl Step for Cargo {
tarball.add_file(&cargo, "bin", 0o755);
tarball.add_file(etc.join("_cargo"), "share/zsh/site-functions", 0o644);
- tarball.add_renamed_file(
- etc.join("cargo.bashcomp.sh"),
- "src/etc/bash_completion.d",
- "cargo",
- );
+ tarball.add_renamed_file(etc.join("cargo.bashcomp.sh"), "etc/bash_completion.d", "cargo");
tarball.add_dir(etc.join("man"), "share/man/man1");
tarball.add_legal_and_readme_to("share/doc/cargo");

View File

@ -0,0 +1,39 @@
https://bugs.gentoo.org/910595
https://github.com/rust-lang/rust/issues/113678
https://github.com/rust-lang/rust/commit/67b5990472e3cac643d8cf90f45fe42201ddec3c
From: jyn <github@jyn.dev>
Date: Mon, 10 Jul 2023 15:59:30 -0500
Subject: [PATCH] Revert "Fix `x test lint-docs` when download-rustc is
enabled"
This was not the correct fix. The problem was two-fold:
- `download-rustc` didn't respect `llvm.assertions`
- `rust-dev` was missing a bump to `download-ci-llvm-stamp`
The first is fixed in this PR and the latter was fixed a while ago. Revert this change to avoid breaking `rpath = false`.
--- a/src/tools/lint-docs/src/groups.rs
+++ b/src/tools/lint-docs/src/groups.rs
@@ -39,7 +39,6 @@ impl<'a> LintExtractor<'a> {
fn collect_groups(&self) -> Result<LintGroups, Box<dyn Error>> {
let mut result = BTreeMap::new();
let mut cmd = Command::new(self.rustc_path);
- cmd.env_remove("LD_LIBRARY_PATH");
cmd.arg("-Whelp");
let output = cmd.output().map_err(|e| format!("failed to run command {:?}\n{}", cmd, e))?;
if !output.status.success() {
--- a/src/tools/lint-docs/src/lib.rs
+++ b/src/tools/lint-docs/src/lib.rs
@@ -403,12 +403,6 @@ impl<'a> LintExtractor<'a> {
fs::write(&tempfile, source)
.map_err(|e| format!("failed to write {}: {}", tempfile.display(), e))?;
let mut cmd = Command::new(self.rustc_path);
- // NOTE: bootstrap sets `LD_LIBRARY_PATH` for building lint-docs itself.
- // Unfortunately, lint-docs is a bootstrap tool while rustc is built from source,
- // and sometimes the paths conflict. In particular, when using `download-rustc`,
- // the LLVM versions can differ between `ci-llvm` and `ci-rustc-sysroot`.
- // Unset LD_LIBRARY_PATH here so it doesn't interfere with running the compiler.
- cmd.env_remove("LD_LIBRARY_PATH");
if options.contains(&"edition2015") {
cmd.arg("--edition=2015");
} else {

View File

@ -0,0 +1,26 @@
https://github.com/rust-lang/rust/pull/114440
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Thu, 3 Aug 2023 15:05:40 -0700
Subject: [PATCH] bootstrap: config: fix version comparison bug
Rust requires a previous version of Rust to build, such as the current version, or the
previous version. However, the version comparison logic did not take patch releases
into consideration when doing the version comparison for the current branch, e.g.
Rust 1.71.1 could not be built by Rust 1.71.0 because it is neither an exact version
match, or the previous version.
Adjust the version comparison logic to tolerate mismatches in the patch version.
Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
--- a/src/bootstrap/config.rs
+++ b/src/bootstrap/config.rs
@@ -2004,7 +2004,8 @@ impl Config {
.unwrap();
if !(source_version == rustc_version
|| (source_version.major == rustc_version.major
- && source_version.minor == rustc_version.minor + 1))
+ && (source_version.minor == rustc_version.minor
+ || source_version.minor == rustc_version.minor + 1)))
{
let prev_version = format!("{}.{}.x", source_version.major, source_version.minor - 1);
eprintln!(

View File

@ -0,0 +1,156 @@
This patch bumps all libc dependencies and checksums to 0.2.146, which includes the fix for musl 1.2.4.
--- a/vendor/addr2line-0.20.0/Cargo.lock
+++ b/vendor/addr2line-0.20.0/Cargo.lock
@@ -246,9 +246,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libtest-mimic"
--- a/vendor/backtrace-0.3.67/Cargo.lock
+++ b/vendor/backtrace-0.3.67/Cargo.lock
@@ -64,9 +64,9 @@ checksum = "dec7af912d60cdbd3677c1af9352
[[package]]
name = "libc"
-version = "0.2.138"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libloading"
--- a/vendor/bstr/Cargo.lock
+++ b/vendor/bstr/Cargo.lock
@@ -34,9 +34,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.138"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "memchr"
--- a/vendor/cranelift-jit/Cargo.lock
+++ b/vendor/cranelift-jit/Cargo.lock
@@ -224,9 +224,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "log"
--- a/vendor/crossbeam-channel/Cargo.lock
+++ b/vendor/crossbeam-channel/Cargo.lock
@@ -50,9 +50,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "num_cpus"
--- a/vendor/elasticlunr-rs/Cargo.lock
+++ b/vendor/elasticlunr-rs/Cargo.lock
@@ -555,9 +555,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "lindera"
--- a/vendor/handlebars/Cargo.lock
+++ b/vendor/handlebars/Cargo.lock
@@ -550,9 +550,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "lock_api"
--- a/vendor/icu_locid/Cargo.lock
+++ b/vendor/icu_locid/Cargo.lock
@@ -318,9 +318,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "litemap"
--- a/vendor/libffi/Cargo.lock
+++ b/vendor/libffi/Cargo.lock
@@ -10,9 +10,9 @@ checksum = "50d30906286121d95be3d479533b
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libffi"
--- a/vendor/terminal_size/Cargo.lock
+++ b/vendor/terminal_size/Cargo.lock
@@ -47,9 +47,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "linux-raw-sys"
--- a/vendor/tracing-tree/Cargo.lock
+++ b/vendor/tracing-tree/Cargo.lock
@@ -100,9 +100,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "log"

View File

@ -0,0 +1,19 @@
https://paste.sr.ht/~kchibisov/682321e0fd4a3ece4a4b7b71591896f5cd3cdb22
https://github.com/gentoo/gentoo/pull/35246#discussion_r1484525497
diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs
index f606fa483ca..8a2e1c40e8b 100644
--- a/compiler/rustc_llvm/build.rs
+++ b/compiler/rustc_llvm/build.rs
@@ -237,10 +237,7 @@ fn main() {
// of llvm-config, not the target that we're attempting to link.
let mut cmd = Command::new(&llvm_config);
cmd.arg(llvm_link_arg).arg("--libs");
-
- if !is_crossed {
- cmd.arg("--system-libs");
- }
+ cmd.arg("--system-libs");
if (target.starts_with("arm") && !target.contains("freebsd"))
|| target.starts_with("mips-")

View File

@ -0,0 +1,45 @@
From 4b7e0a0b56aa2446e670dfd6558380a1039a86aa Mon Sep 17 00:00:00 2001
From: Arlo Siemsen <arsiem@microsoft.com>
Date: Thu, 4 Jan 2024 11:40:56 -0600
Subject: [PATCH] Handle vendored sources when remapping paths
Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
---
src/bootstrap/src/core/builder.rs | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs
index 4e20babc55a..3770d0687b2 100644
--- a/src/bootstrap/src/core/builder.rs
+++ b/src/bootstrap/src/core/builder.rs
@@ -1799,15 +1799,20 @@ pub fn cargo(
}
if self.config.rust_remap_debuginfo {
- // FIXME: handle vendored sources
- let registry_src = t!(home::cargo_home()).join("registry").join("src");
let mut env_var = OsString::new();
- for entry in t!(std::fs::read_dir(registry_src)) {
- if !env_var.is_empty() {
- env_var.push("\t");
- }
- env_var.push(t!(entry).path());
+ if self.config.vendor {
+ let vendor = self.build.src.join("vendor");
+ env_var.push(vendor);
env_var.push("=/rust/deps");
+ } else {
+ let registry_src = t!(home::cargo_home()).join("registry").join("src");
+ for entry in t!(std::fs::read_dir(registry_src)) {
+ if !env_var.is_empty() {
+ env_var.push("\t");
+ }
+ env_var.push(t!(entry).path());
+ env_var.push("=/rust/deps");
+ }
}
cargo.env("RUSTC_CARGO_REGISTRY_SRC_TO_REMAP", env_var);
}
--
2.43.0

View File

@ -0,0 +1,19 @@
From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001
From: Jory Pratt <anarchy@gentoo.org>
Date: Tue, 2 Aug 2022 18:32:53 -0500
Subject: [PATCH] Enable dynamic linking by default for musl
Signed-off-by: Jory Pratt <anarchy@gentoo.org>
--- a/compiler/rustc_target/src/spec/base/linux_musl.rs
+++ b/compiler/rustc_target/src/spec/base/linux_musl.rs
@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions {
base.crt_objects_fallback = Some(CrtObjectsFallback::Musl);
// These targets statically link libc by default
- base.crt_static_default = true;
+ base.crt_static_default = false;
base
}
--
2.35.1

View File

@ -0,0 +1,73 @@
https://github.com/rust-lang/rust/pull/120661
From: WANG Xuerui <xen0n@gentoo.org>
Date: Mon, 5 Feb 2024 13:18:32 +0800
Subject: [PATCH] target: default to the medium code model on LoongArch targets
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The Rust LoongArch targets have been using the default LLVM code model
so far, which is "small" in LLVM-speak and "normal" in LoongArch-speak.
As described in the "Code Model" section of LoongArch ELF psABI spec
v20231219 [1], one can only make function calls as far as ±128MiB with
the "normal" code model; this is insufficient for very large software
containing Rust components that needs to be linked into the big text
section, such as Chromium.
Because:
* we do not want to ask users to recompile std if they are to build
such software,
* objects compiled with larger code models can be linked with those
with smaller code models without problems, and
* the "medium" code model is comparable to the "small"/"normal" one
performance-wise (same data access pattern; each function call
becomes 2-insn long and indirect, but this may be relaxed back into
the direct 1-insn form in a future LLVM version), but is able to
perform function calls within ±128GiB,
it is better to just switch the targets to the "medium" code model,
which is also "medium" in LLVM-speak.
[1]: https://github.com/loongson/la-abi-specs/blob/v2.30/laelf.adoc#code-models
--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs
@@ -1,4 +1,4 @@
-use crate::spec::{base, Target, TargetOptions};
+use crate::spec::{base, CodeModel, Target, TargetOptions};
pub fn target() -> Target {
Target {
@@ -7,6 +7,7 @@ pub fn target() -> Target {
data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".into(),
arch: "loongarch64".into(),
options: TargetOptions {
+ code_model: Some(CodeModel::Medium),
cpu: "generic".into(),
features: "+f,+d".into(),
llvm_abiname: "lp64d".into(),
--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs
+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs
@@ -16,7 +16,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
relocation_model: RelocModel::Static,
panic_strategy: PanicStrategy::Abort,
- code_model: Some(CodeModel::Small),
+ code_model: Some(CodeModel::Medium),
..Default::default()
},
}
--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs
+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs
@@ -17,7 +17,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
relocation_model: RelocModel::Static,
panic_strategy: PanicStrategy::Abort,
- code_model: Some(CodeModel::Small),
+ code_model: Some(CodeModel::Medium),
..Default::default()
},
}
--
2.43.0

View File

@ -0,0 +1,25 @@
From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001
From: Jory Pratt <anarchy@gentoo.org>
Date: Tue, 2 Aug 2022 18:32:53 -0500
Subject: [PATCH] Enable dynamic linking by default for musl
Signed-off-by: Jory Pratt <anarchy@gentoo.org>
---
compiler/rustc_target/src/spec/linux_musl_base.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/compiler/rustc_target/src/spec/linux_musl_base.rs b/compiler/rustc_target/src/spec/linux_musl_base.rs
index 207a87ab0..8a5a43363 100644
--- a/compiler/rustc_target/src/spec/linux_musl_base.rs
+++ b/compiler/rustc_target/src/spec/linux_musl_base.rs
@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions {
base.crt_objects_fallback = Some(CrtObjectsFallback::Musl);
// These targets statically link libc by default
- base.crt_static_default = true;
+ base.crt_static_default = false;
base
}
--
2.35.1

View File

@ -0,0 +1,34 @@
From 92aa5f6b272bcdc020a34f8d90f9ef851b5b4504 Mon Sep 17 00:00:00 2001
From: John Millikin <john@john-millikin.com>
Date: Mon, 9 Jan 2023 13:54:21 +0900
Subject: [PATCH] Disable `linux_ext` in wasm32 and fortanix rustdoc builds.
The `std::os::unix` module is stubbed out when building docs for these
target platforms. The introduction of Linux-specific extension traits
caused `std::os::net` to depend on sub-modules of `std::os::unix`,
which broke rustdoc for the `wasm32-unknown-unknown` target.
Adding an additional `#[cfg]` guard solves that rustdoc failure by
not declaring `linux_ext` on targets with a stubbed `std::os::unix`.
---
library/std/src/os/net/mod.rs | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/library/std/src/os/net/mod.rs b/library/std/src/os/net/mod.rs
index 5ec267c41e97c..b7046dd7c598c 100644
--- a/library/std/src/os/net/mod.rs
+++ b/library/std/src/os/net/mod.rs
@@ -1,4 +1,13 @@
//! OS-specific networking functionality.
+// See cfg macros in `library/std/src/os/mod.rs` for why these platforms must
+// be special-cased during rustdoc generation.
+#[cfg(not(all(
+ doc,
+ any(
+ all(target_arch = "wasm32", not(target_os = "wasi")),
+ all(target_vendor = "fortanix", target_env = "sgx")
+ )
+)))]
#[cfg(any(target_os = "linux", target_os = "android", doc))]
pub(super) mod linux_ext;

View File

@ -0,0 +1,30 @@
From 1879d1d1a284bf51c752e47db284ce22701ed5d0 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
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
---
test/ui/env-funky-keys.rs | 1 +
6 files changed, 10 insertions(+)
diff --git a/tests/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs
index c5c824ac58d..f3fe047a79c 100644
--- a/tests/ui/env-funky-keys.rs
+++ b/tests/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

View File

@ -0,0 +1,23 @@
https://github.com/rust-lang/rust/pull/113579 which reverts the broken
https://github.com/rust-lang/rust/pull/110906.
From: ekusiadadus <ekusiadadus@gmail.com>
Date: Wed, 12 Jul 2023 00:54:27 +0900
Subject: [PATCH] Revert "fix: :bug: etc/bash_complettion -> src/etc/... to
avoid copy error"
This reverts commit 08ce68b6a6bad360e9c3611ad60cf6598401f878.
--- a/src/bootstrap/dist.rs
+++ b/src/bootstrap/dist.rs
@@ -1074,11 +1074,7 @@ impl Step for Cargo {
tarball.add_file(&cargo, "bin", 0o755);
tarball.add_file(etc.join("_cargo"), "share/zsh/site-functions", 0o644);
- tarball.add_renamed_file(
- etc.join("cargo.bashcomp.sh"),
- "src/etc/bash_completion.d",
- "cargo",
- );
+ tarball.add_renamed_file(etc.join("cargo.bashcomp.sh"), "etc/bash_completion.d", "cargo");
tarball.add_dir(etc.join("man"), "share/man/man1");
tarball.add_legal_and_readme_to("share/doc/cargo");

View File

@ -0,0 +1,39 @@
https://bugs.gentoo.org/910595
https://github.com/rust-lang/rust/issues/113678
https://github.com/rust-lang/rust/commit/67b5990472e3cac643d8cf90f45fe42201ddec3c
From: jyn <github@jyn.dev>
Date: Mon, 10 Jul 2023 15:59:30 -0500
Subject: [PATCH] Revert "Fix `x test lint-docs` when download-rustc is
enabled"
This was not the correct fix. The problem was two-fold:
- `download-rustc` didn't respect `llvm.assertions`
- `rust-dev` was missing a bump to `download-ci-llvm-stamp`
The first is fixed in this PR and the latter was fixed a while ago. Revert this change to avoid breaking `rpath = false`.
--- a/src/tools/lint-docs/src/groups.rs
+++ b/src/tools/lint-docs/src/groups.rs
@@ -39,7 +39,6 @@ impl<'a> LintExtractor<'a> {
fn collect_groups(&self) -> Result<LintGroups, Box<dyn Error>> {
let mut result = BTreeMap::new();
let mut cmd = Command::new(self.rustc_path);
- cmd.env_remove("LD_LIBRARY_PATH");
cmd.arg("-Whelp");
let output = cmd.output().map_err(|e| format!("failed to run command {:?}\n{}", cmd, e))?;
if !output.status.success() {
--- a/src/tools/lint-docs/src/lib.rs
+++ b/src/tools/lint-docs/src/lib.rs
@@ -403,12 +403,6 @@ impl<'a> LintExtractor<'a> {
fs::write(&tempfile, source)
.map_err(|e| format!("failed to write {}: {}", tempfile.display(), e))?;
let mut cmd = Command::new(self.rustc_path);
- // NOTE: bootstrap sets `LD_LIBRARY_PATH` for building lint-docs itself.
- // Unfortunately, lint-docs is a bootstrap tool while rustc is built from source,
- // and sometimes the paths conflict. In particular, when using `download-rustc`,
- // the LLVM versions can differ between `ci-llvm` and `ci-rustc-sysroot`.
- // Unset LD_LIBRARY_PATH here so it doesn't interfere with running the compiler.
- cmd.env_remove("LD_LIBRARY_PATH");
if options.contains(&"edition2015") {
cmd.arg("--edition=2015");
} else {

View File

@ -0,0 +1,26 @@
https://github.com/rust-lang/rust/pull/114440
From: Ariadne Conill <ariadne@dereferenced.org>
Date: Thu, 3 Aug 2023 15:05:40 -0700
Subject: [PATCH] bootstrap: config: fix version comparison bug
Rust requires a previous version of Rust to build, such as the current version, or the
previous version. However, the version comparison logic did not take patch releases
into consideration when doing the version comparison for the current branch, e.g.
Rust 1.71.1 could not be built by Rust 1.71.0 because it is neither an exact version
match, or the previous version.
Adjust the version comparison logic to tolerate mismatches in the patch version.
Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
--- a/src/bootstrap/config.rs
+++ b/src/bootstrap/config.rs
@@ -2004,7 +2004,8 @@ impl Config {
.unwrap();
if !(source_version == rustc_version
|| (source_version.major == rustc_version.major
- && source_version.minor == rustc_version.minor + 1))
+ && (source_version.minor == rustc_version.minor
+ || source_version.minor == rustc_version.minor + 1)))
{
let prev_version = format!("{}.{}.x", source_version.major, source_version.minor - 1);
eprintln!(

View File

@ -0,0 +1,156 @@
This patch bumps all libc dependencies and checksums to 0.2.146, which includes the fix for musl 1.2.4.
--- a/vendor/addr2line-0.20.0/Cargo.lock
+++ b/vendor/addr2line-0.20.0/Cargo.lock
@@ -246,9 +246,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libtest-mimic"
--- a/vendor/backtrace-0.3.67/Cargo.lock
+++ b/vendor/backtrace-0.3.67/Cargo.lock
@@ -64,9 +64,9 @@ checksum = "dec7af912d60cdbd3677c1af9352
[[package]]
name = "libc"
-version = "0.2.138"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libloading"
--- a/vendor/bstr/Cargo.lock
+++ b/vendor/bstr/Cargo.lock
@@ -34,9 +34,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.138"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "memchr"
--- a/vendor/cranelift-jit/Cargo.lock
+++ b/vendor/cranelift-jit/Cargo.lock
@@ -224,9 +224,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "log"
--- a/vendor/crossbeam-channel/Cargo.lock
+++ b/vendor/crossbeam-channel/Cargo.lock
@@ -50,9 +50,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "num_cpus"
--- a/vendor/elasticlunr-rs/Cargo.lock
+++ b/vendor/elasticlunr-rs/Cargo.lock
@@ -555,9 +555,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "lindera"
--- a/vendor/handlebars/Cargo.lock
+++ b/vendor/handlebars/Cargo.lock
@@ -550,9 +550,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "lock_api"
--- a/vendor/icu_locid/Cargo.lock
+++ b/vendor/icu_locid/Cargo.lock
@@ -318,9 +318,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "litemap"
--- a/vendor/libffi/Cargo.lock
+++ b/vendor/libffi/Cargo.lock
@@ -10,9 +10,9 @@ checksum = "50d30906286121d95be3d479533b
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libffi"
--- a/vendor/terminal_size/Cargo.lock
+++ b/vendor/terminal_size/Cargo.lock
@@ -47,9 +47,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.140"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "linux-raw-sys"
--- a/vendor/tracing-tree/Cargo.lock
+++ b/vendor/tracing-tree/Cargo.lock
@@ -100,9 +100,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "log"

View File

@ -0,0 +1,19 @@
https://paste.sr.ht/~kchibisov/682321e0fd4a3ece4a4b7b71591896f5cd3cdb22
https://github.com/gentoo/gentoo/pull/35246#discussion_r1484525497
diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs
index f606fa483ca..8a2e1c40e8b 100644
--- a/compiler/rustc_llvm/build.rs
+++ b/compiler/rustc_llvm/build.rs
@@ -237,10 +237,7 @@ fn main() {
// of llvm-config, not the target that we're attempting to link.
let mut cmd = Command::new(&llvm_config);
cmd.arg(llvm_link_arg).arg("--libs");
-
- if !is_crossed {
- cmd.arg("--system-libs");
- }
+ cmd.arg("--system-libs");
if (target.starts_with("arm") && !target.contains("freebsd"))
|| target.starts_with("mips-")

View File

@ -0,0 +1,45 @@
From 4b7e0a0b56aa2446e670dfd6558380a1039a86aa Mon Sep 17 00:00:00 2001
From: Arlo Siemsen <arsiem@microsoft.com>
Date: Thu, 4 Jan 2024 11:40:56 -0600
Subject: [PATCH] Handle vendored sources when remapping paths
Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
---
src/bootstrap/src/core/builder.rs | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs
index 4e20babc55a..3770d0687b2 100644
--- a/src/bootstrap/src/core/builder.rs
+++ b/src/bootstrap/src/core/builder.rs
@@ -1799,15 +1799,20 @@ pub fn cargo(
}
if self.config.rust_remap_debuginfo {
- // FIXME: handle vendored sources
- let registry_src = t!(home::cargo_home()).join("registry").join("src");
let mut env_var = OsString::new();
- for entry in t!(std::fs::read_dir(registry_src)) {
- if !env_var.is_empty() {
- env_var.push("\t");
- }
- env_var.push(t!(entry).path());
+ if self.config.vendor {
+ let vendor = self.build.src.join("vendor");
+ env_var.push(vendor);
env_var.push("=/rust/deps");
+ } else {
+ let registry_src = t!(home::cargo_home()).join("registry").join("src");
+ for entry in t!(std::fs::read_dir(registry_src)) {
+ if !env_var.is_empty() {
+ env_var.push("\t");
+ }
+ env_var.push(t!(entry).path());
+ env_var.push("=/rust/deps");
+ }
}
cargo.env("RUSTC_CARGO_REGISTRY_SRC_TO_REMAP", env_var);
}
--
2.43.0

View File

@ -0,0 +1,19 @@
From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001
From: Jory Pratt <anarchy@gentoo.org>
Date: Tue, 2 Aug 2022 18:32:53 -0500
Subject: [PATCH] Enable dynamic linking by default for musl
Signed-off-by: Jory Pratt <anarchy@gentoo.org>
--- a/compiler/rustc_target/src/spec/base/linux_musl.rs
+++ b/compiler/rustc_target/src/spec/base/linux_musl.rs
@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions {
base.crt_objects_fallback = Some(CrtObjectsFallback::Musl);
// These targets statically link libc by default
- base.crt_static_default = true;
+ base.crt_static_default = false;
base
}
--
2.35.1

View File

@ -0,0 +1,73 @@
https://github.com/rust-lang/rust/pull/120661
From: WANG Xuerui <xen0n@gentoo.org>
Date: Mon, 5 Feb 2024 13:18:32 +0800
Subject: [PATCH] target: default to the medium code model on LoongArch targets
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The Rust LoongArch targets have been using the default LLVM code model
so far, which is "small" in LLVM-speak and "normal" in LoongArch-speak.
As described in the "Code Model" section of LoongArch ELF psABI spec
v20231219 [1], one can only make function calls as far as ±128MiB with
the "normal" code model; this is insufficient for very large software
containing Rust components that needs to be linked into the big text
section, such as Chromium.
Because:
* we do not want to ask users to recompile std if they are to build
such software,
* objects compiled with larger code models can be linked with those
with smaller code models without problems, and
* the "medium" code model is comparable to the "small"/"normal" one
performance-wise (same data access pattern; each function call
becomes 2-insn long and indirect, but this may be relaxed back into
the direct 1-insn form in a future LLVM version), but is able to
perform function calls within ±128GiB,
it is better to just switch the targets to the "medium" code model,
which is also "medium" in LLVM-speak.
[1]: https://github.com/loongson/la-abi-specs/blob/v2.30/laelf.adoc#code-models
--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs
@@ -1,4 +1,4 @@
-use crate::spec::{base, Target, TargetOptions};
+use crate::spec::{base, CodeModel, Target, TargetOptions};
pub fn target() -> Target {
Target {
@@ -7,6 +7,7 @@ pub fn target() -> Target {
data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".into(),
arch: "loongarch64".into(),
options: TargetOptions {
+ code_model: Some(CodeModel::Medium),
cpu: "generic".into(),
features: "+f,+d".into(),
llvm_abiname: "lp64d".into(),
--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs
+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs
@@ -16,7 +16,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
relocation_model: RelocModel::Static,
panic_strategy: PanicStrategy::Abort,
- code_model: Some(CodeModel::Small),
+ code_model: Some(CodeModel::Medium),
..Default::default()
},
}
--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs
+++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs
@@ -17,7 +17,7 @@ pub fn target() -> Target {
max_atomic_width: Some(64),
relocation_model: RelocModel::Static,
panic_strategy: PanicStrategy::Abort,
- code_model: Some(CodeModel::Small),
+ code_model: Some(CodeModel::Medium),
..Default::default()
},
}
--
2.43.0

View File

@ -0,0 +1,786 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
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 -> rustc-${PV}-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 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~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}
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
!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 ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
WebAssembly X86 XCore Xtensa )
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src 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:
# List all the working slots in LLVM_VALID_SLOTS, newest first.
LLVM_VALID_SLOTS=( 17 )
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
# (-) usedep needed because we may build with older llvm without that target
LLVM_DEPEND="|| ( "
for _s in ${LLVM_VALID_SLOTS[@]}; do
LLVM_DEPEND+=" ( "
for _x in ${ALL_LLVM_TARGETS[@]}; do
LLVM_DEPEND+="
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
wasm? ( sys-devel/lld:${_s} )"
done
LLVM_DEPEND+=" )"
done
unset _s _x
LLVM_DEPEND+=" )
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
"
# to bootstrap we need at least exactly previous version, or same.
# most of the time previous versions fail to bootstrap with newer
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
# but it fails to bootstrap with 1.48.x
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
BOOTSTRAP_DEPEND="||
(
=dev-lang/rust-"${RUST_DEP_PREV}"
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
=dev-lang/rust-"${RUST_DEP_CURR}"
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
)
"
BDEPEND="${PYTHON_DEPS}
app-eselect/eselect-rust
|| (
>=sys-devel/gcc-4.7
>=sys-devel/clang-3.5
)
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
!system-llvm? (
>=dev-build/cmake-3.13.4
app-alternatives/ninja
)
test? ( dev-debug/gdb )
verify-sig? ( sec-keys/openpgp-keys-rust )
"
DEPEND="
>=app-arch/xz-utils-5.2
net-misc/curl:=[http2,ssl]
sys-libs/zlib:=
dev-libs/openssl:0=
system-llvm? (
${LLVM_DEPEND}
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
)
!system-llvm? (
!llvm-libunwind? (
elibc_musl? ( sys-libs/libunwind:= )
)
)
"
RDEPEND="${DEPEND}
app-eselect/eselect-rust
sys-apps/lsb-release
"
REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
miri? ( nightly )
parallel-compiler? ( nightly )
rust-analyzer? ( rust-src )
test? ( ${ALL_LLVM_TARGETS[*]} )
wasm? ( llvm_targets_WebAssembly )
x86? ( cpu_flags_x86_sse2 )
"
# we don't use cmake.eclass, but can get a warning
CMAKE_WARN_UNUSED_CLI=no
QA_FLAGS_IGNORED="
usr/lib/${PN}/${PV}/bin/.*
usr/lib/${PN}/${PV}/libexec/.*
usr/lib/${PN}/${PV}/lib/lib.*.so
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
"
QA_SONAME="
usr/lib/${PN}/${PV}/lib/lib.*.so.*
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
"
QA_PRESTRIPPED="
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
"
# An rmeta file is custom binary format that contains the metadata for the crate.
# rmeta files do not support linking, since they do not contain compiled object files.
# so we can safely silence the warning for this QA check.
QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
# causes double bootstrap
RESTRICT="test"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
PATCHES=(
"${FILESDIR}"/1.75.0-musl-dynamic-linking.patch
"${FILESDIR}"/1.74.1-cross-compile-libz.patch
#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh
"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
"${FILESDIR}"/1.67.0-doc-wasm.patch
"${FILESDIR}"/1.75.0-handle-vendored-sources.patch # remove for >=1.77.0
"${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0
)
S="${WORKDIR}/${MY_P}-src"
clear_vendor_checksums() {
sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
}
toml_usex() {
usex "${1}" true false
}
bootstrap_rust_version_check() {
# never call from pkg_pretend. eselect-rust may be not installed yet.
[[ ${MERGE_TYPE} == binary ]] && return
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
rustc_version=${rustc_version[0]#rust-bin-}
rustc_version=${rustc_version#rust-}
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
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 "selected rust version is too old"
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
eerror "Rust <${rustc_toonew} is required"
eerror "please run 'eselect rust' and set correct rust version"
die "selected rust version is too new"
else
einfo "Using rust ${rustc_version} to build"
fi
}
pre_build_checks() {
local M=8192
# multiply requirements by 1.3 if we are doing x86-multilib
if use amd64; then
M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
fi
M=$(( $(usex clippy 128 0) + ${M} ))
M=$(( $(usex miri 128 0) + ${M} ))
M=$(( $(usex rustfmt 256 0) + ${M} ))
# add 2G if we compile llvm and 256M per llvm_target
if ! use system-llvm; then
M=$(( 2048 + ${M} ))
local ltarget
for ltarget in ${ALL_LLVM_TARGETS[@]}; do
M=$(( $(usex ${ltarget} 256 0) + ${M} ))
done
fi
M=$(( $(usex wasm 256 0) + ${M} ))
M=$(( $(usex debug 2 1) * ${M} ))
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}
}
llvm_check_deps() {
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
}
# Is LLVM being linked against libc++?
is_libcxx_linked() {
local code='#include <ciso646>
#if defined(_LIBCPP_VERSION)
HAVE_LIBCXX
#endif
'
local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
[[ ${out} == *HAVE_LIBCXX* ]]
}
pkg_pretend() {
pre_build_checks
}
pkg_setup() {
pre_build_checks
python-any-r1_pkg_setup
export LIBGIT2_NO_PKG_CONFIG=1 #749381
if tc-is-cross-compiler; then
export PKG_CONFIG_ALLOW_CROSS=1
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
use "llvm_targets_${cross_llvm_target}" || \
die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
fi
use system-bootstrap && bootstrap_rust_version_check
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
}
esetup_unwind_hack() {
# https://bugs.gentoo.org/870280
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
local fakelib="${T}/fakelib"
mkdir -p "${fakelib}" || die
# we need both symlinks, one for cargo runtime, other for linker.
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
export LD_LIBRARY_PATH="${fakelib}"
export RUSTFLAGS+=" -L${fakelib}"
# this is a literally magic variable that gets through cargo cache, without it some
# crates ignore RUSTFLAGS.
# this variable can not contain leading space.
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
}
src_prepare() {
# Clear vendor checksums for crates that we patched to bump libc.
# NOTE: refresh this on each bump.
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
# terminal_size tracing-tree; do
# clear_vendor_checksums "${i}"
#done
if ! use system-bootstrap; then
has_version sys-devel/gcc || esetup_unwind_hack
local rust_stage0_root="${WORKDIR}"/rust-stage0
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
fi
default
}
src_configure() {
filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
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_abi $(get_abi_CHOST ${v##*.}))\""
done
if use wasm; then
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/' compiler/rustc_target/src/spec/base/wasm.rs || die
fi
fi
rust_targets="${rust_targets#,}"
# cargo and rustdoc are mandatory and should always be included
local tools='"cargo","rustdoc"'
use clippy && tools+=',"clippy"'
use miri && tools+=',"miri"'
use profiler && tools+=',"rust-demangler"'
use rustfmt && tools+=',"rustfmt"'
use rust-analyzer && tools+=',"rust-analyzer"'
use rust-src && tools+=',"src"'
local rust_stage0_root
if use system-bootstrap; then
local printsysroot
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
rust_stage0_root="${printsysroot}"
else
rust_stage0_root="${WORKDIR}"/rust-stage0
fi
# in case of prefix it will be already prefixed, as --print sysroot returns full path
[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
rust_target="$(rust_abi)"
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
changelog-seen = 2
[llvm]
download-ci-llvm = false
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)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632
echo "use-libcxx = true"
echo "static-libstdcpp = false"
fi)
$(case "${rust_target}" in
i586-*-linux-*)
# https://github.com/rust-lang/rust/issues/93059
echo 'cflags = "-fcf-protection=none"'
echo 'cxxflags = "-fcf-protection=none"'
echo 'ldflags = "-fcf-protection=none"'
;;
*)
;;
esac)
enable-warnings = false
[llvm.build-config]
CMAKE_VERBOSE_MAKEFILE = "ON"
$(if ! tc-is-cross-compiler; then
# When cross-compiling, LLVM is compiled twice, once for host and
# once for target. Unfortunately, this build configuration applies
# to both, which means any flags applicable to one target but not
# the other will break. Conditionally disable respecting user
# flags when cross-compiling.
echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
fi)
[build]
build-stage = 2
test-stage = 2
build = "${rust_build}"
host = ["${rust_host}"]
target = [${rust_targets}]
cargo = "${rust_stage0_root}/bin/cargo"
rustc = "${rust_stage0_root}/bin/rustc"
rustfmt = "${rust_stage0_root}/bin/rustfmt"
docs = $(toml_usex doc)
compiler-docs = false
submodules = false
python = "${EPYTHON}"
locked-deps = true
vendor = true
extended = true
tools = [${tools}]
verbose = 2
sanitizers = false
profiler = $(toml_usex profiler)
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)
debug-assertions-std = $(toml_usex debug)
debuginfo-level = $(usex debug 2 0)
debuginfo-level-rustc = $(usex debug 2 0)
debuginfo-level-std = $(usex debug 2 0)
debuginfo-level-tools = $(usex debug 2 0)
debuginfo-level-tests = 0
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"
description = "gentoo"
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))
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526
deny-warnings = $(usex wasm $(usex doc false true) true)
backtrace-on-ice = true
jemalloc = false
lto = "$(usex lto fat off)"
[dist]
src-tarball = false
compression-formats = ["xz"]
compression-profile = "balanced"
_EOF_
for v in $(multilib_get_enabled_abi_pairs); do
rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
arch_cflags="$(get_abi_CFLAGS ${v##*.})"
export CFLAGS_${rust_target//-/_}="${arch_cflags}"
cat <<- _EOF_ >> "${S}"/config.toml
[target.${rust_target}]
ar = "$(tc-getAR)"
cc = "$(tc-getCC)"
cxx = "$(tc-getCXX)"
linker = "$(tc-getCC)"
ranlib = "$(tc-getRANLIB)"
llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
_EOF_
if use system-llvm; then
cat <<- _EOF_ >> "${S}"/config.toml
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
_EOF_
fi
# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
# but we patch it and set to false here as well
if use elibc_musl; then
cat <<- _EOF_ >> "${S}"/config.toml
crt-static = false
_EOF_
fi
done
if use wasm; then
cat <<- _EOF_ >> "${S}"/config.toml
[target.wasm32-unknown-unknown]
linker = "$(usex system-llvm lld rust-lld)"
# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
profiler = false
_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/<target>
# extra targets defined as a bash array
# spec format: <LLVM target>:<rust-target>:<CTARGET>
# 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 <LLVM target>:<rust-target>:<CTARGET>
local cross_llvm_target="${cross_target_spec%%:*}"
# extracts toolchain triples, <rust-target>:<CTARGET>
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}]
ar = "${cross_toolchain}-ar"
cc = "${cross_toolchain}-gcc"
cxx = "${cross_toolchain}-g++"
linker = "${cross_toolchain}-gcc"
ranlib = "${cross_toolchain}-ranlib"
_EOF_
if use system-llvm; then
cat <<- _EOF_ >> "${S}"/config.toml
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
_EOF_
fi
if [[ "${cross_toolchain}" == *-musl* ]]; then
cat <<- _EOF_ >> "${S}"/config.toml
musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
_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 flags:"
echo
echo RUSTFLAGS="\"${RUSTFLAGS}\""
echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
env | grep "CARGO_TARGET_.*_RUSTFLAGS="
env | grep "CFLAGS_.*"
echo
einfo "config.toml contents:"
cat "${S}"/config.toml || die
echo
}
src_compile() {
RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --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 ! 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() {
DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
# bug #689562, #689160
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
local symlinks=(
cargo
rustc
rustdoc
rust-gdb
rust-gdbgui
rust-lldb
)
use clippy && symlinks+=( clippy-driver cargo-clippy )
use miri && symlinks+=( miri cargo-miri )
use profiler && symlinks+=( rust-demangler )
use rustfmt && symlinks+=( rustfmt cargo-fmt )
use rust-analyzer && symlinks+=( rust-analyzer )
einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
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/<ver>/bin/rustc-<ver>
# need to fix eselect-rust to remove this hack.
local ver_i="${i}-${PV}"
if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
einfo "Installing ${i} symlink"
ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
else
ewarn "${i} symlink requested, but source file not found"
ewarn "please report this"
fi
dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
done
# symlinks to switch components to active rust in eselect
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
newenvd - "50${P}" <<-_EOF_
LDPATH="${EPREFIX}/usr/lib/rust/lib"
MANPATH="${EPREFIX}/usr/lib/rust/man"
_EOF_
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.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/lib/rustlib
/usr/lib/rust/lib
/usr/lib/rust/libexec
/usr/lib/rust/man
/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 profiler; then
echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
fi
if use rustfmt; then
echo /usr/bin/rustfmt >> "${T}/provider-${P}"
echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
fi
if use rust-analyzer; then
echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
fi
insinto /etc/env.d/rust
doins "${T}/provider-${P}"
if use dist; then
insinto "/usr/lib/${PN}/${PV}/dist"
doins -r "${S}/build/dist/."
fi
}
pkg_postinst() {
eselect rust update
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
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}."
fi
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
}

View File

@ -0,0 +1,17 @@
BDEPEND=|| ( dev-lang/python:3.12 dev-lang/python:3.11 dev-lang/python:3.10 ) app-eselect/eselect-rust || ( >=sys-devel/gcc-4.7 >=sys-devel/clang-3.5 ) system-bootstrap? ( || ( =dev-lang/rust-1.74* =dev-lang/rust-bin-1.74* =dev-lang/rust-1.75* =dev-lang/rust-bin-1.75* ) ) !system-llvm? ( >=dev-build/cmake-3.13.4 app-alternatives/ninja ) test? ( dev-debug/gdb ) verify-sig? ( sec-keys/openpgp-keys-rust ) verify-sig? ( app-crypt/gnupg >=app-portage/gemato-20 )
DEFINED_PHASES=compile configure install postinst postrm prepare pretend setup test unpack
DEPEND=>=app-arch/xz-utils-5.2 net-misc/curl:=[http2,ssl] sys-libs/zlib:= dev-libs/openssl:0= system-llvm? ( || ( ( llvm_targets_AArch64? ( sys-devel/llvm:18[llvm_targets_AArch64(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_AMDGPU? ( sys-devel/llvm:18[llvm_targets_AMDGPU(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_ARC? ( sys-devel/llvm:18[llvm_targets_ARC(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_ARM? ( sys-devel/llvm:18[llvm_targets_ARM(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_AVR? ( sys-devel/llvm:18[llvm_targets_AVR(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_BPF? ( sys-devel/llvm:18[llvm_targets_BPF(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_CSKY? ( sys-devel/llvm:18[llvm_targets_CSKY(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_DirectX? ( sys-devel/llvm:18[llvm_targets_DirectX(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Hexagon? ( sys-devel/llvm:18[llvm_targets_Hexagon(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Lanai? ( sys-devel/llvm:18[llvm_targets_Lanai(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_LoongArch? ( sys-devel/llvm:18[llvm_targets_LoongArch(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_M68k? ( sys-devel/llvm:18[llvm_targets_M68k(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Mips? ( sys-devel/llvm:18[llvm_targets_Mips(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_MSP430? ( sys-devel/llvm:18[llvm_targets_MSP430(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_NVPTX? ( sys-devel/llvm:18[llvm_targets_NVPTX(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_PowerPC? ( sys-devel/llvm:18[llvm_targets_PowerPC(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_RISCV? ( sys-devel/llvm:18[llvm_targets_RISCV(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Sparc? ( sys-devel/llvm:18[llvm_targets_Sparc(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_SPIRV? ( sys-devel/llvm:18[llvm_targets_SPIRV(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_SystemZ? ( sys-devel/llvm:18[llvm_targets_SystemZ(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_VE? ( sys-devel/llvm:18[llvm_targets_VE(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_WebAssembly? ( sys-devel/llvm:18[llvm_targets_WebAssembly(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_X86? ( sys-devel/llvm:18[llvm_targets_X86(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_XCore? ( sys-devel/llvm:18[llvm_targets_XCore(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Xtensa? ( sys-devel/llvm:18[llvm_targets_Xtensa(-)] ) wasm? ( sys-devel/lld:18 ) ) ) <sys-devel/llvm-19:= llvm-libunwind? ( sys-libs/llvm-libunwind:= ) ) !system-llvm? ( !llvm-libunwind? ( elibc_musl? ( sys-libs/libunwind:= ) ) ) !!sys-devel/llvm:0
DESCRIPTION=Systems programming language from Mozilla
EAPI=8
HOMEPAGE=https://www.rust-lang.org/
INHERIT=bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
IUSE=big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARC llvm_targets_ARM llvm_targets_AVR llvm_targets_BPF llvm_targets_CSKY llvm_targets_DirectX llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_LoongArch llvm_targets_M68k llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_RISCV llvm_targets_Sparc llvm_targets_SPIRV llvm_targets_SystemZ llvm_targets_VE llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore llvm_targets_Xtensa abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_s390_32 abi_s390_64 verify-sig
KEYWORDS=~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86
LICENSE=|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4
RDEPEND=>=app-arch/xz-utils-5.2 net-misc/curl:=[http2,ssl] sys-libs/zlib:= dev-libs/openssl:0= system-llvm? ( || ( ( llvm_targets_AArch64? ( sys-devel/llvm:18[llvm_targets_AArch64(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_AMDGPU? ( sys-devel/llvm:18[llvm_targets_AMDGPU(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_ARC? ( sys-devel/llvm:18[llvm_targets_ARC(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_ARM? ( sys-devel/llvm:18[llvm_targets_ARM(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_AVR? ( sys-devel/llvm:18[llvm_targets_AVR(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_BPF? ( sys-devel/llvm:18[llvm_targets_BPF(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_CSKY? ( sys-devel/llvm:18[llvm_targets_CSKY(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_DirectX? ( sys-devel/llvm:18[llvm_targets_DirectX(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Hexagon? ( sys-devel/llvm:18[llvm_targets_Hexagon(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Lanai? ( sys-devel/llvm:18[llvm_targets_Lanai(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_LoongArch? ( sys-devel/llvm:18[llvm_targets_LoongArch(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_M68k? ( sys-devel/llvm:18[llvm_targets_M68k(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Mips? ( sys-devel/llvm:18[llvm_targets_Mips(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_MSP430? ( sys-devel/llvm:18[llvm_targets_MSP430(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_NVPTX? ( sys-devel/llvm:18[llvm_targets_NVPTX(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_PowerPC? ( sys-devel/llvm:18[llvm_targets_PowerPC(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_RISCV? ( sys-devel/llvm:18[llvm_targets_RISCV(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Sparc? ( sys-devel/llvm:18[llvm_targets_Sparc(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_SPIRV? ( sys-devel/llvm:18[llvm_targets_SPIRV(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_SystemZ? ( sys-devel/llvm:18[llvm_targets_SystemZ(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_VE? ( sys-devel/llvm:18[llvm_targets_VE(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_WebAssembly? ( sys-devel/llvm:18[llvm_targets_WebAssembly(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_X86? ( sys-devel/llvm:18[llvm_targets_X86(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_XCore? ( sys-devel/llvm:18[llvm_targets_XCore(-)] ) wasm? ( sys-devel/lld:18 ) llvm_targets_Xtensa? ( sys-devel/llvm:18[llvm_targets_Xtensa(-)] ) wasm? ( sys-devel/lld:18 ) ) ) <sys-devel/llvm-19:= llvm-libunwind? ( sys-libs/llvm-libunwind:= ) ) !system-llvm? ( !llvm-libunwind? ( elibc_musl? ( sys-libs/libunwind:= ) ) ) app-eselect/eselect-rust sys-apps/lsb-release
REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARC llvm_targets_ARM llvm_targets_AVR llvm_targets_BPF llvm_targets_CSKY llvm_targets_DirectX llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_LoongArch llvm_targets_M68k llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_RISCV llvm_targets_Sparc llvm_targets_SPIRV llvm_targets_SystemZ llvm_targets_VE llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore llvm_targets_Xtensa ) miri? ( nightly ) parallel-compiler? ( nightly ) rust-analyzer? ( rust-src ) test? ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARC llvm_targets_ARM llvm_targets_AVR llvm_targets_BPF llvm_targets_CSKY llvm_targets_DirectX llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_LoongArch llvm_targets_M68k llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_RISCV llvm_targets_Sparc llvm_targets_SPIRV llvm_targets_SystemZ llvm_targets_VE llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore llvm_targets_Xtensa ) wasm? ( llvm_targets_WebAssembly ) x86? ( cpu_flags_x86_sse2 )
RESTRICT=test
SLOT=stable/1.75
SRC_URI=https://static.rust-lang.org/dist/rustc-1.75.0-src.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rustc-1.75.0-src.tar.xz.asc ) !system-bootstrap? ( abi_x86_32? ( https://static.rust-lang.org/dist/rust-1.74.0-i686-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-i686-unknown-linux-gnu.tar.xz.asc ) ) abi_x86_64? ( elibc_glibc? ( https://static.rust-lang.org/dist/rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz.asc ) ) elibc_musl? ( https://static.rust-lang.org/dist/rust-1.74.0-x86_64-unknown-linux-musl.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-x86_64-unknown-linux-musl.tar.xz.asc ) ) ) arm? ( https://static.rust-lang.org/dist/rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz.asc ) https://static.rust-lang.org/dist/rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz.asc ) https://static.rust-lang.org/dist/rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz.asc ) ) arm64? ( elibc_glibc? ( https://static.rust-lang.org/dist/rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz.asc ) ) elibc_musl? ( https://static.rust-lang.org/dist/rust-1.74.0-aarch64-unknown-linux-musl.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-aarch64-unknown-linux-musl.tar.xz.asc ) ) ) ppc? ( https://static.rust-lang.org/dist/rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz.asc ) ) ppc64? ( big-endian? ( https://static.rust-lang.org/dist/rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz.asc ) ) !big-endian? ( https://static.rust-lang.org/dist/rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz.asc ) ) ) riscv? ( https://static.rust-lang.org/dist/rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz.asc ) ) s390? ( https://static.rust-lang.org/dist/rust-1.74.0-s390x-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-s390x-unknown-linux-gnu.tar.xz.asc ) ) loong? ( https://static.rust-lang.org/dist/rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz verify-sig? ( https://static.rust-lang.org/dist/rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz.asc ) ) )
_eclasses_=toolchain-funcs e56c7649b804f051623c8bc1a1c44084 multilib c19072c3cd7ac5cb21de013f7e9832e0 bash-completion-r1 f5e7a020fd9c741740756aac61bf75ff check-reqs 02ac7654b64f7acc7a8b1a35ad9d6ddc estack c61c368a76fdf3a82fdf8dbaebea3804 flag-o-matic 24c947ff5f858625cf0b33c15eed4425 llvm-utils e59dc622da7e7e7f16879105bed34858 llvm 1eea65d11f743b8e256ef279b652a2e6 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe out-of-source-utils 1a9007554652a6e627edbccb3c25a439 multibuild d67e78a235f541871c7dfe4cf7931489 multilib-build e8aed98bd43dbd25694310a660ad562c python-utils-r1 8904b60325f22500b0c3ad4b68a42448 python-any-r1 f5169813d1619761b459800587005fd2 rust-toolchain ab72acc17f5dea7b8fadd410d34b798c verify-sig a79ba011daaf532d71a219182474d150
_md5_=9022cb9fcc2dd10c3b48726b34f8887d

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
diff -urNp ParaView-v5.11.1-orig/VTK/ThirdParty/libproj/vtklibproj/src/proj_json_streaming_writer.hpp ParaView-v5.11.1-dwok/VTK/ThirdParty/libproj/vtklibproj/src/proj_json_streaming_writer.hpp
--- ParaView-v5.11.1-orig/VTK/ThirdParty/libproj/vtklibproj/src/proj_json_streaming_writer.hpp 2023-03-30 16:08:08.000000000 +0200
+++ ParaView-v5.11.1-dwok/VTK/ThirdParty/libproj/vtklibproj/src/proj_json_streaming_writer.hpp 2023-08-26 14:53:20.211944383 +0200
@@ -33,6 +33,7 @@
#include <vector>
#include <string>
+#include <cstdint>
#define CPL_DLL

View File

@ -0,0 +1,18 @@
diff -urNd ParaView-v5.5.0/VTK/ThirdParty/eigen/vtkeigen/CMakeLists.txt ParaView-v5.5.0-fix/VTK/ThirdParty/eigen/vtkeigen/CMakeLists.txt
--- ParaView-v5.5.0/VTK/ThirdParty/eigen/vtkeigen/CMakeLists.txt 2018-04-07 06:03:33.000000000 +1000
+++ ParaView-v5.5.0-fix/VTK/ThirdParty/eigen/vtkeigen/CMakeLists.txt 2018-04-10 16:19:08.841144557 +1000
@@ -21,14 +21,6 @@
set(CMAKE_BUILD_TYPE "Release")
endif()
-string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_tolower)
-if( NOT cmake_build_type_tolower STREQUAL "debug"
- AND NOT cmake_build_type_tolower STREQUAL "release"
- AND NOT cmake_build_type_tolower STREQUAL "relwithdebinfo")
- message(FATAL_ERROR "Unknown build type \"${CMAKE_BUILD_TYPE}\". Allowed values are Debug, Release, RelWithDebInfo (case-insensitive).")
-endif()
-
-
#############################################################################
# retrieve version infomation #
#############################################################################

View File

@ -0,0 +1,245 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{9..11} )
DOCS_BUILDER="doxygen"
inherit cmake flag-o-matic desktop docs python-single-r1 qmake-utils toolchain-funcs xdg
MAJOR_PV="$(ver_cut 1-2)"
MINOR_PV="$(ver_cut 3)"
RC_PV="$(ver_cut 4-5)"
RC_PV="${RC_PV:+-${RC_PV^^}}"
MY_P="ParaView-v${MAJOR_PV}.${MINOR_PV}${RC_PV}"
DESCRIPTION="Powerful scientific data visualization application"
HOMEPAGE="https://www.paraview.org"
SRC_URI="https://www.paraview.org/files/v${MAJOR_PV}/${MY_P}.tar.xz"
S="${WORKDIR}/${MY_P}"
# TODO: check licenses of plugins (USE=plugins)
LICENSE="BSD MIT PSF-2 VTK"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="boost cg examples ffmpeg mpi nvcontrol openmp offscreen plugins python +qt5 +sqlite test tk +webengine"
RESTRICT="mirror test"
REQUIRED_USE="
python? ( mpi ${PYTHON_REQUIRED_USE} )
webengine? ( qt5 )
qt5? ( sqlite )
?? ( offscreen qt5 )"
RDEPEND="
app-arch/lz4
dev-libs/expat
dev-libs/jsoncpp:=
dev-libs/libxml2:2
dev-libs/protobuf:=
dev-libs/pugixml
media-libs/freetype
media-libs/glew:0
media-libs/libpng:0
media-libs/libtheora
media-libs/tiff:=
sci-libs/cgnslib
sci-libs/hdf5:=[mpi=]
>=sci-libs/netcdf-4.2[hdf5]
>=sci-libs/netcdf-cxx-4.2:3
sys-libs/zlib
virtual/glu
media-libs/libjpeg-turbo:=
x11-libs/libX11
x11-libs/libXext
x11-libs/libXmu
x11-libs/libXt
ffmpeg? ( media-video/ffmpeg )
mpi? ( virtual/mpi[cxx,romio] )
offscreen? ( >=media-libs/mesa-18.3.6[osmesa] )
!offscreen? ( virtual/opengl )
python? (
${PYTHON_DEPS}
$(python_gen_cond_dep '
dev-python/constantly[${PYTHON_USEDEP}]
dev-python/incremental[${PYTHON_USEDEP}]
dev-python/matplotlib[${PYTHON_USEDEP}]
dev-python/numpy[${PYTHON_USEDEP}]
dev-python/pygments[${PYTHON_USEDEP}]
dev-python/sip:5[${PYTHON_USEDEP}]
dev-python/six[${PYTHON_USEDEP}]
dev-python/twisted[${PYTHON_USEDEP}]
dev-python/zope-interface[${PYTHON_USEDEP}]
mpi? ( dev-python/mpi4py )
qt5? ( dev-python/PyQt5[opengl,${PYTHON_USEDEP}] )
')
)
qt5? (
dev-qt/designer:5
dev-qt/qtdeclarative:5
dev-qt/qtgui:5[-gles2-only]
dev-qt/qthelp:5
dev-qt/qtopengl:5[-gles2-only]
dev-qt/qtsql:5
dev-qt/qtsvg:5
dev-qt/qttest:5
dev-qt/qtx11extras:5
dev-qt/qtxmlpatterns:5
)
sqlite? ( dev-db/sqlite:3 )
tk? ( dev-lang/tk:0= )
webengine? ( dev-qt/qtwebengine:5[widgets] )"
DEPEND="${RDEPEND}
${PYTHON_DEPS}
boost? (
$(python_gen_cond_dep '
dev-libs/boost[mpi?,python,${PYTHON_USEDEP}]
')
)
"
BDEPEND="
openmp? ( virtual/fortran )
"
PATCHES=(
"${FILESDIR}"/${PN}-5.5.0-allow_custom_build_type.patch
)
# false positive when checking for available HDF5 interface, bug #904731
QA_CONFIG_IMPL_DECL_SKIP=(
H5Pset_coll_metadata_write
H5Pset_all_coll_metadata_ops
)
#pkg_pretend() {
# [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
#}
pkg_setup() {
# [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
use python && python-single-r1_pkg_setup
PVLIBDIR=$(get_libdir)/${PN}-${MAJOR_PV}
}
src_prepare() {
# Bug #661812
mkdir -p Plugins/StreamLinesRepresentation/doc || die
cmake_src_prepare
# lib64 fixes
sed -i \
-e "s:/lib/python:/$(get_libdir)/python:g" \
VTK/ThirdParty/xdmf3/vtkxdmf3/CMakeLists.txt || die
sed -i \
-e "s:lib/paraview-:$(get_libdir)/paraview-:g" \
Remoting/Application/vtkInitializationHelper.cxx || die
}
src_configure() {
# Needed to compile bundled VTK in ParaView 5.11.1 with gcc 12
# see also, bug #863299
filter-lto
append-cflags $(test-flags-CC -fno-strict-aliasing \
-Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion)
append-cxxflags $(test-flags-CXX -fno-strict-aliasing \
-Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion)
# Make sure qmlplugindump is in path:
export PATH="$(qt5_get_bindir):${PATH}"
local mycmakeargs=(
-DCMAKE_INSTALL_LIBDIR="${PVLIBDIR}"
-UBUILD_SHARED_LIBS
-DPARAVIEW_BUILD_SHARED_LIBS=ON
-DCMAKE_VERBOSE_MAKEFILE=ON
# boost
-DVTK_MODULE_ENABLE_VTK_IOInfovis="$(usex boost YES NO)"
# doc
-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION="$(usex doc)"
# examples
-DBUILD_EXAMPLES="$(usex examples)"
# ffmpeg
-DPARAVIEW_ENABLE_FFMPEG="$(usex ffmpeg)"
# mpi
-DPARAVIEW_USE_MPI="$(usex mpi)"
-DXDMF_BUILD_MPI="$(usex mpi)"
-DVTK_GROUP_ENABLE_MPI="$(usex mpi YES NO)"
# offscreen
-DVTK_OPENGL_HAS_OSMESA="$(usex offscreen)"
-DVTK_OPENGL_HAS_OSMESA="$(usex offscreen)"
# plugins
-DPARAVIEW_PLUGINS_DEFAULT="$(usex plugins)"
# python
-DModule_pqPython="$(usex python)"
-DPARAVIEW_USE_PYTHON="$(usex python)"
# qt5
-DPARAVIEW_USE_QT="$(usex qt5)"
-DPARAVIEW_QT_VERSION="5"
-DVTK_QT_VERSION="5"
-DModule_pqPython="$(usex qt5 "$(usex python)" "off")"
-DVTK_USE_NVCONTROL="$(usex nvcontrol)"
-DVTK_GROUP_ENABLE_Qt="$(usex qt5 YES NO)"
-DCMAKE_INSTALL_QMLDIR="${EPREFIX}/usr/$(get_libdir)/qt5/qml"
# sqlite
-DVTK_MODULE_ENABLE_VTK_sqlite="$(usex sqlite YES NO)"
# test
-DBUILD_TESTING="$(usex test)"
# tk
-DVTK_USE_TK="$(usex tk)"
-DVTK_GROUP_ENABLE_Tk="$(usex tk YES NO)"
# webengine
-DPARAVIEW_USE_QTWEBENGINE="$(usex webengine)"
-DVTK_GROUP_ENABLE_Web="$(usex webengine YES NO)"
)
if use openmp; then
mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP )
fi
if use qt5; then
mycmakeargs+=(
-DOPENGL_gl_LIBRARY="${EPREFIX}"/usr/$(get_libdir)/libGL.so
-DOPENGL_glu_LIBRARY="${EPREFIX}"/usr/$(get_libdir)/libGLU.so
-DQT_MOC_EXECUTABLE="$(qt5_get_bindir)/moc"
-Dqt_xmlpatterns_executable="$(qt5_get_bindir)/xmlpatterns"
)
fi
cmake_src_configure
}
src_install() {
cmake_src_install
# remove wrapper binaries and put the actual executable in place
for i in {paraview-config,pvserver,pvdataserver,pvrenderserver,pvbatch,pvpython,paraview}; do
if [ -f "${ED}"/usr/lib/"$i" ]; then
mv "${ED}"/usr/lib/"$i" "${ED}"/usr/bin/"$i" || die
fi
done
# set up the environment
echo "LDPATH=${EPREFIX}/usr/${PVLIBDIR}" > "${T}"/40${PN} || die
doenvd "${T}"/40${PN}
newicon "${S}"/Clients/ParaView/pvIcon-96x96.png paraview.png
make_desktop_entry paraview "Paraview" paraview
use python && python_optimize "${ED}/usr/$(get_libdir)/${PN}-${MAJOR_PV}"
}