Unverified Commit 9b579d93 authored by Morgan Jones's avatar Morgan Jones Committed by GitHub
Browse files

gradle{,_7,_8,_9}{,-unwrapped}: remove callPackage from all-packages.nix (#436358)

parents 17286d35 0996bd37
Loading
Loading
Loading
Loading
+113 −101
Original line number Diff line number Diff line
{
  callPackage,
  jdk17,
  jdk21,
  jdk23,
}:

rec {
  gen =
let
  wrapGradle =
    {
      lib,
      callPackage,
      mitm-cache,
      replaceVars,
      symlinkJoin,
      concatTextFile,
      makeSetupHook,
      nix-update-script,

      # This is the "current" version of gradle in nixpkgs.
      # Used to define the update script.
      gradle-unwrapped,

      runCommand,
    }:
    this-gradle-unwrapped:
    lib.makeOverridable (
      args:
      let
        gradle = this-gradle-unwrapped.override args;
      in
      symlinkJoin {
        pname = "gradle";
        inherit (gradle) version;

        paths = [
          (makeSetupHook { name = "gradle-setup-hook"; } (concatTextFile {
            name = "setup-hook.sh";
            files = [
              (mitm-cache.setupHook)
              (replaceVars ./setup-hook.sh {
                # jdk used for keytool
                inherit (gradle) jdk;
                init_script = "${./init-build.gradle}";
              })
            ];
          }))
          gradle
          mitm-cache
        ];

        passthru = {
          fetchDeps = callPackage ./fetch-deps.nix { inherit mitm-cache; };
          inherit (gradle) jdk;
          unwrapped = gradle;
          tests = {
            toolchains =
              let
                javaVersion = lib.getVersion jdk23;
                javaMajorVersion = lib.versions.major javaVersion;
              in
              runCommand "detects-toolchains-from-nix-env"
                {
                  # Use JDKs that are not the default for any of the gradle versions
                  nativeBuildInputs = [
                    (gradle.override {
                      javaToolchains = [
                        jdk23
                      ];
                    })
                  ];
                  src = ./tests/toolchains;
                }
                ''
                  cp -a $src/* .
                  substituteInPlace ./build.gradle --replace-fail '@JAVA_VERSION@' '${javaMajorVersion}'
                  env GRADLE_USER_HOME=$TMPDIR/gradle org.gradle.native.dir=$TMPDIR/native \
                  gradle run --no-daemon --quiet --console plain > $out
                  actual="$(<$out)"
                  if [[ "${javaVersion}" != "$actual"* ]]; then
                    echo "Error: Expected '${javaVersion}', to start with '$actual'" >&2
                    exit 1
                  fi
                '';
          }
          // gradle.tests;
        }
        // lib.optionalAttrs (this-gradle-unwrapped == gradle-unwrapped) {
          updateScript = nix-update-script {
            extraArgs = [
              "--url=https://github.com/gradle/gradle"
              # Gradle’s .0 releases are tagged as `vX.Y.0`, but the actual
              # release version omits the `.0`, so we’ll wanto to only capture
              # the version up but not including the the trailing `.0`.
              "--version-regex=^v(\\d+\\.\\d+(?:\\.[1-9]\\d?)?)(\\.0)?$"
            ];
          };
        };

        meta = gradle.meta // {
          # prefer normal gradle/mitm-cache over this wrapper, this wrapper only provides the setup hook
          # and passthru
          priority = (gradle.meta.priority or lib.meta.defaultPriority) + 1;
        };
      }
    ) { };

  gen =
    {
      version,
      hash,
@@ -34,12 +133,13 @@ rec {
      # Extra attributes to be merged into the resulting derivation's
      # meta attribute.
      meta ? { },
    }:
    }@genArgs:

    {
      lib,
      stdenv,
      fetchurl,
      callPackage,
      makeWrapper,
      unzip,
      ncurses5,
@@ -186,6 +286,7 @@ rec {
        };
      };
      passthru.jdk = defaultJava;
      passthru.wrapped = callPackage wrapGradle { } (gen' genArgs);

      meta =
        with lib;
@@ -219,119 +320,30 @@ rec {
        // meta;
    });

  # Calls the generated Gradle package with default arguments.
  gen' = args: callPackage (gen args) { };
in
rec {
  # NOTE: Default JDKs that are hardcoded below must be LTS versions
  # and respect the compatibility matrix at
  # https://docs.gradle.org/current/userguide/compatibility.html

  gradle_9 = gen {
  gradle_9 = gen' {
    version = "9.0.0";
    hash = "sha256-j609eClspRgRPz0pAWYXx/k2fcAF+TK9nZO/RbpGBys=";
    defaultJava = jdk21;
  };
  gradle_8 = gen {
  gradle_8 = gen' {
    version = "8.14.3";
    hash = "sha256-vXEQIhNJMGCVbsIp2Ua+7lcVjb2J0OYrkbyg+ixfNTE=";
    defaultJava = jdk21;
  };

  gradle_7 = gen {
  gradle_7 = gen' {
    version = "7.6.6";
    hash = "sha256-Zz2XdvMDvHBI/DMp0jLW6/EFGweJO9nRFhb62ahnO+A=";
    defaultJava = jdk17;
  };

  wrapGradle =
    {
      lib,
      callPackage,
      mitm-cache,
      replaceVars,
      symlinkJoin,
      concatTextFile,
      makeSetupHook,
      nix-update-script,
      runCommand,
    }:
    gradle-unwrapped: updateAttrPath:
    lib.makeOverridable (
      args:
      let
        gradle = gradle-unwrapped.override args;
      in
      symlinkJoin {
        pname = "gradle";
        inherit (gradle) version;

        paths = [
          (makeSetupHook { name = "gradle-setup-hook"; } (concatTextFile {
            name = "setup-hook.sh";
            files = [
              (mitm-cache.setupHook)
              (replaceVars ./setup-hook.sh {
                # jdk used for keytool
                inherit (gradle) jdk;
                init_script = "${./init-build.gradle}";
              })
            ];
          }))
          gradle
          mitm-cache
        ];

        passthru = {
          fetchDeps = callPackage ./fetch-deps.nix { inherit mitm-cache; };
          inherit (gradle) jdk;
          unwrapped = gradle;
          tests = {
            toolchains =
              let
                javaVersion = lib.getVersion jdk23;
                javaMajorVersion = lib.versions.major javaVersion;
              in
              runCommand "detects-toolchains-from-nix-env"
                {
                  # Use JDKs that are not the default for any of the gradle versions
                  nativeBuildInputs = [
                    (gradle.override {
                      javaToolchains = [
                        jdk23
                      ];
                    })
                  ];
                  src = ./tests/toolchains;
                }
                ''
                  cp -a $src/* .
                  substituteInPlace ./build.gradle --replace-fail '@JAVA_VERSION@' '${javaMajorVersion}'
                  env GRADLE_USER_HOME=$TMPDIR/gradle org.gradle.native.dir=$TMPDIR/native \
                  gradle run --no-daemon --quiet --console plain > $out
                  actual="$(<$out)"
                  if [[ "${javaVersion}" != "$actual"* ]]; then
                    echo "Error: Expected '${javaVersion}', to start with '$actual'" >&2
                    exit 1
                  fi
                '';
          }
          // gradle.tests;
        }
        // lib.optionalAttrs (updateAttrPath != null) {
          updateScript = nix-update-script {
            attrPath = updateAttrPath;
            extraArgs = [
              "--url=https://github.com/gradle/gradle"
              # Gradle’s .0 releases are tagged as `vX.Y.0`, but the actual
              # release version omits the `.0`, so we’ll wanto to only capture
              # the version up but not including the the trailing `.0`.
              "--version-regex=^v(\\d+\\.\\d+(?:\\.[1-9]\\d?)?)(\\.0)?$"
            ];
          };
        };

        meta = gradle.meta // {
          # prefer normal gradle/mitm-cache over this wrapper, this wrapper only provides the setup hook
          # and passthru
          priority = (gradle.meta.priority or lib.meta.defaultPriority) + 1;
        };
      }
    ) { };
  # Default version of Gradle in nixpkgs.
  gradle = gradle_8;
}
+10 −17
Original line number Diff line number Diff line
@@ -6904,25 +6904,18 @@ with pkgs;
  m4 = gnum4;

  gnumake = callPackage ../development/tools/build-managers/gnumake { };
  gradle-packages = import ../development/tools/build-managers/gradle {
    inherit
      jdk17
      jdk21
      jdk23
      ;
  };
  gradleGen = gradle-packages.gen;
  wrapGradle = callPackage gradle-packages.wrapGradle { };

  gradle_7-unwrapped = callPackage gradle-packages.gradle_7 { };
  gradle_8-unwrapped = callPackage gradle-packages.gradle_8 { };
  gradle_9-unwrapped = callPackage gradle-packages.gradle_9 { };
  gradle-unwrapped = gradle_8-unwrapped;
  gradle-packages = callPackage ../development/tools/build-managers/gradle { };

  gradle_7-unwrapped = gradle-packages.gradle_7;
  gradle_8-unwrapped = gradle-packages.gradle_8;
  gradle_9-unwrapped = gradle-packages.gradle_9;
  gradle-unwrapped = gradle-packages.gradle;

  gradle_7 = wrapGradle gradle_7-unwrapped null;
  gradle_8 = wrapGradle gradle_8-unwrapped null;
  gradle_9 = wrapGradle gradle_9-unwrapped null;
  gradle = wrapGradle gradle-unwrapped "gradle-unwrapped";
  gradle_7 = gradle-packages.gradle_7.wrapped;
  gradle_8 = gradle-packages.gradle_8.wrapped;
  gradle_9 = gradle-packages.gradle_9.wrapped;
  gradle = gradle-packages.gradle.wrapped;

  griffe = with python3Packages; toPythonApplication griffe;