python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / archivers / unar / default.nix
blob550e14355992a297a59fd3414ba8bee735296ad0
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , installShellFiles
5 , gnustep
6 , bzip2
7 , zlib
8 , icu
9 , openssl
10 , wavpack
11 , xcbuildHook
12 , Foundation
13 , AppKit
16 stdenv.mkDerivation rec {
17   pname = "unar";
18   version = "1.10.7";
20   src = fetchFromGitHub {
21     owner = "MacPaw";
22     # the unar repo contains a shallow clone of both XADMaster and universal-detector
23     repo = "unar";
24     rev = "v${version}";
25     sha256 = "0p846q1l66k3rnd512sncp26zpv411b8ahi145sghfcsz9w8abc4";
26   };
28   postPatch =
29     if stdenv.isDarwin then ''
30       substituteInPlace "./XADMaster.xcodeproj/project.pbxproj" \
31         --replace "libstdc++.6.dylib" "libc++.1.dylib"
32     '' else ''
33       for f in Makefile.linux ../UniversalDetector/Makefile.linux ; do
34         substituteInPlace $f \
35           --replace "= gcc" "=${stdenv.cc.targetPrefix}cc" \
36           --replace "= g++" "=${stdenv.cc.targetPrefix}c++" \
37           --replace "-DGNU_RUNTIME=1" "" \
38           --replace "-fgnu-runtime" "-fobjc-runtime=gnustep-2.0"
39       done
41       # we need to build inside this directory as well, so we have to make it writeable
42       chmod +w ../UniversalDetector -R
43     '';
45   buildInputs = [ bzip2 icu openssl wavpack zlib ] ++
46     lib.optionals stdenv.isLinux [ gnustep.base ] ++
47     lib.optionals stdenv.isDarwin [ Foundation AppKit ];
49   nativeBuildInputs = [ installShellFiles ] ++
50     lib.optionals stdenv.isLinux [ gnustep.make ] ++
51     lib.optionals stdenv.isDarwin [ xcbuildHook ];
53   xcbuildFlags = lib.optionals stdenv.isDarwin [
54     "-target unar"
55     "-target lsar"
56     "-configuration Release"
57     "MACOSX_DEPLOYMENT_TARGET=10.12"
58     # Fix "ld: file not found: /nix/store/*-clang-7.1.0/lib/arc/libarclite_macosx." error
59     # Disabling ARC may leak memory, however since this program is generally not used for
60     # long periods of time, it shouldn't be an issue
61     "CLANG_LINK_OBJC_RUNTIME=NO"
62   ];
64   makefile = lib.optionalString (!stdenv.isDarwin) "Makefile.linux";
66   enableParallelBuilding = true;
68   dontConfigure = true;
70   sourceRoot = "./source/XADMaster";
72   installPhase = ''
73     runHook preInstall
75     install -Dm555 -t $out/bin ${lib.optionalString stdenv.isDarwin "Products/Release/"}{lsar,unar}
76     for f in lsar unar; do
77       installManPage ./Extra/$f.?
78       installShellCompletion --bash --name $f ./Extra/$f.bash_completion
79     done
81     runHook postInstall
82   '';
84   meta = with lib; {
85     homepage = "https://theunarchiver.com";
86     description = "An archive unpacker program";
87     longDescription = ''
88       The Unarchiver is an archive unpacker program with support for the popular
89       zip, RAR, 7z, tar, gzip, bzip2, LZMA, XZ, CAB, MSI, NSIS, EXE, ISO, BIN,
90       and split file formats, as well as the old Stuffit, Stuffit X, DiskDouble,
91       Compact Pro, Packit, cpio, compress (.Z), ARJ, ARC, PAK, ACE, ZOO, LZH,
92       ADF, DMS, LZX, PowerPacker, LBR, Squeeze, Crunch, and other old formats.
93     '';
94     license = licenses.lgpl21Plus;
95     maintainers = with maintainers; [ peterhoeg thiagokokada ];
96     platforms = platforms.unix;
97   };