From 563b64fb92f08ba1183a198eb1ff9853209fe2b4 Mon Sep 17 00:00:00 2001 From: "riseproject-dev[bot]" <330740410+riseproject-dev[bot]@users.noreply.github.com> Date: Thu, 29 Oct 2026 09:04:11 +0000 Subject: [PATCH 1/3] pycurl: Add version 7.49.0 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> --- docs/packages/pycurl.yaml | 1 + ...les-to-cover-bundled-third-party-lic.patch | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch diff --git a/docs/packages/pycurl.yaml b/docs/packages/pycurl.yaml index 01fb3d8e8560..dca72b3a61bd 100644 --- a/docs/packages/pycurl.yaml +++ b/docs/packages/pycurl.yaml @@ -52,3 +52,4 @@ versions: gpl-sources: filename: gpl-sources.tar description: gcc and the copyleft libraries bundled in the wheel +- version: 7.49.0 diff --git a/patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch b/patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch new file mode 100644 index 000000000000..0216ce427a2b --- /dev/null +++ b/patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch @@ -0,0 +1,35 @@ +From 5b9d9b79074456e03a40c9ea7f4674fe1761bb92 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 4 Sep 2026 15:49:05 +0200 +Subject: [PATCH] Widen license-files to cover bundled third-party licences + +`license-files = ["COPYING-LGPL", "COPYING-MIT"]` is an explicit PEP 639 +list, so it replaces setuptools' default `LICEN[CS]E*` glob rather than +adding to it: a `LICENSE.` dropped at the project root to cover a +library `auditwheel repair` vendors into the wheel (libcurl and its +transitive closure) is silently ignored. Widening the list to also match +`LICENSE.*` picks those up with no other packaging change. + +Upstream's own manylinux wheels vendor a smaller set of the same libraries +(via a statically-built vcpkg curl) and carry the identical gap: only +COPYING-LGPL/COPYING-MIT ship in dist-info/licenses, with no notice for +libcurl, OpenSSL, krb5, libssh2, brotli or nghttp2. + +Upstream-Status: To upstream [not submitted from this automated port run; needs a pull request against pycurl/pycurl] +--- + pyproject.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 77760a6..cefc99f 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -7,7 +7,7 @@ name = "pycurl" + description = "PycURL -- A Python Interface To The cURL library" + requires-python = ">=3.10" + license = "LGPL-2.1-only OR MIT" +-license-files = ["COPYING-LGPL", "COPYING-MIT"] ++license-files = ["COPYING-LGPL", "COPYING-MIT", "LICENSE.*"] + keywords = ["curl", "libcurl", "urllib", "wget", "download", "file transfer", "http", "www"] + authors = [ + { name = "Kjetil Jacobsen", email = "kjetilja@gmail.com" }, From 028ca751e46e0ca7ebcea6f5275822a2b810b7aa Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sat, 31 Oct 2026 08:12:33 +0100 Subject: [PATCH 2/3] pycurl: carry the license-files patch to 7.49.0 Same one-line change as 7.48.0; upstream added a readme line to pyproject.toml, so the hunk context moved and the 7.48.0 patch no longer applies. --- ...-license-files-to-cover-bundled-third-party-lic.patch | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch b/patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch index 0216ce427a2b..50efca26f0c0 100644 --- a/patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch +++ b/patches/pycurl/7.49.0/0001-Widen-license-files-to-cover-bundled-third-party-lic.patch @@ -21,11 +21,11 @@ Upstream-Status: To upstream [not submitted from this automated port run; needs 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml -index 77760a6..cefc99f 100644 +index dbcdaa2..37d0044 100644 --- a/pyproject.toml +++ b/pyproject.toml -@@ -7,7 +7,7 @@ name = "pycurl" - description = "PycURL -- A Python Interface To The cURL library" +@@ -8,7 +8,7 @@ description = "PycURL -- A Python Interface To The cURL library" + readme = "README.rst" requires-python = ">=3.10" license = "LGPL-2.1-only OR MIT" -license-files = ["COPYING-LGPL", "COPYING-MIT"] @@ -33,3 +33,6 @@ index 77760a6..cefc99f 100644 keywords = ["curl", "libcurl", "urllib", "wget", "download", "file transfer", "http", "www"] authors = [ { name = "Kjetil Jacobsen", email = "kjetilja@gmail.com" }, +-- +2.43.0 + From 74759755f05033b9c7776d6e91b8cb2c49ce2b98 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sat, 31 Oct 2026 20:15:21 +0100 Subject: [PATCH 3/3] build-pycurl: install the test group when requirements-dev.txt is gone 7.49.0 replaced requirements-dev.txt with a `test` dependency group in pyproject.toml, so the before-test command failed on the missing file. Use the group when the file is absent, keeping the paramiko fallback for both. --- .github/workflows/build-pycurl.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-pycurl.yml b/.github/workflows/build-pycurl.yml index 6aa8a892eb2f..9ef321181412 100644 --- a/.github/workflows/build-pycurl.yml +++ b/.github/workflows/build-pycurl.yml @@ -153,10 +153,19 @@ jobs: # paramiko's cryptography/bcrypt deps have no riscv64 wheel below cp312; # fall back to the rest of the dev requirements so its sftp tests, which are # pytest.importorskip'd, skip instead of failing metadata generation. + # 7.49.0 replaced requirements-dev.txt with a `test` dependency group in + # pyproject.toml (`pip install --group test`); older releases still ship the file. CIBW_BEFORE_TEST_LINUX: >- - pip install flake8 -r {package}/requirements-dev.txt || - { grep -v '^paramiko' {package}/requirements-dev.txt > /tmp/requirements-dev.txt && - pip install flake8 -r /tmp/requirements-dev.txt; } && + if [ -f {package}/requirements-dev.txt ]; then + pip install flake8 -r {package}/requirements-dev.txt || + { grep -v '^paramiko' {package}/requirements-dev.txt > /tmp/requirements-dev.txt && + pip install flake8 -r /tmp/requirements-dev.txt; }; + else + pip install flake8 --group {package}/pyproject.toml:test || + { pip install tomli && + python -c "import tomli; print(*[r for r in tomli.load(open('{package}/pyproject.toml', 'rb'))['dependency-groups']['test'] if not r.startswith('paramiko')], sep='\n')" > /tmp/requirements-test.txt && + pip install flake8 -r /tmp/requirements-test.txt; }; + fi && make -C {package}/tests/fake-curl/libcurl CIBW_TEST_COMMAND: pytest -v -ra {project}/tests