nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 132 lines 3.5 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 gradle, 6 jre, 7 runtimeShell, 8 9 # Generating the usage instructions for script 10 htmlq, 11 html2text, 12 txt2man, 13}: 14stdenv.mkDerivation (finalAttrs: { 15 pname = "simple-binary-encoding"; 16 version = "1.37.0"; 17 18 src = fetchFromGitHub { 19 owner = "aeron-io"; 20 repo = "simple-binary-encoding"; 21 tag = finalAttrs.version; 22 hash = "sha256-vrXs0bZuIToBMDvWT6gp6xp8jcBUslF/6OvJWBnazu0="; 23 }; 24 25 nativeBuildInputs = [ 26 gradle 27 htmlq 28 html2text 29 txt2man 30 ]; 31 32 mitmCache = gradle.fetchDeps { 33 pname = "simple-binary-encoding"; 34 pkg = finalAttrs.finalPackage; 35 data = ./deps.json; 36 }; 37 38 gradleBuildTask = "build"; 39 40 doCheck = true; 41 gradleCheckTask = "runJavaExamples"; 42 43 outputs = [ 44 "out" 45 "benchmarks" 46 "samples" 47 "tool" 48 ]; 49 50 installPhase = '' 51 runHook preInstall 52 53 for output in $outputs; do 54 if [[ "$output" != "out" ]]; then 55 mkdir -p "''${!output}"/share/sbe 56 cp "sbe-$output"/build/libs/*.jar "''${!output}/share/sbe" 57 if [[ -d "sbe-$output"/build/docs/javadoc ]]; then 58 cp -r "sbe-$output"/build/docs/javadoc "''${!output}/share/javadoc" 59 fi 60 fi 61 if [[ "$output" == "tool" ]]; then 62 cp sbe-all/build/libs/*.jar "$tool/share/sbe" 63 fi 64 done 65 66 mkdir -p "$out/"{bin,share/doc,share/man} 67 68 # Generate the usage file from the javadoc 69 shopt -s globstar 70 cat "$tool/share/javadoc"/**/sbe/SbeTool.html \ 71 | htmlq '.class-description .block' \ 72 | html2text \ 73 | sed -e 's/[$] java/$ sbetool/' -e 's/ -jar sbe.jar//' -e 's/System Properties:/Available Options:/' \ 74 > "$out/share/doc/sbetool.txt" 75 76 echo >> "$out/share/doc/sbetool.txt" 77 echo "All other arguments will be interpreted by java(1)." >> "$out/share/doc/sbetool.txt" 78 79 # Generate a manpage 80 sed \ 81 -e '1i\NAME\nsbetool - ' \ 82 -e 's/Usage:/\nSYNOPSIS\n/' \ 83 -e 's/Available Options:/\nOPTIONS\n/' \ 84 < "$out/share/doc/sbetool.txt" \ 85 | txt2man \ 86 -P simple-binary-encoding \ 87 -t "sbetool" -s1 \ 88 -r "$pname $verison" \ 89 -v "Simple Binary Encoding" \ 90 > "$out/share/man/sbetool.1" 91 92 runtimeShell="${runtimeShell}" java="${lib.getExe jre}" \ 93 substituteAll ${./sbetool.sh} "$out/bin/sbetool" 94 95 chmod +x "$out/bin/sbetool" 96 97 runHook postInstall 98 ''; 99 100 doInstallCheck = true; 101 installCheckPhase = '' 102 # Check that we have some usage documentation 103 "$out"/bin/sbetool --help 2>&1 | grep -q Usage 104 105 # Check that the script can pass arguments to the underlying jar 106 tmpdir="$(mktemp -d)" 107 "$out"/bin/sbetool \ 108 sbe-tool/src/test/resources/example-schema.xml \ 109 -Dsbe.target.language=golang \ 110 -Dsbe.output.dir="$tmpdir" 111 find "$tmpdir/baseline" | grep -q '.*[.]go' 112 113 # Check that -- passes as files 114 tmpdir="$(mktemp -d)" 115 cp sbe-tool/src/test/resources/example-schema.xml -- -e.xml 116 "$out"/bin/sbetool \ 117 -Dsbe.target.language=golang \ 118 -Dsbe.output.dir="$tmpdir" \ 119 -- \ 120 -e.xml 121 find "$tmpdir/baseline" | grep -q '.*[.]go' 122 ''; 123 124 passthru.updateScript = ./update.sh; 125 126 meta = { 127 homepage = "https://github.com/aeron-io/simple-binary-encoding"; 128 license = lib.licenses.asl20; 129 maintainers = with lib.maintainers; [ balsoft ]; 130 description = "OSI layer 6 presentation for encoding and decoding binary application messages for low-latency financial applications"; 131 }; 132})