diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2021-11-01 21:48:55 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2021-11-07 14:16:49 -0500 |
commit | 18ed048c7b27e288a6c9ba894790a7e67ed5080d (patch) | |
tree | d510e8594b5ee2a9784a15e0ec2a8337c99bc977 /pkgs/build-support/rust | |
parent | 3b0bff383f8e894b1ee7a30b62c8b727a68511df (diff) | |
download | nixpkgs-18ed048c7b27e288a6c9ba894790a7e67ed5080d.tar nixpkgs-18ed048c7b27e288a6c9ba894790a7e67ed5080d.tar.gz nixpkgs-18ed048c7b27e288a6c9ba894790a7e67ed5080d.tar.bz2 nixpkgs-18ed048c7b27e288a6c9ba894790a7e67ed5080d.tar.lz nixpkgs-18ed048c7b27e288a6c9ba894790a7e67ed5080d.tar.xz nixpkgs-18ed048c7b27e288a6c9ba894790a7e67ed5080d.tar.zst nixpkgs-18ed048c7b27e288a6c9ba894790a7e67ed5080d.zip |
build-support/rust: Organize
- `toRustTarget` and friends pulled out from rust tools into rust library. Since they don't depend on any packages they can be more widely useable. - `build-rust-package` gets its own directory - `fetch-cargo-tarball` gets its own directory
Diffstat (limited to 'pkgs/build-support/rust')
-rw-r--r-- | pkgs/build-support/rust/build-rust-package/default.nix (renamed from pkgs/build-support/rust/default.nix) | 0 | ||||
-rw-r--r-- | pkgs/build-support/rust/build-rust-package/patch-registry-deps/pkg-config (renamed from pkgs/build-support/rust/patch-registry-deps/pkg-config) | 0 | ||||
-rw-r--r-- | pkgs/build-support/rust/build-rust-package/sysroot/Cargo.lock (renamed from pkgs/build-support/rust/sysroot/Cargo.lock) | 0 | ||||
-rw-r--r-- | pkgs/build-support/rust/build-rust-package/sysroot/cargo.py (renamed from pkgs/build-support/rust/sysroot/cargo.py) | 0 | ||||
-rw-r--r-- | pkgs/build-support/rust/build-rust-package/sysroot/default.nix (renamed from pkgs/build-support/rust/sysroot/default.nix) | 0 | ||||
-rwxr-xr-x | pkgs/build-support/rust/build-rust-package/sysroot/update-lockfile.sh (renamed from pkgs/build-support/rust/sysroot/update-lockfile.sh) | 0 | ||||
-rwxr-xr-x | pkgs/build-support/rust/fetch-cargo-tarball/cargo-vendor-normalise.py (renamed from pkgs/build-support/rust/cargo-vendor-normalise.py) | 0 | ||||
-rw-r--r-- | pkgs/build-support/rust/fetch-cargo-tarball/default.nix (renamed from pkgs/build-support/rust/fetchCargoTarball.nix) | 4 | ||||
-rw-r--r-- | pkgs/build-support/rust/lib/default.nix | 37 |
9 files changed, 39 insertions, 2 deletions
diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/build-rust-package/default.nix index 3d7057dd7d9..3d7057dd7d9 100644 --- a/pkgs/build-support/rust/default.nix +++ b/pkgs/build-support/rust/build-rust-package/default.nix diff --git a/pkgs/build-support/rust/patch-registry-deps/pkg-config b/pkgs/build-support/rust/build-rust-package/patch-registry-deps/pkg-config index fbb09430458..fbb09430458 100644 --- a/pkgs/build-support/rust/patch-registry-deps/pkg-config +++ b/pkgs/build-support/rust/build-rust-package/patch-registry-deps/pkg-config diff --git a/pkgs/build-support/rust/sysroot/Cargo.lock b/pkgs/build-support/rust/build-rust-package/sysroot/Cargo.lock index 61fcef61744..61fcef61744 100644 --- a/pkgs/build-support/rust/sysroot/Cargo.lock +++ b/pkgs/build-support/rust/build-rust-package/sysroot/Cargo.lock diff --git a/pkgs/build-support/rust/sysroot/cargo.py b/pkgs/build-support/rust/build-rust-package/sysroot/cargo.py index 09f6fba6d1c..09f6fba6d1c 100644 --- a/pkgs/build-support/rust/sysroot/cargo.py +++ b/pkgs/build-support/rust/build-rust-package/sysroot/cargo.py diff --git a/pkgs/build-support/rust/sysroot/default.nix b/pkgs/build-support/rust/build-rust-package/sysroot/default.nix index 4db7cf0dc39..4db7cf0dc39 100644 --- a/pkgs/build-support/rust/sysroot/default.nix +++ b/pkgs/build-support/rust/build-rust-package/sysroot/default.nix diff --git a/pkgs/build-support/rust/sysroot/update-lockfile.sh b/pkgs/build-support/rust/build-rust-package/sysroot/update-lockfile.sh index 83d29832384..83d29832384 100755 --- a/pkgs/build-support/rust/sysroot/update-lockfile.sh +++ b/pkgs/build-support/rust/build-rust-package/sysroot/update-lockfile.sh diff --git a/pkgs/build-support/rust/cargo-vendor-normalise.py b/pkgs/build-support/rust/fetch-cargo-tarball/cargo-vendor-normalise.py index 2d7a1895718..2d7a1895718 100755 --- a/pkgs/build-support/rust/cargo-vendor-normalise.py +++ b/pkgs/build-support/rust/fetch-cargo-tarball/cargo-vendor-normalise.py diff --git a/pkgs/build-support/rust/fetchCargoTarball.nix b/pkgs/build-support/rust/fetch-cargo-tarball/default.nix index c2be9aac82d..d36200aa5f9 100644 --- a/pkgs/build-support/rust/fetchCargoTarball.nix +++ b/pkgs/build-support/rust/fetch-cargo-tarball/default.nix @@ -9,8 +9,8 @@ let cargo-vendor-normalise = stdenv.mkDerivation { postFixup = "wrapPythonPrograms"; doInstallCheck = true; installCheckPhase = '' - # check that ./fetchcargo-default-config.toml is a fix point - reference=${./fetchcargo-default-config.toml} + # check that ../fetchcargo-default-config.toml is a fix point + reference=${../fetchcargo-default-config.toml} < $reference $out/bin/cargo-vendor-normalise > test; cmp test $reference ''; diff --git a/pkgs/build-support/rust/lib/default.nix b/pkgs/build-support/rust/lib/default.nix new file mode 100644 index 00000000000..24adcf2cb4e --- /dev/null +++ b/pkgs/build-support/rust/lib/default.nix @@ -0,0 +1,37 @@ +{ lib }: + +rec { + # https://doc.rust-lang.org/reference/conditional-compilation.html#target_arch + toTargetArch = platform: + if platform.isAarch32 then "arm" + else platform.parsed.cpu.name; + + # https://doc.rust-lang.org/reference/conditional-compilation.html#target_os + toTargetOs = platform: + if platform.isDarwin then "macos" + else platform.parsed.kernel.name; + + # Returns the name of the rust target, even if it is custom. Adjustments are + # because rust has slightly different naming conventions than we do. + toRustTarget = platform: let + inherit (platform.parsed) cpu vendor kernel abi; + cpu_ = platform.rustc.platform.arch or { + "armv7a" = "armv7"; + "armv7l" = "armv7"; + "armv6l" = "arm"; + "armv5tel" = "armv5te"; + "riscv64" = "riscv64gc"; + }.${cpu.name} or cpu.name; + vendor_ = platform.rustc.platform.vendor or { + "w64" = "pc"; + }.${vendor.name} or vendor.name; + in platform.rustc.config + or "${cpu_}-${vendor_}-${kernel.name}${lib.optionalString (abi.name != "unknown") "-${abi.name}"}"; + + # Returns the name of the rust target if it is standard, or the json file + # containing the custom target spec. + toRustTargetSpec = platform: + if (platform.rustc or {}) ? platform + then builtins.toFile (toRustTarget platform + ".json") (builtins.toJSON platform.rustc.platform) + else toRustTarget platform; +} |