[libcutl-users] Re: Bug#975430: libcutl: FTBFS against boost_1.74

László Böszörményi (GCS) gcs at debian.org
Sun Nov 22 07:10:14 EST 2020


Control: tags -1 +confirmed +upstream

On Sun, Nov 22, 2020 at 9:27 AM Anton Gladky <gladk at debian.org> wrote:
> Package: libcutl
> Version: 1.10.0+ds1-3
> Usertags: boost174
>
> it was discovered that your package failed to build
> against boost_1.74. Logs can be found here [1]. Most relevant
> part is probably this:
>
> libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I.. -DLIBCUTL_DYNAMIC_LIB -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c fs/auto-remove.cxx -o fs/auto-remove.o >/dev/null 2>&1
> In file included from /usr/include/boost/config/detail/select_stdlib_config.hpp:24,
>                  from /usr/include/boost/config.hpp:44,
>                  from /usr/include/boost/regex/config.hpp:44,
>                  from /usr/include/boost/regex.hpp:28,
>                  from re/re.cxx:12:
> ../version:1:1: error: expected unqualified-id before numeric constant
 It's a simple name clash. GCC contains a standard C++ library file, a
header named version [1] which contains macro definitions for
information about the C++ standard library. Boost check if this is
available [2] and if yes, blindly include that [3] (can it be
std/version instead?). This is OK, but libcutl has a version named
file [4] as well only containing the project version number.
Then in the cutl/ subdirectory re/re.cxx tried to be compiled with the
following command line:
g++ -DHAVE_CONFIG_H -I.. -I.. -DLIBCUTL_DYNAMIC_LIB -Wdate-time
-D_FORTIFY_SOURCE=2 -g -O2
-fdebug-prefix-map=[COMPILE_DIRECTORY]/libcutl/libcutl-1.10.0+ds1=.
-fstack-protector-strong -Wformat -Werror=format-security -c re/re.cxx
 -fPIC -DPIC -o re/.libs/re.o
Early on it has -I.. to include the libcutl top level source directory
to search for headers. This is where its version file found before the
standard C++ one. This makes g++ first choke with '../version:1:1:
error: too many decimal points in number' then with '../version:1:1:
error: expected unqualified-id before numeric constant'.
This might be prevented by Boost include std/version (making the path
more unique), libcutl to place standard C++ header include paths first
or by renaming its version file to version.txt or something like that.
I think the Boost solution would be the best, multiple projects might
have a 'version' named file. It's not my call, I don't have contact
with them. Meanwhile I can remove 'version' from libcutl as it seems
it's unused.

Regards,
Laszlo/GCS
[1] https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/include/std/version;h=42ed7cb74d38ce02845afc134ac0c9efa9063a3d;hb=HEAD
[2] https://github.com/boostorg/config/blob/develop/include/boost/config/detail/select_stdlib_config.hpp#L19
[3] https://github.com/boostorg/config/blob/develop/include/boost/config/detail/select_stdlib_config.hpp#L24
[4] https://git.codesynthesis.com/cgit/libcutl/libcutl/tree/version



More information about the libcutl-users mailing list