Bug 2253509
Summary: | libtiff-devel on Fedora 39 is built incorrectly so i686 and x86_64 can not be installed at once | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | William Bader <williambader> |
Component: | libtiff | Assignee: | Michal Hlavinka <mhlavink> |
Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | high | Docs Contact: | |
Priority: | unspecified | ||
Version: | 39 | CC: | mmuzila, nforro, phracek, whydoubt, williambader |
Target Milestone: | --- | Keywords: | Regression, Upgrades |
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | libtiff-4.4.0-10.fc39 | Doc Type: | --- |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2024-11-08 01:20:31 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
William Bader
2023-12-07 19:05:27 UTC
I built tiff-4.6.0 from source for 32 and 64 bits and compared the generated tiffconf.h I started the 32 bit build with CFLAGS=-m32 CPPFLAGS=-m32 LDFLAGS=-m32 CXXFLAGS=-m32 ./configure and the 64 bit build with ./configure then did a make, saved the tiffconf.h, and then did a 'make distclean'. The main difference is TIFF_SSIZE_T, but a predefined compiler macro could select that. The other differences are either because Fedora 39 doesn't provide 32 bit libraries for JBIG, LERC, or LIBDEFLATE or because I haven't installed them. Both gcc and clang set __i386__ for 32 bit compiles and __x86_64__ for 64 bit compiles, so at worst, the libtiff-devel packages could install a corresponding tiffconf-32.h or tiffconf-64.h and share a tiffconf.h that uses __i386__ or __x86_64__ to select which tiffconf-#.h to include. $ diff tiffconf-32.h tiffconf-64.h 48c48 < #define TIFF_SSIZE_T int32_t --- > #define TIFF_SSIZE_T int64_t 79c79 < /* #undef JBIG_SUPPORT */ --- > #define JBIG_SUPPORT 1 82c82 < /* #undef LERC_SUPPORT */ --- > #define LERC_SUPPORT 1 110c110 < /* #undef LIBDEFLATE_SUPPORT */ --- > #define LIBDEFLATE_SUPPORT 1 This seems to be how it was done on RHEL8 where tiffconf.h is #ifndef TIFFCONF_H_MULTILIB #define TIFFCONF_H_MULTILIB #include <bits/wordsize.h> #if __WORDSIZE == 32 # include "tiffconf-32.h" #elif __WORDSIZE == 64 # include "tiffconf-64.h" #else # error "unexpected value for __WORDSIZE macro" #endif #endif $ diff tiffconf-32.h tiffconf-64.h 18c18 < #define TIFF_INT64_T signed long long --- > #define TIFF_INT64_T signed long 30c30 < #define TIFF_UINT64_T unsigned long long --- > #define TIFF_UINT64_T unsigned long 36c36 < #define TIFF_SSIZE_T signed int --- > #define TIFF_SSIZE_T signed long RHEL8 has libtiff-4.0 while Fedora 39 has libtiff-4.4. The newer libtiff moved to using int32_t and int64_t instead of int, long, long long, so the 32 and 64 bit headers have fewer differences. On my Fedora 39 system, I temporarily made the patch $ diff -u tiffconf.h- tiffconf.h --- tiffconf.h- 2023-08-27 20:00:00.000000000 -0400 +++ tiffconf.h 2023-12-07 14:58:51.126175761 -0500 @@ -39,7 +39,11 @@ /* #undef TIFF_UINT8_T */ /* Signed size type */ +#if defined(__i386__) +#define TIFF_SSIZE_T int32_t +#else #define TIFF_SSIZE_T int64_t +#endif /* Compatibility stuff. */ There has been a fix in place for the 32-bit/64-bit header issue going back many releases. However, it depended on the output of `uname -i`, whose behavior changed with Fedora 38. I have made a PR to fix this in rawhide: https://src.fedoraproject.org/rpms/libtiff/pull-request/7 Thanks for looking into the problem! I see what the comment means, on Fedora 39 `uname -i` returns "unknown" while on RHEL 7 and 8 it returns "x86_64", but `uname -m` returns "x86_64" everywhere. Regards, William FEDORA-2024-5fbec0afbd (libtiff-4.4.0-10.fc39) has been submitted as an update to Fedora 39. https://bodhi.fedoraproject.org/updates/FEDORA-2024-5fbec0afbd FEDORA-2024-5fbec0afbd has been pushed to the Fedora 39 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-5fbec0afbd` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-5fbec0afbd See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. Thank you! I've already updated to Fedora 40. The problem is on Fedora 40 also. Can you fix it on Fedora 40? Regards, William $ rpm -qa | grep tiff | grep devel libtiff-devel-4.6.0-2.fc40.x86_64 $ sudo dnf install libtiff-devel.i686 Last metadata expiration check: 0:31:24 ago on Thu 24 Oct 2024 08:32:10 AM CEST. Dependencies resolved. ================================================================================================================================================================================= Package Architecture Version Repository Size ================================================================================================================================================================================= Installing: libtiff-devel i686 4.6.0-2.fc40 fedora 259 k Transaction Summary ================================================================================================================================================================================= Install 1 Package Total download size: 259 k Installed size: 709 k Is this ok [y/N]: y Downloading Packages: libtiff-devel-4.6.0-2.fc40.i686.rpm 355 kB/s | 259 kB 00:00 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 282 kB/s | 259 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executing 'dnf clean packages'. Error: Transaction test error: file /usr/include/tiffconf.h from install of libtiff-devel-4.6.0-2.fc40.i686 conflicts with file from package libtiff-devel-4.6.0-2.fc40.x86_64 Thanks again!!! It is working on Fedora 40. I was able to install both the 32 and 64 bit versions of libtiff-devel. $ rpm -q libtiff-devel libtiff-devel-4.6.0-5.fc40.1.x86_64 libtiff-devel-4.6.0-5.fc40.1.i686 $ ls -l /usr/include/tiff* -rw-r--r-- 1 root root 59865 Jul 18 2023 /usr/include/tiff.h -rw-r--r-- 1 root root 3977 Oct 23 02:00 /usr/include/tiffconf-32.h -rw-r--r-- 1 root root 3977 Oct 23 02:00 /usr/include/tiffconf-64.h -rw-r--r-- 1 root root 250 Oct 23 02:00 /usr/include/tiffconf.h -rw-r--r-- 1 root root 28488 Sep 5 2023 /usr/include/tiffio.h -rw-r--r-- 1 root root 1525 May 22 2023 /usr/include/tiffio.hxx -rw-r--r-- 1 root root 1415 Oct 23 02:00 /usr/include/tiffvers.h FEDORA-2024-5fbec0afbd (libtiff-4.4.0-10.fc39) has been pushed to the Fedora 39 stable repository. If problem still persists, please make note of it in this bug report. |