From 7aae279ad9aacbf09293912939c2ba5795033f60 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 24 May 2022 18:03:46 +0200 Subject: unstableGitUpdater: fix updating fetchzip-based sources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a67950f20b97a293b2fefeecc349c6b785321e4b added `url` attribute from `fetchurl` and therefore also from `fetchzip`. We previously relied on `url` from fetchgit-based fetchers to find the repo URL but now it will just return tarballs in the case of `fetchFrom{GitHub,GitLab}`. Let’s add an attribute to `fetch{git,FromGitHub,FromGitLab}` to expose a repo URL consistently. --- pkgs/build-support/fetchgit/default.nix | 4 ++++ pkgs/build-support/fetchgithub/default.nix | 13 +++++++++++-- pkgs/build-support/fetchgitlab/default.nix | 8 +++++++- pkgs/common-updater/unstable-updater.nix | 2 +- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index b0cc42f0714..2ae1714e4af 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -92,4 +92,8 @@ stdenvNoCC.mkDerivation { ]; inherit preferLocalBuild meta; + + passthru = { + gitRepoUrl = url; + }; } diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index 27cb8312ea0..cfb6a6ca7cd 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -42,11 +42,20 @@ let ''; netrcImpureEnvVars = [ "${varBase}USERNAME" "${varBase}PASSWORD" ]; }; + + gitRepoUrl = "${baseUrl}.git"; + fetcherArgs = (if useFetchGit then { - inherit rev deepClone fetchSubmodules sparseCheckout; url = "${baseUrl}.git"; + inherit rev deepClone fetchSubmodules sparseCheckout; url = gitRepoUrl; } // lib.optionalAttrs (leaveDotGit != null) { inherit leaveDotGit; } - else { url = "${baseUrl}/archive/${rev}.tar.gz"; } + else { + url = "${baseUrl}/archive/${rev}.tar.gz"; + + passthru = { + inherit gitRepoUrl; + }; + } ) // privateAttrs // passthruAttrs // { inherit name; }; in diff --git a/pkgs/build-support/fetchgitlab/default.nix b/pkgs/build-support/fetchgitlab/default.nix index 5c82a8f8587..264bbcf3f76 100644 --- a/pkgs/build-support/fetchgitlab/default.nix +++ b/pkgs/build-support/fetchgitlab/default.nix @@ -15,11 +15,17 @@ let useFetchGit = deepClone || fetchSubmodules || leaveDotGit; fetcher = if useFetchGit then fetchgit else fetchzip; + gitRepoUrl = "${protocol}://${domain}/${slug}.git"; + fetcherArgs = (if useFetchGit then { inherit rev deepClone fetchSubmodules leaveDotGit; - url = "${protocol}://${domain}/${slug}.git"; + url = gitRepoUrl; } else { url = "${protocol}://${domain}/api/v4/projects/${escapedSlug}/repository/archive.tar.gz?sha=${escapedRev}"; + + passthru = { + inherit gitRepoUrl; + }; }) // passthruAttrs // { inherit name; }; in diff --git a/pkgs/common-updater/unstable-updater.nix b/pkgs/common-updater/unstable-updater.nix index 14f25a91601..2be065f410e 100644 --- a/pkgs/common-updater/unstable-updater.nix +++ b/pkgs/common-updater/unstable-updater.nix @@ -49,7 +49,7 @@ let # By default we set url to src.url if [[ -z "$url" ]]; then url="$(${nix}/bin/nix-instantiate $systemArg --eval -E \ - "with import ./. {}; $UPDATE_NIX_ATTR_PATH.src.url or $UPDATE_NIX_ATTR_PATH.src.meta.homepage" \ + "with import ./. {}; $UPDATE_NIX_ATTR_PATH.src.gitRepoUrl" \ | tr -d '"')" fi -- cgit 1.4.1