diff --git a/pkgs/ninja/0001-spawn-sh-instead-of-bin-sh.patch b/pkgs-many/ninja/0001-spawn-sh-instead-of-bin-sh.patch similarity index 100% rename from pkgs/ninja/0001-spawn-sh-instead-of-bin-sh.patch rename to pkgs-many/ninja/0001-spawn-sh-instead-of-bin-sh.patch diff --git a/pkgs-many/ninja/default.nix b/pkgs-many/ninja/default.nix new file mode 100644 index 00000000..901076b5 --- /dev/null +++ b/pkgs-many/ninja/default.nix @@ -0,0 +1,9 @@ +{ mkManyVariants, callPackage }: + +mkManyVariants { + variants = ./variants.nix; + aliases = { }; + defaultSelector = (p: p.v1_13); + genericBuilder = ./generic.nix; + inherit callPackage; +} diff --git a/pkgs/ninja/default.nix b/pkgs-many/ninja/generic.nix similarity index 84% rename from pkgs/ninja/default.nix rename to pkgs-many/ninja/generic.nix index 8d13d2f6..5162a10c 100644 --- a/pkgs/ninja/default.nix +++ b/pkgs-many/ninja/generic.nix @@ -1,3 +1,14 @@ +# First parameter: variant args with helpers +{ + version, + src-hash, + buildDocs ? false, + packageOlder, + packageAtLeast, + ... +}@variantArgs: + +# Second parameter: package dependencies { lib, stdenv, @@ -11,31 +22,18 @@ python3, re2c, buildPackages, - buildDocs ? true, nix-update-script, - ninjaRelease ? "latest", -}: +}@args: stdenv.mkDerivation (finalAttrs: { pname = "ninja"; - version = - { - "1.11" = "1.11.1"; - latest = "1.13.1"; - } - .${ninjaRelease}; + inherit version; src = fetchFromGitHub { owner = "ninja-build"; repo = "ninja"; rev = "v${finalAttrs.version}"; - hash = - { - # TODO: Remove Ninja 1.11 as soon as possible. - "1.11" = "sha256-LvV/Fi2ARXBkfyA1paCRmLUwCh/rTyz+tGMg2/qEepI="; - latest = "sha256-GhAF5wUT19E02ZekW+ywsCMVGYrt56hES+MHCH4lNG4="; - } - .${ninjaRelease} or (throw "Unsupported Ninja release: ${ninjaRelease}"); + hash = src-hash; }; depsBuildBuild = [ buildPackages.stdenv.cc ]; @@ -56,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: { ./0001-spawn-sh-instead-of-bin-sh.patch ] # TODO: remove together with ninja 1.11 - ++ lib.optionals (lib.versionOlder finalAttrs.version "1.12") [ + ++ lib.optionals (packageOlder "1.12") [ (fetchpatch { name = "ninja1.11-python3.13-compat.patch"; url = "https://github.com/ninja-build/ninja/commit/9cf13cd1ecb7ae649394f4133d121a01e191560b.patch"; diff --git a/pkgs/ninja/setup-hook.sh b/pkgs-many/ninja/setup-hook.sh similarity index 100% rename from pkgs/ninja/setup-hook.sh rename to pkgs-many/ninja/setup-hook.sh diff --git a/pkgs-many/ninja/variants.nix b/pkgs-many/ninja/variants.nix new file mode 100644 index 00000000..1660c03b --- /dev/null +++ b/pkgs-many/ninja/variants.nix @@ -0,0 +1,17 @@ +{ + v1_11 = rec { + version = "1.11.1"; + src-hash = "sha256-LvV/Fi2ARXBkfyA1paCRmLUwCh/rTyz+tGMg2/qEepI="; + buildDocs = false; + }; + + v1_13 = rec { + version = "1.13.2"; + src-hash = "sha256-D9HsIjv8EJ1qAdXFAKy260K77cCvopgQ2Fx6uXpt6VI="; + buildDocs = false; + }; + + withDocs = { + buildDocs = true; + }; +}