diff --git a/.github/actions/deploy-macosx/action.yml b/.github/actions/deploy-macosx/action.yml
index 690321c6aaa..57252db5294 100644
--- a/.github/actions/deploy-macosx/action.yml
+++ b/.github/actions/deploy-macosx/action.yml
@@ -24,7 +24,7 @@ runs:
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/MacOSX10*
fi
- brew uninstall --force --ignore-dependencies gcc gcc@7 gcc@8 gcc@9 gcc@10 gcc@11 gcc@12 gcc@13 little-cms2 maven openblas r
+ brew uninstall --force --ignore-dependencies gcc gcc@7 gcc@8 gcc@9 gcc@10 gcc@11 gcc@12 gcc@13 gcc@14 little-cms2 maven openblas r
brew install boost ccache swig autoconf-archive automake cmake libomp libtool libusb ant nasm xz pkg-config sdl2 gpg1 bison flex perl ragel binutils gradle gmp isl libmpc mpfr geoip pcre ssdeep yajl
brew link --force libomp
@@ -33,31 +33,27 @@ runs:
# brew unlink cmake
# brew install cmake.rb
+ FORMULAE=()
if [[ -n ${CI_DEPLOY_NEED_GCC:-} ]]; then
echo Installing an older less buggy version of GCC
- brew install gcc@10
- brew link --overwrite gcc@10
-
+ brew install gcc@13
+ brew link --overwrite gcc@13
echo Removing "fixed" header files that are actually broken
- sudo rm -Rf $(find /usr/local/Cellar/gcc@10/ -iname include-fixed)
-
- echo Fixing up some binaries to support rpath
- sudo install_name_tool -add_rpath /usr/local/lib/gcc/10/ -add_rpath @loader_path/. -id @rpath/libgomp.1.dylib /usr/local/lib/gcc/10/libgomp.1.dylib
- sudo install_name_tool -add_rpath /usr/local/lib/gcc/10/ -add_rpath @loader_path/. -id @rpath/libstdc++.6.dylib /usr/local/lib/gcc/10/libstdc++.6.dylib
- sudo install_name_tool -add_rpath /usr/local/lib/gcc/10/ -add_rpath @loader_path/. -id @rpath/libgfortran.5.dylib /usr/local/lib/gcc/10/libgfortran.5.dylib
- sudo install_name_tool -add_rpath /usr/local/lib/gcc/10/ -add_rpath @loader_path/. -id @rpath/libquadmath.0.dylib /usr/local/lib/gcc/10/libquadmath.0.dylib
- sudo install_name_tool -add_rpath /usr/local/lib/gcc/10/ -add_rpath @loader_path/. -id @rpath/libgcc_s.1.dylib /usr/local/lib/gcc/10/libgcc_s.1.dylib
- sudo install_name_tool -change $(otool -L /usr/local/lib/gcc/10/libgfortran.5.dylib | grep /usr/local/Cellar/gcc@10/ | cut -f1 -d ' ') @rpath/libquadmath.0.dylib /usr/local/lib/gcc/10/libgfortran.5.dylib
- sudo install_name_tool -change /usr/local/lib/gcc/10/libgcc_s.1.dylib @rpath/libgcc_s.1.dylib /usr/local/lib/gcc/10/libgomp.1.dylib
- sudo install_name_tool -change /usr/local/lib/gcc/10/libgcc_s.1.dylib @rpath/libgcc_s.1.dylib /usr/local/lib/gcc/10/libstdc++.6.dylib
- sudo install_name_tool -change /usr/local/lib/gcc/10/libgcc_s.1.dylib @rpath/libgcc_s.1.dylib /usr/local/lib/gcc/10/libgfortran.5.dylib
- sudo install_name_tool -change /usr/local/lib/gcc/10/libgcc_s.1.dylib @rpath/libgcc_s.1.dylib /usr/local/lib/gcc/10/libquadmath.0.dylib
- otool -L /usr/local/lib/gcc/10/*.dylib
+ rm -Rf $(find /opt/homebrew/Cellar/gcc@13/ -iname include-fixed)
+ FORMULAE+="gcc@13"
fi
- sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libomp.dylib `brew ls libomp|grep libomp.dylib`
- sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libSDL2-2.0.0.dylib `brew ls sdl2|grep libSDL2-2.0.0.dylib`
- sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libusb-1.0.0.dylib `brew ls libusb|grep libusb-1.0.0.dylib`
+ # Change rpath and resign all brew libraries that could be bundled in presets
+ FORMULAE+=("libomp" "sdl2" "libusb")
+ for i in $FORMULAE; do
+ for l in $(brew ls $i|grep -e ".dylib$"); do
+ if [ ! -L $l ]; then
+ install_name_tool -add_rpath @loader_path/. -id @rpath/$(basename $l) $l
+ codesign --force -s - $l
+ fi
+ done
+ done
+ otool -L $(brew ls gcc@13|grep -e ".dylib$");
curl -LO https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
sudo tar -xzf apache-maven-3.6.3-bin.tar.gz -C /usr/local/opt
@@ -103,10 +99,12 @@ runs:
- name: Build project
shell: bash
run: |
- export LIBRARY_PATH="/usr/local/lib/gcc/10/"
- export LD_LIBRARY_PATH="$LIBRARY_PATH"
- export DYLD_LIBRARY_PATH="$LIBRARY_PATH"
- export DYLD_FALLBACK_LIBRARY_PATH="$LIBRARY_PATH"
+ if [[ -n ${CI_DEPLOY_NEED_GCC:-} ]]; then
+ export LIBRARY_PATH="$(brew --prefix)/lib/gcc/13/"
+ export LD_LIBRARY_PATH="$LIBRARY_PATH"
+ export DYLD_LIBRARY_PATH="$LIBRARY_PATH"
+ export DYLD_FALLBACK_LIBRARY_PATH="$LIBRARY_PATH"
+ fi
# Change default JVM on macos-14 runner
if [[ -n ${JAVA_HOME_17_arm64:-} ]]; then
diff --git a/.github/workflows/scipy.yml b/.github/workflows/scipy.yml
index 7b647faf297..767256d06fa 100644
--- a/.github/workflows/scipy.yml
+++ b/.github/workflows/scipy.yml
@@ -38,6 +38,10 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-ubuntu@actions
+ macosx-arm64:
+ runs-on: macos-14
+ steps:
+ - uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions
macosx-x86_64:
runs-on: macos-12
steps:
@@ -51,7 +55,7 @@ jobs:
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-windows@actions
redeploy:
- needs: [linux-x86_64, macosx-x86_64, windows-x86_64]
+ needs: [linux-x86_64, macosx-arm64, macosx-x86_64, windows-x86_64]
# needs: [linux-armhf, linux-arm64, linux-ppc64le, linux-x86, linux-x86_64, macosx-x86_64, windows-x86, windows-x86_64]
runs-on: ubuntu-20.04
steps:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 63639a30f5b..e9d4eeba6a3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,5 @@
- * Introduce `macosx-arm64` builds for CPython ([pull #1511](https://github.com/bytedeco/javacpp-presets/pull/1511)), NumPy ([pull #1515](https://github.com/bytedeco/javacpp-presets/pull/1515))
+ * Introduce `macosx-arm64` builds for CPython ([pull #1511](https://github.com/bytedeco/javacpp-presets/pull/1511)), NumPy ([pull #1515](https://github.com/bytedeco/javacpp-presets/pull/1515)), SciPy ([pull #1516](https://github.com/bytedeco/javacpp-presets/pull/1516))
* Update and fix the sample code of the presets for LLVM ([pull #1501](https://github.com/bytedeco/javacpp-presets/pull/1501))
* Fix Vulkan GPU acceleration for FFmpeg ([pull #1497](https://github.com/bytedeco/javacpp-presets/pull/1497))
* Build FFmpeg with zimg to enable zscale filter ([pull #1481](https://github.com/bytedeco/javacpp-presets/pull/1481))
diff --git a/pom.xml b/pom.xml
index b4275c0d37e..1a30b3b26b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1463,6 +1463,7 @@
openblas
cpython
numpy
+ scipy
llvm
libffi
libpostal
diff --git a/scipy/cppbuild.sh b/scipy/cppbuild.sh
index 8757b6ef0ea..fc559df6b5e 100755
--- a/scipy/cppbuild.sh
+++ b/scipy/cppbuild.sh
@@ -169,7 +169,18 @@ case $PLATFORM in
ATLAS=None CC="gcc -m64 -D__STDC_NO_THREADS__" FFLAGS="-m64 -fPIC" "$PYTHON_BIN_PATH" -m pip install . --prefix $INSTALL_PATH --config-settings=builddir=build
strip $(find ../ -iname *.so)
;;
- macosx-*)
+ macosx-arm64)
+ export F77=$(compgen -cX '!gfortran*')
+ export F90="$F77"
+ export LDFLAGS="-L/usr/lib/"
+ ATLAS=None FC="$F77" "$PYTHON_BIN_PATH" -m pip install . --prefix $INSTALL_PATH --config-settings=builddir=build
+ # need to add RPATH so it can find MKL in cache
+ for f in $(find ../ -iname *.so); do
+ install_name_tool -add_rpath @loader_path/../../../ -add_rpath @loader_path/../../../../ $f || true;
+ codesign --force -s - $f
+ done
+ ;;
+ macosx-x86_64)
export F77="$(ls -1 /usr/local/bin/gfortran-* | head -n 1)"
export F90="$F77"
export LDFLAGS="-L/usr/lib/"
diff --git a/scipy/platform/pom.xml b/scipy/platform/pom.xml
index 68a5cd2ccee..1ec945be987 100644
--- a/scipy/platform/pom.xml
+++ b/scipy/platform/pom.xml
@@ -60,6 +60,12 @@
${project.version}
${javacpp.platform.linux-x86_64}
+
+ ${project.groupId}
+ ${javacpp.moduleId}
+ ${project.version}
+ ${javacpp.platform.macosx-arm64}
+
${project.groupId}
${javacpp.moduleId}
@@ -90,7 +96,7 @@
- ${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar
+ ${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-macosx-arm64.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar
@@ -140,6 +146,7 @@
// requires static org.bytedeco.${javacpp.moduleId}.linux.ppc64le;
// requires static org.bytedeco.${javacpp.moduleId}.linux.x86;
requires static org.bytedeco.${javacpp.moduleId}.linux.x86_64;
+ requires static org.bytedeco.${javacpp.moduleId}.macosx.arm64;
requires static org.bytedeco.${javacpp.moduleId}.macosx.x86_64;
// requires static org.bytedeco.${javacpp.moduleId}.windows.x86;
requires static org.bytedeco.${javacpp.moduleId}.windows.x86_64;