Skip to content

Commit

Permalink
Fetch submodules if supported, and warn if submodules are used but not
Browse files Browse the repository at this point in the history
supported
  • Loading branch information
tfc committed Apr 21, 2022
1 parent df49d53 commit f2e0a6f
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 10 deletions.
41 changes: 31 additions & 10 deletions nix/sources.nix
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,27 @@ let
if spec ? tag then "refs/tags/${spec.tag}" else
abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!";
submodules = if spec ? submodules then spec.submodules else false;
submoduleArg =
let
nixSupportsSubmodules = builtins.compareVersions builtins.nixVersion "2.4" >= 0;
emptyArgWithWarning =
if submodules == true
then
builtins.trace
(
"The niv input \"${name}\" uses submodules "
+ "but your nix's (${builtins.nixVersion}) builtins.fetchGit "
+ "does not support them"
)
{}
else {};
in
if nixSupportsSubmodules
then { inherit submodules; }
else emptyArgWithWarning;
in
builtins.fetchGit { url = spec.repo; inherit (spec) rev; inherit ref; }
// (if builtins.compareVersions builtins.nixVersion "2.4" >= 0 then { inherit submodules; } else {});
builtins.fetchGit
({ url = spec.repo; inherit (spec) rev; inherit ref; } // submoduleArg);

fetch_local = spec: spec.path;

Expand Down Expand Up @@ -149,14 +167,17 @@ let

# Create the final "sources" from the config
mkSources = config:
mapAttrs (
name: spec:
if builtins.hasAttr "outPath" spec
then abort
"The values in sources.json should not have an 'outPath' attribute"
else
spec // { outPath = replace name (fetch config.pkgs name spec); }
) config.sources;
mapAttrs
(
name: spec:
if builtins.hasAttr "outPath" spec
then
abort
"The values in sources.json should not have an 'outPath' attribute"
else
spec // { outPath = replace name (fetch config.pkgs name spec); }
)
config.sources;

# The "config" used by the fetchers
mkConfig =
Expand Down
4 changes: 4 additions & 0 deletions src/Niv/Sources.hs
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,8 @@ data SourcesNixVersion
V25
| -- formatting fix
V26
| -- Support submodules for git repos
V27
deriving stock (Bounded, Enum, Eq)

-- | A user friendly version
Expand Down Expand Up @@ -207,6 +209,7 @@ sourcesVersionToText = \case
V24 -> "24"
V25 -> "25"
V26 -> "26"
V27 -> "27"

latestVersionMD5 :: T.Text
latestVersionMD5 = sourcesVersionToMD5 maxBound
Expand Down Expand Up @@ -245,6 +248,7 @@ sourcesVersionToMD5 = \case
V24 -> "116c2d936f1847112fef0013771dab28"
V25 -> "6612caee5814670e5e4d9dd1b71b5f70"
V26 -> "937bff93370a064c9000f13cec5867f9"
V27 -> "8eb15aa505d1971b1593c3ba3a9e8646"

-- | The MD5 sum of ./nix/sources.nix
sourcesNixMD5 :: IO T.Text
Expand Down

0 comments on commit f2e0a6f

Please sign in to comment.