Change:
Describe the bug Netpbm misses TIFF converters, such as . To Reproduce Steps to reproduce the behavior: to find some commands. Expected behavior TIFF converters installed with Netpbm. Additional context libtiff is required to build the following Netpbm programs: , , and (). Indeed is input for the , but TIFF converters are missed. Metadata output:

Discussion:
"${ghostscript}/bin:" + (if aspell == null then "" else "${aspell}/bin:") + (if tex == null then "" else "${tex}/bin:") + <del> (if netpbm == null then "" else "${netpbm}/bin:") + </del> <ins> (if netpbm == null then "" else "${stdenv.lib.getBin netpbm}/bin:") + </ins> (if imagemagick == null then "" else "${imagemagick}/bin:"); enableParallelBuilding = true;

makeFlags = [ "PREFIX=${placeholder "out"}" "LEX=flex" <del> "RGBDEF=${netpbm}/share/netpbm/misc/rgb.txt" </del> <ins> "RGBDEF=${netpbm.out}/share/netpbm/misc/rgb.txt" </ins> ]; nativeBuildInputs = [

<del> { lib, stdenv, fetchsvn, pkgconfig, libjpeg, libpng, flex, zlib, perl, libxml2 , makeWrapper, libtiff , enableX11 ? false, libX11 }: </del> <ins> { lib , stdenv , fetchsvn , pkgconfig , libjpeg , libpng , flex , zlib , perl , libxml2 , makeWrapper , libtiff , enableX11 ? false , libX11 }: </ins> stdenv.mkDerivation { # Determine version and revision from: # https://sourceforge.net/p/netpbm/code/HEAD/log/?path=/advanced <del> name = "netpbm-10.82.01"; </del> <ins> name = "netpbm-10.89.1"; outputs = [ "bin" "out" "dev" ]; </ins> src = fetchsvn { url = "https://svn.code.sf.net/p/netpbm/code/advanced"; <del> rev = "3264"; sha256 = "17fmyjbxp1l18rma7gb0m8wd9kx2iwhqs8dd6fpalsn2cr8mf8hf"; </del> <ins> rev = "3735"; sha256 = "hRepEUBlf83p77Amjze+Qz7XTHhCuPdV01K/UabR89Q="; </ins> }; <del> postPatch = /* CVE-2005-2471, from Arch */ '' substituteInPlace converter/other/pstopnm.c  --replace '"-dSAFER"' '"-dPARANOIDSAFER"' </del> <ins> postPatch = '' # Install libnetpbm.so symlink to correct destination substituteInPlace lib/Makefile  --replace '/sharedlink' '/lib' </ins> ''; <del> buildInputs = [ pkgconfig flex zlib perl libpng libjpeg libxml2 makeWrapper libtiff ] ++ lib.optional enableX11 libX11; </del> <ins> nativeBuildInputs = [ pkgconfig flex makeWrapper ]; buildInputs = [ zlib perl libpng libjpeg libxml2 libtiff ] ++ lib.optional enableX11 libX11; </ins> configurePhase = '' <ins> runHook preConfigure </ins> cp config.mk.in config.mk <del> echo "STATICLIB_TOO = n" >> config.mk substituteInPlace "config.mk"  --replace "TIFFLIB = NONE" "TIFFLIB = ${libtiff.out}/lib/libtiff.so"  --replace "TIFFHDR_DIR =" "TIFFHDR_DIR = ${libtiff.dev}/include"  --replace "JPEGLIB = NONE" "JPEGLIB = ${libjpeg.out}/lib/libjpeg.so"  --replace "JPEGHDR_DIR =" "JPEGHDR_DIR = ${libjpeg.dev}/include" '' + stdenv.lib.optionalString stdenv.isDarwin '' </del> <ins> # Disable building static library echo "STATICLIB_TOO = N" >> config.mk # Use libraries from Nixpkgs echo "TIFFLIB = libtiff.so" >> config.mk echo "TIFFLIB_NEEDS_JPEG = N" >> config.mk echo "TIFFLIB_NEEDS_Z = N" >> config.mk echo "JPEGLIB = libjpeg.so" >> config.mk # Fix path to rgb.txt echo "RGB_DB_PATH = $out/share/netpbm/misc/rgb.txt" >> config.mk '' + stdenv.lib.optionalString stdenv.isDarwin '' </ins> echo "LDSHLIB=-dynamiclib -install_name $out/lib/libnetpbm.$(MAJ).dylib" >> config.mk echo "NETPBMLIBTYPE = dylib" >> config.mk echo "NETPBMLIBSUFFIX = dylib" >> config.mk <del> ''; preBuild = '' export LDFLAGS="-lz" substituteInPlace "pm_config.in.h"  --subst-var-by "rgbPath1" "$out/lib/rgb.txt"  --subst-var-by "rgbPath2" "/var/empty/rgb.txt"  --subst-var-by "rgbPath3" "/var/empty/rgb.txt" touch lib/standardppmdfont.c </del> <ins> runHook postConfigure </ins> ''; <del> enableParallelBuilding = false; </del> <ins> enableParallelBuilding = true; </ins> installPhase = '' <ins> runHook preInstall </ins> make package pkgdir=$out <del> rm -rf $out/link $out/*_template $out/{pkginfo,README,VERSION} $out/man/web </del> <ins> rm -rf $out/*_template $out/{pkginfo,README,VERSION} $out/man/web </ins> mkdir -p $out/share/netpbm mv $out/misc $out/share/netpbm/

for prog in ppmquant; do wrapProgram "$out/bin/$prog" --prefix PATH : "$out/bin" done <ins> moveToOutput bin "''${!outputBin}" runHook postInstall </ins> ''; <ins> passthru.updateScript = ./update.sh; </ins> meta = { <del> homepage = http://netpbm.sourceforge.net/; </del> <ins> homepage = "http://netpbm.sourceforge.net/"; </ins> description = "Toolkit for manipulation of graphic images"; <del> license = "GPL,free"; </del> <ins> license = lib.licenses.free; # http://netpbm.svn.code.sourceforge.net/p/netpbm/code/trunk/doc/copyright_summary </ins> platforms = with stdenv.lib.platforms; linux ++ darwin; }; }

<ins> #!/usr/bin/env nix-shell #!nix-shell -p bash -p subversion -p common-updater-scripts -i bash die() { echo "error: $1" >&2 exit 1 } attr=netpbm svnRoot=https://svn.code.sf.net/p/netpbm/code/advanced oldRev=$(nix-instantiate --eval -E "with import ./. {}; $attr.src.rev" | tr -d '"') if [[ -z "$oldRev" ]]; then die "Could not extract old revision." fi latestRev=$(svn info --show-item "last-changed-revision" "$svnRoot") if [[ -z "$latestRev" ]]; then die "Could not find out last changed revision." fi versionInfo=$(svn cat -r "$latestRev" "$svnRoot/version.mk") if [[ -z "$versionInfo" ]]; then die "Could not get version info." fi nixFile=$(nix-instantiate --eval --strict -A "$attr.meta.position" | sed -re 's/^"(.*):[0-9]+"$/1/') if [[ ! -f "$nixFile" ]]; then die "Could not evaluate '$attr.meta.position' to locate the .nix file!" fi # h remembers if we found the pattern; on the last line, if a pattern was previously found, we exit with 1 # https://stackoverflow.com/a/12145797/160386 sed -i "$nixFile" -re '/(brevbs*=s*)"'"$oldRev"'"/{ s||1"'"$latestRev"'"|; h }; ${x; /./{x; q1}; x}' && die "Unable to update revision." majorRelease=$(grep --perl-regex --only-matching 'NETPBM_MAJOR_RELEASE = K.+' <<< "$versionInfo") minorRelease=$(grep --perl-regex --only-matching 'NETPBM_MINOR_RELEASE = K.+' <<< "$versionInfo") pointRelease=$(grep --perl-regex --only-matching 'NETPBM_POINT_RELEASE = K.+' <<< "$versionInfo") update-source-version "$attr" "$majorRelease.$minorRelease.$pointRelease" </ins>

preConfigure = '' rm cmake/FindNETPBM.cmake <del> echo "SET(NETPBM_LIBRARY `find ${netpbm} -name "*.${stdenv.hostPlatform.extensions.sharedLibrary}*" -type f`)" >> cmake/FindNETPBM.cmake echo "SET(NETPBM_LIBRARIES `find ${netpbm} -name "*.${stdenv.hostPlatform.extensions.sharedLibrary}*" -type f`)" >> cmake/FindNETPBM.cmake echo "SET(NETPBM_INCLUDE_DIR ${netpbm}/include/netpbm)" >> cmake/FindNETPBM.cmake </del> <ins> echo "SET(NETPBM_LIBRARY `find ${stdenv.lib.getLib netpbm} -name "*.${stdenv.hostPlatform.extensions.sharedLibrary}*" -type f`)" >> cmake/FindNETPBM.cmake echo "SET(NETPBM_LIBRARIES `find ${stdenv.lib.getLib netpbm} -name "*.${stdenv.hostPlatform.extensions.sharedLibrary}*" -type f`)" >> cmake/FindNETPBM.cmake echo "SET(NETPBM_INCLUDE_DIR ${stdenv.lib.getDev netpbm}/include/netpbm)" >> cmake/FindNETPBM.cmake </ins> echo "INCLUDE(FindPackageHandleStandardArgs)" >> cmake/FindNETPBM.cmake echo "FIND_PACKAGE_HANDLE_STANDARD_ARGS(NETPBM DEFAULT_MSG NETPBM_LIBRARY NETPBM_INCLUDE_DIR)" >> cmake/FindNETPBM.cmake '';

buildInputs = [ libpng ]; configureFlags = [ <del> "--with-rgbtxt=${netpbm}/share/netpbm/misc/rgb.txt" </del> <ins> "--with-rgbtxt=${netpbm.out}/share/netpbm/misc/rgb.txt" </ins> ]; meta = with stdenv.lib; {

sed -i src/form.c -e '21i#include <stdlib.h>' # there is no point to bring in the whole netpbm package just for this file <del> install -Dm644 ${netpbm}/share/netpbm/misc/rgb.txt $out/share/yad/rgb.txt </del> <ins> install -Dm644 ${netpbm.out}/share/netpbm/misc/rgb.txt $out/share/yad/rgb.txt </ins> ''; postAutoreconf = ''

--replace "psselect" "${psutils}/bin/psselect" '' + stdenv.lib.optionalString (netpbm != null) '' substituteInPlace src/preproc/html/pre-html.cpp  <del> --replace "pnmcut" "${netpbm}/bin/pnmcut"  --replace "pnmcrop" "${netpbm}/bin/pnmcrop"  --replace "pnmtopng" "${netpbm}/bin/pnmtopng" </del> <ins> --replace "pnmcut" "${stdenv.lib.getBin netpbm}/bin/pnmcut"  --replace "pnmcrop" "${stdenv.lib.getBin netpbm}/bin/pnmcrop"  --replace "pnmtopng" "${stdenv.lib.getBin netpbm}/bin/pnmtopng" </ins> substituteInPlace tmac/www.tmac  <del> --replace "pnmcrop" "${netpbm}/bin/pnmcrop"  --replace "pngtopnm" "${netpbm}/bin/pngtopnm"  --replace "@PNMTOPS_NOSETPAGE@" "${netpbm}/bin/pnmtops -nosetpage" </del> <ins> --replace "pnmcrop" "${stdenv.lib.getBin netpbm}/bin/pnmcrop"  --replace "pngtopnm" "${stdenv.lib.getBin netpbm}/bin/pngtopnm"  --replace "@PNMTOPS_NOSETPAGE@" "${stdenv.lib.getBin netpbm}/bin/pnmtops -nosetpage" </ins> ''; buildInputs = [ ghostscript psutils netpbm perl ];