diff --git a/.gitignore b/.gitignore index e69de29..085edd2 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,5 @@ +/boom-0.9.tar.gz +/boom-6ff3e08.tar.gz +/boom-1.0.tar.gz +/boom-1.1.tar.gz +/boom-1.2.tar.gz diff --git a/0001-etc-Remove-executable-permission-from-etc-default-bo.patch b/0001-etc-Remove-executable-permission-from-etc-default-bo.patch new file mode 100644 index 0000000..d454da1 --- /dev/null +++ b/0001-etc-Remove-executable-permission-from-etc-default-bo.patch @@ -0,0 +1,22 @@ + etc/default/boom | 0 + tests/bootloader_configs/boom_off/etc/default/boom | 0 + tests/bootloader_configs/boom_on/etc/default/boom | 0 + tests/bootloader_configs/no_grub_d/etc/default/boom | 0 + 4 files changed, 0 insertions(+), 0 deletions(-) + mode change 100755 => 100644 etc/default/boom + mode change 100755 => 100644 tests/bootloader_configs/boom_off/etc/default/boom + mode change 100755 => 100644 tests/bootloader_configs/boom_on/etc/default/boom + mode change 100755 => 100644 tests/bootloader_configs/no_grub_d/etc/default/boom + +diff --git a/etc/default/boom b/etc/default/boom +old mode 100755 +new mode 100644 +diff --git a/tests/bootloader_configs/boom_off/etc/default/boom b/tests/bootloader_configs/boom_off/etc/default/boom +old mode 100755 +new mode 100644 +diff --git a/tests/bootloader_configs/boom_on/etc/default/boom b/tests/bootloader_configs/boom_on/etc/default/boom +old mode 100755 +new mode 100644 +diff --git a/tests/bootloader_configs/no_grub_d/etc/default/boom b/tests/bootloader_configs/no_grub_d/etc/default/boom +old mode 100755 +new mode 100644 diff --git a/0002-man-Fix-line-starting-with.patch b/0002-man-Fix-line-starting-with.patch new file mode 100644 index 0000000..f747576 --- /dev/null +++ b/0002-man-Fix-line-starting-with.patch @@ -0,0 +1,18 @@ + man/man8/boom.8 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/man/man8/boom.8 b/man/man8/boom.8 +index 7b862e7..9eee048 100644 +--- a/man/man8/boom.8 ++++ b/man/man8/boom.8 +@@ -1168,8 +1168,8 @@ describing the properties of the configured host profiles. + + The list of fields to display is given with \fB--options\fP as a comma + separated list of field names. To obtain a list of available fields run +-'\fBboom host list -o help\fP'. If the list of fields begins with the +-'\fB+\fP' character the specified fields are appended to the default ++\&'\fBboom host list -o help\fP'. If the list of fields begins with the ++\&'\fB+\fP' character the specified fields are appended to the default + field list. Otherwise the given list of fields replaces the default set + of report fields. + diff --git a/boom-boot.spec b/boom-boot.spec new file mode 100644 index 0000000..7dbb072 --- /dev/null +++ b/boom-boot.spec @@ -0,0 +1,225 @@ +%global summary A set of libraries and tools for managing boot loader entries +%global sphinx_docs 1 + +Name: boom-boot +Version: 1.2 +Release: 2%{?dist} +Summary: %{summary} + +License: GPLv2 +URL: https://github.com/snapshotmanager/boom +Source0: https://github.com/snapshotmanager/boom/archive/%{version}/boom-%{version}.tar.gz +Patch1: 0001-etc-Remove-executable-permission-from-etc-default-bo.patch +Patch2: 0002-man-Fix-line-starting-with.patch + +BuildArch: noarch + +BuildRequires: python3-setuptools +BuildRequires: python3-devel +%if 0%{?sphinx_docs} +BuildRequires: python3-sphinx +%endif + +Requires: python3-boom = %{version}-%{release} +Requires: %{name}-conf = %{version}-%{release} + +%package -n python3-boom +Summary: %{summary} +%{?python_provide:%python_provide python3-boom} +Requires: %{__python3} +Recommends: (lvm2 or brtfs-progs) +Recommends: %{name}-conf = %{version}-%{release} + +# There used to be a boom package in fedora, and there is boom packaged in +# copr. How to tell which one is installed? We need python3-boom and no boom +# only. +Conflicts: boom + +%package conf +Summary: %{summary} + +%package grub2 +Summary: %{summary} +Supplements: (grub2 and boom-boot = %{version}-%{release}) + +%description +Boom is a boot manager for Linux systems using boot loaders that support +the BootLoader Specification for boot entry configuration. + +Boom requires a BLS compatible boot loader to function: either the +systemd-boot project, or Grub2 with the BLS patch (Red Hat Grub2 builds +include this support in both Red Hat Enterprise Linux 7 and Fedora). + +%description -n python3-boom +Boom is a boot manager for Linux systems using boot loaders that support +the BootLoader Specification for boot entry configuration. + +Boom requires a BLS compatible boot loader to function: either the +systemd-boot project, or Grub2 with the BLS patch (Red Hat Grub2 builds +include this support in both Red Hat Enterprise Linux 7 and Fedora). + +This package provides python3 boom module. + +%description conf +Boom is a boot manager for Linux systems using boot loaders that support +the BootLoader Specification for boot entry configuration. + +Boom requires a BLS compatible boot loader to function: either the +systemd-boot project, or Grub2 with the BLS patch (Red Hat Grub2 builds +include this support in both Red Hat Enterprise Linux 7 and Fedora). + +This package provides configuration files for boom. + +%description grub2 +Boom is a boot manager for Linux systems using boot loaders that support +the BootLoader Specification for boot entry configuration. + +Boom requires a BLS compatible boot loader to function: either the +systemd-boot project, or Grub2 with the BLS patch (Red Hat Grub2 builds +include this support in both Red Hat Enterprise Linux 7 and Fedora). + +This package provides integration scripts for grub2 bootloader. + +%prep +%setup -n boom-%{version} +# NOTE: Do not use backup extension - MANIFEST.in is picking them +%patch1 -p1 +%patch2 -p1 + +%build +%if 0%{?sphinx_docs} +make -C doc html +rm doc/_build/html/.buildinfo +mv doc/_build/html doc/html +rm -r doc/_build +%endif + +%py3_build + +%install +%py3_install + +# Install Grub2 integration scripts +mkdir -p ${RPM_BUILD_ROOT}/etc/grub.d +mkdir -p ${RPM_BUILD_ROOT}/etc/default +install -m 755 etc/grub.d/42_boom ${RPM_BUILD_ROOT}/etc/grub.d +install -m 644 etc/default/boom ${RPM_BUILD_ROOT}/etc/default + +# Make configuration directories +# mode 0700 - in line with /boot/grub2 directory: +install -d -m 700 ${RPM_BUILD_ROOT}/boot/boom/profiles +install -d -m 700 ${RPM_BUILD_ROOT}/boot/boom/hosts +install -d -m 700 ${RPM_BUILD_ROOT}/boot/loader/entries +install -d -m 700 ${RPM_BUILD_ROOT}/boot/boom/cache +install -m 644 examples/boom.conf ${RPM_BUILD_ROOT}/boot/boom + +mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man8 +mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man5 +install -m 644 man/man8/boom.8 ${RPM_BUILD_ROOT}/%{_mandir}/man8 +install -m 644 man/man5/boom.5 ${RPM_BUILD_ROOT}/%{_mandir}/man5 + +rm doc/Makefile +rm doc/conf.py + +# Test suite currently does not operate in rpmbuild environment +#%%check +#%%{__python3} setup.py test + +%files +%license COPYING +%doc README.md +%{_bindir}/boom +%doc %{_mandir}/man*/boom.* + +%files -n python3-boom +%license COPYING +%doc README.md +%{python3_sitelib}/* +%doc doc +%doc examples +%doc tests + +%files conf +%license COPYING +%doc README.md +%dir /boot/boom +%config(noreplace) /boot/boom/boom.conf +%dir /boot/boom/profiles +%dir /boot/boom/hosts +%dir /boot/boom/cache +%dir /boot/loader/entries + +%files grub2 +%license COPYING +%doc README.md +%{_sysconfdir}/grub.d/42_boom +%config(noreplace) %{_sysconfdir}/default/boom + + +%changelog +* Mon Jul 27 2020 Fedora Release Engineering - 1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sun Jun 07 2020 Marian Csontos 1.2-1 +- Update to bug fix release 1.2. + +* Tue May 26 2020 Miro Hrončok - 1.1-4 +- Rebuilt for Python 3.9 + +* Tue May 26 2020 Marian Csontos 1.1-3 +- Fix unicode entries handling. +- Add tracebacks when --debug is used. + +* Tue May 26 2020 Miro Hrončok - 1.1-2 +- Rebuilt for Python 3.9 + +* Thu May 14 2020 Marian Csontos 1.1-1 +- Update to new upstream release 1.1. +- Add caching of kernel and init ramdisk images. + +* Tue Jan 28 2020 Fedora Release Engineering - 1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Jan 20 2020 Marian Csontos 1.0-1 +- Update to new upstream release 1.0. + +* Thu Oct 03 2019 Miro Hrončok - 1.0-0.5.20190329git6ff3e08 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 1.0-0.4.20190329git6ff3e08 +- Rebuilt for Python 3.8 + +* Wed Jul 24 2019 Fedora Release Engineering - 1.0-0.3.20190329git6ff3e08 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu May 09 2019 Marian Csontos 1.0-0.2.20190329git6ff3e08 +- Fix packaging issues. + +* Thu May 09 2019 Marian Csontos 1.0-0.1.20190329git6ff3e08 +- Pre-release of new version. + +* Thu Jan 31 2019 Fedora Release Engineering - 0.9-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jul 17 2018 Marian Csontos 0.9-4 +- Change dependencies. + +* Mon Jul 16 2018 Marian Csontos 0.9-3 +- Split executable, python module and configuration. + +* Wed Jun 27 2018 Marian Csontos 0.9-2 +- Spin off grub2 into subpackage + +* Wed Jun 27 2018 Marian Csontos 0.9-1 +- Update to new upstream 0.9. +- Fix boot_id caching. + +* Fri Jun 08 2018 Marian Csontos 0.8.5-6.2 +- Remove example files from /boot/boom/profiles. + +* Fri May 11 2018 Marian Csontos 0.8.5-6.1 +- Files in /boot are treated as configuration files. + +* Thu Apr 26 2018 Marian Csontos 0.8.5-6 +- Package upstream version 0.8-5.6 + diff --git a/sources b/sources new file mode 100644 index 0000000..90108e1 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (boom-1.2.tar.gz) = f59c9a76c58c997ca72b6393ab1169fbd1655736ac6c258f75055d6bcc03335c7ef979fa97b8b5e6aebcf13c78480caa5958856edf543623b6e39e779cae3b82 diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..5a3e264 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,52 @@ +--- +- hosts: localhost + roles: + - role: standard-test-source + tags: + - classic + - role: standard-test-basic + tags: + - classic + tests: + - testsuite_pre: + dir: . + # boom test suite requires LV to exist on the system. We create one in case there is not one... + run: | + set -xv; + rm -rf testsuite &>/dev/null; + if [[ ! -b /dev/boomvg/root ]]; then dd if=/dev/zero of=/dev/shm/boompv bs=1M count=128 && PV=$(losetup --show -f /dev/shm/boompv) && vgcreate boomvg $PV && lvcreate -n root -L32M boomvg; fi + - testsuite: + # to run the testsuite against installed python modules, we should run + # outside of source directory. Let's copy tests into new directory... + dir: . + run: | + set -xv; + mkdir testsuite && cd testsuite && cp -R ../source/tests . && python3 -m unittest -v tests/[a-z]*.py + - cli: + dir: . + run: | + ( + set -xve; + + boom profile list; + boom profile create --name test --short-name test --os-version rhel8 --os-version-id rhel8 --uname-pattern el8; + boom profile list; + boom entry list; + + PROFILE=$(boom profile list --name test --no-headings -o osid); + boom entry create --root-lv boomvg/root --title test --profile $PROFILE; + boom entry list; + + boom entry delete --title test; + + boom profile delete --name test; + ) + - testsuite_post: + dir: . + run: | + set -xv; + vgremove -ff boomvg; losetup -D; rm -f /dev/shm/boompv + required_packages: + - boom-boot + - boom-boot-grub2 + - lvm2