Commit 04c3e0de authored by Yueh-Shun Li's avatar Yueh-Shun Li
Browse files

rustPlatform.buildRustPackage: fix cargoDeps inherited attribute overriding

Make `<rust-package>.cargoDeps` reference the overridden
`<rust-package>.src` and other attributes.

Let `stdenv.mkDerivation` handle the name of `<rust-package>.cargoDeps`.

Make Rust package overriding *possible*
before making further design decisions about the
`<pkg>.overrideAttrs` interface.
parent 1b0d8067
Loading
Loading
Loading
Loading
+18 −19
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@
}:

let
  getOptionalAttrs =
    names: attrs: lib.getAttrs (lib.intersectLists names (lib.attrNames attrs)) attrs;

  interpolateString =
    s:
    if lib.isList s then
@@ -39,16 +42,9 @@ lib.extendMkDerivation {
  extendDrvArgs =
    finalAttrs:
    {
      name ? "${args.pname}-${args.version}",

      # Name for the vendored dependencies tarball
      cargoDepsName ? name,
      cargoDepsName ? null,

      src ? null,
      srcs ? null,
      preUnpack ? null,
      unpackPhase ? null,
      postUnpack ? null,
      cargoPatches ? [ ],
      patches ? [ ],
      sourceRoot ? null,
@@ -112,17 +108,20 @@ lib.extendMkDerivation {
          throw "cargoHash, cargoVendorDir, cargoDeps, or cargoLock must be set"
        else
          fetchCargoVendor (
            {
              inherit
                src
                srcs
                sourceRoot
                cargoRoot
                preUnpack
                unpackPhase
                postUnpack
                ;
              name = cargoDepsName;
            getOptionalAttrs [
              "name"
              "pname"
              "version"
              "src"
              "srcs"
              "sourceRoot"
              "cargoRoot"
              "preUnpack"
              "unpackPhase"
              "postUnpack"
            ] finalAttrs
            // {
              ${if cargoDepsName != null then "name" else null} = cargoDepsName;
              patches = cargoPatches;
              hash = args.cargoHash;
            }