summary refs log tree commit diff
diff options
context:
space:
mode:
authorVaci <vaci@vaci.org>2023-03-21 18:59:14 +0000
committerGitHub <noreply@github.com>2023-03-21 19:59:14 +0100
commite400f93529cb4ad6e095e42b17b303f5003f6f26 (patch)
tree818f7c7884a83c947d7c60e3b23c471e9d08e92a
parente00cacde284ed7e6705526d72aff671496b59911 (diff)
downloadnixpkgs-e400f93529cb4ad6e095e42b17b303f5003f6f26.tar
nixpkgs-e400f93529cb4ad6e095e42b17b303f5003f6f26.tar.gz
nixpkgs-e400f93529cb4ad6e095e42b17b303f5003f6f26.tar.bz2
nixpkgs-e400f93529cb4ad6e095e42b17b303f5003f6f26.tar.lz
nixpkgs-e400f93529cb4ad6e095e42b17b303f5003f6f26.tar.xz
nixpkgs-e400f93529cb4ad6e095e42b17b303f5003f6f26.tar.zst
nixpkgs-e400f93529cb4ad6e095e42b17b303f5003f6f26.zip
aeron: init at 1.40.0 (#191663)
Co-authored-by: Vaci Koblizek <vaci.koblizek@auguration.com>
-rw-r--r--maintainers/maintainer-list.nix6
-rw-r--r--pkgs/servers/aeron/default.nix179
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 187 insertions, 0 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 00207f49acc..ba4bdb2fc3b 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -15727,6 +15727,12 @@
     github = "deviant";
     githubId = 68829907;
   };
+  vaci = {
+    email = "vaci@vaci.org";
+    github = "vaci";
+    githubId = 6882568;
+    name = "Vaci";
+  };
   vaibhavsagar = {
     email = "vaibhavsagar@gmail.com";
     matrix = "@vaibhavsagar:matrix.org";
diff --git a/pkgs/servers/aeron/default.nix b/pkgs/servers/aeron/default.nix
new file mode 100644
index 00000000000..5ce49660f4a
--- /dev/null
+++ b/pkgs/servers/aeron/default.nix
@@ -0,0 +1,179 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  jdk11,
+  gradle,
+  makeWrapper,
+  perl,
+  writeText
+}:
+
+let
+  pname = "aeron";
+  version = "1.40.0";
+
+  src = fetchFromGitHub {
+    owner = "real-logic";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-4C5YofA/wxwa7bfc6IqsDrw8CLQWKoVBCIe8Ec7ifAg=";
+  };
+
+  deps = stdenv.mkDerivation {
+    name = "${pname}-deps";
+    inherit src;
+
+    nativeBuildInputs = [
+      gradle
+      jdk11
+      perl
+    ];
+
+    buildPhase = ''
+      export GRADLE_USER_HOME=$(mktemp -d);
+      gradle \
+          --console plain \
+          --no-daemon \
+          --system-prop org.gradle.java.home="${jdk11.home}" \
+          --exclude-task javadoc \
+        build
+    '';
+
+    # 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"
+    '';
+
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "sha256-1hvQyEiCMfIw6wv9GOEehX0wrtBnAilVuTGUWAGoH6k=";
+  };
+
+  # 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}' }
+        }
+      }
+    }
+  '';
+
+  # replace buildSrc
+  buildSrc = writeText "build.gradle" ''
+    repositories {
+      clear()
+      maven { url '${deps}' }
+    }
+
+    dependencies {
+      implementation 'org.asciidoctor:asciidoctorj:2.5.5'
+      implementation 'org.eclipse.jgit:org.eclipse.jgit:5.13.1.202206130422-r'
+    }
+  '';
+
+in stdenv.mkDerivation rec {
+
+  inherit pname src version;
+
+  buildInputs = [
+    jdk11
+  ];
+
+  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
+  '';
+
+  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"
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    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 "$2"
+    }
+
+    wrap "${pname}-media-driver" io.aeron.driver.MediaDriver
+    wrap "${pname}-stat" io.aeron.samples.AeronStat
+    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}-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
+  '';
+
+  meta = with lib; {
+    description = "Low-latency messaging library";
+    homepage = "https://aeron.io/";
+    license = licenses.asl20;
+    maintainers = [ maintainers.vaci ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5d70ab9851d..1d8a457f778 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -17208,6 +17208,8 @@ with pkgs;
 
   adtool = callPackage ../tools/admin/adtool { };
 
+  aeron = callPackage ../servers/aeron { };
+
   inherit (callPackage ../development/tools/alloy { })
     alloy5
     alloy6