diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000..29c47e2
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,3 @@
+
+ man
+
diff --git a/tiff-4.6.0.tar.xz b/tiff-4.6.0.tar.xz
deleted file mode 100644
index 69e233d..0000000
--- a/tiff-4.6.0.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e178649607d1e22b51cf361dd20a3753f244f022eefab1f2f218fc62ebaf87d2
-size 2124388
diff --git a/tiff-4.6.0.tar.xz.sig b/tiff-4.6.0.tar.xz.sig
deleted file mode 100644
index 9f92591..0000000
Binary files a/tiff-4.6.0.tar.xz.sig and /dev/null differ
diff --git a/tiff-4.7.0-test_directory.patch b/tiff-4.7.0-test_directory.patch
new file mode 100644
index 0000000..a7fb49f
--- /dev/null
+++ b/tiff-4.7.0-test_directory.patch
@@ -0,0 +1,167 @@
+From ea6f6bd7bccbe9a80327810993b8aae5587e1307 Mon Sep 17 00:00:00 2001
+From: Su Laus
+Date: Tue, 19 Nov 2024 18:34:02 +0000
+Subject: [PATCH] Update test/test_directory.c not to fail on big-endian
+ machines. Fix memory leaks
+
+Closes #652 et #656
+---
+ test/test_directory.c | 67 ++++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 56 insertions(+), 11 deletions(-)
+
+diff --git a/test/test_directory.c b/test/test_directory.c
+index 0556da1ec..8cc376958 100644
+--- a/test/test_directory.c
++++ b/test/test_directory.c
+@@ -1365,6 +1365,7 @@ int test_rewrite_lastdir_offset(unsigned int openMode)
+ filename, N_DIRECTORIES, count);
+ goto failure;
+ }
++ /* hint: file was closed by count_directories() */
+ unlink(filename);
+ return 0;
+
+@@ -1511,6 +1512,8 @@ int test_lastdir_offset(unsigned int openMode)
+ }
+ }
+ }
++ /* hint: files are always closed by count_directories() and
++ * get_dir_offsets() */
+ unlink(filename_optimized);
+ unlink(filename_non_optimized);
+ return 0;
+@@ -1977,8 +1980,8 @@ int test_current_dirnum_incrementing(int testcase, unsigned int openMode)
+ TIFFSetSubDirectory(tif, 0);
+ CHECKCURDIRNUM_M(tif, (tdir_t)(-1), __LINE__);
+
+-/*-- Patch offset of IFD2 to not existing IFD3 without entries.
+- * Thus TIFFFetchDirectory() will fail. --*/
++ /*-- Patch offset of IFD2 to not existing IFD3 without entries.
++ * Thus TIFFFetchDirectory() will fail. --*/
+ #define TIFFReadFile_M(tif, buf, size) \
+ ((*TIFFGetReadProc(tif))(TIFFClientdata(tif), (buf), (size)));
+ #define TIFFWriteFile_M(tif, buf, size) \
+@@ -1986,51 +1989,90 @@ int test_current_dirnum_incrementing(int testcase, unsigned int openMode)
+ #define TIFFSeekFile_M(tif, off, whence) \
+ ((*TIFFGetSeekProc(tif))(TIFFClientdata(tif), (off), (whence)));
+
+- /* Code below does only handle Classic-TIFF without swapping". */
+- if (!(TIFFIsByteSwapped(tif) || TIFFIsBigTIFF(tif)))
+- {
++ /* ---------------------------------------------------------------------
++ * Test IFD index incrementing in case the functions return with certain
++ * errors. To provoke that errors, the file is patched by writing bytes
++ * directly into the file. Therefore, code below does only handle
++ * Classic-TIFF and little-endian files.
++ * The code works also on big endian machines, which have to swap some
++ * directly read/written values.
++ * --------------------------------------------------------------------- */
++ if (!(TIFFIsBigEndian(tif) || TIFFIsBigTIFF(tif)))
++ {
++ /* Patch nextIFDOffset of IFD2, which is 0, with offset to itself.
++ * This generates an IFD3 without any elements at the end of file.
++ * Reading IFD3 should provoke reading error. */
+ uint64_t ss = TIFFSeekFile_M(tif, offsetBase[2], 0);
+ uint16_t cnt = 0;
+ uint64_t rr = TIFFReadFile_M(tif, &cnt, 2);
++ if (TIFFIsByteSwapped(tif))
++ TIFFSwabShort(&cnt);
+ ss = TIFFSeekFile_M(tif, offsetBase[2] + cnt * 12 + 2, 0);
+ uint32_t wt = (uint32_t)ss;
++ if (TIFFIsByteSwapped(tif))
++ TIFFSwabLong(&wt);
+ rr = TIFFWriteFile_M(tif, &wt, 4);
+ (void)rr;
+
+ /* Now there are offsets to four IFDs in the file, where the last one is
+- * not existing and has a non-valid dircount and entries behind EOF. */
++ * not existing and has a non-valid dircount and entries behind EOF.
++ * (dircount is 458 (as offset) */
+ fprintf(stderr, "----- Expect error messages about 'Error fetching "
+ "directory link.' -----\n");
+- /* TIFFNumberOfDirectories() returns 3 */
++ /* TIFFNumberOfDirectories() returns 3 and omits the invalid fourth IFD.
++ */
+ lastdir = TIFFNumberOfDirectories(tif);
+ TIFFSetDirectory(tif, 0);
+ CHECKCURDIRNUM_M(tif, 0, __LINE__);
++
++ /* TIFFSetDirectory(3) fails with error messages:
++ * TIFFFetchDirectory: test_current_dirnum_incrementing_wl.tif:
++ * Can not read TIFF directory.
++ * TIFFReadDirectory: Failed to read directory at offset 458. */
+ fprintf(stderr, "----- Expect error messages about 'Cannot read TIFF "
+ "directory.' -----\n");
+ if (TIFFSetDirectory(tif, 3))
+ {
+ fprintf(stderr,
+- "TIFFSetDirectory(3) for IFD4 was expected to fail but "
++ "TIFFSetDirectory(3) for IFD3 was expected to fail but "
+ "succeeded for %s "
+ "at %d\n",
+ filename, __LINE__);
+ goto failure;
+ }
++
+ /* Fails in 4.6.0 */
++ /* Reading invalid IFD 3 leads to an error and was not read in.
++ * Therefore, curdir shall be 65535 (non-existing directory) */
+ CHECKCURDIRNUM_M(tif, (tdir_t)(-1), __LINE__);
+ offsetBase[3] = TIFFCurrentDirOffset(tif);
+
+- /* Point IFD3 to a location within the file, where it has now a
+- * non-valid dircount=0. */
++ /* Point IFD3 to a location within the file, where it has now for
++ * little-endian TIFF files a non-valid dircount=0, which leads also to
++ * an error and the IFD is not read in. */
+ ss = TIFFSeekFile_M(tif, offsetBase[2] + cnt * 12 + 2, 0);
+ wt = (uint32_t)(offsetBase[1] + 8);
++ // wt = (uint32_t)(ss + 400);
++ if (TIFFIsByteSwapped(tif))
++ TIFFSwabLong(&wt);
+ rr = TIFFWriteFile_M(tif, &wt, 4);
++
+ fprintf(stderr, "----- Expect error messages about 'Error fetching "
+ "directory link.' -----\n");
+- /* TIFFNumberOfDirectories() returns now 4 */
++ /* TIFFNumberOfDirectories() returns now 4, because for an IFD linked
++ * list dircount=0 is not treated as an error and there is an offset
++ * (=1) to a next IFD. Then, at the fifth IFD a link error occurs. */
+ lastdir = TIFFNumberOfDirectories(tif);
+ TIFFSetDirectory(tif, 0);
+ CHECKCURDIRNUM_M(tif, 0, __LINE__);
++
++ /* TIFFSetDirectory(3) fails with error messages:
++ * test_current_dirnum_incrementing_wl.tif: Failed to allocate
++ * memory for to read TIFF directory (0 elements of 12 bytes each).
++ * TIFFReadDirectory: Failed to read directory at offset 178.
++ * The IFD 3 is not read in and curdir is set to 65535 (non-existing
++ * directory).
++ */
+ fprintf(stderr,
+ "----- Expect error messages about 'Failed to allocate "
+ "memory for to read TIFF directory.' AND 'Failed to read "
+@@ -2044,10 +2086,12 @@ int test_current_dirnum_incrementing(int testcase, unsigned int openMode)
+ filename, __LINE__);
+ goto failure;
+ }
++
+ /* Fails in 4.6.0 */
+ CHECKCURDIRNUM_M(tif, (tdir_t)(-1), __LINE__);
+ }
+
++ TIFFClose(tif);
+ unlink(filename);
+ return 0;
+
+@@ -2136,6 +2180,7 @@ int test_curdircount_setting(unsigned int openMode)
+ CHECKCURDIRNUM_M(tif, (tdir_t)(-1), __LINE__);
+ }
+
++ TIFFClose(tif);
+ unlink(filename);
+ return 0;
+
+--
+GitLab
+
diff --git a/tiff-4.7.0.tar.xz b/tiff-4.7.0.tar.xz
new file mode 100644
index 0000000..58e7d95
--- /dev/null
+++ b/tiff-4.7.0.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:273a0a73b1f0bed640afee4a5df0337357ced5b53d3d5d1c405b936501f71017
+size 2286220
diff --git a/tiff-4.7.0.tar.xz.sig b/tiff-4.7.0.tar.xz.sig
new file mode 100644
index 0000000..ce359aa
Binary files /dev/null and b/tiff-4.7.0.tar.xz.sig differ
diff --git a/tiff-CVE-2023-52356.patch b/tiff-CVE-2023-52356.patch
deleted file mode 100644
index dc5ba6f..0000000
--- a/tiff-CVE-2023-52356.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Index: tiff-4.6.0/libtiff/tif_getimage.c
-===================================================================
---- tiff-4.6.0.orig/libtiff/tif_getimage.c
-+++ tiff-4.6.0/libtiff/tif_getimage.c
-@@ -3224,6 +3224,13 @@ int TIFFReadRGBAStripExt(TIFF *tif, uint
- if (TIFFRGBAImageOK(tif, emsg) &&
- TIFFRGBAImageBegin(&img, tif, stop_on_error, emsg))
- {
-+ if (row >= img.height)
-+ {
-+ TIFFErrorExtR(tif, TIFFFileName(tif),
-+ "Invalid row passed to TIFFReadRGBAStrip().");
-+ TIFFRGBAImageEnd(&img);
-+ return (0);
-+ }
-
- img.row_offset = row;
- img.col_offset = 0;
-@@ -3301,6 +3308,14 @@ int TIFFReadRGBATileExt(TIFF *tif, uint3
- return (0);
- }
-
-+ if (col >= img.width || row >= img.height)
-+ {
-+ TIFFErrorExtR(tif, TIFFFileName(tif),
-+ "Invalid row/col passed to TIFFReadRGBATile().");
-+ TIFFRGBAImageEnd(&img);
-+ return (0);
-+ }
-+
- /*
- * The TIFFRGBAImageGet() function doesn't allow us to get off the
- * edge of the image, even to fill an otherwise valid tile. So we
diff --git a/tiff-CVE-2024-7006.patch b/tiff-CVE-2024-7006.patch
deleted file mode 100644
index 4284024..0000000
--- a/tiff-CVE-2024-7006.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Upstream:
-3705f82b6483c7906cf08cd6b9dcdcd59c61d779
-Index: tiff-4.6.0/libtiff/tif_dirinfo.c
-===================================================================
---- tiff-4.6.0.orig/libtiff/tif_dirinfo.c
-+++ tiff-4.6.0/libtiff/tif_dirinfo.c
-@@ -887,7 +887,7 @@ const TIFFField *_TIFFFindOrRegisterFiel
- if (fld == NULL)
- {
- fld = _TIFFCreateAnonField(tif, tag, dt);
-- if (!_TIFFMergeFields(tif, fld, 1))
-+ if (fld == NULL || !_TIFFMergeFields(tif, fld, 1))
- return NULL;
- }
-
-Index: tiff-4.6.0/libtiff/tif_dirread.c
-===================================================================
---- tiff-4.6.0.orig/libtiff/tif_dirread.c
-+++ tiff-4.6.0/libtiff/tif_dirread.c
-@@ -4260,11 +4260,9 @@ int TIFFReadDirectory(TIFF *tif)
- dp->tdir_tag, dp->tdir_tag);
- /* the following knowingly leaks the
- anonymous field structure */
-- if (!_TIFFMergeFields(
-- tif,
-- _TIFFCreateAnonField(tif, dp->tdir_tag,
-- (TIFFDataType)dp->tdir_type),
-- 1))
-+ const TIFFField *fld = _TIFFCreateAnonField(
-+ tif, dp->tdir_tag, (TIFFDataType)dp->tdir_type);
-+ if (fld == NULL || !_TIFFMergeFields(tif, fld, 1))
- {
- TIFFWarningExtR(
- tif, module,
-@@ -5138,11 +5136,9 @@ int TIFFReadCustomDirectory(TIFF *tif, t
- "Unknown field with tag %" PRIu16 " (0x%" PRIx16
- ") encountered",
- dp->tdir_tag, dp->tdir_tag);
-- if (!_TIFFMergeFields(
-- tif,
-- _TIFFCreateAnonField(tif, dp->tdir_tag,
-- (TIFFDataType)dp->tdir_type),
-- 1))
-+ const TIFFField *fld = _TIFFCreateAnonField(
-+ tif, dp->tdir_tag, (TIFFDataType)dp->tdir_type);
-+ if (fld == NULL || !_TIFFMergeFields(tif, fld, 1))
- {
- TIFFWarningExtR(tif, module,
- "Registering anonymous field with tag %" PRIu16
diff --git a/tiff.changes b/tiff.changes
index 88506b4..83d2afe 100644
--- a/tiff.changes
+++ b/tiff.changes
@@ -1,3 +1,168 @@
+-------------------------------------------------------------------
+Wed Feb 5 16:26:35 UTC 2025 - Lubos Kocman
+
+- Update test/test_directory.c not to fail on big-endian machines.
+ * Add tiff-4.7.0-test_directory.patch
+ Fix memory leaks (fixes issue #652)
+ * Resolves bsc#1236834
+ fix build fail on s390x
+
+-------------------------------------------------------------------
+Mon Jan 13 10:51:52 UTC 2025 - Sarah Kriesch
+
+- Fix versioning of tiff-docs under Recommends
+
+-------------------------------------------------------------------
+Tue Nov 12 14:40:24 UTC 2024 - Marcus Rueckert
+
+- make doc packages noarch. no need to have those per arch
+- ensure that the src rpms are named per build flavor:
+ You might now ask why. Good question:
+
+ 1. the spec file during the build get patched. `@BUILD_FLAVOR@`
+ gets replaced with the value. which means the src rpm between
+ build flavor builds is not identical. Also the last built
+ src.rpm will be published. with different content and runtime
+ requires (aka our BuildRequires).
+
+ 2. for historical reasons the internal dependency tracking goes
+ via the src.rpm package. So without having differently named
+ src.rpms the build cycle we were trying to solve was not
+ actually solved. So we append a suffix to the Name attribute
+ in the preamble now.
+
+-------------------------------------------------------------------
+Mon Nov 11 17:34:34 UTC 2024 - Marcus Rueckert
+
+- In the previous change to enable the cmake based build
+ we also needed python3-Sphinx to build the man pages, as unlike
+ the autotools based build, the cmake based build does not fall
+ back to the pre-built man pages.
+
+ This causes build cycle. Split out the documentation building to
+ break the cycle. The Tumbleweed release managers preferred this
+ solution over a mini package.
+
+-------------------------------------------------------------------
+Sat Nov 9 22:56:55 UTC 2024 - Marcus Rueckert
+
+- switch build to cmake for the webp build - we need the cmake
+ finder code
+
+-------------------------------------------------------------------
+Wed Sep 18 08:02:11 UTC 2024 - Michael Vetter
+
+- Update to 4.7.0:
+ * This version restores in the default build the availability of
+ the tools that had been dropped in v4.6.0
+ See https://libtiff.gitlab.io/libtiff/rfcs/rfc2_restoring_needed_tools.html#rfc2-restoring-needed-tools
+ * Software configuration changes:
+ + autoconf build: configure.ac: avoid -Werror passed to CFLAGS to interfere with feature detection
+ + autoconf build: fix error when running make clean (fixes issue #630)
+ + autoconf build: back off the minimum required automake version to 1.11
+ + autoconf.ac: fix detection of windows.h for mingw (fixes issue #605)
+ + libtiff-4.pc: Fix Requires.private missing Lerc. It provides a .pc file
+ starting from version 4 (in autoconf builds, we assume that liblerc is at least version 4)
+ + CMake: Fix TIFF_INCLUDE_DIRS
+ + CMake: MinGW compilers don't need a .def file for shared library
+ + CMake: move libdeflate and Lerc to Requires.private
+ + CMake: enable resource compilation on all Windows.
+ * Library changes:
+ + Add TIFFOpenOptionsSetMaxCumulatedMemAlloc(). This function complements
+ TIFFOpenOptionsSetMaxSingleMemAlloc() to define the maximum cumulated memory
+ allocations in byte, for a given TIFF handle, that libtiff internal memory
+ allocation functions are allowed.
+ + TIFFWriteDirectory(): Avoid overwriting following data if an IFD is enlarged.
+ + TIFFXYZToRGB: avoid integer overflow (fixes issue #644)
+ + uv_decode() and uv_encode(): avoid potential out-of-bounds array index (fixes issue #645)
+ + Fix cases where tif_curdir is set incorrectly. Fix cases where the current directory number (tif_curdir)
+ is set inconsistently or incorrectly, depending on the previous history.
+ + TIFFRead[Scanline/EncodedStrip/EncodeTile]: 0-initialize output buffer if setupdecode fails ;
+ most codecs: zero-initialize (not-yet-written parts of) output buffer if failure (fixes issue #375)
+ + OJPEG: reset subsampling_convert_state=0 in OJPEGPreDecode (fixes issue #183)
+ + ThunderRLE: fix failure when decoding last run. Bug seen with GhostPDL
+ + LERC codec: deal with issues with multi-band PlanarConfig=Contig and NaN values
+ + tif_fax3.c: error out after a number of times end-of-file has been reached (fixes issue #583)
+ + LZW: avoid warning about misaligned address with UBSAN (fixes issue #616)
+ + TIFFReadRGBAStrip/TIFFReadRGBATile: add more validation of col/row (fixes issue #622, CVE-2023-52356)
+ + tif_dirread.c: only issue TIFFGetFileSize() for large enough RAM requests
+ + Avoid FPEs (division by zero) in tif_getimage.c.
+ + Avoiding FPE (division by zero) for TIFFhowmany_32() and TIFFhowmany_64() macros by checking for
+ denominator not zero before macros are executed. (fixes issue #628)
+ + Add non-zero check before division in TIFFComputeStrip()
+ + Fix wrong return of TIFFIsBigTIFF() in case byte-swapping is active
+ + Setting the TIFFFieldInfo field set_field_type should consider field_writecount not field_readcount
+ + Avoid memory leaks when using TIFFCreateDirectory() by releasing the allocated memory in the tif-structure.
+ + For non-terminated ASCII arrays, the buffer is first enlarged before a NULL is set at the end to
+ avoid deleting the last character. (fixes issue #579)
+ + Check return value of _TIFFCreateAnonField(). (fixes issue #624, CVE-2024-7006)
+ + Prevent some out-of-memory attacks (https://gitlab.com/libtiff/libtiff/-/issues/614#note_1602683857)
+ + Ensure absolute seeking is forced independent of TIFFReadDirectory success. (fixes issue #618)
+ + tif_dirinfo.c: re-enable TIFFTAG_EP_CFAREPEATPATTERNDIM and TIFFTAG_EP_CFAPATTERN tags (fixes issue #608)
+ + Fix warnings with GCC 14
+ + tif_dir.c: Log source file, line number, and input tif for directory count error (fixes issue #627)
+ + Last usage of get_field_type of TIFFField structure at TIFFWriteDirectorySec() changed to using set_field_type.
+ + tif_jpeg.c/tif_ojpeg.c: remove likely ifdef tricks related to old compilers or unusual setups
+ + Remove _TIFFUInt64ToFloat() and _TIFFUInt64ToDouble()
+ + Remove support for _MSC_VER < 1500.
+ + Use #ifdef _WIN32 to test for Windows, and tiffio.h: remove definition of __WIN32__
+ * Documentation:
+ + Amend manpages for changes in current directory index behaviour
+ + Note on using TIFFFlush() before TIFFClose() to check that the data has been successfully written to the file. (fixes issue #506)
+ + Update TIFF documentation about TIFFOpenOptions.rst and TIFFOpenOptionsSetMaxSingleMemAlloc() usage and some other small fixes (relates to CVE-2024-7006)
+ * Re-added tools:
+ + fax2ps
+ + fax2tiff
+ + pal2rgb
+ + ppm2tiff
+ + raw2tiff
+ + rgb2ycbcr (not installed)
+ + thumbnail (not installed)
+ + tiff2bw
+ + tiff2rgba
+ + tiffcmp
+ + tiffcrop
+ + tiffdither
+ + tiffgt
+ + tiffmedian
+ + tiff2ps
+ + tiff2pdf
+ * New/improved functionality:
+ + tiff2rgba: Add background gradient option for alpha compositing
+ + tiffcp: -i flag restored
+ * Bug fixes for tools:
+ + tiffcrop: address Coverity scan issues 1605444, 1605445, and 16054
+ + tiffcrop: Apply "Fix heap-buffer-overflow in function extractImageSection"
+ + tiffcrop: fix buffer overflows, use after free (fixes issue #542, issue #550, issue #552)
+ + tiff2pdf: address Coverity scan issues
+ + tiff2pdf: fix inconsistent PLANARCONFIG value for the input and output TIFF
+ + tiff2pdf: fix issue with JPEG restart-interval marker when converting from JPEG-compressed files (fixes issue #539)
+ + tiff2pdf: red and blue were being swapped for RGBA decoding (fixes issue #253)
+ + tiff2pdf: fixes issue #596
+ + thumbnail: address Coverity scan issues
+ + tiffcp: Add check for limitMalloc return to fix Coverity 1603334
+ + tiffcp: preserve TIFFTAG_REFERENCEBLACKWHITE when doing YCbCr JPEG -> YCbCr JPEG
+ + tiffcp: replace PHOTOMETRIC_YCBCR with PHOTOMETRIC_RGB when outputing to compression != JPEG (refs issue #571)
+ + tiffcp: do not copy tags YCBCRCOEFFICIENTS, YCBCRSUBSAMPLING, YCBCRPOSITIONING, REFERENCEBLACKWHITE. Only set YCBCRSUBSAMPLING when generating YCbCr JPEG
+ + tiffcp: Check also codec of input image, not only from output image (fixes issue #606)
+ + Add some basic sanity checks for tiffcp and tiffcrop RGB->YCbCr JPEG conversions.
+ + fax2ps and fax2tiff: memory leak fixes (fixes issue #476)
+ + tiffmedian: memory leak fixes (fixes issue #599)
+ + fax2tiff: fix EOFB interpretation (fixes issue #191)
+ + fax2tiff: fix issue with unreasonable width input (fixes issue #249)
+ + tiffcp and tiffcrop: fixes issue #228
+ + tiff2rgba: fixes issue #469
+ + tiffdither: fixes issue #473
+ + tiffdump: fix wrong printf formatter in error message (Coverity 1472932)
+ + tiffset: avoid false positive Coverity Scan warning on 64-bit builds (Coverity 1518997)
+ + tifcp/tiffset: use correct format specifiers
+ * Changes to contributed and unsupported tools
+ + contrib/addtiffo: validate return of TIFFWriteEncodedXXXX() calls (Coverity 1024680)
+- Remove patches contained in upstream:
+ * tiff-CVE-2023-52356.patch
+ * tiff-CVE-2024-7006.patch
+- Tools are not built for now due to test failure: `FAIL: tiffcp-32bpp-None-jpeg.sh`
+
-------------------------------------------------------------------
Mon Aug 19 06:30:27 UTC 2024 - Michael Vetter
diff --git a/tiff.spec b/tiff.spec
index 66d7c81..c7fad64 100644
--- a/tiff.spec
+++ b/tiff.spec
@@ -1,7 +1,7 @@
#
# spec file for package tiff
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,10 +16,24 @@
#
+%global build_flavor @BUILD_FLAVOR@%{nil}
+
+%if "%{?build_flavor}" == "man"
+%bcond_without tiff_manpages
+%else
+%bcond_with tiff_manpages
+%endif
+
%define asan_build 0
%define debug_build 0
+%define pkg_name tiff
+
+%if "%{build_flavor}" == ""
Name: tiff
-Version: 4.6.0
+%else
+Name: tiff-%{build_flavor}
+%endif
+Version: 4.7.0
Release: 0
Summary: Tools for Converting from and to the Tagged Image File Format
License: HPND
@@ -31,8 +45,12 @@ Source2: README.SUSE
Source3: baselibs.conf
Source99: tiff.keyring
Patch0: tiff-4.0.3-seek.patch
-Patch1: tiff-CVE-2023-52356.patch
-Patch2: tiff-CVE-2024-7006.patch
+# PATCH-FIX-UPSTREAM tiff-4.7.0-test_directory.patch based on commit ea6f6bd7bccb bsc#1236834
+Patch1: tiff-4.7.0-test_directory.patch
+%if %{with tiff_manpages}
+BuildRequires: %{primary_python}-Sphinx
+%endif
+BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: libjbig-devel
BuildRequires: libjpeg-devel
@@ -41,6 +59,7 @@ BuildRequires: lzma-devel
BuildRequires: pkgconfig
BuildRequires: pkgconfig(libzstd)
BuildRequires: pkgconfig(zlib)
+Recommends: tiff-docs = %{version}
%description
This package contains the library and support programs for the TIFF
@@ -62,55 +81,89 @@ Group: Development/Libraries/C and C++
Requires: glibc-devel
Requires: libstdc++-devel
Requires: libtiff6 = %{version}
+Recommends: libtiff-devel-docs = %{version}
%description -n libtiff-devel
This package contains the header files and static libraries for
developing programs which will manipulate TIFF format image files using
the libtiff library.
+%if %{with tiff_manpages}
+
+%package -n tiff-docs
+Summary: Development Tools for Programs which will use the libtiff Library
+Group: Productivity/Graphics/Convertors
+Requires: tiff = %{version}
+BuildArch: noarch
+
+%description -n tiff-docs
+This package contains the header files and static libraries for
+developing programs which will manipulate TIFF format image files using
+the libtiff library.
+
+This package holds the man pages for the command lint tools.
+
+%package -n libtiff-devel-docs
+Summary: Development Documentation for Programs which will use the libtiff Library
+Group: Development/Libraries/C and C++
+Requires: libtiff-devel = %{version}
+BuildArch: noarch
+
+%description -n libtiff-devel-docs
+This package contains the header files and static libraries for
+developing programs which will manipulate TIFF format image files using
+the libtiff library.
+
+This package holds the development man pages.
+%endif
+
%prep
-%autosetup -p1
+%autosetup -p1 -n %{pkg_name}-%{version}
%build
-CFLAGS="%{optflags} -fPIE"
+CFLAGS="%{optflags} -fPIC"
%if %{debug_build}
CFLAGS="$CFLAGS -O0"
%endif
-%configure --disable-static
+# tools are not enabled for now due to test failure `FAIL: tiffcp-32bpp-None-jpeg.sh`
+%cmake
%if %{asan_build}
find -name Makefile | xargs sed -i 's/\(^CFLAGS.*\)/\1 -fsanitize=address/'
%endif
-%make_build LDFLAGS="-pie"
+%cmake_build
%install
-mkdir -p %{buildroot}/{%{_mandir}/{man1,man3},usr/{bin,lib,include}}
-%make_install
-for f in `find %{buildroot}/%{_mandir} -type f -print ` ; do
- if [ `wc -l <$f` -eq 1 ] && grep -q "^\.so " $f ; then
- linkto=`sed -e "s|^\.so ||" $f`
- [ -f "`dirname $f`/$linkto" ] && ln -sf "$linkto" $f
- fi
-done
+%cmake_install
cp %{SOURCE2} .
-rm -rf %{buildroot}%{_datadir}/doc/tiff*
+rm -rf %{buildroot}%{_datadir}/doc/{,packages/}tiff*
find %{buildroot} -type f -name "*.la" -delete -print
+%if %{with tiff_manpages}
+rm -rv \
+ %{buildroot}%{_bindir} \
+ %{buildroot}%{_libdir} \
+ %{buildroot}%{_includedir}
+
+%files -n tiff-docs
+%{_mandir}/man1/*
+
+%files -n libtiff-devel-docs
+%{_mandir}/man3/*
+
+%else
%check
%if %{asan_build}
# ASAN needs /proc to be mounted
exit 0
%endif
-for i in tools test; do
- (cd $i && make %{?_smp_mflags} check)
-done
+%ctest
%ldconfig_scriptlets -n libtiff6
%files
%{_bindir}/*
%doc README.md VERSION ChangeLog TODO RELEASE-DATE
-%{_mandir}/man1/*
%files -n libtiff6
%license LICENSE.md
@@ -121,6 +174,7 @@ done
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
-%{_mandir}/man3/*
+%{_libdir}/cmake/tiff/
+%endif
%changelog