Unverified Commit df37b17e authored by Peder Bergebakken Sundt's avatar Peder Bergebakken Sundt Committed by GitHub
Browse files

Merge pull request #222508 from vaci/vaci/aeron-maven

aeron: 1.40.0 -> 1.42.1
parents b8ca5f4f 67e15fa2
Loading
Loading
Loading
Loading
+128 −123
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  fetchMavenArtifact,
  jdk11,
  gradle,
  makeWrapper,
  perl,
  writeText
  makeWrapper
}:

let
  pname = "aeron";
  version = "1.42.1";
  groupId = "io.aeron";

  aeronAll_1_40_0 = fetchMavenArtifact {
    inherit groupId;
    version = "1.40.0";
    artifactId = "aeron-all";
    hash = "sha512-NyhYaQqOWcSBwzwpje6DMAp36CEgGSNXBSdaRrDyP+Fn2Z0nvh5o2czog6GKKtbjH9inYfyyF/21gehfgLF6qA==";
  };

  src = fetchFromGitHub {
    owner = "real-logic";
    repo = pname;
    rev = version;
    sha256 = "sha256-4C5YofA/wxwa7bfc6IqsDrw8CLQWKoVBCIe8Ec7ifAg=";
  aeronAgent_1_40_0 = fetchMavenArtifact {
    inherit groupId;
    version = "1.40.0";
    artifactId = "aeron-agent";
    hash = "sha512-3XZ6XxPwlNchMe4p4MuDNTWntGokFPnetN7AUMlhXzIgeXBExXvn+BdxI2crfq/xgVGrF/hjHD2shwu2NBa0Tg==";
  };

  deps = stdenv.mkDerivation {
    name = "${pname}-deps";
    inherit src;
  aeronArchive_1_40_0 = fetchMavenArtifact {
    inherit groupId;
    version = "1.40.0";
    artifactId = "aeron-archive";
    hash = "sha512-tmH+/020d1iNkGb8nvenDG9YU+H4PLuO2hSm2dULUIjSXX5AHLDkkrQ3uVQADV9koRNMtC4UXloqtqncay18kQ==";
  };

    nativeBuildInputs = [
      gradle
      jdk11
      perl
    ];
  aeronClient_1_40_0 = fetchMavenArtifact {
    inherit groupId;
    version = "1.40.0";
    artifactId = "aeron-client";
    hash = "sha512-y3/8Lu2EgMICRNPEWe0hrKpVhF35pDjCO6ip/Af9nPZ70ZRqGmlfEG7OzWVok11DuI8pYJ64jv6bEtUfSHTYXQ==";
  };

    buildPhase = ''
      export GRADLE_USER_HOME=$(mktemp -d);
      gradle \
          --console plain \
          --no-daemon \
          --system-prop org.gradle.java.home="${jdk11.home}" \
          --exclude-task javadoc \
        build
    '';
  aeronCluster_1_40_0 =fetchMavenArtifact {
    inherit groupId;
    version = "1.40.0";
    artifactId = "aeron-cluster";
    hash = "sha512-28m14Etjse3MVKBLvaQONujMfvdRQZG0ArezzVcjPEqVqTGd33mrqjPngALV8CG2nJTtcrJmsieRGLEosaXqTw==";
  };

    # Mavenize dependency paths
    # e.g. org.codehaus.groovy/groovy/2.4.0/{hash}/groovy-2.4.0.jar -> org/codehaus/groovy/groovy/2.4.0/groovy-2.4.0.jar
    installPhase = ''
      find "$GRADLE_USER_HOME/caches/modules-2" -type f -regex '.*\.\(jar\|pom\)' \
        | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
        | sh
      ln -s "$out/com/squareup/okio/okio/2.10.0/okio-jvm-2.10.0.jar" "$out/com/squareup/okio/okio/2.10.0/okio-2.10.0.jar"
    '';
  aeronDriver_1_40_0 = fetchMavenArtifact {
    inherit groupId;
    version = "1.40.0";
    artifactId = "aeron-driver";
    hash = "sha512-SRWHMHR6J1YEtCbSHqSLYm3vo8XgkVXGK3cFQbONT60TZvawP5UlZs7e3eFNpu3qQSA4prqEjjWO9Xc9M/sjKw==";
  };

    outputHashAlgo = "sha256";
    outputHashMode = "recursive";
    outputHash = "sha256-1hvQyEiCMfIw6wv9GOEehX0wrtBnAilVuTGUWAGoH6k=";
  aeronSamples_1_40_0 = fetchMavenArtifact {
    inherit groupId;
    version = "1.40.0";
    artifactId = "aeron-samples";
    hash = "sha512-vyAq4mfLDDyaVk7wcIpPvPcxSt92Ek8mxfuuZwaX+0Wu9oJCpwbnjvS9+bvzcE4qSGxzY6eJIIX6nMdw0LkACg==";
  };

  # Point to our local deps repo
  gradleInit = writeText "init.gradle" ''
    settingsEvaluated { settings ->
      settings.pluginManagement {
        repositories {
          clear()
          maven { url '${deps}' }
        }
      }
    }
    gradle.projectsLoaded {
      rootProject.allprojects {
        repositories {
          clear()
          maven { url '${deps}' }
        }
      }
    }
  '';
  aeronAll_1_42_1 = fetchMavenArtifact {
    inherit groupId;
    artifactId = "aeron-all";
    inherit version;
    hash = "sha512-pjX+JopK6onDwElMIroj+ZXrKwdPj5H2uPg08XgNlrK1rAkHo9MUT8weBGbuFVFDLeqOZrHj0bt1wJ9XgYY5aA==";
  };

  # replace buildSrc
  buildSrc = writeText "build.gradle" ''
    repositories {
      clear()
      maven { url '${deps}' }
    }
  aeronAgent_1_42_1 = fetchMavenArtifact {
    inherit groupId;
    version = "1.42.1";
    artifactId = "aeron-agent";
    hash = "sha512-3XZ6XvPwlNdiMe4p4MuDNTWntGokFPnetN7AUMlhXzIgeXBExXvn+BdxI2crfq/xgVGrF/hjHD2shwu2NBa0Tg==";
  };

    dependencies {
      implementation 'org.asciidoctor:asciidoctorj:2.5.5'
      implementation 'org.eclipse.jgit:org.eclipse.jgit:5.13.1.202206130422-r'
    }
  '';
  aeronArchive_1_42_1 = fetchMavenArtifact {
    inherit groupId;
    version = "1.42.1";
    artifactId = "aeron-archive";
    hash = "sha512-1DmeI9flgfzanbP4jSNUSAQAv2SGBvnlb3G4LbO1m+BN/gPn/nahvVHzotvGJjJA5b65DE1Sc5tqPnItRTK0zQ==";
  };

in stdenv.mkDerivation rec {
  aeronClient_1_42_1 = fetchMavenArtifact {
    inherit groupId;
    version = "1.42.1";
    artifactId = "aeron-client";
    hash = "sha512-td2k2WNpaD3+2PNvlCCJ8cZRr615sFjngiQDKzuY2e9/de1OUwvER3zzVAFOonEIV+s5EhwVeQvWq3Wj5Uhadg==";
  };

  inherit pname src version;
  aeronCluster_1_42_1 =fetchMavenArtifact {
    inherit groupId;
    version = "1.42.1";
    artifactId = "aeron-cluster";
    hash = "sha512-RiqGeY3pRqN6wWpeJqbeB1SCxrZWnQghrJlCGhew2M/GZAaWHkhhJs5haJqRvR5oOAbaI4RfIWvi5U7TiUo88g==";
  };

  aeronDriver_1_42_1 = fetchMavenArtifact {
    inherit groupId;
    version = "1.42.1";
    artifactId = "aeron-driver";
    hash = "sha512-fKEN5oQCxD1h3qPODKkqFwYbKW6L03RFHNylpsYaNlztNODlCJd0CS5dBR6K8rbOdb2dVIXK/dW/IPBvOi5q/g==";
  };
  aeronSamples_1_42_1 = fetchMavenArtifact {
    inherit groupId;
    version = "1.42.1";
    artifactId = "aeron-samples";
    hash = "sha512-4JnHn22vJf2lmOg6ev5PD+/YiaL3KgfuyWAK92djX3KBVXO7ERMY2kH79dveVCJG1rbekvE1j1pnjaAIxwJcqg==";
  };

  aeronAll = aeronAll_1_42_1;
  aeronArchive = aeronArchive_1_42_1;
  aeronClient = aeronClient_1_42_1;
  aeronCluster = aeronCluster_1_42_1;
  aeronDriver= aeronDriver_1_42_1;
  aeronSamples = aeronSamples_1_42_1;

in stdenv.mkDerivation {

  inherit pname version;

  buildInputs = [
    jdk11
    aeronAll
    aeronArchive
    aeronClient
    aeronCluster
    aeronDriver
    aeronSamples
  ];

  nativeBuildInputs = [
    gradle
    makeWrapper
  ];

  buildPhase = ''
    runHook preBuild

    export GRADLE_USER_HOME=$(mktemp -d)
    cp ${buildSrc} ./buildSrc/build.gradle

    gradle \
        --console plain \
        --exclude-task checkstyleMain \
        --exclude-task checkstyleGenerated \
        --exclude-task checkstyleGeneratedTest \
        --exclude-task checkstyleMain \
        --exclude-task checkstyleTest \
        --exclude-task javadoc \
        --exclude-task test \
        --init-script "${gradleInit}" \
        --no-daemon \
        --offline \
        --project-prop VERSION=${version} \
        --system-prop org.gradle.java.home="${jdk11.home}" \
      assemble

    runHook postBuild
  '';
  dontUnpack = true;
  dontConfigure = true;
  dontBuild = true;

  installPhase = ''
    runHook preInstall

    install -D --mode=0444 --target-directory="$out/share/java" \
      "./aeron-all/build/libs/aeron-all-${version}.jar" \
      "./aeron-agent/build/libs/aeron-agent-${version}.jar" \
      "./aeron-archive/build/libs/aeron-archive-${version}.jar" \
      "./aeron-client/build/libs/aeron-client-${version}.jar"
    mkdir --parents "$out/share/java"
    ln --symbolic "${aeronAll.jar}" "$out/share/java/${pname}-all.jar"
    ln --symbolic "${aeronArchive.jar}" "$out/share/java/${pname}-archive.jar"
    ln --symbolic "${aeronClient.jar}" "$out/share/java/${pname}-client.jar"
    ln --symbolic "${aeronCluster.jar}" "$out/share/java/${pname}-cluster.jar"
    ln --symbolic "${aeronDriver.jar}" "$out/share/java/${pname}-driver.jar"
    ln --symbolic "${aeronSamples.jar}" "$out/share/java/${pname}-samples.jar"

    runHook postInstall
  '';
@@ -141,7 +154,7 @@ in stdenv.mkDerivation rec {
    function wrap {
      makeWrapper "${jdk11}/bin/java" "$out/bin/$1" \
        --add-flags "--add-opens java.base/sun.nio.ch=ALL-UNNAMED" \
        --add-flags "--class-path $out/share/java/aeron-all-${version}.jar" \
        --add-flags "--class-path ${aeronAll.jar}" \
        --add-flags "$2"
    }

@@ -150,30 +163,22 @@ in stdenv.mkDerivation rec {
    wrap "${pname}-archiving-media-driver" io.aeron.archive.ArchivingMediaDriver
    wrap "${pname}-archive-tool" io.aeron.archive.ArchiveTool
    wrap "${pname}-logging-agent" io.aeron.agent.DynamicLoggingAgent
    wrap "${pname}-clustered-media-driver" io.aeron.cluster.ClusteredMediaDriver
    wrap "${pname}-cluster-tool" io.aeron.cluster.ClusterTool
  '';

  doCheck = true;

  checkPhase = ''
    runHook preCheck

    gradle \
        --console plain \
        --init-script "${gradleInit}" \
        --no-daemon \
        --offline \
        --project-prop VERSION=${version} \
        --system-prop org.gradle.java.home="${jdk11.home}" \
      test

    runHook postCheck
  '';
  passthru = {
    jar = aeronAll.jar;
  };

  meta = with lib; {
    description = "Low-latency messaging library";
    homepage = "https://aeron.io/";
    license = licenses.asl20;
    mainProgram = "${pname}-media-driver";
    maintainers = [ maintainers.vaci ];
    sourceProvenance = [
      sourceTypes.binaryBytecode
    ];
  };
}