leto / math--gsl

Perl interface to the GNU Scientific Library
http://leto.net/code/Math-GSL
34 stars 25 forks source link

Math-GSL v0.43 / GSL 2.7: undefined symbol: gsl_matrix_char_norm1, gsl_spmatrix_char_norm1 on architectures where char is unsigned #243

Open fschlich opened 3 years ago

fschlich commented 3 years ago

Hi,

in Debian we're experiencing build failures on some architectures with Math-GSL v0.43 and GSL 2.7.: see https://buildd.debian.org/status/package.php?p=libmath-gsl-perl for an overview and https://buildd.debian.org/status/fetch.php?pkg=libmath-gsl-perl&arch=arm64&ver=0.43-1&stamp=1632072156&raw=0 as an example build log.

This was not the case previously with Math-GSL v0.42 and GSL 2.6.: https://buildd.debian.org/status/package.php?p=libmath-gsl-perl&suite=bullseye

Note that Debian regenerates all pre-built files such as xs/* by running perl ./Build clean as part of the build process.

The corresponding Debian bug is https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=994736, where Nico Tyni notes:

The failing architectures are the ones where char is unsigned.

  https://github.com/leto/math--gsl/issues/231

  https://lists.gnu.org/archive/html/bug-gsl/2021-06/msg00004.html

are probably related but "the other way around": aiui they disabled
the exposure of the unsigned char versions of the functions, which were
missing on the signed char architectures.

Any advice on how this might be fixed is much appreciated.

eserte commented 4 months ago

I see the same problem on freebsd 14 @ arm64:

#   Failed test 'use Math::GSL::Matrix;'
#   at t/00-load.t line 14.
#     Tried to use 'Math::GSL::Matrix'.
#     Error:  Can't load '/home/cpansand/.cpan/build/2024061212/Math-GSL-0.44-1/blib/arch/auto/Math/GSL/Matrix/Matrix.so' for module Math::GSL::Matrix: /home/cpansand/.cpan/build/2024061212/Math-GSL-0.44-1/blib/arch/auto/Math/GSL/Matrix/Matrix.so: Undefined symbol "gsl_matrix_char_norm1" at /usr/perl5.40.0/lib/5.40.0/aarch64-freebsd/DynaLoader.pm line 206.
# # Compilation failed in require at t/00-load.t line 14.
# BEGIN failed--compilation aborted at t/00-load.t line 14.
...