Control: tags -1 +confirmed +upstream On Sun, Nov 22, 2020 at 9:27 AM Anton Gladky <gl...@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