74c784a79c
In 724e833ea2a, I was a little too aggressive in enabling these flags. Many don’t work in gcc, and we should probably avoid settings them widely. This makes those flags optional on isclang
51 lines
1.6 KiB
Nix
51 lines
1.6 KiB
Nix
{ stdenv, fetchurl }:
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "p7zip-${version}";
|
|
version = "16.02";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://sourceforge/p7zip/p7zip_${version}_src_all.tar.bz2";
|
|
sha256 = "5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f";
|
|
};
|
|
|
|
patches = [
|
|
./12-CVE-2016-9296.patch
|
|
./13-CVE-2017-17969.patch
|
|
];
|
|
|
|
# Default makefile is full of impurities on Darwin. The patch doesn't hurt Linux so I'm leaving it unconditional
|
|
postPatch = ''
|
|
sed -i '/CC=\/usr/d' makefile.macosx_llvm_64bits
|
|
|
|
# I think this is a typo and should be CXX? Either way let's kill it
|
|
sed -i '/XX=\/usr/d' makefile.macosx_llvm_64bits
|
|
'' + stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
|
|
substituteInPlace makefile.machine \
|
|
--replace 'CC=gcc' 'CC=${stdenv.cc.targetPrefix}gcc' \
|
|
--replace 'CXX=g++' 'CXX=${stdenv.cc.targetPrefix}g++'
|
|
'';
|
|
|
|
preConfigure = ''
|
|
makeFlagsArray=(DEST_HOME=$out)
|
|
buildFlags=all3
|
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
|
cp makefile.macosx_llvm_64bits makefile.machine
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
setupHook = ./setup-hook.sh;
|
|
|
|
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-error=c++11-narrowing";
|
|
|
|
meta = {
|
|
homepage = http://p7zip.sourceforge.net/;
|
|
description = "A port of the 7-zip archiver";
|
|
# license = stdenv.lib.licenses.lgpl21Plus; + "unRAR restriction"
|
|
platforms = stdenv.lib.platforms.unix;
|
|
maintainers = [ stdenv.lib.maintainers.raskin ];
|
|
license = stdenv.lib.licenses.lgpl2Plus;
|
|
};
|
|
}
|