Skip to content

Commit

Permalink
Fixes #94 - crateOverrides is not an argument to buildRustCrate
Browse files Browse the repository at this point in the history
instead we need to override defaultCrateOverrides of buildRustCrate.
  • Loading branch information
kolloch committed Feb 12, 2020
1 parent 4c6868a commit b567d8c
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 26 deletions.
19 changes: 13 additions & 6 deletions crate2nix/Cargo.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3417,12 +3417,18 @@ rec {
}
);

/* A restricted overridable version of buildRustCrateWithFeaturesImpl. */
/* A restricted overridable version of builtRustCratesWithFeatures. */
buildRustCrateWithFeatures =
{ packageId
, features ? rootFeatures
, crateOverrides ? defaultCrateOverrides
, buildRustCrateFunc ? buildRustCrate
, buildRustCrateFunc ? (
if crateOverrides == pkgs.defaultCrateOverrides
then buildRustCrate
else buildRustCrate.override {
defaultCrateOverrides = crateOverrides;
}
)
, runTests ? false
, testCrateFlags ? []
}:
Expand All @@ -3431,11 +3437,11 @@ rec {
{ features, crateOverrides, runTests, testCrateFlags }:
let
builtRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = false;
};
builtTestRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = true;
};
drv = builtRustCrates.${packageId};
Expand All @@ -3445,12 +3451,13 @@ rec {
)
{ inherit features crateOverrides runTests testCrateFlags; };

/* Returns a buildRustCrate derivation for the given packageId and features. */
/* Returns an attr set with packageId mapped to the result of buildRustCrateFunc
for the corresponding crate.
*/
builtRustCratesWithFeatures =
{ packageId
, features
, crateConfigs ? crates
, crateOverrides
, buildRustCrateFunc
, runTests
, target ? defaultTarget
Expand Down
19 changes: 13 additions & 6 deletions crate2nix/templates/nix/crate2nix/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,18 @@ rec {
}
);

/* A restricted overridable version of buildRustCrateWithFeaturesImpl. */
/* A restricted overridable version of builtRustCratesWithFeatures. */
buildRustCrateWithFeatures =
{ packageId
, features ? rootFeatures
, crateOverrides ? defaultCrateOverrides
, buildRustCrateFunc ? buildRustCrate
, buildRustCrateFunc ? (
if crateOverrides == pkgs.defaultCrateOverrides
then buildRustCrate
else buildRustCrate.override {
defaultCrateOverrides = crateOverrides;
}
)
, runTests ? false
, testCrateFlags ? []
}:
Expand All @@ -127,11 +133,11 @@ rec {
{ features, crateOverrides, runTests, testCrateFlags }:
let
builtRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = false;
};
builtTestRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = true;
};
drv = builtRustCrates.${packageId};
Expand All @@ -141,12 +147,13 @@ rec {
)
{ inherit features crateOverrides runTests testCrateFlags; };

/* Returns a buildRustCrate derivation for the given packageId and features. */
/* Returns an attr set with packageId mapped to the result of buildRustCrateFunc
for the corresponding crate.
*/
builtRustCratesWithFeatures =
{ packageId
, features
, crateConfigs ? crates
, crateOverrides
, buildRustCrateFunc
, runTests
, target ? defaultTarget
Expand Down
19 changes: 13 additions & 6 deletions sample_projects/bin_with_git_branch_dep/Cargo.nix
Original file line number Diff line number Diff line change
Expand Up @@ -217,12 +217,18 @@ rec {
}
);

/* A restricted overridable version of buildRustCrateWithFeaturesImpl. */
/* A restricted overridable version of builtRustCratesWithFeatures. */
buildRustCrateWithFeatures =
{ packageId
, features ? rootFeatures
, crateOverrides ? defaultCrateOverrides
, buildRustCrateFunc ? buildRustCrate
, buildRustCrateFunc ? (
if crateOverrides == pkgs.defaultCrateOverrides
then buildRustCrate
else buildRustCrate.override {
defaultCrateOverrides = crateOverrides;
}
)
, runTests ? false
, testCrateFlags ? []
}:
Expand All @@ -231,11 +237,11 @@ rec {
{ features, crateOverrides, runTests, testCrateFlags }:
let
builtRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = false;
};
builtTestRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = true;
};
drv = builtRustCrates.${packageId};
Expand All @@ -245,12 +251,13 @@ rec {
)
{ inherit features crateOverrides runTests testCrateFlags; };

/* Returns a buildRustCrate derivation for the given packageId and features. */
/* Returns an attr set with packageId mapped to the result of buildRustCrateFunc
for the corresponding crate.
*/
builtRustCratesWithFeatures =
{ packageId
, features
, crateConfigs ? crates
, crateOverrides
, buildRustCrateFunc
, runTests
, target ? defaultTarget
Expand Down
19 changes: 13 additions & 6 deletions sample_projects/bin_with_git_submodule_dep/Cargo.nix
Original file line number Diff line number Diff line change
Expand Up @@ -1391,12 +1391,18 @@ rec {
}
);

/* A restricted overridable version of buildRustCrateWithFeaturesImpl. */
/* A restricted overridable version of builtRustCratesWithFeatures. */
buildRustCrateWithFeatures =
{ packageId
, features ? rootFeatures
, crateOverrides ? defaultCrateOverrides
, buildRustCrateFunc ? buildRustCrate
, buildRustCrateFunc ? (
if crateOverrides == pkgs.defaultCrateOverrides
then buildRustCrate
else buildRustCrate.override {
defaultCrateOverrides = crateOverrides;
}
)
, runTests ? false
, testCrateFlags ? []
}:
Expand All @@ -1405,11 +1411,11 @@ rec {
{ features, crateOverrides, runTests, testCrateFlags }:
let
builtRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = false;
};
builtTestRustCrates = builtRustCratesWithFeatures {
inherit packageId features crateOverrides buildRustCrateFunc;
inherit packageId features buildRustCrateFunc;
runTests = true;
};
drv = builtRustCrates.${packageId};
Expand All @@ -1419,12 +1425,13 @@ rec {
)
{ inherit features crateOverrides runTests testCrateFlags; };

/* Returns a buildRustCrate derivation for the given packageId and features. */
/* Returns an attr set with packageId mapped to the result of buildRustCrateFunc
for the corresponding crate.
*/
builtRustCratesWithFeatures =
{ packageId
, features
, crateConfigs ? crates
, crateOverrides
, buildRustCrateFunc
, runTests
, target ? defaultTarget
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{ pkgs ? import ../../nixpkgs.nix { config = {}; }
, generatedCargoNix ? ./Cargo.nix
}:

let
customBuildRustCrate = pkgs.buildRustCrate.override {
defaultCrateOverrides = pkgs.defaultCrateOverrides // {
librocksdb-sys = attrs: with pkgs; {
src = attrs.src + "/librocksdb-sys";
buildInputs = [ clang rocksdb ];
LIBCLANG_PATH = "${clang.cc.lib}/lib";
ROCKSDB_LIB_DIR = "${rocksdb}/lib/";
};
};
};
basePackage = pkgs.callPackage generatedCargoNix { buildRustCrate = customBuildRustCrate; };
submodulePackage = basePackage.rootCrate.build;
in
submodulePackage
3 changes: 1 addition & 2 deletions sample_projects/bin_with_git_submodule_dep/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
}:

let
customBuildRustCrate = pkgs.buildRustCrate.override {
basePackage = pkgs.callPackage generatedCargoNix {
defaultCrateOverrides = pkgs.defaultCrateOverrides // {
librocksdb-sys = attrs: with pkgs; {
src = attrs.src + "/librocksdb-sys";
Expand All @@ -13,7 +13,6 @@ let
};
};
};
basePackage = pkgs.callPackage generatedCargoNix { buildRustCrate = customBuildRustCrate; };
submodulePackage = basePackage.rootCrate.build;
in
submodulePackage
8 changes: 8 additions & 0 deletions tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,14 @@ let
expectedOutput = "Hello world from with_git_submodule_dep!";
}

{
name = "bin_with_git_submodule_dep_customBuildRustCrate";
src = ./sample_projects/bin_with_git_submodule_dep;
pregeneratedBuild = "sample_projects/bin_with_git_submodule_dep/Cargo.nix";
customBuild = "sample_projects/bin_with_git_submodule_dep/default-with-customBuildRustCrate.nix";
expectedOutput = "Hello world from with_git_submodule_dep!";
}

{
name = "cdylib";
src = ./sample_projects/cdylib;
Expand Down

0 comments on commit b567d8c

Please sign in to comment.