The `osbuild` executable requires that the exact same version of the
corresponding python library is installed, but this was not enforced
in the RPM package. Thus a old version of osbuild could be installed
alongside an older version of python3-osbuild, which results in an
osbuild crash (see below).
Therefore, enforce that both installed packages have matching
versions by specifying the exact version for the `python3-osbuild`
dependency of the `osbuild` package.
Example osbuild crash if versions are not matching:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 583, in _build_master
ws.require(__requires__)
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (osbuild 10 (/usr/lib/python3.8/site-packages), Requirement.parse('osbuild==11'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/osbuild", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3252, in <module>
def _initialize_master_working_set():
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3235, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3264, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 585, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 598, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'osbuild==11' distribution was not found and is required by the application
114 lines
3 KiB
RPMSpec
114 lines
3 KiB
RPMSpec
%global forgeurl https://github.com/osbuild/osbuild
|
|
|
|
Version: 11
|
|
|
|
%forgemeta
|
|
|
|
%global pypi_name osbuild
|
|
%global pkgdir %{_prefix}/lib/%{pypi_name}
|
|
|
|
Name: %{pypi_name}
|
|
Release: 1%{?dist}
|
|
License: ASL 2.0
|
|
|
|
URL: %{forgeurl}
|
|
|
|
Source0: %{forgesource}
|
|
BuildArch: noarch
|
|
Summary: A build system for OS images
|
|
|
|
BuildRequires: make
|
|
BuildRequires: python3-devel
|
|
BuildRequires: python3-docutils
|
|
|
|
Requires: bash
|
|
Requires: coreutils
|
|
Requires: curl
|
|
Requires: dnf
|
|
Requires: e2fsprogs
|
|
Requires: glibc
|
|
Requires: policycoreutils
|
|
Requires: qemu-img
|
|
Requires: systemd
|
|
Requires: systemd-container
|
|
Requires: tar
|
|
Requires: util-linux
|
|
Requires: python3-%{pypi_name} = %{version}-%{release}
|
|
|
|
# Turn off dependency generators for assemblers, runners and stages.
|
|
# They run in a container, so there's no reason to generate dependencies
|
|
# from them. As of 2020-03-25 this filters out python3.6 dependency generated
|
|
# by rhel runner.
|
|
%global __requires_exclude_from ^%{pkgdir}/(assemblers|runners|stages)/.*$
|
|
|
|
%{?python_enable_dependency_generator}
|
|
|
|
%description
|
|
A build system for OS images
|
|
|
|
%package -n python3-%{pypi_name}
|
|
Summary: %{summary}
|
|
%{?python_provide:%python_provide python3-%{pypi_name}}
|
|
|
|
%description -n python3-%{pypi_name}
|
|
A build system for OS images
|
|
|
|
%prep
|
|
%forgesetup
|
|
|
|
%build
|
|
%py3_build
|
|
make man
|
|
|
|
%install
|
|
%py3_install
|
|
|
|
mkdir -p %{buildroot}%{pkgdir}/stages
|
|
install -p -m 0755 $(find stages -type f) %{buildroot}%{pkgdir}/stages/
|
|
|
|
mkdir -p %{buildroot}%{pkgdir}/assemblers
|
|
install -p -m 0755 $(find assemblers -type f) %{buildroot}%{pkgdir}/assemblers/
|
|
|
|
mkdir -p %{buildroot}%{pkgdir}/runners
|
|
install -p -m 0755 $(find runners -type f -or -type l) %{buildroot}%{pkgdir}/runners
|
|
|
|
mkdir -p %{buildroot}%{pkgdir}/sources
|
|
install -p -m 0755 $(find sources -type f) %{buildroot}%{pkgdir}/sources
|
|
|
|
# mount points for bind mounting the osbuild library
|
|
mkdir -p %{buildroot}%{pkgdir}/stages/osbuild
|
|
mkdir -p %{buildroot}%{pkgdir}/assemblers/osbuild
|
|
|
|
# documentation
|
|
mkdir -p %{buildroot}%{_mandir}/man1
|
|
mkdir -p %{buildroot}%{_mandir}/man5
|
|
install -p -m 0644 -t %{buildroot}%{_mandir}/man1/ docs/*.1
|
|
install -p -m 0644 -t %{buildroot}%{_mandir}/man5/ docs/*.5
|
|
|
|
%check
|
|
exit 0
|
|
# We have some integration tests, but those require running a VM, so that would
|
|
# be an overkill for RPM check script.
|
|
|
|
%files
|
|
%license LICENSE
|
|
%{_bindir}/osbuild
|
|
%{_mandir}/man1/%{name}.1*
|
|
%{_mandir}/man5/%{name}-manifest.5*
|
|
%{pkgdir}
|
|
|
|
%files -n python3-%{pypi_name}
|
|
%license LICENSE
|
|
%doc README.md NEWS.md
|
|
%{python3_sitelib}/%{pypi_name}-*.egg-info/
|
|
%{python3_sitelib}/%{pypi_name}/
|
|
|
|
%changelog
|
|
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 1-3
|
|
- Rebuilt for Python 3.8
|
|
|
|
* Mon Jul 29 2019 Martin Sehnoutka <msehnout@redhat.com> - 1-2
|
|
- update upstream URL to the new Github organization
|
|
|
|
* Wed Jul 17 2019 Martin Sehnoutka <msehnout@redhat.com> - 1-1
|
|
- Initial package
|