base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12 (#356361)
[NixPkgs.git] / pkgs / tools / graphics / netpbm / default.nix
blob107b36e5515e3425f0a2358e3fb488ad0ba3359d
1 { lib
2 , stdenv
3 , fetchsvn
4 , pkg-config
5 , libjpeg
6 , libpng
7 , jbigkit
8 , flex
9 , zlib
10 , perl
11 , libxml2
12 , makeWrapper
13 , libtiff
14 , enableX11 ? false
15 , libX11
16 , buildPackages
19 stdenv.mkDerivation {
20   # Determine version and revision from:
21   # https://sourceforge.net/p/netpbm/code/HEAD/log/?path=/advanced
22   pname = "netpbm";
23   version = "11.8.1";
25   outputs = [ "bin" "out" "dev" ];
27   src = fetchsvn {
28     url = "https://svn.code.sf.net/p/netpbm/code/advanced";
29     rev = "4966";
30     sha256 = "sha256-Vy7aKyMn3C2P3N9jdRayDu35+8jzvQv4rYIEsKdyWDU=";
31   };
33   nativeBuildInputs = [
34     pkg-config
35     flex
36     makeWrapper
37   ];
39   buildInputs = [
40     zlib
41     perl
42     libpng
43     libjpeg
44     libxml2
45     libtiff
46     jbigkit
47   ] ++ lib.optional enableX11 libX11;
50   strictDeps = true;
52   enableParallelBuilding = true;
54   # Environment variables
55   STRIPPROG = "${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}strip";
57   postPatch = ''
58     # Install libnetpbm.so symlink to correct destination
59     substituteInPlace lib/Makefile \
60       --replace '/sharedlink' '/lib'
61   '';
63   configurePhase = ''
64     runHook preConfigure
66     cp config.mk.in config.mk
68     # Disable building static library
69     echo "STATICLIB_TOO = N" >> config.mk
71     # Enable cross-compilation
72     echo 'AR = ${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar' >> config.mk
73     echo 'CC = ${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc' >> config.mk
74     echo 'CC_FOR_BUILD = ${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}cc' >> config.mk
75     echo 'LD_FOR_BUILD = $(CC_FOR_BUILD)' >> config.mk
76     echo 'PKG_CONFIG = ${buildPackages.pkg-config}/bin/${buildPackages.pkg-config.targetPrefix}pkg-config' >> config.mk
77     echo 'RANLIB = ${lib.getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ranlib' >> config.mk
79     # Use libraries from Nixpkgs
80     echo "TIFFLIB = libtiff.so" >> config.mk
81     echo "TIFFLIB_NEEDS_JPEG = N" >> config.mk
82     echo "TIFFLIB_NEEDS_Z = N" >> config.mk
83     echo "JPEGLIB = libjpeg.so" >> config.mk
84     echo "JBIGLIB = libjbig.a" >> config.mk
85     # Insecure
86     echo "JASPERLIB = NONE" >> config.mk
88     # Fix path to rgb.txt
89     echo "RGB_DB_PATH = $out/share/netpbm/misc/rgb.txt" >> config.mk
90   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
91     echo "LDSHLIB=-dynamiclib -install_name $out/lib/libnetpbm.\$(MAJ).dylib" >> config.mk
92     echo "NETPBMLIBTYPE = dylib" >> config.mk
93     echo "NETPBMLIBSUFFIX = dylib" >> config.mk
94   '' + ''
95     runHook postConfigure
96   '';
98   env = lib.optionalAttrs stdenv.cc.isClang {
99     NIX_CFLAGS_COMPILE = "-Wno-implicit-function-declaration";
100   };
102   installPhase = ''
103     runHook preInstall
105     make package pkgdir=$out
107     rm -rf $out/*_template $out/{pkginfo,README,VERSION} $out/man/web
109     mkdir -p $out/share/netpbm
110     mv $out/misc $out/share/netpbm/
112     moveToOutput bin "''${!outputBin}"
114     # wrap any scripts that expect other programs in the package to be in their PATH
115     for prog in ppmquant; do
116         wrapProgram "''${!outputBin}/bin/$prog" --prefix PATH : "''${!outputBin}/bin"
117     done
119     runHook postInstall
120   '';
122   passthru.updateScript = ./update.sh;
124   meta = {
125     homepage = "https://netpbm.sourceforge.net/";
126     description = "Toolkit for manipulation of graphic images";
127     license = lib.licenses.free; # http://netpbm.svn.code.sourceforge.net/p/netpbm/code/trunk/doc/copyright_summary
128     platforms = with lib.platforms; linux ++ darwin;
129   };