diff --git a/pkgs/tools/compression/pxz/default.nix b/pkgs/tools/compression/pxz/default.nix index 4ea95a3f78a..0f509a3bd17 100644 --- a/pkgs/tools/compression/pxz/default.nix +++ b/pkgs/tools/compression/pxz/default.nix @@ -1,31 +1,42 @@ -{ lib, stdenv, fetchFromGitHub, xz }: +{ lib +, stdenv +, fetchFromGitHub +, testVersion +, pxz +, xz +}: stdenv.mkDerivation rec { pname = "pxz"; - version = "4.999.9beta+git"; + version = "4.999.9beta"; src = fetchFromGitHub { owner = "jnovy"; repo = "pxz"; rev = "124382a6d0832b13b7c091f72264f8f3f463070a"; - sha256 = "15mmv832iqsqwigidvwnf0nyivxf0y8m22j2szy4h0xr76x4z21m"; + hash = "sha256-NYhPujm5A0j810IKUZEHru/oLXCW7xZf5FjjKAbatZY="; }; + patches = [ ./flush-stdout-help-version.patch ]; + + postPatch = '' + substituteInPlace Makefile \ + --replace '`date +%Y%m%d`' '19700101' + + substituteInPlace pxz.c \ + --replace 'XZ_BINARY "xz"' 'XZ_BINARY "${lib.getBin xz}/bin/xz"' + ''; + buildInputs = [ xz ]; - buildPhase = '' - gcc -o pxz pxz.c -llzma \ - -fopenmp -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 \ - -DPXZ_BUILD_DATE=\"nixpkgs\" \ - -DXZ_BINARY=\"${xz.bin}/bin/xz\" \ - -DPXZ_VERSION=\"${version}\" - ''; + makeFlags = [ + "BINDIR=${placeholder "out"}/bin" + "MANDIR=${placeholder "out"}/share/man" + ]; - installPhase = '' - mkdir -p $out/bin $out/share/man/man1 - cp pxz $out/bin - cp pxz.1 $out/share/man/man1 - ''; + passthru.tests.version = testVersion { + package = pxz; + }; meta = with lib; { homepage = "https://jnovy.fedorapeople.org/pxz/"; @@ -39,6 +50,7 @@ stdenv.mkDerivation rec { resources to speed up compression time with minimal possible influence on compression ratio ''; + mainProgram = "pxz"; platforms = with platforms; linux; }; } diff --git a/pkgs/tools/compression/pxz/flush-stdout-help-version.patch b/pkgs/tools/compression/pxz/flush-stdout-help-version.patch new file mode 100644 index 00000000000..797cdbeb1f8 --- /dev/null +++ b/pkgs/tools/compression/pxz/flush-stdout-help-version.patch @@ -0,0 +1,32 @@ +From bba741ccd0f0a65cd9bfdd81504ebe5840fd37ad Mon Sep 17 00:00:00 2001 +From: Will Dietz +Date: Tue, 22 Mar 2022 08:01:10 -0500 +Subject: [PATCH] pxz: flush stdout before exec'ing xz, ensure our messages are + printed + +Without this, they're presently dropped on my system when pxz +is piped to something, as in `pxz --help|less` or `pxz --version|cat`. +--- + pxz.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/pxz.c b/pxz.c +index 4240b6e..3b53cfa 100644 +--- a/pxz.c ++++ b/pxz.c +@@ -184,10 +184,12 @@ void parse_args( int argc, char **argv, char **envp ) { + " -D, --context-size per-thread compression context size as a multiple\n" + " of dictionary size. Default is 3.\n\n" + "Usage and other options are same as in XZ:\n\n"); ++ fflush(stdout); + run_xz(argv, envp); + break; + case 'V': + printf("Parallel PXZ "PXZ_VERSION" (build "PXZ_BUILD_DATE")\n"); ++ fflush(stdout); + run_xz(argv, envp); + break; + case 'g': +-- +2.35.1 +