pxz: use upstream's Makefile (#165264)

This commit is contained in:
Peter Hoeg 2022-03-23 10:59:58 +08:00 committed by GitHub
parent e8aeac7295
commit 4f1949bc59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 59 additions and 15 deletions

View file

@ -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;
};
}

View file

@ -0,0 +1,32 @@
From bba741ccd0f0a65cd9bfdd81504ebe5840fd37ad Mon Sep 17 00:00:00 2001
From: Will Dietz <w@wdtz.org>
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