From 6ce2532285410691a83142877891fd57f340a502 Mon Sep 17 00:00:00 2001 From: Yarny0 <41838844+Yarny0@users.noreply.github.com> Date: Sat, 23 Mar 2024 09:16:15 +0100 Subject: [PATCH] libtiff_t: init at 4.6.0t (fork of libtiff) libtiff 4.6.0 dropped a bunch of helper tools, thereby breaking packages that depend on these tools. To fix those packages, nixpkgs started packaging libtiff_4_5 separately, see commit f57a4b0ac1b954eec0c8def2a99e2a464ac6ff7a. Currently, two packages use libtiff_4_5: * hylafaplus (cd3771c7097b1ce25b0b3cd4e16361bf2929aa15) * gscan2pdf (9a579e14dd7536bf4cf554c065615810defd72d8) Lee Howard (core developer of hylafaxplus) forked libtiff 4.6.0 to provide a current version that restores those dropped helper tools. The library is also called "libtiff", with current version "4.6.0t". It is based on libtiff 4.6.0 and incorporates several fixes, particularly for the dropped helper tools, see https://sourceforge.net/p/hylafax/mailman/message/58751878/ and http://www.libtiff.org/releases/v4.6.0t.html . The commit at hand packages that fork for nixpkgs. Follow-up commits will replace libtiff_4_5 with libtiff_t, so affected packages can again use a current libtiff library. The build recipe of libtiff_t is based on the libtiff recipe. Besides adapted URLs, the only change is dropping `passthru`, as it referred to many packages depending on the original libtiff. The unorthodox code introduced in all-packages.nix is needed to satisfy the automated "by-name" check; see "Recommendation for new packages with multiple versions" in the file `pkgs/by-name/README.md`. Depending on how things develop in the future, we might want to switch completely to the forked libtiff library one day. Or the original libtiff restores the missing tools, making libtiff_t superfluous. --- .../libraries/libtiff/libtiff_t.nix | 73 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 12 ++- 2 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/libtiff/libtiff_t.nix diff --git a/pkgs/development/libraries/libtiff/libtiff_t.nix b/pkgs/development/libraries/libtiff/libtiff_t.nix new file mode 100644 index 000000000000..37e48f6ea14f --- /dev/null +++ b/pkgs/development/libraries/libtiff/libtiff_t.nix @@ -0,0 +1,73 @@ +{ lib +, stdenv +, fetchzip + +, autoreconfHook +, pkg-config +, sphinx + +, libdeflate +, libjpeg +, xz +, zlib +}: + +# This is a fork created by the hylafaxplus developer to +# restore tools dropped by original libtiff in version 4.6.0. + +stdenv.mkDerivation (finalAttrs: { + pname = "libtiff_t"; + version = "4.6.0t"; + + src = fetchzip { + url = "http://www.libtiff.org/downloads/tiff-${finalAttrs.version}.tar.xz"; + hash = "sha256-9ov4w2jw4LtKr82/4jWMAGhc5GEdviJ7bT+y0+U/Ac4="; + }; + + patches = [ + # FreeImage needs this patch + ./headers.patch + # libc++abi 11 has an `#include `, this picks up files name + # `version` in the project's include paths + ./rename-version.patch + ]; + + postPatch = '' + mv VERSION VERSION.txt + ''; + + outputs = [ "bin" "dev" "dev_private" "out" "man" "doc" ]; + + postFixup = '' + moveToOutput include/tif_config.h $dev_private + moveToOutput include/tif_dir.h $dev_private + moveToOutput include/tif_hash_set.h $dev_private + moveToOutput include/tiffiop.h $dev_private + ''; + + # If you want to change to a different build system, please make + # sure cross-compilation works first! + nativeBuildInputs = [ autoreconfHook pkg-config sphinx ]; + + # TODO: opengl support (bogus configure detection) + propagatedBuildInputs = [ + libdeflate + libjpeg + xz + zlib + ]; + + enableParallelBuilding = true; + + doCheck = true; + + meta = with lib; { + description = "Library and utilities for working with the TIFF image file format (fork containing tools dropped in original libtiff version)"; + homepage = "http://www.libtiff.org"; + changelog = "http://www.libtiff.org/releases/v${finalAttrs.version}.html"; + maintainers = with maintainers; [ yarny ]; + license = licenses.libtiff; + platforms = platforms.unix ++ platforms.windows; + pkgConfigModules = [ "libtiff-4" ]; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cb74ff63aa15..c03ad1fc38fc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23031,8 +23031,16 @@ with pkgs; libtifiles2 = callPackage ../development/libraries/libtifiles2 { }; - libtiff = callPackage ../development/libraries/libtiff { }; - libtiff_4_5 = callPackage ../development/libraries/libtiff/4.5.nix { }; + inherit + ({ + libtiff = callPackage ../development/libraries/libtiff { }; + libtiff_4_5 = callPackage ../development/libraries/libtiff/4.5.nix { }; + libtiff_t = callPackage ../development/libraries/libtiff/libtiff_t.nix { }; + }) + libtiff + libtiff_4_5 + libtiff_t + ; libtiger = callPackage ../development/libraries/libtiger { };