From f25d74541fbfc060f98449e6b0f30a239ad7dd2f Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Wed, 21 Oct 2026 22:27:50 +0200 Subject: [PATCH 1/2] python 3.13.17 --- recipe/meta.yaml | 6 +++--- .../0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch | 2 +- recipe/patches/0002-Win32-Do-not-download-externals.patch | 2 +- ...x-find_library-so-that-it-looks-in-sys.prefix-lib-.patch | 2 +- ...sable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch | 2 +- recipe/patches/0005-Unvendor-openssl.patch | 2 +- recipe/patches/0006-Unvendor-sqlite3.patch | 2 +- .../0007-Add-CondaEcosystemModifyDllSearchPath.patch | 2 +- recipe/patches/0008-Doing-d1trimfile.patch | 2 +- recipe/patches/0009-cross-compile-darwin.patch | 2 +- recipe/patches/0010-Fix-TZPATH-on-windows.patch | 2 +- ...Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch | 2 +- recipe/patches/0012-Unvendor-bzip2.patch | 2 +- recipe/patches/0013-Unvendor-libffi.patch | 2 +- recipe/patches/0014-Unvendor-tcltk.patch | 2 +- recipe/patches/0015-unvendor-xz.patch | 2 +- recipe/patches/0016-unvendor-zlib.patch | 2 +- .../0017-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch | 2 +- recipe/patches/0018-Unvendor-expat.patch | 2 +- recipe/patches/0019-Remove-unused-readelf.patch | 2 +- .../0020-Don-t-checksharedmods-if-cross-compiling.patch | 2 +- recipe/patches/0021-Override-configure-LIBFFI.patch | 2 +- recipe/patches/0022-Unvendor-libmpdec.patch | 2 +- recipe/patches/0023-Brand-conda-forge.patch | 2 +- ...-not-define-pid_t-as-it-might-conflict-with-the-ac.patch | 2 +- .../patches/0025-Search-LLVM_ROOT-for-llvm-binaries.patch | 2 +- 26 files changed, 28 insertions(+), 28 deletions(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index d0c6fc3ba..cbae2d5ba 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,10 +1,10 @@ -{% set version = "3.13.16" %} +{% set version = "3.13.17" %} {% set dev = "" %} {% set dev_ = "" %} {% set ver2 = '.'.join(version.split('.')[0:2]) %} {% set ver2nd = ''.join(version.split('.')[0:2]) %} {% set ver3nd = ''.join(version.split('.')[0:3]) %} -{% set build_number = 2 %} +{% set build_number = 0 %} # this makes the linter happy {% set channel_targets = channel_targets or 'conda-forge main' %} @@ -64,7 +64,7 @@ package: source: - url: https://www.python.org/ftp/python/{{ version }}/Python-{{ version }}{{ dev }}.tar.xz # sha256 from: https://www.python.org/downloads/release/python-{{ ver3nd }}{{ dev }}/ - sha256: f4b1bfb3c79b5bb11b8d228a12504163b4c0dab4d679828d8f5f26b6cb6ab35d + sha256: 6020bd10aff3bf4821be16f088ebb1591beb7b811dcd8fab1da8f7c22a7b27e7 patches: - patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch - patches/0002-Win32-Do-not-download-externals.patch diff --git a/recipe/patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch b/recipe/patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch index d4d86f84c..8fce75555 100644 --- a/recipe/patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch +++ b/recipe/patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch @@ -1,4 +1,4 @@ -From 5d3bfd7007c2680f41c0b55b4633928fd33c308c Mon Sep 17 00:00:00 2001 +From 991f2abe6accd2070f067429d40f887cfe728847 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 16 Aug 2017 11:53:55 +0100 Subject: [PATCH 01/25] Win32: Change FD_SETSIZE from 512 to 2048 diff --git a/recipe/patches/0002-Win32-Do-not-download-externals.patch b/recipe/patches/0002-Win32-Do-not-download-externals.patch index 10a7ab5fa..d24144ad1 100644 --- a/recipe/patches/0002-Win32-Do-not-download-externals.patch +++ b/recipe/patches/0002-Win32-Do-not-download-externals.patch @@ -1,4 +1,4 @@ -From 166ab3486b5bfc03ad2672ed371488927af28898 Mon Sep 17 00:00:00 2001 +From c7d48c7387926b3b7403eed2e9d22df499034e9a Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 7 Sep 2017 11:35:47 +0100 Subject: [PATCH 02/25] Win32: Do not download externals diff --git a/recipe/patches/0003-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch b/recipe/patches/0003-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch index bd4edebcc..75838b8ff 100644 --- a/recipe/patches/0003-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch +++ b/recipe/patches/0003-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch @@ -1,4 +1,4 @@ -From 1aecdf93909341d49a76fa002170f684707c9bfd Mon Sep 17 00:00:00 2001 +From 20455fb7a6f55de85c6236f11e36ac8ac8cfb0e9 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 5 Dec 2017 22:47:59 +0000 Subject: [PATCH 03/25] Fix find_library so that it looks in sys.prefix/lib diff --git a/recipe/patches/0004-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch b/recipe/patches/0004-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch index 77f9c0324..db59f0f99 100644 --- a/recipe/patches/0004-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch +++ b/recipe/patches/0004-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch @@ -1,4 +1,4 @@ -From cc538cfd8d7b2c172c66ea092f347f5553ef9f6e Mon Sep 17 00:00:00 2001 +From 8563e9b808b53973b24ecb460233730505fd5c74 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Sat, 27 Oct 2018 18:48:30 +0100 Subject: [PATCH 04/25] Disable registry lookup unless CONDA_PY_ALLOW_REG_PATHS diff --git a/recipe/patches/0005-Unvendor-openssl.patch b/recipe/patches/0005-Unvendor-openssl.patch index c12bea160..d40762b3c 100644 --- a/recipe/patches/0005-Unvendor-openssl.patch +++ b/recipe/patches/0005-Unvendor-openssl.patch @@ -1,4 +1,4 @@ -From ab600d3270e8d8220416d3165045eb1314cd0db0 Mon Sep 17 00:00:00 2001 +From 2a2dd9ea6d9518f5aefaa64f76fe16662605d7c3 Mon Sep 17 00:00:00 2001 From: Nehal J Wani Date: Sat, 24 Nov 2018 20:38:02 -0600 Subject: [PATCH 05/25] Unvendor openssl diff --git a/recipe/patches/0006-Unvendor-sqlite3.patch b/recipe/patches/0006-Unvendor-sqlite3.patch index 8ebf14685..e889e58f3 100644 --- a/recipe/patches/0006-Unvendor-sqlite3.patch +++ b/recipe/patches/0006-Unvendor-sqlite3.patch @@ -1,4 +1,4 @@ -From 8698b7eae9cc9ce2cbb9866c57923b614546397d Mon Sep 17 00:00:00 2001 +From 2a1ad05f5324d444047d4ef8696489eb835609fb Mon Sep 17 00:00:00 2001 From: Nehal J Wani Date: Tue, 5 Oct 2021 12:42:06 -0700 Subject: [PATCH 06/25] Unvendor sqlite3 diff --git a/recipe/patches/0007-Add-CondaEcosystemModifyDllSearchPath.patch b/recipe/patches/0007-Add-CondaEcosystemModifyDllSearchPath.patch index 2b52818c6..52f221903 100644 --- a/recipe/patches/0007-Add-CondaEcosystemModifyDllSearchPath.patch +++ b/recipe/patches/0007-Add-CondaEcosystemModifyDllSearchPath.patch @@ -1,4 +1,4 @@ -From 1b2fcde9c82fddad6a02392797b87d85791cfa53 Mon Sep 17 00:00:00 2001 +From 72c8f5d4c2133b6f4363f243ec1aa16ed9b43b69 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 24 Dec 2019 18:37:17 +0100 Subject: [PATCH 07/25] Add CondaEcosystemModifyDllSearchPath() diff --git a/recipe/patches/0008-Doing-d1trimfile.patch b/recipe/patches/0008-Doing-d1trimfile.patch index 3341b0ce0..ea29690d1 100644 --- a/recipe/patches/0008-Doing-d1trimfile.patch +++ b/recipe/patches/0008-Doing-d1trimfile.patch @@ -1,4 +1,4 @@ -From 3d77010138e2a20d64e3e50bb1c6064ee260e859 Mon Sep 17 00:00:00 2001 +From 9c33dafaaccfb0d777f70f61ebec841485d4f917 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 31 Dec 2019 21:47:47 +0100 Subject: [PATCH 08/25] Doing d1trimfile diff --git a/recipe/patches/0009-cross-compile-darwin.patch b/recipe/patches/0009-cross-compile-darwin.patch index b58416646..9f1d421e3 100644 --- a/recipe/patches/0009-cross-compile-darwin.patch +++ b/recipe/patches/0009-cross-compile-darwin.patch @@ -1,4 +1,4 @@ -From 9487a110ca70c695c010edd1f837921fed926214 Mon Sep 17 00:00:00 2001 +From d919b18325ee2b397f5e32fa8902118570791c21 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Fri, 2 Oct 2020 00:03:12 +0200 Subject: [PATCH 09/25] cross compile darwin diff --git a/recipe/patches/0010-Fix-TZPATH-on-windows.patch b/recipe/patches/0010-Fix-TZPATH-on-windows.patch index f19ee8290..f76b5af27 100644 --- a/recipe/patches/0010-Fix-TZPATH-on-windows.patch +++ b/recipe/patches/0010-Fix-TZPATH-on-windows.patch @@ -1,4 +1,4 @@ -From e9a820d2930ffabd59c763feb0e5fb2abf4a689d Mon Sep 17 00:00:00 2001 +From f909be9b501086add90d23c0b6769d9ccefd940a Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 7 Oct 2020 10:08:30 -0500 Subject: [PATCH 10/25] Fix TZPATH on windows diff --git a/recipe/patches/0011-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch b/recipe/patches/0011-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch index b0ae48e2f..808bcd8fa 100644 --- a/recipe/patches/0011-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch +++ b/recipe/patches/0011-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch @@ -1,4 +1,4 @@ -From 79df59dec6d14948293bc066cea8157495870d3e Mon Sep 17 00:00:00 2001 +From fcb7b10eb231c5a93678ec353df63e79f7c00f85 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 25 Jan 2021 03:28:08 -0600 Subject: [PATCH 11/25] Make dyld search work with SYSTEM_VERSION_COMPAT=1 diff --git a/recipe/patches/0012-Unvendor-bzip2.patch b/recipe/patches/0012-Unvendor-bzip2.patch index 35947962c..a674bbb64 100644 --- a/recipe/patches/0012-Unvendor-bzip2.patch +++ b/recipe/patches/0012-Unvendor-bzip2.patch @@ -1,4 +1,4 @@ -From 15883bdf8f84eb666977c764a4b0bf6213854fd0 Mon Sep 17 00:00:00 2001 +From f0175326b5046b064d8c00daf8717465bfbf7e32 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 16 Aug 2021 02:56:27 -0700 Subject: [PATCH 12/25] Unvendor bzip2 diff --git a/recipe/patches/0013-Unvendor-libffi.patch b/recipe/patches/0013-Unvendor-libffi.patch index 0e735c0da..4c5002b91 100644 --- a/recipe/patches/0013-Unvendor-libffi.patch +++ b/recipe/patches/0013-Unvendor-libffi.patch @@ -1,4 +1,4 @@ -From abc23f7a8dbe83f02d08c2bf582b88afabc0cc76 Mon Sep 17 00:00:00 2001 +From ffa81e974f061ca837c06d1a6ba0bb3c683d6b02 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 16 Aug 2021 03:07:40 -0700 Subject: [PATCH 13/25] Unvendor libffi diff --git a/recipe/patches/0014-Unvendor-tcltk.patch b/recipe/patches/0014-Unvendor-tcltk.patch index d06487c08..4989b21a5 100644 --- a/recipe/patches/0014-Unvendor-tcltk.patch +++ b/recipe/patches/0014-Unvendor-tcltk.patch @@ -1,4 +1,4 @@ -From 0143876cb8791af9922d284961a677896d0d946a Mon Sep 17 00:00:00 2001 +From 5b4eca524fcf440da14a54082ffba9644e072df5 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Fri, 20 Aug 2021 10:23:51 -0700 Subject: [PATCH 14/25] Unvendor tcltk diff --git a/recipe/patches/0015-unvendor-xz.patch b/recipe/patches/0015-unvendor-xz.patch index 716607e69..8c090bb67 100644 --- a/recipe/patches/0015-unvendor-xz.patch +++ b/recipe/patches/0015-unvendor-xz.patch @@ -1,4 +1,4 @@ -From 4358b041184ff9bbd23b36b529469f0feb2d8820 Mon Sep 17 00:00:00 2001 +From c876c1ce48c1d79386f8880bc1e163e794f7da68 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Sat, 25 Sep 2021 10:07:05 -0700 Subject: [PATCH 15/25] unvendor xz diff --git a/recipe/patches/0016-unvendor-zlib.patch b/recipe/patches/0016-unvendor-zlib.patch index f8de0c450..5fdf2c3e8 100644 --- a/recipe/patches/0016-unvendor-zlib.patch +++ b/recipe/patches/0016-unvendor-zlib.patch @@ -1,4 +1,4 @@ -From fc4e7cfa24817aadc865f587c3265a0738761935 Mon Sep 17 00:00:00 2001 +From 8a92097e08d33c3982e97b1e7af197bd31a352d9 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 29 Sep 2021 15:21:55 -0700 Subject: [PATCH 16/25] unvendor zlib diff --git a/recipe/patches/0017-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch b/recipe/patches/0017-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch index 9dc5e88fa..da80fc13f 100644 --- a/recipe/patches/0017-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch +++ b/recipe/patches/0017-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch @@ -1,4 +1,4 @@ -From 8d23a2f1103d46d75deeeb7a04597d7a069237ae Mon Sep 17 00:00:00 2001 +From 4f6e994c7b09526e723fcd5fe335e7873f94f63d Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 16 Aug 2017 11:45:28 +0100 Subject: [PATCH 17/25] Do not pass -g to GCC when not Py_DEBUG diff --git a/recipe/patches/0018-Unvendor-expat.patch b/recipe/patches/0018-Unvendor-expat.patch index 56712e91f..3d2db2481 100644 --- a/recipe/patches/0018-Unvendor-expat.patch +++ b/recipe/patches/0018-Unvendor-expat.patch @@ -1,4 +1,4 @@ -From 6cd7e17c0d4c9d2661a412980e2e51760f2eab17 Mon Sep 17 00:00:00 2001 +From 0163b10516b4d363c47f1737e5f9e1e1c434accb Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 29 Mar 2023 23:07:10 -0500 Subject: [PATCH 18/25] Unvendor expat diff --git a/recipe/patches/0019-Remove-unused-readelf.patch b/recipe/patches/0019-Remove-unused-readelf.patch index 78ba620d6..193dfdacb 100644 --- a/recipe/patches/0019-Remove-unused-readelf.patch +++ b/recipe/patches/0019-Remove-unused-readelf.patch @@ -1,4 +1,4 @@ -From 63d775f8a9fae79f3ea2e19a3b8204d261d422f3 Mon Sep 17 00:00:00 2001 +From f0bef9fef4f72539482555218236ef9ba7eb1aba Mon Sep 17 00:00:00 2001 From: Charles Bousseau Date: Thu, 25 May 2023 17:56:53 -0400 Subject: [PATCH 19/25] Remove unused readelf diff --git a/recipe/patches/0020-Don-t-checksharedmods-if-cross-compiling.patch b/recipe/patches/0020-Don-t-checksharedmods-if-cross-compiling.patch index 93989551e..e2c5d6bfb 100644 --- a/recipe/patches/0020-Don-t-checksharedmods-if-cross-compiling.patch +++ b/recipe/patches/0020-Don-t-checksharedmods-if-cross-compiling.patch @@ -1,4 +1,4 @@ -From 2b298b0263696246817cd50c535a301c32bf8041 Mon Sep 17 00:00:00 2001 +From 7397ecbceada52e970a0407ad80ca1e5e2568964 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Fri, 1 Sep 2023 23:32:14 +0200 Subject: [PATCH 20/25] Don't checksharedmods if cross-compiling diff --git a/recipe/patches/0021-Override-configure-LIBFFI.patch b/recipe/patches/0021-Override-configure-LIBFFI.patch index 8287fbf72..f2f5fb04b 100644 --- a/recipe/patches/0021-Override-configure-LIBFFI.patch +++ b/recipe/patches/0021-Override-configure-LIBFFI.patch @@ -1,4 +1,4 @@ -From 49f7947fb7eae9cc5da2504e720d8c5d6f9d57ef Mon Sep 17 00:00:00 2001 +From 23f3700150ebbd060a9d9ce5447f59624f4c90d0 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Tue, 5 Sep 2023 21:51:31 +0200 Subject: [PATCH 21/25] Override configure LIBFFI diff --git a/recipe/patches/0022-Unvendor-libmpdec.patch b/recipe/patches/0022-Unvendor-libmpdec.patch index 2cb9e1c08..499ed29ba 100644 --- a/recipe/patches/0022-Unvendor-libmpdec.patch +++ b/recipe/patches/0022-Unvendor-libmpdec.patch @@ -1,4 +1,4 @@ -From c473ad8b75bad516f96c359a5e6756baea250fc3 Mon Sep 17 00:00:00 2001 +From d868061c1217cf53bbbde0b201f7e0578c958242 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Fri, 16 Aug 2024 21:34:43 -0500 Subject: [PATCH 22/25] Unvendor libmpdec diff --git a/recipe/patches/0023-Brand-conda-forge.patch b/recipe/patches/0023-Brand-conda-forge.patch index d9328b699..214f4169b 100644 --- a/recipe/patches/0023-Brand-conda-forge.patch +++ b/recipe/patches/0023-Brand-conda-forge.patch @@ -1,4 +1,4 @@ -From 5c916b41afb9f6fc3fb0ee4ec81e781b5b674e1b Mon Sep 17 00:00:00 2001 +From 1ef15cb97c258980b080bd9df3e1edd65c0d0ae3 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 28 Aug 2024 11:12:22 -0500 Subject: [PATCH 23/25] Brand conda-forge diff --git a/recipe/patches/0024-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch b/recipe/patches/0024-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch index c4d6888a9..fc9af1a26 100644 --- a/recipe/patches/0024-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch +++ b/recipe/patches/0024-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch @@ -1,4 +1,4 @@ -From bca007ed99217d5982c5c80817f89a4b0719d326 Mon Sep 17 00:00:00 2001 +From 5d4209798b637aea3a21da997914a022a97a059d Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Sun, 12 Jan 2025 10:37:29 +0530 Subject: [PATCH 24/25] Do not define pid_t as it might conflict with the diff --git a/recipe/patches/0025-Search-LLVM_ROOT-for-llvm-binaries.patch b/recipe/patches/0025-Search-LLVM_ROOT-for-llvm-binaries.patch index 66577a0bc..f41295e8f 100644 --- a/recipe/patches/0025-Search-LLVM_ROOT-for-llvm-binaries.patch +++ b/recipe/patches/0025-Search-LLVM_ROOT-for-llvm-binaries.patch @@ -1,4 +1,4 @@ -From 63d1ee11fb7156e78c629f40ab98044d80d60e18 Mon Sep 17 00:00:00 2001 +From c94d712bd94cdff4e46420f5e1f5a879326d521c Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Wed, 3 Sep 2025 13:32:24 +0200 Subject: [PATCH 25/25] Search LLVM_ROOT for llvm binaries From 459bd946053cc1528f8227d49cfb146f68fdf251 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Wed, 21 Oct 2026 22:28:35 +0200 Subject: [PATCH 2/2] MNT: Re-rendered with conda-smithy 2026.10.21 and conda-forge-pinning 2026.10.21.08.25.13 Other tools: - conda-build 26.9.1 - rattler-build 0.77.0 - rattler-build-conda-compat 1.4.22 --- ...nda-forge_python_debugfreethreadingno.yaml | 2 - ...da-forge_python_debugfreethreadingyes.yaml | 2 - ...argetsconda-forge_mainfreethreadingno.yaml | 2 - ...rgetsconda-forge_mainfreethreadingyes.yaml | 2 - ...nda-forge_python_debugfreethreadingno.yaml | 2 - ...da-forge_python_debugfreethreadingyes.yaml | 2 - ...argetsconda-forge_mainfreethreadingno.yaml | 2 - ...rgetsconda-forge_mainfreethreadingyes.yaml | 2 - .gitattributes | 7 - .github/workflows/conda-build.yml | 2 + .scripts/build_steps.sh | 101 +++++---- .scripts/logging_utils.sh | 5 - .scripts/run_docker_build.sh | 8 +- .scripts/run_osx_build.sh | 191 +++++++++++------- .scripts/run_win_build.bat | 56 +++-- README.md | 21 +- 16 files changed, 228 insertions(+), 179 deletions(-) diff --git a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml index d92956d1a..ec3fc3af2 100644 --- a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml +++ b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml index 36e4915c8..d046c4c02 100644 --- a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml +++ b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml index 69fb4dec0..c83bd3067 100644 --- a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml +++ b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml index 3cd9cd297..e924add5a 100644 --- a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml +++ b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml index 9cc4d30d8..92ffa52b6 100644 --- a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml +++ b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml index 11517bb5a..8669d3af6 100644 --- a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml +++ b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml index 1b978bd28..a1b9997c2 100644 --- a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml +++ b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml index e168b26d8..68c51560a 100644 --- a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml +++ b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.gitattributes b/.gitattributes index 85ccb8f4f..79144109a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,18 +8,11 @@ bld.bat text eol=crlf # github helper pieces to make some files not show up in diffs automatically .azure-pipelines/* linguist-generated=true -.circleci/* linguist-generated=true .ci_support/README linguist-generated=true -.drone/* linguist-generated=true -.drone.yml linguist-generated=true .github/* linguist-generated=true -.travis/* linguist-generated=true -.appveyor.yml linguist-generated=true .gitattributes linguist-generated=true .gitignore linguist-generated=true -.travis.yml linguist-generated=true .scripts/* linguist-generated=true -.woodpecker.yml linguist-generated=true /LICENSE.txt linguist-generated=true /README.md linguist-generated=true azure-pipelines.yml linguist-generated=true diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml index 3212c77e5..20afaa4dc 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -200,6 +200,8 @@ jobs: run: | if [[ "$(uname -m)" == "x86_64" ]]; then docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes + elif [[ "$(uname -m)" == "aarch64" ]]; then + docker run --rm --privileged --entrypoint /opt/docker/bin/register-binfmt ${{ matrix.DOCKER_IMAGE }} aarch64 fi - name: Build on Linux diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 815876481..e9f4e4f9a 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -9,17 +9,23 @@ set -xeuo pipefail export FEEDSTOCK_ROOT="${FEEDSTOCK_ROOT:-/home/conda/feedstock_root}" +# ensure absolute path +FEEDSTOCK_ROOT=$(cd "${FEEDSTOCK_ROOT}"; pwd) source ${FEEDSTOCK_ROOT}/.scripts/logging_utils.sh ( endgroup "Start Docker" ) 2> /dev/null -( startgroup "Configuring conda" ) 2> /dev/null +( startgroup "Configuring build environment" ) 2> /dev/null +MINIFORGE_HOME=/opt/conda export PYTHONUNBUFFERED=1 export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" +# ensure absolute path +RECIPE_ROOT=$(cd "${RECIPE_ROOT}"; pwd) export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" +export PIXI_CACHE_DIR="${MINIFORGE_HOME}" export RATTLER_CACHE_DIR="${FEEDSTOCK_ROOT}/build_artifacts/pkg_cache" cat >~/.condarc < /opt/conda/conda-meta/history -micromamba install --root-prefix ~/.conda --prefix /opt/conda \ - --yes --override-channels --channel conda-forge --strict-channel-priority \ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=26.3" + +( endgroup "Configuring build environment" ) 2> /dev/null + +( startgroup "Provisioning base env with micromamba" ) 2> /dev/null + +MAMBA_ROOT_PREFIX=~/.conda +MICROMAMBA_EXE=micromamba + +echo Creating environment +mv "${MINIFORGE_HOME}"/conda-meta/history "${MINIFORGE_HOME}"/conda-meta/history.$(date +%Y-%m-%d-%H-%M-%S) +echo > "${MINIFORGE_HOME}"/conda-meta/history +"${MICROMAMBA_EXE}" install --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ + --override-channels --channel conda-forge --strict-channel-priority \ + pip python=3.14 conda-build conda-forge-ci-setup=4 "conda-build>=26.3" + +( endgroup "Provisioning base env with micromamba" ) 2> /dev/null + +( startgroup "Configuring conda" ) 2> /dev/null export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 -# set up the condarc + + +# Set basic configuration +echo Setting up configuration setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" +# Linux-specific setup +echo Running build setup source run_conda_forge_build_setup ( @@ -65,9 +89,6 @@ ulimit -n 1024 /usr/bin/sudo -n yum install -y libX11 libxcb libXau ) -# make the build number clobber -make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" - if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${HOST_PLATFORM}" != linux-* ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" fi @@ -76,7 +97,8 @@ fi ( endgroup "Configuring conda" ) 2> /dev/null if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then - cp "${FEEDSTOCK_ROOT}/LICENSE.txt" "${RECIPE_ROOT}/recipe-scripts-license.txt" + echo Copying feedstock license + cp "${FEEDSTOCK_ROOT}/LICENSE.txt" "${RECIPE_ROOT}/recipe-scripts-license.txt" fi if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then @@ -88,48 +110,49 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then # - none vs. --target-platform CONDA_SUBDIR="${BUILD_PLATFORM}" conda debug \ "${RECIPE_ROOT}" \ - -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + -m "${CONFIG_FILE}" \ ${EXTRA_CB_OPTIONS:-} \ ${BUILD_OUTPUT_ID:+--output-id "${BUILD_OUTPUT_ID}"} \ --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" # Drop into an interactive shell /bin/bash -else - # differences between conda-build vs. rattler-build - # - recipe is positional vs. --recipe "${RECIPE_ROOT}" - # - --suppress-variables vs. none - # - --clobber-file vs. none - # - none vs. --target-platform - # - --extra-meta a=b c=d vs. --extra-meta a=b --extra-meta c=d - CONDA_SUBDIR="${BUILD_PLATFORM}" conda-build \ - "${RECIPE_ROOT}" \ - -m "${CI_SUPPORT}/${CONFIG}.yaml" \ - ${EXTRA_CB_OPTIONS:-} \ - --suppress-variables \ - --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ - --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" - ( startgroup "Inspecting artifacts" ) 2> /dev/null +fi - # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 - command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir "${RECIPE_ROOT}" -m "${CONFIG_FILE}" || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" +# Build the recipe +echo Building recipe - ( endgroup "Inspecting artifacts" ) 2> /dev/null - ( startgroup "Validating outputs" ) 2> /dev/null +# differences between conda-build vs. rattler-build +# - recipe is positional vs. --recipe "${RECIPE_ROOT}" +# - --suppress-variables vs. none +# - --clobber-file vs. none +# - none vs. --target-platform +# - --extra-meta a=b c=d vs. --extra-meta a=b --extra-meta c=d - validate_recipe_outputs "${FEEDSTOCK_NAME}" +CONDA_SUBDIR="${BUILD_PLATFORM}" conda-build \ + "${RECIPE_ROOT}" \ + -m "${CONFIG_FILE}" \ + ${EXTRA_CB_OPTIONS:-} \ + --suppress-variables \ + --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ + --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" - ( endgroup "Validating outputs" ) 2> /dev/null +( startgroup "Inspecting artifacts" ) 2> /dev/null - ( startgroup "Uploading packages" ) 2> /dev/null +# inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 +command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir "${RECIPE_ROOT}" -m "${CONFIG_FILE}" || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" - if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then - upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" - fi +( endgroup "Inspecting artifacts" ) 2> /dev/null +( startgroup "Validating outputs" ) 2> /dev/null +validate_recipe_outputs "${FEEDSTOCK_NAME}" +( endgroup "Validating outputs" ) 2> /dev/null +if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then + ( startgroup "Uploading packages" ) 2> /dev/null + upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" ( endgroup "Uploading packages" ) 2> /dev/null fi -( startgroup "Final checks" ) 2> /dev/null +( startgroup "Leaving the Docker container" ) 2> /dev/null touch "${FEEDSTOCK_ROOT}/build_artifacts/conda-forge-build-done-${CONFIG}" diff --git a/.scripts/logging_utils.sh b/.scripts/logging_utils.sh index aff009f0c..c39888ea7 100755 --- a/.scripts/logging_utils.sh +++ b/.scripts/logging_utils.sh @@ -10,9 +10,6 @@ function startgroup { case ${CI:-} in azure ) echo "##[group]$1";; - travis ) - echo "$1" - echo -en 'travis_fold:start:'"${1// /}"'\r';; github_actions ) echo "::group::$1";; * ) @@ -27,8 +24,6 @@ function endgroup { case ${CI:-} in azure ) echo "##[endgroup]";; - travis ) - echo -en 'travis_fold:end:'"${1// /}"'\r';; github_actions ) echo "::endgroup::";; esac diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 17d983f11..4715f5df4 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -84,9 +84,9 @@ 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}" + # Fix file permissions for rootless podman builds. In addition to `recipe/` + # and `build_artifacts`, `.scripts` also needs to be available in the container. + podman unshare chown -R ${HOST_USER_ID}:${HOST_USER_ID} "${FEEDSTOCK_ROOT}" # Add SELinux label only if enforcing if command -v getenforce &>/dev/null && [ "$(getenforce)" = "Enforcing" ]; then @@ -143,4 +143,4 @@ ${DOCKER_EXECUTABLE} run ${DOCKER_RUN_ARGS} \ test -f "$DONE_CANARY" # This closes the last group opened in `build_steps.sh` -( endgroup "Final checks" ) 2> /dev/null +( endgroup "Leaving the Docker container" ) 2> /dev/null diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 9d7c39125..9a08751fe 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -1,139 +1,178 @@ #!/usr/bin/env bash +# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here +# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent +# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also +# benefit from the improvement. + # -*- mode: jinja-shell -*- -source .scripts/logging_utils.sh +set -xeuo pipefail +export FEEDSTOCK_ROOT=${PWD} +source ${FEEDSTOCK_ROOT}/.scripts/logging_utils.sh + -set -xe +( startgroup "Configuring build environment" ) 2> /dev/null MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}" MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}" +export RECIPE_ROOT="recipe" +# ensure absolute path +RECIPE_ROOT=$(cd "${RECIPE_ROOT}"; pwd) +export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" +export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" +export PIXI_CACHE_DIR="${MINIFORGE_HOME}" +export RATTLER_CACHE_DIR="${CONDA_BLD_PATH}/pkg_cache" + +( endgroup "Configuring build environment" ) 2> /dev/null + +arch=$(uname -m) +if [[ "${arch}" == "x86_64" ]]; then + arch="64" +fi ( startgroup "Provisioning base env with micromamba" ) 2> /dev/null -MICROMAMBA_VERSION="1.5.10-0" -if [[ "$(uname -m)" == "arm64" ]]; then - osx_arch="osx-arm64" -else - osx_arch="osx-64" -fi -MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-${osx_arch}" + MAMBA_ROOT_PREFIX="${MINIFORGE_HOME}-micromamba-$(date +%s)" +MICROMAMBA_VERSION="2.9.0-0" +MICROMAMBA_URL="https://github.com/mamba-org/micromamba-releases/releases/download/${MICROMAMBA_VERSION}/micromamba-osx-${arch}" +MICROMAMBA_TMPDIR=$(mktemp -d) +MICROMAMBA_EXE=${MICROMAMBA_TMPDIR}/micromamba + echo "Downloading micromamba ${MICROMAMBA_VERSION}" -micromamba_exe="$(mktemp -d)/micromamba" -curl -L -o "${micromamba_exe}" "${MICROMAMBA_URL}" -chmod +x "${micromamba_exe}" -echo "Creating environment" -"${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ - --channel conda-forge \ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=26.3" +curl -L -o "${MICROMAMBA_EXE}" "${MICROMAMBA_URL}" +chmod +x "${MICROMAMBA_EXE}" + +echo Creating environment +"${MICROMAMBA_EXE}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \ + --override-channels --channel conda-forge --strict-channel-priority \ + pip python=3.14 conda-build conda-forge-ci-setup=4 "conda-build>=26.3" echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}" mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}" -echo "Cleaning up micromamba" -rm -rf "${MAMBA_ROOT_PREFIX}" "${micromamba_exe}" || true + +echo Cleaning up micromamba +rm -rf "${MAMBA_ROOT_PREFIX}" "${MICROMAMBA_EXE}" || : + ( endgroup "Provisioning base env with micromamba" ) 2> /dev/null ( startgroup "Configuring conda" ) 2> /dev/null -echo "Activating environment" + +# Activate the base conda environment +echo Activating environment source "${MINIFORGE_HOME}/etc/profile.d/conda.sh" conda activate base +# Configure the solver export CONDA_SOLVER="libmamba" export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 +# Set basic configuration +echo Setting up configuration +setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" - -echo -e "\n\nSetting up the condarc and mangling the compiler." -setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml - +# macOS-specific setup if [[ "${CI:-}" != "" ]]; then - mangle_compiler ./ ./recipe .ci_support/${CONFIG}.yaml + mangle_compiler "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" fi if [[ "${CI:-}" != "" ]]; then - echo -e "\n\nMangling homebrew in the CI to avoid conflicts." - /usr/bin/sudo mangle_homebrew - /usr/bin/sudo -k + echo "Mangling homebrew in the CI to avoid conflicts." + /usr/bin/sudo mangle_homebrew + /usr/bin/sudo -k else - echo -e "\n\nNot mangling homebrew as we are not running in CI" + echo "Not mangling homebrew as we are not running in CI" fi if [[ "${sha:-}" == "" ]]; then - sha=$(git rev-parse HEAD) + 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 + 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 "$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 + if tmpf=$(mktemp "$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." +echo Running build setup source run_conda_forge_build_setup -( endgroup "Configuring conda" ) 2> /dev/null +if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then + EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" +fi -echo -e "\n\nMaking the build clobber file" -make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml -if [[ -f LICENSE.txt ]]; then - cp LICENSE.txt "recipe/recipe-scripts-license.txt" +( endgroup "Configuring conda" ) 2> /dev/null + +if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then + echo Copying feedstock license + cp "${FEEDSTOCK_ROOT}/LICENSE.txt" "${RECIPE_ROOT}/recipe-scripts-license.txt" fi if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then - if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then - EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}" - fi - CONDA_SUBDIR="${BUILD_PLATFORM}" conda debug ./recipe -m ./.ci_support/${CONFIG}.yaml \ + # differences between conda-build vs. rattler-build + # - 1 step (conda debug + manually open shell) vs. 2 step (rb debug {setup, shell}) + # - recipe is positional vs. --recipe "${RECIPE_ROOT}" + # - --output-id vs. --output-name + # - --clobber-file vs. none + # - none vs. --target-platform + CONDA_SUBDIR="${BUILD_PLATFORM}" conda debug \ + "${RECIPE_ROOT}" \ + -m "${CONFIG_FILE}" \ ${EXTRA_CB_OPTIONS:-} \ - --clobber-file ./.ci_support/clobber_${CONFIG}.yaml + ${BUILD_OUTPUT_ID:+--output-id "${BUILD_OUTPUT_ID}"} \ + --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" # Drop into an interactive shell /bin/bash -else - - if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then - EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" - fi +fi - CONDA_SUBDIR="${BUILD_PLATFORM}" conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \ - --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \ - --extra-meta flow_run_id="$flow_run_id" remote_url="$remote_url" sha="$sha" +# Build the recipe +echo Building recipe - ( startgroup "Inspecting artifacts" ) 2> /dev/null +# differences between conda-build vs. rattler-build +# - recipe is positional vs. --recipe "${RECIPE_ROOT}" +# - --suppress-variables vs. none +# - --clobber-file vs. none +# - none vs. --target-platform +# - --extra-meta a=b c=d vs. --extra-meta a=b --extra-meta c=d - # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 - command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir ./recipe -m ./.ci_support/${CONFIG}.yaml || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" +CONDA_SUBDIR="${BUILD_PLATFORM}" conda-build \ + "${RECIPE_ROOT}" \ + -m "${CONFIG_FILE}" \ + ${EXTRA_CB_OPTIONS:-} \ + --suppress-variables \ + --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ + --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" - ( endgroup "Inspecting artifacts" ) 2> /dev/null - ( startgroup "Validating outputs" ) 2> /dev/null +( startgroup "Inspecting artifacts" ) 2> /dev/null - validate_recipe_outputs "${FEEDSTOCK_NAME}" +# inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 +command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts --recipe-dir "${RECIPE_ROOT}" -m "${CONFIG_FILE}" || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" - ( endgroup "Validating outputs" ) 2> /dev/null +( endgroup "Inspecting artifacts" ) 2> /dev/null +( startgroup "Validating outputs" ) 2> /dev/null +validate_recipe_outputs "${FEEDSTOCK_NAME}" +( endgroup "Validating outputs" ) 2> /dev/null +if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then ( startgroup "Uploading packages" ) 2> /dev/null - - if [[ "${UPLOAD_PACKAGES}" != "False" ]] && [[ "${IS_PR_BUILD}" == "False" ]]; then - upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" ./ ./recipe ./.ci_support/${CONFIG}.yaml - fi - + upload_package --validate --feedstock-name="${FEEDSTOCK_NAME}" "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" ( endgroup "Uploading packages" ) 2> /dev/null fi diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 06f61b83b..bb04aa492 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -16,10 +16,20 @@ FOR %%A IN ("%~dp0.") DO SET "REPO_ROOT=%%~dpA" if "%MINIFORGE_HOME%"=="" set "MINIFORGE_HOME=%USERPROFILE%\Miniforge3" :: Remove trailing backslash, if present if "%MINIFORGE_HOME:~-1%"=="\" set "MINIFORGE_HOME=%MINIFORGE_HOME:~0,-1%" + +set FEEDSTOCK_ROOT=%cd% +set RECIPE_ROOT=%FEEDSTOCK_ROOT%\recipe +set CI_SUPPORT=%FEEDSTOCK_ROOT%\.ci_support +set CONFIG_FILE=%CI_SUPPORT%\%CONFIG%.yaml + +set "arch=64" +if "%PROCESSOR_ARCHITECTURE%"=="ARM64" set "arch=arm64" + call :start_group "Provisioning base env with micromamba" + set "MAMBA_ROOT_PREFIX=%MINIFORGE_HOME%-micromamba-%RANDOM%" -set "MICROMAMBA_VERSION=1.5.10-0" -set "MICROMAMBA_URL=https://github.com/mamba-org/micromamba-releases/releases/download/%MICROMAMBA_VERSION%/micromamba-win-64" +set "MICROMAMBA_VERSION=2.9.0-0" +set "MICROMAMBA_URL=https://github.com/mamba-org/micromamba-releases/releases/download/%MICROMAMBA_VERSION%/micromamba-win-%arch%" set "MICROMAMBA_TMPDIR=%TMP%\micromamba-%RANDOM%" set "MICROMAMBA_EXE=%MICROMAMBA_TMPDIR%\micromamba.exe" @@ -31,18 +41,21 @@ if !errorlevel! neq 0 exit /b !errorlevel! echo Creating environment call "%MICROMAMBA_EXE%" create --yes --root-prefix "%MAMBA_ROOT_PREFIX%" --prefix "%MINIFORGE_HOME%" ^ --channel conda-forge ^ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=26.3" + pip python=3.14 conda-build conda-forge-ci-setup=4 "conda-build>=26.3" if !errorlevel! neq 0 exit /b !errorlevel! -echo Removing %MAMBA_ROOT_PREFIX% + +echo Cleaning up micromamba del /S /Q "%MAMBA_ROOT_PREFIX%" >nul del /S /Q "%MICROMAMBA_TMPDIR%" >nul + call :end_group call :start_group "Configuring conda" :: Activate the base conda environment echo Activating environment -call "%MINIFORGE_HOME%\Scripts\activate.bat" +set "CONDA_EXE=%MINIFORGE_HOME%\Scripts\conda.exe" +call "%MINIFORGE_HOME%\condabin\conda.bat" activate "%MINIFORGE_HOME%" :: Configure the solver set "CONDA_SOLVER=libmamba" if !errorlevel! neq 0 exit /b !errorlevel! @@ -50,17 +63,18 @@ set "CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1" :: Set basic configuration echo Setting up configuration -setup_conda_rc .\ ".\recipe" .\.ci_support\%CONFIG%.yaml -if !errorlevel! neq 0 exit /b !errorlevel! -echo Running build setup +setup_conda_rc "%FEEDSTOCK_ROOT%" "%RECIPE_ROOT%" "%CONFIG_FILE%" +if !errorlevel! neq 0 exit /b !errorlevel!echo Running build setup CALL run_conda_forge_build_setup if !errorlevel! neq 0 exit /b !errorlevel! -if EXIST LICENSE.txt ( +call :end_group + +if EXIST %FEEDSTOCK_ROOT%\LICENSE.txt ( echo Copying feedstock license - copy LICENSE.txt "recipe\\recipe-scripts-license.txt" + copy "%FEEDSTOCK_ROOT%\\LICENSE.txt" "%RECIPE_ROOT%\\recipe-scripts-license.txt" ) if NOT [%HOST_PLATFORM%] == [%BUILD_PLATFORM%] ( if [%CROSSCOMPILING_EMULATOR%] == [] ( @@ -72,20 +86,22 @@ 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%" ) -call :end_group - :: Build the recipe echo Building recipe -set "_OLD_CONDA_SUBDIR=%CONDA_SUBDIR%" -set "CONDA_SUBDIR=%BUILD_PLATFORM%" -conda-build.exe "recipe" -m .ci_support\%CONFIG%.yaml --suppress-variables %EXTRA_CB_OPTIONS% + +conda-build.exe ^ + "%RECIPE_ROOT%" ^ + -m %CONFIG_FILE% ^ + %EXTRA_CB_OPTIONS% ^ + --suppress-variables + if !errorlevel! neq 0 exit /b !errorlevel! -set "_OLD_CONDA_SUBDIR=" -set "CONDA_SUBDIR=%_OLD_CONDA_SUBDIR%" call :start_group "Inspecting artifacts" + :: inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 -WHERE inspect_artifacts >nul 2>nul && inspect_artifacts --recipe-dir ".\recipe" -m .ci_support\%CONFIG%.yaml || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" +WHERE inspect_artifacts >nul 2>nul && inspect_artifacts --recipe-dir "%RECIPE_ROOT%" -m %CONFIG_FILE% || echo "inspect_artifacts needs conda-forge-ci-setup >=4.9.4" + call :end_group :: Prepare some environment variables for the upload step @@ -109,8 +125,6 @@ if /i "%CI%" == "azure" ( ) set "TEMP=%UPLOAD_TEMP%" ) - -:: Validate call :start_group "Validating outputs" validate_recipe_outputs "%FEEDSTOCK_NAME%" if !errorlevel! neq 0 exit /b !errorlevel! @@ -121,7 +135,7 @@ if /i "%UPLOAD_PACKAGES%" == "true" ( call :start_group "Uploading packages" if not exist "%TEMP%\" md "%TEMP%" set "TMP=%TEMP%" - upload_package --validate --feedstock-name="%FEEDSTOCK_NAME%" .\ ".\recipe" .ci_support\%CONFIG%.yaml + upload_package --validate --feedstock-name="%FEEDSTOCK_NAME%" "%FEEDSTOCK_ROOT%" "%RECIPE_ROOT%" "%CONFIG_FILE%" if !errorlevel! neq 0 exit /b !errorlevel! call :end_group ) diff --git a/README.md b/README.md index 1756faa73..d3440d56e 100644 --- a/README.md +++ b/README.md @@ -145,10 +145,10 @@ Current release info Installing python ================= -Installing `python` from the `conda-forge/label/python_debug` channel can be achieved by adding `conda-forge/label/python_debug` to your channels with: +Installing `python` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with: ``` -conda config --add channels conda-forge/label/python_debug +conda config --add channels conda-forge conda config --set channel_priority strict ``` @@ -194,7 +194,7 @@ It is possible to list all of the versions of `cpython` available on your platfo With conda ``` -conda search cpython --channel conda-forge/label/python_debug +conda search cpython --channel conda-forge ``` @@ -203,7 +203,7 @@ conda search cpython --channel conda-forge/label/python_debug With mamba ``` -mamba search cpython --channel conda-forge/label/python_debug +mamba search cpython --channel conda-forge ``` @@ -212,7 +212,7 @@ mamba search cpython --channel conda-forge/label/python_debug With pixi ``` -pixi search cpython --channel conda-forge/label/python_debug +pixi search cpython --channel conda-forge ``` @@ -222,18 +222,19 @@ pixi search cpython --channel conda-forge/label/python_debug ``` # Search all versions available on your platform: -mamba repoquery search cpython --channel conda-forge/label/python_debug +mamba repoquery search cpython --channel conda-forge # List packages depending on `cpython`: -mamba repoquery whoneeds cpython --channel conda-forge/label/python_debug +mamba repoquery whoneeds cpython --channel conda-forge # List dependencies of `cpython`: -mamba repoquery depends cpython --channel conda-forge/label/python_debug +mamba repoquery depends cpython --channel conda-forge ``` + About conda-forge ================= @@ -248,9 +249,7 @@ for each of the installable packages. Such a repository is known as a *feedstock A feedstock is made up of a conda recipe (the instructions on what and how to build the package) and the necessary configurations for automatic building using freely available continuous integration services. Thanks to the awesome service provided by -[Azure](https://azure.microsoft.com/en-us/services/devops/), [GitHub](https://github.com/), -[CircleCI](https://circleci.com/), [AppVeyor](https://www.appveyor.com/), -[Drone](https://cloud.drone.io/welcome), and [TravisCI](https://travis-ci.com/) +[Azure](https://azure.microsoft.com/en-us/services/devops/) and [GitHub](https://github.com/) 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.