semigroups / Semigroups

The GAP package Semigroups
https://semigroups.github.io/Semigroups/
Other
23 stars 35 forks source link

Build fails on musl due to missing type #996

Closed orlitzky closed 6 months ago

orlitzky commented 6 months ago

Original report: https://bugs.gentoo.org/924165

When using the musl C library, semigroups fails to build with the error,

src/to_gap.hpp: In member function 'OpaqueBag* gapbind14::to_gap<libsemigroups::PBR>::operator()(libsemigroups::PBR) const':
src/to_gap.hpp:469:12: error: 'u_int32_t' was not declared in this scope; did you mean 'uint32_t'?
  469 |       for (u_int32_t i = 0; i < 2 * x.degree(); i++) {
      |            ^~~~~~~~~
      |            uint32_t

From what I gather, the u_int32_t alias is a GNUism, defined in sys/types.h shipped by glibc, but not guaranteed to exist anywhere else. The musl libc, for example, does not typedef it unless #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE).

Hopefully this is as simple as deleting the first underscore to obtain the ISO type uint32_t.

james-d-mitchell commented 6 months ago

Thanks @orlitzky, I think this is is just a typo really, and can safely be replaced with uint32_t. We are testing libsemigroups with musl, but not Semigroups.