[From nobody Wed Oct 21 03:13:09 2026
Received: (at submit) by bugs.debian.org; 3 Sep 2026 15:15:39 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-119.1 required=4.0 tests=ALL_TRUSTED,BAYES_00,
 BODY_INCLUDES_PACKAGE,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,
 DKIM_VALID_AU,DKIM_VALID_EF,FOURLA,FROMDEVELOPER,HAS_PACKAGE,
 MD5_SHA1_SUM,SPF_HELO_NONE,SPF_PASS,USER_IN_DKIM_WELCOMELIST
 autolearn=ham autolearn_force=no
 version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 61; hammy, 150; neutral, 155; spammy,
 0. spammytokens:
 hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
 0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
 0.000-+--H*RT:311, 0.000-+--H*RT:108
Return-path: &lt;maxy@debian.org&gt;
Received: from stravinsky.debian.org ([2001:41b8:202:deb::311:108]:40566)
 by buxtehude.debian.org with esmtps
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;maxy@debian.org&gt;) id 1x29AA-002sp9-1q
 for submit@bugs.debian.org; Thu, 03 Sep 2026 15:15:39 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; 
 s=smtpauto.stravinsky;
 h=X-Debian-User:Content-Transfer-Encoding:Content-Type
 :MIME-Version:Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:
 Content-Description:In-Reply-To:References;
 bh=feVXdXe1KrI0pkS58zRktJCL2RrzOxGL5gN4sM1c0N4=; b=liT/HaYZby8e7SlOGmqvF2fTVe
 IX5WxSNrTA9fc3mj4QU5znW2rFeQlaVey4kI6NcR3IeYVz3qVWv25y6NK3N3bvGV7xxRP4kTnvtdL
 12QL9dvT0JAStFnvtD7klcrKtS6nQfsh+bBrNVbGDVw5HaUvCwNrw9AgoxPbWJxjY48PL3IsEW/fF
 hf8lK3KkbbLaRdYGbXzLPcHkCdPpK0RIUZg+puCYfxAwu5suhe4OdwXbLnkrgrxFxHmVdzq+vjWEg
 L3qw94adwliWF6p0cXPW6N68Bb/atfLsp2+DqM7a5WKK4i89HAANEG/wsg0n0xEvqk4aVzBG5f0o2
 sj/SQUVw==;
Received: from authenticated-user by stravinsky.debian.org with esmtpsa
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;maxy@debian.org&gt;) id 1x29A9-000ddT-1d;
 Thu, 03 Sep 2026 15:15:38 +0000
Date: Thu, 3 Sep 2026 17:15:36 +0200
From: Maximiliano Curia &lt;maxy@debian.org&gt;
To: submit@bugs.debian.org
Cc: debian-python@lists.debian.org
Subject: s2geometry: FTBFS against python 3.14 and 3.15rc1
Message-ID: &lt;apmPGK9Rg-8aHlxO@hecuba.gnuservers.com.ar&gt;
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=&quot;/GW7PPFaznd7tNFQ&quot;
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-Debian-User: maxy
Delivered-To: submit@bugs.debian.org

--/GW7PPFaznd7tNFQ
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Package: src:s2geometry
Version: 0.10.0-6
User: debian-python@lists.debian.org
Usertags: python3.15
Tags: patch, ftbfs, forky, sid
Severity: serious

Hi!

While rebuilding the python related packages against the Python 3.15rc1
version we found that s2geometry fails to build from source [1]. And it
also fails on Debian buildds, as it fails for 3.14 as well [2].

One of the many errors:

/build/reproducible-path/s2geometry-0.10.0/.pybuild/cpython3_3.14/build/python/CMakeFiles/_pywraps2.dir/s2PYTHON_wrap.cxx:18298:9:
error: ‘SWIG_Python_TypeError’ was not declared in this scope; did you
mean ‘SWIG_Python_TypeQuery’?

As upstream points out in its fix SWIG_Python_TypeError was removed in
SWIG 4.4, so the .i file needs to be updated.

I applied the upstream fix [4] in the sandbox [3] to be able to build the packages
that depend on s2geometry, please consider applying the patch to support
the upcoming 3.15 version.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4243268/
[2]: https://buildd.debian.org/status/fetch.php?pkg=s2geometry&amp;arch=amd64&amp;ver=0.10.0-6.1%2Bb2&amp;stamp=1711976885&amp;raw=0
[3]: https://debusine.debian.net/debian/r-python-python3.15/
[4]: https://github.com/google/s2geometry/issues/487

-- 
&quot;Can you imagine what I would do if I could do all I can?&quot; -- Sun Tzu
Saludos /\/\ /\ &gt;&lt; `/

--/GW7PPFaznd7tNFQ
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
	filename=0005-SWIG-Ensure-SWIG-4.4-compatibility.patch
Content-Transfer-Encoding: quoted-printable

=46rom 33c202ab7ae4f1e508371c3df65f2eb2fa5143d8 Mon Sep 17 00:00:00 2001
=46rom: Jesse Rosenstock &lt;jmr@google.com&gt;
Date: Tue, 6 Jan 2026 11:30:23 +0100
Subject: [PATCH] SWIG: Ensure SWIG 4.4 compatibility (#510)

SWIG_Python_TypeError was removed in SWIG 4.4.
Use %argument_fail instead.

Fixes https://github.com/google/s2geometry/issues/487.

Origin: upstream, commit:33c202a
---
 src/python/s2_common.i | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/src/python/s2_common.i b/src/python/s2_common.i
index ba56bf8..3445511 100755
--- a/src/python/s2_common.i
+++ b/src/python/s2_common.i
@@ -103,29 +103,29 @@
 %apply int *OUTPUT {int *orientation};
 %apply SWIGTYPE *DISOWN {S2Loop *loop_disown};
=20
-%typemap(in) std::vector&lt;S2Loop *&gt; * (std::vector&lt;S2Loop *&gt; loops){
-  PyObject *element(nullptr);
-  PyObject *iterator(PyObject_GetIter($input));
-  if (!iterator) {
-    SWIG_fail;
-  }
-  int i(0);
-  while ((element =3D PyIter_Next(iterator))) {
-    i++;
-    S2Loop *loop(nullptr);
-    int res(SWIG_ConvertPtr(element, (void **)&amp;loop, $descriptor(S2Loop *)=
, 0));
-    if (SWIG_IsOK(res)) {
-      loops.push_back(loop-&gt;Clone());
-    } else {
-      SWIG_Python_TypeError(SWIG_TypePrettyName($descriptor(S2Loop *)), el=
ement);
-      SWIG_Python_ArgFail(i);
-      Py_DECREF(element);
-      Py_DECREF(iterator);
-      SWIG_fail;
-    }
-    Py_DECREF(element);
-  }
-  Py_DECREF(iterator);
+%typemap(in) std::vector&lt;S2Loop *&gt; * (std::vector&lt;S2Loop *&gt; loops) {
+  PyObject *iter =3D PyObject_GetIter($input);
+  if (iter =3D=3D nullptr) {
+    %argument_fail(SWIG_TypeError, &quot;iterable of S2Loop *&quot;, $symname, $argn=
um);
+  }
+
+  for (PyObject *elem; (elem =3D PyIter_Next(iter)); Py_DECREF(elem)) {
+    S2Loop *loop =3D nullptr;
+    int res =3D SWIG_ConvertPtr(
+        elem, reinterpret_cast&lt;void **&gt;(&amp;loop), $descriptor(S2Loop *),
+        SWIG_POINTER_NO_NULL);
+
+    if (!SWIG_IsOK(res)) {
+      Py_DECREF(elem);
+      Py_DECREF(iter);
+      for (S2Loop *loop : loops) delete loop;
+      %argument_fail(res, &quot;$type&quot;, $symname, $argnum);
+    }
+
+    loops.push_back(loop-&gt;Clone());
+  }
+
+  Py_DECREF(iter);
   $1 =3D &loops;
 }
=20

--/GW7PPFaznd7tNFQ--
]