user [email protected] usertags 1080647 python3.15 tags 1080647 patch thanks
Hi! While rebuilding the python related packages against the Python 3.15rc2 version we found that libprelude fails to build from source [1]. There have been two RC bugs reported to libprelude for 2 years (this one and #1081473), but unfortunately they haven't been taken care of. As was discussed in #1081473, this package would be a good candidate for removal, but I've taken the time to get it back to building successfully. There are a bunch of changes that I had to do: - Avoid using distutils, replace with setuptools (what this bug report was originally about). - PyEval_CallObject was removed in favor of PyObject_CallObject (as mentioned in #1081473) - PyWeakref_GET_OBJECT was removed in favor of PyWeakref_GetRef - Patch to guard check of alignof and alignas, this is because alignof and alignas are keywords, not macros, in C23 I've applied these fixes in the sandbox [2] to verify that it builds successfully. Now, regarding what to do next, either libprelude should be fixed with these patches or it should be removed from the archive together with its dependencies. Happy hacking, [1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4587696/ [2]: https://debusine.debian.net/debian/r-python-python3.15/ -- "Can you imagine what I would do if I could do all I can?" -- Sun Tzu Saludos /\/\ /\ >< `/
diff -Nru libprelude-5.2.0/debian/changelog libprelude-5.2.0/debian/changelog --- libprelude-5.2.0/debian/changelog 2024-08-09 02:03:31.000000000 +0200 +++ libprelude-5.2.0/debian/changelog 2026-09-08 11:12:56.000000000 +0200 @@ -1,3 +1,13 @@ +libprelude (5.2.0-5.7) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add patch 026-python-3.15-compatibility.patch + * Add patch 028-fix-test-stdalign-c23.patch + * Add build-dependency on python3-setuptools + * Refresh patches + + -- Maximiliano Curia <[email protected]> Tue, 08 Sep 2026 11:12:56 +0200 + libprelude (5.2.0-5.6) unstable; urgency=medium * Non-maintainer upload. diff -Nru libprelude-5.2.0/debian/control libprelude-5.2.0/debian/control --- libprelude-5.2.0/debian/control 2024-04-28 01:13:06.000000000 +0200 +++ libprelude-5.2.0/debian/control 2026-09-08 11:12:56.000000000 +0200 @@ -17,6 +17,7 @@ perl-xs-dev <!noperl>, libpython3-all-dev <!nopython>, python3-all-dev:any <!nopython>, + python3-setuptools <!nopython>, ruby-all-dev <!noruby>, swig <!nopython> <!noperl> <!noruby> <!nolua>, Build-Depends-Indep: gtk-doc-tools, libglib2.0-dev diff -Nru libprelude-5.2.0/debian/patches/005-fix_pthread_atfork.patch libprelude-5.2.0/debian/patches/005-fix_pthread_atfork.patch --- libprelude-5.2.0/debian/patches/005-fix_pthread_atfork.patch 2024-04-28 01:13:06.000000000 +0200 +++ libprelude-5.2.0/debian/patches/005-fix_pthread_atfork.patch 2026-09-08 11:12:56.000000000 +0200 @@ -3,9 +3,11 @@ Last-Update: 2019-09-13 Forwarded: https://www.prelude-siem.org/issues/885 ---- libprelude-5.0.0/prelude-admin/Makefile.am 2016-09-15 08:49:10.785000884 +0200 -+++ libprelude-5.0.0/prelude-admin/Makefile.am 2017-04-25 23:55:55.141482528 +0200 -@@ -7,7 +7,7 @@ +Index: libprelude/prelude-admin/Makefile.am +=================================================================== +--- libprelude.orig/prelude-admin/Makefile.am ++++ libprelude/prelude-admin/Makefile.am +@@ -7,7 +7,7 @@ prelude_admin_LDADD = $(top_builddir)/sr $(top_builddir)/src/variable.lo \ $(top_builddir)/src/libprelude.la \ @PRELUDE_ADMIN_LIBS@ \ @@ -14,9 +16,11 @@ prelude_admin_SOURCES = \ ---- libprelude-5.0.0/src/libprelude-error/Makefile.am 2016-09-15 08:49:10.805000884 +0200 -+++ libprelude-5.0.0/src/libprelude-error/Makefile.am 2017-04-25 23:57:02.636949645 +0200 -@@ -14,7 +14,7 @@ +Index: libprelude/src/libprelude-error/Makefile.am +=================================================================== +--- libprelude.orig/src/libprelude-error/Makefile.am ++++ libprelude/src/libprelude-error/Makefile.am +@@ -14,7 +14,7 @@ CLEANFILES = err-sources.h err-codes.h c nodist_include_HEADERS = prelude-error.h noinst_LTLIBRARIES = libprelude-error.la @@ -25,9 +29,11 @@ libprelude_error_la_LDFLAGS = -no-undefined libprelude_error_la_SOURCES = prelude-error.h prelude-error.c strsource.c strerror.c ---- libprelude-5.0.0/src/Makefile.am 2018-12-23 21:59:17.870000000 +0100 -+++ libprelude-5.0.0/src/Makefile.am 2019-02-26 23:49:47.973788402 +0100 -@@ -9,7 +9,7 @@ +Index: libprelude/src/Makefile.am +=================================================================== +--- libprelude.orig/src/Makefile.am ++++ libprelude/src/Makefile.am +@@ -9,7 +9,7 @@ DISTCLEANFILES = $(pkgconfig_DATA) idmef libpreludeincludedir = $(includedir)/ libprelude_la_LIBADD = @LIBPRELUDE_LIBS@ $(LIBLTDL) $(top_builddir)/libmissing/libmissing.la libprelude-error/libprelude-error.la @@ -36,9 +42,11 @@ lib_LTLIBRARIES = libprelude.la BUILT_SOURCES = $(LTDLDEPS) ---- libprelude-5.0.0/src/Makefile.in 2018-12-23 22:01:04.767000000 +0100 -+++ libprelude-5.0.0/src/Makefile.in 2019-02-26 23:56:08.385091987 +0100 -@@ -1132,7 +1132,7 @@ +Index: libprelude/src/Makefile.in +=================================================================== +--- libprelude.orig/src/Makefile.in ++++ libprelude/src/Makefile.in +@@ -1132,7 +1132,7 @@ LIBPTH_PREFIX = @LIBPTH_PREFIX@ LIBS = @LIBS@ LIBSOCKET = @LIBSOCKET@ LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ @@ -47,7 +55,7 @@ LIBTOOL = @LIBTOOL@ LIB_NANOSLEEP = @LIB_NANOSLEEP@ LIB_POLL = @LIB_POLL@ -@@ -1156,7 +1156,7 @@ +@@ -1156,7 +1156,7 @@ LTLIBINTL = @LTLIBINTL@ LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ LTLIBOBJS = @LTLIBOBJS@ LTLIBPTH = @LTLIBPTH@ @@ -56,7 +64,7 @@ LT_CONFIG_H = @LT_CONFIG_H@ LT_DLLOADERS = @LT_DLLOADERS@ LT_DLPREOPEN = @LT_DLPREOPEN@ -@@ -1553,7 +1553,7 @@ +@@ -1556,7 +1556,7 @@ pkgconfig_DATA = libprelude.pc DISTCLEANFILES = $(pkgconfig_DATA) idmef-criteria-string.yac.h idmef-criteria-string.lex.c idmef-criteria-string.yac.c libpreludeincludedir = $(includedir)/ libprelude_la_LIBADD = @LIBPRELUDE_LIBS@ $(LIBLTDL) $(top_builddir)/libmissing/libmissing.la libprelude-error/libprelude-error.la @@ -65,38 +73,42 @@ lib_LTLIBRARIES = libprelude.la BUILT_SOURCES = $(LTDLDEPS) AM_YFLAGS = -d ---- libprelude-5.0.0/prelude-admin/Makefile.in 2019-02-26 23:58:08.154668826 +0100 -+++ libprelude-5.0.0/prelude-admin/Makefile.in 2019-02-26 23:57:12.940785905 +0100 -@@ -1062,7 +1062,7 @@ +Index: libprelude/prelude-admin/Makefile.in +=================================================================== +--- libprelude.orig/prelude-admin/Makefile.in ++++ libprelude/prelude-admin/Makefile.in +@@ -1062,7 +1062,7 @@ LIBPTH_PREFIX = @LIBPTH_PREFIX@ LIBS = @LIBS@ LIBSOCKET = @LIBSOCKET@ LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ -+LIBMULTITHREAD = @LIBMULTITHREAD@ -LIBTHREAD = @LIBTHREAD@ ++LIBMULTITHREAD = @LIBMULTITHREAD@ LIBTOOL = @LIBTOOL@ LIB_NANOSLEEP = @LIB_NANOSLEEP@ LIB_POLL = @LIB_POLL@ -@@ -1086,7 +1086,7 @@ +@@ -1086,7 +1086,7 @@ LTLIBINTL = @LTLIBINTL@ LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ LTLIBOBJS = @LTLIBOBJS@ LTLIBPTH = @LTLIBPTH@ -+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ -LTLIBTHREAD = @LTLIBTHREAD@ ++LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ LT_CONFIG_H = @LT_CONFIG_H@ LT_DLLOADERS = @LT_DLLOADERS@ LT_DLPREOPEN = @LT_DLPREOPEN@ -@@ -1480,7 +1480,7 @@ +@@ -1483,7 +1483,7 @@ prelude_admin_LDADD = $(top_builddir)/sr $(top_builddir)/src/variable.lo \ $(top_builddir)/src/libprelude.la \ @PRELUDE_ADMIN_LIBS@ \ -+ ../libmissing/libmissing.la $(GETADDRINFO_LIB) $(GETHOSTNAME_LIB) $(HOSTENT_LIB) $(INET_NTOP_LIB) $(INET_PTON_LIB) $(LIBSOCKET) $(LIB_POLL) $(LIB_SELECT) $(LTLIBINTL) $(LTLIBMULTITHREAD) $(SERVENT_LIB) - ../libmissing/libmissing.la $(GETADDRINFO_LIB) $(GETHOSTNAME_LIB) $(HOSTENT_LIB) $(INET_NTOP_LIB) $(INET_PTON_LIB) $(LIBSOCKET) $(LIB_POLL) $(LIB_SELECT) $(LTLIBINTL) $(LTLIBTHREAD) $(SERVENT_LIB) ++ ../libmissing/libmissing.la $(GETADDRINFO_LIB) $(GETHOSTNAME_LIB) $(HOSTENT_LIB) $(INET_NTOP_LIB) $(INET_PTON_LIB) $(LIBSOCKET) $(LIB_POLL) $(LIB_SELECT) $(LTLIBINTL) $(LTLIBMULTITHREAD) $(SERVENT_LIB) prelude_admin_SOURCES = \ prelude-admin.c \ ---- libprelude-5.0.0/src/libprelude-error/Makefile.in 2018-12-23 22:01:05.090000000 +0100 -+++ libprelude-5.0.0/src/libprelude-error/Makefile.in 2019-02-27 00:00:34.842539289 +0100 -@@ -1053,7 +1053,7 @@ +Index: libprelude/src/libprelude-error/Makefile.in +=================================================================== +--- libprelude.orig/src/libprelude-error/Makefile.in ++++ libprelude/src/libprelude-error/Makefile.in +@@ -1053,7 +1053,7 @@ LIBPTH_PREFIX = @LIBPTH_PREFIX@ LIBS = @LIBS@ LIBSOCKET = @LIBSOCKET@ LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ @@ -105,7 +117,7 @@ LIBTOOL = @LIBTOOL@ LIB_NANOSLEEP = @LIB_NANOSLEEP@ LIB_POLL = @LIB_POLL@ -@@ -1077,7 +1077,7 @@ +@@ -1077,7 +1077,7 @@ LTLIBINTL = @LTLIBINTL@ LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ LTLIBOBJS = @LTLIBOBJS@ LTLIBPTH = @LTLIBPTH@ @@ -114,7 +126,7 @@ LT_CONFIG_H = @LT_CONFIG_H@ LT_DLLOADERS = @LT_DLLOADERS@ LT_DLPREOPEN = @LT_DLPREOPEN@ -@@ -1477,7 +1477,7 @@ +@@ -1480,7 +1480,7 @@ CLEANFILES = err-sources.h err-codes.h c nodist_include_HEADERS = prelude-error.h noinst_LTLIBRARIES = libprelude-error.la diff -Nru libprelude-5.2.0/debian/patches/006-fix_timegm.patch libprelude-5.2.0/debian/patches/006-fix_timegm.patch --- libprelude-5.2.0/debian/patches/006-fix_timegm.patch 2024-04-28 01:13:06.000000000 +0200 +++ libprelude-5.2.0/debian/patches/006-fix_timegm.patch 2026-09-08 11:12:56.000000000 +0200 @@ -3,9 +3,11 @@ Last-Update: 2017-02-28 Forwarded: https://www.prelude-siem.org/issues/865 ---- libprelude-3.1.0/src/idmef-criterion-value.c 2016-12-04 22:36:21.364349964 +0100 -+++ libprelude-3.1.0/src/idmef-criterion-value.c 2016-12-04 22:37:40.770573582 +0100 -@@ -194,22 +194,22 @@ +Index: libprelude/src/idmef-criterion-value.c +=================================================================== +--- libprelude.orig/src/idmef-criterion-value.c ++++ libprelude/src/idmef-criterion-value.c +@@ -207,22 +207,22 @@ static int do_btime_match(const idmef_cr /* * Apply mask */ diff -Nru libprelude-5.2.0/debian/patches/008-disable_test-poll_on_kfreebsd.patch libprelude-5.2.0/debian/patches/008-disable_test-poll_on_kfreebsd.patch --- libprelude-5.2.0/debian/patches/008-disable_test-poll_on_kfreebsd.patch 2024-04-28 01:13:06.000000000 +0200 +++ libprelude-5.2.0/debian/patches/008-disable_test-poll_on_kfreebsd.patch 2026-09-08 11:12:56.000000000 +0200 @@ -3,9 +3,11 @@ Last-Update: 2017-06-22 Forwarded: not-needed ---- libprelude-3.1.0/libmissing/tests/test-poll.c 2016-09-15 02:49:10.775000884 -0400 -+++ libprelude-3.1.0/libmissing/tests/test-poll.c 2017-06-25 12:18:46.997120157 -0400 -@@ -370,6 +370,10 @@ +Index: libprelude/libmissing/tests/test-poll.c +=================================================================== +--- libprelude.orig/libmissing/tests/test-poll.c ++++ libprelude/libmissing/tests/test-poll.c +@@ -366,6 +366,10 @@ main () { int result; diff -Nru libprelude-5.2.0/debian/patches/020-ruby27.patch libprelude-5.2.0/debian/patches/020-ruby27.patch --- libprelude-5.2.0/debian/patches/020-ruby27.patch 2024-04-28 01:13:06.000000000 +0200 +++ libprelude-5.2.0/debian/patches/020-ruby27.patch 2026-09-08 11:12:56.000000000 +0200 @@ -3,9 +3,11 @@ Last-Update: 2020-03-23 Forwarded: yes, privately ---- libprelude-5.1.1/bindings/ruby/Prelude.cxx 2019-10-15 05:33:03.117000000 +0900 -+++ libprelude-5.1.1/bindings/ruby/Prelude.cxx 2020-01-19 20:13:37.324557838 +0900 -@@ -1260,7 +1260,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrac +Index: libprelude/bindings/ruby/Prelude.cxx +=================================================================== +--- libprelude.orig/bindings/ruby/Prelude.cxx ++++ libprelude/bindings/ruby/Prelude.cxx +@@ -1264,7 +1264,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrac swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value); } diff -Nru libprelude-5.2.0/debian/patches/026-python-3.15-compatibility.patch libprelude-5.2.0/debian/patches/026-python-3.15-compatibility.patch --- libprelude-5.2.0/debian/patches/026-python-3.15-compatibility.patch 1970-01-01 01:00:00.000000000 +0100 +++ libprelude-5.2.0/debian/patches/026-python-3.15-compatibility.patch 2026-09-08 11:12:56.000000000 +0200 @@ -0,0 +1,122 @@ +Description: Fix compatibility with Python 3.15 +Author: Maximiliano Curia <[email protected]> +Last-Update: 2026-09-08 + +Index: libprelude/bindings/python/_prelude.cxx +=================================================================== +--- libprelude.orig/bindings/python/_prelude.cxx ++++ libprelude/bindings/python/_prelude.cxx +@@ -2008,7 +2008,14 @@ SWIG_Python_GetSwigThis(PyObject *pyobj) + (void)obj; + # ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { ++#if PY_VERSION_HEX >= 0x030d0000 ++ if (PyWeakref_GetRef(pyobj, &pyobj) > 0) ++ Py_DECREF(pyobj); ++ else ++ pyobj = NULL; ++#else + pyobj = PyWeakref_GET_OBJECT(pyobj); ++#endif + if (pyobj && SwigPyObject_Check(pyobj)) + return (SwigPyObject*) pyobj; + } +@@ -2029,8 +2036,18 @@ SWIG_Python_GetSwigThis(PyObject *pyobj) + } else { + #ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { ++#if PY_VERSION_HEX >= 0x030d0000 ++ PyObject *wobj; ++ if (PyWeakref_GetRef(pyobj, &wobj) > 0) { ++ SwigPyObject *sobj = SWIG_Python_GetSwigThis(wobj); ++ Py_DECREF(wobj); ++ return sobj; ++ } ++ return 0; ++#else + PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); + return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; ++#endif + } + #endif + obj = PyObject_GetAttr(pyobj,SWIG_This()); +@@ -4112,7 +4129,7 @@ static void _cb_python_log(int level, co + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + + arglist = Py_BuildValue("(i,s)", level, str); +- result = PyEval_CallObject(__prelude_log_func, arglist); ++ result = PyObject_CallObject(__prelude_log_func, arglist); + + Py_DECREF(arglist); + Py_XDECREF(result); +Index: libprelude/bindings/python/libpreludecpp-python.i +=================================================================== +--- libprelude.orig/bindings/python/libpreludecpp-python.i ++++ libprelude/bindings/python/libpreludecpp-python.i +@@ -86,7 +86,7 @@ static void _cb_python_log(int level, co + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + + arglist = Py_BuildValue("(i,s)", level, str); +- result = PyEval_CallObject(__prelude_log_func, arglist); ++ result = PyObject_CallObject(__prelude_log_func, arglist); + + Py_DECREF(arglist); + Py_XDECREF(result); +Index: libprelude/bindings/python/setup.py.in +=================================================================== +--- libprelude.orig/bindings/python/setup.py.in ++++ libprelude/bindings/python/setup.py.in +@@ -23,15 +23,15 @@ import sys, os + from os.path import abspath, exists + import shutil + +-from distutils.sysconfig import get_python_lib +-from distutils.core import setup, Extension ++import sysconfig ++from setuptools import setup, Extension + + FILES_TO_BE_COPIED = ("_prelude.cxx", "prelude.py") + + + def split_args(s): + import re +- return re.split("\s+", s.strip()) ++ return re.split(r"\s+", s.strip()) + + + def get_prefix(): +@@ -49,7 +49,7 @@ def get_root(): + + + def is_system_wide_install(): +- return os.access(get_python_lib(), os.W_OK) ++ return os.access(sysconfig.get_path('purelib'), os.W_OK) + + + def builddir_is_srcdir(): +@@ -83,10 +83,10 @@ def uninstall(): + prefix = "@prefix@" + + for f in "prelude.py", "prelude.pyc", "_prelude.so": +- file = get_root() + "/" + get_python_lib(prefix=prefix) + "/" + f ++ file = get_root() + "/" + sysconfig.get_path('purelib', vars={'base': prefix}) + "/" + f + exists(file) and os.remove(file) + +- file = get_root() + "/" + get_python_lib(plat_specific=True, prefix=prefix) + "/" + f ++ file = get_root() + "/" + sysconfig.get_path('platlib', vars={'platbase': prefix}) + "/" + f + exists(file) and os.remove(file) + + sys.exit(0) +Index: libprelude/configure.ac +=================================================================== +--- libprelude.orig/configure.ac ++++ libprelude/configure.ac +@@ -520,7 +520,7 @@ if test x$with_python3 != xno; then + with_python3=no + else + old_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-I`$PYTHON3 -c 'from distutils.sysconfig import get_python_inc; print(get_python_inc())'`" ++ CPPFLAGS="-I`$PYTHON3 -c 'import sysconfig; print(sysconfig.get_path(\"include\"))'`" + + AC_CHECK_HEADER(Python.h, with_python3=yes, with_python3=no) + CPPFLAGS="$old_CPPFLAGS" diff -Nru libprelude-5.2.0/debian/patches/028-fix-test-stdalign-c23.patch libprelude-5.2.0/debian/patches/028-fix-test-stdalign-c23.patch --- libprelude-5.2.0/debian/patches/028-fix-test-stdalign-c23.patch 1970-01-01 01:00:00.000000000 +0100 +++ libprelude-5.2.0/debian/patches/028-fix-test-stdalign-c23.patch 2026-09-08 11:12:56.000000000 +0200 @@ -0,0 +1,36 @@ +Description: Fix test-stdalign for C23 / GCC 15+ +Author: Maximiliano Curia <[email protected]> +Last-Update: 2026-09-08 + +Index: libprelude/libmissing/tests/test-stdalign.c +=================================================================== +--- libprelude.orig/libmissing/tests/test-stdalign.c ++++ libprelude/libmissing/tests/test-stdalign.c +@@ -33,16 +33,21 @@ typedef struct { char a[2]; } struct2; + typedef struct { char a[3]; } struct3; + typedef struct { char a[4]; } struct4; + ++#if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 202311) && !defined __cplusplus + verify (__alignof_is_defined == 1); +-#ifndef alignof +-# error "alignof is not a macro" +-#endif ++# ifndef alignof ++# error "alignof is not a macro" ++# endif + +-#if __alignas_is_defined ++# if __alignas_is_defined + verify (__alignas_is_defined == 1); +-# ifndef alignas +-# error "alignas is not a macro" ++# ifndef alignas ++# error "alignas is not a macro" ++# endif + # endif ++#endif ++ ++#if __alignas_is_defined || (defined __STDC_VERSION__ && 202311 <= __STDC_VERSION__) || (defined __cplusplus && 201103 <= __cplusplus) + /* mingw can go up only to 8. 8 is all that GNU Emacs needs, so let's + limit the test to 8 for now. */ + # define TEST_ALIGNMENT 8 diff -Nru libprelude-5.2.0/debian/patches/series libprelude-5.2.0/debian/patches/series --- libprelude-5.2.0/debian/patches/series 2024-08-09 02:01:38.000000000 +0200 +++ libprelude-5.2.0/debian/patches/series 2026-09-08 11:12:56.000000000 +0200 @@ -11,7 +11,9 @@ 022-Fix_libprelude_pkg-config-file.patch 023-Disable_GnuLib_Tests_perror2_strerror.patch 024-Fix_Config_H.patch -025-Fix-PyIOBase_Type.patch cross.patch configure-Fix-va_copy-check-for-Wimplicit-function-declar.patch fix-idmef_class_get_child_attributes-ret.patch +025-Fix-PyIOBase_Type.patch +026-python-3.15-compatibility.patch +028-fix-test-stdalign-c23.patch

