nixpkgs/pkgs/tools/archivers/7zz/default.nix
Thiago Kenji Okada 7319edcda5 7zz: compile optimized assembly code for x86_64
Use uasm to compile the optimized code instead of generic C code for
faster operations.

Before:
```
7zz x   10.83s user 0.40s system 98% cpu 11.439 total
```

After:
```
7zz x   6.87s user 0.40s system 98% cpu 7.395 total
```
2022-01-31 12:17:51 -03:00

53 lines
1.3 KiB
Nix

{ stdenv, lib, fetchurl, p7zip, uasm, useUasm ? stdenv.isx86_64 }:
let
inherit (stdenv.hostPlatform) system;
platformSuffix =
if useUasm then
{
x86_64-linux = "_x64";
}.${system} or (throw "`useUasm` is not supported for system ${system}")
else "";
in
stdenv.mkDerivation rec {
pname = "7zz";
version = "21.07";
src = fetchurl {
url = "https://7-zip.org/a/7z${lib.replaceStrings [ "." ] [ "" ] version}-src.7z";
sha256 = "sha256-0QdNVvQVqrmdmeWXp7ZtxFXbpjSa6KTInfdkdbahKEw=";
};
sourceRoot = "CPP/7zip/Bundles/Alone2";
makeFlags = lib.optionals useUasm [ "MY_ASM=uasm" ];
makefile = "../../cmpl_gcc${platformSuffix}.mak";
nativeBuildInputs = [ p7zip ] ++ lib.optionals useUasm [ uasm ];
enableParallelBuilding = true;
installPhase = ''
runHook preInstall
install -Dm555 -t $out/bin b/g${platformSuffix}/7zz
install -Dm444 -t $out/share/doc/${pname} ../../../../DOC/*.txt
runHook postInstall
'';
doInstallCheck = true;
installCheckPhase = ''
$out/bin/7zz --help | grep ${version}
'';
meta = with lib; {
description = "Command line archiver utility";
homepage = "https://7-zip.org";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ anna328p peterhoeg ];
platforms = platforms.linux;
};
}