diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml
index 18999872..ff64a4a2 100755
--- a/.azure-pipelines/azure-pipelines-linux.yml
+++ b/.azure-pipelines/azure-pipelines-linux.yml
@@ -24,12 +24,12 @@ jobs:
CONFIG: linux_64_numpy1.23python3.11.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
- linux_aarch64_numpy1.22python3.10.____cpythonpython_implcpython:
- CONFIG: linux_aarch64_numpy1.22python3.10.____cpythonpython_implcpython
+ linux_64_numpy1.26python3.12.____cpythonpython_implcpython:
+ CONFIG: linux_64_numpy1.26python3.12.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
- linux_aarch64_numpy1.22python3.9.____73_pypypython_implpypy:
- CONFIG: linux_aarch64_numpy1.22python3.9.____73_pypypython_implpypy
+ linux_aarch64_numpy1.22python3.10.____cpythonpython_implcpython:
+ CONFIG: linux_aarch64_numpy1.22python3.10.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
linux_aarch64_numpy1.22python3.9.____cpythonpython_implcpython:
@@ -40,12 +40,12 @@ jobs:
CONFIG: linux_aarch64_numpy1.23python3.11.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
- linux_ppc64le_numpy1.22python3.10.____cpythonpython_implcpython:
- CONFIG: linux_ppc64le_numpy1.22python3.10.____cpythonpython_implcpython
+ linux_aarch64_numpy1.26python3.12.____cpythonpython_implcpython:
+ CONFIG: linux_aarch64_numpy1.26python3.12.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
- linux_ppc64le_numpy1.22python3.9.____73_pypypython_implpypy:
- CONFIG: linux_ppc64le_numpy1.22python3.9.____73_pypypython_implpypy
+ linux_ppc64le_numpy1.22python3.10.____cpythonpython_implcpython:
+ CONFIG: linux_ppc64le_numpy1.22python3.10.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
linux_ppc64le_numpy1.22python3.9.____cpythonpython_implcpython:
@@ -56,6 +56,10 @@ jobs:
CONFIG: linux_ppc64le_numpy1.23python3.11.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
+ linux_ppc64le_numpy1.26python3.12.____cpythonpython_implcpython:
+ CONFIG: linux_ppc64le_numpy1.26python3.12.____cpythonpython_implcpython
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
timeoutInMinutes: 360
steps:
diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
index 333fb552..884cc4b9 100755
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ b/.azure-pipelines/azure-pipelines-osx.yml
@@ -20,6 +20,9 @@ jobs:
osx_64_numpy1.23python3.11.____cpythonpython_implcpython:
CONFIG: osx_64_numpy1.23python3.11.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
+ osx_64_numpy1.26python3.12.____cpythonpython_implcpython:
+ CONFIG: osx_64_numpy1.26python3.12.____cpythonpython_implcpython
+ UPLOAD_PACKAGES: 'True'
osx_arm64_numpy1.22python3.10.____cpython:
CONFIG: osx_arm64_numpy1.22python3.10.____cpython
UPLOAD_PACKAGES: 'True'
@@ -29,6 +32,9 @@ jobs:
osx_arm64_numpy1.23python3.11.____cpython:
CONFIG: osx_arm64_numpy1.23python3.11.____cpython
UPLOAD_PACKAGES: 'True'
+ osx_arm64_numpy1.26python3.12.____cpython:
+ CONFIG: osx_arm64_numpy1.26python3.12.____cpython
+ UPLOAD_PACKAGES: 'True'
timeoutInMinutes: 360
steps:
diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml
index 0b7d31ec..f6322ca5 100755
--- a/.azure-pipelines/azure-pipelines-win.yml
+++ b/.azure-pipelines/azure-pipelines-win.yml
@@ -20,6 +20,9 @@ jobs:
win_64_numpy1.23python3.11.____cpythonpython_implcpython:
CONFIG: win_64_numpy1.23python3.11.____cpythonpython_implcpython
UPLOAD_PACKAGES: 'True'
+ win_64_numpy1.26python3.12.____cpythonpython_implcpython:
+ CONFIG: win_64_numpy1.26python3.12.____cpythonpython_implcpython
+ UPLOAD_PACKAGES: 'True'
timeoutInMinutes: 360
variables:
CONDA_BLD_PATH: C:\\bld\\
diff --git a/.ci_support/linux_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml b/.ci_support/linux_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
new file mode 100644
index 00000000..83d1af30
--- /dev/null
+++ b/.ci_support/linux_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
@@ -0,0 +1,45 @@
+c_compiler:
+- gcc
+c_compiler_version:
+- '12'
+cdt_name:
+- cos6
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- gxx
+cxx_compiler_version:
+- '12'
+docker_image:
+- quay.io/condaforge/linux-anvil-cos7-x86_64
+fortran_compiler:
+- gfortran
+fortran_compiler_version:
+- '12'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+numpy:
+- '1.26'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.12.* *_cpython
+python_impl:
+- cpython
+target_platform:
+- linux-64
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+ - fortran_compiler_version
+- - python
+ - numpy
+ - python_impl
diff --git a/.ci_support/linux_aarch64_numpy1.22python3.9.____73_pypypython_implpypy.yaml b/.ci_support/linux_aarch64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
similarity index 94%
rename from .ci_support/linux_aarch64_numpy1.22python3.9.____73_pypypython_implpypy.yaml
rename to .ci_support/linux_aarch64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
index 2f0c61e6..e64febd6 100644
--- a/.ci_support/linux_aarch64_numpy1.22python3.9.____73_pypypython_implpypy.yaml
+++ b/.ci_support/linux_aarch64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
@@ -29,15 +29,15 @@ libcblas:
liblapack:
- 3.9 *netlib
numpy:
-- '1.22'
+- '1.26'
pin_run_as_build:
python:
min_pin: x.x
max_pin: x.x
python:
-- 3.9.* *_73_pypy
+- 3.12.* *_cpython
python_impl:
-- pypy
+- cpython
target_platform:
- linux-aarch64
zip_keys:
diff --git a/.ci_support/linux_ppc64le_numpy1.22python3.9.____73_pypypython_implpypy.yaml b/.ci_support/linux_ppc64le_numpy1.26python3.12.____cpythonpython_implcpython.yaml
similarity index 94%
rename from .ci_support/linux_ppc64le_numpy1.22python3.9.____73_pypypython_implpypy.yaml
rename to .ci_support/linux_ppc64le_numpy1.26python3.12.____cpythonpython_implcpython.yaml
index 259e2e94..b5f78110 100644
--- a/.ci_support/linux_ppc64le_numpy1.22python3.9.____73_pypypython_implpypy.yaml
+++ b/.ci_support/linux_ppc64le_numpy1.26python3.12.____cpythonpython_implcpython.yaml
@@ -25,15 +25,15 @@ libcblas:
liblapack:
- 3.9 *netlib
numpy:
-- '1.22'
+- '1.26'
pin_run_as_build:
python:
min_pin: x.x
max_pin: x.x
python:
-- 3.9.* *_73_pypy
+- 3.12.* *_cpython
python_impl:
-- pypy
+- cpython
target_platform:
- linux-ppc64le
zip_keys:
diff --git a/.ci_support/migrations/python312.yaml b/.ci_support/migrations/python312.yaml
new file mode 100644
index 00000000..8d4964eb
--- /dev/null
+++ b/.ci_support/migrations/python312.yaml
@@ -0,0 +1,42 @@
+migrator_ts: 1695046563
+__migrator:
+ migration_number: 1
+ operation: key_add
+ primary_key: python
+ ordering:
+ python:
+ - 3.6.* *_cpython
+ - 3.7.* *_cpython
+ - 3.8.* *_cpython
+ - 3.9.* *_cpython
+ - 3.10.* *_cpython
+ - 3.11.* *_cpython
+ - 3.12.* *_cpython # new entry
+ - 3.6.* *_73_pypy
+ - 3.7.* *_73_pypy
+ - 3.8.* *_73_pypy
+ - 3.9.* *_73_pypy
+ paused: false
+ longterm: True
+ pr_limit: 60
+ max_solver_attempts: 5 # this will make the bot retry "not solvable" stuff 5 times
+ exclude:
+ # this shouldn't attempt to modify the python feedstocks
+ - python
+ - pypy3.6
+ - pypy-meta
+ - cross-python
+ - python_abi
+ exclude_pinned_pkgs: false
+ additional_zip_keys:
+ - channel_sources
+
+python:
+ - 3.12.* *_cpython
+channel_sources:
+ - conda-forge/label/python_rc,conda-forge
+# additional entries to add for zip_keys
+numpy:
+ - 1.26
+python_impl:
+ - cpython
diff --git a/.ci_support/osx_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml b/.ci_support/osx_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
new file mode 100644
index 00000000..81c2f0cf
--- /dev/null
+++ b/.ci_support/osx_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
@@ -0,0 +1,45 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '10.9'
+c_compiler:
+- clang
+c_compiler_version:
+- '15'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- clangxx
+cxx_compiler_version:
+- '15'
+fortran_compiler:
+- gfortran
+fortran_compiler_version:
+- '12'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+macos_machine:
+- x86_64-apple-darwin13.4.0
+numpy:
+- '1.26'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.12.* *_cpython
+python_impl:
+- cpython
+target_platform:
+- osx-64
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+ - fortran_compiler_version
+- - python
+ - numpy
+ - python_impl
diff --git a/.ci_support/osx_arm64_numpy1.26python3.12.____cpython.yaml b/.ci_support/osx_arm64_numpy1.26python3.12.____cpython.yaml
new file mode 100644
index 00000000..9e58ae05
--- /dev/null
+++ b/.ci_support/osx_arm64_numpy1.26python3.12.____cpython.yaml
@@ -0,0 +1,45 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '11.0'
+c_compiler:
+- clang
+c_compiler_version:
+- '15'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- clangxx
+cxx_compiler_version:
+- '15'
+fortran_compiler:
+- gfortran
+fortran_compiler_version:
+- '12'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+macos_machine:
+- arm64-apple-darwin20.0.0
+numpy:
+- '1.26'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.12.* *_cpython
+python_impl:
+- cpython
+target_platform:
+- osx-arm64
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+ - fortran_compiler_version
+- - python
+ - numpy
+ - python_impl
diff --git a/.ci_support/win_64_numpy1.22python3.10.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy1.22python3.10.____cpythonpython_implcpython.yaml
index 966a5f08..5b426d62 100644
--- a/.ci_support/win_64_numpy1.22python3.10.____cpythonpython_implcpython.yaml
+++ b/.ci_support/win_64_numpy1.22python3.10.____cpythonpython_implcpython.yaml
@@ -1,7 +1,7 @@
c_compiler:
- vs2019
channel_sources:
-- conda-forge
+- conda-forge/label/llvm_rc,conda-forge/label/meson_dev,conda-forge
channel_targets:
- conda-forge main
cxx_compiler:
@@ -12,8 +12,6 @@ libcblas:
- 3.9 *netlib
liblapack:
- 3.9 *netlib
-m2w64_fortran_compiler:
-- m2w64-toolchain
numpy:
- '1.22'
pin_run_as_build:
diff --git a/.ci_support/win_64_numpy1.22python3.9.____73_pypypython_implpypy.yaml b/.ci_support/win_64_numpy1.22python3.9.____73_pypypython_implpypy.yaml
index 616e70c3..9dc844e9 100644
--- a/.ci_support/win_64_numpy1.22python3.9.____73_pypypython_implpypy.yaml
+++ b/.ci_support/win_64_numpy1.22python3.9.____73_pypypython_implpypy.yaml
@@ -1,7 +1,7 @@
c_compiler:
- vs2019
channel_sources:
-- conda-forge
+- conda-forge/label/llvm_rc,conda-forge/label/meson_dev,conda-forge
channel_targets:
- conda-forge main
cxx_compiler:
@@ -12,8 +12,6 @@ libcblas:
- 3.9 *netlib
liblapack:
- 3.9 *netlib
-m2w64_fortran_compiler:
-- m2w64-toolchain
numpy:
- '1.22'
pin_run_as_build:
diff --git a/.ci_support/win_64_numpy1.22python3.9.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy1.22python3.9.____cpythonpython_implcpython.yaml
index 28c2b234..390f0065 100644
--- a/.ci_support/win_64_numpy1.22python3.9.____cpythonpython_implcpython.yaml
+++ b/.ci_support/win_64_numpy1.22python3.9.____cpythonpython_implcpython.yaml
@@ -1,7 +1,7 @@
c_compiler:
- vs2019
channel_sources:
-- conda-forge
+- conda-forge/label/llvm_rc,conda-forge/label/meson_dev,conda-forge
channel_targets:
- conda-forge main
cxx_compiler:
@@ -12,8 +12,6 @@ libcblas:
- 3.9 *netlib
liblapack:
- 3.9 *netlib
-m2w64_fortran_compiler:
-- m2w64-toolchain
numpy:
- '1.22'
pin_run_as_build:
diff --git a/.ci_support/win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml
index ac87038d..362aa05d 100644
--- a/.ci_support/win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml
+++ b/.ci_support/win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml
@@ -1,7 +1,7 @@
c_compiler:
- vs2019
channel_sources:
-- conda-forge
+- conda-forge/label/llvm_rc,conda-forge/label/meson_dev,conda-forge
channel_targets:
- conda-forge main
cxx_compiler:
@@ -12,8 +12,6 @@ libcblas:
- 3.9 *netlib
liblapack:
- 3.9 *netlib
-m2w64_fortran_compiler:
-- m2w64-toolchain
numpy:
- '1.23'
pin_run_as_build:
diff --git a/.ci_support/win_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
new file mode 100644
index 00000000..73a26132
--- /dev/null
+++ b/.ci_support/win_64_numpy1.26python3.12.____cpythonpython_implcpython.yaml
@@ -0,0 +1,30 @@
+c_compiler:
+- vs2019
+channel_sources:
+- conda-forge/label/llvm_rc,conda-forge/label/meson_dev,conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- vs2019
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+numpy:
+- '1.26'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.12.* *_cpython
+python_impl:
+- cpython
+target_platform:
+- win-64
+zip_keys:
+- - python
+ - numpy
+ - python_impl
diff --git a/README.md b/README.md
index a2af9490..f025797a 100644
--- a/README.md
+++ b/README.md
@@ -63,17 +63,17 @@ Current build status
- linux_aarch64_numpy1.22python3.10.____cpythonpython_implcpython |
+ linux_64_numpy1.26python3.12.____cpythonpython_implcpython |
-
+
|
- linux_aarch64_numpy1.22python3.9.____73_pypypython_implpypy |
+ linux_aarch64_numpy1.22python3.10.____cpythonpython_implcpython |
-
+
|
@@ -91,17 +91,17 @@ Current build status
- linux_ppc64le_numpy1.22python3.10.____cpythonpython_implcpython |
+ linux_aarch64_numpy1.26python3.12.____cpythonpython_implcpython |
-
+
|
- linux_ppc64le_numpy1.22python3.9.____73_pypypython_implpypy |
+ linux_ppc64le_numpy1.22python3.10.____cpythonpython_implcpython |
-
+
|
@@ -118,6 +118,13 @@ Current build status
+
+ linux_ppc64le_numpy1.26python3.12.____cpythonpython_implcpython |
+
+
+
+
+ |
osx_64_numpy1.22python3.10.____cpythonpython_implcpython |
@@ -146,6 +153,13 @@ Current build status
|
+
+ osx_64_numpy1.26python3.12.____cpythonpython_implcpython |
+
+
+
+
+ |
osx_arm64_numpy1.22python3.10.____cpython |
@@ -167,6 +181,13 @@ Current build status
|
+
+ osx_arm64_numpy1.26python3.12.____cpython |
+
+
+
+
+ |
win_64_numpy1.22python3.10.____cpythonpython_implcpython |
@@ -195,6 +216,13 @@ Current build status
|
+
+ win_64_numpy1.26python3.12.____cpythonpython_implcpython |
+
+
+
+
+ |
diff --git a/recipe/bld.bat b/recipe/bld.bat
index 7d4e4fb4..987d60e1 100644
--- a/recipe/bld.bat
+++ b/recipe/bld.bat
@@ -1,9 +1,41 @@
@echo on
setlocal enabledelayedexpansion
-:: copy %SRC_DIR%/base somewhere to be able to hard-reset state in build-output.bat
-mkdir .\backup
-robocopy base backup /E >nul
-:: for whatever reason, robocopy returns 1 in case of success, see
-:: https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/return-codes-used-robocopy-utility
-if %ERRORLEVEL% neq 1 exit 1
+mkdir builddir
+
+:: check if clang-cl is on path as required
+clang-cl.exe --version
+if %ERRORLEVEL% neq 0 exit 1
+
+:: set compilers to clang-cl
+set "CC=clang-cl"
+set "CXX=clang-cl"
+
+:: flang 17 still uses "temporary" name
+set "FC=flang-new"
+
+:: need to read clang version for path to compiler-rt
+FOR /F "tokens=* USEBACKQ" %%F IN (`clang.exe -dumpversion`) DO (
+ SET "CLANG_VER=%%F"
+)
+
+:: attempt to match flags for flang as we set them for clang-on-win, see
+:: https://github.com/conda-forge/clang-win-activation-feedstock/blob/main/recipe/activate-clang_win-64.sh
+:: however, -Xflang --dependent-lib=msvcrt currently fails as an unrecognized option, see also
+:: https://github.com/llvm/llvm-project/issues/63741
+set "FFLAGS=-D_CRT_SECURE_NO_WARNINGS -D_MT -D_DLL --target=x86_64-pc-windows-msvc -nostdlib"
+set "LDFLAGS=--target=x86_64-pc-windows-msvc -nostdlib -Xclang --dependent-lib=msvcrt -fuse-ld=lld"
+set "LDFLAGS=%LDFLAGS% -Wl,-defaultlib:%BUILD_PREFIX%/Library/lib/clang/!CLANG_VER!/lib/windows/clang_rt.builtins-x86_64.lib"
+
+:: see explanation here:
+:: https://github.com/conda-forge/scipy-feedstock/pull/253#issuecomment-1732578945
+set "MESON_RSP_THRESHOLD=320000"
+
+:: -wnx flags mean: --wheel --no-isolation --skip-dependency-check
+%PYTHON% -m build -w -n -x ^
+ -Cbuilddir=builddir ^
+ -Csetup-args=-Dblas=blas ^
+ -Csetup-args=-Dlapack=lapack ^
+ -Csetup-args=-Dfortran_std=none ^
+ -Csetup-args=-Duse-g77-abi=true
+if %ERRORLEVEL% neq 0 (type builddir\meson-logs\meson-log.txt && exit 1)
diff --git a/recipe/build-output.bat b/recipe/build-output.bat
index b7aadc35..05ed7f50 100644
--- a/recipe/build-output.bat
+++ b/recipe/build-output.bat
@@ -1,18 +1,6 @@
@echo on
setlocal enabledelayedexpansion
-:: for reason see source section in meta.yaml & below
-cd base
-
-REM these are done automatically for openblas by numpy.distutils, but
-REM not for our blas libraries
-echo %LIBRARY_LIB%\blas.lib > %LIBRARY_LIB%\blas.fobjects
-echo %LIBRARY_LIB%\blas.lib > %LIBRARY_LIB%\blas.cobjects
-echo %LIBRARY_LIB%\cblas.lib > %LIBRARY_LIB%\cblas.fobjects
-echo %LIBRARY_LIB%\cblas.lib > %LIBRARY_LIB%\cblas.cobjects
-echo %LIBRARY_LIB%\lapack.lib > %LIBRARY_LIB%\lapack.fobjects
-echo %LIBRARY_LIB%\lapack.lib > %LIBRARY_LIB%\lapack.cobjects
-
REM Set a few environment variables that are not set due to
REM https://github.com/conda/conda-build/issues/3993
set PIP_NO_BUILD_ISOLATION=True
@@ -21,58 +9,14 @@ set PIP_IGNORE_INSTALLED=True
set PIP_NO_INDEX=True
set PYTHONDONTWRITEBYTECODE=True
-REM Use the G77 ABI wrapper everywhere so that the underlying blas implementation
-REM can have a G77 ABI (currently only MKL)
-set SCIPY_USE_G77_ABI_WRAPPER=1
-
-REM Need to get numpy include paths, which also requires the one for Python
-FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "import numpy; print(numpy.get_include())"`) DO (
- SET "NP_INC=%%F"
+:: `pip install dist\numpy*.whl` does not work on windows,
+:: so use a loop; there's only one wheel in dist/ anyway
+for /f %%f in ('dir /b /S .\dist') do (
+ REM need to use force to reinstall the tests the second time
+ REM (otherwise pip thinks the package is installed already)
+ pip install %%f --force-reinstall
+ if %ERRORLEVEL% neq 0 exit 1
)
-FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "import sysconfig; print(sysconfig.get_path('include'))"`) DO (
- SET "PY_INC=%%F"
-)
-
-REM This builds a Fortran file which calls a C function, but numpy.distutils
-REM creates an isolated DLL for these fortran functions and therefore it doesn't
-REM see these C functions. workaround this by compiling it ourselves and
-REM sneaking it with the blas libraries
-REM TODO: rewrite wrap_g77_abi.f with iso_c_binding when the compiler supports it
-cl.exe /I%NP_INC% /I%PY_INC% scipy\_build_utils\src\wrap_g77_abi_c.c -c /MD
-if %ERRORLEVEL% neq 0 exit 1
-echo. > scipy\_build_utils\src\wrap_g77_abi_c.c
-echo %SRC_DIR%\base\wrap_g77_abi_c.obj >> %LIBRARY_LIB%\lapack.fobjects
-echo %SRC_DIR%\base\wrap_g77_abi_c.obj >> %LIBRARY_LIB%\lapack.cobjects
-
-REM Add a file to load the fortran wrapper libraries in scipy/.libs
-del scipy\_distributor_init.py
-if %ERRORLEVEL% neq 0 exit 1
-copy %RECIPE_DIR%\_distributor_init.py scipy\
-if %ERRORLEVEL% neq 0 exit 1
-
-REM check if clang-cl is on path as required
-clang-cl.exe --version
-if %ERRORLEVEL% neq 0 exit 1
-
-REM set compilers to clang-cl
-set "CC=clang-cl"
-set "CXX=clang-cl"
-
-REM clang-cl & gfortran use different LDFLAGS; unset it
-set "LDFLAGS="
-REM don't add d1trimfile option because clang doesn't recognize it.
-set "SRC_DIR="
-
-%PYTHON% _setup.py install --single-version-externally-managed --record=record.txt
-if %ERRORLEVEL% neq 0 exit 1
-
-REM make sure these aren't packaged
-del %LIBRARY_LIB%\blas.fobjects
-del %LIBRARY_LIB%\blas.cobjects
-del %LIBRARY_LIB%\cblas.fobjects
-del %LIBRARY_LIB%\cblas.cobjects
-del %LIBRARY_LIB%\lapack.fobjects
-del %LIBRARY_LIB%\lapack.cobjects
FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))"`) DO (
SET EXT_SUFFIX=%%F
@@ -99,13 +43,4 @@ if "%PKG_NAME%"=="scipy" (
REM copy "test" with informative error message into installation
copy %RECIPE_DIR%\test_conda_forge_packaging.py %SP_DIR%\scipy\_lib
-
- REM hard-reset %SRC_DIR%\base to original state; see prep in bld.bat
- cd ..
- rmdir /s /q base
- REM both `move` and `robocopy` may spuriously fail to copy for some inane reason;
- REM use `robocopy` because it should fail less than `move`, and it provides a log.
- REM return code 1 means success, for anything else show log (though we'll know
- REM anyway, because if the copy fails, compilation for `scipy-tests` will break).
- (robocopy backup base /E /MOVE >copylog) || if !ERRORLEVEL! neq 1 type copylog
)
diff --git a/recipe/build-output.sh b/recipe/build-output.sh
index ea7ed6fa..c35fafc1 100644
--- a/recipe/build-output.sh
+++ b/recipe/build-output.sh
@@ -1,9 +1,6 @@
#!/bin/bash
set -ex
-# for reason see source section in meta.yaml
-cd base
-
# Set a few environment variables that are not set due to
# https://github.com/conda/conda-build/issues/3993
export PIP_NO_BUILD_ISOLATION=True
diff --git a/recipe/build.sh b/recipe/build.sh
index 4b39b15b..6c8882dd 100644
--- a/recipe/build.sh
+++ b/recipe/build.sh
@@ -1,9 +1,6 @@
#!/bin/bash
set -ex
-# for reason see source section in meta.yaml
-cd base
-
mkdir builddir
# HACK: extend $CONDA_PREFIX/meson_cross_file that's created in
diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml
index 55fb7d7c..23dc9831 100644
--- a/recipe/conda_build_config.yaml
+++ b/recipe/conda_build_config.yaml
@@ -1,4 +1,2 @@
-c_compiler: # [win]
- - vs2019 # [win]
-cxx_compiler: # [win]
- - vs2019 # [win]
+channel_sources: # [win]
+ - conda-forge/label/llvm_rc,conda-forge/label/meson_dev,conda-forge # [win]
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index c6e22034..e8188097 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -14,34 +14,35 @@ source:
# the submodules (not in tarball due to dear-github/dear-github#214)
- url: https://github.com/scipy/scipy/archive/refs/tags/v{{ version }}.tar.gz
sha256: 86712f1dff2cf674d823ad5489db54928b44149f76d7ba891ad19a6ae118abcf
- # need separate folder to do full reset on windows, see build-output.bat
- folder: base
patches:
- patches/0001-remove-comment-that-breaks-parsing.patch
# https://github.com/scipy/scipy/tree/v{{ version }}/scipy/_lib
- git_url: https://github.com/boostorg/math.git
git_rev: 298a243ccd3639b6eaa59bcdab7ab9d5f008fb36
- folder: base/scipy/_lib/boost_math
+ folder: scipy/_lib/boost_math
- git_url: https://github.com/scipy/highs.git
git_rev: 4a122958a82e67e725d08153e099efe4dad099a2
- folder: base/scipy/_lib/highs
+ folder: scipy/_lib/highs
- git_url: https://github.com/scipy/unuran.git
git_rev: 81a1fd118b326880e00cc7d8989fb063782a6bdd
- folder: base/scipy/_lib/unuran
+ folder: scipy/_lib/unuran
# https://github.com/scipy/scipy/tree/v{{ version }}/scipy/sparse/linalg/_propack
- git_url: https://github.com/scipy/PROPACK.git
git_rev: 96f6800451372dd003e627bbfd732937ac0c685e
- folder: base/scipy/sparse/linalg/_propack/PROPACK
+ folder: scipy/sparse/linalg/_propack/PROPACK
build:
- number: 0
+ number: 1
skip: true # [py<39]
+ # pypy on aarch/ppc is un(der)maintained and currently broken, see
+ # https://github.com/conda-forge/pypy3.6-feedstock/issues/111
+ skip: true # [(aarch64 or ppc64le) and python_impl == "pypy"]
requirements:
build:
- python # [build_platform != target_platform]
- cross-python_{{ target_platform }} # [build_platform != target_platform]
- - cython # [build_platform != target_platform]
+ - cython <3 # [build_platform != target_platform]
- numpy # [build_platform != target_platform]
- pybind11 # [build_platform != target_platform]
- meson-python # [build_platform != target_platform]
@@ -51,24 +52,30 @@ requirements:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- {{ compiler('fortran') }} # [unix]
+ # pythran code needs clang-cl on windows
+ - clang # [win]
+ # use flang as fortran compiler on windows (uses clang driver)
+ - flang # [win]
+ # use llvm linker for both of the above
+ - lld # [win]
host:
+ - compiler-rt # [win]
- libblas
- libcblas
- liblapack
- python
- - cython
- - meson-python # [unix]
- - ninja # [unix]
- - pkg-config # [unix]
- - python-build # [unix]
+ - cython <3
+ - meson-python
+ - ninja
+ - pkg-config
+ - python-build
- pybind11
- pythran
- numpy
- pip
-# for unix, the top-level build.sh builds scipy, and then build-output.sh
-# installs the files for the respective component; on windows, we currently
-# don't have a nice separation into build & install steps, so build twice...
+# the top-level build.{sh,bat} builds scipy, and then
+# build-output.{sh,bat} installs the files
outputs:
- name: scipy
script: build-output.sh # [not win]
@@ -78,28 +85,20 @@ outputs:
build:
- python # [build_platform != target_platform]
- cross-python_{{ target_platform }} # [build_platform != target_platform]
- # unix only needs these for the strong run exports
+ # only need these for the strong run exports
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- {{ compiler('fortran') }} # [unix]
- # pythran code needs clang-cl on windows
- - clang # [win]
- # WARNING: It's not recommended to use these MinGW compilers with python extensions
- # numpy.distutils has a complex mechanism to facilitate mixing gfortran and MSVC
- # https://pav.iki.fi/blog/2017-10-08/pywingfortran.html#building-python-wheels-with-fortran-for-windows
- - {{ compiler('m2w64_fortran') }} # [win]
host:
- libblas
- libcblas
- liblapack
- python
- - setuptools <60 # [win]
- - cython <3 # [win]
- cython
- - meson-python # [unix]
- - ninja # [unix]
- - pkg-config # [unix]
- - python-build # [unix]
+ - meson-python
+ - ninja
+ - pkg-config
+ - python-build
- pybind11
- pythran
- numpy
@@ -199,31 +198,18 @@ outputs:
build:
- python # [build_platform != target_platform]
- cross-python_{{ target_platform }} # [build_platform != target_platform]
- # unix only needs these for the strong run exports
+ # only need these for the strong run exports
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- {{ compiler('fortran') }} # [unix]
- # pythran code needs clang-cl on windows
- - clang # [win]
- # WARNING: It's not recommended to use these MinGW compilers with python extensions
- # numpy.distutils has a complex mechanism to facilitate mixing gfortran and MSVC
- # https://pav.iki.fi/blog/2017-10-08/pywingfortran.html#building-python-wheels-with-fortran-for-windows
- - {{ compiler('m2w64_fortran') }} # [win]
host:
- {{ pin_subpackage('scipy', exact=True) }}
- # need to repeat host deps on windows because we have to do a full rebuild here;
- # on unix we need a minimum as well so that installation of the wheel will work
+ # need a minimum for (re-)installation of wheel
- python
- pip
- numpy
- - libblas # [win]
- - libcblas # [win]
- - liblapack # [win]
- - setuptools <60 # [win]
- - cython <3 # [win]
- - pybind11 # [win]
- - pythran # [win]
- - numpy # [win]
+ # make link check happy
+ - liblapack
run:
- {{ pin_subpackage('scipy', exact=True) }}
- python
@@ -241,11 +227,13 @@ outputs:
{% set tests_to_skip = tests_to_skip + " or test_x0_equals_Mb[bicgstab" %}
# scipy/scipy#16927
{% set tests_to_skip = tests_to_skip + " or test_failure_to_run_iterations" %} # [linux]
+ # scipy/scipy#19337
+ {% set tests_to_skip = tests_to_skip + " or (TestLevyStable and test_distribution_outside_)" %} # [aarch64 or ppc64le]
# on the slowest agents, these tests take more than 20min in emulation
{% set tests_to_skip = tests_to_skip + " or (test_lsq_linear and test_large_rank_deficient)" %} # [aarch64 or ppc64le]
{% set tests_to_skip = tests_to_skip + " or (test_iterative and test_precond_inverse[case1])" %} # [aarch64 or ppc64le]
{% set tests_to_skip = tests_to_skip + " or (test_optimize and TestBrute and test_workers)" %} # [aarch64 or ppc64le]
- {% set tests_to_skip = tests_to_skip + " or (TestLevyStable and test_location_scale[pdf-1])" %} # [aarch64 or ppc64le]
+ {% set tests_to_skip = tests_to_skip + " or (TestLevyStable and test_location_scale)" %} # [aarch64 or ppc64le]
{% set tests_to_skip = tests_to_skip + " or (TestShgoArguments and test_19_parallelization)" %} # [aarch64 or ppc64le]
# tests that run into timeouts (set in scipy test suite) in emulation
{% set tests_to_skip = tests_to_skip + " or (test_propack and test_examples)" %} # [aarch64 or ppc64le]
@@ -292,7 +280,7 @@ outputs:
about:
home: http://www.scipy.org/
license: BSD-3-Clause
- license_file: base/LICENSE.txt
+ license_file: LICENSE.txt
summary: Scientific Library for Python
description: |
SciPy is a Python-based ecosystem of open-source software for mathematics,