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/development/compilers/rust | |
parent | 3b0bff383f8e894b1ee7a30b62c8b727a68511df (diff) |
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/development/compilers/rust')
-rw-r--r-- | pkgs/development/compilers/rust/default.nix | 40 | ||||
-rw-r--r-- | pkgs/development/compilers/rust/make-rust-platform.nix | 4 |
2 files changed, 11 insertions, 33 deletions
diff --git a/pkgs/development/compilers/rust/default.nix b/pkgs/development/compilers/rust/default.nix index 59420477119c6..6dfc8a49063f9 100644 --- a/pkgs/development/compilers/rust/default.nix +++ b/pkgs/development/compilers/rust/default.nix @@ -18,39 +18,17 @@ , CoreFoundation, Security, SystemConfiguration , pkgsBuildTarget, pkgsBuildBuild , makeRustPlatform -}: 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: with platform.parsed; let - 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}"}"; +let + # Use `import` to make sure no packages sneak in here. + lib' = import ../../../build-support/rust/lib { inherit lib; }; +in +{ + lib = lib'; - # 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; + # Backwards compat before `lib` was factored out. + inherit (lib') toTargetArch toTargetOs toRustTarget toRustTargetSpec; # This just contains tools for now. But it would conceivably contain # libraries too, say if we picked some default/recommended versions from diff --git a/pkgs/development/compilers/rust/make-rust-platform.nix b/pkgs/development/compilers/rust/make-rust-platform.nix index 33d826eef5077..f479b052019e1 100644 --- a/pkgs/development/compilers/rust/make-rust-platform.nix +++ b/pkgs/development/compilers/rust/make-rust-platform.nix @@ -7,12 +7,12 @@ rec { inherit rustc cargo; }; - fetchCargoTarball = buildPackages.callPackage ../../../build-support/rust/fetchCargoTarball.nix { + fetchCargoTarball = buildPackages.callPackage ../../../build-support/rust/fetch-cargo-tarball { git = buildPackages.gitMinimal; inherit cargo; }; - buildRustPackage = callPackage ../../../build-support/rust { + buildRustPackage = callPackage ../../../build-support/rust/build-rust-package { git = buildPackages.gitMinimal; inherit stdenv cargoBuildHook cargoCheckHook cargoInstallHook cargoSetupHook fetchCargoTarball importCargoLock rustc; |