Skip to content

Commit

Permalink
aeron: init at 1.40.0 (#191663)
Browse files Browse the repository at this point in the history
Co-authored-by: Vaci Koblizek <[email protected]>
  • Loading branch information
vaci and Vaci Koblizek authored Mar 21, 2023
1 parent e00cacd commit e400f93
Showing 3 changed files with 187 additions and 0 deletions.
6 changes: 6 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
@@ -15727,6 +15727,12 @@
github = "deviant";
githubId = 68829907;
};
vaci = {
email = "[email protected]";
github = "vaci";
githubId = 6882568;
name = "Vaci";
};
vaibhavsagar = {
email = "[email protected]";
matrix = "@vaibhavsagar:matrix.org";
179 changes: 179 additions & 0 deletions pkgs/servers/aeron/default.nix
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
@@ -17208,6 +17208,8 @@ with pkgs;

adtool = callPackage ../tools/admin/adtool { };

aeron = callPackage ../servers/aeron { };

inherit (callPackage ../development/tools/alloy { })
alloy5
alloy6

0 comments on commit e400f93

Please sign in to comment.