cassandra: refactor versioning

This change:
- refactors the packages so it is easier to create and update new versions of
cassandra.
- fixes a bug where Cassandra will not connect to another member unless
LD_PRELOADing libstdc++.so. Without that change, it generates a stack trace
and dies with exceptions regarding org.xerial.snappy.
- restricts platform to linux as procps is also linux only.

+61 -193
+3 -49
pkgs/servers/nosql/cassandra/1.2.nix
··· 1 - { stdenv 2 - , fetchurl 3 - , jre 4 - , python 5 - , makeWrapper 6 - , gawk 7 - , bash 8 - , getopt 9 - , procps 10 - }: 11 - 12 - let 1 + { callPackage, ... } @ args: 13 2 3 + callPackage ./generic.nix (args // { 14 4 version = "1.2.19"; 15 5 sha256 = "0zkq3ggpk8ra2siar43vmrn6lmvn902p1g2lrgb46ak1vii6w30w"; 16 - 17 - in 18 - 19 - stdenv.mkDerivation rec { 20 - name = "cassandra-${version}"; 21 - 22 - src = fetchurl { 23 - inherit sha256; 24 - url = "mirror://apache/cassandra/${version}/apache-${name}-bin.tar.gz"; 25 - }; 26 - 27 - nativeBuildInputs = [ makeWrapper ]; 28 - 29 - installPhase = '' 30 - mkdir $out 31 - mv * $out 32 - 33 - for cmd in cassandra nodetool sstablekeys sstableloader sstableupgrade 34 - do wrapProgram $out/bin/$cmd \ 35 - --set JAVA_HOME ${jre} \ 36 - --prefix PATH : ${bash}/bin \ 37 - --prefix PATH : ${getopt}/bin \ 38 - --prefix PATH : ${gawk}/bin \ 39 - --prefix PATH : ${procps}/bin 40 - done 41 - 42 - wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin 43 - ''; 44 - 45 - meta = with stdenv.lib; { 46 - homepage = http://cassandra.apache.org/; 47 - description = "A massively scalable open source NoSQL database"; 48 - platforms = platforms.all; 49 - license = licenses.asl20; 50 - maintainers = with maintainers; [ bcarrell ]; 51 - }; 52 - } 6 + })
+3 -49
pkgs/servers/nosql/cassandra/2.0.nix
··· 1 - { stdenv 2 - , fetchurl 3 - , jre 4 - , python 5 - , makeWrapper 6 - , gawk 7 - , bash 8 - , getopt 9 - , procps 10 - }: 11 - 12 - let 1 + { callPackage, ... } @ args: 13 2 3 + callPackage ./generic.nix (args // { 14 4 version = "2.0.16"; 15 5 sha256 = "1fpvgmakmxy1lnygccpc32q53pa36bwy0lqdvb6hsifkxymdw8y5"; 16 - 17 - in 18 - 19 - stdenv.mkDerivation rec { 20 - name = "cassandra-${version}"; 21 - 22 - src = fetchurl { 23 - inherit sha256; 24 - url = "mirror://apache/cassandra/${version}/apache-${name}-bin.tar.gz"; 25 - }; 26 - 27 - nativeBuildInputs = [ makeWrapper ]; 28 - 29 - installPhase = '' 30 - mkdir $out 31 - mv * $out 32 - 33 - for cmd in cassandra nodetool sstablekeys sstableloader sstableupgrade 34 - do wrapProgram $out/bin/$cmd \ 35 - --set JAVA_HOME ${jre} \ 36 - --prefix PATH : ${bash}/bin \ 37 - --prefix PATH : ${getopt}/bin \ 38 - --prefix PATH : ${gawk}/bin \ 39 - --prefix PATH : ${procps}/bin 40 - done 41 - 42 - wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin 43 - ''; 44 - 45 - meta = with stdenv.lib; { 46 - homepage = http://cassandra.apache.org/; 47 - description = "A massively scalable open source NoSQL database"; 48 - platforms = platforms.all; 49 - license = licenses.asl20; 50 - maintainers = with maintainers; [ nckx rushmorem ]; 51 - }; 52 - } 6 + })
+3 -49
pkgs/servers/nosql/cassandra/2.1.nix
··· 1 - { stdenv 2 - , fetchurl 3 - , jre 4 - , python 5 - , makeWrapper 6 - , gawk 7 - , bash 8 - , getopt 9 - , procps 10 - }: 11 - 12 - let 1 + { callPackage, ... } @ args: 13 2 3 + callPackage ./generic.nix (args // { 14 4 version = "2.1.15"; 15 5 sha256 = "1yc6r4gmxz9c4zghzn6bz5wswz7dz61w7p4x9s5gqnixfp2mlapp"; 16 - 17 - in 18 - 19 - stdenv.mkDerivation rec { 20 - name = "cassandra-${version}"; 21 - 22 - src = fetchurl { 23 - inherit sha256; 24 - url = "mirror://apache/cassandra/${version}/apache-${name}-bin.tar.gz"; 25 - }; 26 - 27 - nativeBuildInputs = [ makeWrapper ]; 28 - 29 - installPhase = '' 30 - mkdir $out 31 - mv * $out 32 - 33 - for cmd in cassandra nodetool sstablekeys sstableloader sstableupgrade 34 - do wrapProgram $out/bin/$cmd \ 35 - --set JAVA_HOME ${jre} \ 36 - --prefix PATH : ${bash}/bin \ 37 - --prefix PATH : ${getopt}/bin \ 38 - --prefix PATH : ${gawk}/bin \ 39 - --prefix PATH : ${procps}/bin 40 - done 41 - 42 - wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin 43 - ''; 44 - 45 - meta = with stdenv.lib; { 46 - homepage = http://cassandra.apache.org/; 47 - description = "A massively scalable open source NoSQL database"; 48 - platforms = platforms.all; 49 - license = licenses.asl20; 50 - maintainers = with maintainers; [ nckx rushmorem ]; 51 - }; 52 - } 6 + })
+3 -46
pkgs/servers/nosql/cassandra/3.0.nix
··· 1 - { stdenv 2 - , fetchurl 3 - , jre 4 - , python 5 - , makeWrapper 6 - , gawk 7 - , bash 8 - , getopt 9 - , procps 10 - }: 1 + { callPackage, ... } @ args: 11 2 12 - let 13 - 3 + callPackage ./generic.nix (args // { 14 4 version = "3.0.8"; 15 5 sha256 = "02chk8q3pbl0y6rijfk2gbd0p1ani8daypsx9m9ingqkdx8ajljq"; 16 - 17 - in 18 - 19 - stdenv.mkDerivation rec { 20 - name = "cassandra-${version}"; 21 - 22 - src = fetchurl { 23 - inherit sha256; 24 - url = "mirror://apache/cassandra/${version}/apache-${name}-bin.tar.gz"; 25 - }; 26 - 27 - nativeBuildInputs = [ makeWrapper ]; 28 - 29 - installPhase = '' 30 - mkdir $out 31 - mv * $out 32 - 33 - for cmd in cassandra nodetool sstableloader sstableupgrade 34 - do wrapProgram $out/bin/$cmd \ 35 - --set JAVA_HOME ${jre} \ 36 - --prefix PATH : ${stdenv.lib.makeBinPath [ bash getopt gawk procps ]} 37 - done 38 - 39 - wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin 40 - ''; 41 - 42 - meta = with stdenv.lib; { 43 - homepage = http://cassandra.apache.org/; 44 - description = "A massively scalable open source NoSQL database"; 45 - platforms = platforms.all; 46 - license = licenses.asl20; 47 - maintainers = with maintainers; [ nckx rushmorem ]; 48 - }; 49 - } 6 + })
+49
pkgs/servers/nosql/cassandra/generic.nix
··· 1 + { stdenv, fetchurl, python, makeWrapper, gawk, bash, getopt, procps 2 + , which, jre, version, sha256, ... 3 + }: 4 + 5 + let 6 + libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]; 7 + binPath = stdenv.lib.makeBinPath [ bash getopt gawk procps which jre ]; 8 + in 9 + 10 + stdenv.mkDerivation rec { 11 + name = "cassandra-${version}"; 12 + 13 + src = fetchurl { 14 + inherit sha256; 15 + url = "mirror://apache/cassandra/${version}/apache-${name}-bin.tar.gz"; 16 + }; 17 + 18 + nativeBuildInputs = [ makeWrapper ]; 19 + 20 + installPhase = '' 21 + mkdir $out 22 + mv * $out 23 + for cmd in bin/cassandra bin/nodetool bin/sstablekeys \ 24 + bin/sstableloader bin/sstableupgrade \ 25 + tools/bin/cassandra-stress tools/bin/cassandra-stressd \ 26 + tools/bin/sstablemetadata tools/bin/sstableofflinerelevel \ 27 + tools/bin/token-generator tools/bin/sstablelevelreset; do 28 + 29 + # check if file exists because some bin tools don't exist across all 30 + # cassandra versions 31 + if [ -f $out/$cmd ]; then 32 + wrapProgram $out/$cmd \ 33 + --suffix-each LD_LIBRARY_PATH : ${libPath} \ 34 + --prefix PATH : ${binPath} \ 35 + --set JAVA_HOME ${jre} 36 + fi 37 + done 38 + 39 + wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin 40 + ''; 41 + 42 + meta = with stdenv.lib; { 43 + homepage = http://cassandra.apache.org/; 44 + description = "A massively scalable open source NoSQL database"; 45 + platforms = platforms.linux; 46 + license = licenses.asl20; 47 + maintainers = with maintainers; [ nckx rushmorem cransom ]; 48 + }; 49 + }