From 623d5de7684fd7456181c5e82db894e773bfc365 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Mon, 26 Oct 2026 07:52:42 +0000 Subject: [PATCH 1/2] [3.11] Update Python to 3.11.18 Bring the upstream security release into the matching conda-forge series. Verify the source checksum, reset the base build number, and refresh the patch series against the new tag. Patches were rebased from v3.11.17 onto v3.11.18 following recipe/patches/README.md. 0025-Unvendor-expat needed a conflict resolution because upstream added the bundled Expat 2.9.0 files (xcs.c/xcs.h) to the Windows project files that the unvendor patch removes; 0009-Unvendor-openssl and 0014-Doing-d1trimfile only needed context refreshes around the new distrusted_spki.h entry. All other patches are unchanged apart from commit hashes. --- recipe/meta.yaml | 6 +-- ...2-Change-FD_SETSIZE-from-512-to-2048.patch | 2 +- ...Add-support-to-cygwinccompiler-for-V.patch | 2 +- ...-for-isysroot-in-addition-to-sysroot.patch | 2 +- ...dir_option-Use-1st-word-of-CC-as-com.patch | 2 +- ...0005-Win32-Do-not-download-externals.patch | 2 +- ...-so-that-it-looks-in-sys.prefix-lib-.patch | 2 +- ...compiling-on-debian-ubuntu-with-a-di.patch | 2 +- ...-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch | 2 +- recipe/patches/0009-Unvendor-openssl.patch | 18 ++++---- recipe/patches/0010-Unvendor-sqlite3.patch | 2 +- ...nlib-from-env-if-env-variable-is-set.patch | 2 +- ...dd-CondaEcosystemModifyDllSearchPath.patch | 2 +- ...RC_DIR-to-make-pdbs-more-relocatable.patch | 2 +- recipe/patches/0014-Doing-d1trimfile.patch | 10 ++--- .../patches/0015-cross-compile-darwin.patch | 2 +- .../patches/0016-Fix-TZPATH-on-windows.patch | 2 +- ...ch-work-with-SYSTEM_VERSION_COMPAT-1.patch | 2 +- ...ED-when-CC-is-overriden-on-Linux-too.patch | 2 +- recipe/patches/0019-Unvendor-bzip2.patch | 2 +- recipe/patches/0020-Unvendor-libffi.patch | 2 +- recipe/patches/0021-Unvendor-tcltk.patch | 2 +- recipe/patches/0022-unvendor-xz.patch | 2 +- recipe/patches/0023-unvendor-zlib.patch | 2 +- ...-not-pass-g-to-GCC-when-not-Py_DEBUG.patch | 2 +- recipe/patches/0025-Unvendor-expat.patch | 44 +++++++++++++------ ...d_t-as-it-might-conflict-with-the-ac.patch | 2 +- 27 files changed, 70 insertions(+), 54 deletions(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 770e0abf2..dc86e1a0a 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,10 +1,10 @@ -{% set version = "3.11.17" %} +{% set version = "3.11.18" %} {% 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' %} @@ -45,7 +45,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 }}/ - sha256: bfb74ad39efae27cda510f134ab408e00f9992c56851cfc0b1cdb5646da11599 + sha256: 9120e0a653868f6e3698d36cdd99e5a58903ec9469e448f21d98f7b16d8fa290 patches: - patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch - patches/0002-Win32-distutils-Add-support-to-cygwinccompiler-for-V.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 b667d8586..cc43217a1 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 10d69d27464be90c52536b2c284c393282086107 Mon Sep 17 00:00:00 2001 +From 53ad75a279d874b5c66524aa4d6ce8b11c34cd6e Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 16 Aug 2017 11:53:55 +0100 Subject: [PATCH 01/26] Win32: Change FD_SETSIZE from 512 to 2048 diff --git a/recipe/patches/0002-Win32-distutils-Add-support-to-cygwinccompiler-for-V.patch b/recipe/patches/0002-Win32-distutils-Add-support-to-cygwinccompiler-for-V.patch index ed16a2bdb..ad9991e4a 100644 --- a/recipe/patches/0002-Win32-distutils-Add-support-to-cygwinccompiler-for-V.patch +++ b/recipe/patches/0002-Win32-distutils-Add-support-to-cygwinccompiler-for-V.patch @@ -1,4 +1,4 @@ -From 594f0ecdc08661c1ade5bd68d5c7e5cff85075f3 Mon Sep 17 00:00:00 2001 +From 38251984a9009c3a726de3e9d0905c7da5fbb409 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 16 Aug 2017 11:59:00 +0100 Subject: [PATCH 02/26] Win32: distutils: Add support to cygwinccompiler for diff --git a/recipe/patches/0003-bpo-45258-search-for-isysroot-in-addition-to-sysroot.patch b/recipe/patches/0003-bpo-45258-search-for-isysroot-in-addition-to-sysroot.patch index 5c7387a48..6ee567068 100644 --- a/recipe/patches/0003-bpo-45258-search-for-isysroot-in-addition-to-sysroot.patch +++ b/recipe/patches/0003-bpo-45258-search-for-isysroot-in-addition-to-sysroot.patch @@ -1,4 +1,4 @@ -From 675bc27ae2e812f1b92ef1ee6d998e09e1ed77c7 Mon Sep 17 00:00:00 2001 +From 2685a9233ab23d15fb64145255ce3925dedb8d94 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 21 Sep 2021 13:05:20 -0500 Subject: [PATCH 03/26] bpo-45258: search for -isysroot in addition to diff --git a/recipe/patches/0004-runtime_library_dir_option-Use-1st-word-of-CC-as-com.patch b/recipe/patches/0004-runtime_library_dir_option-Use-1st-word-of-CC-as-com.patch index 335287b39..d8609d8d3 100644 --- a/recipe/patches/0004-runtime_library_dir_option-Use-1st-word-of-CC-as-com.patch +++ b/recipe/patches/0004-runtime_library_dir_option-Use-1st-word-of-CC-as-com.patch @@ -1,4 +1,4 @@ -From 93a27e66a044043afc10bb45c143d93e3b483d64 Mon Sep 17 00:00:00 2001 +From 57c394715f71dc431729611b7090ef4a5ebcb2e4 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 5 Oct 2017 02:00:41 +0100 Subject: [PATCH 04/26] runtime_library_dir_option: Use 1st word of CC as diff --git a/recipe/patches/0005-Win32-Do-not-download-externals.patch b/recipe/patches/0005-Win32-Do-not-download-externals.patch index 161bd48b0..59a053700 100644 --- a/recipe/patches/0005-Win32-Do-not-download-externals.patch +++ b/recipe/patches/0005-Win32-Do-not-download-externals.patch @@ -1,4 +1,4 @@ -From cd67ca0451daa6f23bd86eac32c0dc10f0dd75cb Mon Sep 17 00:00:00 2001 +From 08ac8c6c7f955c0d7a8d0ddbb9089f6f4f302660 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 7 Sep 2017 11:35:47 +0100 Subject: [PATCH 05/26] Win32: Do not download externals diff --git a/recipe/patches/0006-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch b/recipe/patches/0006-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch index a0db58ffd..b2f52f019 100644 --- a/recipe/patches/0006-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch +++ b/recipe/patches/0006-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch @@ -1,4 +1,4 @@ -From 4f42ef67a7b170a0a339fb61ec9f9e9e666fe06c Mon Sep 17 00:00:00 2001 +From 1678a5b4d19d0556c3ee0730b1cb96d625c0c7ef Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 5 Dec 2017 22:47:59 +0000 Subject: [PATCH 06/26] Fix find_library so that it looks in sys.prefix/lib diff --git a/recipe/patches/0007-bpo-22699-Allow-compiling-on-debian-ubuntu-with-a-di.patch b/recipe/patches/0007-bpo-22699-Allow-compiling-on-debian-ubuntu-with-a-di.patch index 14b08c177..561e0d3e0 100644 --- a/recipe/patches/0007-bpo-22699-Allow-compiling-on-debian-ubuntu-with-a-di.patch +++ b/recipe/patches/0007-bpo-22699-Allow-compiling-on-debian-ubuntu-with-a-di.patch @@ -1,4 +1,4 @@ -From 11da7c080952a40634b6252de2153da051465b0e Mon Sep 17 00:00:00 2001 +From 3fae3d30d572d89549d2572b636b990d2539ae5f Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Thu, 16 Sep 2021 15:46:09 -0500 Subject: [PATCH 07/26] bpo-22699: Allow compiling on debian/ubuntu with a diff --git a/recipe/patches/0008-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch b/recipe/patches/0008-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch index df21bb6d4..3c73e97bc 100644 --- a/recipe/patches/0008-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch +++ b/recipe/patches/0008-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch @@ -1,4 +1,4 @@ -From 27c2df0308789b4e234d6b68664c7df8ffa1cb72 Mon Sep 17 00:00:00 2001 +From d8f355cb5473a19474118455ebda6b4996c31cbf Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Sat, 27 Oct 2018 18:48:30 +0100 Subject: [PATCH 08/26] Disable registry lookup unless CONDA_PY_ALLOW_REG_PATHS diff --git a/recipe/patches/0009-Unvendor-openssl.patch b/recipe/patches/0009-Unvendor-openssl.patch index ee33bf4e8..d5045b649 100644 --- a/recipe/patches/0009-Unvendor-openssl.patch +++ b/recipe/patches/0009-Unvendor-openssl.patch @@ -1,4 +1,4 @@ -From 869c677168bef5dff2ae8f3636543462a83720cd Mon Sep 17 00:00:00 2001 +From 5f949688603b447094d9cba240ce181f03d0eede Mon Sep 17 00:00:00 2001 From: Nehal J Wani Date: Sat, 24 Nov 2018 20:38:02 -0600 Subject: [PATCH 09/26] Unvendor openssl @@ -15,11 +15,11 @@ Co-authored-by: Isuru Fernando 7 files changed, 10 insertions(+), 75 deletions(-) diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj -index 4907f49b66..b2c23d5e8c 100644 +index 965cc1f3ac..90ac591897 100644 --- a/PCbuild/_ssl.vcxproj +++ b/PCbuild/_ssl.vcxproj -@@ -99,9 +99,6 @@ - +@@ -102,9 +102,6 @@ + - @@ -29,10 +29,10 @@ index 4907f49b66..b2c23d5e8c 100644 diff --git a/PCbuild/_ssl.vcxproj.filters b/PCbuild/_ssl.vcxproj.filters -index 716a69a41a..8aef9e03fc 100644 +index 3df9d70532..4323bd1758 100644 --- a/PCbuild/_ssl.vcxproj.filters +++ b/PCbuild/_ssl.vcxproj.filters -@@ -12,9 +12,6 @@ +@@ -15,9 +15,6 @@ Source Files @@ -41,7 +41,7 @@ index 716a69a41a..8aef9e03fc 100644 - - + diff --git a/PCbuild/openssl.props b/PCbuild/openssl.props index a4186f01da..044cefd95e 100644 --- a/PCbuild/openssl.props @@ -146,10 +146,10 @@ index 0da6f67495..17eee400eb 100644 diff --git a/PCbuild/python.props b/PCbuild/python.props -index 49347c2b78..407203a86b 100644 +index 4915460ed4..9602a9abc5 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props -@@ -61,6 +61,7 @@ +@@ -62,6 +62,7 @@ $(EXTERNALS_DIR) diff --git a/recipe/patches/0010-Unvendor-sqlite3.patch b/recipe/patches/0010-Unvendor-sqlite3.patch index 2b2676467..4768297ce 100644 --- a/recipe/patches/0010-Unvendor-sqlite3.patch +++ b/recipe/patches/0010-Unvendor-sqlite3.patch @@ -1,4 +1,4 @@ -From 8722f2c49eda3860401fb23f886d32e8f1640776 Mon Sep 17 00:00:00 2001 +From 6b81b71e93e33388e20a8fc20e2b885003364bb5 Mon Sep 17 00:00:00 2001 From: Nehal J Wani Date: Tue, 5 Oct 2021 12:42:06 -0700 Subject: [PATCH 10/26] Unvendor sqlite3 diff --git a/recipe/patches/0011-Use-ranlib-from-env-if-env-variable-is-set.patch b/recipe/patches/0011-Use-ranlib-from-env-if-env-variable-is-set.patch index 423556262..4599225a9 100644 --- a/recipe/patches/0011-Use-ranlib-from-env-if-env-variable-is-set.patch +++ b/recipe/patches/0011-Use-ranlib-from-env-if-env-variable-is-set.patch @@ -1,4 +1,4 @@ -From 59516a93e3697cc072ff6feded17ed06dc3599ce Mon Sep 17 00:00:00 2001 +From 403b8647daef94e36dc79951924651f37f74d7e8 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Sun, 3 Nov 2019 15:09:45 -0600 Subject: [PATCH 11/26] Use ranlib from env if env variable is set diff --git a/recipe/patches/0012-Add-CondaEcosystemModifyDllSearchPath.patch b/recipe/patches/0012-Add-CondaEcosystemModifyDllSearchPath.patch index 358281e4e..744bdc425 100644 --- a/recipe/patches/0012-Add-CondaEcosystemModifyDllSearchPath.patch +++ b/recipe/patches/0012-Add-CondaEcosystemModifyDllSearchPath.patch @@ -1,4 +1,4 @@ -From ed4c903cceb544903cd1a94a66a8ba2ebd796c84 Mon Sep 17 00:00:00 2001 +From ea726f6b4fdf70459f5dcfb4845fc5beecaae677 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 24 Dec 2019 18:37:17 +0100 Subject: [PATCH 12/26] Add CondaEcosystemModifyDllSearchPath() diff --git a/recipe/patches/0013-Add-d1trimfile-SRC_DIR-to-make-pdbs-more-relocatable.patch b/recipe/patches/0013-Add-d1trimfile-SRC_DIR-to-make-pdbs-more-relocatable.patch index 29baaa91b..48a4667ce 100644 --- a/recipe/patches/0013-Add-d1trimfile-SRC_DIR-to-make-pdbs-more-relocatable.patch +++ b/recipe/patches/0013-Add-d1trimfile-SRC_DIR-to-make-pdbs-more-relocatable.patch @@ -1,4 +1,4 @@ -From 5c902ea7ddad89e84a78d38c9d5423237e943b85 Mon Sep 17 00:00:00 2001 +From e8fc844c36b2ae5b37f0e10507ceeaff6bd693c8 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 31 Dec 2019 20:46:36 +0100 Subject: [PATCH 13/26] Add /d1trimfile:%SRC_DIR% to make pdbs more relocatable diff --git a/recipe/patches/0014-Doing-d1trimfile.patch b/recipe/patches/0014-Doing-d1trimfile.patch index 2e1ee3a05..b1f8a58d3 100644 --- a/recipe/patches/0014-Doing-d1trimfile.patch +++ b/recipe/patches/0014-Doing-d1trimfile.patch @@ -1,4 +1,4 @@ -From 9f1e8184fd6826a09ae564945a801836dbef9267 Mon Sep 17 00:00:00 2001 +From c12b9a067bc6b1c16cb607c9a93136a29de268a4 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 31 Dec 2019 21:47:47 +0100 Subject: [PATCH 14/26] Doing d1trimfile @@ -156,7 +156,7 @@ index 0916f1a2d3..17a4cbfcd7 100644 diff --git a/PCbuild/_elementtree.vcxproj b/PCbuild/_elementtree.vcxproj -index 22f204df68..e62b9d3449 100644 +index d98e4595a6..3ac70d27af 100644 --- a/PCbuild/_elementtree.vcxproj +++ b/PCbuild/_elementtree.vcxproj @@ -94,7 +94,11 @@ @@ -364,7 +364,7 @@ index 4735477f00..c7c377e217 100644 $(condaDir)\lib\sqlite3.lib;%(AdditionalDependencies) diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj -index b2c23d5e8c..ebe4e88848 100644 +index 90ac591897..7a592191b8 100644 --- a/PCbuild/_ssl.vcxproj +++ b/PCbuild/_ssl.vcxproj @@ -96,6 +96,18 @@ @@ -385,7 +385,7 @@ index b2c23d5e8c..ebe4e88848 100644 + - + diff --git a/PCbuild/_testbuffer.vcxproj b/PCbuild/_testbuffer.vcxproj index 917d7ae50f..8c7e141eea 100644 --- a/PCbuild/_testbuffer.vcxproj @@ -586,7 +586,7 @@ index 4dd42ab98a..7c2dbc7e70 100644 diff --git a/PCbuild/pyexpat.vcxproj b/PCbuild/pyexpat.vcxproj -index fe72705e83..68ac83bc8a 100644 +index 5357ab6139..b684980fc0 100644 --- a/PCbuild/pyexpat.vcxproj +++ b/PCbuild/pyexpat.vcxproj @@ -92,6 +92,10 @@ diff --git a/recipe/patches/0015-cross-compile-darwin.patch b/recipe/patches/0015-cross-compile-darwin.patch index 3ce4ba355..7b0fa7d9e 100644 --- a/recipe/patches/0015-cross-compile-darwin.patch +++ b/recipe/patches/0015-cross-compile-darwin.patch @@ -1,4 +1,4 @@ -From 02ff83fe251cf69f349d8ef5c6d8754dc73cac09 Mon Sep 17 00:00:00 2001 +From 5b19e4f10c4283d5cf595b0690ae5a61a2c4f8c3 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Fri, 2 Oct 2020 00:03:12 +0200 Subject: [PATCH 15/26] cross compile darwin diff --git a/recipe/patches/0016-Fix-TZPATH-on-windows.patch b/recipe/patches/0016-Fix-TZPATH-on-windows.patch index 8b04bb847..667a42eed 100644 --- a/recipe/patches/0016-Fix-TZPATH-on-windows.patch +++ b/recipe/patches/0016-Fix-TZPATH-on-windows.patch @@ -1,4 +1,4 @@ -From 4a2822f2aefc553b1a253d2067bf219ab8524cb8 Mon Sep 17 00:00:00 2001 +From cbc6c6a8137304d8f9334132e8e62f36d0c6cb7b Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 7 Oct 2020 10:08:30 -0500 Subject: [PATCH 16/26] Fix TZPATH on windows diff --git a/recipe/patches/0017-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch b/recipe/patches/0017-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch index 7cb4e5980..47d32bc9b 100644 --- a/recipe/patches/0017-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch +++ b/recipe/patches/0017-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch @@ -1,4 +1,4 @@ -From 773c6784253ee8dad348d05105e09ae03e271b0b Mon Sep 17 00:00:00 2001 +From 7bdfdf213057ad8e58c7c5a36304ce96cb105028 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 25 Jan 2021 03:28:08 -0600 Subject: [PATCH 17/26] Make dyld search work with SYSTEM_VERSION_COMPAT=1 diff --git a/recipe/patches/0018-Fix-LDSHARED-when-CC-is-overriden-on-Linux-too.patch b/recipe/patches/0018-Fix-LDSHARED-when-CC-is-overriden-on-Linux-too.patch index 7f929d1f4..a4a5729a3 100644 --- a/recipe/patches/0018-Fix-LDSHARED-when-CC-is-overriden-on-Linux-too.patch +++ b/recipe/patches/0018-Fix-LDSHARED-when-CC-is-overriden-on-Linux-too.patch @@ -1,4 +1,4 @@ -From 4aebc49a794ae9742f93712c4732a866e6be59ca Mon Sep 17 00:00:00 2001 +From 9be55f904c6ae2e1cfce5f60330f55758d815eb2 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 16 Aug 2021 02:18:50 -0700 Subject: [PATCH 18/26] Fix LDSHARED when CC is overriden on Linux too diff --git a/recipe/patches/0019-Unvendor-bzip2.patch b/recipe/patches/0019-Unvendor-bzip2.patch index 3c9a0ebec..9969ce4c2 100644 --- a/recipe/patches/0019-Unvendor-bzip2.patch +++ b/recipe/patches/0019-Unvendor-bzip2.patch @@ -1,4 +1,4 @@ -From 65ce1ef4239094bc8dc599ae779ae33164836a4d Mon Sep 17 00:00:00 2001 +From cd65601b9b95bd9cdce1da68cf84a2e08b60aadc Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 16 Aug 2021 02:56:27 -0700 Subject: [PATCH 19/26] Unvendor bzip2 diff --git a/recipe/patches/0020-Unvendor-libffi.patch b/recipe/patches/0020-Unvendor-libffi.patch index 6d06b0133..11419d272 100644 --- a/recipe/patches/0020-Unvendor-libffi.patch +++ b/recipe/patches/0020-Unvendor-libffi.patch @@ -1,4 +1,4 @@ -From 746f209d9202f6285b00c7006f678a2b635d7388 Mon Sep 17 00:00:00 2001 +From e85b12fa454277cd61eddd848921227a781ca691 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 16 Aug 2021 03:07:40 -0700 Subject: [PATCH 20/26] Unvendor libffi diff --git a/recipe/patches/0021-Unvendor-tcltk.patch b/recipe/patches/0021-Unvendor-tcltk.patch index e6946af62..b599d5900 100644 --- a/recipe/patches/0021-Unvendor-tcltk.patch +++ b/recipe/patches/0021-Unvendor-tcltk.patch @@ -1,4 +1,4 @@ -From a971e363a40260735107118a02fa0a1ef365deeb Mon Sep 17 00:00:00 2001 +From 3f3f27a1ba1e8d4272e30309194db24b30a9cdfa Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Fri, 20 Aug 2021 10:23:51 -0700 Subject: [PATCH 21/26] Unvendor tcltk diff --git a/recipe/patches/0022-unvendor-xz.patch b/recipe/patches/0022-unvendor-xz.patch index add14306d..d933dc29e 100644 --- a/recipe/patches/0022-unvendor-xz.patch +++ b/recipe/patches/0022-unvendor-xz.patch @@ -1,4 +1,4 @@ -From efe34e1609a8acc139b6471d65ac96bc977a20c8 Mon Sep 17 00:00:00 2001 +From c13783c28c0900ea9501387b2f536bab4b43899e Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Sat, 25 Sep 2021 10:07:05 -0700 Subject: [PATCH 22/26] unvendor xz diff --git a/recipe/patches/0023-unvendor-zlib.patch b/recipe/patches/0023-unvendor-zlib.patch index 484b6451a..9124ce0c8 100644 --- a/recipe/patches/0023-unvendor-zlib.patch +++ b/recipe/patches/0023-unvendor-zlib.patch @@ -1,4 +1,4 @@ -From 26a327e828ea74b15a9c8e3f4716df548885892c Mon Sep 17 00:00:00 2001 +From 6ecd278e657a766b1f5516cdcc42cd858f4f2f69 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 29 Sep 2021 15:21:55 -0700 Subject: [PATCH 23/26] unvendor zlib diff --git a/recipe/patches/0024-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch b/recipe/patches/0024-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch index e6910f54d..eb1cc2ff7 100644 --- a/recipe/patches/0024-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch +++ b/recipe/patches/0024-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch @@ -1,4 +1,4 @@ -From 7db637d9080f82a28e42908b91e245ad4c040f2a Mon Sep 17 00:00:00 2001 +From 001294fada5001e7e948524d61442fc38feb3b99 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 16 Aug 2017 11:45:28 +0100 Subject: [PATCH 24/26] Do not pass -g to GCC when not Py_DEBUG diff --git a/recipe/patches/0025-Unvendor-expat.patch b/recipe/patches/0025-Unvendor-expat.patch index 0dfedfa41..d2a85c554 100644 --- a/recipe/patches/0025-Unvendor-expat.patch +++ b/recipe/patches/0025-Unvendor-expat.patch @@ -1,20 +1,20 @@ -From f979b776a4e9faeafa0abd164640b7becd18668e Mon Sep 17 00:00:00 2001 +From c07ed26db1df6bfd820b214960b755179718a57d Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 29 Mar 2023 23:07:10 -0500 Subject: [PATCH 25/26] Unvendor expat --- - PCbuild/_elementtree.vcxproj | 27 ++---------- - PCbuild/_elementtree.vcxproj.filters | 62 ---------------------------- - PCbuild/pyexpat.vcxproj | 15 ++----- - PCbuild/pyexpat.vcxproj.filters | 26 ------------ - 4 files changed, 8 insertions(+), 122 deletions(-) + PCbuild/_elementtree.vcxproj | 29 ++---------- + PCbuild/_elementtree.vcxproj.filters | 68 ---------------------------- + PCbuild/pyexpat.vcxproj | 17 ++----- + PCbuild/pyexpat.vcxproj.filters | 32 ------------- + 4 files changed, 8 insertions(+), 138 deletions(-) diff --git a/PCbuild/_elementtree.vcxproj b/PCbuild/_elementtree.vcxproj -index e62b9d3449..de476a6add 100644 +index 3ac70d27af..de476a6add 100644 --- a/PCbuild/_elementtree.vcxproj +++ b/PCbuild/_elementtree.vcxproj -@@ -93,38 +93,19 @@ +@@ -93,40 +93,19 @@ @@ -46,11 +46,13 @@ index e62b9d3449..de476a6add 100644 - - - +- - - - +- - - - @@ -58,10 +60,10 @@ index e62b9d3449..de476a6add 100644 diff --git a/PCbuild/_elementtree.vcxproj.filters b/PCbuild/_elementtree.vcxproj.filters -index 9e2e062af3..88a13faa68 100644 +index 2ce694e1b5..88a13faa68 100644 --- a/PCbuild/_elementtree.vcxproj.filters +++ b/PCbuild/_elementtree.vcxproj.filters -@@ -17,72 +17,10 @@ +@@ -17,78 +17,10 @@ {f99990ba-cd06-40cc-8f28-d2d424ec13be} @@ -111,6 +113,9 @@ index 9e2e062af3..88a13faa68 100644 - - Header Files\expat - +- +- Header Files\expat +- - - Header Files\expat - @@ -122,6 +127,9 @@ index 9e2e062af3..88a13faa68 100644 Source Files +- +- Source Files\expat +- - - Source Files\expat - @@ -135,10 +143,10 @@ index 9e2e062af3..88a13faa68 100644 diff --git a/PCbuild/pyexpat.vcxproj b/PCbuild/pyexpat.vcxproj -index 68ac83bc8a..e253b39c86 100644 +index b684980fc0..e253b39c86 100644 --- a/PCbuild/pyexpat.vcxproj +++ b/PCbuild/pyexpat.vcxproj -@@ -90,26 +90,19 @@ +@@ -90,28 +90,19 @@ @@ -158,11 +166,13 @@ index 68ac83bc8a..e253b39c86 100644 - - - +- - - - +- - - - @@ -170,10 +180,10 @@ index 68ac83bc8a..e253b39c86 100644 diff --git a/PCbuild/pyexpat.vcxproj.filters b/PCbuild/pyexpat.vcxproj.filters -index e63cb9c630..b8280b4049 100644 +index baa06e4491..b8280b4049 100644 --- a/PCbuild/pyexpat.vcxproj.filters +++ b/PCbuild/pyexpat.vcxproj.filters -@@ -11,36 +11,10 @@ +@@ -11,42 +11,10 @@ {f1dbbdb5-41e5-4a88-bf8e-13da010c0ce4} @@ -187,6 +197,9 @@ index e63cb9c630..b8280b4049 100644 - - Header Files - +- +- Header Files +- - - Header Files - @@ -198,6 +211,9 @@ index e63cb9c630..b8280b4049 100644 Source Files +- +- Source Files +- - - Source Files - diff --git a/recipe/patches/0026-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch b/recipe/patches/0026-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch index ad32d71b8..062cd0ac0 100644 --- a/recipe/patches/0026-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch +++ b/recipe/patches/0026-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch @@ -1,4 +1,4 @@ -From 031c57b8410fc420da904797688e9bd5abdc7a9b Mon Sep 17 00:00:00 2001 +From e90e91159e0de8ecab8a3faf12999bae8dd9dfdd Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Sun, 12 Jan 2025 10:37:29 +0530 Subject: [PATCH 26/26] Do not define pid_t as it might conflict with the From 16a0af777d0cbe3d5c32a632de8fe54bec4c5c31 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Mon, 26 Oct 2026 07:52:59 +0000 Subject: [PATCH 2/2] MNT: Re-rendered with conda-smithy 2026.10.24 and conda-forge-pinning 2026.10.25.07.44.23 Other tools: - conda-build 26.9.1 - rattler-build 0.77.0 - rattler-build-conda-compat 1.4.22 --- ...annel_targetsconda-forge_python_debug.yaml | 2 + ...eleasechannel_targetsconda-forge_main.yaml | 2 + ...annel_targetsconda-forge_python_debug.yaml | 2 + ...eleasechannel_targetsconda-forge_main.yaml | 2 + ...annel_targetsconda-forge_python_debug.yaml | 2 + ...eleasechannel_targetsconda-forge_main.yaml | 2 + ...annel_targetsconda-forge_python_debug.yaml | 2 - ...eleasechannel_targetsconda-forge_main.yaml | 2 - ...annel_targetsconda-forge_python_debug.yaml | 2 - ...eleasechannel_targetsconda-forge_main.yaml | 2 - .circleci/config.yml | 25 --- .gitattributes | 7 - .github/workflows/conda-build.yml | 2 + .scripts/build_steps.sh | 101 +++++---- .scripts/logging_utils.sh | 5 - .scripts/run_docker_build.sh | 15 +- .scripts/run_osx_build.sh | 191 +++++++++++------- .scripts/run_win_build.bat | 53 +++-- README.md | 5 +- 19 files changed, 236 insertions(+), 188 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debug.yaml b/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debug.yaml index 62c1a75c0..0c1f21324 100644 --- a/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debug.yaml +++ b/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debug.yaml @@ -1,3 +1,5 @@ +DOCKER_PLATFORM: +- linux/amd64 build_type: - debug bzip2: diff --git a/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_main.yaml b/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_main.yaml index c2fb1017e..70d7481bb 100644 --- a/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_main.yaml +++ b/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_main.yaml @@ -1,3 +1,5 @@ +DOCKER_PLATFORM: +- linux/amd64 build_type: - release bzip2: diff --git a/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debug.yaml b/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debug.yaml index 1337a7ef8..0583b5f06 100644 --- a/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debug.yaml +++ b/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debug.yaml @@ -1,3 +1,5 @@ +DOCKER_PLATFORM: +- linux/aarch64 build_type: - debug bzip2: diff --git a/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_main.yaml b/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_main.yaml index 2611bc7e7..0d86a5543 100644 --- a/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_main.yaml +++ b/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_main.yaml @@ -1,3 +1,5 @@ +DOCKER_PLATFORM: +- linux/aarch64 build_type: - release bzip2: diff --git a/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debug.yaml b/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debug.yaml index 8862e92bf..009274913 100644 --- a/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debug.yaml +++ b/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debug.yaml @@ -1,3 +1,5 @@ +DOCKER_PLATFORM: +- linux/amd64 build_type: - debug bzip2: diff --git a/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_main.yaml b/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_main.yaml index aea37fb1b..c0590cd6f 100644 --- a/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_main.yaml +++ b/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_main.yaml @@ -1,3 +1,5 @@ +DOCKER_PLATFORM: +- linux/amd64 build_type: - release bzip2: diff --git a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debug.yaml b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debug.yaml index 7114381d6..b00b71b0d 100644 --- a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debug.yaml +++ b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debug.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_main.yaml b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_main.yaml index 532bc1a75..4d903df57 100644 --- a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_main.yaml +++ b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_main.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_debug.yaml b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debug.yaml index fe71ef655..c13c23afd 100644 --- a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debug.yaml +++ b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debug.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_main.yaml b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_main.yaml index b75122cb8..cded1eacb 100644 --- a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_main.yaml +++ b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_main.yaml @@ -1,5 +1,3 @@ -MACOSX_DEPLOYMENT_TARGET: -- '11.0' MACOSX_SDK_VERSION: - '11.0' build_type: diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 8b4ef2f99..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,25 +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: jinja-yaml -*- - -version: 2 - -jobs: - build: - working_directory: ~/test - machine: - image: ubuntu-2004:current - steps: - - run: - # The Circle-CI build should not be active, but if this is not true for some reason, do a fast finish. - command: exit 0 - -workflows: - version: 2 - build_and_test: - jobs: - - build: - filters: - branches: - ignore: - - /.*/ 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 52b290116..1c276ddfc 100644 --- a/.github/workflows/conda-build.yml +++ b/.github/workflows/conda-build.yml @@ -116,6 +116,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 484acddad..76c2b336a 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 -# 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 @@ -57,7 +78,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 @@ -69,48 +91,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..67c42c717 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -69,6 +69,11 @@ if [ -z "${DOCKER_IMAGE}" ]; then fi fi +if [ -z "${DOCKER_PLATFORM}" ]; then + # this is set unconditionally in the variant configs -> no fallback + DOCKER_PLATFORM=$(cat .ci_support/${CONFIG}.yaml | grep '^DOCKER_PLATFORM:$' -A 1 | tail -n 1 | cut -b 3-) +fi + mkdir -p "$ARTIFACTS" DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}" rm -f "$DONE_CANARY" @@ -84,9 +89,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 @@ -110,7 +115,7 @@ fi export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" export IS_PR_BUILD="${IS_PR_BUILD:-False}" -${DOCKER_EXECUTABLE} pull "${DOCKER_IMAGE}" +${DOCKER_EXECUTABLE} pull --platform ${DOCKER_PLATFORM} "${DOCKER_IMAGE}" ${DOCKER_EXECUTABLE} run ${DOCKER_RUN_ARGS} \ -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw${VOLUME_SUFFIX},delegated \ @@ -143,4 +148,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 6a6309e57..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,11 +41,13 @@ 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" @@ -51,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%] == [] ( @@ -73,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 @@ -110,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! @@ -122,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 98501a8f6..41d4ee7df 100644 --- a/README.md +++ b/README.md @@ -184,6 +184,7 @@ mamba repoquery depends cpython --channel conda-forge/label/python_debug + About conda-forge ================= @@ -198,9 +199,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.