summary refs log tree commit diff
path: root/pkgs/build-support/rust
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2021-11-01 21:48:55 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2021-11-07 14:16:49 -0500
commit18ed048c7b27e288a6c9ba894790a7e67ed5080d (patch)
treed510e8594b5ee2a9784a15e0ec2a8337c99bc977 /pkgs/build-support/rust
parent3b0bff383f8e894b1ee7a30b62c8b727a68511df (diff)
downloadnixpkgs-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-xpkgs/build-support/rust/build-rust-package/sysroot/update-lockfile.sh (renamed from pkgs/build-support/rust/sysroot/update-lockfile.sh)0
-rwxr-xr-xpkgs/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.nix37
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;
+}