diff --git a/doc/builders/fetchers.chapter.md b/doc/builders/fetchers.chapter.md index 12d8a5d887f..43aead0ad5e 100644 --- a/doc/builders/fetchers.chapter.md +++ b/doc/builders/fetchers.chapter.md @@ -100,10 +100,10 @@ stdenv.mkDerivation { name = "hello"; src = fetchgit { url = "https://..."; - sparseCheckout = '' - directory/to/be/included - another/directory - ''; + sparseCheckout = [ + "directory/to/be/included" + "another/directory" + ]; sha256 = "0000000000000000000000000000000000000000000000000000"; }; } diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml index 8e97e58f81a..e681e33d71c 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml @@ -580,6 +580,15 @@ future Git update without notice. + + + The fetchgit fetcher supports sparse + checkouts via the sparseCheckout option. + This used to accept a multi-line string with + directories/patterns to check out, but now requires a list of + strings. + + openssh was updated to version 9.1, diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md index ecfba7215c8..f08d17a7dfc 100644 --- a/nixos/doc/manual/release-notes/rl-2211.section.md +++ b/nixos/doc/manual/release-notes/rl-2211.section.md @@ -191,6 +191,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable). - The `fetchgit` fetcher now uses [cone mode](https://www.git-scm.com/docs/git-sparse-checkout/2.37.0#_internalscone_mode_handling) by default for sparse checkouts. [Non-cone mode](https://www.git-scm.com/docs/git-sparse-checkout/2.37.0#_internalsnon_cone_problems) can be enabled by passing `nonConeMode = true`, but note that non-cone mode is deprecated and this option may be removed alongside a future Git update without notice. +- The `fetchgit` fetcher supports sparse checkouts via the `sparseCheckout` option. This used to accept a multi-line string with directories/patterns to check out, but now requires a list of strings. + - `openssh` was updated to version 9.1, disabling the generation of DSA keys when using `ssh-keygen -A` as they are insecure. Also, `SetEnv` directives in `ssh_config` and `sshd_config` are now first-match-wins - `bsp-layout` no longer uses the command `cycle` to switch to other window layouts, as it got replaced by the commands `previous` and `next`. diff --git a/pkgs/applications/misc/nerd-font-patcher/default.nix b/pkgs/applications/misc/nerd-font-patcher/default.nix index e865479f8da..21c77316c1a 100644 --- a/pkgs/applications/misc/nerd-font-patcher/default.nix +++ b/pkgs/applications/misc/nerd-font-patcher/default.nix @@ -9,10 +9,10 @@ python3Packages.buildPythonApplication rec { owner = "ryanoasis"; repo = "nerd-fonts"; rev = "v${version}"; - sparseCheckout = '' - font-patcher - /src/glyphs - ''; + sparseCheckout = [ + "font-patcher" + "/src/glyphs" + ]; sha256 = "sha256-boZUd1PM8puc9BTgOwCJpkfk6VMdXLsIyp+fQmW/ZqI="; }; diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index f516c3d5a03..1fec0c88747 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -15,7 +15,7 @@ in { url, rev ? "HEAD", md5 ? "", sha256 ? "", hash ? "", leaveDotGit ? deepClone , fetchSubmodules ? true, deepClone ? false , branchName ? null -, sparseCheckout ? "" +, sparseCheckout ? [] , nonConeMode ? false , name ? urlToName url rev , # Shell code executed after the file has been fetched @@ -55,13 +55,16 @@ in */ assert deepClone -> leaveDotGit; -assert nonConeMode -> (sparseCheckout != ""); +assert nonConeMode -> !(sparseCheckout == "" || sparseCheckout == []); if md5 != "" then throw "fetchgit does not support md5 anymore, please use sha256" else if hash != "" && sha256 != "" then throw "Only one of sha256 or hash can be set" else +# Added 2022-11-12 +lib.warnIf (builtins.isString sparseCheckout) + "Please provide directories/patterns for sparse checkout as a list of strings. Support for passing a (multi-line) string is deprecated and will be removed in the next release." stdenvNoCC.mkDerivation { inherit name; builder = ./builder.sh; @@ -79,7 +82,12 @@ stdenvNoCC.mkDerivation { else lib.fakeSha256; - inherit url rev leaveDotGit fetchLFS fetchSubmodules deepClone branchName sparseCheckout nonConeMode postFetch; + # git-sparse-checkout(1) says: + # > When the --stdin option is provided, the directories or patterns are read + # > from standard in as a newline-delimited list instead of from the arguments. + sparseCheckout = if builtins.isString sparseCheckout then sparseCheckout else builtins.concatStringsSep "\n" sparseCheckout; + + inherit url rev leaveDotGit fetchLFS fetchSubmodules deepClone branchName nonConeMode postFetch; postHook = if netrcPhase == null then null else '' ${netrcPhase} diff --git a/pkgs/build-support/fetchgit/tests.nix b/pkgs/build-support/fetchgit/tests.nix index 62fe3f77bbd..a18be65327b 100644 --- a/pkgs/build-support/fetchgit/tests.nix +++ b/pkgs/build-support/fetchgit/tests.nix @@ -12,10 +12,10 @@ name = "nix-source"; url = "https://github.com/NixOS/nix"; rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; - sparseCheckout = '' - src - tests - ''; + sparseCheckout = [ + "src" + "tests" + ]; sha256 = "sha256-g1PHGTWgAcd/+sXHo1o6AjVWCvC6HiocOfMbMh873LQ="; }; @@ -23,10 +23,10 @@ name = "nix-source"; url = "https://github.com/NixOS/nix"; rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; - sparseCheckout = '' - src - tests - ''; + sparseCheckout = [ + "src" + "tests" + ]; nonConeMode = true; sha256 = "sha256-FknO6C/PSnMPfhUqObD4vsW4PhkwdmPa9blNzcNvJQ4="; }; diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix index cfb6a6ca7cd..fcde7447cbd 100644 --- a/pkgs/build-support/fetchgithub/default.nix +++ b/pkgs/build-support/fetchgithub/default.nix @@ -3,7 +3,7 @@ { owner, repo, rev, name ? "source" , fetchSubmodules ? false, leaveDotGit ? null , deepClone ? false, private ? false, forceFetchGit ? false -, sparseCheckout ? "" +, sparseCheckout ? [] , githubBase ? "github.com", varPrefix ? null , meta ? { } , ... # For hash agility @@ -24,7 +24,7 @@ let }; passthruAttrs = removeAttrs args [ "owner" "repo" "rev" "fetchSubmodules" "forceFetchGit" "private" "githubBase" "varPrefix" ]; varBase = "NIX${if varPrefix == null then "" else "_${varPrefix}"}_GITHUB_PRIVATE_"; - useFetchGit = fetchSubmodules || (leaveDotGit == true) || deepClone || forceFetchGit || (sparseCheckout != ""); + useFetchGit = fetchSubmodules || (leaveDotGit == true) || deepClone || forceFetchGit || !(sparseCheckout == "" || sparseCheckout == []); # We prefer fetchzip in cases we don't need submodules as the hash # is more stable in that case. fetcher = if useFetchGit then fetchgit else fetchzip; diff --git a/pkgs/data/fonts/noto-fonts/default.nix b/pkgs/data/fonts/noto-fonts/default.nix index 019ed1f371c..da3b0f81d43 100644 --- a/pkgs/data/fonts/noto-fonts/default.nix +++ b/pkgs/data/fonts/noto-fonts/default.nix @@ -71,7 +71,7 @@ let owner = "googlefonts"; repo = "noto-cjk"; inherit rev sha256; - sparseCheckout = "${typeface}/Variable/OTC"; + sparseCheckout = [ "${typeface}/Variable/OTC" ]; }; installPhase = '' diff --git a/pkgs/data/icons/beauty-line-icon-theme/default.nix b/pkgs/data/icons/beauty-line-icon-theme/default.nix index 66e5ac57dd1..dc332b0fc32 100644 --- a/pkgs/data/icons/beauty-line-icon-theme/default.nix +++ b/pkgs/data/icons/beauty-line-icon-theme/default.nix @@ -18,9 +18,9 @@ stdenvNoCC.mkDerivation rec { owner = "gvolpe"; repo = pname; rev = version; - sparseCheckout = '' - BeautyLine-V3 - ''; + sparseCheckout = [ + "BeautyLine-V3" + ]; sha256 = "sha256-IkkypAj250+OXbf19TampCnqYsSbJVIjeYlxJoyhpzk="; }; diff --git a/pkgs/data/misc/colemak-dh/default.nix b/pkgs/data/misc/colemak-dh/default.nix index f36832ff42d..261a7741f16 100644 --- a/pkgs/data/misc/colemak-dh/default.nix +++ b/pkgs/data/misc/colemak-dh/default.nix @@ -12,7 +12,7 @@ stdenvNoCC.mkDerivation rec { repo = "mod-dh"; rev = "e846a5bd24d59ed15ba70b3a9d5363a38ca51d09"; sha256 = "sha256-RFOpN+tIMfakb7AZN0ock9eq2mytvL0DWedvQV67+ks="; - sparseCheckout = "console"; + sparseCheckout = [ "console" ]; }; phases = [ "unpackPhase" "installPhase" ]; diff --git a/pkgs/games/itch/default.nix b/pkgs/games/itch/default.nix index 7aed72dd531..5776a1b43b2 100644 --- a/pkgs/games/itch/default.nix +++ b/pkgs/games/itch/default.nix @@ -41,7 +41,7 @@ stdenvNoCC.mkDerivation rec { repo = pname; rev = "v${version}"; hash = "sha256-DZBmf8fe0zw5uiQjNKXw8g/vU2hjNDa87z/7XuhyXog="; - inherit sparseCheckout; + sparseCheckout = [ sparseCheckout ]; } + sparseCheckout; nativeBuildInputs = [ copyDesktopItems makeWrapper ];