Unverified Commit 6f6b0c1d authored by Weijia Wang's avatar Weijia Wang Committed by GitHub
Browse files

lemminx: Update 0.27.0 -> 0.29.0 & Minor Refactor (#368156)

parents c461813c adecd6b2
Loading
Loading
Loading
Loading
+53 −40
Original line number Diff line number Diff line
@@ -5,8 +5,12 @@
  jdk_headless,
  jre_minimal,
  maven,
  writeScript,
  lemminx,
  writeShellApplication,
  curl,
  pcre,
  common-updater-scripts,
  jq,
  gnused,
}:

let
@@ -21,13 +25,13 @@ let
in
maven.buildMavenPackage rec {
  pname = "lemminx";
  version = "0.27.0";
  version = "0.29.0";

  src = fetchFromGitHub {
    owner = "eclipse";
    repo = "lemminx";
    rev = version;
    hash = "sha256-VWYTkYlPziNRyxHdvIWVuDlABpKdzhC/F6BUBj/opks=";
    hash = "sha256-joeaN0Q/XxEWa7UX/LVSWIAb8GGTfVUE+NudedbBLBI=";
    # Lemminx reads this git information at runtime from a git.properties
    # file on the classpath
    leaveDotGit = true;
@@ -42,21 +46,11 @@ maven.buildMavenPackage rec {
    '';
  };

  manualMvnArtifacts = [
    "org.apache.maven.surefire:surefire-junit-platform:3.1.2"
    "org.junit.platform:junit-platform-launcher:1.10.0"
  ];

  mvnJdk = jdk_headless;
  mvnHash = "sha256-jIvYUATcNUZZmZcXbUMqyHGX4CYiXqL0jkji+zrCYJY=";

  buildOffline = true;
  mvnHash = "sha256-7RLZSlmXnjl9vwvCf/Z+mc2906JtuUbjjkRGVMC1En8=";

  # disable gitcommitid plugin which needs a .git folder which we
  # don't have
  mvnDepsParameters = "-Dmaven.gitcommitid.skip=true";

  # disable failing tests which either need internet access or are flaky
  # Disable gitcommitid plugin which needs a .git folder which we don't have.
  # Disable failing tests which either need internet access or are flaky.
  mvnParameters = lib.escapeShellArgs [
    "-Dmaven.gitcommitid.skip=true"
    "-Dtest=!XMLValidationCommandTest,
@@ -70,15 +64,16 @@ maven.buildMavenPackage rec {
    !MissingChildElementCodeActionTest,
    !XSDValidationExternalResourcesTest,
    !DocumentLifecycleParticipantTest,
    !DTDValidationExternalResourcesTest"
    !DTDValidationExternalResourcesTest,
    !DTDHoverExtensionsTest,
    !CacheResourcesManagerTest"
  ];

  installPhase = ''
    runHook preInstall

    mkdir -p $out/bin $out/share
    install -Dm644 org.eclipse.lemminx/target/org.eclipse.lemminx-uber.jar \
      $out/share
    install -Dm644 org.eclipse.lemminx/target/org.eclipse.lemminx-uber.jar $out/share

    makeWrapper ${jre}/bin/java $out/bin/lemminx \
      --add-flags "-jar $out/share/org.eclipse.lemminx-uber.jar"
@@ -88,26 +83,44 @@ maven.buildMavenPackage rec {

  nativeBuildInputs = [ makeWrapper ];

  passthru.updateScript = writeScript "update-lemminx" ''
    #!/usr/bin/env nix-shell
    #!nix-shell -i bash -p curl pcre common-updater-scripts jq gnused
    set -eu -o pipefail

    LATEST_TAG=$(curl https://api.github.com/repos/eclipse/lemminx/tags | \
  passthru = {
    updateScript =
      let
        pkgFile = builtins.toString ./package.nix;
      in
      lib.getExe (writeShellApplication {
        name = "update-${pname}";
        runtimeInputs = [
          curl
          pcre
          common-updater-scripts
          jq
          gnused
        ];
        text = ''
          if [ -z "''${GITHUB_TOKEN:-}" ]; then
              echo "no GITHUB_TOKEN provided - you could meet API request limiting" >&2
          fi

          LATEST_TAG=$(curl -H "Accept: application/vnd.github+json" \
            ''${GITHUB_TOKEN:+-H "Authorization: bearer $GITHUB_TOKEN"} \
            -Lsf https://api.github.com/repos/${src.owner}/${src.repo}/tags | \
            jq -r '[.[] | select(.name | test("^[0-9]"))] | sort_by(.name | split(".") |
            map(tonumber)) | reverse | .[0].name')
    update-source-version lemminx "$LATEST_TAG"
    sed -i '0,/mvnHash *= *"[^"]*"/{s/mvnHash = "[^"]*"/mvnHash = ""/}' ${lemminx}
          update-source-version ${pname} "$LATEST_TAG"
          sed -i '0,/mvnHash *= *"[^"]*"/{s/mvnHash = "[^"]*"/mvnHash = ""/}' ${pkgFile}

          echo -e "\nFetching all mvn dependencies to calculate the mvnHash. This may take a while ..."
    nix-build -A lemminx.fetchedMavenDeps 2> lemminx-stderr.log || true
          nix-build -A ${pname}.fetchedMavenDeps 2> ${pname}-stderr.log || true

    NEW_MVN_HASH=$(cat lemminx-stderr.log | grep "got:" | awk '{print ''$2}')
    rm lemminx-stderr.log
          NEW_MVN_HASH=$(grep "got:" ${pname}-stderr.log | awk '{print ''$2}')
          rm ${pname}-stderr.log
          # escaping double quotes looks ugly but is needed for variable substitution
          # use # instead of / as separator because the sha256 might contain the / character
    sed -i "0,/mvnHash *= *\"[^\"]*\"/{s#mvnHash = \"[^\"]*\"#mvnHash = \"$NEW_MVN_HASH\"#}" ${lemminx}
          sed -i "0,/mvnHash *= *\"[^\"]*\"/{s#mvnHash = \"[^\"]*\"#mvnHash = \"$NEW_MVN_HASH\"#}" ${pkgFile}
        '';
      });
  };

  meta = with lib; {
    description = "XML Language Server";