On Wed, Nov 08, 2023 at 08:28:22AM +0800, Qian Yun wrote:
> 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.

We alreay have '--with-gmp-lib=' configure option.  This option was
added exactly to solve problem that you mention: we can not assume
that Mac OSX has GMP library in a fixed location.  I am affraid that
your patch below would break '--with-gmp-lib=' for people who
need it.  It would be better just to use '--with-gmp-lib=', so that
it works for everybody.

BTW: Probably it would be better to use '--with-gmp-lib=' also on
Windows, but I am not sure if anybody used '--with-gmp-lib=' on
Windows, while AFAIK it is used on Mac OSX.

> 
> - 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*)
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "FriCAS - computer algebra system" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to fricas-devel+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/fricas-devel/012796c4-3cc8-4480-b9df-5bc8579b3569%40gmail.com.

-- 
                              Waldek Hebisch

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/ZUuUqLAl1DhXZS%2BF%40fricas.org.

Reply via email to