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 f57a4b0ac1.

Currently, two packages use libtiff_4_5:

* hylafaplus (cd3771c709)
* gscan2pdf (9a579e14dd)

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.
This commit is contained in:
Yarny0 2024-03-23 09:16:15 +01:00
parent 376bd1931e
commit 6ce2532285
2 changed files with 83 additions and 2 deletions

View File

@ -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 <version>`, 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" ];
};
})

View File

@ -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 { };