Blame SPECS/osbuild.spec

740e31
%global         forgeurl https://github.com/osbuild/osbuild
c730a6
%global         selinuxtype targeted
740e31
341a63
Version:        50
740e31
740e31
%forgemeta
740e31
740e31
%global         pypi_name osbuild
740e31
%global         pkgdir %{_prefix}/lib/%{pypi_name}
740e31
740e31
Name:           %{pypi_name}
c9eaaf
Release:        1%{?dist}
740e31
License:        ASL 2.0
740e31
740e31
URL:            %{forgeurl}
740e31
740e31
Source0:        %{forgesource}
740e31
BuildArch:      noarch
740e31
Summary:        A build system for OS images
740e31
740e31
BuildRequires:  make
740e31
BuildRequires:  python3-devel
740e31
BuildRequires:  python3-docutils
7b2af8
BuildRequires:  systemd
740e31
740e31
Requires:       bash
e0b478
Requires:       bubblewrap
740e31
Requires:       coreutils
740e31
Requires:       curl
740e31
Requires:       dnf
740e31
Requires:       e2fsprogs
740e31
Requires:       glibc
740e31
Requires:       policycoreutils
740e31
Requires:       qemu-img
740e31
Requires:       systemd
740e31
Requires:       tar
740e31
Requires:       util-linux
740e31
Requires:       python3-%{pypi_name} = %{version}-%{release}
c730a6
Requires:       (%{name}-selinux if selinux-policy-%{selinuxtype})
740e31
1ab45a
# Turn off dependency generators for runners. The reason is that runners are
1ab45a
# tailored to the platform, e.g. on RHEL they are using platform-python. We
1ab45a
# don't want to pick up those dependencies on other platform.
1ab45a
%global __requires_exclude_from ^%{pkgdir}/(runners)/.*$
740e31
e0b478
# Turn off shebang mangling on RHEL. brp-mangle-shebangs (from package
e0b478
# redhat-rpm-config) is run on all executables in a package after the `install`
e0b478
# section runs. The below macro turns this behavior off for:
e0b478
#   - runners, because they already have the correct shebang for the platform
e0b478
#     they're meant for, and
e0b478
#   - stages and assemblers, because they are run within osbuild build roots,
e0b478
#     which are not required to contain the same OS as the host and might thus
e0b478
#     have a different notion of "platform-python".
1ab45a
# RHEL NB: Since assemblers and stages are not excluded from the dependency
1ab45a
# generator, this also means that an additional dependency on /usr/bin/python3
1ab45a
# will be added. This is intended and needed, so that in the host build root
7b2af8
# /usr/bin/python3 is present so stages and assemblers can be run.
e0b478
%global __brp_mangle_shebangs_exclude_from ^%{pkgdir}/(assemblers|runners|stages)/.*$
e0b478
740e31
%{?python_enable_dependency_generator}
740e31
740e31
%description
740e31
A build system for OS images
740e31
740e31
%package -n     python3-%{pypi_name}
740e31
Summary:        %{summary}
740e31
%{?python_provide:%python_provide python3-%{pypi_name}}
740e31
740e31
%description -n python3-%{pypi_name}
740e31
A build system for OS images
740e31
7b2af8
%package        lvm2
7b2af8
Summary:        LVM2 support
7b2af8
Requires:       %{name} = %{version}-%{release}
7b2af8
Requires:       lvm2
7b2af8
7b2af8
%description lvm2
7b2af8
Contains the necessary stages and device host
7b2af8
services to build LVM2 based images.
7b2af8
7b2af8
%package        luks2
7b2af8
Summary:        LUKS2 support
7b2af8
Requires:       %{name} = %{version}-%{release}
7b2af8
Requires:       cryptsetup
7b2af8
7b2af8
%description luks2
7b2af8
Contains the necessary stages and device host
7b2af8
services to build LUKS2 encrypted images.
7b2af8
740e31
%package        ostree
740e31
Summary:        OSTree support
740e31
Requires:       %{name} = %{version}-%{release}
740e31
Requires:       ostree
740e31
Requires:       rpm-ostree
740e31
740e31
%description ostree
740e31
Contains the necessary stages, assembler and source
740e31
to build OSTree based images.
740e31
c730a6
%package        selinux
c730a6
Summary:        SELinux policies
c730a6
Requires:       %{name} = %{version}-%{release}
c730a6
BuildRequires:  selinux-policy
c730a6
BuildRequires:  selinux-policy-devel
c730a6
%{?selinux_requires}
c730a6
c730a6
%description    selinux
c730a6
Contains the necessary SELinux policies that allows
c730a6
osbuild to use labels unknown to the host inside the
c730a6
containers it uses to build OS artifacts.
c730a6
3d9c31
%package        tools
3d9c31
Summary:        Extra tools and utilities
3d9c31
Requires:       %{name} = %{version}-%{release}
ed2c5b
Requires:       python3-pyyaml
3d9c31
3d9c31
%description    tools
3d9c31
Contains additional tools and utilities for development of
3d9c31
manifests and osbuild.
3d9c31
740e31
%prep
740e31
%forgesetup
740e31
740e31
%build
740e31
%py3_build
740e31
make man
740e31
c730a6
# SELinux
c730a6
make -f /usr/share/selinux/devel/Makefile osbuild.pp
c730a6
bzip2 -9 osbuild.pp
c730a6
c730a6
%pre
c730a6
%selinux_relabel_pre -s %{selinuxtype}
c730a6
740e31
%install
740e31
%py3_install
740e31
740e31
mkdir -p %{buildroot}%{pkgdir}/stages
740e31
install -p -m 0755 $(find stages -type f) %{buildroot}%{pkgdir}/stages/
740e31
740e31
mkdir -p %{buildroot}%{pkgdir}/assemblers
740e31
install -p -m 0755 $(find assemblers -type f) %{buildroot}%{pkgdir}/assemblers/
740e31
740e31
mkdir -p %{buildroot}%{pkgdir}/runners
740e31
install -p -m 0755 $(find runners -type f -or -type l) %{buildroot}%{pkgdir}/runners
740e31
740e31
mkdir -p %{buildroot}%{pkgdir}/sources
740e31
install -p -m 0755 $(find sources -type f) %{buildroot}%{pkgdir}/sources
740e31
b7e327
mkdir -p %{buildroot}%{pkgdir}/devices
b7e327
install -p -m 0755 $(find devices -type f) %{buildroot}%{pkgdir}/devices
b7e327
1ab45a
mkdir -p %{buildroot}%{pkgdir}/inputs
1ab45a
install -p -m 0755 $(find inputs -type f) %{buildroot}%{pkgdir}/inputs
1ab45a
b7e327
mkdir -p %{buildroot}%{pkgdir}/mounts
b7e327
install -p -m 0755 $(find mounts -type f) %{buildroot}%{pkgdir}/mounts
b7e327
33d4c8
# mount point for bind mounting the osbuild library
33d4c8
mkdir -p %{buildroot}%{pkgdir}/osbuild
33d4c8
33d4c8
# schemata
33d4c8
mkdir -p %{buildroot}%{_datadir}/osbuild/schemas
3d9c31
install -p -m 0644 $(find schemas/*.json) %{buildroot}%{_datadir}/osbuild/schemas
33d4c8
ln -s %{_datadir}/osbuild/schemas %{buildroot}%{pkgdir}/schemas
740e31
740e31
# documentation
740e31
mkdir -p %{buildroot}%{_mandir}/man1
740e31
mkdir -p %{buildroot}%{_mandir}/man5
740e31
install -p -m 0644 -t %{buildroot}%{_mandir}/man1/ docs/*.1
740e31
install -p -m 0644 -t %{buildroot}%{_mandir}/man5/ docs/*.5
740e31
c730a6
# SELinux
3d9c31
install -D -m 0644 -t %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype} %{name}.pp.bz2
3d9c31
install -D -m 0644 -t %{buildroot}%{_mandir}/man8 selinux/%{name}_selinux.8
c730a6
7b2af8
# Udev rules
7b2af8
mkdir -p %{buildroot}%{_udevrulesdir}
7b2af8
install -p -m 0755 data/10-osbuild-inhibitor.rules %{buildroot}%{_udevrulesdir}
7b2af8
740e31
%check
740e31
exit 0
740e31
# We have some integration tests, but those require running a VM, so that would
740e31
# be an overkill for RPM check script.
740e31
740e31
%files
740e31
%license LICENSE
740e31
%{_bindir}/osbuild
740e31
%{_mandir}/man1/%{name}.1*
740e31
%{_mandir}/man5/%{name}-manifest.5*
33d4c8
%{_datadir}/osbuild/schemas
740e31
%{pkgdir}
7b2af8
%{_udevrulesdir}/*.rules
7b2af8
# the following files are in the lvm2 sub-package
7b2af8
%exclude %{pkgdir}/devices/org.osbuild.lvm2*
7b2af8
%exclude %{pkgdir}/stages/org.osbuild.lvm2*
7b2af8
# the following files are in the luks2 sub-package
7b2af8
%exclude %{pkgdir}/devices/org.osbuild.luks2*
7b2af8
%exclude %{pkgdir}/stages/org.osbuild.crypttab
7b2af8
%exclude %{pkgdir}/stages/org.osbuild.luks2*
740e31
# the following files are in the ostree sub-package
b7e327
%exclude %{pkgdir}/assemblers/org.osbuild.ostree*
b7e327
%exclude %{pkgdir}/inputs/org.osbuild.ostree*
b7e327
%exclude %{pkgdir}/sources/org.osbuild.ostree*
b7e327
%exclude %{pkgdir}/stages/org.osbuild.ostree*
740e31
%exclude %{pkgdir}/stages/org.osbuild.rpm-ostree
740e31
740e31
%files -n       python3-%{pypi_name}
740e31
%license LICENSE
583e7b
%doc README.md
740e31
%{python3_sitelib}/%{pypi_name}-*.egg-info/
740e31
%{python3_sitelib}/%{pypi_name}/
740e31
7b2af8
%files lvm2
7b2af8
%{pkgdir}/devices/org.osbuild.lvm2*
7b2af8
%{pkgdir}/stages/org.osbuild.lvm2*
7b2af8
7b2af8
%files luks2
7b2af8
%{pkgdir}/devices/org.osbuild.luks2*
7b2af8
%{pkgdir}/stages/org.osbuild.crypttab
7b2af8
%{pkgdir}/stages/org.osbuild.luks2*
7b2af8
33d4c8
%files ostree
b7e327
%{pkgdir}/assemblers/org.osbuild.ostree*
b7e327
%{pkgdir}/inputs/org.osbuild.ostree*
b7e327
%{pkgdir}/sources/org.osbuild.ostree*
b7e327
%{pkgdir}/stages/org.osbuild.ostree*
740e31
%{pkgdir}/stages/org.osbuild.rpm-ostree
740e31
c730a6
%files selinux
c730a6
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
c730a6
%{_mandir}/man8/%{name}_selinux.8.*
c730a6
%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
c730a6
c730a6
%post selinux
c730a6
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
c730a6
c730a6
%postun selinux
c730a6
if [ $1 -eq 0 ]; then
c730a6
    %selinux_modules_uninstall -s %{selinuxtype} %{name}
c730a6
fi
c730a6
c730a6
%posttrans selinux
c730a6
%selinux_relabel_post -s %{selinuxtype}
c730a6
3d9c31
%files tools
3d9c31
%{_bindir}/osbuild-mpp
c730a6
c9eaaf
740e31
%changelog
341a63
* Sun Feb 27 2022 Simon Steinbeiss <simon.steinbeiss@redhat.com> - 50-1
341a63
- New upstream release
341a63
988cf9
* Wed Feb 23 2022 Simon Steinbeiss <simon.steinbeiss@redhat.com> - 49-1
988cf9
- New upstream release
988cf9
988cf9
* Thu Feb 17 2022 Chloe Kaubisch <chloe.kaubisch@gmail.com> - 48-1
988cf9
- New upstream release
988cf9
988cf9
* Thu Feb 03 2022 Jacob Kozol <jacobdkozol@gmail.com> - 47-1
988cf9
- New upstream release
988cf9
e7dd71
* Wed Jan 19 2022 Simon Steinbeiss <simon.steinbeiss@redhat.com> - 46-1
e7dd71
- New upstream release
e7dd71
b4a062
* Mon Jan 10 2022 Tomas Hozza <thozza@redhat.com> - 45-1
b4a062
- New upstream release
b4a062
7b2af8
* Wed Jan 05 2022 Simon Steinbeiss <simon.steinbeiss@redhat.com> - 44-1
7b2af8
- New upstream release
7b2af8
ed2c5b
* Wed Dec 01 2021 Achilleas Koutsou <achilleas@redhat.com> - 43-1
ed2c5b
- New upstream release
ed2c5b
583e7b
* Mon Nov 29 2021 Ondřej Budai <ondrej@budai.cz> - 42-1
583e7b
- New upstream release
583e7b
c9eaaf
* Fri Oct 15 2021 Achilleas Koutsou <achilleas@redhat.com> - 39-1
c9eaaf
- New upstream release
ec06b8
cf7b1a
* Sun Aug 29 2021 Tom Gundersen <teg@jklm.no> - 35-1
cf7b1a
- Upstream release 35
cf7b1a
cf7b1a
* Sun Aug 29 2021 Tom Gundersen <teg@jklm.no> - 34-1
cf7b1a
- Upstream release 34
cf7b1a
67ac94
* Wed Aug 25 2021 Tom Gundersen <teg@jklm.no> - 33-1
67ac94
- Upstream release 33
67ac94
0bdf73
* Tue Aug 24 2021 Tom Gundersen <teg@jklm.no> - 32-1
0bdf73
- Upstream release 32
0bdf73
17b1be
* Mon Aug 23 2021 Tom Gundersen <teg@jklm.no> - 31-1
17b1be
- Upstream release 31
17b1be
3d9c31
* Fri Jul 23 2021 Christian Kellner <christian@kellner.me> - 30-1
3d9c31
- Upstream release 30
3d9c31
- Ship osbuild-mpp in new tools sub-package.
3d9c31
- Remove executable bit from schemata files.
3d9c31
b7e327
* Tue Apr 27 2021 Achilleas Koutsou <achilleas@redhat.com> - 28-1
b7e327
- Upstream release 28
b7e327
- Includes fixes and feature additions for multiple stages.
7e53c7
a5c877
* Fri Feb 19 2021 Christian Kellner <ckellner@redhat.com> - 26-1
a5c877
- Upstream release 26
a5c877
- Includes the necessary stages to build boot isos.
a5c877
2d00e0
* Fri Feb 12 2021 Christian Kellner <ckellner@redhat.com> - 25-1
2d00e0
- Upstream 25 release
2d00e0
- First tech preview of the new manifest format. Includes
2d00e0
  various new stages and inputs to be able to build ostree
2d00e0
  commits contained in a oci archive.
2d00e0
1ab45a
* Thu Jan 28 2021 Christian Kellner <ckellner@redhat.com> - 24-1
1ab45a
- Upstream 24 release
1ab45a
- Include new `Input` modules.
1ab45a
1ab45a
* Mon Nov 23 2020 Christian Kellner <ckellner@redhat.com> - 23-3
1ab45a
- only disable the dep. generator for runners, remove explicity
1ab45a
  python3 requirement again. The dependency should be picked up
1ab45a
  via the dependency generator now.
1ab45a
c91246
* Fri Nov 13 2020 Christian Kellner <ckellner@redhat.com> - 23-2
c91246
- Explicilty require python3. See the comment above the Requires
c91246
  for an explanation why this is needed.
c91246
e0b478
* Fri Oct 23 2020 Christian Kellner <ckellner@redhat.com> - 23-1
e0b478
- Upstream release 23
e0b478
- Do not mangle shebangs for assemblers, runners & stages.
e0b478
e0b478
* Wed Oct 14 2020 Christian Kellner <ckellner@redhat.com> - 22-1
e0b478
- Upstream release 22
e0b478
- Remove all patches since they are all in osbuild-22.
e0b478
- bubblewrap replaced systemd-nspawn for sandboxing; change the
e0b478
  requirements accordingly.
e0b478
7238b3
* Thu Aug 13 2020 Christian Kellner <ckellner@redhat.com> - 18-3
7238b3
- Add patch to allow nnp and nosuid domain transitions
7238b3
  https://github.com/osbuild/osbuild/pull/495
7238b3
c730a6
* Fri Jun 26 2020 Christian Kellner <ckellner@redhat.com> - 18-2
c730a6
- Add patch to not pass floats to curl in the files source
c730a6
  https://github.com/osbuild/osbuild/pull/459
c730a6
c730a6
* Tue Jun 23 2020 Christian Kellner <ckellner@redhat.com> - 18-1
c730a6
- Upstream release 18
c730a6
- All RHEL runners now use platform-python.
c730a6
c730a6
* Wed Jun 10 2020 Christian Kellner <ckellner@redhat.com> - 17-1
c730a6
- Upstream release 17
c730a6
- Add custom SELinux policy that lets osbuild set labels inside
c730a6
  the build root that are unknown to the host.
c730a6
33d4c8
* Thu Jun  4 2020 Christian Kellner <christian@kellner.me> - 16-1
33d4c8
- Upstream release 16
33d4c8
- Drop sources-fix-break-when-secrets-is-None.patch included in
33d4c8
  osbuild-16.
33d4c8
33d4c8
* Tue May 26 2020 Christian Kellner <ckellner@redhat.com> - 15-2
33d4c8
- Add a patch to allow org.osbuild.files source in the new format
33d4c8
  but without actually containing the secrets key.
33d4c8
  Taken from merged PR: https://github.com/osbuild/osbuild/pull/416
33d4c8
33d4c8
* Thu May 21 2020 Christian Kellner <ckellner@redhat.com> - 15-1
33d4c8
- New upstream release 15
33d4c8
- Drop draft4-validator.json patch, included in osbuild-15
33d4c8
33d4c8
* Wed May 13 2020 Christian Kellner <ckellner@redhat.com> - 14-2
33d4c8
- Add draft4-validator.json patch
33d4c8
  python3-jsonschema in RHEL currently has version 2.6.0 which
33d4c8
  has support validating up to and including draft4 of jsonschema.
33d4c8
  See https://github.com/osbuild/osbuild/pull/394
33d4c8
33d4c8
* Wed May 13 2020 Christian Kellner <ckellner@redhat.com> - 14-1
33d4c8
- Upstream release 14
33d4c8
- Install schemata to <datadir>/osbuild/schemas and include a
33d4c8
  symlink to it in /usr/lib/osbuild/schemas
33d4c8
- The directories /usr/lib/osbuild/{assemblers, stages}/osbuild
33d4c8
  got removed. Changes to osbuild made them obsolete.
33d4c8
740e31
* Wed Apr 15 2020 Christian Kellner <ckellner@redhat.com> - 12-1
740e31
- Sync with Fedora and use upstream release 12
740e31
- Specify the exact version in the 'python3-osbuild' requirement
740e31
  to avoid the library and the main binary being out of sync.
740e31
- osbuild-ostree sub-package with the necessary bits to create
740e31
  OSTree based images
740e31
- Turn off dependency generator for internal components
740e31
- Add NEWS.md file with the release notes and man pages
740e31
33d4c8
* Mon Dec 16 2019 Lars Karlitski <lars@karlitski.net> - 7-1
740e31
- New upstream release
740e31
740e31
* Sun Dec 1 2019 Tom Gundersen <teg@jklm.no> - 6-2
740e31
- New upstream release
740e31
740e31
* Thu Oct 24 2019 Lars Karlitski <lueberni@redhat.com> - 3-2
740e31
- add gating infra and tests
740e31
740e31
* Mon Aug 19 2019 Miro HronĨok <mhroncok@redhat.com> - 1-3
740e31
- Rebuilt for Python 3.8
740e31
740e31
* Mon Jul 29 2019 Martin Sehnoutka <msehnout@redhat.com> - 1-2
740e31
- update upstream URL to the new Github organization
740e31
740e31
* Wed Jul 17 2019 Martin Sehnoutka <msehnout@redhat.com> - 1-1
740e31
- Initial package