diff options
Diffstat (limited to 'pkgs/tools/graphics')
-rw-r--r-- | pkgs/tools/graphics/pngout/default.nix | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/pkgs/tools/graphics/pngout/default.nix b/pkgs/tools/graphics/pngout/default.nix index c2de8a4fb2aed..b6f19d2390e1f 100644 --- a/pkgs/tools/graphics/pngout/default.nix +++ b/pkgs/tools/graphics/pngout/default.nix @@ -1,34 +1,49 @@ -{lib, stdenv, fetchurl}: +{ lib +, stdenv +, fetchurl +, unzip +}: let - folder = if stdenv.hostPlatform.system == "i686-linux" then "i686" - else if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64" - else throw "Unsupported system: ${stdenv.hostPlatform.system}"; + platforms = { + aarch64-linux = { folder = "aarch64"; ld-linux = "ld-linux-aarch64.so.1"; }; + armv7l-linux = { folder = "armv7"; ld-linux = "ld-linux-armhf.so.3"; }; + i686-linux = { folder = "i686"; ld-linux = "ld-linux.so.2"; }; + x86_64-darwin = { folder = "."; }; + x86_64-linux = { folder = "amd64"; ld-linux = "ld-linux-x86-64.so.2"; }; + }; + platform = platforms."${stdenv.hostPlatform.system}" + or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + download = if stdenv.isDarwin + then { extension = "macos.zip"; hash = "sha256-MnL6lH7q/BrACG4fFJNfnvoh0JClVeaJIlX+XIj2aG4="; } + else { extension = "linux.tar.gz"; hash = "sha256-rDi7pvDeKQM96GZTjDr6ZDQTGbaVu+OI77xf2egw6Sg="; }; in stdenv.mkDerivation rec { pname = "pngout"; - version = "20150319"; + version = "20200115"; src = fetchurl { - url = "http://static.jonof.id.au/dl/kenutils/pngout-${version}-linux.tar.gz"; - sha256 = "0iwv941hgs2g7ljpx48fxs24a70m2whrwarkrb77jkfcd309x2h7"; + inherit (download) hash; + url = "http://static.jonof.id.au/dl/kenutils/pngout-${version}-${download.extension}"; }; + nativeBuildInputs = lib.optionals stdenv.isDarwin [ unzip ]; + + # pngout is code-signed on Darwin, so don’t alter the binary to avoid breaking the signature. + dontFixup = stdenv.isDarwin; + installPhase = '' mkdir -p $out/bin - cp ${folder}/pngout $out/bin - - ${if stdenv.hostPlatform.system == "i686-linux" then '' - patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $out/bin/pngout - '' else if stdenv.hostPlatform.system == "x86_64-linux" then '' - patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux-x86-64.so.2 $out/bin/pngout - '' else ""} + cp ${platform.folder}/pngout $out/bin + '' + lib.optionalString stdenv.isLinux '' + patchelf --set-interpreter ${stdenv.glibc.out}/lib/${platform.ld-linux} $out/bin/pngout ''; meta = { description = "A tool that aggressively optimizes the sizes of PNG images"; - license = lib.licenses.unfree; + license = lib.licenses.unfreeRedistributable; homepage = "http://advsys.net/ken/utils.htm"; + platforms = lib.attrNames platforms; maintainers = [ lib.maintainers.sander ]; }; } |