diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/nosql/cassandra')
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/3.0.json | 4 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/3.0.nix | 7 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/3.11.json | 4 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/3.11.nix | 7 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/4.json | 4 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/4.nix | 8 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/generic.nix | 127 | ||||
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/update-script.nix | 55 |
8 files changed, 216 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.0.json b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.json new file mode 100644 index 000000000000..968edce704b3 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.json @@ -0,0 +1,4 @@ +{ + "version": "3.0.28", + "sha256": "1x06sxzppipi0jg0qvk26iicqwf28y0aik7c732r0yd1vz4vdwq6" +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.0.nix b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.nix new file mode 100644 index 000000000000..ce2da3391be1 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.nix @@ -0,0 +1,7 @@ +{ callPackage, lib, ... } @ args: +callPackage ./generic.nix ( + args + // lib.importJSON ./3.0.json + // { + generation = "3_0"; + }) diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.11.json b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.json new file mode 100644 index 000000000000..e47f78b7baf8 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.json @@ -0,0 +1,4 @@ +{ + "version": "3.11.12", + "sha256": "16j58l7r47qrfh8q7fm92y935ykgvnbj3qn984c42qda15x92hkw" +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.11.nix b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.nix new file mode 100644 index 000000000000..695478f05030 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.nix @@ -0,0 +1,7 @@ +{ callPackage, lib, ... } @ args: +callPackage ./generic.nix ( + args + // lib.importJSON ./3.11.json + // { + generation = "3_11"; + }) diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/4.json b/nixpkgs/pkgs/servers/nosql/cassandra/4.json new file mode 100644 index 000000000000..c200c867bfe2 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/4.json @@ -0,0 +1,4 @@ +{ + "version": "4.1.2", + "sha256": "003p0985fr3l09qpw44rhys3dp9zl2bl46vasix18p2cxq0j8sw5" +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/4.nix b/nixpkgs/pkgs/servers/nosql/cassandra/4.nix new file mode 100644 index 000000000000..5674d4866475 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/4.nix @@ -0,0 +1,8 @@ +# GENERATED BY update.sh +{ callPackage, lib, ... } @ args: +callPackage ./generic.nix ( + args + // lib.importJSON ./4.json + // { + generation = "4"; + }) diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/generic.nix b/nixpkgs/pkgs/servers/nosql/cassandra/generic.nix new file mode 100644 index 000000000000..45bea6fed4c5 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/generic.nix @@ -0,0 +1,127 @@ +{ lib +, stdenv +, fetchurl +, python +, makeWrapper +, gawk +, bash +, getopt +, procps +, which +, jre +, nixosTests + # generation is the attribute version suffix such as 3_11 in pkgs.cassandra_3_11 +, generation +, version +, sha256 +, extraMeta ? { } +, callPackage +, ... +}: + +let + libPath = lib.makeLibraryPath [ stdenv.cc.cc ]; + binPath = lib.makeBinPath [ + bash + getopt + gawk + which + jre + procps + ]; +in + +stdenv.mkDerivation rec { + pname = "cassandra"; + inherit version; + + src = fetchurl { + inherit sha256; + url = "mirror://apache/cassandra/${version}/apache-cassandra-${version}-bin.tar.gz"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + runHook preInstall + + mkdir $out + mv * $out + + # Clean up documentation. + mkdir -p $out/share/doc/${pname}-${version} + mv $out/CHANGES.txt \ + $out/LICENSE.txt \ + $out/NEWS.txt \ + $out/NOTICE.txt \ + $out/share/doc/${pname}-${version} + + if [[ -d $out/doc ]]; then + mv "$out/doc/"* $out/share/doc/${pname}-${version} + rmdir $out/doc + fi + + + for cmd in bin/cassandra \ + bin/nodetool \ + bin/sstablekeys \ + bin/sstableloader \ + bin/sstablescrub \ + bin/sstableupgrade \ + bin/sstableutil \ + bin/sstableverify; do + # Check if file exists because some don't exist across all versions + if [ -f $out/$cmd ]; then + wrapProgram $out/bin/$(basename "$cmd") \ + --suffix-each LD_LIBRARY_PATH : ${libPath} \ + --prefix PATH : ${binPath} \ + --set JAVA_HOME ${jre} + fi + done + + for cmd in tools/bin/cassandra-stress \ + tools/bin/cassandra-stressd \ + tools/bin/sstabledump \ + tools/bin/sstableexpiredblockers \ + tools/bin/sstablelevelreset \ + tools/bin/sstablemetadata \ + tools/bin/sstableofflinerelevel \ + tools/bin/sstablerepairedset \ + tools/bin/sstablesplit \ + tools/bin/token-generator; do + # Check if file exists because some don't exist across all versions + if [ -f $out/$cmd ]; then + makeWrapper $out/$cmd $out/bin/$(basename "$cmd") \ + --suffix-each LD_LIBRARY_PATH : ${libPath} \ + --prefix PATH : ${binPath} \ + --set JAVA_HOME ${jre} + fi + done + + wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin + + runHook postInstall + ''; + + passthru = { + tests = + let + test = nixosTests."cassandra_${generation}"; + in + { + nixos = + assert test.testPackage.version == version; + test; + }; + + updateScript = callPackage ./update-script.nix { inherit generation; }; + }; + + meta = with lib; { + homepage = "https://cassandra.apache.org/"; + description = "A massively scalable open source NoSQL database"; + platforms = platforms.unix; + license = licenses.asl20; + maintainers = [ maintainers.roberth ]; + } // extraMeta; +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/update-script.nix b/nixpkgs/pkgs/servers/nosql/cassandra/update-script.nix new file mode 100644 index 000000000000..b407b704fdfd --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/update-script.nix @@ -0,0 +1,55 @@ +{ git +, lib +, runtimeShell +, writeScript +, generation +, gnupg +}: +let + inherit (lib) makeBinPath; + filename = lib.strings.replaceStrings [ "_" ] [ "." ] generation + ".json"; + regex = lib.strings.replaceStrings [ "_" ] [ "[.]" ] generation; +in +writeScript "update-cassandra_${generation}" '' + #!${runtimeShell} + set -eux -o pipefail + test -d pkgs -a -d nixos -a -d lib || { + echo >&2 "$0 expects to be run in a nixpkgs checkout" + exit 1 + } + cd pkgs/servers/nosql/cassandra + PATH="${makeBinPath [git gnupg]}:$PATH" + + tmp="$(mktemp -d)" + cleanup() { + rm -rf "$tmp" + } + trap cleanup EXIT + + # get numeric-only versions, sort them latest first + git ls-remote --tags https://github.com/apache/cassandra \ + | awk '{ if (match($0, /refs.tags.cassandra-([0-9.]*)$/, m)) print m[1] }' \ + | sort -V \ + | tac >$tmp/versions + + version="$(grep -E '^${regex}' <$tmp/versions | head -n 1)" + path="cassandra/$version/apache-cassandra-$version-bin.tar.gz" + curl "https://downloads.apache.org/$path" >$tmp/src.tar.gz + curl "https://downloads.apache.org/$path.asc" >$tmp/src.tar.gz.asc + + # See https://downloads.apache.org/cassandra/KEYS + # Make sure that any new key corresponds to someone on the project + for key in A4C465FEA0C552561A392A61E91335D77E3E87CB; do + gpg --trustdb-name "$tmp/trust.db" --batch --recv-keys "$key" + echo "$key:5:" | gpg --trustdb-name "$tmp/trust.db" --batch --import-ownertrust + done + gpg --trustdb-name "$tmp/trust.db" --batch --verify --trust-model direct $tmp/src.tar.gz.asc $tmp/src.tar.gz + + hash="$(nix-prefetch-url "file://$tmp/src.tar.gz")" + cat >${filename} <<EOF + { + "version": "$version", + "sha256": "$hash" + } + EOF +'' |