diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml deleted file mode 100755 index 7b2734b..0000000 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ /dev/null @@ -1,56 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- - -jobs: -- job: linux - pool: - vmImage: ubuntu-latest - strategy: - matrix: - linux_64_numpy1.22python3.10.____cpython: - CONFIG: linux_64_numpy1.22python3.10.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_numpy1.22python3.9.____cpython: - CONFIG: linux_64_numpy1.22python3.9.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_numpy1.23python3.11.____cpython: - CONFIG: linux_64_numpy1.23python3.11.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_numpy1.26python3.12.____cpython: - CONFIG: linux_64_numpy1.26python3.12.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - timeoutInMinutes: 360 - variables: {} - - steps: - # configure qemu binfmt-misc running. This allows us to run docker containers - # embedded qemu-static - - script: | - docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes - ls /proc/sys/fs/binfmt_misc/ - condition: not(startsWith(variables['CONFIG'], 'linux_64')) - displayName: Configure binfmt_misc - - - script: | - export CI=azure - export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) - export remote_url=$(Build.Repository.Uri) - export sha=$(Build.SourceVersion) - export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME - export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) - if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then - export IS_PR_BUILD="True" - else - export IS_PR_BUILD="False" - fi - .scripts/run_docker_build.sh - displayName: Run docker build - env: - BINSTAR_TOKEN: $(BINSTAR_TOKEN) - FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml deleted file mode 100755 index f8c0353..0000000 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ /dev/null @@ -1,46 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- - -jobs: -- job: osx - pool: - vmImage: macOS-13 - strategy: - matrix: - osx_64_numpy1.22python3.10.____cpython: - CONFIG: osx_64_numpy1.22python3.10.____cpython - UPLOAD_PACKAGES: 'True' - osx_64_numpy1.22python3.9.____cpython: - CONFIG: osx_64_numpy1.22python3.9.____cpython - UPLOAD_PACKAGES: 'True' - osx_64_numpy1.23python3.11.____cpython: - CONFIG: osx_64_numpy1.23python3.11.____cpython - UPLOAD_PACKAGES: 'True' - osx_64_numpy1.26python3.12.____cpython: - CONFIG: osx_64_numpy1.26python3.12.____cpython - UPLOAD_PACKAGES: 'True' - timeoutInMinutes: 360 - variables: {} - - steps: - # TODO: Fast finish on azure pipelines? - - script: | - export CI=azure - export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) - export remote_url=$(Build.Repository.Uri) - export sha=$(Build.SourceVersion) - export OSX_FORCE_SDK_DOWNLOAD="1" - export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME - export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) - if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then - export IS_PR_BUILD="True" - else - export IS_PR_BUILD="False" - fi - ./.scripts/run_osx_build.sh - displayName: Run OSX build - env: - BINSTAR_TOKEN: $(BINSTAR_TOKEN) - FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml deleted file mode 100755 index f316545..0000000 --- a/.azure-pipelines/azure-pipelines-win.yml +++ /dev/null @@ -1,47 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- - -jobs: -- job: win - pool: - vmImage: windows-2022 - strategy: - matrix: - win_64_numpy1.22python3.10.____cpython: - CONFIG: win_64_numpy1.22python3.10.____cpython - UPLOAD_PACKAGES: 'True' - win_64_numpy1.22python3.9.____cpython: - CONFIG: win_64_numpy1.22python3.9.____cpython - UPLOAD_PACKAGES: 'True' - win_64_numpy1.23python3.11.____cpython: - CONFIG: win_64_numpy1.23python3.11.____cpython - UPLOAD_PACKAGES: 'True' - win_64_numpy1.26python3.12.____cpython: - CONFIG: win_64_numpy1.26python3.12.____cpython - UPLOAD_PACKAGES: 'True' - timeoutInMinutes: 360 - variables: - CONDA_BLD_PATH: D:\\bld\\ - MINIFORGE_HOME: D:\Miniforge - UPLOAD_TEMP: D:\\tmp - - steps: - - - 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 - flow_run_id: azure_$(Build.BuildNumber).$(System.JobAttempt) - remote_url: $(Build.Repository.Uri) - sha: $(Build.SourceVersion) - UPLOAD_PACKAGES: $(UPLOAD_PACKAGES) - UPLOAD_TEMP: $(UPLOAD_TEMP) - BINSTAR_TOKEN: $(BINSTAR_TOKEN) - FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file diff --git a/.ci_support/linux_64_numpy1.22python3.10.____cpython.yaml b/.ci_support/linux_64_numpy1.22python3.10.____cpython.yaml deleted file mode 100644 index 1de4c09..0000000 --- a/.ci_support/linux_64_numpy1.22python3.10.____cpython.yaml +++ /dev/null @@ -1,21 +0,0 @@ -cdt_name: -- conda -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 -numpy: -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.10.* *_cpython -target_platform: -- linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/linux_64_numpy1.22python3.9.____cpython.yaml b/.ci_support/linux_64_numpy1.22python3.9.____cpython.yaml deleted file mode 100644 index 552834d..0000000 --- a/.ci_support/linux_64_numpy1.22python3.9.____cpython.yaml +++ /dev/null @@ -1,21 +0,0 @@ -cdt_name: -- conda -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 -numpy: -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.9.* *_cpython -target_platform: -- linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/linux_64_numpy1.23python3.11.____cpython.yaml b/.ci_support/linux_64_numpy1.23python3.11.____cpython.yaml deleted file mode 100644 index fcebf1c..0000000 --- a/.ci_support/linux_64_numpy1.23python3.11.____cpython.yaml +++ /dev/null @@ -1,21 +0,0 @@ -cdt_name: -- conda -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 -numpy: -- '1.23' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.11.* *_cpython -target_platform: -- linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/linux_64_numpy1.26python3.12.____cpython.yaml b/.ci_support/linux_64_numpy1.26python3.12.____cpython.yaml deleted file mode 100644 index d0511dc..0000000 --- a/.ci_support/linux_64_numpy1.26python3.12.____cpython.yaml +++ /dev/null @@ -1,21 +0,0 @@ -cdt_name: -- conda -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -docker_image: -- quay.io/condaforge/linux-anvil-x86_64:alma9 -numpy: -- '1.26' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.12.* *_cpython -target_platform: -- linux-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/linux_64_python3.10.____cpython.yaml b/.ci_support/linux_64_python3.10.____cpython.yaml new file mode 100644 index 0000000..44d7412 --- /dev/null +++ b/.ci_support/linux_64_python3.10.____cpython.yaml @@ -0,0 +1,49 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +target_platform: +- linux-64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/linux_64_python3.11.____cpython.yaml b/.ci_support/linux_64_python3.11.____cpython.yaml new file mode 100644 index 0000000..4a37884 --- /dev/null +++ b/.ci_support/linux_64_python3.11.____cpython.yaml @@ -0,0 +1,49 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.11.* *_cpython +target_platform: +- linux-64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/linux_64_python3.12.____cpython.yaml b/.ci_support/linux_64_python3.12.____cpython.yaml new file mode 100644 index 0000000..f8569cd --- /dev/null +++ b/.ci_support/linux_64_python3.12.____cpython.yaml @@ -0,0 +1,49 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +target_platform: +- linux-64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/linux_aarch64_python3.10.____cpython.yaml b/.ci_support/linux_aarch64_python3.10.____cpython.yaml new file mode 100644 index 0000000..445ec7d --- /dev/null +++ b/.ci_support/linux_aarch64_python3.10.____cpython.yaml @@ -0,0 +1,49 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +target_platform: +- linux-aarch64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/linux_aarch64_python3.11.____cpython.yaml b/.ci_support/linux_aarch64_python3.11.____cpython.yaml new file mode 100644 index 0000000..7a3dc7b --- /dev/null +++ b/.ci_support/linux_aarch64_python3.11.____cpython.yaml @@ -0,0 +1,49 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.11.* *_cpython +target_platform: +- linux-aarch64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/linux_aarch64_python3.12.____cpython.yaml b/.ci_support/linux_aarch64_python3.12.____cpython.yaml new file mode 100644 index 0000000..821fa4e --- /dev/null +++ b/.ci_support/linux_aarch64_python3.12.____cpython.yaml @@ -0,0 +1,49 @@ +c_compiler: +- gcc +c_compiler_version: +- '14' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +target_platform: +- linux-aarch64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/osx_64_numpy1.22python3.10.____cpython.yaml b/.ci_support/osx_64_numpy1.22python3.10.____cpython.yaml deleted file mode 100644 index 41f3066..0000000 --- a/.ci_support/osx_64_numpy1.22python3.10.____cpython.yaml +++ /dev/null @@ -1,23 +0,0 @@ -MACOSX_DEPLOYMENT_TARGET: -- '10.13' -MACOSX_SDK_VERSION: -- '10.13' -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -macos_machine: -- x86_64-apple-darwin13.4.0 -numpy: -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.10.* *_cpython -target_platform: -- osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_numpy1.22python3.9.____cpython.yaml b/.ci_support/osx_64_numpy1.22python3.9.____cpython.yaml deleted file mode 100644 index ed88a2e..0000000 --- a/.ci_support/osx_64_numpy1.22python3.9.____cpython.yaml +++ /dev/null @@ -1,23 +0,0 @@ -MACOSX_DEPLOYMENT_TARGET: -- '10.13' -MACOSX_SDK_VERSION: -- '10.13' -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -macos_machine: -- x86_64-apple-darwin13.4.0 -numpy: -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.9.* *_cpython -target_platform: -- osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_numpy1.23python3.11.____cpython.yaml b/.ci_support/osx_64_numpy1.23python3.11.____cpython.yaml deleted file mode 100644 index db887b4..0000000 --- a/.ci_support/osx_64_numpy1.23python3.11.____cpython.yaml +++ /dev/null @@ -1,23 +0,0 @@ -MACOSX_DEPLOYMENT_TARGET: -- '10.13' -MACOSX_SDK_VERSION: -- '10.13' -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -macos_machine: -- x86_64-apple-darwin13.4.0 -numpy: -- '1.23' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.11.* *_cpython -target_platform: -- osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_numpy1.26python3.12.____cpython.yaml b/.ci_support/osx_64_numpy1.26python3.12.____cpython.yaml deleted file mode 100644 index 9e7368d..0000000 --- a/.ci_support/osx_64_numpy1.26python3.12.____cpython.yaml +++ /dev/null @@ -1,23 +0,0 @@ -MACOSX_DEPLOYMENT_TARGET: -- '10.13' -MACOSX_SDK_VERSION: -- '10.13' -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -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 -target_platform: -- osx-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/osx_64_python3.10.____cpython.yaml b/.ci_support/osx_64_python3.10.____cpython.yaml new file mode 100644 index 0000000..ccf173a --- /dev/null +++ b/.ci_support/osx_64_python3.10.____cpython.yaml @@ -0,0 +1,53 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +macos_machine: +- x86_64-apple-darwin13.4.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +target_platform: +- osx-64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/osx_64_python3.11.____cpython.yaml b/.ci_support/osx_64_python3.11.____cpython.yaml new file mode 100644 index 0000000..29e653d --- /dev/null +++ b/.ci_support/osx_64_python3.11.____cpython.yaml @@ -0,0 +1,53 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +macos_machine: +- x86_64-apple-darwin13.4.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.11.* *_cpython +target_platform: +- osx-64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/osx_64_python3.12.____cpython.yaml b/.ci_support/osx_64_python3.12.____cpython.yaml new file mode 100644 index 0000000..ffbc484 --- /dev/null +++ b/.ci_support/osx_64_python3.12.____cpython.yaml @@ -0,0 +1,53 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +macos_machine: +- x86_64-apple-darwin13.4.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +target_platform: +- osx-64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/osx_arm64_python3.10.____cpython.yaml b/.ci_support/osx_arm64_python3.10.____cpython.yaml new file mode 100644 index 0000000..ccdad4c --- /dev/null +++ b/.ci_support/osx_arm64_python3.10.____cpython.yaml @@ -0,0 +1,53 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +target_platform: +- osx-arm64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/osx_arm64_python3.11.____cpython.yaml b/.ci_support/osx_arm64_python3.11.____cpython.yaml new file mode 100644 index 0000000..fcaf669 --- /dev/null +++ b/.ci_support/osx_arm64_python3.11.____cpython.yaml @@ -0,0 +1,53 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.11.* *_cpython +target_platform: +- osx-arm64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/osx_arm64_python3.12.____cpython.yaml b/.ci_support/osx_arm64_python3.12.____cpython.yaml new file mode 100644 index 0000000..9f00280 --- /dev/null +++ b/.ci_support/osx_arm64_python3.12.____cpython.yaml @@ -0,0 +1,53 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +MACOSX_SDK_VERSION: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '19' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '11.0' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +expat: +- '2' +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libpng: +- '1.6' +libtiff: +- '4.7' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +target_platform: +- osx-arm64 +tbb: +- '2022' +tbb_devel: +- '2022' +zip_keys: +- - c_compiler_version + - cxx_compiler_version +zlib: +- '1' diff --git a/.ci_support/win_64_numpy1.22python3.9.____cpython.yaml b/.ci_support/win_64_numpy1.22python3.9.____cpython.yaml deleted file mode 100644 index 843f352..0000000 --- a/.ci_support/win_64_numpy1.22python3.9.____cpython.yaml +++ /dev/null @@ -1,17 +0,0 @@ -channel_sources: -- conda-forge -channel_targets: -- conda-forge main -numpy: -- '1.22' -pin_run_as_build: - python: - min_pin: x.x - max_pin: x.x -python: -- 3.9.* *_cpython -target_platform: -- win-64 -zip_keys: -- - python - - numpy diff --git a/.ci_support/win_64_numpy1.22python3.10.____cpython.yaml b/.ci_support/win_64_python3.10.____cpython.yaml similarity index 51% rename from .ci_support/win_64_numpy1.22python3.10.____cpython.yaml rename to .ci_support/win_64_python3.10.____cpython.yaml index 81093c8..f75ccc1 100644 --- a/.ci_support/win_64_numpy1.22python3.10.____cpython.yaml +++ b/.ci_support/win_64_python3.10.____cpython.yaml @@ -1,9 +1,23 @@ +c_compiler: +- vs2022 +c_stdlib: +- vs channel_sources: - conda-forge channel_targets: - conda-forge main +cxx_compiler: +- vs2022 +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libtiff: +- '4.7' numpy: -- '1.22' +- '2' pin_run_as_build: python: min_pin: x.x @@ -12,6 +26,9 @@ python: - 3.10.* *_cpython target_platform: - win-64 -zip_keys: -- - python - - numpy +tbb: +- '2022' +tbb_devel: +- '2022' +vc: +- '14' diff --git a/.ci_support/win_64_numpy1.23python3.11.____cpython.yaml b/.ci_support/win_64_python3.11.____cpython.yaml similarity index 51% rename from .ci_support/win_64_numpy1.23python3.11.____cpython.yaml rename to .ci_support/win_64_python3.11.____cpython.yaml index 4801c49..bcaf845 100644 --- a/.ci_support/win_64_numpy1.23python3.11.____cpython.yaml +++ b/.ci_support/win_64_python3.11.____cpython.yaml @@ -1,9 +1,23 @@ +c_compiler: +- vs2022 +c_stdlib: +- vs channel_sources: - conda-forge channel_targets: - conda-forge main +cxx_compiler: +- vs2022 +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libtiff: +- '4.7' numpy: -- '1.23' +- '2' pin_run_as_build: python: min_pin: x.x @@ -12,6 +26,9 @@ python: - 3.11.* *_cpython target_platform: - win-64 -zip_keys: -- - python - - numpy +tbb: +- '2022' +tbb_devel: +- '2022' +vc: +- '14' diff --git a/.ci_support/win_64_numpy1.26python3.12.____cpython.yaml b/.ci_support/win_64_python3.12.____cpython.yaml similarity index 51% rename from .ci_support/win_64_numpy1.26python3.12.____cpython.yaml rename to .ci_support/win_64_python3.12.____cpython.yaml index 9729d64..8321fca 100644 --- a/.ci_support/win_64_numpy1.26python3.12.____cpython.yaml +++ b/.ci_support/win_64_python3.12.____cpython.yaml @@ -1,9 +1,23 @@ +c_compiler: +- vs2022 +c_stdlib: +- vs channel_sources: - conda-forge channel_targets: - conda-forge main +cxx_compiler: +- vs2022 +fftw: +- '3' +hdf5: +- 1.14.6 +libjpeg_turbo: +- '3' +libtiff: +- '4.7' numpy: -- '1.26' +- '2' pin_run_as_build: python: min_pin: x.x @@ -12,6 +26,9 @@ python: - 3.12.* *_cpython target_platform: - win-64 -zip_keys: -- - python - - numpy +tbb: +- '2022' +tbb_devel: +- '2022' +vc: +- '14' 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/.github/CODEOWNERS b/.github/CODEOWNERS index 8dc8dd1..ab02fd5 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @thewtex \ No newline at end of file +* @hanayik @thewtex \ No newline at end of file diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index a948c6c..2f1e2fb 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -1,15 +1,210 @@ -# This file was added automatically by admin-migrations. Do not modify. -# It ensures that Github Actions can run once rerendered for the first time. +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. # -*- mode: yaml -*- name: Build conda package on: - workflow_dispatch: + push: + + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true jobs: build: - name: Disabled build - runs-on: ubuntu-slim - if: false + name: ${{ matrix.CONFIG }} + runs-on: ${{ matrix.runs_on }} + timeout-minutes: 360 + strategy: + fail-fast: false + max-parallel: 50 + matrix: + include: + - CONFIG: linux_64_python3.10.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_64_python3.11.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_64_python3.12.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.10.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.11.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: linux_aarch64_python3.12.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: ubuntu + runs_on: ['ubuntu-latest'] + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + - CONFIG: osx_64_python3.10.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: macos + runs_on: ['macos-latest'] + - CONFIG: osx_64_python3.11.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: macos + runs_on: ['macos-latest'] + - CONFIG: osx_64_python3.12.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: macos + runs_on: ['macos-latest'] + - CONFIG: osx_arm64_python3.10.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: macos + runs_on: ['macos-latest'] + - CONFIG: osx_arm64_python3.11.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: macos + runs_on: ['macos-latest'] + - CONFIG: osx_arm64_python3.12.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: macos + runs_on: ['macos-latest'] + - CONFIG: win_64_python3.10.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: windows + runs_on: ['windows-latest'] + - CONFIG: win_64_python3.11.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: windows + runs_on: ['windows-latest'] + - CONFIG: win_64_python3.12.____cpython + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + os: windows + runs_on: ['windows-latest'] steps: - - run: exit 0 + + - name: Manage disk space + if: matrix.os == 'ubuntu' + run: | + sudo mkdir -p /opt/empty_dir || true + for d in \ + /opt/ghc \ + /opt/hostedtoolcache \ + /usr/lib/jvm \ + /usr/local/.ghcup \ + /usr/local/lib/android \ + /usr/local/share/powershell \ + /usr/share/dotnet \ + /usr/share/swift \ + ; do + sudo rsync --stats -a --delete /opt/empty_dir/ $d || true + done + BROWSERS="firefox google-chrome-stable microsoft-edge-stable" + BROWSERS_TO_REMOVE=$(dpkg --get-selections $BROWSERS 2>/dev/null | awk '{print $1}') + sudo apt-get remove --purge -y $BROWSERS_TO_REMOVE + + sudo apt-get autoremove -y >& /dev/null + sudo apt-get autoclean -y >& /dev/null + df -h + + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Build on Linux + id: build-linux + if: matrix.os == 'ubuntu' + env: + CONFIG: ${{ matrix.CONFIG }} + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + DOCKER_IMAGE: ${{ matrix.DOCKER_IMAGE }} + CI: github_actions + CONDA_FORGE_DOCKER_RUN_ARGS: "${{ matrix.CONDA_FORGE_DOCKER_RUN_ARGS }}" + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} + shell: bash + run: | + if [[ "$(uname -m)" == "x86_64" ]]; then + echo "::group::Configure binfmt_misc" + docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes + fi + export flow_run_id="github_$GITHUB_RUN_ID" + export remote_url="https://github.com/$GITHUB_REPOSITORY" + export sha="$GITHUB_SHA" + export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" + export GIT_BRANCH="$(basename $GITHUB_REF)" + if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi + echo "::endgroup::" + ./.scripts/run_docker_build.sh + + - name: Build on macOS + id: build-macos + if: matrix.os == 'macos' + env: + CONFIG: ${{ matrix.CONFIG }} + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + CI: github_actions + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} + shell: bash + run: | + export flow_run_id="github_$GITHUB_RUN_ID" + export remote_url="https://github.com/$GITHUB_REPOSITORY" + export sha="$GITHUB_SHA" + export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" + export GIT_BRANCH="$(basename $GITHUB_REF)" + if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi + ./.scripts/run_osx_build.sh + + - name: Build on windows + id: build-windows + if: matrix.os == 'windows' + shell: cmd + run: | + set "flow_run_id=github_%GITHUB_RUN_ID%" + set "remote_url=https://github.com/%GITHUB_REPOSITORY%" + set "sha=%GITHUB_SHA%" + call ".scripts\run_win_build.bat" + env: + # default value; make it explicit, as it needs to match with artefact + # generation below. Not configurable for now, can be revisited later + CONDA_BLD_PATH: C:\bld + MINIFORGE_HOME: ${{ contains(runner.arch, 'ARM') && 'C' || 'D' }}:\Miniforge + PYTHONUNBUFFERED: 1 + CONFIG: ${{ matrix.CONFIG }} + CI: github_actions + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 179afe5..86a9c55 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ # Ignore all files and folders in root * !/conda-forge.yml +!.recipe_maintainers.json # Don't ignore any files/folders if the parent folder is 'un-ignored' # This also avoids warnings when adding an already-checked file with an ignored parent. @@ -22,3 +23,8 @@ /build_artifacts *.pyc + +# Rattler-build's artifacts are in `output` when not specifying anything. +/output +# Pixi's configuration +.pixi diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index f8051ab..be060cb 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -20,6 +20,7 @@ export PYTHONUNBUFFERED=1 export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" +export RATTLER_CACHE_DIR="${FEEDSTOCK_ROOT}/build_artifacts/pkg_cache" cat >~/.condarc < /dev/null @@ -94,4 +98,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 00f377a..10d6a2a 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -11,8 +11,10 @@ source .scripts/logging_utils.sh set -xeo pipefail +DOCKER_EXECUTABLE="${DOCKER_EXECUTABLE:-docker}" + 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" @@ -27,7 +29,7 @@ if [[ "${sha:-}" == "" ]]; then popd fi -docker info +${DOCKER_EXECUTABLE} info # In order for the conda-build process in the container to write to the mounted # volumes, we need to run with the same id as the host machine, which is @@ -35,6 +37,7 @@ docker info export HOST_USER_ID=$(id -u) # Check if docker-machine is being used (normally on OSX) and get the uid from # the VM + if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u) fi @@ -76,16 +79,34 @@ if [ -z "${CI}" ]; then DOCKER_RUN_ARGS="-it ${DOCKER_RUN_ARGS}" fi -( endgroup "Configure Docker" ) 2> /dev/null +# Default volume suffix for Docker (preserve original behavior) +VOLUME_SUFFIX=",z" +# Podman-specific handling +if [ "${DOCKER_EXECUTABLE}" = "podman" ]; then + # Fix file permissions for rootless podman builds + podman unshare chown -R ${HOST_USER_ID}:${HOST_USER_ID} "${ARTIFACTS}" + podman unshare chown -R ${HOST_USER_ID}:${HOST_USER_ID} "${RECIPE_ROOT}" + + # Add SELinux label only if enforcing + if command -v getenforce &>/dev/null && [ "$(getenforce)" = "Enforcing" ]; then + VOLUME_SUFFIX=",z" + else + VOLUME_SUFFIX="" + fi +fi + +( endgroup "Configure Docker" ) 2> /dev/null ( startgroup "Start Docker" ) 2> /dev/null export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" export IS_PR_BUILD="${IS_PR_BUILD:-False}" -docker pull "${DOCKER_IMAGE}" -docker run ${DOCKER_RUN_ARGS} \ - -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw,z,delegated \ - -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z,delegated \ + +${DOCKER_EXECUTABLE} pull "${DOCKER_IMAGE}" + +${DOCKER_EXECUTABLE} run ${DOCKER_RUN_ARGS} \ + -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw${VOLUME_SUFFIX},delegated \ + -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw${VOLUME_SUFFIX},delegated \ -e CONFIG \ -e HOST_USER_ID \ -e UPLOAD_PACKAGES \ @@ -111,4 +132,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..bac7141 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -63,6 +63,25 @@ if [[ "${sha:-}" == "" ]]; then sha=$(git rev-parse HEAD) fi +if [[ "${OSX_SDK_DIR:-}" == "" ]]; then + if [[ "${CI:-}" == "" ]]; then + echo "Please set OSX_SDK_DIR to a directory where SDKs can be downloaded to. Aborting" + exit 1 + else + export OSX_SDK_DIR=/opt/conda-sdks + /usr/bin/sudo mkdir -p "${OSX_SDK_DIR}" + /usr/bin/sudo chown "${USER}" "${OSX_SDK_DIR}" + fi +else + if tmpf=$(mktemp -p "$OSX_SDK_DIR" tmp.XXXXXXXX 2>/dev/null); then + rm -f "$tmpf" + echo "OSX_SDK_DIR is writeable without sudo, continuing" + else + echo "User-provided OSX_SDK_DIR is not writeable for current user! Aborting" + exit 1 + fi +fi + echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup @@ -89,6 +108,10 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then /bin/bash else + if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then + EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" + fi + conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \ --suppress-variables ${EXTRA_CB_OPTIONS:-} \ --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \ @@ -113,4 +136,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 2e7dd39..27c552b 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 @@ -62,6 +62,11 @@ if EXIST LICENSE.txt ( echo Copying feedstock license copy LICENSE.txt "recipe\\recipe-scripts-license.txt" ) +if NOT [%HOST_PLATFORM%] == [%BUILD_PLATFORM%] ( + if [%CROSSCOMPILING_EMULATOR%] == [] ( + set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --no-test" + ) +) if NOT [%flow_run_id%] == [] ( set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% remote_url=%remote_url% sha=%sha%" @@ -143,4 +148,4 @@ if /i "%CI%" == "azure" ( echo ##[endgroup] exit /b ) -exit /b \ No newline at end of file +exit /b diff --git a/LICENSE.txt b/LICENSE.txt index 2ec51d7..c5aa738 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,5 @@ BSD-3-Clause license -Copyright (c) 2015-2022, conda-forge contributors -All rights reserved. +Copyright (c) 2015-2026, conda-forge contributors Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index e6c6305..cdde975 100644 --- a/README.md +++ b/README.md @@ -18,108 +18,6 @@ Current build status - - - - -
Azure -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariantStatus
linux_64_numpy1.22python3.10.____cpython - - variant - -
linux_64_numpy1.22python3.9.____cpython - - variant - -
linux_64_numpy1.23python3.11.____cpython - - variant - -
linux_64_numpy1.26python3.12.____cpython - - variant - -
osx_64_numpy1.22python3.10.____cpython - - variant - -
osx_64_numpy1.22python3.9.____cpython - - variant - -
osx_64_numpy1.23python3.11.____cpython - - variant - -
osx_64_numpy1.26python3.12.____cpython - - variant - -
win_64_numpy1.22python3.10.____cpython - - variant - -
win_64_numpy1.22python3.9.____cpython - - variant - -
win_64_numpy1.23python3.11.____cpython - - variant - -
win_64_numpy1.26python3.12.____cpython - - variant - -
-
-
Current release info @@ -198,12 +96,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 =========== @@ -230,7 +128,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/itk-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: @@ -243,5 +141,6 @@ In order to produce a uniquely identifiable distribution: Feedstock Maintainers ===================== +* [@hanayik](https://github.com/hanayik/) * [@thewtex](https://github.com/thewtex/) diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index eff4ad6..0000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,33 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- - -stages: -- stage: Check - jobs: - - job: Skip - pool: - vmImage: 'ubuntu-22.04' - variables: - DECODE_PERCENTS: 'false' - RET: 'true' - steps: - - checkout: self - fetchDepth: '2' - - bash: | - git_log=`git log --max-count=1 --skip=1 --pretty=format:"%B" | tr "\n" " "` - echo "##vso[task.setvariable variable=log]$git_log" - displayName: Obtain commit message - - bash: echo "##vso[task.setvariable variable=RET]false" - 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 - displayName: Export result -- stage: Build - condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) - dependsOn: Check - jobs: - - template: ./.azure-pipelines/azure-pipelines-linux.yml - - template: ./.azure-pipelines/azure-pipelines-osx.yml - - template: ./.azure-pipelines/azure-pipelines-win.yml \ No newline at end of file diff --git a/build-locally.py b/build-locally.py index c4a56c6..05493e4 100755 --- a/build-locally.py +++ b/build-locally.py @@ -1,5 +1,6 @@ #!/bin/sh """exec" "python3" "$0" "$@" #""" # fmt: off # fmt: on + # # This file has been generated by conda-smithy in order to build the recipe # locally. @@ -10,6 +11,7 @@ import os import platform import subprocess +import sys from argparse import ArgumentParser @@ -26,13 +28,6 @@ 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" @@ -44,10 +39,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,38 +64,43 @@ 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", 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) @@ -104,10 +113,10 @@ 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" - ) + recipe_license_file = os.path.join("recipe", "recipe-scripts-license.txt") if os.path.exists(recipe_license_file): os.remove(recipe_license_file) diff --git a/conda-forge.yml b/conda-forge.yml index 3004a1c..873a721 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,8 +1,16 @@ +build_platform: + linux_aarch64: linux_64 + osx_64: osx_arm64 +github_actions: + free_disk_space: true provider: - win: azure + osx: github_actions + osx_arm64: github_actions + win: github_actions conda_forge_output_validation: true github: branch_name: main tooling_branch_name: main conda_build: pkg_format: '2' +test: native_and_emulated diff --git a/recipe/0001-BUG-use-check_symbol_exists-for-TIFFFieldReadCount.patch b/recipe/0001-BUG-use-check_symbol_exists-for-TIFFFieldReadCount.patch new file mode 100644 index 0000000..95b16a4 --- /dev/null +++ b/recipe/0001-BUG-use-check_symbol_exists-for-TIFFFieldReadCount.patch @@ -0,0 +1,43 @@ +From 811e72e41fb19011b83419565c053d1f6161bfde Mon Sep 17 00:00:00 2001 +From: Bradley Lowekamp +Date: Sun, 27 Apr 2026 00:00:00 +0000 +Subject: [PATCH] BUG: Use check_symbol_exists for TIFFFieldReadCount detection + +When building with a system TIFF library (ITK_USE_SYSTEM_TIFF=ON), the +CMake check for TIFFFieldReadCount used check_type_size(), which +internally calls sizeof() on the argument. Passing a function name to +sizeof() is non-standard — GCC and Clang accept it as an extension but +MSVC rejects it — so ITK_TIFF_HAS_TIFFFieldReadCount was never defined +on Windows builds using an external libTIFF. + +Without that define, itkTIFFImageIO falls through to the libtiff +4.0.0–4.0.2 workaround that directly accesses the internal _TIFFField +struct. That struct layout is no longer correct for modern libtiff +versions, causing reads of garbage data and NULL pointer crashes when +encountering tags with unsupported data types (e.g. an ICC profile tag). + +Fixes https://github.com/InsightSoftwareConsortium/ITK/issues/6148 +--- + Modules/ThirdParty/TIFF/CMakeLists.txt | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/Modules/ThirdParty/TIFF/CMakeLists.txt ++++ b/Modules/ThirdParty/TIFF/CMakeLists.txt +@@ -17,9 +17,14 @@ if(ITK_USE_SYSTEM_TIFF) + # Check availability of different methods to access TIFF's field + # data structure. + include(CheckTypeSize) ++ include(CheckSymbolExists) + set(CMAKE_REQUIRED_LIBRARIES TIFF::TIFF) + set(CMAKE_EXTRA_INCLUDE_FILES "tiffio.h") +- check_type_size(TIFFFieldReadCount ITK_TIFF_HAS_TIFFFieldReadCount) ++ # TIFFFieldReadCount is a function, not a type. Using ++ # check_type_size (sizeof) on a function is non-standard and fails ++ # on MSVC, causing the wrong code path and crashes. Use ++ # check_symbol_exists instead. ++ check_symbol_exists(TIFFFieldReadCount "tiffio.h" ITK_TIFF_HAS_TIFFFieldReadCount) + check_type_size(TIFFField* ITK_TIFF_HAS_TIFFField) + else() + set(ITKTIFF_INCLUDE_DIRS +-- +2.39.0 diff --git a/recipe/ITK-JPEG.jpg b/recipe/ITK-JPEG.jpg new file mode 100644 index 0000000..dcdb46d Binary files /dev/null and b/recipe/ITK-JPEG.jpg differ diff --git a/recipe/LICENSE.txt b/recipe/LICENSE.txt deleted file mode 100644 index cba42cf..0000000 --- a/recipe/LICENSE.txt +++ /dev/null @@ -1,13 +0,0 @@ -BSD 3-clause license -Copyright (c) 2015-2019, conda-forge -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/recipe/NOTICE b/recipe/NOTICE deleted file mode 100644 index 341709e..0000000 --- a/recipe/NOTICE +++ /dev/null @@ -1,1710 +0,0 @@ -Insight Toolkit (ITK) - -Copyright 1999-2019 Insight Software Consortium -Copyright 2020 NumFOCUS - -This software is distributed under the Apache 2.0 License. - -See LICENSE file for details. - ------------------------------------------------------------------------ - -Historical Note: - -The Insight Toolkit (ITK) was initially developed -under contract to the National Library of Medicine at the National Institutes -of Health. ITK is partially derived from VTK and VXL, hence some code is -copyrighted accordingly (see VTKCopyright.txt and VXLCopyright.txt). - -The copyright of most of the files in the "Utilities" subdirectory is held by -third parties who allow to distribute this material under a license compatible -with the one used by ITK. Please read the content of the subdirectories for -specific details on those third-party licenses. You will also find details in -the README.txt file under the "Copyright" subdirectory. - -Starting with its version ITK 3.6, The Insight Toolkit is distributed under the -new and simplified BSD license approved by the Open Source Initiative (OSI) -[http://www.opensource.org/licenses/bsd-license.php]. - -Starting with its version ITK 4, The Insight Toolkit is distributed under the -Apache 2.0 License. The move from the BSD license to the Apache 2.0 was -discussed at the October 2009 Insight Software Consortium Board Meeting, -discussed until December 14th, 2009 and the Insight Software Consortium Board -voted and approved the transition to Apache 2.0 license during a period from -December 15, 2009 to January 14th, 2010 to move to the Apache 2.0 License. - -On November 26th, 2019 the Insight Software Consortium transferred the ITK -copyright to NumFOCUS following a vote by the Insight Software Consortium -Board of Directors. - ------------------------------------------------------------------------ - - -The Toolkit contains code from third parties that have different -copyrights. - -They are: - - - 1) DICOMParser: Copyright by Matt Turek. - Distributed under a BSD-Like license. - [This work was funded by NLM so its copyright - should probably be transfered to the ISC.] - - 2) AnalyzeDB.h: The Mayo Clinic aggreed to distribute this file - with ITK. Point of contact: Vincent Magnotta. - The file was moved to Utilities/itkExtHdrs - - 3) PixelData: GE Copyrights, - Vincent is contacting the providers of this - code too. - - 6) Netlib: Netlib is a conglomerate of packages. Each - one having different copyrights and licenses. - Here is a listing of what is included inside - Utilities/vxl/v3p/netlib - - blas: From www.netlib.org/blas : - - FAQ: The reference BLAS is a freely-available software package. - It is available from netlib via anonymous ftp and the World Wide Web. - Thus, it can be included in commercial software packages (and has been). - We only ask that proper credit be given to the authors. - - - datapac: Written by James Filliben, National Bureau of Standars. - - Our understanding is that the US Government cannot hold - copyrights, therefore we assume that this code is in the - public domain. - - eispack: - - lapack: - - laso: - - libf2c: - - linalg: - - linpack: - - mathews: - - minpack: - - napack: - - opt: - - temperton: - - tests: - - toms: - - - - 7) The triangle.c/h and showme.c files have been removed. - Their copyright/license was incompatible with - ITK and their functionality was not needed. - These removed the "itknetlib" library. - - - 8) itk_hash_map: It has copyrights by SGI and HP, but the license - is consistent with BSD-like. So we simply need - to acknowledge those in our general copyright. - - 9) itkMersenneTwisterRandomVariateGenerator: - Copyright: Makoto Matsumoto and Takuji Nishimura, - Copyright: Richard J. Wagner - under a BSD-Like license. - - 10) Code/Numerics/FEM/dsrc2c.c : - - Copyright: 1977 IMSL Inc, no license available. - Stephen Aylward removed the specific functions - in this file that were copyrighted by IMSL and - replaced them with other functions available in - netlib. The file is now cleared from copyright - concerns. - - - 11) Code/Numerics/cvsrmvend - - Copyright: Greg A. Woods - "Freely distributable" - I guess that counts as BSD... - Easy to remove if it becomes a problem, - This is just a script for making easier - the CVS syncs of VXL. - - 12) Testing/Code/Numerics/NeuralNetworks: - - Copyright: CADDLab at UNC - Fixed now in CVS --> ISC - - - -Utilities: - - - A) JPEG : Thomas G Lane ( BSD-Like) - : DCMTK : OFFIS... and many others... but BSD-Like - - - B) OpenJPEG : Universite Catholique de Louvain: BSD license - - - C) NrrdIO : Gordon Kindlmann and University of Utah - BSD-Like license. Clarifies that the original - package "Teem" (not in ITK) is still under GPL license - - - D) NIFTI : No copyright ? - There is no mention of licensing nor copyright - at the NIFTI Web site: - - http://nifti.nimh.nih.gov/nifti-1 - - However at http://niftilib.sourceforge.net it - appears as "public domain" license, but in - its subdirectory matlibs it has a GPL license. - The matlibs subdirectory is not included in ITK. - - The subdirectory jlibs is public domain - The subdirecotry clibs is public domain - - - in ITK it had a subdir: - - fsliolib : From the FSL package: - University of Oxford: - NO FOR COMMERCIAL USE - - This code has now been removed. - - - E) EXPAT : Thai Open Source Software Center Ltd and Clark Cooper. - with BSD-Like license - - - F) PNG : Copyright: Glen Randers-Pehrson - Andreas Dilger - Guy Erc Schalnat - - - G) TIFF : Copyright Sam Leffler and Silicon Graphics - - H) GDCM : Copyright: CREATIS, Mathieu Malaterre: BSD-Like License - - I) ZLIB : Copyright: Mark Adler - - J) kwsys : Copyright: Kitware : BSD-Like License - - - K) VXL/lbfgsb - - http://users.eecs.northwestern.edu/~nocedal/lbfgsb.html - - This software is released under the BSD License - - Condition for Use: This software is freely available, but we expect that - all publications describing work using this software , or all - commercial products using it, quote at least one of the references given - below. - - References - - 1. R. H. Byrd, P. Lu and J. Nocedal. A Limited Memory Algorithm for Bound Constrained Optimization, (1995), SIAM Journal on Scientific and Statistical Computing , 16, 5, pp. 1190-1208. - 2. C. Zhu, R. H. Byrd and J. Nocedal. L-BFGS-B: Algorithm 778: L-BFGS-B, FORTRAN routines for large scale bound constrained optimization (1997), ACM Transactions on Mathematical Software, Vol 23, Num. 4, pp. 550 - 560. - 3. J.L. Morales and J. Nocedal. L-BFGS-B: Remark on Algorithm 778: L-BFGS-B, FORTRAN routines for large scale bound constrained optimization (2011), to appear in ACM Transactions on Mathematical Software. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - - - VTK License Statement (VTKCopyright.txt) - ---------------------------------------- - -Portions of the Insight code base are derived from the Visualization Toolkit -(VTK), and hence are covered under the VTK copyright. The VTK copyright is as -follows: - -Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names - of any contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - * Modified source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -See also the VTK web site: http://www.vtk.org for more information. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - - VXL License Statement (VXLCopyright.txt) - ---------------------------------------- - -Portions of the Insight code base (the numerics package VNL) are derived from -the Vision-something-Libraries (VXL), and hence are covered under the VXL -copyright. The VXL copyright is as follows: - - - Copyright (c) 2000 TargetJr Consortium - GE Corporate Research and Development (GE CRD) - 1 Research Circle - Niskayuna, NY 12309 - All Rights Reserved - Reproduction rights limited as described below. - - Permission to use, copy, modify, distribute, and sell this software - and its documentation for any purpose is hereby granted without fee, - provided that (i) the above copyright notice and this permission - notice appear in all copies of the software and related documentation, - (ii) the name TargetJr Consortium (represented by GE CRD), may not be - used in any advertising or publicity relating to the software without - the specific, prior written permission of GE CRD, and (iii) any - modifications are clearly marked and summarized in a change history - log. - - THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, - EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - IN NO EVENT SHALL THE TARGETJR CONSORTIUM BE LIABLE FOR ANY SPECIAL, - INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND OR ANY - DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - WHETHER OR NOT ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR ON - ANY THEORY OF LIABILITY ARISING OUT OF OR IN CONNECTION WITH THE - USE OR PERFORMANCE OF THIS SOFTWARE. - - -See also the VXL web site: http://vxl.sourceforge.net/ for more information. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - - Copyright (c) - Biomedical Imaging Resource - Mayo Clinic - - All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, are permitted provided that the following - conditions are met: - - 1) Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2) Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of the Mayo Clinic nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -28 files covered by: - -Copyright (c) - Silicon Graphics Computer Systems, Inc. - - Permission to use, copy, modify, distribute and sell this software - and its documentation for any purpose is hereby granted without fee, - provided that the above copyright notice appear in all copies and - that both that copyright notice and this permission notice appear - in supporting documentation. Silicon Graphics makes no - representations about the suitability of this software for any - purpose. It is provided "as is" without express or implied warranty. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -29 files covered by: - -Copyright (c) - Hewlett-Packard Company - - Permission to use, copy, modify, distribute and sell this software - and its documentation for any purpose is hereby granted without fee, - provided that the above copyright notice appear in all copies and - that both that copyright notice and this permission notice appear - in supporting documentation. Hewlett-Packard Company makes no - representations about the suitability of this software for any - purpose. It is provided "as is" without express or implied warranty. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -9 files covered by: - -Copyright (c) - Mark of the Unicorn, Inc. - - Permission to use, copy, modify, distribute and sell this software - and its documentation for any purpose is hereby granted without fee, - provided that the above copyright notice appear in all copies and - that both that copyright notice and this permission notice appear - in supporting documentation. Mark of the Unicorn makes no - representations about the suitability of this software for any - purpose. It is provided "as is" without express or implied warranty. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -38 files covered by: - -Copyright (c) - Moscow Center for SPARC Technology - - Permission to use, copy, modify, distribute and sell this software - and its documentation for any purpose is hereby granted without fee, - provided that the above copyright notice appear in all copies and - that both that copyright notice and this permission notice appear - in supporting documentation. Moscow Center for SPARC Technology makes no - representations about the suitability of this software for any - purpose. It is provided "as is" without express or implied warranty. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -1 file covered by: - -Copyright (C) Makoto Matsumoto and Takuji Nishimura, - Copyright (C) Richard J. Wagner - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - The original code included the following notice: - - When you use this, send an email to: matumoto at math dot keio dot ac dot jp - with an appropriate reference to your work. - - It would be nice to CC: - rjwagner at writeme dot com and Cokus at math dot washington dot edu - when you write. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -1 file covered by: - -(c) Copyright by Greg A. Woods - - Freely redistibutable. - All other rights reserved. - Return all fixes/modifications to . - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -1 file covered by: - -Copyright by AT&T, Lucent Technologies and Bellcore. - -Permission to use, copy, modify, and distribute this software -and its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appear in all -copies and that both that the copyright notice and this -permission notice and warranty disclaimer appear in supporting -documentation, and that the names of AT&T, Bell Laboratories, -Lucent or Bellcore or any of their entities not be used in -advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -AT&T, Lucent and Bellcore disclaim all warranties with regard to -this software, including all implied warranties of -merchantability and fitness. In no event shall AT&T, Lucent or -Bellcore be liable for any special, indirect or consequential -damages or any damages whatsoever resulting from loss of use, -data or profits, whether in an action of contract, negligence or -other tortious action, arising out of or in connection with the -use or performance of this software. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -1 file covered by: - -Copyright (C) Lucent Technologies -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and -its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appear in all -copies and that both that the copyright notice and this -permission notice and warranty disclaimer appear in supporting -documentation, and that the name of Lucent or any of its entities -not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. -IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY -SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER -IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -1 file covered by: - -Copyright (c) TargetJr Consortium - GE Corporate Research and Development (GE CRD) - 1 Research Circle - Niskayuna, NY 12309 - All Rights Reserved - Reproduction rights limited as described below. - - Permission to use, copy, modify, distribute, and sell this software - and its documentation for any purpose is hereby granted without fee, - provided that (i) the above copyright notice and this permission - notice appear in all copies of the software and related documentation, - (ii) the name TargetJr Consortium (represented by GE CRD), may not be - used in any advertising or publicity relating to the software without - the specific, prior written permission of GE CRD, and (iii) any - modifications are clearly marked and summarized in a change history - log. - - THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, - EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - IN NO EVENT SHALL THE TARGETJR CONSORTIUM BE LIABLE FOR ANY SPECIAL, - INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND OR ANY - DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - WHETHER OR NOT ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR ON - ANY THEORY OF LIABILITY ARISING OUT OF OR IN CONNECTION WITH THE - USE OR PERFORMANCE OF THIS SOFTWARE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -Copyright (C) General Electric Company. - - Permission is granted to any individual or institution to use, copy, modify, - and distribute this software, provided that this complete copyright and - permission notice is maintained, intact, in all copies and supporting - documentation. - - General Electric Company, - provides this software "as is" without express or implied warranty. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -5 files covered by: - -Copyright (C) Texas Instruments Incorporated. - - Permission is granted to any individual or institution to use, copy, modify, - and distribute this software, provided that this complete copyright and - permission notice is maintained, intact, in all copies and supporting - documentation. - - Texas Instruments Incorporated provides this software "as is" without - express or implied warranty. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -2 files covered by: - -Copyright (C) Texas Instruments Incorporated. - Copyright (C) General Electric Company. - - Permission is granted to any individual or institution to use, copy, modify, - and distribute this software, provided that this complete copyright and - permission notice is maintained, intact, in all copies and supporting - documentation. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -Copyright (C) Free Software Foundation, Inc. - - This configure script is free software; the Free Software Foundation - gives unlimited permission to copy, distribute and modify it. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -Copyright by the Massachusetts Institute of Technology - - Permission to use, copy, modify, distribute, and sell this software and its - documentation for any purpose is hereby granted without fee, provided that - the above copyright notice appear in all copies and that both that - copyright notice and this permission notice appear in supporting - documentation, and that the name of M.I.T. not be used in advertising or - publicity pertaining to distribution of the software without specific, - written prior permission. M.I.T. makes no representations about the - suitability of this software for any purpose. It is provided "as is" - without express or implied warranty. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -98 files covered by: - -Copyright (c) 1999-2005 CREATIS -(CREATIS = Centre de Recherche et d'Applications en Traitement de l'Image) -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of CREATIS, nor the names of any contributor (CNRS, INSERM, - INSA, Universite Claude-Bernard Lyon I), may be used to endorse or promote - products derived from this software without specific prior written permission. - - * Modified source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -13 files covered by: - -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - and Clark Cooper - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -54 files covered by: - -Copyright (C) Gordon Kindlmann - Copyright (C) University of Utah - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source distribution. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -2 files covered by: - -Copyright (c) David A. Clunie DBA PixelMed Publishing. All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, are - permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimers. - - 2. Redistributions in binary form must reproduce the above copyright notice, this list of - conditions and the following disclaimers in the documentation and/or other materials - provided with the distribution. - - 3. Neither the name of PixelMed Publishing nor the names of its contributors may - be used to endorse or promote products derived from this software. - - This software is provided by the copyright holders and contributors "as is" and any - express or implied warranties, including, but not limited to, the implied warranties - of merchantability and fitness for a particular purpose are disclaimed. In no event - shall the copyright owner or contributors be liable for any direct, indirect, incidental, - special, exemplary, or consequential damages (including, but not limited to, procurement - of substitute goods or services; loss of use, data or profits; or business interruption) - however caused and on any theory of liability, whether in contract, strict liability, or - tort (including negligence or otherwise) arising in any way out of the use of this software, - even if advised of the possibility of such damage. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -14 files covered by: - -Copyright (c) 2003 Matt Turek -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * The name of Matt Turek nor the names of any contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - - * Modified source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -20 files covered by: - - * libpng versions 1.0.7, July 1, 2000, through 1.0.12, June 8, 2001, are - * Copyright (c) 2000, 2001 Glenn Randers-Pehrson, and are - * distributed according to the same disclaimer and license as libpng-1.0.6 - * with the following individuals added to the list of Contributing Authors - * - * Simon-Pierre Cadieux - * Eric S. Raymond - * Gilles Vollant - * - * and with the following additions to the disclaimer: - * - * There is no warranty against interference with your enjoyment of the - * library or against infringement. There is no warranty that our - * efforts or the library will fulfill any of your particular purposes - * or needs. This library is provided with all faults, and the entire - * risk of satisfactory quality, performance, accuracy, and effort is with - * the user. - * - * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are - * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson - * Distributed according to the same disclaimer and license as libpng-0.96, - * with the following individuals added to the list of Contributing Authors: - * - * Tom Lane - * Glenn Randers-Pehrson - * Willem van Schaik - * - * libpng versions 0.89, June 1996, through 0.96, May 1997, are - * Copyright (c) 1996, 1997 Andreas Dilger - * Distributed according to the same disclaimer and license as libpng-0.88, - * with the following individuals added to the list of Contributing Authors: - * - * John Bowler - * Kevin Bracey - * Sam Bushell - * Magnus Holmgren - * Greg Roelofs - * Tom Tanner - * - * libpng versions 0.5, May 1995, through 0.88, January 1996, are - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * - * For the purposes of this copyright and license, "Contributing Authors" - * is defined as the following set of individuals: - * - * Andreas Dilger - * Dave Martindale - * Guy Eric Schalnat - * Paul Schmidt - * Tim Wegner - * - * The PNG Reference Library is supplied "AS IS". The Contributing Authors - * and Group 42, Inc. disclaim all warranties, expressed or implied, - * including, without limitation, the warranties of merchantability and of - * fitness for any purpose. The Contributing Authors and Group 42, Inc. - * assume no liability for direct, indirect, incidental, special, exemplary, - * or consequential damages, which may result from the use of the PNG - * Reference Library, even if advised of the possibility of such damage. - * - * Permission is hereby granted to use, copy, modify, and distribute this - * source code, or portions hereof, for any purpose, without fee, subject - * to the following restrictions: - * - * 1. The origin of this source code must not be misrepresented. - * - * 2. Altered versions must be plainly marked as such and - * must not be misrepresented as being the original source. - * - * 3. This Copyright notice may not be removed or altered from - * any source or altered source distribution. - * - * The Contributing Authors and Group 42, Inc. specifically permit, without - * fee, and encourage the use of this source code as a component to - * supporting the PNG file format in commercial products. If you use this - * source code in a product, acknowledgment is not required but would be - * appreciated. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -(c) Copyright - Biomedical Imaging Resource - Mayo Foundation - Incorporation of components of dbh.h are by permission of the - Mayo Foundation. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -2 files covered by: - -Copyright (C) Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -Copyright (c) by University of Toronto. - Written by Henry Spencer. Not derived from licensed software. - - Permission is granted to anyone to use this software for any - purpose on any computer system, and to redistribute it freely, - subject to the following restrictions: - - 1. The author is not responsible for the consequences of use of - this software, no matter how awful, even if they arise - from defects in it. - - 2. The origin of this software must not be misrepresented, either - by explicit claim or by omission. - - 3. Altered versions must be plainly marked as such, and must not - be misrepresented as being the original software. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -25 files covered by: - -Copyright (c) David Janssens - Copyright (c) Yannick Verschueren - Copyright (c) Francois Devaux and Antonin Descampe - Copyright (c) Hervé Drolon, FreeImage Team - Copyright (c) Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -4 files covered by: - -Copyright (c) Yannick Verschueren - Copyright (c) Hervé Drolon, FreeImage Team - Copyright (c) Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -8 files covered by: - -Copyright (c) Hervé Drolon, FreeImage Team - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -2 files covered by: - -Copyright (c) Francois Devaux and Antonin Descampe - Copyright (c) Hervé Drolon, FreeImage Team - Copyright (c) Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -78 files covered by: - -This software is copyright (C) 1991-1998, Thomas G. Lane. -All Rights Reserved except as specified below. - -Permission is hereby granted to use, copy, modify, and distribute this -software (or portions thereof) for any purpose, without fee, subject to these -conditions: -(1) If any part of the source code for this software is distributed, then this -README file must be included, with this copyright and no-warranty notice -unaltered; and any additions, deletions, or changes to the original files -must be clearly indicated in accompanying documentation. -(2) If only executable code is distributed, then the accompanying -documentation must state that "this software is based in part on the work of -the Independent JPEG Group". -(3) Permission for use of this software is granted only if the user accepts -full responsibility for any undesirable consequences; the authors accept -NO LIABILITY for damages of any kind. - -These conditions apply to any software derived from or based on the IJG code, -not just to the unmodified library. If you use our work, you ought to -acknowledge us. - -Permission is NOT granted for the use of any IJG author's name or company name -in advertising or publicity relating to this software or products derived from -it. This software may be referred to only as "the Independent JPEG Group's -software". - -We specifically permit and encourage the use of this software as the basis of -commercial products, provided that all warranty or liability claims are -assumed by the product vendor. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -54 files covered by: - -Copyright (c) Sam Leffler - Copyright (c) Silicon Graphics, Inc. - - Permission to use, copy, modify, distribute, and sell this software and - its documentation for any purpose is hereby granted without fee, provided - that (i) the above copyright notices and this permission notice appear in - all copies of the software and related documentation, and (ii) the names of - Sam Leffler and Silicon Graphics may not be used in any advertising or - publicity relating to the software without the specific, prior written - permission of Sam Leffler and Silicon Graphics. - - THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR - ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - OF THIS SOFTWARE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -Copyright (c) Greg Ward Larson - Copyright (c) Silicon Graphics, Inc. - - Permission to use, copy, modify, distribute, and sell this software and - its documentation for any purpose is hereby granted without fee, provided - that (i) the above copyright notices and this permission notice appear in - all copies of the software and related documentation, and (ii) the names of - Sam Leffler, Greg Larson and Silicon Graphics may not be used in any - advertising or publicity relating to the software without the specific, - prior written permission of Sam Leffler, Greg Larson and Silicon Graphics. - - THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - IN NO EVENT SHALL SAM LEFFLER, GREG LARSON OR SILICON GRAPHICS BE LIABLE - FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - OF THIS SOFTWARE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -Copyright (c) The Regents of the University of California. - All rights reserved. - - This code is derived from software contributed to Berkeley by - James A. Woods, derived from original work by Spencer Thomas - and Joseph Orost. - - Redistribution and use in source and binary forms are permitted - provided that the above copyright notice and this paragraph are - duplicated in all such forms and that any documentation, - advertising materials, and other materials related to such - distribution and use acknowledge that the software was developed - by the University of California, Berkeley. The name of the - University may not be used to endorse or promote products derived - from this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -3 files covered by: - -Decoder support is derived, with permission, from the code - in Frank Cringle's viewfax program; - Copyright (C) Frank D. Cringle. - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -1 file covered by: - -Copyright (c) Sam Leffler - Copyright (c) Pixar - - Permission to use, copy, modify, distribute, and sell this software and - its documentation for any purpose is hereby granted without fee, provided - that (i) the above copyright notices and this permission notice appear in - all copies of the software and related documentation, and (ii) the names of - Pixar, Sam Leffler and Silicon Graphics may not be used in any advertising or - publicity relating to the software without the specific, prior written - permission of Pixar, Sam Leffler and Silicon Graphics. - - THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - IN NO EVENT SHALL PIXAR, SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR - ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - OF THIS SOFTWARE. - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - -646 HDF5 (Hierarchical Data Format 5) Software Library and Utilities files -covered by: - - -HDF5 (Hierarchical Data Format 5) Software Library and Utilities -Copyright (c) 2006-2018, The HDF Group. - -NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities -Copyright (c) 1998-2006, The Board of Trustees of the University of Illinois. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted for any purpose (including commercial purposes) -provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions, and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions, and the following disclaimer in the documentation - and/or materials provided with the distribution. - -3. Neither the name of The HDF Group, the name of the University, nor the - name of any Contributor may be used to endorse or promote products derived - from this software without specific prior written permission from - The HDF Group, the University, or the Contributor, respectively. - -DISCLAIMER: -THIS SOFTWARE IS PROVIDED BY THE HDF GROUP AND THE CONTRIBUTORS -"AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT SHALL THE HDF GROUP OR THE CONTRIBUTORS BE LIABLE FOR ANY DAMAGES SUFFERED BY THE USERS ARISING OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to The HDF Group, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such enhancements or derivative works thereof, in binary and source code form. - ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ - -Limited portions of HDF5 were developed by Lawrence Berkeley National -Laboratory (LBNL). LBNL's Copyright Notice and Licensing Terms can be -found here: COPYING_LBNL_HDF5 file in this directory or at -http://support.hdfgroup.org/ftp/HDF5/releases/COPYING_LBNL_HDF5. - ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ - -Contributors: National Center for Supercomputing Applications (NCSA) at -the University of Illinois, Fortner Software, Unidata Program Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment Corporation (DEC). - ------------------------------------------------------------------------------ - -Portions of HDF5 were developed with support from the Lawrence Berkeley -National Laboratory (LBNL) and the United States Department of Energy -under Prime Contract No. DE-AC02-05CH11231. - ------------------------------------------------------------------------------ - -Portions of HDF5 were developed with support from the University of -California, Lawrence Livermore National Laboratory (UC LLNL). -The following statement applies to those portions of the product and must -be retained in any redistribution of source code, binaries, documentation, -and/or accompanying materials: - - This work was partially produced at the University of California, - Lawrence Livermore National Laboratory (UC LLNL) under contract - no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy - (DOE) and The Regents of the University of California (University) - for the operation of UC LLNL. - - DISCLAIMER: - This work was prepared as an account of work sponsored by an agency of - the United States Government. Neither the United States Government nor - the University of California nor any of their employees, makes any - warranty, express or implied, or assumes any liability or responsibility - for the accuracy, completeness, or usefulness of any information, - apparatus, product, or process disclosed, or represents that its use - would not infringe privately- owned rights. Reference herein to any - specific commercial products, process, or service by trade name, - trademark, manufacturer, or otherwise, does not necessarily constitute - or imply its endorsement, recommendation, or favoring by the United - States Government or the University of California. The views and - opinions of authors expressed herein do not necessarily state or reflect - those of the United States Government or the University of California, - and shall not be used for advertising or product endorsement purposes. - ------------------------------------------------------------------------------ - -HDF5 is available with the SZIP compression library but SZIP is not part -of HDF5 and has separate copyright and license terms. See SZIP Compression -in HDF Products (www.hdfgroup.org/doc_resource/SZIP/) for further details. - ------------------------------------------------------------------------------ - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -25 files covered by: - -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.1.4, March 11th, 2002 - - Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - -============== NEXT COPYRIGHT NOTICE AND LICENSE ENTRY ============== - - -343 Eigen files covered by MPL2: - -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/recipe/TryRunResults-linux-aarch64.cmake b/recipe/TryRunResults-linux-aarch64.cmake new file mode 100644 index 0000000..025f5e3 --- /dev/null +++ b/recipe/TryRunResults-linux-aarch64.cmake @@ -0,0 +1,53 @@ +# This file presets TRY_RUN() results for cross-compilation targeting linux-aarch64. +# It was derived from TryRunResults-osx-arm64.cmake with values appropriate for +# Linux aarch64 (no SSE2, IEEE754 standard double arithmetic, POSIX LFS, clock_gettime). +# +# To regenerate: perform a native or cross-compile cmake configure of ITK for +# linux-aarch64 in cross-compilation mode; cmake will produce this file automatically. +# See: https://cmake.org/cmake/help/latest/variable/CMAKE_CROSSCOMPILING.html + + +# DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +# Exit code 1 means double conversion operations are correct (no workaround needed). +# aarch64 uses IEEE 754 standard doubles — same as osx-arm64. +set( DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS + 1 + CACHE STRING "Result from TRY_RUN" FORCE) + +# VCL_HAS_LFS +# Exit code 0 means large file support (LFS) is available. +# Linux aarch64 always supports LFS via 64-bit off_t. +set( VCL_HAS_LFS + 0 + CACHE STRING "Result from TRY_RUN" FORCE) + +# VXL_HAS_SSE2_HARDWARE_SUPPORT +# Exit code 0 means SSE2 is NOT available (0 = success for "has no SSE2"). +# aarch64 has no SSE2 (x86-specific instruction set). +set( VXL_HAS_SSE2_HARDWARE_SUPPORT + 0 + CACHE STRING "Result from TRY_RUN" FORCE) + +# VXL_SSE2_HARDWARE_SUPPORT_POSSIBLE +# Exit code 0 means SSE2 runtime support is not possible. +# aarch64 has no SSE2. +set( VXL_SSE2_HARDWARE_SUPPORT_POSSIBLE + 0 + CACHE STRING "Result from TRY_RUN" FORCE) + +# QNANHIBIT_VALUE +# Exit code 1 means the high bit of the mantissa in a quiet NaN is set. +# IEEE 754 standard; true on aarch64 (same as osx-arm64 and x86_64). +set( QNANHIBIT_VALUE + 1 + CACHE STRING "Result from TRY_RUN" FORCE) +set( QNANHIBIT_VALUE__TRYRUN_OUTPUT + "" + CACHE STRING "Result from TRY_RUN" FORCE) + +# HAVE_CLOCK_GETTIME_RUN +# Exit code 0 means clock_gettime() is available and works. +# All modern Linux platforms support POSIX clock_gettime(). +set( HAVE_CLOCK_GETTIME_RUN + 0 + CACHE STRING "Result from TRY_RUN" FORCE) diff --git a/recipe/TryRunResults-osx-64.cmake b/recipe/TryRunResults-osx-64.cmake new file mode 100644 index 0000000..df83855 --- /dev/null +++ b/recipe/TryRunResults-osx-64.cmake @@ -0,0 +1,60 @@ +# This file presets TRY_RUN() results for cross-compilation targeting osx-64 +# (x86_64 macOS) built on osx-arm64 runners. It was derived from +# TryRunResults-osx-arm64.cmake: every probe below is OS-level (macOS) and thus +# identical, except the SSE2 probes. CMake still *compiles* each probe live in +# cross mode and only skips the run, so the seeded value is the run exit code. +# The SSE2 intrinsics compile on x86_64 (unlike arm), so a seeded exit code of 0 +# resolves to "supported" here while it resolves to "not supported" on arm. +# +# To regenerate: cross-compile-configure ITK for osx-64; cmake produces this +# file automatically. See https://cmake.org/cmake/help/latest/variable/CMAKE_CROSSCOMPILING.html + + +# DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS +# 1 means double operations are correct (no workaround needed). x86_64 macOS +# uses SSE2 (not x87), so there is no excess-precision rounding problem. +set( DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS + 1 + CACHE STRING "Result from TRY_RUN" FORCE) + +# VCL_HAS_LFS +# Large file support. macOS off_t is always 64-bit, same as osx-arm64. +set( VCL_HAS_LFS + 1 + CACHE STRING "Result from TRY_RUN" FORCE) + +# VXL_HAS_SSE2_HARDWARE_SUPPORT +# Run exit code 0; the probe compiles on x86_64, so this resolves to +# SSE2 supported (x86_64 has SSE2 as a baseline instruction set). +set( VXL_HAS_SSE2_HARDWARE_SUPPORT + 0 + CACHE STRING "Result from TRY_RUN" FORCE) + +# VXL_SSE2_HARDWARE_SUPPORT_POSSIBLE +# Run exit code 0; compiles with -msse2 on x86_64 -> SSE2 possible. +set( VXL_SSE2_HARDWARE_SUPPORT_POSSIBLE + 0 + CACHE STRING "Result from TRY_RUN" FORCE) + +set( _libcxx_run_result + 0 + CACHE STRING "Results from TRY_RUN" FORCE) +set(_libcxx_run_result__TRYRUN_OUTPUT + "nothing" + CACHE STRING "Results from TRY_RUN" FORCE) + +# QNANHIBIT_VALUE +# 1 means the high bit of the quiet-NaN mantissa is set (IEEE 754; true on +# x86_64, same as osx-arm64). +set( QNANHIBIT_VALUE + 1 + CACHE STRING "Result from TRY_RUN" FORCE) +set( QNANHIBIT_VALUE__TRYRUN_OUTPUT + "" + CACHE STRING "Result from TRY_RUN" FORCE) + +# HAVE_CLOCK_GETTIME_RUN +# 0 means clock_gettime() is available and works (macOS 10.12+). +set( HAVE_CLOCK_GETTIME_RUN + 0 + CACHE STRING "Result from TRY_RUN" FORCE) diff --git a/recipe/bld.bat b/recipe/bld.bat index 655d56d..ec08cb8 100644 --- a/recipe/bld.bat +++ b/recipe/bld.bat @@ -1,11 +1,51 @@ -set POST= -set PYPI_VER=%PY_VER:~0,1%%PY_VER:~2,2% +set BUILD_DIR=%SRC_DIR%\bld +mkdir %BUILD_DIR% +cd %BUILD_DIR% - set MPOST= ELSE set MPOST=m +SET CXX_FLAGS="%CXX_FLAGS% /MP" + +REM Configure Step +cmake -G "Ninja" ^ + -D BUILD_SHARED_LIBS:BOOL=ON ^ + -D BUILD_TESTING:BOOL=OFF ^ + -D BUILD_EXAMPLES:BOOL=OFF ^ + -D ITK_USE_SYSTEM_EXPAT:BOOL=OFF ^ + -D ITK_USE_SYSTEM_HDF5:BOOL=ON ^ + -D ITK_USE_SYSTEM_JPEG:BOOL=ON ^ + -D ITK_USE_SYSTEM_PNG:BOOL=OFF ^ + -D ITK_USE_SYSTEM_TIFF:BOOL=ON ^ + -D ITK_USE_SYSTEM_EIGEN:BOOL=ON ^ + -D ITK_USE_SYSTEM_ZLIB:BOOL=OFF ^ + -D ITK_USE_KWSTYLE:BOOL=OFF ^ + -D ITK_BUILD_DEFAULT_MODULES:BOOL=ON ^ + -D Module_ITKReview:BOOL=ON ^ + -D Module_SimpleITKFilters=ON ^ + -D Module_ITKTBB:BOOL=ON ^ + -D Module_MGHIO:BOOL=ON ^ + -D Module_ITKIOTransformMINC:BOOL=ON ^ + -D Module_GenericLabelInterpolator:BOOL=ON ^ + -D Module_AdaptiveDenoising:BOOL=ON ^ + -D "ITK_DEFAULT_THREADER:STRING=Pool" ^ + -D "CMAKE_SYSTEM_PREFIX_PATH:PATH=%LIBRARY_PREFIX%" ^ + -D "CMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX%" ^ + -D CMAKE_BUILD_TYPE:STRING=RELEASE ^ + -D ITK_WRAP_PYTHON:BOOL=ON ^ + -D ITK_USE_SYSTEM_CASTXML:BOOL=ON ^ + -D WRAP_ITK_INSTALL_COMPONENT_IDENTIFIER:STRING=PythonWrapping ^ + -D Python3_EXECUTABLE:FILEPATH="%PYTHON%" ^ + -D ITK_WRAP_unsigned_short:BOOL=ON ^ + -D ITK_WRAP_double:BOOL=ON ^ + -D ITK_WRAP_complex_double:BOOL=ON ^ + -D ITK_WRAP_IMAGE_DIMS:STRING="2;3;4" ^ + -D PY_SITE_PACKAGES_PATH:PATH="Lib/site-packages" ^ + "%SRC_DIR%" + +if errorlevel 1 exit 1 + +REM Build step +cmake --build . --config Release -- -j%CPU_COUNT% +if errorlevel 1 exit 1 + +REM Install step -FOR %%D IN (core,io,filtering,numerics,registration) DO ( - :: Python 3.11 -- this could be improved - IF %PY_VER:~2,2% GEQ 8 %PYTHON% -m pip install --no-deps https://pypi.org/packages/cp%PYPI_VER%/i/itk-%%D/itk_%%D-%PKG_VERSION%%POST%-cp%PYPI_VER%-cp%PYPI_VER%-win_amd64.whl - IF %PY_VER:~2,2% LSS 8 %PYTHON% -m pip install --no-deps https://pypi.org/packages/cp%PYPI_VER%/i/itk-%%D/itk_%%D-%PKG_VERSION%%POST%-cp%PYPI_VER%-cp%PYPI_VER%m-win_amd64.whl -) if errorlevel 1 exit 1 diff --git a/recipe/build.sh b/recipe/build.sh index 8557fab..89df370 100755 --- a/recipe/build.sh +++ b/recipe/build.sh @@ -1,25 +1,84 @@ #!/bin/bash -# install using pip from the whl files on PyPI +# When building 32-bits on 64-bit system this flags is not automatically set by conda-build +if [ $ARCH == 32 -a "${OSX_ARCH:-notosx}" == "notosx" ]; then + export CFLAGS="${CFLAGS} -m32" + export CXXFLAGS="${CXXFLAGS} -m32" +fi -POST="" -PYPI_VER="${PY_VER:0:1}${PY_VER:2:3}" +use_tbb=ON +if [ "$(uname)" == "Darwin" ]; then + use_tbb=OFF +fi -for DEP_PACKAGE in core io filtering numerics registration segmentation; do - if [ `uname` == Darwin ]; then - if [ "$PY_VER" == "3.8" -o "$PY_VER" == "3.9" -o "$PY_VER" == "3.10" -o "$PY_VER" == "3.11" -o "$PY_VER" == "3.12" ]; then - WHL_FILE=https://pypi.org/packages/cp${PYPI_VER}/i/itk-${DEP_PACKAGE}/itk_${DEP_PACKAGE}-${PKG_VERSION}${POST}-cp${PYPI_VER}-cp${PYPI_VER}-macosx_10_9_x86_64.whl - else - WHL_FILE=https://pypi.org/packages/cp${PYPI_VER}/i/itk-${DEP_PACKAGE}/itk_${DEP_PACKAGE}-${PKG_VERSION}${POST}-cp${PYPI_VER}-cp${PYPI_VER}m-macosx_10_9_x86_64.whl +BUILD_DIR=${SRC_DIR}/build +mkdir ${BUILD_DIR} +cd ${BUILD_DIR} + +if [[ "$CONDA_BUILD_CROSS_COMPILATION" == 1 ]]; then + try_run_results="${RECIPE_DIR}/TryRunResults-${target_platform}.cmake" + if [[ -f "$try_run_results" ]]; then + CMAKE_ARGS="${CMAKE_ARGS} -C ${try_run_results}" fi - fi + # Target-arch Python hints. find_package(Python3 Development.Module) + # otherwise introspects ${PYTHON} (BUILD x86_64 headers) which + # CMAKE_FIND_ROOT_PATH=${PREFIX} then filters out. + CMAKE_ARGS="${CMAKE_ARGS} -DPython3_INCLUDE_DIR:PATH=${PREFIX}/include/python${PY_VER}" + CMAKE_ARGS="${CMAKE_ARGS} -DPython3_LIBRARY:FILEPATH=${PREFIX}/lib/libpython${PY_VER}.so" + # Castxml (Clang-based) needs an explicit target triple under cross-compile; + # ITK's wrapping reads CMAKE_CXX_COMPILER_TARGET in itk_auto_load_submodules.cmake. + CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_CXX_COMPILER_TARGET=${HOST}" +fi + + +cmake \ + -G "Ninja" \ + ${CMAKE_ARGS} \ + -D BUILD_SHARED_LIBS:BOOL=ON \ + -D BUILD_TESTING:BOOL=OFF \ + -D BUILD_EXAMPLES:BOOL=OFF \ + -D ITK_USE_SYSTEM_EXPAT:BOOL=ON \ + -D ITK_USE_SYSTEM_HDF5:BOOL=ON \ + -D ITK_USE_SYSTEM_JPEG:BOOL=ON \ + -D ITK_USE_SYSTEM_PNG:BOOL=ON \ + -D ITK_USE_SYSTEM_TIFF:BOOL=ON \ + -D ITK_USE_SYSTEM_ZLIB:BOOL=ON \ + -D ITK_USE_SYSTEM_FFTW:BOOL=ON \ + -D ITK_USE_SYSTEM_EIGEN:BOOL=ON \ + -D ITK_USE_SYSTEM_OPENJPEG:BOOL=ON \ + -D ITK_USE_FFTWD:BOOL=ON \ + -D ITK_USE_FFTWF:BOOL=ON \ + -D ITK_USE_KWSTYLE:BOOL=OFF \ + -D ITK_BUILD_DEFAULT_MODULES:BOOL=ON \ + -D NIFTI_SYSTEM_MATH_LIB= \ + -D GDCM_USE_COREFOUNDATION_LIBRARY:BOOL=OFF \ + -D Module_ITKReview:BOOL=ON \ + -D Module_SimpleITKFilters=ON \ + -D Module_ITKTBB:BOOL=${use_tbb} \ + -D Module_MGHIO:BOOL=ON \ + -D Module_ITKIOTransformMINC:BOOL=ON \ + -D Module_GenericLabelInterpolator:BOOL=ON \ + -D Module_AdaptiveDenoising:BOOL=ON \ + -D "ITK_DEFAULT_THREADER:STRING=Pool" \ + -D "CMAKE_BUILD_TYPE:STRING=RELEASE" \ + -D "CMAKE_FIND_ROOT_PATH:PATH=${PREFIX}" \ + -D "CMAKE_FIND_ROOT_PATH_MODE_INCLUDE:STRING=ONLY" \ + -D "CMAKE_FIND_ROOT_PATH_MODE_LIBRARY:STRING=ONLY" \ + -D "CMAKE_FIND_ROOT_PATH_MODE_PROGRAM:STRING=NEVER" \ + -D "CMAKE_FIND_ROOT_PATH_MODE_PACKAGE:STRING=ONLY" \ + -D "CMAKE_FIND_FRAMEWORK:STRING=NEVER" \ + -D "CMAKE_FIND_APPBUNDLE:STRING=NEVER" \ + -D "CMAKE_INSTALL_PREFIX=${PREFIX}" \ + -D "CMAKE_PROGRAM_PATH=${BUILD_PREFIX}" \ + -D ITK_WRAP_PYTHON:BOOL=ON \ + -D ITK_USE_SYSTEM_CASTXML:BOOL=ON \ + -D WRAP_ITK_INSTALL_COMPONENT_IDENTIFIER:STRING=PythonWrapping \ + -D Python3_EXECUTABLE:FILEPATH="${PYTHON}" \ + -D ITK_WRAP_unsigned_short:BOOL=ON \ + -D ITK_WRAP_double:BOOL=ON \ + -D ITK_WRAP_complex_double:BOOL=ON \ + -D ITK_WRAP_IMAGE_DIMS:STRING="2;3;4" \ + -D PY_SITE_PACKAGES_PATH:PATH="lib/python${PY_VER}/site-packages" \ + "${SRC_DIR}" - if [ `uname` == Linux ]; then - if [ "$PY_VER" == "3.8" -o "$PY_VER" == "3.9" -o "$PY_VER" == "3.10" -o "$PY_VER" == "3.11" -o "$PY_VER" == "3.12" ]; then - WHL_FILE=https://pypi.org/packages/cp${PYPI_VER}/i/itk-${DEP_PACKAGE}/itk_${DEP_PACKAGE}-${PKG_VERSION}${POST}-cp${PYPI_VER}-cp${PYPI_VER}-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - else - WHL_FILE=https://pypi.org/packages/cp${PYPI_VER}/i/itk-${DEP_PACKAGE}/itk_${DEP_PACKAGE}-${PKG_VERSION}${POST}-cp${PYPI_VER}-cp${PYPI_VER}m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - fi - fi - pip install --no-deps $WHL_FILE -done +cmake --build . --config Release -- -j${CPU_COUNT} diff --git a/recipe/example/CMakeLists.txt b/recipe/example/CMakeLists.txt new file mode 100644 index 0000000..8fd2aa5 --- /dev/null +++ b/recipe/example/CMakeLists.txt @@ -0,0 +1,14 @@ +# This is the root ITK CMakeLists file. +cmake_minimum_required(VERSION 3.16.3) + + +# This project is designed to be built outside the Insight source tree. +project(HelloWorld) + +# Find ITK. +find_package(ITK REQUIRED) +include(${ITK_USE_FILE}) + +add_executable(HelloWorld HelloWorld.cxx ) + +target_link_libraries(HelloWorld ${ITK_LIBRARIES}) diff --git a/recipe/example/HelloWorld.cxx b/recipe/example/HelloWorld.cxx new file mode 100644 index 0000000..1f8fe94 --- /dev/null +++ b/recipe/example/HelloWorld.cxx @@ -0,0 +1,62 @@ +/*========================================================================= + * + * Copyright Insight Software Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *=========================================================================*/ +// Software Guide : BeginLatex +// +// The following code is an implementation of a small ITK +// program. It tests including header files and linking with ITK +// libraries. +// +// Software Guide : EndLatex + +// Software Guide : BeginCodeSnippet +#include "itkImage.h" +#include "itkImageFileReader.h" +#include "itkMultiThreaderBase.h" +#include + +int main() +{ + typedef itk::Image< unsigned short, 3 > ImageType; + + ImageType::Pointer image = ImageType::New(); + + typedef itk::ImageFileReader< ImageType > ReaderType; + ReaderType::Pointer reader = ReaderType::New(); + + std::cout << "ITK Hello World !" << std::endl; + + auto threader = itk::MultiThreaderBase::GetGlobalDefaultThreader(); + + std::cout << "GlobalDefaultTheader: " << itk::MultiThreaderBase::ThreaderTypeToString(threader) << std::endl; + + return EXIT_SUCCESS; +} +// Software Guide : EndCodeSnippet + +// Software Guide : BeginLatex +// +// This code instantiates a $3D$ image\footnote{Also known as a +// \emph{volume}.} whose pixels are represented with type \code{unsigned +// short}. The image is then constructed and assigned to a +// \doxygen{SmartPointer}. Although later in the text we will discuss +// \code{SmartPointer}s in detail, for now think of it as a handle on an +// instance of an object (see section \ref{sec:SmartPointers} for more +// information). The \doxygen{Image} class will be described in +// Section~\ref{sec:ImageSection}. +// +// Software Guide : EndLatex diff --git a/recipe/itk_install.bat b/recipe/itk_install.bat new file mode 100644 index 0000000..7f176db --- /dev/null +++ b/recipe/itk_install.bat @@ -0,0 +1,17 @@ +set BUILD_DIR=%SRC_DIR%\bld + +REM Install the C++ runtime libraries AND the Python wrapping payload into a +REM single self-contained `itk` package. +for %%c in (Runtime RuntimeLibraries Libraries PythonWrappingRuntimeLibraries Unspecified libraries) do ( + cmake -DCOMPONENT=%%c -P %BUILD_DIR%\cmake_install.cmake +) + +REM Verify the Python module landed. +if not exist "%LIBRARY_PREFIX%\Lib\site-packages\itk" ( + echo ERROR: no itk\ Python module under Lib\site-packages + exit 1 +) + +REM Headers and CMake config are not shipped in the runtime `itk` package. +if exist "%LIBRARY_PREFIX%\include" rmdir /S /Q "%LIBRARY_PREFIX%\include" +if exist "%LIBRARY_PREFIX%\lib\cmake" rmdir /S /Q "%LIBRARY_PREFIX%\lib\cmake" diff --git a/recipe/itk_install.sh b/recipe/itk_install.sh new file mode 100644 index 0000000..30449d4 --- /dev/null +++ b/recipe/itk_install.sh @@ -0,0 +1,48 @@ +#!/bin/bash +set -euo pipefail +BUILD_DIR=${SRC_DIR}/build + +# Install the C++ runtime libraries AND the Python wrapping payload into a +# single self-contained `itk` package. ITK's wrapping install rules don't +# partition cleanly by COMPONENT, so sweep every component that may carry +# runtime or Python content. +for component in Runtime RuntimeLibraries Libraries PythonWrappingRuntimeLibraries Unspecified libraries; do + cmake -DCOMPONENT="${component}" -P "${BUILD_DIR}/cmake_install.cmake" || true +done + +# The canonical site-packages path for this Python. +PYSITE="${PREFIX}/lib/python${PY_VER}/site-packages" + +# Some ITK / conda-build interactions land the wrapping payload at a truncated +# path (e.g. lib/python3.1 instead of lib/python3.12 for PY_VER=3.12) despite +# the PY_SITE_PACKAGES_PATH override. Relocate to the canonical PYSITE. +# Skip symlinked python dirs (conda ships e.g. python3.1 -> python3.12). +for candidate in "${PREFIX}"/lib/python*/site-packages; do + [ -d "${candidate}" ] || continue + parent="$(dirname "${candidate}")" + if [ -L "${parent}" ]; then + echo "Skipping ${candidate} (parent is symlink: $(readlink "${parent}"))" + continue + fi + if [ "${candidate}" != "${PYSITE}" ]; then + echo "Relocating wrapping payload from ${candidate} to ${PYSITE}" + mkdir -p "$(dirname "${PYSITE}")" + if [ -d "${PYSITE}" ]; then + cp -R "${candidate}/." "${PYSITE}/" + rm -rf "${candidate}" + else + mv "${candidate}" "${PYSITE}" + fi + rmdir "${parent}" 2>/dev/null || true + fi +done + +if [ ! -d "${PYSITE}/itk" ]; then + echo "ERROR: no itk/ Python module at ${PYSITE}" >&2 + exit 1 +fi + +# Headers and CMake config are not shipped in the runtime `itk` package. +# Drop anything the component sweep may have leaked into the prefix. +rm -rf "${PREFIX}/include" +rm -rf "${PREFIX}/lib/cmake" diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 6461be6..9e999c2 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,32 +1,79 @@ +{% set version = "5.4.6" %} + package: name: itk - version: "5.3.0" + version: {{ version }} + +source: + url: https://github.com/InsightSoftwareConsortium/ITK/archive/v{{ version }}.tar.gz + sha256: cf28bc7220c57c24ebcbabbd3b2544ea7ab65f0aad430a99f8e157738ed812b7 + patches: + - 0001-BUG-use-check_symbol_exists-for-TIFFFieldReadCount.patch build: - number: 1 - skip: True # [win32 or (win64 and py2k)] + number: 0 + # Python wrapping is version-specific; target 3.10–3.12 only. + skip: true # [(win and vc<14) or py<310 or py>312] requirements: + build: + - cmake >=3.16.3,<3.30.0 + - ninja + - {{ compiler('c') }} + - {{ stdlib("c") }} + - {{ compiler('cxx') }} + - python # [build_platform != target_platform] + - cross-python_{{ target_platform }} # [build_platform != target_platform] + - numpy # [build_platform != target_platform] + - castxml host: - - python - - pip - - wheel - - numpy - - setuptools - run: + - expat # [not win] + - fftw + - hdf5 + - libjpeg-turbo + - libtiff + - libpng # [not win] + - eigen + - zlib # [not win] + - tbb-devel - python - numpy - - setuptools -test: - imports: - - itk +outputs: + # Self-contained Python package: the `itk/` module plus the C++ runtime + # libraries it links against. + - name: itk + script: itk_install.sh # [not win] + script: itk_install.bat # [win] + requirements: + run: + - python + - numpy + - expat # [not win] + - fftw + - hdf5 + - libjpeg-turbo + - libtiff + - libpng # [not win] + - eigen + - zlib # [not win] + - tbb + test: + requires: + - python {{ python }} + - numpy + files: + - ITK-JPEG.jpg + imports: + - itk + commands: + - itkTestDriver --no-process --compare-MD5 ITK-JPEG.jpg 959e1682d19026fc62cfbdc140df31da about: home: https://www.itk.org/ license: Apache-2.0 license_file: - - LICENSE.txt + - LICENSE - NOTICE summary: ITK is an open-source toolkit for multidimensional image analysis doc_url: https://itk.org/ITK/help/documentation.html