From ca38fba0d877d3b0512d3119096d9db8254adaf48239b663433053a341315e49 Mon Sep 17 00:00:00 2001
From: Matej Cepl <mcepl@suse.com>
Date: Wed, 11 Aug 2021 18:07:24 +0000
Subject: [PATCH] * sphinx_4_compatibility.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-djvulibre?expand=0&rev=47
---
 python-djvulibre.changes                      |   2 +-
 python-djvulibre.spec                         |   9 +-
 sphinx_4_compatibility.patch                  |  14 ++
 ...c-project-layout-to-simplify-testing.patch | 206 ------------------
 4 files changed, 19 insertions(+), 212 deletions(-)
 create mode 100644 sphinx_4_compatibility.patch
 delete mode 100644 switch-to-src-project-layout-to-simplify-testing.patch

diff --git a/python-djvulibre.changes b/python-djvulibre.changes
index f28fb4c..4ddae3a 100644
--- a/python-djvulibre.changes
+++ b/python-djvulibre.changes
@@ -4,7 +4,7 @@ Mon Jul 26 09:25:12 UTC 2021 - Matej Cepl <mcepl@suse.com>
 - Port testing of the package to unittest, adding these patches:
   * remove-all-dependencies-on-nose-in-the-code.patch
   * remove-nose-in-documentation.patch
-  * switch-to-src-project-layout-to-simplify-testing.patch
+  * sphinx_4_compatibility.patch
 
 -------------------------------------------------------------------
 Mon Mar  8 13:48:17 UTC 2021 - Kyrill Detinov <lazy.kent@opensuse.org>
diff --git a/python-djvulibre.spec b/python-djvulibre.spec
index c28f399..9396c6d 100644
--- a/python-djvulibre.spec
+++ b/python-djvulibre.spec
@@ -27,12 +27,11 @@ URL:            http://jwilk.net/software/python-djvulibre
 Source0:        https://files.pythonhosted.org/packages/source/p/python-djvulibre/%{name}-%{version}.tar.gz
 Source1:        https://files.pythonhosted.org/packages/source/p/python-djvulibre/%{name}-%{version}.tar.gz.asc
 Source2:        %{name}.keyring
-# PATCH-FEATURE-UPSTREAM set of patches gh#jwilk/python-djvulibre#14 mcepl@suse.com
-# Set of patches to port testing to unittest
-Patch0:         switch-to-src-project-layout-to-simplify-testing.patch
 Patch1:         remove-all-dependencies-on-nose-in-the-code.patch
 Patch2:         remove-nose-in-documentation.patch
-
+# PATCH-FIX-UPSTREAM sphinx_4_compatibility.patch gh#sphinx-doc/sphinx#7747 mcepl@suse.com
+# Sphinx doesn't stable API
+Patch3:         sphinx_4_compatibility.patch
 BuildRequires:  %{python_module Cython >= 0.19.1}
 BuildRequires:  %{python_module Sphinx}
 BuildRequires:  %{python_module devel}
@@ -80,7 +79,7 @@ rm build/sphinx/html/.buildinfo build/sphinx/html/objects.inv
 
 %check
 cd tests/
-%pyunittest_arch discover -v tests/
+%pyunittest_arch -v
 
 %files %{python_files}
 %license doc/COPYING
diff --git a/sphinx_4_compatibility.patch b/sphinx_4_compatibility.patch
new file mode 100644
index 0000000..bdeba30
--- /dev/null
+++ b/sphinx_4_compatibility.patch
@@ -0,0 +1,14 @@
+---
+ doc/api/conf.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/doc/api/conf.py
++++ b/doc/api/conf.py
+@@ -55,6 +55,6 @@ rst_epilog = '''
+ import sphinx.writers.html
+ del sphinx.writers.html.HTMLTranslator.visit_math
+ def setup(app):
+-    app.add_stylesheet('docutils-math.css')
++    app.add_css_file('docutils-math.css')
+ 
+ # vim:ts=4 sts=4 sw=4 et
diff --git a/switch-to-src-project-layout-to-simplify-testing.patch b/switch-to-src-project-layout-to-simplify-testing.patch
deleted file mode 100644
index 736a098..0000000
--- a/switch-to-src-project-layout-to-simplify-testing.patch
+++ /dev/null
@@ -1,206 +0,0 @@
-From 5b58d1cc21a48d063e53b214f2291eac6a4842ba Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= <mcepl@cepl.eu>
-Date: Mon, 26 Jul 2021 09:24:10 +0200
-Subject: [PATCH] Switch to src/ project layout to simplify testing.
-
----
- MANIFEST.in                    |  2 +-
- setup.cfg                      |  5 +++++
- setup.py                       | 37 +++++++++++++++-------------------
- {djvu => src/djvu}/__init__.py |  0
- {djvu => src/djvu}/common.pxi  |  0
- {djvu => src/djvu}/const.py    |  0
- {djvu => src/djvu}/decode.pxd  |  0
- {djvu => src/djvu}/decode.pyx  |  0
- {djvu => src/djvu}/dllpath.py  |  0
- {djvu => src/djvu}/sexpr.pxd   |  0
- {djvu => src/djvu}/sexpr.pyx   |  0
- 11 files changed, 22 insertions(+), 22 deletions(-)
- rename {djvu => src/djvu}/__init__.py (100%)
- rename {djvu => src/djvu}/common.pxi (100%)
- rename {djvu => src/djvu}/const.py (100%)
- rename {djvu => src/djvu}/decode.pxd (100%)
- rename {djvu => src/djvu}/decode.pyx (100%)
- rename {djvu => src/djvu}/dllpath.py (100%)
- rename {djvu => src/djvu}/sexpr.pxd (100%)
- rename {djvu => src/djvu}/sexpr.pyx (100%)
-
-diff --git a/MANIFEST.in b/MANIFEST.in
-index f1e722a..7ff510b 100644
---- a/MANIFEST.in
-+++ b/MANIFEST.in
-@@ -13,7 +13,7 @@ include pyproject.toml
- 
- include examples/*
- 
--recursive-include djvu *.py *.pxi *.pxd *.pyx
-+recursive-include src/djvu *.py *.pxi *.pxd *.pyx
- 
- recursive-include tests *.py Makefile *.tex *.djvu
- 
-diff --git a/setup.cfg b/setup.cfg
-index 910c652..62d6219 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -1,3 +1,8 @@
-+[options]
-+package_dir =
-+    = src
-+packages = find:
-+
- [pycodestyle]
- filename = *.py,*.pyx,*.px[di]
- ignore = E12,E131,E2,E3,E4,E501,E722,W504
-diff --git a/setup.py b/setup.py
-index 93b6493..0cb196b 100644
---- a/setup.py
-+++ b/setup.py
-@@ -26,23 +26,18 @@ import re
- import subprocess as ipc
- import sys
- 
--need_setuptools = False
- if os.name == 'nt':
-     import djvu.dllpath
--    need_setuptools = True
- 
--if need_setuptools:
--    import setuptools.extension
--    del setuptools.extension
--    del setuptools
-+import setuptools
- 
--import distutils.core
--import distutils.ccompiler
--import distutils.command.build_ext
--import distutils.command.sdist
-+import setuptools.command.build_ext
-+import setuptools.command.sdist
- import distutils.dep_util
- import distutils.dir_util
- import distutils.version
-+import distutils.log
-+import distutils.errors
- 
- try:
-     import sphinx.setup_command as sphinx_setup_command
-@@ -65,7 +60,7 @@ type(b'')  # Python >= 2.6 is required
- type(u'')  # Python 2.X or >= 3.3 is required
- 
- def ext_modules():
--    for pyx_file in glob.iglob(os.path.join('djvu', '*.pyx')):
-+    for pyx_file in glob.iglob(os.path.join('src', 'djvu', '*.pyx')):
-         module, _ = os.path.splitext(os.path.basename(pyx_file))
-         yield module
- ext_modules = list(ext_modules())
-@@ -170,7 +165,7 @@ else:
- # Work-around for <https://bugs.python.org/issue969718>:
- os.environ.pop('CFLAGS', None)
- 
--class build_ext(distutils.command.build_ext.build_ext):
-+class build_ext(setuptools.command.build_ext.build_ext):
- 
-     def run(self):
-         djvulibre_version = get_djvulibre_version()
-@@ -199,7 +194,7 @@ class build_ext(distutils.command.build_ext.build_ext):
-         if '\n'.join(new_config).strip() != old_config.strip():
-             distutils.log.info('creating {conf!r}'.format(conf=self.config_path))
-             distutils.file_util.write_file(self.config_path, new_config)
--        distutils.command.build_ext.build_ext.run(self)
-+        setuptools.command.build_ext.build_ext.run(self)
- 
-     def build_extensions(self):
-         self.check_extensions_list(self.extensions)
-@@ -244,7 +239,7 @@ if sphinx_setup_command:
-             # the extension modules. Prepend the directory that build_ext would
-             # use instead.
-             build_ext = self.get_finalized_command('build_ext')
--            sys.path[:0] = [build_ext.build_lib]
-+            sys.path[:0] = build_ext.build_lib
-             for ext in ext_modules:
-                 __import__('djvu.' + ext)
-             del sys.path[0]
-@@ -252,7 +247,7 @@ if sphinx_setup_command:
- else:
-     build_sphinx = None
- 
--class sdist(distutils.command.sdist.sdist):
-+class sdist(setuptools.command.sdist.sdist):
- 
-     def maybe_move_file(self, base_dir, src, dst):
-         src = os.path.join(base_dir, src)
-@@ -261,7 +256,7 @@ class sdist(distutils.command.sdist.sdist):
-             self.move_file(src, dst)
- 
-     def make_release_tree(self, base_dir, files):
--        distutils.command.sdist.sdist.make_release_tree(self, base_dir, files)
-+        setuptools.command.sdist.sdist.make_release_tree(self, base_dir, files)
-         self.maybe_move_file(base_dir, 'COPYING', 'doc/COPYING')
- 
- classifiers = '''
-@@ -294,10 +289,10 @@ meta = dict(
- setup_params = dict(
-     packages=['djvu'],
-     ext_modules=[
--        distutils.command.build_ext.Extension(
-+        setuptools.Extension(
-             'djvu.{mod}'.format(mod=name),
--            ['djvu/{mod}.pyx'.format(mod=name)],
--            depends=(['djvu/common.pxi'] + glob.glob('djvu/*.pxd')),
-+            ['src/djvu/{mod}.pyx'.format(mod=name)],
-+            depends=(['src/djvu/common.pxi'] + glob.glob('djvu/*.pxd')),
-         )
-         for name in ext_modules
-     ],
-@@ -315,13 +310,13 @@ if __name__ == '__main__':
-     if (cython_version < req_cython_version) and egg_info_for_pip:
-         # This shouldn't happen with pip >= 10, thanks to PEP-518 support.
-         # For older versions, we use this hack to trick it into installing Cython:
--        distutils.core.setup(
-+        setuptools.setup(
-             install_requires=['Cython>={ver}'.format(ver=req_cython_version)],
-             # Conceptually, “setup_requires” would make more sense than
-             # “install_requires”, but the former is not supported by pip.
-             **meta
-         )
-     else:
--        distutils.core.setup(**setup_params)
-+        setuptools.setup(**setup_params)
- 
- # vim:ts=4 sts=4 sw=4 et
-diff --git a/djvu/__init__.py b/src/djvu/__init__.py
-similarity index 100%
-rename from djvu/__init__.py
-rename to src/djvu/__init__.py
-diff --git a/djvu/common.pxi b/src/djvu/common.pxi
-similarity index 100%
-rename from djvu/common.pxi
-rename to src/djvu/common.pxi
-diff --git a/djvu/const.py b/src/djvu/const.py
-similarity index 100%
-rename from djvu/const.py
-rename to src/djvu/const.py
-diff --git a/djvu/decode.pxd b/src/djvu/decode.pxd
-similarity index 100%
-rename from djvu/decode.pxd
-rename to src/djvu/decode.pxd
-diff --git a/djvu/decode.pyx b/src/djvu/decode.pyx
-similarity index 100%
-rename from djvu/decode.pyx
-rename to src/djvu/decode.pyx
-diff --git a/djvu/dllpath.py b/src/djvu/dllpath.py
-similarity index 100%
-rename from djvu/dllpath.py
-rename to src/djvu/dllpath.py
-diff --git a/djvu/sexpr.pxd b/src/djvu/sexpr.pxd
-similarity index 100%
-rename from djvu/sexpr.pxd
-rename to src/djvu/sexpr.pxd
-diff --git a/djvu/sexpr.pyx b/src/djvu/sexpr.pyx
-similarity index 100%
-rename from djvu/sexpr.pyx
-rename to src/djvu/sexpr.pyx
--- 
-2.32.0
-
-