diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2021-11-08 02:05:25 +0000 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2021-11-08 20:38:59 +0000 |
commit | c9c3de0131c565bf5a7f0e2249cd26f6e7acb172 (patch) | |
tree | a4964a437eecc083d4f95360d19de928c0888676 | |
parent | cbd00bab803b03cacbea27d442c60e719a804992 (diff) | |
download | nixpkgs-c9c3de0131c565bf5a7f0e2249cd26f6e7acb172.tar nixpkgs-c9c3de0131c565bf5a7f0e2249cd26f6e7acb172.tar.gz nixpkgs-c9c3de0131c565bf5a7f0e2249cd26f6e7acb172.tar.bz2 nixpkgs-c9c3de0131c565bf5a7f0e2249cd26f6e7acb172.tar.lz nixpkgs-c9c3de0131c565bf5a7f0e2249cd26f6e7acb172.tar.xz nixpkgs-c9c3de0131c565bf5a7f0e2249cd26f6e7acb172.tar.zst nixpkgs-c9c3de0131c565bf5a7f0e2249cd26f6e7acb172.zip |
Update script as rust-src layout has changed
Use stub lib so `core` and `alloc` are handled symmetrically.
-rw-r--r-- | pkgs/build-support/rust/sysroot/Cargo.lock | 17 | ||||
-rw-r--r-- | pkgs/build-support/rust/sysroot/cargo.py | 16 | ||||
-rw-r--r-- | pkgs/build-support/rust/sysroot/src.nix | 5 | ||||
-rwxr-xr-x | pkgs/build-support/rust/sysroot/update-lockfile.sh | 22 |
4 files changed, 41 insertions, 19 deletions
diff --git a/pkgs/build-support/rust/sysroot/Cargo.lock b/pkgs/build-support/rust/sysroot/Cargo.lock index 61fcef61744..6ec6da6ae6e 100644 --- a/pkgs/build-support/rust/sysroot/Cargo.lock +++ b/pkgs/build-support/rust/sysroot/Cargo.lock @@ -10,9 +10,9 @@ dependencies = [ [[package]] name = "compiler_builtins" -version = "0.1.36" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd0782e0a7da7598164153173e5a5d4d9b1da094473c98dce0ff91406112369" +checksum = "b6591c2442ee984e2b264638a8b5e7ae44fd47b32d28e3a08e2e9c3cdb0c2fb0" dependencies = [ "rustc-std-workspace-core", ] @@ -22,8 +22,21 @@ name = "core" version = "0.0.0" [[package]] +name = "nixpkgs-sysroot-stub-crate" +version = "0.0.0" +dependencies = [ + "alloc", + "compiler_builtins", + "core", +] + +[[package]] name = "rustc-std-workspace-core" version = "1.99.0" dependencies = [ "core", ] + +[[patch.unused]] +name = "rustc-std-workspace-alloc" +version = "1.99.0" diff --git a/pkgs/build-support/rust/sysroot/cargo.py b/pkgs/build-support/rust/sysroot/cargo.py index 09f6fba6d1c..9d970eff79e 100644 --- a/pkgs/build-support/rust/sysroot/cargo.py +++ b/pkgs/build-support/rust/sysroot/cargo.py @@ -6,7 +6,7 @@ orig_cargo = os.environ['ORIG_CARGO'] if 'ORIG_CARGO' in os.environ else None base = { 'package': { - 'name': 'alloc', + 'name': 'nixpkgs-sysroot-stub-crate', 'version': '0.0.0', 'authors': ['The Rust Project Developers'], 'edition': '2018', @@ -17,17 +17,19 @@ base = { 'features': ['rustc-dep-of-std', 'mem'], }, 'core': { - 'path': os.path.join(rust_src, 'libcore'), + 'path': os.path.join(rust_src, 'core'), + }, + 'alloc': { + 'path': os.path.join(rust_src, 'alloc'), }, - }, - 'lib': { - 'name': 'alloc', - 'path': os.path.join(rust_src, 'liballoc/lib.rs'), }, 'patch': { 'crates-io': { 'rustc-std-workspace-core': { - 'path': os.path.join(rust_src, 'tools/rustc-std-workspace-core'), + 'path': os.path.join(rust_src, 'rustc-std-workspace-core'), + }, + 'rustc-std-workspace-alloc': { + 'path': os.path.join(rust_src, 'rustc-std-workspace-alloc'), }, }, }, diff --git a/pkgs/build-support/rust/sysroot/src.nix b/pkgs/build-support/rust/sysroot/src.nix index 065f9828614..e741326bd0d 100644 --- a/pkgs/build-support/rust/sysroot/src.nix +++ b/pkgs/build-support/rust/sysroot/src.nix @@ -7,14 +7,15 @@ stdenv.mkDerivation { preferLocalBuild = true; phases = [ "installPhase" ]; installPhase = '' - export RUSTC_SRC=${rustPlatform.rustcSrc.override { minimalContent = false; }} + export RUSTC_SRC=${rustPlatform.rustLibSrc.override { }} '' + lib.optionalString (originalCargoToml != null) '' export ORIG_CARGO=${originalCargoToml} '' + '' ${buildPackages.python3.withPackages (ps: with ps; [ toml ])}/bin/python3 ${./cargo.py} - mkdir -p $out + mkdir -p $out/src + touch $out/src/lib.rs cp Cargo.toml $out/Cargo.toml cp ${./Cargo.lock} $out/Cargo.lock ''; diff --git a/pkgs/build-support/rust/sysroot/update-lockfile.sh b/pkgs/build-support/rust/sysroot/update-lockfile.sh index 83d29832384..d0596d1e5a6 100755 --- a/pkgs/build-support/rust/sysroot/update-lockfile.sh +++ b/pkgs/build-support/rust/sysroot/update-lockfile.sh @@ -1,21 +1,27 @@ #!/usr/bin/env nix-shell #!nix-shell -i bash -p python3 python3.pkgs.toml cargo -set -e +set -eu pipefile -HERE=$(dirname "${BASH_SOURCE[0]}") +HERE=$(readlink -e $(dirname "${BASH_SOURCE[0]}")) NIXPKGS_ROOT="$HERE/../../../.." # https://unix.stackexchange.com/a/84980/390173 tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t 'update-lockfile') - cd "$tempdir" -nix-build -E "with import (/. + \"${NIXPKGS_ROOT}\") {}; pkgs.rustPlatform.rustcSrc.override { minimalContent = false; }" -RUSTC_SRC="$(pwd)/result" python3 "$HERE/cargo.py" -RUSTC_BOOTSTRAP=1 cargo build || echo "Build failure is expected. All that's needed is the lockfile." +mkdir -p src +touch src/lib.rs -cp Cargo.lock "$HERE" +RUSTC_SRC=$(nix-build "${NIXPKGS_ROOT}" -A pkgs.rustPlatform.rustLibSrc --no-out-link) -rm -rf "$tempdir" +ln -s $RUSTC_SRC/{core,alloc} ./ + +export RUSTC_SRC +python3 "$HERE/cargo.py" +export RUSTC_BOOTSTRAP=1 +cargo generate-lockfile +cp Cargo.lock "$HERE" + +rm -rf "$tempdir" |