git: 2db969b4413e - main - dns/py-ldns: Fix build with swig 4.2.0+

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Sat, 13 Jul 2024 20:42:01 UTC
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2db969b4413e91ca9c4ff0a323184fd618e80dec

commit 2db969b4413e91ca9c4ff0a323184fd618e80dec
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2024-07-13 20:18:58 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2024-07-13 20:18:58 +0000

    dns/py-ldns: Fix build with swig 4.2.0+
    
    PR:             279489
    Obtained from:  https://github.com/NLnetLabs/ldns/pull/231
---
 dns/ldns/files/patch-swig | 64 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/dns/ldns/files/patch-swig b/dns/ldns/files/patch-swig
new file mode 100644
index 000000000000..4d5ae635fbc4
--- /dev/null
+++ b/dns/ldns/files/patch-swig
@@ -0,0 +1,64 @@
+Obtained from:	https://github.com/NLnetLabs/ldns/pull/231
+
+--- contrib/python/ldns_rdf.i.orig	2022-08-15 10:38:22 UTC
++++ contrib/python/ldns_rdf.i
+@@ -50,6 +50,7 @@
+       SWIGTYPE_p_ldns_struct_rdf, SWIG_POINTER_OWN | 0));
+ }
+ 
++#if SWIG_VERSION < 0x040200
+ /*
+  * Automatic conversion of const (ldns_rdf *) parameter from string.
+  * Argument default value.
+@@ -95,6 +96,51 @@
+     SWIG_Python_str_DelForPy3($1_str); /* Is a empty macro for Python < 3. */
+   }
+ }
++
++#else
++/*
++ * Automatic conversion of const (ldns_rdf *) parameter from string.
++ * Argument default value.
++ */
++%typemap(arginit, noblock=1) const ldns_rdf *
++{
++  PyObject *$1_bytes = NULL;
++}
++
++/*
++ * Automatic conversion of const (ldns_rdf *) parameter from string.
++ * Preparation of arguments.
++ */
++%typemap(in, noblock=1) const ldns_rdf * (void* argp, $1_ltype tmp = 0, int res)
++{
++  if (Python_str_Check($input)) {
++    const char *$1_str = SWIG_PyUnicode_AsUTF8AndSize($input, NULL, &$1_bytes);
++    if ($1_str == NULL) {
++      %argument_fail(SWIG_TypeError, "char *", $symname, $argnum);
++    }
++    tmp = ldns_dname_new_frm_str($1_str);
++    if (tmp == NULL) {
++      %argument_fail(SWIG_TypeError, "char *", $symname, $argnum);
++    }
++    $1 = ($1_ltype) tmp;
++  } else {
++    res = SWIG_ConvertPtr($input, &argp, SWIGTYPE_p_ldns_struct_rdf, 0 | 0);
++    if (!SWIG_IsOK(res)) {
++      %argument_fail(res, "ldns_rdf const *", $symname, $argnum);
++    }
++    $1 = ($1_ltype) argp;
++  }
++}
++
++/*
++ * Automatic conversion of const (ldns_rdf *) parameter from string.
++ * Freeing of allocated memory (it's a no op unless compiling for some older versions of the Python stable ABI).
++ */
++%typemap(freearg, noblock=1) const ldns_rdf *
++{
++  Py_XDECREF($1_bytes);
++}
++#endif
+ 
+ %nodefaultctor ldns_struct_rdf; /* No default constructor. */
+ %nodefaultdtor ldns_struct_rdf; /* No default destructor. */