Skip to content

Commit

Permalink
giac: fix #include <giac/giac.h> in musl
Browse files Browse the repository at this point in the history
As reported in void-linux#45708, including <giac/giac.h> fails in musl because the
HAVE_TGAMMAF macro from autotools is not available at this time.

Here we include a patch adapted from
geogebra/giac@618a5de
which is the solution upstream will include in next release of giac.

We need to fix this now so we can build sagemath in musl!
  • Loading branch information
tornaria committed Aug 23, 2023
1 parent 76b02c1 commit 46fd35d
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
40 changes: 40 additions & 0 deletions srcpkgs/giac/patches/fix-fgamma.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Adapted from
https://github.com/geogebra/giac/commit/618a5de3349f8def5bdb909fea42fb447b6aad4a

--- a/src/usual.cc
+++ b/src/usual.cc
@@ -81,6 +81,16 @@ using namespace std;
#define sprintf256 sprintf
#endif

+#if defined HAVE_TGAMMAF || defined __APPLE__ || defined EMCC || defined EMCC2 || defined NO_BSD
+inline float fgamma(float f1){ return tgammaf(f1); }
+#else
+#if defined(__MINGW_H) || defined(VISUALC) || defined(FXCG)// FIXME gamma, not used
+inline float fgamma(float f1){ return f1; }
+#else
+inline float fgamma(float f1){ return gammaf(f1); } // or tgammaf(f1) on some versions of emscripten
+#endif
+#endif
+
#ifndef NO_NAMESPACE_GIAC
namespace giac {
#endif // ndef NO_NAMESPACE_GIAC
--- a/src/first.h
+++ b/src/first.h
@@ -578,15 +578,6 @@ inline float ffloor(float f1){
#endif
}
inline float finv(float f1){ return 1/f1; }
-#if defined HAVE_TGAMMAF || defined __APPLE__ || defined EMCC || defined EMCC2 || defined NO_BSD
-inline float fgamma(float f1){ return tgammaf(f1); }
-#else
-#if defined(__MINGW_H) || defined(VISUALC) || defined(FXCG)// FIXME gamma, not used
-inline float fgamma(float f1){ return f1; }
-#else
-inline float fgamma(float f1){ return gammaf(f1); } // or tgammaf(f1) on some versions of emscripten
-#endif
-#endif
#ifdef FXCG
inline float atan2f(float f1,float f2,int rad){ if (rad) return std::atan2(f1,f2); else return std::atan2(f1,f2)*180/3.14159265358979323846;}
#else
6 changes: 5 additions & 1 deletion srcpkgs/giac/template
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Template file for 'giac'
pkgname=giac
version=1.9.0.57
revision=1
revision=2
build_style=gnu-configure
configure_args="--disable-micropy --disable-quickjs"
hostmakedepends="automake gettext-devel libtool"
Expand Down Expand Up @@ -56,6 +56,10 @@ pre_configure() {
post_install() {
# remove duplicates
rm -r ${DESTDIR}/usr/share/doc

echo "giac: check that '#include <giac/giac.h>' works (see #45708)"
echo '#include <giac/giac.h>' |
gcc -c -isystem "${DESTDIR}/usr/include" -xc++ - -o /dev/null
}

libgiac_package() {
Expand Down

0 comments on commit 46fd35d

Please sign in to comment.