diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 31093cc4d73b..d73f02fdc8e0 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -9906,6 +9906,12 @@ githubId = 8100652; name = "David Mell"; }; + ztzg = { + email = "dd@crosstwine.com"; + github = "ztzg"; + githubId = 393108; + name = "Damien Diederen"; + }; zx2c4 = { email = "Jason@zx2c4.com"; github = "zx2c4"; diff --git a/nixos/doc/manual/release-notes/rl-2103.xml b/nixos/doc/manual/release-notes/rl-2103.xml index ffb00aa0362e..f760398e2625 100644 --- a/nixos/doc/manual/release-notes/rl-2103.xml +++ b/nixos/doc/manual/release-notes/rl-2103.xml @@ -370,6 +370,13 @@ and rebooting. + + + The zookeeper package does not provide + zooInspector.sh anymore, as that "contrib" has + been dropped from upstream releases. + + diff --git a/nixos/modules/services/misc/zookeeper.nix b/nixos/modules/services/misc/zookeeper.nix index f6af7c75ebae..1d12e81a9eca 100644 --- a/nixos/modules/services/misc/zookeeper.nix +++ b/nixos/modules/services/misc/zookeeper.nix @@ -76,6 +76,7 @@ in { default = '' zookeeper.root.logger=INFO, CONSOLE log4j.rootLogger=INFO, CONSOLE + log4j.logger.org.apache.zookeeper.audit.Log4jAuditLogger=INFO, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n @@ -128,11 +129,10 @@ in { description = "Zookeeper Daemon"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - environment = { ZOOCFGDIR = configDir; }; serviceConfig = { ExecStart = '' ${pkgs.jre}/bin/java \ - -cp "${cfg.package}/lib/*:${cfg.package}/${cfg.package.name}.jar:${configDir}" \ + -cp "${cfg.package}/lib/*:${configDir}" \ ${escapeShellArgs cfg.extraCmdLineOptions} \ -Dzookeeper.datadir.autocreate=false \ ${optionalString cfg.preferIPv4 "-Djava.net.preferIPv4Stack=true"} \ @@ -143,6 +143,7 @@ in { }; preStart = '' echo "${toString cfg.id}" > ${cfg.dataDir}/myid + mkdir -p ${cfg.dataDir}/version-2 ''; }; diff --git a/nixos/tests/zookeeper.nix b/nixos/tests/zookeeper.nix index 42cf20b39c52..2bcf5ff0faab 100644 --- a/nixos/tests/zookeeper.nix +++ b/nixos/tests/zookeeper.nix @@ -1,7 +1,12 @@ -import ./make-test-python.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, ...} : +let + + perlEnv = pkgs.perl.withPackages (p: [p.NetZooKeeper]); + +in { name = "zookeeper"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ nequissimus ]; + maintainers = [ nequissimus ztzg ]; }; nodes = { @@ -30,5 +35,12 @@ import ./make-test-python.nix ({ pkgs, ...} : { server.wait_until_succeeds( "${pkgs.zookeeper}/bin/zkCli.sh -server localhost:2181 get /foo | grep hello" ) + + server.wait_until_succeeds( + "${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()'" + ) + server.wait_until_succeeds( + "${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()'" + ) ''; }) diff --git a/pkgs/development/libraries/zookeeper_mt/default.nix b/pkgs/development/libraries/zookeeper_mt/default.nix index 0015600f970f..ea786d770eb6 100644 --- a/pkgs/development/libraries/zookeeper_mt/default.nix +++ b/pkgs/development/libraries/zookeeper_mt/default.nix @@ -1,21 +1,56 @@ -{ stdenv, zookeeper, bash }: +{ stdenv +, fetchurl +, autoreconfHook +, jre +, openssl +, pkg-config +# We depend on ZooKeeper for the Jute compiler. +, zookeeper +}: stdenv.mkDerivation rec { - name = "zookeeper_mt-${stdenv.lib.getVersion zookeeper}"; + pname = "zookeeper_mt"; + version = stdenv.lib.getVersion zookeeper; - src = zookeeper.src; + src = fetchurl { + url = "mirror://apache/zookeeper/${zookeeper.pname}-${version}/apache-${zookeeper.pname}-${version}.tar.gz"; + sha512 = "16994067d460a1b6af6a71f3458c64ee32629e876a1ff6646d57be62f1a5adab57462af84074ecaded4186dd3fde035ee24cd9d578b8e5044073eb05f4ab9c3e"; + }; - setSourceRoot = "export sourceRoot=${zookeeper.name}/src/c"; + sourceRoot = "apache-${zookeeper.pname}-${version}/zookeeper-client/zookeeper-client-c"; - NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (!stdenv.isDarwin) "-Wno-error=format-overflow -Wno-error=stringop-truncation"; + nativeBuildInputs = [ + autoreconfHook + jre + ]; - buildInputs = [ zookeeper bash ]; + buildInputs = [ + openssl + pkg-config + zookeeper + ]; + + # Generate the C marshallers/unmarshallers for the Jute-encoded + # definitions. + preConfigure = '' + mkdir generated + cd generated + java -cp ${zookeeper}/lib/${zookeeper.pname}-jute-${version}.jar \ + org.apache.jute.compiler.generated.Rcc -l c \ + ../../../zookeeper-jute/src/main/resources/zookeeper.jute + cd .. + ''; + + configureFlags = [ + # We're not going to start test servers in the sandbox anyway. + "--without-cppunit" + ]; meta = with stdenv.lib; { - homepage = "http://zookeeper.apache.org"; + homepage = "https://zookeeper.apache.org"; description = "Apache Zookeeper"; license = licenses.asl20; - maintainers = [ maintainers.commandodev ]; + maintainers = with maintainers; [ commandodev ztzg ]; platforms = platforms.unix; }; } diff --git a/pkgs/servers/zookeeper/default.nix b/pkgs/servers/zookeeper/default.nix index b0685d7f9546..5777532d9474 100644 --- a/pkgs/servers/zookeeper/default.nix +++ b/pkgs/servers/zookeeper/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "zookeeper"; - version = "3.4.13"; + version = "3.6.2"; src = fetchurl { - url = "mirror://apache/zookeeper/${pname}-${version}/${pname}-${version}.tar.gz"; - sha256 = "0karf13zks3ba2rdmma2lyabvmasc04cjmgxp227f0nj8677kvbw"; + url = "mirror://apache/zookeeper/${pname}-${version}/apache-${pname}-${version}-bin.tar.gz"; + sha512 = "caff5111bb6876b7124760bc006e6fa2523efa54b99321a3c9cd8192ea0d5596abc7d70a054b1aac9b20a411407dae7611c7aba870c23bff28eb1643ba499199"; }; buildInputs = [ makeWrapper jre ]; @@ -15,40 +15,28 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out - cp -R conf docs lib ${pname}-${version}.jar $out + cp -R conf docs lib $out + # Without this, zkCli.sh tries creating a log file in the Nix store. + substituteInPlace $out/conf/log4j.properties \ + --replace 'INFO, RFAAUDIT' 'INFO, CONSOLE' mkdir -p $out/bin - cp -R bin/{zkCli,zkCleanup,zkEnv,zkServer}.sh $out/bin + cp -R bin/{zkCli,zkCleanup,zkEnv,zkServer,zkSnapShotToolkit,zkTxnLogToolkit}.sh $out/bin patchShebangs $out/bin substituteInPlace $out/bin/zkServer.sh \ --replace /bin/echo ${coreutils}/bin/echo - for i in $out/bin/{zkCli,zkCleanup,zkServer}.sh; do + for i in $out/bin/{zkCli,zkCleanup,zkServer,zkSnapShotToolkit,zkTxnLogToolkit}.sh; do wrapProgram $i \ --set JAVA_HOME "${jre}" \ --prefix PATH : "${bash}/bin" done chmod -x $out/bin/zkEnv.sh - - mkdir -p $out/share/zooinspector - cp -r contrib/ZooInspector/{${pname}-${version}-ZooInspector.jar,icons,lib,config} $out/share/zooinspector - - classpath="$out/${pname}-${version}.jar:$out/share/zooinspector/${pname}-${version}-ZooInspector.jar" - for jar in $out/lib/*.jar $out/share/zooinspector/lib/*.jar; do - classpath="$classpath:$jar" - done - - cat << EOF > $out/bin/zooInspector.sh - #!${runtimeShell} - cd $out/share/zooinspector - exec ${jre}/bin/java -cp $classpath org.apache.zookeeper.inspector.ZooInspector - EOF - chmod +x $out/bin/zooInspector.sh ''; meta = with stdenv.lib; { - homepage = "http://zookeeper.apache.org"; + homepage = "https://zookeeper.apache.org"; description = "Apache Zookeeper"; license = licenses.asl20; - maintainers = with maintainers; [ nathan-gs cstrahan pradeepchhetri ]; + maintainers = with maintainers; [ nathan-gs cstrahan pradeepchhetri ztzg ]; platforms = platforms.unix; }; } diff --git a/pkgs/tools/filesystems/zkfuse/default.nix b/pkgs/tools/filesystems/zkfuse/default.nix index 89516d525af6..456444f3bf59 100644 --- a/pkgs/tools/filesystems/zkfuse/default.nix +++ b/pkgs/tools/filesystems/zkfuse/default.nix @@ -1,14 +1,30 @@ -{ stdenv, lib, zookeeper, zookeeper_mt, fuse, autoreconfHook, log4cxx, boost }: +{ stdenv +, lib +, autoreconfHook +, gnused +, boost +, fuse +, log4cxx +, zookeeper +, zookeeper_mt +}: -stdenv.mkDerivation { +stdenv.mkDerivation rec { pname = "zkfuse"; - inherit (zookeeper) version src; + inherit (zookeeper_mt) version src; - sourceRoot = "${zookeeper.name}/src/contrib/zkfuse"; + sourceRoot = "apache-${zookeeper.pname}-${version}/zookeeper-contrib/zookeeper-contrib-zkfuse"; - nativeBuildInputs = [ autoreconfHook ]; + nativeBuildInputs = [ autoreconfHook gnused ]; buildInputs = [ zookeeper_mt log4cxx boost fuse ]; + postPatch = '' + # Make the async API accessible, and use the proper include path. + sed -i src/zkadapter.h \ + -e '/"zookeeper\.h"/i#define THREADED' \ + -e 's,"zookeeper\.h",,' + ''; + installPhase = '' mkdir -p $out/bin cp -v src/zkfuse $out/bin @@ -16,7 +32,7 @@ stdenv.mkDerivation { meta = with lib; { platforms = platforms.linux; - maintainers = with maintainers; [ cstrahan ]; + maintainers = with maintainers; [ cstrahan ztzg ]; license = licenses.asl20; }; } diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index bdcece18adce..2475b1ab6be6 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -15752,18 +15752,31 @@ let NetZooKeeper = buildPerlPackage { pname = "Net-ZooKeeper"; - version = "0.41"; - src = fetchurl { - url = "mirror://cpan/authors/id/M/MA/MAF/Net-ZooKeeper-0.41.tar.gz"; - sha256 = "91c177f30f82302eaf3173356eef05c21bc82163df752acb469177bd14a72db9"; + version = "0.42pre"; + src = fetchFromGitHub { + owner = "mark-5"; + repo = "p5-net-zookeeper"; + rev = "66e1a360aff9c39af728c36092b540a4b6045f70"; + sha256 = "0xl8lcv9gfv0nn8vrrxa4az359whqdhmzw4r51nn3add8pn3s9ip"; }; buildInputs = [ pkgs.zookeeper_mt ]; + nativeBuildInputs = [ pkgs.gnused ]; # fix "error: format not a string literal and no format arguments [-Werror=format-security]" hardeningDisable = [ "format" ]; - NIX_CFLAGS_COMPILE = "-I${pkgs.zookeeper_mt}/include"; + # Make the async API accessible + NIX_CFLAGS_COMPILE = "-DTHREADED"; NIX_CFLAGS_LINK = "-L${pkgs.zookeeper_mt.out}/lib -lzookeeper_mt"; + # Most tests are skipped as no server is available in the sandbox. + # `t/35_log.t` seems to suffer from a race condition; remove it. See + # https://github.com/NixOS/nixpkgs/pull/104889#issuecomment-737144513 + preCheck = '' + rm t/35_log.t + '' + stdenv.lib.optionalString stdenv.isDarwin '' + rm t/30_connect.t + rm t/45_class.t + ''; meta = { - maintainers = [ maintainers.limeytexan ]; + maintainers = with maintainers; [ limeytexan ztzg ]; homepage = "https://github.com/mark-5/p5-net-zookeeper"; license = stdenv.lib.licenses.asl20; };