diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/nosql/cassandra/generic.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/nosql/cassandra/generic.nix | 127 |
1 files changed, 127 insertions, 0 deletions
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; +} |