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