push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
diff --git a/src/main.rs b/src/main.rs
index 3cb6896..7f070e0 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -275,7 +275,9 @@ fn install_single_toolchain(
// install
if maybe_dry_client.is_some() {
- rename(&toolchain.dest, toolchain_path)?;
+ rename(&toolchain.dest, toolchain_path.clone())?;
+ nix_patchelf(toolchain_path)
+ .expect("failed to patch toolchain for NixOS");
eprintln!(
"toolchain `{}` is successfully installed!",
toolchain.dest.display()
@@ -291,6 +293,45 @@ fn install_single_toolchain(
Ok(())
}
+fn nix_patchelf(mut toolchain_path: PathBuf) -> Result<(), Error> {
+ toolchain_path.push("bin");
+
+ for entry in toolchain_path.read_dir()? {
+ let entry = entry?;
+ if !entry.file_type()?.is_file() {
+ continue;
+ }
+
+ eprintln!("info: you seem to be running NixOS. Attempting to patch {}",
+ entry.path().to_str().unwrap());
+ let _ = ::std::process::Command::new("@patchelf@/bin/patchelf")
+ .arg("--set-interpreter")
+ .arg("@dynamicLinker@")
+ .arg(entry.path())
+ .output();
+ }
+
+ toolchain_path.pop();
+ toolchain_path.push("lib");
+
+ for entry in toolchain_path.read_dir()? {
+ let entry = entry?;
+ if !entry.file_type()?.is_file() {
+ continue;
+ }
+
+ eprintln!("info: you seem to be running NixOS. Attempting to patch {}",
+ entry.path().to_str().unwrap());
+ let _ = ::std::process::Command::new("@patchelf@/bin/patchelf")
+ .arg("--set-rpath")
+ .arg("@libPath@")
+ .arg(entry.path())
+ .output();
+ }
+
+ Ok(())
+}
+
fn fetch_master_commit(client: &Client, github_token: Option<&str>) -> Result<String, Error> {
eprintln!("fetching master commit hash... ");
fetch_master_commit_via_git()

View File

@@ -0,0 +1,51 @@
{
lib,
rustPlatform,
fetchFromGitHub,
stdenv,
patchelf,
zlib,
pkg-config,
openssl,
xz,
replaceVars,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "rustup-toolchain-install-master";
version = "1.9.0";
src = fetchFromGitHub {
owner = "kennytm";
repo = "rustup-toolchain-install-master";
tag = "v${finalAttrs.version}";
hash = "sha256-0ayc4rzlZ9sLKzRhVr1fpRD7bmwQL69rkQ2jXBAdUPI=";
};
cargoHash = "sha256-VxrtkZbi9BprQOQFxOIAYEoAtg0kqyL3C4ih/5RobZI=";
patches = lib.optional stdenv.hostPlatform.isLinux (
replaceVars ./0001-dynamically-patchelf-binaries.patch {
inherit patchelf;
dynamicLinker = "${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2";
libPath = lib.makeLibraryPath [
zlib
(placeholder "out" + "/lib")
];
}
);
nativeBuildInputs = [ pkg-config ];
buildInputs = [
openssl
xz
];
meta = with lib; {
description = "Install a rustc master toolchain usable from rustup";
mainProgram = "rustup-toolchain-install-master";
homepage = "https://github.com/kennytm/rustup-toolchain-install-master";
license = licenses.mit;
maintainers = [ ];
};
})