defining float_t as double breaks libreoffice autopkgtest with glibc 2.33 on s390x
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
clucene-core (Ubuntu) |
Fix Released
|
Undecided
|
Balint Reczey | ||
libreoffice (Ubuntu) |
Fix Released
|
Undecided
|
Balint Reczey |
Bug Description
Glibc 2.33 changed the float_t type from double to compiler-defined which is float on s390x:
https:/
...
* On s390(x), the type float_t is now derived from the macro
__FLT_
hardcoded to double. This does not affect the ABI of any libraries
that are part of the GNU C Library, but may affect the ABI of other
libraries that use this type in their interfaces. The new definition
improves consistency with compiler behavior in many scenarios.
...
To not break clucene's ABI accidentally clucene fixed float_t to be double:
clucene-core (2.3.3.
* Fix float_t abi to double ahead of glibc change.
-- Dimitri John Ledkov <email address hidden> Mon, 01 Feb 2021 10:22:06 +0000
This conflicts with GCC's definition in libreoffice's autopkgtest:
https:/
...
configure: error: Your version of libclucene has contribs-lib missing.
Error running configure at ./autogen.sh line 299.
make: *** [debian/rules:1936: config_host.mk] Error 25
...
In local reproduction the error is the following:
...
configure:22199: checking for CLucene/
configure:22199: s390x-linux-gnu-g++ -c -g1 -O2 -ffile-
In file included from /usr/include/
/usr/include/
72 | typedef double float_t;
| ^~~~~~~
In file included from /usr/include/
/usr/include/
149 | typedef float float_t;
| ^~~~~~~
configure:22199: $? = 1
...
CLucene upstream did not react to the bug report /sourceforge. net/p/clucene/ bugs/233/
https:/
IMO the cleanest fix is changing the ABI to let float_t be float and providing the shared library using a different name, at least on s390x.