From 1f545f01bb96d885b33e9ff18ce291b85d3a69fb Mon Sep 17 00:00:00 2001 From: Sophie Taylor Date: Sun, 26 Mar 2017 19:59:08 +1000 Subject: [PATCH 1/4] fetchRepoProject: fixes; more options --- .../fetchrepoproject/default.nix | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/pkgs/build-support/fetchrepoproject/default.nix b/pkgs/build-support/fetchrepoproject/default.nix index f0bc02cf66d..8d5259908d7 100644 --- a/pkgs/build-support/fetchrepoproject/default.nix +++ b/pkgs/build-support/fetchrepoproject/default.nix @@ -1,27 +1,49 @@ -{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 stdenv.mkDerivation { - buildCommand = with stdenv.lib; '' - mkdir ./.repo + + buildCommand = '' + mkdir .repo + ${optionalString (local_manifests != []) '' mkdir ./.repo/local_manifests - for local_manifest in ${concatMapStringsSep " " (x: "${x}") 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'' - + ${optionalString (repoRepoURL != "") " --repo-url=${repoRepoURL}"} - + ${optionalString (repoRepoRev != "") " --repo-branch=${repoRepoRev}"} - + ${optionalString (referenceDir != "") " --reference=${referenceDir}"} - + '' + 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"; @@ -30,8 +52,7 @@ stdenv.mkDerivation { "GIT_PROXY_COMMAND" "SOCKS_SERVER" ]; - buildInputs = [git gitRepo cacert] ++ stdenv.lib.optional (gnupg != null) [gnupg] ; - + buildInputs = [git gitRepo cacert] ++ optional (gnupg != null) [gnupg] ; outputHashAlgo = "sha256"; outputHashMode = "recursive"; outputHash = sha256; From f3b6a0b14ccbfc9f03c0e25353f8ed8366a8c1e9 Mon Sep 17 00:00:00 2001 From: Sophie Taylor Date: Sun, 26 Mar 2017 21:50:46 +1000 Subject: [PATCH 2/4] fetchRepoProject: typo --- pkgs/build-support/fetchrepoproject/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchrepoproject/default.nix b/pkgs/build-support/fetchrepoproject/default.nix index 13a281b12d7..289171aa1ca 100644 --- a/pkgs/build-support/fetchrepoproject/default.nix +++ b/pkgs/build-support/fetchrepoproject/default.nix @@ -53,7 +53,7 @@ stdenv.mkDerivation { repo init ${concatStringsSep " " repoInitFlags} repo sync --jobs=$NIX_BUILD_CORES --current-branch - ${optionalString createMirror "rm -rf $out/.repo"} + ${optionalString !createMirror "rm -rf $out/.repo"} ''; GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; From 69055ecb51ff6f52406ad1fb616c3d970e47d267 Mon Sep 17 00:00:00 2001 From: Sophie Taylor Date: Sun, 26 Mar 2017 21:55:41 +1000 Subject: [PATCH 3/4] fetchRepoProject: fixup --- pkgs/build-support/fetchrepoproject/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchrepoproject/default.nix b/pkgs/build-support/fetchrepoproject/default.nix index 289171aa1ca..e8ec0c1f4d4 100644 --- a/pkgs/build-support/fetchrepoproject/default.nix +++ b/pkgs/build-support/fetchrepoproject/default.nix @@ -53,7 +53,7 @@ stdenv.mkDerivation { repo init ${concatStringsSep " " repoInitFlags} repo sync --jobs=$NIX_BUILD_CORES --current-branch - ${optionalString !createMirror "rm -rf $out/.repo"} + ${optionalString (!createMirror) "rm -rf $out/.repo"} ''; GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; From 50d964d105d3f9fa91e4f54c4a17302bdbde2064 Mon Sep 17 00:00:00 2001 From: Sophie Taylor Date: Mon, 27 Mar 2017 15:04:02 +1000 Subject: [PATCH 4/4] fetchRepoProject: typo --- pkgs/build-support/fetchrepoproject/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchrepoproject/default.nix b/pkgs/build-support/fetchrepoproject/default.nix index e8ec0c1f4d4..8c55db5372d 100644 --- a/pkgs/build-support/fetchrepoproject/default.nix +++ b/pkgs/build-support/fetchrepoproject/default.nix @@ -16,7 +16,7 @@ let "--depth=1" #TODO: fetching clone.bundle seems to fail spectacularly inside a sandbox. "--no-clone-bundle" - (optionalString (createMirror != "") "--mirror") + (optionalString createMirror "--mirror") (optionalString useArchive "--archive") (optionalString (repoRepoURL != "") "--repo-url=${repoRepoURL}") (optionalString (repoRepoRev != "") "--repo-branch=${repoRepoRev}")