guix_mirror_bot pushed a commit to branch python-team
in repository guix.

commit 405f6168146ec183d9cf71eb8b055d34c708bb0a
Author: Nicolas Graves <[email protected]>
AuthorDate: Mon Jan 26 23:08:31 2026 +0100

    gnu: dblatex: Fix build with [email protected].
    
    * gnu/packages/patches/dblatex-importlib.patch: New file.
    * gnu/packages/docbook.scm (dblatex)[origin]<patches>: Record patch.
    * gnu/local.mk: Record patch.
---
 gnu/local.mk                                 |   1 +
 gnu/packages/docbook.scm                     |   3 +-
 gnu/packages/patches/dblatex-importlib.patch | 134 +++++++++++++++++++++++++++
 3 files changed, 137 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index e619ab688c..10bac61d1e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1164,6 +1164,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/date-output-pkg-config-files.patch      \
   %D%/packages/patches/dbacl-include-locale.h.patch            \
   %D%/packages/patches/dbacl-icheck-multiple-definitions.patch \
+  %D%/packages/patches/dblatex-importlib.patch         \
   %D%/packages/patches/dblatex-inkscape-1.0.patch              \
   %D%/packages/patches/dbus-helper-search-path.patch           \
   %D%/packages/patches/dbus-hurd.patch                         \
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 260e4cf10d..09f957a892 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -666,7 +666,8 @@ the in DocBook SGML DTDs.")
                (base32
                 "0yd09nypswy3q4scri1dg7dr99d7gd6r2dwx0xm81l9f4y32gs0n"))
               (patches
-               (search-patches "dblatex-inkscape-1.0.patch"))))
+               (search-patches "dblatex-importlib.patch"
+                               "dblatex-inkscape-1.0.patch"))))
     (outputs '("out" "doc"))
     (build-system pyproject-build-system)
     (arguments
diff --git a/gnu/packages/patches/dblatex-importlib.patch 
b/gnu/packages/patches/dblatex-importlib.patch
new file mode 100644
index 0000000000..640445e302
--- /dev/null
+++ b/gnu/packages/patches/dblatex-importlib.patch
@@ -0,0 +1,134 @@
+From 0094f13cf133c575d26b61a0b23351e085fb6142 Mon Sep 17 00:00:00 2001
+Message-ID: 
<0094f13cf133c575d26b61a0b23351e085fb6142.1769464831.git.ngra...@ngraves.fr>
+From: Nicolas Graves <[email protected]>
+Date: Mon, 26 Jan 2026 22:59:33 +0100
+Subject: [PATCH] Replace imp with importlib
+
+Combining
+https://sourceforge.net/p/dblatex/patches/12/attachment/dblatex-0.3.12-replace-imp-by-importlib.patch
+https://sourceforge.net/p/dblatex/patches/13/attachment/dblatex-0.3.12-adjust-submodule-imports.patch
+---
+ lib/dbtexmf/core/dbtex.py              | 20 ++++++++++----------
+ lib/dbtexmf/dblatex/grubber/plugins.py | 20 ++++++++++----------
+ lib/dbtexmf/xslt/xslt.py               | 24 +++++++++++++-----------
+ 3 files changed, 33 insertions(+), 31 deletions(-)
+
+diff --git a/lib/dbtexmf/core/dbtex.py b/lib/dbtexmf/core/dbtex.py
+index b3ec732..4cf9591 100644
+--- a/lib/dbtexmf/core/dbtex.py
++++ b/lib/dbtexmf/core/dbtex.py
+@@ -15,7 +15,8 @@ try:
+ except ImportError:
+     from urllib.request import pathname2url
+ import glob
+-import imp
++import importlib.machinery
++import importlib.util
+ from optparse import OptionParser
+ from io import open
+ 
+@@ -540,15 +541,14 @@ class DbTexCommand:
+ 
+     def load_plugin(self, pathname):
+         moddir, modname = os.path.split(pathname)
+-        try:
+-            filemod, path, descr = imp.find_module(modname, [moddir])
+-        except ImportError:
+-            try:
+-                filemod, path, descr = imp.find_module(modname)
+-            except ImportError:
+-                failed_exit("Error: '%s' module not found" % modname)
+-        mod = imp.load_module(modname, filemod, path, descr)
+-        filemod.close()
++        spec = importlib.machinery.PathFinder.find_spec(modname, [moddir])
++        if not spec:
++            spec = importlib.machinery.PathFinder.find_spec(modname)
++        if not spec:
++            failed_exit("Error: '%s' module not found" % modname)
++        mod = importlib.util.module_from_spec(spec)
++        spec.loader.exec_module(mod)
++        sys.modules[modname] = mod
+         return mod
+ 
+     def run_setup(self, options):
+diff --git a/lib/dbtexmf/dblatex/grubber/plugins.py 
b/lib/dbtexmf/dblatex/grubber/plugins.py
+index 9e333c9..6b4ecb4 100644
+--- a/lib/dbtexmf/dblatex/grubber/plugins.py
++++ b/lib/dbtexmf/dblatex/grubber/plugins.py
+@@ -4,7 +4,8 @@
+ Mechanisms to dynamically load extra modules to help the LaTeX compilation.
+ All the modules must be derived from the TexModule class.
+ """
+-import imp
++import importlib.machinery
++import importlib.util
+ 
+ from os.path import *
+ from dbtexmf.dblatex.grubber.msg import _, msg
+@@ -108,17 +109,16 @@ class Plugins (object):
+         """
+         if name in self.modules:
+             return 2
+-        try:
+-            file, path, descr = imp.find_module(name, [""])
+-        except ImportError:
++        spec = importlib.machinery.PathFinder.find_spec(name, [""])
++        if not spec:
+             if not self.path:
+                 return 0
+-            try:
+-                file, path, descr = imp.find_module(name, self.path)
+-            except ImportError:
+-                return 0
+-        module = imp.load_module(name, file, path, descr)
+-        file.close()
++            spec = importlib.machinery.PathFinder.find_spec(name, self.path)
++        if not spec:
++            return 0
++        module = importlib.util.module_from_spec(spec)
++        spec.loader.exec_module(module)
++        sys.modules[name] = module
+         self.modules[name] = module
+         return 1
+ 
+diff --git a/lib/dbtexmf/xslt/xslt.py b/lib/dbtexmf/xslt/xslt.py
+index 0350e30..7cc2038 100644
+--- a/lib/dbtexmf/xslt/xslt.py
++++ b/lib/dbtexmf/xslt/xslt.py
+@@ -2,20 +2,22 @@
+ # Very simple plugin loader for Xslt classes
+ #
+ import os
+-import imp
++import importlib.machinery
++import importlib.util
+ import glob
++import sys
+ 
+ def load(modname):
+-    try:
+-        file, path, descr = imp.find_module(modname, [""])
+-    except ImportError:
+-        try:
+-            file, path, descr = imp.find_module(modname,
+-                                                [os.path.dirname(__file__)])
+-        except ImportError:
+-            raise ValueError("Xslt '%s' not found" % modname)
+-    mod = imp.load_module(modname, file, path, descr)
+-    file.close()
++    spec = importlib.machinery.PathFinder.find_spec(modname, [""])
++    if not spec:
++        spec = importlib.machinery.PathFinder.find_spec(modname,
++                                                        
[os.path.dirname(__file__)])
++    if not spec:
++        raise ValueError("Xslt '%s' not found" % modname)
++
++    mod = importlib.util.module_from_spec(spec)
++    spec.loader.exec_module(mod)
++    sys.modules[modname] = mod
+     o = mod.Xslt()
+     return o
+ 
+-- 
+2.52.0
+

Reply via email to