Blame osbuild.spec

Packit a20ca0
%global         forgeurl https://github.com/osbuild/osbuild
Packit a20ca0
%global         selinuxtype targeted
Packit a20ca0
Packit Service 51302c
Version:        27.2
Packit a20ca0
Packit a20ca0
%forgemeta
Packit a20ca0
Packit a20ca0
%global         pypi_name osbuild
Packit a20ca0
%global         pkgdir %{_prefix}/lib/%{pypi_name}
Packit a20ca0
Packit a20ca0
Name:           %{pypi_name}
Packit a20ca0
Release:        1%{?dist}
Packit a20ca0
License:        ASL 2.0
Packit a20ca0
Packit a20ca0
URL:            %{forgeurl}
Packit a20ca0
Packit a20ca0
Source0:        %{forgesource}
Packit a20ca0
BuildArch:      noarch
Packit a20ca0
Summary:        A build system for OS images
Packit a20ca0
Packit a20ca0
BuildRequires:  make
Packit a20ca0
BuildRequires:  python3-devel
Packit a20ca0
BuildRequires:  python3-docutils
Packit a20ca0
Packit a20ca0
Requires:       bash
Packit Service 2d981f
Requires:       bubblewrap
Packit a20ca0
Requires:       coreutils
Packit a20ca0
Requires:       curl
Packit a20ca0
Requires:       dnf
Packit a20ca0
Requires:       e2fsprogs
Packit a20ca0
Requires:       glibc
Packit a20ca0
Requires:       policycoreutils
Packit a20ca0
Requires:       qemu-img
Packit a20ca0
Requires:       systemd
Packit a20ca0
Requires:       tar
Packit a20ca0
Requires:       util-linux
Packit a20ca0
Requires:       python3-%{pypi_name} = %{version}-%{release}
Packit a20ca0
Requires:       (%{name}-selinux if selinux-policy-%{selinuxtype})
Packit a20ca0
Packit Service c94ef3
# Turn off dependency generators for runners. The reason is that runners are
Packit Service c94ef3
# tailored to the platform, e.g. on RHEL they are using platform-python. We
Packit Service c94ef3
# don't want to pick up those dependencies on other platform.
Packit Service c94ef3
%global __requires_exclude_from ^%{pkgdir}/(runners)/.*$
Packit a20ca0
Packit Service 2d981f
# Turn off shebang mangling on RHEL. brp-mangle-shebangs (from package
Packit Service 2d981f
# redhat-rpm-config) is run on all executables in a package after the `install`
Packit Service 2d981f
# section runs. The below macro turns this behavior off for:
Packit Service 2d981f
#   - runners, because they already have the correct shebang for the platform
Packit Service 2d981f
#     they're meant for, and
Packit Service 2d981f
#   - stages and assemblers, because they are run within osbuild build roots,
Packit Service 2d981f
#     which are not required to contain the same OS as the host and might thus
Packit Service 2d981f
#     have a different notion of "platform-python".
Packit Service c94ef3
# RHEL NB: Since assemblers and stages are not excluded from the dependency
Packit Service c94ef3
# generator, this also means that an additional dependency on /usr/bin/python3
Packit Service c94ef3
# will be added. This is intended and needed, so that in the host build root
Packit Service c94ef3
# /usr/bin/python3 is present so stages and assemblers can be run.
Packit Service 2d981f
%global __brp_mangle_shebangs_exclude_from ^%{pkgdir}/(assemblers|runners|stages)/.*$
Packit Service 2d981f
Packit a20ca0
%{?python_enable_dependency_generator}
Packit a20ca0
Packit a20ca0
%description
Packit a20ca0
A build system for OS images
Packit a20ca0
Packit a20ca0
%package -n     python3-%{pypi_name}
Packit a20ca0
Summary:        %{summary}
Packit a20ca0
%{?python_provide:%python_provide python3-%{pypi_name}}
Packit a20ca0
Packit a20ca0
%description -n python3-%{pypi_name}
Packit a20ca0
A build system for OS images
Packit a20ca0
Packit a20ca0
%package        ostree
Packit a20ca0
Summary:        OSTree support
Packit a20ca0
Requires:       %{name} = %{version}-%{release}
Packit a20ca0
Requires:       ostree
Packit a20ca0
Requires:       rpm-ostree
Packit a20ca0
Packit a20ca0
%description ostree
Packit a20ca0
Contains the necessary stages, assembler and source
Packit a20ca0
to build OSTree based images.
Packit a20ca0
Packit a20ca0
%package        selinux
Packit a20ca0
Summary:        SELinux policies
Packit a20ca0
Requires:       %{name} = %{version}-%{release}
Packit a20ca0
BuildRequires:  selinux-policy
Packit a20ca0
BuildRequires:  selinux-policy-devel
Packit a20ca0
%{?selinux_requires}
Packit a20ca0
Packit a20ca0
%description    selinux
Packit a20ca0
Contains the necessary SELinux policies that allows
Packit a20ca0
osbuild to use labels unknown to the host inside the
Packit a20ca0
containers it uses to build OS artifacts.
Packit a20ca0
Packit a20ca0
%prep
Packit a20ca0
%forgesetup
Packit a20ca0
Packit a20ca0
%build
Packit a20ca0
%py3_build
Packit a20ca0
make man
Packit a20ca0
Packit a20ca0
# SELinux
Packit a20ca0
make -f /usr/share/selinux/devel/Makefile osbuild.pp
Packit a20ca0
bzip2 -9 osbuild.pp
Packit a20ca0
Packit a20ca0
%pre
Packit a20ca0
%selinux_relabel_pre -s %{selinuxtype}
Packit a20ca0
Packit a20ca0
%install
Packit a20ca0
%py3_install
Packit a20ca0
Packit a20ca0
mkdir -p %{buildroot}%{pkgdir}/stages
Packit a20ca0
install -p -m 0755 $(find stages -type f) %{buildroot}%{pkgdir}/stages/
Packit a20ca0
Packit a20ca0
mkdir -p %{buildroot}%{pkgdir}/assemblers
Packit a20ca0
install -p -m 0755 $(find assemblers -type f) %{buildroot}%{pkgdir}/assemblers/
Packit a20ca0
Packit a20ca0
mkdir -p %{buildroot}%{pkgdir}/runners
Packit a20ca0
install -p -m 0755 $(find runners -type f -or -type l) %{buildroot}%{pkgdir}/runners
Packit a20ca0
Packit a20ca0
mkdir -p %{buildroot}%{pkgdir}/sources
Packit a20ca0
install -p -m 0755 $(find sources -type f) %{buildroot}%{pkgdir}/sources
Packit a20ca0
Packit Service c94ef3
mkdir -p %{buildroot}%{pkgdir}/inputs
Packit Service c94ef3
install -p -m 0755 $(find inputs -type f) %{buildroot}%{pkgdir}/inputs
Packit Service c94ef3
Packit a20ca0
# mount point for bind mounting the osbuild library
Packit a20ca0
mkdir -p %{buildroot}%{pkgdir}/osbuild
Packit a20ca0
Packit a20ca0
# schemata
Packit a20ca0
mkdir -p %{buildroot}%{_datadir}/osbuild/schemas
Packit a20ca0
install -p -m 0755 $(find schemas/*.json) %{buildroot}%{_datadir}/osbuild/schemas
Packit a20ca0
ln -s %{_datadir}/osbuild/schemas %{buildroot}%{pkgdir}/schemas
Packit a20ca0
Packit a20ca0
# documentation
Packit a20ca0
mkdir -p %{buildroot}%{_mandir}/man1
Packit a20ca0
mkdir -p %{buildroot}%{_mandir}/man5
Packit a20ca0
install -p -m 0644 -t %{buildroot}%{_mandir}/man1/ docs/*.1
Packit a20ca0
install -p -m 0644 -t %{buildroot}%{_mandir}/man5/ docs/*.5
Packit a20ca0
Packit a20ca0
# SELinux
Packit a20ca0
install -D -m 644 -t %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype} %{name}.pp.bz2
Packit a20ca0
install -D -m 644 -t %{buildroot}%{_mandir}/man8 selinux/%{name}_selinux.8
Packit a20ca0
Packit a20ca0
%check
Packit a20ca0
exit 0
Packit a20ca0
# We have some integration tests, but those require running a VM, so that would
Packit a20ca0
# be an overkill for RPM check script.
Packit a20ca0
Packit a20ca0
%files
Packit a20ca0
%license LICENSE
Packit a20ca0
%{_bindir}/osbuild
Packit a20ca0
%{_mandir}/man1/%{name}.1*
Packit a20ca0
%{_mandir}/man5/%{name}-manifest.5*
Packit a20ca0
%{_datadir}/osbuild/schemas
Packit a20ca0
%{pkgdir}
Packit a20ca0
# the following files are in the ostree sub-package
Packit a20ca0
%exclude %{pkgdir}/assemblers/org.osbuild.ostree.commit
Packit a20ca0
%exclude %{pkgdir}/sources/org.osbuild.ostree
Packit a20ca0
%exclude %{pkgdir}/stages/org.osbuild.ostree
Packit a20ca0
%exclude %{pkgdir}/stages/org.osbuild.rpm-ostree
Packit a20ca0
Packit a20ca0
%files -n       python3-%{pypi_name}
Packit a20ca0
%license LICENSE
Packit a20ca0
%doc README.md NEWS.md
Packit a20ca0
%{python3_sitelib}/%{pypi_name}-*.egg-info/
Packit a20ca0
%{python3_sitelib}/%{pypi_name}/
Packit a20ca0
Packit a20ca0
%files ostree
Packit a20ca0
%{pkgdir}/assemblers/org.osbuild.ostree.commit
Packit a20ca0
%{pkgdir}/sources/org.osbuild.ostree
Packit a20ca0
%{pkgdir}/stages/org.osbuild.ostree
Packit a20ca0
%{pkgdir}/stages/org.osbuild.rpm-ostree
Packit a20ca0
Packit a20ca0
%files selinux
Packit a20ca0
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
Packit a20ca0
%{_mandir}/man8/%{name}_selinux.8.*
Packit a20ca0
%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
Packit a20ca0
Packit a20ca0
%post selinux
Packit a20ca0
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
Packit a20ca0
Packit a20ca0
%postun selinux
Packit a20ca0
if [ $1 -eq 0 ]; then
Packit a20ca0
    %selinux_modules_uninstall -s %{selinuxtype} %{name}
Packit a20ca0
fi
Packit a20ca0
Packit a20ca0
%posttrans selinux
Packit a20ca0
%selinux_relabel_post -s %{selinuxtype}
Packit a20ca0
Packit a20ca0
Packit a20ca0
%changelog
Packit a20ca0
* Mon Aug 19 2019 Miro HronĨok <mhroncok@redhat.com> - 1-3
Packit a20ca0
- Rebuilt for Python 3.8
Packit a20ca0
Packit a20ca0
* Mon Jul 29 2019 Martin Sehnoutka <msehnout@redhat.com> - 1-2
Packit a20ca0
- update upstream URL to the new Github organization
Packit a20ca0
Packit a20ca0
* Wed Jul 17 2019 Martin Sehnoutka <msehnout@redhat.com> - 1-1
Packit a20ca0
- Initial package