diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000..fcc7b97
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,3 @@
+
+ test
+
diff --git a/make_sphinx_optional.patch b/make_sphinx_optional.patch
new file mode 100644
index 0000000..f7dc3f6
--- /dev/null
+++ b/make_sphinx_optional.patch
@@ -0,0 +1,65 @@
+From c1b08b470291b8f9334e600563efa6d2651c2a66 Mon Sep 17 00:00:00 2001
+From: StefanBruens
+Date: Sun, 15 Dec 2019 02:29:27 +0100
+Subject: [PATCH] Do no require Sphinx when doing just a regular build
+
+Only the 'build_sphinx' command requires sphinx, so do the
+import from the command.
+---
+ setup.py | 33 +++++++++++++++++++++------------
+ 1 file changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 2057839..04a5917 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,11 +1,27 @@
+-from setuptools import find_packages, setup
+-from sphinx.setup_command import BuildDoc
+-cmdclass = {'build_sphinx': BuildDoc}
++from setuptools import find_packages, setup, Command
+
+ name="pybeam"
+ version="0.5"
+ test_suite="test"
+
++class BuildSphinx(Command):
++ description = 'Build Sphinx documentation'
++ user_options = []
++
++ def initialize_options(self):
++ pass
++
++ def finalize_options(self):
++ pass
++
++ def run(self):
++ import sphinx.cmd.build as scb
++ scb.build_main(['-b', 'html',
++ '-D', 'project=' + name,
++ '-D', 'version=' + version,
++ '-D', 'release=' + version,
++ './doc', './build/html'])
++
+ setup(name=name,
+ version=version,
+ description='Python module to parse Erlang BEAM files',
+@@ -15,13 +31,6 @@ setup(name=name,
+ license='MIT',
+ packages=find_packages(exclude=(test_suite,)),
+ test_suite=test_suite,
+- install_requires=['construct>=2.9,<2.10', 'six', 'sphinx'],
+- command_options={
+- 'build_sphinx': {
+- 'project': ('setup.py', name),
+- 'version': ('setup.py', version),
+- 'release': ('setup.py', version),
+- 'source_dir': ('setup.py', 'doc')
+- }
+- },
++ install_requires=['construct>=2.9,<2.10', 'six'],
++ cmdclass = {'build_sphinx': BuildSphinx},
+ zip_safe=False)
+--
+2.24.0
+
diff --git a/python-pybeam.changes b/python-pybeam.changes
index f263d93..f9b6510 100644
--- a/python-pybeam.changes
+++ b/python-pybeam.changes
@@ -1,3 +1,11 @@
+-------------------------------------------------------------------
+Sun Dec 15 02:38:15 UTC 2019 - Stefan Brüns
+
+- Make Sphinx dependency optional (docs are not built by default),
+ add make_sphinx_optional.patch
+- Use _multibuild for tests to reduce the build dependencies
+ and simplify bootstrap for e.g. rpmlint.
+
-------------------------------------------------------------------
Fri Jan 11 09:48:15 UTC 2019 - Tomáš Chvátal
diff --git a/python-pybeam.spec b/python-pybeam.spec
index 9e52771..54d2ba3 100644
--- a/python-pybeam.spec
+++ b/python-pybeam.spec
@@ -1,7 +1,7 @@
#
# spec file for package python-pybeam
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,17 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-Name: python-pybeam
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test"
+%bcond_with doc
+%bcond_without test
+%define psuffix -test
+%endif
+%if "%{flavor}" == ""
+%bcond_with doc
+%bcond_with test
+%endif
+Name: python-pybeam%{?psuffix}
Version: 0.5
Release: 0
Summary: Python module to parse Erlang BEAM files
@@ -25,13 +35,19 @@ License: MIT
Group: Development/Languages/Python
URL: http://github.com/matwey/pybeam
Source: https://files.pythonhosted.org/packages/source/p/pybeam/pybeam-%{version}.tar.gz
+Patch0: make_sphinx_optional.patch
+BuildRequires: %{python_module setuptools}
+BuildRequires: fdupes
+BuildRequires: python-rpm-macros
+%if %{with doc}
BuildRequires: %{python_module Sphinx}
BuildRequires: %{python_module construct < 2.10}
BuildRequires: %{python_module construct >= 2.9}
-BuildRequires: %{python_module setuptools}
+%endif
+%if %{with test}
+BuildRequires: %{python_module pybeam == %{version}}
BuildRequires: %{python_module six}
-BuildRequires: fdupes
-BuildRequires: python-rpm-macros
+%endif
Requires: python-construct < 2.10
Requires: python-construct >= 2.9
Requires: python-six >= 1.4.0
@@ -43,21 +59,47 @@ Python module to parse Erlang BEAM files, now it is able to read
imports, exports, atoms, as well as compile info and attribute
chunks in pretty python format.
+%package -n %{name}-doc
+Summary: API Documentation for %name
+Group: Documentation/HTML
+
+%description -n %{name}-doc
+Python module to parse Erlang BEAM files, now it is able to read
+imports, exports, atoms, as well as compile info and attribute
+chunks in pretty python format.
+
%prep
%setup -q -n pybeam-%{version}
+%patch0 -p1
%build
+%if %{without test}
%python_build
+%endif
+%if %{with doc}
+%python_build build_sphinx
+%endif
%install
+%if %{without test}
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%endif
%check
+%if %{with test}
%python_exec setup.py test
+%endif
+%if %{without test}
%files %{python_files}
%license LICENSE
%{python_sitelib}/*
+%endif
+
+%if %{with doc}
+%files -n %{name}-doc
+%doc build/html
+%endif
%changelog