3
0
Fork 0
forked from mirrors/nixpkgs

Added pxz

This commit is contained in:
Igor Pashev 2014-11-01 19:08:08 +03:00
parent ccfc8b8ca1
commit ce5cc9d803
3 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,36 @@
From b8f9827fc4de9296c7a6f5e6fdac46e070cd6cb4 Mon Sep 17 00:00:00 2001
From: Igor Pashev <pashev.igor@gmail.com>
Date: Sat, 1 Nov 2014 18:10:05 +0300
Subject: [PATCH] Fixed crash on Linux when stack size is unlimited
---
pxz.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/pxz.c b/pxz.c
index 9cb843e..52713e2 100644
--- a/pxz.c
+++ b/pxz.c
@@ -65,7 +65,7 @@ FILE **ftemp;
char str[0x100];
char buf[BUFFSIZE];
char *xzcmd;
-size_t xzcmd_max;
+const size_t xzcmd_max = 10240;
unsigned opt_complevel = 6, opt_stdout, opt_keep, opt_threads, opt_verbose;
unsigned opt_force, opt_stdout;
@@ -243,9 +243,12 @@ int main( int argc, char **argv ) {
lzma_filter filters[LZMA_FILTERS_MAX + 1];
lzma_options_lzma lzma_options;
- xzcmd_max = sysconf(_SC_ARG_MAX);
page_size = sysconf(_SC_PAGE_SIZE);
xzcmd = malloc(xzcmd_max);
+ if (!xzcmd) {
+ fprintf(stderr, "Failed to allocate %lu bytes for xz command.\n", xzcmd_max);
+ return -1;
+ }
snprintf(xzcmd, xzcmd_max, XZ_BINARY);
parse_args(argc, argv);

View file

@ -0,0 +1,43 @@
{ stdenv, fetchgit, xz, lzma }:
let name = "pxz";
version = "4.999.9beta+git";
in
stdenv.mkDerivation {
name = name + "-" + version;
src = fetchgit {
url = "https://github.com/jnovy/pxz.git";
rev = "ae808463c2950edfdedb8fb49f95006db0a18667";
sha256 = "0na2kw8cf0qd8l1aywlv9m3xrxnqlcwxfdwp3f7x9vxwqx3k32kc";
};
buildInputs = [ lzma ];
patches = [ ./_SC_ARG_MAX.patch ];
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/xz\" \
-DPXZ_VERSION=\"${version}\"
'';
installPhase = ''
mkdir -p $out/bin $out/share/man/man1
cp pxz $out/bin
cp pxz.1 $out/share/man/man1
'';
meta = {
homepage = "https://jnovy.fedorapeople.org/pxz/";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = with stdenv.lib.maintainers; [pashev];
description = ''Parallel XZ is a compression utility that takes advantage of
running LZMA compression of different parts of an input file on multiple
cores and processors simultaneously. Its primary goal is to utilize all
resources to speed up compression time with minimal possible influence
on compression ratio'';
};
}

View file

@ -1381,6 +1381,8 @@ let
pigz = callPackage ../tools/compression/pigz { }; pigz = callPackage ../tools/compression/pigz { };
pxz = callPackage ../tools/compression/pxz { };
haproxy = callPackage ../tools/networking/haproxy { }; haproxy = callPackage ../tools/networking/haproxy { };
haveged = callPackage ../tools/security/haveged { }; haveged = callPackage ../tools/security/haveged { };