Recently I found that CI built macOS binaries do not work out-of-box:
it complains libzstd missing because SBCL from Homebrew is built with
core-compression support.
So I have changed to use upstream sbcl binary instead.
The situation for gmp support is similar to windows: we can not assume
libgmp.dylib is present on system.
So I changed CI to bundle gmp library, and changed code to load bundled
gmp library if there's no system gmp library.
- Qian
https://github.com/oldk1331/fricas/commit/dbc3a563caf892374782e808f790f5442620816f.patch
diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml
index 8439f76e..d4737664 100644
--- a/.github/workflows/macOS.yml
+++ b/.github/workflows/macOS.yml
@@ -19,14 +19,17 @@ jobs:
- name: configure
run: |
mkdir ../build && cd ../build
- ../fricas/configure
--with-lisp=${GITHUB_WORKSPACE}/sbcl-${SBCL_VER}-x86-64-darwin/run-sbcl.sh
|| cat config.log
+ ../fricas/configure
--with-lisp=${GITHUB_WORKSPACE}/sbcl-${SBCL_VER}-x86-64-darwin/run-sbcl.sh
--enable-gmp || cat config.log
- name: make
run: cd ../build && make -j3
- name: make check
run: cd ../build && make check -j3
- name: Create artifact archives
run: |
- cd ../build && make dist-osx-dmg
+ cd ../build
+ make dist-macos
+ cp -v `brew list gmp | grep libgmp.10.dylib`
FriCAS.app/Contents/Resources/usr/local/lib/fricas/target/*/lib/
+ make dist-macos-dmg
mv FriCAS.dmg ../fricas/FriCAS-macOS-x86_64-${{ github.sha }}.dmg
- name: Upload macOS binary
uses: actions/upload-artifact@v3
diff --git a/Makefile.in b/Makefile.in
index 2961de19..c370d32b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -247,7 +247,7 @@ ${DIST_TARBALL}: out-of-source-check lastBuildDate
dist-help dist-lisp dist-doc
dist: ${DIST_TARBALL}
-dist-osx-dmg: out-of-source-check
+dist-macos: out-of-source-check
-rm -rf FriCAS.app FriCAS.dmg
${MKDIR_P} FriCAS.app/Contents/{MacOS,Resources}
${MAKE} DESTDIR=./FriCAS.app/Contents/Resources install-src
@@ -255,6 +255,8 @@ dist-osx-dmg: out-of-source-check
cp $(fricas_top_srcdir)/contrib/macos/Info.plist
./FriCAS.app/Contents/
cp $(fricas_top_srcdir)/contrib/macos/appIcon.icns
./FriCAS.app/Contents/Resources/
cc -framework CoreFoundation
$(fricas_top_srcdir)/contrib/macos/FriCAS.c -o
./FriCAS.app/Contents/MacOS/FriCAS
+
+dist-macos-dmg:
hdiutil create -srcfolder FriCAS.app FriCAS.dmg
clean-distdir:
diff --git a/src/lisp/num_gmp.lisp b/src/lisp/num_gmp.lisp
index f4a022ad..212e9d40 100644
--- a/src/lisp/num_gmp.lisp
+++ b/src/lisp/num_gmp.lisp
@@ -838,11 +838,16 @@
(sb-ext:lock-package "COMMON-LISP")))
(defun load-gmp-lib ()
- #-:WIN32 (ignore-errors (|quiet_load_alien| "libgmp.so") t)
- #+:WIN32 (if (ignore-errors (|quiet_load_alien| "libgmp-10.dll") t)
- t
- (ignore-errors (|quiet_load_alien|
- (BOOT::make-absolute-filename
"/lib/libgmp-10.dll")) t)))
+ (setq system-gmp-name #+:WIN32 "libgmp-10.dll"
+ #-:WIN32 "libgmp.so")
+ (setq bundled-gmp-name #+:WIN32 "/lib/libgmp-10.dll"
+ #+:DARWIN "/lib/libgmp.10.dylib"
+ #-(or :WIN32 :DARWIN) nil)
+ (if (ignore-errors (|quiet_load_alien| system-gmp-name) t)
+ t
+ (and bundled-gmp-name
+ (ignore-errors (|quiet_load_alien|
+ (BOOT::make-absolute-filename bundled-gmp-name)) t))))
(defun init-gmp(wrapper-lib)
(if (not *gmp-multiplication-initialized*)