Subject: Re: bug#41246: freehdl fails to build
From: Marius Bakke <[email-masked]>
To: tsmish <[email-masked]>, [email-masked]
Date: Thu, 14 May 2020 00:23:52 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

tsmish <[email-masked]> writes:

> Attaching build log.
> commit: 8ba4d8a347fbdf9fe09e8ac801b4ac0586ac382a

Thanks!

> /gnu/store/6wn346cbw1mh6264v426pwj2klgvxr0z-gcc-5.5.0/include/c++/cstdlib:266:22: error: ‘__gnu_cxx::strtold’ has not been declared
>    using ::__gnu_cxx::strtold;
>                       ^
> In file included from fire-types.cc:9:0:
> /gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/include/c++/stdlib.h:38:12: error: ‘std::abort’ has not been declared
>  using std::abort;

Using multiple versions of GCC in the same package is poorly supported
since the recent 'core-updates' merge, causing these obscure errors.

The actual problem with FreeHDL is that it assumes std::string,
std::hash, etc is available in the default namespace, which is why it
was built with GCC 5 instead of the default GCC 7.  I found a patch over
at Arch that makes it work with newer versions of GCC and C++:

https://git.archlinux.org/svntogit/community.git/tree/trunk/build-fix.patch?h=packages/freehdl

I applied it to our package with commit
1a044e3936ac4c1ba1575fe791bf59577b039cf9 and removed the GCC 5 input.