diff options
author | Michael Raskin <7c6f434c@mail.ru> | 2017-03-28 02:33:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-28 02:33:35 +0200 |
commit | 8a919af23b7ff2bb6783f173c18250adb5aba9b1 (patch) | |
tree | 1d3a127850702740405f4d1d528161cfade99b12 /pkgs/build-support | |
parent | 6ce0af295d73bdd235c783d74c8a7977c5ce43f8 (diff) | |
parent | 50d964d105d3f9fa91e4f54c4a17302bdbde2064 (diff) | |
download | nixlib-8a919af23b7ff2bb6783f173c18250adb5aba9b1.tar nixlib-8a919af23b7ff2bb6783f173c18250adb5aba9b1.tar.gz nixlib-8a919af23b7ff2bb6783f173c18250adb5aba9b1.tar.bz2 nixlib-8a919af23b7ff2bb6783f173c18250adb5aba9b1.tar.lz nixlib-8a919af23b7ff2bb6783f173c18250adb5aba9b1.tar.xz nixlib-8a919af23b7ff2bb6783f173c18250adb5aba9b1.tar.zst nixlib-8a919af23b7ff2bb6783f173c18250adb5aba9b1.zip |
Merge pull request #24347 from spacekitteh/fetchGitRepo
fetchRepoProject: fixes; more options
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/fetchrepoproject/default.nix | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/pkgs/build-support/fetchrepoproject/default.nix b/pkgs/build-support/fetchrepoproject/default.nix index 78a46d4ac9bd..8c55db5372d9 100644 --- a/pkgs/build-support/fetchrepoproject/default.nix +++ b/pkgs/build-support/fetchrepoproject/default.nix @@ -1,10 +1,31 @@ -{ stdenv, git, gitRepo, gnupg ? null, cacert }: +{ stdenv, git, gitRepo, gnupg ? null, cacert, copyPathsToStore }: -{ name, manifest, rev ? "HEAD", sha256 ? "", repoRepoURL ? "", repoRepoRev ? "", referenceDir ? "" -, localManifests ? [] +{ name, manifest, rev ? "HEAD", sha256, repoRepoURL ? "", repoRepoRev ? "", referenceDir ? "" +, localManifests ? [], createMirror ? false, useArchive ? !createMirror }: assert repoRepoRev != "" -> repoRepoURL != ""; +assert createMirror -> !useArchive; + +with stdenv.lib; + +let + repoInitFlags = [ + "--manifest-url=${manifest}" + "--manifest-branch=${rev}" + "--depth=1" + #TODO: fetching clone.bundle seems to fail spectacularly inside a sandbox. + "--no-clone-bundle" + (optionalString createMirror "--mirror") + (optionalString useArchive "--archive") + (optionalString (repoRepoURL != "") "--repo-url=${repoRepoURL}") + (optionalString (repoRepoRev != "") "--repo-branch=${repoRepoRev}") + (optionalString (referenceDir != "") "--reference=${referenceDir}") + ]; + + local_manifests = copyPathsToStore localManifests; + +in with stdenv.lib; @@ -18,19 +39,21 @@ in stdenv.mkDerivation { buildCommand = '' - mkdir ./.repo + mkdir .repo + ${optionalString (local_manifests != []) '' mkdir ./.repo/local_manifests - for local_manifest in ${concatMapStringsSep " " toString localManifests} + for local_manifest in ${concatMapStringsSep " " toString local_manifests} + do cp $local_manifest ./.repo/local_manifests/$(stripHash $local_manifest; echo $strippedName) done + ''} export HOME=.repo - repo init --manifest-url=${manifest} --manifest-branch=${rev} --depth=1 --no-clone-bundle \ - ${concatStringsSep " " extraRepoInitFlags} + repo init ${concatStringsSep " " repoInitFlags} repo sync --jobs=$NIX_BUILD_CORES --current-branch - rm -rf $out/.repo + ${optionalString (!createMirror) "rm -rf $out/.repo"} ''; GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; @@ -40,7 +63,6 @@ stdenv.mkDerivation { ]; buildInputs = [git gitRepo cacert] ++ optional (gnupg != null) [gnupg] ; - outputHashAlgo = "sha256"; outputHashMode = "recursive"; outputHash = sha256; |