From d912e6dbfebf6a2fb9829a41deed9dfa9c1aeb14 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Wed, 8 Jan 2025 13:21:49 +0000 Subject: [PATCH 01/11] updated v3.12.1 --- recipe/meta.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 4cb2066..e80f456 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,4 +1,4 @@ -{% set version = "3.11.0" %} +{% set version = "3.12.1" %} # if build_num is reset to 0 (for new version), update increment for blas_minor below {% set build_num = 5 %} {% set version_major = version.split(".")[0] %} @@ -20,7 +20,7 @@ package: source: url: https://github.com/Reference-LAPACK/lapack/archive/v{{ version }}.tar.gz - sha256: 4b9ba79bfd4921ca820e83979db76ab3363155709444a787979e81c22285ffa9 + sha256: 2ca6407a001a474d4d4d35f3a61550156050c48016d949f0da0529c0aa052422 patches: # Avoid setting current_version and compatibility_version - patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch From e354971e1ca2d86cddeb70643ad828f3e48be187 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Wed, 8 Jan 2025 13:23:03 +0000 Subject: [PATCH 02/11] MNT: Re-rendered with conda-build 24.11.2, conda-smithy 3.45.1, and conda-forge-pinning 2025.01.08.04.32.23 --- .azure-pipelines/azure-pipelines-linux.yml | 6 +-- .azure-pipelines/azure-pipelines-win.yml | 20 ++-------- .ci_support/linux_64_.yaml | 14 +++++-- .ci_support/linux_aarch64_.yaml | 18 +++++---- .ci_support/linux_ppc64le_.yaml | 14 +++++-- .ci_support/osx_64_.yaml | 10 ++++- .ci_support/osx_arm64_.yaml | 10 ++++- .ci_support/win_64_.yaml | 8 ++++ .scripts/build_steps.sh | 10 ++--- .scripts/run_osx_build.sh | 46 ++++++++++++++-------- .scripts/run_win_build.bat | 37 +++++++++++++---- azure-pipelines.yml | 2 +- build-locally.py | 7 ++++ 13 files changed, 133 insertions(+), 69 deletions(-) diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index aef462c..b1513b8 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -11,15 +11,15 @@ jobs: linux_64_: CONFIG: linux_64_ UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 linux_aarch64_: CONFIG: linux_aarch64_ UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 linux_ppc64le_: CONFIG: linux_ppc64le_ UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 timeoutInMinutes: 360 variables: {} diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 204327b..13022dd 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -14,31 +14,17 @@ jobs: timeoutInMinutes: 360 variables: CONDA_BLD_PATH: D:\\bld\\ + MINIFORGE_HOME: D:\Miniforge UPLOAD_TEMP: D:\\tmp steps: - - task: PythonScript@0 - displayName: 'Download Miniforge' - inputs: - scriptSource: inline - script: | - import urllib.request - url = 'https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Windows-x86_64.exe' - path = r"$(Build.ArtifactStagingDirectory)/Miniforge.exe" - urllib.request.urlretrieve(url, path) - - - script: | - start /wait "" %BUILD_ARTIFACTSTAGINGDIRECTORY%\Miniforge.exe /InstallationType=JustMe /RegisterPython=0 /S /D=C:\Miniforge - displayName: Install Miniforge - - - powershell: Write-Host "##vso[task.prependpath]C:\Miniforge\Scripts" - displayName: Add conda to PATH - - script: | call ".scripts\run_win_build.bat" displayName: Run Windows build env: + MINIFORGE_HOME: $(MINIFORGE_HOME) + CONDA_BLD_PATH: $(CONDA_BLD_PATH) PYTHONUNBUFFERED: 1 CONFIG: $(CONFIG) CI: azure diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 2e3aeaa..16a0c70 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -7,21 +7,27 @@ c_stdlib: c_stdlib_version: - '2.17' cdt_name: -- cos7 +- conda channel_sources: - conda-forge channel_targets: - conda-forge lapack_rc docker_image: -- quay.io/condaforge/linux-anvil-cos7-x86_64 +- quay.io/condaforge/linux-anvil-x86_64:alma9 fortran_compiler: - gfortran fortran_compiler_version: - '13' +libblas: +- 3.9 *netlib +libcblas: +- 3.9 *netlib +liblapack: +- 3.9 *netlib +liblapacke: +- 3.9 *netlib target_platform: - linux-64 zip_keys: - - c_compiler_version - fortran_compiler_version -- - c_stdlib_version - - cdt_name diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index 358b8d0..2771dd4 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -1,5 +1,3 @@ -BUILD: -- aarch64-conda_cos7-linux-gnu c_compiler: - gcc c_compiler_version: @@ -8,24 +6,28 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_arch: -- aarch64 cdt_name: -- cos7 +- conda channel_sources: - conda-forge channel_targets: - conda-forge lapack_rc docker_image: -- quay.io/condaforge/linux-anvil-cos7-x86_64 +- quay.io/condaforge/linux-anvil-x86_64:alma9 fortran_compiler: - gfortran fortran_compiler_version: - '13' +libblas: +- 3.9 *netlib +libcblas: +- 3.9 *netlib +liblapack: +- 3.9 *netlib +liblapacke: +- 3.9 *netlib target_platform: - linux-aarch64 zip_keys: - - c_compiler_version - fortran_compiler_version -- - c_stdlib_version - - cdt_name diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index bfb7ce0..2b51586 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -7,21 +7,27 @@ c_stdlib: c_stdlib_version: - '2.17' cdt_name: -- cos7 +- conda channel_sources: - conda-forge channel_targets: - conda-forge lapack_rc docker_image: -- quay.io/condaforge/linux-anvil-cos7-x86_64 +- quay.io/condaforge/linux-anvil-x86_64:alma9 fortran_compiler: - gfortran fortran_compiler_version: - '13' +libblas: +- 3.9 *netlib +libcblas: +- 3.9 *netlib +liblapack: +- 3.9 *netlib +liblapacke: +- 3.9 *netlib target_platform: - linux-ppc64le zip_keys: - - c_compiler_version - fortran_compiler_version -- - c_stdlib_version - - cdt_name diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index 3494178..2915fd9 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -5,7 +5,7 @@ MACOSX_SDK_VERSION: c_compiler: - clang c_compiler_version: -- '17' +- '18' c_stdlib: - macosx_deployment_target c_stdlib_version: @@ -18,6 +18,14 @@ fortran_compiler: - gfortran fortran_compiler_version: - '13' +libblas: +- 3.9 *netlib +libcblas: +- 3.9 *netlib +liblapack: +- 3.9 *netlib +liblapacke: +- 3.9 *netlib macos_machine: - x86_64-apple-darwin13.4.0 target_platform: diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index 66672bd..3124534 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -5,7 +5,7 @@ MACOSX_SDK_VERSION: c_compiler: - clang c_compiler_version: -- '17' +- '18' c_stdlib: - macosx_deployment_target c_stdlib_version: @@ -18,6 +18,14 @@ fortran_compiler: - gfortran fortran_compiler_version: - '13' +libblas: +- 3.9 *netlib +libcblas: +- 3.9 *netlib +liblapack: +- 3.9 *netlib +liblapacke: +- 3.9 *netlib macos_machine: - arm64-apple-darwin20.0.0 target_platform: diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml index fb7440a..31da62c 100644 --- a/.ci_support/win_64_.yaml +++ b/.ci_support/win_64_.yaml @@ -10,5 +10,13 @@ fortran_compiler: - flang fortran_compiler_version: - '19' +libblas: +- 3.9 *netlib +libcblas: +- 3.9 *netlib +liblapack: +- 3.9 *netlib +liblapacke: +- 3.9 *netlib target_platform: - win-64 diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 9123720..f8051ab 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -31,13 +31,13 @@ pkgs_dirs: solver: libmamba CONDARC +mv /opt/conda/conda-meta/history /opt/conda/conda-meta/history.$(date +%Y-%m-%d-%H-%M-%S) +echo > /opt/conda/conda-meta/history +micromamba install --root-prefix ~/.conda --prefix /opt/conda \ + --yes --override-channels --channel conda-forge --strict-channel-priority \ + pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 -mamba install --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ - pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ - pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" - # set up the condarc setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 8af8a00..ee996f4 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -6,29 +6,41 @@ source .scripts/logging_utils.sh set -xe -MINIFORGE_HOME=${MINIFORGE_HOME:-${HOME}/miniforge3} - -( startgroup "Installing a fresh version of Miniforge" ) 2> /dev/null - -MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download" -MINIFORGE_FILE="Miniforge3-MacOSX-$(uname -m).sh" -curl -L -O "${MINIFORGE_URL}/${MINIFORGE_FILE}" -rm -rf ${MINIFORGE_HOME} -bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME} - -( endgroup "Installing a fresh version of Miniforge" ) 2> /dev/null +MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}" +MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash +export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}" + +( startgroup "Provisioning base env with micromamba" ) 2> /dev/null +MICROMAMBA_VERSION="1.5.10-0" +if [[ "$(uname -m)" == "arm64" ]]; then + osx_arch="osx-arm64" +else + osx_arch="osx-64" +fi +MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}" +MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)" +echo "Downloading micromamba ${MICROMAMBA_VERSION}" +micromamba_exe="$(mktemp -d)/micromamba" +curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}" +chmod +x "${micromamba_exe}" +echo "Creating environment" +"${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ + --channel conda-forge \ + pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}" +mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}" +echo "Cleaning up micromamba" +rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true +( endgroup "Provisioning base env with micromamba" ) 2> /dev/null ( startgroup "Configuring conda" ) 2> /dev/null - -source ${MINIFORGE_HOME}/etc/profile.d/conda.sh +echo "Activating environment" +source "${MINIFORGE_HOME}/etc/profile.d/conda.sh" conda activate base export CONDA_SOLVER="libmamba" export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 -mamba install --update-specs --quiet --yes --channel conda-forge --strict-channel-priority \ - pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ - pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" + diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 58a1467..2e7dd39 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -3,30 +3,51 @@ :: changes to this script, consider a proposal to conda-smithy so that other feedstocks can also :: benefit from the improvement. -:: Note: we assume a Miniforge installation is available - :: INPUTS (required environment variables) :: CONFIG: name of the .ci_support/*.yaml file for this job :: CI: azure, github_actions, or unset +:: MINIFORGE_HOME: where to install the base conda environment :: UPLOAD_PACKAGES: true or false :: UPLOAD_ON_BRANCH: true or false setlocal enableextensions enabledelayedexpansion +FOR %%A IN ("%~dp0.") DO SET "REPO_ROOT=%%~dpA" +if "%MINIFORGE_HOME%"=="" set "MINIFORGE_HOME=%USERPROFILE%\Miniforge3" +:: Remove trailing backslash, if present +if "%MINIFORGE_HOME:~-1%"=="\" set "MINIFORGE_HOME=%MINIFORGE_HOME:~0,-1%" +call :start_group "Provisioning base env with micromamba" +set "MAMBA_ROOT_PREFIX=%MINIFORGE_HOME%-micromamba-%RANDOM%" +set "MICROMAMBA_VERSION=1.5.10-0" +set "MICROMAMBA_URL=https://github.com/mamba-org/micromamba-releases/releases/download/%MICROMAMBA_VERSION%/micromamba-win-64" +set "MICROMAMBA_TMPDIR=%TMP%\micromamba-%RANDOM%" +set "MICROMAMBA_EXE=%MICROMAMBA_TMPDIR%\micromamba.exe" + +echo Downloading micromamba %MICROMAMBA_VERSION% +if not exist "%MICROMAMBA_TMPDIR%" mkdir "%MICROMAMBA_TMPDIR%" +certutil -urlcache -split -f "%MICROMAMBA_URL%" "%MICROMAMBA_EXE%" +if !errorlevel! neq 0 exit /b !errorlevel! + +echo Creating environment +call "%MICROMAMBA_EXE%" create --yes --root-prefix "%MAMBA_ROOT_PREFIX%" --prefix "%MINIFORGE_HOME%" ^ + --channel conda-forge ^ + pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +if !errorlevel! neq 0 exit /b !errorlevel! +echo Removing %MAMBA_ROOT_PREFIX% +del /S /Q "%MAMBA_ROOT_PREFIX%" >nul +del /S /Q "%MICROMAMBA_TMPDIR%" >nul +call :end_group + call :start_group "Configuring conda" :: Activate the base conda environment -call activate base +echo Activating environment +call "%MINIFORGE_HOME%\Scripts\activate.bat" :: Configure the solver set "CONDA_SOLVER=libmamba" if !errorlevel! neq 0 exit /b !errorlevel! set "CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1" -:: Provision the necessary dependencies to build the recipe later -echo Installing dependencies -mamba.exe install pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -c conda-forge --strict-channel-priority --yes -if !errorlevel! neq 0 exit /b !errorlevel! - :: Set basic configuration echo Setting up configuration setup_conda_rc .\ ".\recipe" .\.ci_support\%CONFIG%.yaml diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 32da3d0..eff4ad6 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -19,7 +19,7 @@ stages: echo "##vso[task.setvariable variable=log]$git_log" displayName: Obtain commit message - bash: echo "##vso[task.setvariable variable=RET]false" - condition: or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]')) + condition: and(eq(variables['Build.Reason'], 'PullRequest'), or(contains(variables.log, '[skip azp]'), contains(variables.log, '[azp skip]'), contains(variables.log, '[skip ci]'), contains(variables.log, '[ci skip]'))) displayName: Skip build? - bash: echo "##vso[task.setvariable variable=start_main;isOutput=true]$RET" name: result diff --git a/build-locally.py b/build-locally.py index 6788aea..c4a56c6 100755 --- a/build-locally.py +++ b/build-locally.py @@ -26,6 +26,13 @@ def setup_environment(ns): os.path.dirname(__file__), "miniforge3" ) + # The default cache location might not be writable using docker on macOS. + if ns.config.startswith("linux") and platform.system() == "Darwin": + os.environ["CONDA_FORGE_DOCKER_RUN_ARGS"] = ( + os.environ.get("CONDA_FORGE_DOCKER_RUN_ARGS", "") + + " -e RATTLER_CACHE_DIR=/tmp/rattler_cache" + ) + def run_docker_build(ns): script = ".scripts/run_docker_build.sh" From 10819587fc67e2bc72656376d3d0edbaef14fd9a Mon Sep 17 00:00:00 2001 From: "conda-forge-webservices[bot]" <91080706+conda-forge-webservices[bot]@users.noreply.github.com> Date: Tue, 27 May 2025 14:57:33 +0000 Subject: [PATCH 03/11] MNT: Re-rendered with conda-build 25.4.2, conda-smithy 3.48.1, and conda-forge-pinning 2025.05.27.09.45.32 --- .ci_support/linux_64_.yaml | 8 +-- .ci_support/linux_aarch64_.yaml | 8 +-- .ci_support/linux_ppc64le_.yaml | 8 +-- .../migrations/r-base44_and_m2w64-ucrt.yaml | 53 ------------------- .ci_support/osx_64_.yaml | 8 +-- .ci_support/osx_arm64_.yaml | 8 +-- .ci_support/win_64_.yaml | 8 +-- .gitignore | 5 ++ .scripts/run_docker_build.sh | 2 +- .scripts/run_win_build.bat | 2 +- build-locally.py | 47 +++++++++++----- 11 files changed, 64 insertions(+), 93 deletions(-) delete mode 100644 .ci_support/migrations/r-base44_and_m2w64-ucrt.yaml diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 16a0c70..bbc1293 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -19,13 +19,13 @@ fortran_compiler: fortran_compiler_version: - '13' libblas: -- 3.9 *netlib +- 3.9.* *netlib libcblas: -- 3.9 *netlib +- 3.9.* *netlib liblapack: -- 3.9 *netlib +- 3.9.* *netlib liblapacke: -- 3.9 *netlib +- 3.9.* *netlib target_platform: - linux-64 zip_keys: diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index 2771dd4..c311d14 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -19,13 +19,13 @@ fortran_compiler: fortran_compiler_version: - '13' libblas: -- 3.9 *netlib +- 3.9.* *netlib libcblas: -- 3.9 *netlib +- 3.9.* *netlib liblapack: -- 3.9 *netlib +- 3.9.* *netlib liblapacke: -- 3.9 *netlib +- 3.9.* *netlib target_platform: - linux-aarch64 zip_keys: diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index 2b51586..9aec29f 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -19,13 +19,13 @@ fortran_compiler: fortran_compiler_version: - '13' libblas: -- 3.9 *netlib +- 3.9.* *netlib libcblas: -- 3.9 *netlib +- 3.9.* *netlib liblapack: -- 3.9 *netlib +- 3.9.* *netlib liblapacke: -- 3.9 *netlib +- 3.9.* *netlib target_platform: - linux-ppc64le zip_keys: diff --git a/.ci_support/migrations/r-base44_and_m2w64-ucrt.yaml b/.ci_support/migrations/r-base44_and_m2w64-ucrt.yaml deleted file mode 100644 index f25611f..0000000 --- a/.ci_support/migrations/r-base44_and_m2w64-ucrt.yaml +++ /dev/null @@ -1,53 +0,0 @@ -migrator_ts: 1718391654 -__migrator: - kind: version - migration_number: 1 - bump_number: 1 - commit_message: "Rebuild for r-base 4.4 and UCRT mingw toolchain" - primary_key: r_base - automerge: True - longterm: True - include_noarch: True - include_build: True - pr_limit: 40 - override_cbc_keys: - - r-base - - r_base - - m2w64_c_compiler_stub - - m2w64_cxx_compiler_stub - - m2w64_fortran_compiler_stub - ordering: - m2w64_c_compiler: - - m2w64-toolchain - - gcc - m2w64_cxx_compiler: - - m2w64-toolchain - - gxx - m2w64_fortran_compiler: - - m2w64-toolchain - - gfortran - m2w64_c_stdlib: - - m2w64-toolchain - - m2w64-sysroot - -r_base: - - 4.3 - - 4.4 -m2w64_c_compiler: # [win] - - gcc # [win] -m2w64_c_compiler_version: # [win] - - 13 # [win] -m2w64_cxx_compiler: # [win] - - gxx # [win] -m2w64_cxx_compiler_version: # [win] - - 13 # [win] -m2w64_fortran_compiler: # [win] - - gfortran # [win] -m2w64_fortran_compiler_version: # [win] - - 13 # [win] -m2w64_c_stdlib: # [win] - - m2w64-sysroot # [win] -m2w64_c_stdlib_version: # [win] - - 12 # [win] -m2w64_toolchain: # [win] - - disabled # [win] diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index 2915fd9..d69c3c1 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -19,13 +19,13 @@ fortran_compiler: fortran_compiler_version: - '13' libblas: -- 3.9 *netlib +- 3.9.* *netlib libcblas: -- 3.9 *netlib +- 3.9.* *netlib liblapack: -- 3.9 *netlib +- 3.9.* *netlib liblapacke: -- 3.9 *netlib +- 3.9.* *netlib macos_machine: - x86_64-apple-darwin13.4.0 target_platform: diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index 3124534..e4b53a4 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -19,13 +19,13 @@ fortran_compiler: fortran_compiler_version: - '13' libblas: -- 3.9 *netlib +- 3.9.* *netlib libcblas: -- 3.9 *netlib +- 3.9.* *netlib liblapack: -- 3.9 *netlib +- 3.9.* *netlib liblapacke: -- 3.9 *netlib +- 3.9.* *netlib macos_machine: - arm64-apple-darwin20.0.0 target_platform: diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml index 31da62c..5f83a10 100644 --- a/.ci_support/win_64_.yaml +++ b/.ci_support/win_64_.yaml @@ -11,12 +11,12 @@ fortran_compiler: fortran_compiler_version: - '19' libblas: -- 3.9 *netlib +- 3.9.* *netlib libcblas: -- 3.9 *netlib +- 3.9.* *netlib liblapack: -- 3.9 *netlib +- 3.9.* *netlib liblapacke: -- 3.9 *netlib +- 3.9.* *netlib target_platform: - win-64 diff --git a/.gitignore b/.gitignore index 179afe5..47b5408 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,8 @@ /build_artifacts *.pyc + +# Rattler-build's artifacts are in `output` when not specifying anything. +/output +# Pixi's configuration +.pixi diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 00f377a..6ee04aa 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -12,7 +12,7 @@ source .scripts/logging_utils.sh set -xeo pipefail THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )" -PROVIDER_DIR="$(basename $THISDIR)" +PROVIDER_DIR="$(basename "$THISDIR")" FEEDSTOCK_ROOT="$( cd "$( dirname "$0" )/.." >/dev/null && pwd )" RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe" diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 2e7dd39..00c8c33 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -25,7 +25,7 @@ set "MICROMAMBA_EXE=%MICROMAMBA_TMPDIR%\micromamba.exe" echo Downloading micromamba %MICROMAMBA_VERSION% if not exist "%MICROMAMBA_TMPDIR%" mkdir "%MICROMAMBA_TMPDIR%" -certutil -urlcache -split -f "%MICROMAMBA_URL%" "%MICROMAMBA_EXE%" +powershell -ExecutionPolicy Bypass -Command "(New-Object Net.WebClient).DownloadFile('%MICROMAMBA_URL%', '%MICROMAMBA_EXE%')" if !errorlevel! neq 0 exit /b !errorlevel! echo Creating environment diff --git a/build-locally.py b/build-locally.py index c4a56c6..02c2374 100755 --- a/build-locally.py +++ b/build-locally.py @@ -10,6 +10,7 @@ import os import platform import subprocess +import sys from argparse import ArgumentParser @@ -44,10 +45,19 @@ def run_osx_build(ns): subprocess.check_call([script]) +def run_win_build(ns): + script = ".scripts/run_win_build.bat" + subprocess.check_call(["cmd", "/D", "/Q", "/C", f"CALL {script}"]) + + def verify_config(ns): + choices_filter = ns.filter or "*" valid_configs = { - os.path.basename(f)[:-5] for f in glob.glob(".ci_support/*.yaml") + os.path.basename(f)[:-5] + for f in glob.glob(f".ci_support/{choices_filter}.yaml") } + if choices_filter != "*": + print(f"filtering for '{choices_filter}.yaml' configs") print(f"valid configs are {valid_configs}") if ns.config in valid_configs: print("Using " + ns.config + " configuration") @@ -60,30 +70,37 @@ def verify_config(ns): selections = list(enumerate(sorted(valid_configs), 1)) for i, c in selections: print(f"{i}. {c}") - s = input("\n> ") + try: + s = input("\n> ") + except KeyboardInterrupt: + print("\nno option selected, bye!", file=sys.stderr) + sys.exit(1) idx = int(s) - 1 ns.config = selections[idx][1] print(f"selected {ns.config}") else: raise ValueError("config " + ns.config + " is not valid") - # Remove the following, as implemented - if ns.config.startswith("win"): - raise ValueError( - f"only Linux/macOS configs currently supported, got {ns.config}" + if ( + ns.config.startswith("osx") + and platform.system() == "Darwin" + and not os.environ.get("OSX_SDK_DIR") + ): + raise RuntimeError( + "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' " + "to download the SDK automatically to '$PWD/SDKs/MacOSX.sdk'. " + "Note: OSX_SDK_DIR must be set to an absolute path. " + "Setting this variable implies agreement to the licensing terms of the SDK by Apple." ) - elif ns.config.startswith("osx"): - if "OSX_SDK_DIR" not in os.environ: - raise RuntimeError( - "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' " - "to download the SDK automatically to '$PWD/SDKs/MacOSX.sdk'. " - "Note: OSX_SDK_DIR must be set to an absolute path. " - "Setting this variable implies agreement to the licensing terms of the SDK by Apple." - ) def main(args=None): p = ArgumentParser("build-locally") p.add_argument("config", default=None, nargs="?") + p.add_argument( + "--filter", + default=None, + help="Glob string to filter which build choices are presented in interactive mode.", + ) p.add_argument( "--debug", action="store_true", @@ -104,6 +121,8 @@ def main(args=None): run_docker_build(ns) elif ns.config.startswith("osx"): run_osx_build(ns) + elif ns.config.startswith("win"): + run_win_build(ns) finally: recipe_license_file = os.path.join( "recipe", "recipe-scripts-license.txt" From 040e37c072ca32298007c3c357ab0d3da0a140a6 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 27 May 2025 10:31:16 -0500 Subject: [PATCH 04/11] update patches --- recipe/meta.yaml | 4 +- ...rrent_version-and-compatibility_vers.patch | 103 ++++++------------ ...t-export-machinery-for-RowMajorStrg.patch} | 32 +++--- ...tting-a-prefix-for-the-library-names.patch | 24 ---- 4 files changed, 53 insertions(+), 110 deletions(-) rename recipe/patches/{0003-add-DLL-import-export-machinery-for-RowMajorStrg.patch => 0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch} (67%) delete mode 100644 recipe/patches/0002-cmake-allow-setting-a-prefix-for-the-library-names.patch diff --git a/recipe/meta.yaml b/recipe/meta.yaml index e80f456..d591973 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -24,10 +24,8 @@ source: patches: # Avoid setting current_version and compatibility_version - patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch - # backport https://github.com/Reference-LAPACK/lapack/pull/810 - - patches/0002-cmake-allow-setting-a-prefix-for-the-library-names.patch # make symbol RowMajorStrg visible through DLL boundary - - patches/0003-add-DLL-import-export-machinery-for-RowMajorStrg.patch + - patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch build: number: {{ build_num }} diff --git a/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch b/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch index 94ddfb1..30ec0b3 100644 --- a/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch +++ b/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch @@ -1,125 +1,90 @@ -From 74c8f25b773eb356c54e502175418495b36535b3 Mon Sep 17 00:00:00 2001 +From 17908c24500b2a94128e2bdc72f70ca59f1b6a14 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Thu, 22 Nov 2018 19:39:51 -0600 -Subject: [PATCH 1/3] Avoid setting current_version and compatibility_version +Subject: [PATCH 1/2] Avoid setting current_version and compatibility_version on OSX To facilitate the switching of implementations, avoid these appearing in libblas.dylib etc., so that downstream consumers don't record them. --- - BLAS/SRC/CMakeLists.txt | 10 ++++++---- - CBLAS/src/CMakeLists.txt | 9 +++++++-- - LAPACKE/CMakeLists.txt | 9 +++++++-- - SRC/CMakeLists.txt | 10 ++++++---- - TESTING/MATGEN/CMakeLists.txt | 12 +++++++----- - 5 files changed, 33 insertions(+), 17 deletions(-) + BLAS/SRC/CMakeLists.txt | 2 -- + CBLAS/src/CMakeLists.txt | 2 -- + LAPACKE/CMakeLists.txt | 2 -- + SRC/CMakeLists.txt | 5 ----- + TESTING/MATGEN/CMakeLists.txt | 6 ------ + 5 files changed, 17 deletions(-) diff --git a/BLAS/SRC/CMakeLists.txt b/BLAS/SRC/CMakeLists.txt -index 4e5894f4d..ef7f13ca6 100644 +index b9e6f7c..2aa4499 100644 --- a/BLAS/SRC/CMakeLists.txt +++ b/BLAS/SRC/CMakeLists.txt -@@ -110,11 +110,13 @@ endif() - list(REMOVE_DUPLICATES SOURCES) +@@ -150,8 +150,6 @@ add_library(${BLASLIB} - add_library(${BLASLIB} ${SOURCES}) --set_target_properties( -- ${BLASLIB} PROPERTIES + set_target_properties( + ${BLASLIB} PROPERTIES - VERSION ${LAPACK_VERSION} - SOVERSION ${LAPACK_MAJOR_VERSION} -+if(NOT APPLE) -+ set_target_properties( -+ ${BLASLIB} PROPERTIES -+ VERSION ${LAPACK_VERSION} -+ SOVERSION ${LAPACK_MAJOR_VERSION} + POSITION_INDEPENDENT_CODE ON ) -+endif() lapack_install_library(${BLASLIB}) - - if( TEST_FORTRAN_COMPILER ) diff --git a/CBLAS/src/CMakeLists.txt b/CBLAS/src/CMakeLists.txt -index a8152297a..aded4feec 100644 +index 8dcb2f2..ca7dac1 100644 --- a/CBLAS/src/CMakeLists.txt +++ b/CBLAS/src/CMakeLists.txt -@@ -121,9 +121,14 @@ add_library(${CBLASLIB} ${SOURCES}) +@@ -171,8 +171,6 @@ add_library(${CBLASLIB} set_target_properties( ${CBLASLIB} PROPERTIES LINKER_LANGUAGE C - VERSION ${LAPACK_VERSION} - SOVERSION ${LAPACK_MAJOR_VERSION} -+) -+if(NOT APPLE) -+ set_target_properties( -+ ${CBLASLIB} PROPERTIES -+ VERSION ${LAPACK_VERSION} -+ SOVERSION ${LAPACK_MAJOR_VERSION} + POSITION_INDEPENDENT_CODE ON ) -+endif() - if(HAS_ATTRIBUTE_WEAK_SUPPORT) - target_compile_definitions(${CBLASLIB} PRIVATE HAS_ATTRIBUTE_WEAK_SUPPORT) - endif() + diff --git a/LAPACKE/CMakeLists.txt b/LAPACKE/CMakeLists.txt -index e78079c0e..eb3bb4d29 100644 +index 7923f47..9efbecc 100644 --- a/LAPACKE/CMakeLists.txt +++ b/LAPACKE/CMakeLists.txt -@@ -92,9 +92,14 @@ add_library(${LAPACKELIB} ${SOURCES}) +@@ -93,8 +93,6 @@ add_library(${LAPACKELIB} $ set_target_properties( ${LAPACKELIB} PROPERTIES LINKER_LANGUAGE C - VERSION ${LAPACK_VERSION} - SOVERSION ${LAPACK_MAJOR_VERSION} -+) -+if(NOT APPLE) -+ set_target_properties( -+ ${LAPACKELIB} PROPERTIES -+ VERSION ${LAPACK_VERSION} -+ SOVERSION ${LAPACK_MAJOR_VERSION} + POSITION_INDEPENDENT_CODE ON ) -+endif() target_include_directories(${LAPACKELIB} PUBLIC - $ - $ diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt -index 5d2e07258..c10ba7b9d 100644 +index be426ce..4162f6a 100644 --- a/SRC/CMakeLists.txt +++ b/SRC/CMakeLists.txt -@@ -515,11 +515,13 @@ endif() - list(REMOVE_DUPLICATES SOURCES) - - add_library(${LAPACKLIB} ${SOURCES}) +@@ -569,11 +569,6 @@ add_library(${LAPACKLIB} + $ + $ + $<$: $>) -set_target_properties( - ${LAPACKLIB} PROPERTIES - VERSION ${LAPACK_VERSION} - SOVERSION ${LAPACK_MAJOR_VERSION} -+if(NOT APPLE) -+ set_target_properties( -+ ${LAPACKLIB} PROPERTIES -+ VERSION ${LAPACK_VERSION} -+ SOVERSION ${LAPACK_MAJOR_VERSION} - ) -+endif() +- ) if( TEST_FORTRAN_COMPILER ) add_dependencies( ${LAPACKLIB} run_test_zcomplexabs run_test_zcomplexdiv run_test_zcomplexmult run_test_zminMax ) diff --git a/TESTING/MATGEN/CMakeLists.txt b/TESTING/MATGEN/CMakeLists.txt -index 0b3f89ed2..4a1297a20 100644 +index 02e05a8..98dd02b 100644 --- a/TESTING/MATGEN/CMakeLists.txt +++ b/TESTING/MATGEN/CMakeLists.txt -@@ -49,11 +49,13 @@ list(REMOVE_DUPLICATES SOURCES) - - add_library(${TMGLIB} ${SOURCES}) +@@ -87,11 +87,5 @@ add_library(${TMGLIB} + $ + $<$: $>) -set_target_properties( - ${TMGLIB} PROPERTIES - VERSION ${LAPACK_VERSION} - SOVERSION ${LAPACK_MAJOR_VERSION} -) -+if(NOT APPLE) -+ set_target_properties( -+ ${TMGLIB} PROPERTIES -+ VERSION ${LAPACK_VERSION} -+ SOVERSION ${LAPACK_MAJOR_VERSION} -+ ) -+endif() - +- target_link_libraries(${TMGLIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) lapack_install_library(${TMGLIB}) +-- +2.45.2 + diff --git a/recipe/patches/0003-add-DLL-import-export-machinery-for-RowMajorStrg.patch b/recipe/patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch similarity index 67% rename from recipe/patches/0003-add-DLL-import-export-machinery-for-RowMajorStrg.patch rename to recipe/patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch index fe78a9c..5d90504 100644 --- a/recipe/patches/0003-add-DLL-import-export-machinery-for-RowMajorStrg.patch +++ b/recipe/patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch @@ -1,17 +1,17 @@ -From 686995b99f1d8dc1984a2ed96e1932a085dd2ff0 Mon Sep 17 00:00:00 2001 +From ded2f19c673031694773782b0eb8d8f4b55f40ea Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 8 Nov 2024 14:35:19 +1100 -Subject: [PATCH 3/3] add DLL import/export machinery for RowMajorStrg +Subject: [PATCH 2/2] add DLL import/export machinery for RowMajorStrg Suggested-By: Isuru Fernando --- CBLAS/include/cblas.h | 9 +++++++++ - CBLAS/src/CMakeLists.txt | 3 +++ + CBLAS/src/CMakeLists.txt | 4 ++++ CBLAS/src/cblas_globals.c | 10 ++++++++-- - 3 files changed, 20 insertions(+), 2 deletions(-) + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CBLAS/include/cblas.h b/CBLAS/include/cblas.h -index f7d411571..4ac2d7793 100644 +index b8baf4e..5ed6dc1 100644 --- a/CBLAS/include/cblas.h +++ b/CBLAS/include/cblas.h @@ -4,6 +4,15 @@ @@ -31,21 +31,22 @@ index f7d411571..4ac2d7793 100644 #ifdef __cplusplus extern "C" { /* Assume C declarations for C++ */ diff --git a/CBLAS/src/CMakeLists.txt b/CBLAS/src/CMakeLists.txt -index aded4feec..b1c6318bf 100644 +index ca7dac1..ce2c9e1 100644 --- a/CBLAS/src/CMakeLists.txt +++ b/CBLAS/src/CMakeLists.txt -@@ -129,6 +129,9 @@ if(NOT APPLE) - SOVERSION ${LAPACK_MAJOR_VERSION} +@@ -174,6 +174,10 @@ set_target_properties( + POSITION_INDEPENDENT_CODE ON ) - endif() + +if(BUILD_SHARED_LIBS) -+ target_compile_definitions(cblas PRIVATE CBLAS_BUILDING_DLL) ++ target_compile_definitions(${CBLASLIB} PRIVATE CBLAS_BUILDING_DLL) +endif() - if(HAS_ATTRIBUTE_WEAK_SUPPORT) - target_compile_definitions(${CBLASLIB} PRIVATE HAS_ATTRIBUTE_WEAK_SUPPORT) - endif() ++ + target_include_directories(${CBLASLIB} PUBLIC + $ + ) diff --git a/CBLAS/src/cblas_globals.c b/CBLAS/src/cblas_globals.c -index 5d91a18c9..b7bf74e23 100644 +index 5d91a18..b7bf74e 100644 --- a/CBLAS/src/cblas_globals.c +++ b/CBLAS/src/cblas_globals.c @@ -1,2 +1,8 @@ @@ -59,3 +60,6 @@ index 5d91a18c9..b7bf74e23 100644 + +CBLAS_DLL int CBLAS_CallFromC=0; +CBLAS_DLL int RowMajorStrg=0; +-- +2.45.2 + diff --git a/recipe/patches/0002-cmake-allow-setting-a-prefix-for-the-library-names.patch b/recipe/patches/0002-cmake-allow-setting-a-prefix-for-the-library-names.patch deleted file mode 100644 index 1795119..0000000 --- a/recipe/patches/0002-cmake-allow-setting-a-prefix-for-the-library-names.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 38f4f68a123d443b06951f4b5de4f694ba3f35b7 Mon Sep 17 00:00:00 2001 -From: "Jose E. Roman" -Date: Sat, 1 Apr 2023 11:07:38 +0200 -Subject: [PATCH 2/3] cmake: allow setting a prefix for the library names - ---- - CMakeLists.txt | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 68a7767b8..d2baecd11 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -10,6 +10,10 @@ set( - ${LAPACK_MAJOR_VERSION}.${LAPACK_MINOR_VERSION}.${LAPACK_PATCH_VERSION} - ) - -+# Allow setting a prefix for the library names -+set(CMAKE_STATIC_LIBRARY_PREFIX "lib${LIBRARY_PREFIX}") -+set(CMAKE_SHARED_LIBRARY_PREFIX "lib${LIBRARY_PREFIX}") -+ - # Add the CMake directory for custom CMake modules - set(CMAKE_MODULE_PATH "${LAPACK_SOURCE_DIR}/CMAKE" ${CMAKE_MODULE_PATH}) - From 389c6db0d437263e0ff2d7fda8da04f257c26aa2 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 27 May 2025 10:56:07 -0500 Subject: [PATCH 05/11] more patches --- recipe/meta.yaml | 2 + recipe/patches/gh1093.patch | 35 ++++++++++++++++++ recipe/patches/gh1099.patch | 74 +++++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 recipe/patches/gh1093.patch create mode 100644 recipe/patches/gh1099.patch diff --git a/recipe/meta.yaml b/recipe/meta.yaml index d591973..7e940e8 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -26,6 +26,8 @@ source: - patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch # make symbol RowMajorStrg visible through DLL boundary - patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch + - patches/gh1093.patch + - patches/gh1099.patch build: number: {{ build_num }} diff --git a/recipe/patches/gh1093.patch b/recipe/patches/gh1093.patch new file mode 100644 index 0000000..e6a46ce --- /dev/null +++ b/recipe/patches/gh1093.patch @@ -0,0 +1,35 @@ +From 3aa877584bcc96e1a0ee37742628946c56afc15f Mon Sep 17 00:00:00 2001 +From: Wouter Deconinck +Date: Fri, 10 Jan 2025 13:05:28 -0600 +Subject: [PATCH] dlahrd.f: consistent line reflow for DTRMV calls + +--- + SRC/DEPRECATED/dlahrd.f | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/SRC/DEPRECATED/dlahrd.f b/SRC/DEPRECATED/dlahrd.f +index 2f86da73c..438ad8bda 100644 +--- a/SRC/DEPRECATED/dlahrd.f ++++ b/SRC/DEPRECATED/dlahrd.f +@@ -231,8 +231,8 @@ SUBROUTINE DLAHRD( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) + * + * w := T**T *w + * +- CALL DTRMV( 'Upper', 'Transpose', 'Non-unit', I-1, T, LDT, +- $ T( 1, NB ), 1 ) ++ CALL DTRMV( 'Upper', 'Transpose', 'Non-unit', I-1, ++ $ T, LDT, T( 1, NB ), 1 ) + * + * b2 := b2 - V2*w + * +@@ -270,8 +270,8 @@ SUBROUTINE DLAHRD( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) + * Compute T(1:i,i) + * + CALL DSCAL( I-1, -TAU( I ), T( 1, I ), 1 ) +- CALL DTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, T, LDT, +- $ T( 1, I ), 1 ) ++ CALL DTRMV( 'Upper', 'No transpose', 'Non-unit', I-1, ++ $ T, LDT, T( 1, I ), 1 ) + T( I, I ) = TAU( I ) + * + 10 CONTINUE diff --git a/recipe/patches/gh1099.patch b/recipe/patches/gh1099.patch new file mode 100644 index 0000000..4d44645 --- /dev/null +++ b/recipe/patches/gh1099.patch @@ -0,0 +1,74 @@ +From 304fa305e85190c934e78eae75c7b092fcfd54c1 Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Sun, 19 Jan 2025 22:55:52 +0100 +Subject: [PATCH 1/3] Fix line reflow on addition of _64 symbol suffixes + +--- + SRC/DEPRECATED/cgelsx.f | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/SRC/DEPRECATED/cgelsx.f b/SRC/DEPRECATED/cgelsx.f +index b55fe1565..7281a0668 100644 +--- a/SRC/DEPRECATED/cgelsx.f ++++ b/SRC/DEPRECATED/cgelsx.f +@@ -364,8 +364,8 @@ SUBROUTINE CGELSX( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, + * + * B(1:M,1:NRHS) := Q**H * B(1:M,1:NRHS) + * +- CALL CUNM2R( 'Left', 'Conjugate transpose', M, NRHS, MN, A, LDA, +- $ WORK( 1 ), B, LDB, WORK( 2*MN+1 ), INFO ) ++ CALL CUNM2R( 'Left', 'Conjugate transpose', M, NRHS, MN, A, ++ $ LDA, WORK( 1 ), B, LDB, WORK( 2*MN+1 ), INFO ) + * + * workspace NRHS + * + +From bc0c38f247f90f815a93f6ca0829004120745da4 Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Sun, 19 Jan 2025 22:58:19 +0100 +Subject: [PATCH 2/3] Fix line reflow on addition of _64 symbol suffix + +--- + SRC/DEPRECATED/dgeqpf.f | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/SRC/DEPRECATED/dgeqpf.f b/SRC/DEPRECATED/dgeqpf.f +index 36f6fb50e..067da29d0 100644 +--- a/SRC/DEPRECATED/dgeqpf.f ++++ b/SRC/DEPRECATED/dgeqpf.f +@@ -218,8 +218,8 @@ SUBROUTINE DGEQPF( M, N, A, LDA, JPVT, TAU, WORK, INFO ) + MA = MIN( ITEMP, M ) + CALL DGEQR2( M, MA, A, LDA, TAU, WORK, INFO ) + IF( MA.LT.N ) THEN +- CALL DORM2R( 'Left', 'Transpose', M, N-MA, MA, A, LDA, TAU, +- $ A( 1, MA+1 ), LDA, WORK, INFO ) ++ CALL DORM2R( 'Left', 'Transpose', M, N-MA, MA, A, LDA, ++ $ TAU, A( 1, MA+1 ), LDA, WORK, INFO ) + END IF + END IF + * + +From 3c209c6bdf524869d18d00119aeae4962740c3b3 Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Sun, 19 Jan 2025 22:59:21 +0100 +Subject: [PATCH 3/3] Fix line reflow on addition of _64 symbol suffix + +--- + SRC/DEPRECATED/sgeqpf.f | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/SRC/DEPRECATED/sgeqpf.f b/SRC/DEPRECATED/sgeqpf.f +index 7963bd8e7..f74a084a0 100644 +--- a/SRC/DEPRECATED/sgeqpf.f ++++ b/SRC/DEPRECATED/sgeqpf.f +@@ -218,8 +218,8 @@ SUBROUTINE SGEQPF( M, N, A, LDA, JPVT, TAU, WORK, INFO ) + MA = MIN( ITEMP, M ) + CALL SGEQR2( M, MA, A, LDA, TAU, WORK, INFO ) + IF( MA.LT.N ) THEN +- CALL SORM2R( 'Left', 'Transpose', M, N-MA, MA, A, LDA, TAU, +- $ A( 1, MA+1 ), LDA, WORK, INFO ) ++ CALL SORM2R( 'Left', 'Transpose', M, N-MA, MA, A, LDA, ++ $ TAU, A( 1, MA+1 ), LDA, WORK, INFO ) + END IF + END IF + * From da13e99e15cce578699e56bd5af778ecc00758d1 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 27 May 2025 11:46:53 -0500 Subject: [PATCH 06/11] vs2022 --- recipe/conda_build_config.yaml | 3 + ...rrent_version-and-compatibility_vers.patch | 77 ++++++++++++++----- ...rt-export-machinery-for-RowMajorStrg.patch | 8 +- 3 files changed, 66 insertions(+), 22 deletions(-) diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml index 4efcde8..0f039cb 100644 --- a/recipe/conda_build_config.yaml +++ b/recipe/conda_build_config.yaml @@ -1,2 +1,5 @@ channel_targets: - conda-forge lapack_rc + +c_compiler: # [win] + - vs2022 # [win] diff --git a/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch b/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch index 30ec0b3..ac184c1 100644 --- a/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch +++ b/recipe/patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch @@ -1,4 +1,4 @@ -From 17908c24500b2a94128e2bdc72f70ca59f1b6a14 Mon Sep 17 00:00:00 2001 +From b3cf6f21f56af861a23cfdcca92e0307a9ae995a Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Thu, 22 Nov 2018 19:39:51 -0600 Subject: [PATCH 1/2] Avoid setting current_version and compatibility_version @@ -7,18 +7,18 @@ Subject: [PATCH 1/2] Avoid setting current_version and compatibility_version To facilitate the switching of implementations, avoid these appearing in libblas.dylib etc., so that downstream consumers don't record them. --- - BLAS/SRC/CMakeLists.txt | 2 -- - CBLAS/src/CMakeLists.txt | 2 -- - LAPACKE/CMakeLists.txt | 2 -- - SRC/CMakeLists.txt | 5 ----- - TESTING/MATGEN/CMakeLists.txt | 6 ------ - 5 files changed, 17 deletions(-) + BLAS/SRC/CMakeLists.txt | 9 +++++++-- + CBLAS/src/CMakeLists.txt | 9 +++++++-- + LAPACKE/CMakeLists.txt | 9 +++++++-- + SRC/CMakeLists.txt | 12 +++++++----- + TESTING/MATGEN/CMakeLists.txt | 12 +++++++----- + 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/BLAS/SRC/CMakeLists.txt b/BLAS/SRC/CMakeLists.txt -index b9e6f7c..2aa4499 100644 +index b9e6f7c..0af0e9b 100644 --- a/BLAS/SRC/CMakeLists.txt +++ b/BLAS/SRC/CMakeLists.txt -@@ -150,8 +150,6 @@ add_library(${BLASLIB} +@@ -150,10 +150,15 @@ add_library(${BLASLIB} set_target_properties( ${BLASLIB} PROPERTIES @@ -26,12 +26,21 @@ index b9e6f7c..2aa4499 100644 - SOVERSION ${LAPACK_MAJOR_VERSION} POSITION_INDEPENDENT_CODE ON ) ++if (NOT APPLE) ++ set_target_properties( ++ ${BLASLIB} PROPERTIES ++ VERSION ${LAPACK_VERSION} ++ SOVERSION ${LAPACK_MAJOR_VERSION} ++ ) ++endif() lapack_install_library(${BLASLIB}) + + if( TEST_FORTRAN_COMPILER ) diff --git a/CBLAS/src/CMakeLists.txt b/CBLAS/src/CMakeLists.txt -index 8dcb2f2..ca7dac1 100644 +index 8dcb2f2..0126d2b 100644 --- a/CBLAS/src/CMakeLists.txt +++ b/CBLAS/src/CMakeLists.txt -@@ -171,8 +171,6 @@ add_library(${CBLASLIB} +@@ -171,10 +171,15 @@ add_library(${CBLASLIB} set_target_properties( ${CBLASLIB} PROPERTIES LINKER_LANGUAGE C @@ -39,12 +48,21 @@ index 8dcb2f2..ca7dac1 100644 - SOVERSION ${LAPACK_MAJOR_VERSION} POSITION_INDEPENDENT_CODE ON ) ++if (NOT APPLE) ++ set_target_properties( ++ ${CBLASLIB} PROPERTIES ++ VERSION ${LAPACK_VERSION} ++ SOVERSION ${LAPACK_MAJOR_VERSION} ++ ) ++endif() + target_include_directories(${CBLASLIB} PUBLIC + $ diff --git a/LAPACKE/CMakeLists.txt b/LAPACKE/CMakeLists.txt -index 7923f47..9efbecc 100644 +index 7923f47..e5a671a 100644 --- a/LAPACKE/CMakeLists.txt +++ b/LAPACKE/CMakeLists.txt -@@ -93,8 +93,6 @@ add_library(${LAPACKELIB} $ +@@ -93,10 +93,15 @@ add_library(${LAPACKELIB} $ set_target_properties( ${LAPACKELIB} PROPERTIES LINKER_LANGUAGE C @@ -52,12 +70,21 @@ index 7923f47..9efbecc 100644 - SOVERSION ${LAPACK_MAJOR_VERSION} POSITION_INDEPENDENT_CODE ON ) ++if (NOT APPLE) ++ set_target_properties( ++ ${LAPACKELIB} PROPERTIES ++ VERSION ${LAPACK_VERSION} ++ SOVERSION ${LAPACK_MAJOR_VERSION} ++ ) ++endif() target_include_directories(${LAPACKELIB} PUBLIC + $ + $ diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt -index be426ce..4162f6a 100644 +index be426ce..440c3ab 100644 --- a/SRC/CMakeLists.txt +++ b/SRC/CMakeLists.txt -@@ -569,11 +569,6 @@ add_library(${LAPACKLIB} +@@ -569,11 +569,13 @@ add_library(${LAPACKLIB} $ $ $<$: $>) @@ -66,14 +93,21 @@ index be426ce..4162f6a 100644 - VERSION ${LAPACK_VERSION} - SOVERSION ${LAPACK_MAJOR_VERSION} - ) ++if (NOT APPLE) ++ set_target_properties( ++ ${LAPACKLIB} PROPERTIES ++ VERSION ${LAPACK_VERSION} ++ SOVERSION ${LAPACK_MAJOR_VERSION} ++ ) ++endif() if( TEST_FORTRAN_COMPILER ) add_dependencies( ${LAPACKLIB} run_test_zcomplexabs run_test_zcomplexdiv run_test_zcomplexmult run_test_zminMax ) diff --git a/TESTING/MATGEN/CMakeLists.txt b/TESTING/MATGEN/CMakeLists.txt -index 02e05a8..98dd02b 100644 +index 02e05a8..e42759f 100644 --- a/TESTING/MATGEN/CMakeLists.txt +++ b/TESTING/MATGEN/CMakeLists.txt -@@ -87,11 +87,5 @@ add_library(${TMGLIB} +@@ -87,11 +87,13 @@ add_library(${TMGLIB} $ $<$: $>) @@ -82,7 +116,14 @@ index 02e05a8..98dd02b 100644 - VERSION ${LAPACK_VERSION} - SOVERSION ${LAPACK_MAJOR_VERSION} -) -- ++if (NOT APPLE) ++ set_target_properties( ++ ${TMGLIB} PROPERTIES ++ VERSION ${LAPACK_VERSION} ++ SOVERSION ${LAPACK_MAJOR_VERSION} ++ ) ++endif() + target_link_libraries(${TMGLIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) lapack_install_library(${TMGLIB}) -- diff --git a/recipe/patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch b/recipe/patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch index 5d90504..d66470b 100644 --- a/recipe/patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch +++ b/recipe/patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch @@ -1,4 +1,4 @@ -From ded2f19c673031694773782b0eb8d8f4b55f40ea Mon Sep 17 00:00:00 2001 +From d423fcfae3a95a8acdf06ed27ac90147e06ff8fd Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 8 Nov 2024 14:35:19 +1100 Subject: [PATCH 2/2] add DLL import/export machinery for RowMajorStrg @@ -31,12 +31,12 @@ index b8baf4e..5ed6dc1 100644 #ifdef __cplusplus extern "C" { /* Assume C declarations for C++ */ diff --git a/CBLAS/src/CMakeLists.txt b/CBLAS/src/CMakeLists.txt -index ca7dac1..ce2c9e1 100644 +index 0126d2b..a367ae5 100644 --- a/CBLAS/src/CMakeLists.txt +++ b/CBLAS/src/CMakeLists.txt -@@ -174,6 +174,10 @@ set_target_properties( - POSITION_INDEPENDENT_CODE ON +@@ -181,6 +181,10 @@ if (NOT APPLE) ) + endif() +if(BUILD_SHARED_LIBS) + target_compile_definitions(${CBLASLIB} PRIVATE CBLAS_BUILDING_DLL) From f1535596f2716112e195f338ee29e8125d33d2e7 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 27 May 2025 11:48:03 -0500 Subject: [PATCH 07/11] fix comment --- recipe/meta.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 7e940e8..aa49c31 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -72,7 +72,7 @@ outputs: - Library/lib/blas.lib # [win] test: commands: - - echo "no need to revalidate `files:` specification" + - echo "no need to revalidate files specification" - name: libtmglib build: @@ -106,7 +106,7 @@ outputs: - Library/lib/tmglib.lib # [win] test: commands: - - echo "no need to revalidate `files:` specification" + - echo "no need to revalidate files specification" - name: libcblas build: @@ -139,7 +139,7 @@ outputs: - Library/lib/cblas.lib # [win] test: commands: - - echo "no need to revalidate `files:` specification" + - echo "no need to revalidate files specification" - name: liblapack build: @@ -171,7 +171,7 @@ outputs: - Library/lib/lapack.lib # [win] test: commands: - - echo "no need to revalidate `files:` specification" + - echo "no need to revalidate files specification" - name: liblapacke build: @@ -206,7 +206,7 @@ outputs: - Library/lib/lapacke.lib # [win] test: commands: - - echo "no need to revalidate `files:` specification" + - echo "no need to revalidate files specification" - name: blas-devel build: From de39e9e03a11be75dbf8b8629c4a255cd7b172da Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 27 May 2025 13:06:11 -0500 Subject: [PATCH 08/11] fix version name --- recipe/build.sh | 11 ++++++----- recipe/meta.yaml | 31 ++++++++++++++++--------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/recipe/build.sh b/recipe/build.sh index a84eeac..267bd3e 100644 --- a/recipe/build.sh +++ b/recipe/build.sh @@ -51,12 +51,13 @@ if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then fi fi +PKG_VERSION_P0=${PKG_VERSION%.*}.0 if [[ "${target_platform}" == osx-* ]]; then - for lib in blas cblas lapack lapacke tmglib; do - mv $PREFIX/lib/lib$lib.dylib $PREFIX/lib/lib$lib.$PKG_VERSION.dylib - install_name_tool -id $PREFIX/lib/lib$lib.3.dylib $PREFIX/lib/lib$lib.$PKG_VERSION.dylib - ln -s $PREFIX/lib/lib$lib.$PKG_VERSION.dylib $PREFIX/lib/lib$lib.dylib - ln -s $PREFIX/lib/lib$lib.$PKG_VERSION.dylib $PREFIX/lib/lib$lib.3.dylib + for libname in blas cblas lapack lapacke tmglib; do + mv $PREFIX/lib/lib${libname}.dylib $PREFIX/lib/lib${libname}.${PKG_VERSION_P0}.dylib + ${INSTALL_NAME_TOOL} -id $PREFIX/lib/lib${libname}.3.dylib $PREFIX/lib/lib${libname}.${PKG_VERSION_P0}.dylib + ln -s $PREFIX/lib/lib${libname}.${PKG_VERSION_P0}.dylib $PREFIX/lib/lib${libname}.dylib + ln -s $PREFIX/lib/lib${libname}.${PKG_VERSION_P0}.dylib $PREFIX/lib/lib${libname}.3.dylib done fi diff --git a/recipe/meta.yaml b/recipe/meta.yaml index aa49c31..23ade92 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -7,6 +7,7 @@ # make sure we do not create colliding version strings of output "blas" # for builds across lapack-versions within the same blas_major {% set blas_minor = build_num + 200 %} +{% set version_p0 = ".".join(version.split(".")[:2]) + ".0" %} {% if unix %} {% set library = "" %} @@ -64,10 +65,10 @@ outputs: - {{ library }}lib/pkgconfig/blas.pc - lib/libblas.so # [linux] - lib/libblas.so.{{ version_major }} # [linux] - - lib/libblas.so.{{ version }} # [linux] + - lib/libblas.so.{{ version_p0 }} # [linux] - lib/libblas.dylib # [osx] - lib/libblas.{{ version_major }}.dylib # [osx] - - lib/libblas.{{ version }}.dylib # [osx] + - lib/libblas.{{ version_p0 }}.dylib # [osx] - Library/bin/libblas.dll # [win] - Library/lib/blas.lib # [win] test: @@ -98,10 +99,10 @@ outputs: files: - lib/libtmglib.so # [linux] - lib/libtmglib.so.{{ version_major }} # [linux] - - lib/libtmglib.so.{{ version }} # [linux] + - lib/libtmglib.so.{{ version_p0 }} # [linux] - lib/libtmglib.dylib # [osx] - lib/libtmglib.{{ version_major }}.dylib # [osx] - - lib/libtmglib.{{ version }}.dylib # [osx] + - lib/libtmglib.{{ version_p0 }}.dylib # [osx] - Library/bin/libtmglib.dll # [win] - Library/lib/tmglib.lib # [win] test: @@ -128,13 +129,13 @@ outputs: files: - {{ library }}include/cblas*.h - {{ library }}lib/pkgconfig/cblas.pc - - {{ library }}lib/cmake/cblas-{{ version }}/*.cmake + - {{ library }}lib/cmake/cblas-{{ version_p0 }}/*.cmake - lib/libcblas.so # [linux] - lib/libcblas.so.{{ version_major }} # [linux] - - lib/libcblas.so.{{ version }} # [linux] + - lib/libcblas.so.{{ version_p0 }} # [linux] - lib/libcblas.dylib # [osx] - lib/libcblas.{{ version_major }}.dylib # [osx] - - lib/libcblas.{{ version }}.dylib # [osx] + - lib/libcblas.{{ version_p0 }}.dylib # [osx] - Library/bin/libcblas.dll # [win] - Library/lib/cblas.lib # [win] test: @@ -160,13 +161,13 @@ outputs: - libblas {{ version }} files: - {{ library }}lib/pkgconfig/lapack.pc - - {{ library }}lib/cmake/lapack-{{ version }}/*.cmake + - {{ library }}lib/cmake/lapack-{{ version_p0 }}/*.cmake - lib/liblapack.so # [linux] - lib/liblapack.so.{{ version_major }} # [linux] - - lib/liblapack.so.{{ version }} # [linux] + - lib/liblapack.so.{{ version_p0 }} # [linux] - lib/liblapack.dylib # [osx] - lib/liblapack.{{ version_major }}.dylib # [osx] - - lib/liblapack.{{ version }}.dylib # [osx] + - lib/liblapack.{{ version_p0 }}.dylib # [osx] - Library/bin/liblapack.dll # [win] - Library/lib/lapack.lib # [win] test: @@ -195,13 +196,13 @@ outputs: files: - {{ library }}include/lapack*.h - {{ library }}lib/pkgconfig/lapacke.pc - - {{ library }}lib/cmake/lapacke-{{ version }}/*.cmake + - {{ library }}lib/cmake/lapacke-{{ version_p0 }}/*.cmake - lib/liblapacke.so # [linux] - lib/liblapacke.so.{{ version_major }} # [linux] - - lib/liblapacke.so.{{ version }} # [linux] + - lib/liblapacke.so.{{ version_p0 }} # [linux] - lib/liblapacke.dylib # [osx] - lib/liblapacke.{{ version_major }}.dylib # [osx] - - lib/liblapacke.{{ version }}.dylib # [osx] + - lib/liblapacke.{{ version_p0 }}.dylib # [osx] - Library/bin/liblapacke.dll # [win] - Library/lib/lapacke.lib # [win] test: @@ -244,10 +245,10 @@ outputs: {% for each_lib in ['blas', 'cblas', 'lapack', 'lapacke'] %} - test -f $PREFIX/lib/lib{{ each_lib }}.so # [linux] - test -f $PREFIX/lib/lib{{ each_lib }}.so.{{ version_major }} # [linux] - - test -f $PREFIX/lib/lib{{ each_lib }}.so.{{ version }} # [linux] + - test -f $PREFIX/lib/lib{{ each_lib }}.so.{{ version_p0 }} # [linux] - test -f $PREFIX/lib/lib{{ each_lib }}.dylib # [osx] - test -f $PREFIX/lib/lib{{ each_lib }}.{{ version_major }}.dylib # [osx] - - test -f $PREFIX/lib/lib{{ each_lib }}.{{ version }}.dylib # [osx] + - test -f $PREFIX/lib/lib{{ each_lib }}.{{ version_p0 }}.dylib # [osx] - test -f $PREFIX/lib/pkgconfig/{{ each_lib }}.pc # [unix] - if not exist %LIBRARY_LIB%\pkgconfig\{{ each_lib }}.pc exit 1 # [win] - if not exist %LIBRARY_LIB%\{{ each_lib }}.lib exit 1 # [win] From b28a0b8c72c247a485f0d326ec1bbadfe637471b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Wed, 5 Nov 2025 19:31:59 +0100 Subject: [PATCH 09/11] Backport gh1094 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- recipe/meta.yaml | 1 + recipe/patches/gh1094.patch | 194 ++++++++++++++++++++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 recipe/patches/gh1094.patch diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 23ade92..9c5878c 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -28,6 +28,7 @@ source: # make symbol RowMajorStrg visible through DLL boundary - patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch - patches/gh1093.patch + - patches/gh1094.patch - patches/gh1099.patch build: diff --git a/recipe/patches/gh1094.patch b/recipe/patches/gh1094.patch new file mode 100644 index 0000000..a0c5be5 --- /dev/null +++ b/recipe/patches/gh1094.patch @@ -0,0 +1,194 @@ +From e4ec7bc63e5364d2ea0775a0afbefee3f6f0d845 Mon Sep 17 00:00:00 2001 +From: langou +Date: Fri, 9 May 2025 07:49:46 -0600 +Subject: [PATCH 5/7] Merge pull request #1094 from + wdconinc/gelqs-geqrs-work-lwork + +?ge(lq|qr)s.f: WORK( LWORK ) -> WORK( * ) +--- + SRC/DEPRECATED/cgelqs.f | 4 ++-- + SRC/DEPRECATED/cgeqrs.f | 4 ++-- + SRC/DEPRECATED/dgelqs.f | 4 ++-- + SRC/DEPRECATED/dgeqrs.f | 4 ++-- + SRC/DEPRECATED/sgelqs.f | 4 ++-- + SRC/DEPRECATED/sgeqrs.f | 4 ++-- + SRC/DEPRECATED/zgelqs.f | 4 ++-- + SRC/DEPRECATED/zgeqrs.f | 4 ++-- + 8 files changed, 16 insertions(+), 16 deletions(-) + +diff --git a/SRC/DEPRECATED/cgelqs.f b/SRC/DEPRECATED/cgelqs.f +index 47e17a583..aba3632a7 100644 +--- a/SRC/DEPRECATED/cgelqs.f ++++ b/SRC/DEPRECATED/cgelqs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * COMPLEX A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + COMPLEX A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== +diff --git a/SRC/DEPRECATED/cgeqrs.f b/SRC/DEPRECATED/cgeqrs.f +index 13ac7f74f..9d0527283 100644 +--- a/SRC/DEPRECATED/cgeqrs.f ++++ b/SRC/DEPRECATED/cgeqrs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * COMPLEX A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + COMPLEX A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== +diff --git a/SRC/DEPRECATED/dgelqs.f b/SRC/DEPRECATED/dgelqs.f +index dc08f2398..1bab67890 100644 +--- a/SRC/DEPRECATED/dgelqs.f ++++ b/SRC/DEPRECATED/dgelqs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * DOUBLE PRECISION A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + DOUBLE PRECISION A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== +diff --git a/SRC/DEPRECATED/dgeqrs.f b/SRC/DEPRECATED/dgeqrs.f +index bfb7bd8bb..e3e6c4048 100644 +--- a/SRC/DEPRECATED/dgeqrs.f ++++ b/SRC/DEPRECATED/dgeqrs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * DOUBLE PRECISION A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + DOUBLE PRECISION A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== +diff --git a/SRC/DEPRECATED/sgelqs.f b/SRC/DEPRECATED/sgelqs.f +index 330d4d585..2b1dd44b7 100644 +--- a/SRC/DEPRECATED/sgelqs.f ++++ b/SRC/DEPRECATED/sgelqs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * REAL A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + REAL A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== +diff --git a/SRC/DEPRECATED/sgeqrs.f b/SRC/DEPRECATED/sgeqrs.f +index ed1148910..bdbad5dcb 100644 +--- a/SRC/DEPRECATED/sgeqrs.f ++++ b/SRC/DEPRECATED/sgeqrs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * REAL A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + REAL A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== +diff --git a/SRC/DEPRECATED/zgelqs.f b/SRC/DEPRECATED/zgelqs.f +index 5f629f8c7..772165dfd 100644 +--- a/SRC/DEPRECATED/zgelqs.f ++++ b/SRC/DEPRECATED/zgelqs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * COMPLEX*16 A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + COMPLEX*16 A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== +diff --git a/SRC/DEPRECATED/zgeqrs.f b/SRC/DEPRECATED/zgeqrs.f +index 6583e3859..cc33a45fc 100644 +--- a/SRC/DEPRECATED/zgeqrs.f ++++ b/SRC/DEPRECATED/zgeqrs.f +@@ -16,7 +16,7 @@ + * .. + * .. Array Arguments .. + * COMPLEX*16 A( LDA, * ), B( LDB, * ), TAU( * ), +-* $ WORK( LWORK ) ++* $ WORK( * ) + * .. + * + * +@@ -128,7 +128,7 @@ + * .. + * .. Array Arguments .. + COMPLEX*16 A( LDA, * ), B( LDB, * ), TAU( * ), +- $ WORK( LWORK ) ++ $ WORK( * ) + * .. + * + * ===================================================================== From c3522194324f72130878c8409c60c29357c9edb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Thu, 6 Nov 2025 17:53:50 +0100 Subject: [PATCH 10/11] Patch MSVC complex type support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- recipe/meta.yaml | 2 + .../0003-Implement-MSVC-complex-types.patch | 93 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 recipe/patches/0003-Implement-MSVC-complex-types.patch diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 9c5878c..3afe87b 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -27,6 +27,8 @@ source: - patches/0001-Avoid-setting-current_version-and-compatibility_vers.patch # make symbol RowMajorStrg visible through DLL boundary - patches/0002-add-DLL-import-export-machinery-for-RowMajorStrg.patch + # Use MSVC complex types instead of C99 + - patches/0003-Implement-MSVC-complex-types.patch - patches/gh1093.patch - patches/gh1094.patch - patches/gh1099.patch diff --git a/recipe/patches/0003-Implement-MSVC-complex-types.patch b/recipe/patches/0003-Implement-MSVC-complex-types.patch new file mode 100644 index 0000000..cf4dcb9 --- /dev/null +++ b/recipe/patches/0003-Implement-MSVC-complex-types.patch @@ -0,0 +1,93 @@ +From 3c3f8b1428cd00b0de4186b8c9ab8ac220155ba9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Thu, 6 Nov 2025 17:52:51 +0100 +Subject: [PATCH] Implement MSVC complex types +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Michał Górny +--- + LAPACKE/include/lapack.h | 8 ++++++++ + LAPACKE/include/lapacke_config.h | 10 ++++++++++ + LAPACKE/utils/lapacke_make_complex_double.c | 2 ++ + LAPACKE/utils/lapacke_make_complex_float.c | 2 ++ + 4 files changed, 22 insertions(+) + +diff --git a/LAPACKE/include/lapack.h b/LAPACKE/include/lapack.h +index f9a254512..a9f110fdc 100644 +--- a/LAPACKE/include/lapack.h ++++ b/LAPACKE/include/lapack.h +@@ -47,8 +47,12 @@ + #else + #include + #endif ++#if _MSC_VER ++#define lapack_complex_float _Fcomplex ++#else + #define lapack_complex_float float _Complex + #endif ++#endif + + #ifndef lapack_complex_float_real + #define lapack_complex_float_real(z) (creal(z)) +@@ -65,8 +69,12 @@ + #else + #include + #endif ++#if _MSC_VER ++#define lapack_complex_double _Dcomplex ++#else + #define lapack_complex_double double _Complex + #endif ++#endif + + #ifndef lapack_complex_double_real + #define lapack_complex_double_real(z) (creal(z)) +diff --git a/LAPACKE/include/lapacke_config.h b/LAPACKE/include/lapacke_config.h +index c64fc4416..753d4587a 100644 +--- a/LAPACKE/include/lapacke_config.h ++++ b/LAPACKE/include/lapacke_config.h +@@ -99,6 +99,16 @@ typedef struct { double real, imag; } _lapack_complex_double; + #define lapack_complex_double_real(z) ((z).real()) + #define lapack_complex_double_imag(z) ((z).imag()) + ++#elif _MSC_VER ++ ++#include ++#define lapack_complex_float _Fcomplex ++#define lapack_complex_double _Dcomplex ++#define lapack_complex_float_real(z) (crealf(z)) ++#define lapack_complex_float_imag(z) (cimagf(z)) ++#define lapack_complex_double_real(z) (creal(z)) ++#define lapack_complex_double_imag(z) (cimag(z)) ++ + #else + + #include +diff --git a/LAPACKE/utils/lapacke_make_complex_double.c b/LAPACKE/utils/lapacke_make_complex_double.c +index f6fb74b18..da59ce5d1 100644 +--- a/LAPACKE/utils/lapacke_make_complex_double.c ++++ b/LAPACKE/utils/lapacke_make_complex_double.c +@@ -43,6 +43,8 @@ lapack_complex_double lapack_make_complex_double( double re, double im ) { + z = re + im * I; + #elif defined(LAPACK_COMPLEX_CPP) + z = std::complex(re,im); ++#elif _MSC_VER ++ z = _Cbuild(re, im); + #else /* C99 is default */ + z = re + im*I; + #endif +diff --git a/LAPACKE/utils/lapacke_make_complex_float.c b/LAPACKE/utils/lapacke_make_complex_float.c +index c04eb084c..580b06837 100644 +--- a/LAPACKE/utils/lapacke_make_complex_float.c ++++ b/LAPACKE/utils/lapacke_make_complex_float.c +@@ -43,6 +43,8 @@ lapack_complex_float lapack_make_complex_float( float re, float im ) { + z = re + im * I; + #elif defined(LAPACK_COMPLEX_CPP) + z = std::complex(re,im); ++#elif _MSC_VER ++ z = _FCbuild(re, im); + #else /* C99 is default */ + z = re + im*I; + #endif From 0490969f8c7fb633477b6d5f11a8d9b835cabd16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Thu, 6 Nov 2025 20:53:55 +0100 Subject: [PATCH 11/11] MNT: Re-rendered with conda-smithy 3.52.3 and conda-forge-pinning 2025.11.06.19.20.54 Other tools: - conda-build 25.9.0 - rattler-build 0.49.0 - rattler-build-conda-compat 1.4.9 --- .azure-pipelines/azure-pipelines-linux.yml | 2 +- .azure-pipelines/azure-pipelines-osx.yml | 4 ++-- .azure-pipelines/azure-pipelines-win.yml | 2 +- .ci_support/linux_64_.yaml | 6 ++---- .ci_support/linux_aarch64_.yaml | 6 ++---- .ci_support/linux_ppc64le_.yaml | 6 ++---- .ci_support/osx_64_.yaml | 4 ++-- .ci_support/osx_arm64_.yaml | 4 ++-- .ci_support/win_64_.yaml | 2 +- .gitattributes | 1 + .scripts/build_steps.sh | 2 +- .scripts/run_docker_build.sh | 2 +- .scripts/run_osx_build.sh | 2 +- .scripts/run_win_build.bat | 2 +- README.md | 6 +++--- build-locally.py | 8 ++------ 16 files changed, 25 insertions(+), 34 deletions(-) diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index b1513b8..807de1f 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -49,4 +49,4 @@ jobs: env: BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index ac0bf38..d08eed2 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,7 +5,7 @@ jobs: - job: osx pool: - vmImage: macOS-13 + vmImage: macOS-15 strategy: matrix: osx_64_: @@ -37,4 +37,4 @@ jobs: env: BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 13022dd..ada9763 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -35,4 +35,4 @@ jobs: UPLOAD_TEMP: $(UPLOAD_TEMP) BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index bbc1293..7443059 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -1,13 +1,11 @@ c_compiler: - gcc c_compiler_version: -- '13' +- '14' c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -17,7 +15,7 @@ docker_image: fortran_compiler: - gfortran fortran_compiler_version: -- '13' +- '14' libblas: - 3.9.* *netlib libcblas: diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index c311d14..8d519f1 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -1,13 +1,11 @@ c_compiler: - gcc c_compiler_version: -- '13' +- '14' c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -17,7 +15,7 @@ docker_image: fortran_compiler: - gfortran fortran_compiler_version: -- '13' +- '14' libblas: - 3.9.* *netlib libcblas: diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index 9aec29f..9b87740 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -1,13 +1,11 @@ c_compiler: - gcc c_compiler_version: -- '13' +- '14' c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -17,7 +15,7 @@ docker_image: fortran_compiler: - gfortran fortran_compiler_version: -- '13' +- '14' libblas: - 3.9.* *netlib libcblas: diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index d69c3c1..ccca101 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -5,7 +5,7 @@ MACOSX_SDK_VERSION: c_compiler: - clang c_compiler_version: -- '18' +- '19' c_stdlib: - macosx_deployment_target c_stdlib_version: @@ -17,7 +17,7 @@ channel_targets: fortran_compiler: - gfortran fortran_compiler_version: -- '13' +- '14' libblas: - 3.9.* *netlib libcblas: diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index e4b53a4..3309a5c 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -5,7 +5,7 @@ MACOSX_SDK_VERSION: c_compiler: - clang c_compiler_version: -- '18' +- '19' c_stdlib: - macosx_deployment_target c_stdlib_version: @@ -17,7 +17,7 @@ channel_targets: fortran_compiler: - gfortran fortran_compiler_version: -- '13' +- '14' libblas: - 3.9.* *netlib libcblas: diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml index 5f83a10..79c3757 100644 --- a/.ci_support/win_64_.yaml +++ b/.ci_support/win_64_.yaml @@ -1,5 +1,5 @@ c_compiler: -- vs2019 +- vs2022 c_stdlib: - vs channel_sources: diff --git a/.gitattributes b/.gitattributes index 18f114a..85ccb8f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -24,4 +24,5 @@ bld.bat text eol=crlf /README.md linguist-generated=true azure-pipelines.yml linguist-generated=true build-locally.py linguist-generated=true +pixi.toml linguist-generated=true shippable.yml linguist-generated=true diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index f8051ab..250a5e2 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -94,4 +94,4 @@ fi ( startgroup "Final checks" ) 2> /dev/null -touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" \ No newline at end of file +touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 6ee04aa..b63b5a0 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -111,4 +111,4 @@ docker run ${DOCKER_RUN_ARGS} \ test -f "$DONE_CANARY" # This closes the last group opened in `build_steps.sh` -( endgroup "Final checks" ) 2> /dev/null \ No newline at end of file +( endgroup "Final checks" ) 2> /dev/null diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index ee996f4..e6b374e 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -113,4 +113,4 @@ else fi ( endgroup "Uploading packages" ) 2> /dev/null -fi \ No newline at end of file +fi diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 00c8c33..2b9fd75 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -143,4 +143,4 @@ if /i "%CI%" == "azure" ( echo ##[endgroup] exit /b ) -exit /b \ No newline at end of file +exit /b diff --git a/README.md b/README.md index 38af785..9fc1539 100644 --- a/README.md +++ b/README.md @@ -159,12 +159,12 @@ it is possible to build and upload installable packages to the [conda-forge](https://anaconda.org/conda-forge) [anaconda.org](https://anaconda.org/) channel for Linux, Windows and OSX respectively. -To manage the continuous integration and simplify feedstock maintenance +To manage the continuous integration and simplify feedstock maintenance, [conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. -For more information please check the [conda-forge documentation](https://conda-forge.org/docs/). +For more information, please check the [conda-forge documentation](https://conda-forge.org/docs/). Terminology =========== @@ -191,7 +191,7 @@ merged, the recipe will be re-built and uploaded automatically to the everybody to install and use from the `conda-forge` channel. Note that all branches in the conda-forge/lapack-feedstock are immediately built and any created packages are uploaded, so PRs should be based -on branches in forks and branches in the main repository should only be used to +on branches in forks, and branches in the main repository should only be used to build distinct package versions. In order to produce a uniquely identifiable distribution: diff --git a/build-locally.py b/build-locally.py index 02c2374..9dfe440 100755 --- a/build-locally.py +++ b/build-locally.py @@ -106,9 +106,7 @@ def main(args=None): action="store_true", help="Setup debug environment using `conda debug`", ) - p.add_argument( - "--output-id", help="If running debug, specify the output to setup." - ) + p.add_argument("--output-id", help="If running debug, specify the output to setup.") ns = p.parse_args(args=args) verify_config(ns) @@ -124,9 +122,7 @@ def main(args=None): elif ns.config.startswith("win"): run_win_build(ns) finally: - recipe_license_file = os.path.join( - "recipe", "recipe-scripts-license.txt" - ) + recipe_license_file = os.path.join("recipe", "recipe-scripts-license.txt") if os.path.exists(recipe_license_file): os.remove(recipe_license_file)