git.iko.soy/typeable/nixpkgs
on master help sign in
Merge pull request #104889 from ztzg/x-16104-zookeeper-update

zookeeper: 3.4.12 -> 3.6.2 & assorted changes

commitc92afdced7be3a01728d5d256afb2544977d84a8 authorstigo <stig@stig.io> dateWed 9 Dec 2020, 21:33 (6 years ago) parent66f72a0a429bad
8 files changed+125−47
maintainers/maintainer-list.nix+6 nixos/doc/manual/release-notes/rl-2103.xml+7 nixos/modules/services/misc/zookeeper.nix+3−2 nixos/tests/zookeeper.nix+14−2 pkgs/development/libraries/zookeeper_mt/default.nix+43−8 pkgs/servers/zookeeper/default.nix+11−23 pkgs/tools/filesystems/zkfuse/default.nix+22−6 pkgs/top-level/perl-packages.nix+19−6
maintainers/maintainer-list.nix+6
@@ -9906,6 +9906,12 @@
99069906 githubId = 8100652;
99079907 name = "David Mell";
99089908 };
9909+ ztzg = {
9910+ email = "dd@crosstwine.com";
9911+ github = "ztzg";
9912+ githubId = 393108;
9913+ name = "Damien Diederen";
9914+ };
99099915 zx2c4 = {
99109916 email = "Jason@zx2c4.com";
99119917 github = "zx2c4";
nixos/doc/manual/release-notes/rl-2103.xml+7
@@ -370,6 +370,13 @@
370370 and rebooting.
371371 </para>
372372 </listitem>
373+ <listitem>
374+ <para>
375+ The <package>zookeeper</package> package does not provide
376+ <literal>zooInspector.sh</literal> anymore, as that "contrib" has
377+ been dropped from upstream releases.
378+ </para>
379+ </listitem>
373380 </itemizedlist>
374381 </section>
375382</section>
nixos/modules/services/misc/zookeeper.nix+3−2
@@ -76,6 +76,7 @@ in {
7676 default = ''
7777 zookeeper.root.logger=INFO, CONSOLE
7878 log4j.rootLogger=INFO, CONSOLE
79+ log4j.logger.org.apache.zookeeper.audit.Log4jAuditLogger=INFO, CONSOLE
7980 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
8081 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
8182 log4j.appender.CONSOLE.layout.ConversionPattern=[myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
@@ -128,11 +129,10 @@ in {
128129 description = "Zookeeper Daemon";
129130 wantedBy = [ "multi-user.target" ];
130131 after = [ "network.target" ];
131− environment = { ZOOCFGDIR = configDir; };
132132 serviceConfig = {
133133 ExecStart = ''
134134 ${pkgs.jre}/bin/java \
135− -cp "${cfg.package}/lib/*:${cfg.package}/${cfg.package.name}.jar:${configDir}" \
135+ -cp "${cfg.package}/lib/*:${configDir}" \
136136 ${escapeShellArgs cfg.extraCmdLineOptions} \
137137 -Dzookeeper.datadir.autocreate=false \
138138 ${optionalString cfg.preferIPv4 "-Djava.net.preferIPv4Stack=true"} \
@@ -143,6 +143,7 @@ in {
143143 };
144144 preStart = ''
145145 echo "${toString cfg.id}" > ${cfg.dataDir}/myid
146+ mkdir -p ${cfg.dataDir}/version-2
146147 '';
147148 };
148149
nixos/tests/zookeeper.nix+14−2
@@ -1,7 +1,12 @@
1−import ./make-test-python.nix ({ pkgs, ...} : {
1+import ./make-test-python.nix ({ pkgs, ...} :
2+let
3+
4+ perlEnv = pkgs.perl.withPackages (p: [p.NetZooKeeper]);
5+
6+in {
27 name = "zookeeper";
38 meta = with pkgs.stdenv.lib.maintainers; {
4− maintainers = [ nequissimus ];
9+ maintainers = [ nequissimus ztzg ];
510 };
611
712 nodes = {
@@ -30,5 +35,12 @@ import ./make-test-python.nix ({ pkgs, ...} : {
3035 server.wait_until_succeeds(
3136 "${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 get /foo | grep hello"
3237 )
38+
39+ server.wait_until_succeeds(
40+ "${perlEnv}/bin/perl -E 'use Net::ZooKeeper qw(:acls); $z=Net::ZooKeeper->new(q(localhost:2181)); $z->create(qw(/perl foo acl), ZOO_OPEN_ACL_UNSAFE) || die $z->get_error()'"
41+ )
42+ server.wait_until_succeeds(
43+ "${perlEnv}/bin/perl -E 'use Net::ZooKeeper qw(:acls); $z=Net::ZooKeeper->new(q(localhost:2181)); $z->get(qw(/perl)) eq qw(foo) || die $z->get_error()'"
44+ )
3345 '';
3446})
pkgs/development/libraries/zookeeper_mt/default.nix+43−8
@@ -1,21 +1,56 @@
1−{ stdenv, zookeeper, bash }:
1+{ stdenv
2+, fetchurl
3+, autoreconfHook
4+, jre
5+, openssl
6+, pkg-config
7+# We depend on ZooKeeper for the Jute compiler.
8+, zookeeper
9+}:
210
311stdenv.mkDerivation rec {
4− name = "zookeeper_mt-${stdenv.lib.getVersion zookeeper}";
12+ pname = "zookeeper_mt";
13+ version = stdenv.lib.getVersion zookeeper;
514
6− src = zookeeper.src;
15+ src = fetchurl {
16+ url = "mirror://apache/zookeeper/${zookeeper.pname}-${version}/apache-${zookeeper.pname}-${version}.tar.gz";
17+ sha512 = "16994067d460a1b6af6a71f3458c64ee32629e876a1ff6646d57be62f1a5adab57462af84074ecaded4186dd3fde035ee24cd9d578b8e5044073eb05f4ab9c3e";
18+ };
19+
20+ sourceRoot = "apache-${zookeeper.pname}-${version}/zookeeper-client/zookeeper-client-c";
21+
22+ nativeBuildInputs = [
23+ autoreconfHook
24+ jre
25+ ];
726
8− setSourceRoot = "export sourceRoot=${zookeeper.name}/src/c";
27+ buildInputs = [
28+ openssl
29+ pkg-config
30+ zookeeper
31+ ];
932
10− NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (!stdenv.isDarwin) "-Wno-error=format-overflow -Wno-error=stringop-truncation";
33+ # Generate the C marshallers/unmarshallers for the Jute-encoded
34+ # definitions.
35+ preConfigure = ''
36+ mkdir generated
37+ cd generated
38+ java -cp ${zookeeper}/lib/${zookeeper.pname}-jute-${version}.jar \
39+ org.apache.jute.compiler.generated.Rcc -l c \
40+ ../../../zookeeper-jute/src/main/resources/zookeeper.jute
41+ cd ..
42+ '';
1143
12− buildInputs = [ zookeeper bash ];
44+ configureFlags = [
45+ # We're not going to start test servers in the sandbox anyway.
46+ "--without-cppunit"
47+ ];
1348
1449 meta = with stdenv.lib; {
15− homepage = "http://zookeeper.apache.org";
50+ homepage = "https://zookeeper.apache.org";
1651 description = "Apache Zookeeper";
1752 license = licenses.asl20;
18− maintainers = [ maintainers.commandodev ];
53+ maintainers = with maintainers; [ commandodev ztzg ];
1954 platforms = platforms.unix;
2055 };
2156}
pkgs/servers/zookeeper/default.nix+11−23
@@ -2,11 +2,11 @@
22
33stdenv.mkDerivation rec {
44 pname = "zookeeper";
5− version = "3.4.13";
5+ version = "3.6.2";
66
77 src = fetchurl {
8− url = "mirror://apache/zookeeper/${pname}-${version}/${pname}-${version}.tar.gz";
9− sha256 = "0karf13zks3ba2rdmma2lyabvmasc04cjmgxp227f0nj8677kvbw";
8+ url = "mirror://apache/zookeeper/${pname}-${version}/apache-${pname}-${version}-bin.tar.gz";
9+ sha512 = "caff5111bb6876b7124760bc006e6fa2523efa54b99321a3c9cd8192ea0d5596abc7d70a054b1aac9b20a411407dae7611c7aba870c23bff28eb1643ba499199";
1010 };
1111
1212 buildInputs = [ makeWrapper jre ];
@@ -15,40 +15,28 @@ stdenv.mkDerivation rec {
1515
1616 installPhase = ''
1717 mkdir -p $out
18− cp -R conf docs lib ${pname}-${version}.jar $out
18+ cp -R conf docs lib $out
19+ # Without this, zkCli.sh tries creating a log file in the Nix store.
20+ substituteInPlace $out/conf/log4j.properties \
21+ --replace 'INFO, RFAAUDIT' 'INFO, CONSOLE'
1922 mkdir -p $out/bin
20− cp -R bin/{zkCli,zkCleanup,zkEnv,zkServer}.sh $out/bin
23+ cp -R bin/{zkCli,zkCleanup,zkEnv,zkServer,zkSnapShotToolkit,zkTxnLogToolkit}.sh $out/bin
2124 patchShebangs $out/bin
2225 substituteInPlace $out/bin/zkServer.sh \
2326 --replace /bin/echo ${coreutils}/bin/echo
24− for i in $out/bin/{zkCli,zkCleanup,zkServer}.sh; do
27+ for i in $out/bin/{zkCli,zkCleanup,zkServer,zkSnapShotToolkit,zkTxnLogToolkit}.sh; do
2528 wrapProgram $i \
2629 --set JAVA_HOME "${jre}" \
2730 --prefix PATH : "${bash}/bin"
2831 done
2932 chmod -x $out/bin/zkEnv.sh
30−
31− mkdir -p $out/share/zooinspector
32− cp -r contrib/ZooInspector/{${pname}-${version}-ZooInspector.jar,icons,lib,config} $out/share/zooinspector
33−
34− classpath="$out/${pname}-${version}.jar:$out/share/zooinspector/${pname}-${version}-ZooInspector.jar"
35− for jar in $out/lib/*.jar $out/share/zooinspector/lib/*.jar; do
36− classpath="$classpath:$jar"
37− done
38−
39− cat << EOF > $out/bin/zooInspector.sh
40− #!${runtimeShell}
41− cd $out/share/zooinspector
42− exec ${jre}/bin/java -cp $classpath org.apache.zookeeper.inspector.ZooInspector
43− EOF
44− chmod +x $out/bin/zooInspector.sh
4533 '';
4634
4735 meta = with stdenv.lib; {
48− homepage = "http://zookeeper.apache.org";
36+ homepage = "https://zookeeper.apache.org";
4937 description = "Apache Zookeeper";
5038 license = licenses.asl20;
51− maintainers = with maintainers; [ nathan-gs cstrahan pradeepchhetri ];
39+ maintainers = with maintainers; [ nathan-gs cstrahan pradeepchhetri ztzg ];
5240 platforms = platforms.unix;
5341 };
5442}
pkgs/tools/filesystems/zkfuse/default.nix+22−6
@@ -1,14 +1,30 @@
1−{ stdenv, lib, zookeeper, zookeeper_mt, fuse, autoreconfHook, log4cxx, boost }:
1+{ stdenv
2+, lib
3+, autoreconfHook
4+, gnused
5+, boost
6+, fuse
7+, log4cxx
8+, zookeeper
9+, zookeeper_mt
10+}:
211
3−stdenv.mkDerivation {
12+stdenv.mkDerivation rec {
413 pname = "zkfuse";
5− inherit (zookeeper) version src;
14+ inherit (zookeeper_mt) version src;
615
7− sourceRoot = "${zookeeper.name}/src/contrib/zkfuse";
16+ sourceRoot = "apache-${zookeeper.pname}-${version}/zookeeper-contrib/zookeeper-contrib-zkfuse";
817
9− nativeBuildInputs = [ autoreconfHook ];
18+ nativeBuildInputs = [ autoreconfHook gnused ];
1019 buildInputs = [ zookeeper_mt log4cxx boost fuse ];
1120
21+ postPatch = ''
22+ # Make the async API accessible, and use the proper include path.
23+ sed -i src/zkadapter.h \
24+ -e '/"zookeeper\.h"/i#define THREADED' \
25+ -e 's,"zookeeper\.h",<zookeeper/zookeeper.h>,'
26+ '';
27+
1228 installPhase = ''
1329 mkdir -p $out/bin
1430 cp -v src/zkfuse $out/bin
@@ -16,7 +32,7 @@ stdenv.mkDerivation {
1632
1733 meta = with lib; {
1834 platforms = platforms.linux;
19− maintainers = with maintainers; [ cstrahan ];
35+ maintainers = with maintainers; [ cstrahan ztzg ];
2036 license = licenses.asl20;
2137 };
2238}
pkgs/top-level/perl-packages.nix+19−6
@@ -15752,18 +15752,31 @@ let
1575215752
1575315753 NetZooKeeper = buildPerlPackage {
1575415754 pname = "Net-ZooKeeper";
15755− version = "0.41";
15756− src = fetchurl {
15757− url = "mirror://cpan/authors/id/M/MA/MAF/Net-ZooKeeper-0.41.tar.gz";
15758− sha256 = "91c177f30f82302eaf3173356eef05c21bc82163df752acb469177bd14a72db9";
15755+ version = "0.42pre";
15756+ src = fetchFromGitHub {
15757+ owner = "mark-5";
15758+ repo = "p5-net-zookeeper";
15759+ rev = "66e1a360aff9c39af728c36092b540a4b6045f70";
15760+ sha256 = "0xl8lcv9gfv0nn8vrrxa4az359whqdhmzw4r51nn3add8pn3s9ip";
1575915761 };
1576015762 buildInputs = [ pkgs.zookeeper_mt ];
15763+ nativeBuildInputs = [ pkgs.gnused ];
1576115764 # fix "error: format not a string literal and no format arguments [-Werror=format-security]"
1576215765 hardeningDisable = [ "format" ];
15763− NIX_CFLAGS_COMPILE = "-I${pkgs.zookeeper_mt}/include";
15766+ # Make the async API accessible
15767+ NIX_CFLAGS_COMPILE = "-DTHREADED";
1576415768 NIX_CFLAGS_LINK = "-L${pkgs.zookeeper_mt.out}/lib -lzookeeper_mt";
15769+ # Most tests are skipped as no server is available in the sandbox.
15770+ # `t/35_log.t` seems to suffer from a race condition; remove it. See
15771+ # https://github.com/NixOS/nixpkgs/pull/104889#issuecomment-737144513
15772+ preCheck = ''
15773+ rm t/35_log.t
15774+ '' + stdenv.lib.optionalString stdenv.isDarwin ''
15775+ rm t/30_connect.t
15776+ rm t/45_class.t
15777+ '';
1576515778 meta = {
15766− maintainers = [ maintainers.limeytexan ];
15779+ maintainers = with maintainers; [ limeytexan ztzg ];
1576715780 homepage = "https://github.com/mark-5/p5-net-zookeeper";
1576815781 license = stdenv.lib.licenses.asl20;
1576915782 };