Compare commits

...

No commits in common. "c9s" and "c8" have entirely different histories.
c9s ... c8

12 changed files with 230 additions and 156 deletions

1
.boom-boot.metadata Normal file
View File

@ -0,0 +1 @@
4c95e888f7aecd9dd809c6f0d44ce650a5ae07da SOURCES/boom-1.3.tar.gz

11
.gitignore vendored
View File

@ -1,10 +1 @@
/boom-0.9.tar.gz SOURCES/boom-1.3.tar.gz
/boom-6ff3e08.tar.gz
/boom-1.0.tar.gz
/boom-1.1.tar.gz
/boom-1.2.tar.gz
/boom-1.3.tar.gz
/boom-1.4.tar.gz
/boom-1.5.1.tar.gz
/boom-1.6.0.tar.gz
/boom-1.6.1.tar.gz

View File

@ -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

View File

@ -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.

View File

@ -0,0 +1,16 @@
boom/report.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/boom/report.py b/boom/report.py
index 8e55aa3..f7ff4a1 100644
--- a/boom/report.py
+++ b/boom/report.py
@@ -121,7 +121,7 @@ class BoomReportOpts(object):
class BoomReportObjType(object):
"""BoomReportObjType()
- Class representing a type of objecct to be reported on.
+ Class representing a type of object to be reported on.
Instances of ``BoomReportObjType`` must specify an identifier,
a description, and a data function that will return the correct
type of object from a compound object containing data objects

View File

@ -0,0 +1,16 @@
boom/command.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/boom/command.py b/boom/command.py
index be638df..c9c2f6b 100644
--- a/boom/command.py
+++ b/boom/command.py
@@ -657,7 +657,7 @@ def create_entry(title, version, machine_id, root_device, lvm_root_lv=None,
:returns: a ``BootEntry`` object corresponding to the new entry.
:rtype: ``BootEntry``
:raises: ``ValueError`` if either required values are missing or
- a duplicate entry exists, or``OsError`` if an error
+ a duplicate entry exists, or ``OsError`` if an error
occurs while writing the entry file.
"""
if not title and not profile.title:

View File

@ -0,0 +1,54 @@
boom/command.py | 5 +++--
tests/command_tests.py | 16 ++++++++++++++++
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/boom/command.py b/boom/command.py
index c9c2f6b..feb5b65 100644
--- a/boom/command.py
+++ b/boom/command.py
@@ -1883,7 +1883,8 @@ def _optional_key_to_arg(optional_key):
_key_map = {
BOOM_ENTRY_GRUB_USERS: "--grub-users",
BOOM_ENTRY_GRUB_ARG: "--grub-arg",
- BOOM_ENTRY_GRUB_CLASS: "--grub-class"
+ BOOM_ENTRY_GRUB_CLASS: "--grub-class",
+ BOOM_ENTRY_GRUB_ID: "--grub-id"
}
return _key_map[optional_key] if optional_key in _key_map else None
@@ -1914,7 +1915,7 @@ def _set_optional_key_defaults(profile, cmd_args):
if bls_key not in profile.optional_keys:
if getattr(cmd_args, bls_key) is not None:
print("Profile with os_id='%s' does not support %s" %
- (profile.disp_os_id, _optional_key_to_arg(bls_key)))
+ (profile.disp_os_id, _optional_key_to_arg(opt_key)))
return 1
else:
if getattr(cmd_args, bls_key) is None:
diff --git a/tests/command_tests.py b/tests/command_tests.py
index 00cda3b..d7a766a 100644
--- a/tests/command_tests.py
+++ b/tests/command_tests.py
@@ -244,6 +244,22 @@ class CommandHelperTests(unittest.TestCase):
(add_opts, del_opts) = _merge_add_del_opts(bp, to_add, to_del)
self.assertEqual(["log_buf_len=16M", "debug"], add_opts)
+ def test__optional_key_to_arg_valid(self):
+ _optional_key_to_arg = boom.command._optional_key_to_arg
+ valid_keys_and_args = {
+ "BOOM_ENTRY_GRUB_USERS": "--grub-users",
+ "BOOM_ENTRY_GRUB_ARG": "--grub-arg",
+ "BOOM_ENTRY_GRUB_CLASS": "--grub-class",
+ "BOOM_ENTRY_GRUB_ID": "--grub-id"
+ }
+ for opt_key in valid_keys_and_args.keys():
+ self.assertEqual(_optional_key_to_arg(opt_key),
+ valid_keys_and_args[opt_key])
+
+ def test__optional_key_to_arg_invalid(self):
+ _optional_key_to_arg = boom.command._optional_key_to_arg
+ self.assertEqual(_optional_key_to_arg("INVALID_KEY"), None)
+
# Default test OsProfile identifiers
test_os_id = "9cb53ddda889d6285fd9ab985a4c47025884999f"

View File

@ -0,0 +1,13 @@
etc/default/boom | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/etc/default/boom b/etc/default/boom
index cd5f772..451cb37 100755
--- a/etc/default/boom
+++ b/etc/default/boom
@@ -1,3 +1,3 @@
-BOOM_USE_SUBMENU="yes"
+BOOM_USE_SUBMENU="no"
BOOM_SUBMENU_NAME="Snapshots"
-BOOM_ENABLE_GRUB="yes"
+BOOM_ENABLE_GRUB="no"

View File

@ -2,37 +2,39 @@
%global sphinx_docs 1 %global sphinx_docs 1
Name: boom-boot Name: boom-boot
Version: 1.6.1 Version: 1.3
Release: 2%{?dist} Release: 2%{?dist}
Summary: %{summary} Summary: %{summary}
License: GPL-2.0-only License: GPLv2
URL: https://github.com/snapshotmanager/boom URL: https://github.com/snapshotmanager/boom
Source0: https://github.com/snapshotmanager/boom/archive/%{version}/boom-%{version}.tar.gz Source0: https://github.com/snapshotmanager/boom/archive/%{version}/boom-%{version}.tar.gz
Patch0: Disable-GRUB2-plugin-on-RHEL-8.patch
Patch1: 0001-etc-Remove-executable-permission-from-etc-default-bo.patch
Patch2: 0002-man-Fix-line-starting-with.patch
Patch3: 0003-report-fix-docstring-typo-objecct.patch
Patch4: 0004-command-fix-docstring-typo-or-OsError.patch
# BZ 1929838:
Patch5: 0005-command-fix-optional-BLS-key-to-command-line-argumen.patch
BuildArch: noarch BuildArch: noarch
BuildRequires: make
BuildRequires: python3-setuptools BuildRequires: python3-setuptools
BuildRequires: python3-devel BuildRequires: python3-devel
%if 0%{?sphinx_docs} %if 0%{?sphinx_docs}
BuildRequires: python3-dbus
BuildRequires: python3-sphinx BuildRequires: python3-sphinx
%endif %endif
BuildRequires: make BuildRequires: make
BuildRequires: systemd-rpm-macros
Requires: python3-boom = %{version}-%{release} Requires: python3-boom = %{version}-%{release}
Requires: %{name}-conf = %{version}-%{release} Requires: %{name}-conf = %{version}-%{release}
Requires: systemd >= 252-18
Obsoletes: boom-boot-grub2 <= 1.3
# boom-grub2 was not an official name of subpackage in fedora, but was used upstream:
Obsoletes: boom-grub2 <= 1.3
%package -n python3-boom %package -n python3-boom
Summary: %{summary} Summary: %{summary}
%{?python_provide:%python_provide python3-boom} # Unsupported on RHEL-8 :-(
#%%{?python_provide:%%python_provide python%%{__python_pkgversion}-boom}
# Do we need this??? IMO not
#Provides: python3-boom = %%{version}-%%{release}
Requires: %{__python3} Requires: %{__python3}
Recommends: (lvm2 or brtfs-progs) Recommends: (lvm2 or brtfs-progs)
Recommends: %{name}-conf = %{version}-%{release} Recommends: %{name}-conf = %{version}-%{release}
@ -45,6 +47,10 @@ Conflicts: boom
%package conf %package conf
Summary: %{summary} Summary: %{summary}
%package grub2
Summary: %{summary}
Supplements: (grub2 and boom-boot = %{version}-%{release})
%description %description
Boom is a boot manager for Linux systems using boot loaders that support Boom is a boot manager for Linux systems using boot loaders that support
the BootLoader Specification for boot entry configuration. the BootLoader Specification for boot entry configuration.
@ -73,8 +79,25 @@ include this support in both Red Hat Enterprise Linux 7 and Fedora).
This package provides configuration files for boom. 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 %prep
%autosetup -p1 -n boom-%{version} %setup -n boom-%{version}
# NOTE: Do not use backup extension - MANIFEST.in is picking them
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build %build
%if 0%{?sphinx_docs} %if 0%{?sphinx_docs}
@ -89,6 +112,12 @@ rm -r doc/_build
%install %install
%py3_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 # Make configuration directories
# mode 0700 - in line with /boot/grub2 directory: # 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/profiles
@ -96,15 +125,13 @@ 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/loader/entries
install -d -m 700 ${RPM_BUILD_ROOT}/boot/boom/cache install -d -m 700 ${RPM_BUILD_ROOT}/boot/boom/cache
install -m 644 examples/boom.conf ${RPM_BUILD_ROOT}/boot/boom install -m 644 examples/boom.conf ${RPM_BUILD_ROOT}/boot/boom
install -m 644 examples/profiles/*.profile ${RPM_BUILD_ROOT}/boot/boom/profiles
mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man8 mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man8
mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man5 mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man5
install -m 644 man/man8/boom.8 ${RPM_BUILD_ROOT}/%{_mandir}/man8 install -m 644 man/man8/boom.8 ${RPM_BUILD_ROOT}/%{_mandir}/man8
install -m 644 man/man5/boom.5 ${RPM_BUILD_ROOT}/%{_mandir}/man5 install -m 644 man/man5/boom.5 ${RPM_BUILD_ROOT}/%{_mandir}/man5
mkdir -p ${RPM_BUILD_ROOT}/%{_systemdgeneratordir}
install -m 755 systemd/snapshot-remount-fs ${RPM_BUILD_ROOT}/%{_systemdgeneratordir}
rm doc/Makefile rm doc/Makefile
rm doc/conf.py rm doc/conf.py
@ -116,7 +143,6 @@ rm doc/conf.py
%license COPYING %license COPYING
%doc README.md %doc README.md
%{_bindir}/boom %{_bindir}/boom
%{_systemdgeneratordir}/snapshot-remount-fs
%doc %{_mandir}/man*/boom.* %doc %{_mandir}/man*/boom.*
%files -n python3-boom %files -n python3-boom
@ -133,102 +159,77 @@ rm doc/conf.py
%dir /boot/boom %dir /boot/boom
%config(noreplace) /boot/boom/boom.conf %config(noreplace) /boot/boom/boom.conf
%dir /boot/boom/profiles %dir /boot/boom/profiles
%config(noreplace) /boot/boom/profiles/*
%dir /boot/boom/hosts %dir /boot/boom/hosts
%dir /boot/boom/cache %dir /boot/boom/cache
%dir /boot/loader/entries %dir /boot/loader/entries
%files grub2
%license COPYING
%doc README.md
%{_sysconfdir}/grub.d/42_boom
%config(noreplace) %{_sysconfdir}/default/boom
%changelog %changelog
* Tue May 21 2024 Bryan Gurney <bgurney@redhat.com> - 1.6.1-2 * Tue Jun 15 2021 Marian Csontos <mcsontos@redhat.com> 1.3-2
- Add issues resolved by release 1.6.1 - Fix --grub-id option handling.
- Resolves: RHEL-36001
- Resolves: RHEL-36664
- Resolves: RHEL-36667
- Resolves: RHEL-36691
* Mon May 20 2024 Bryan Gurney <bgurney@redhat.com> - 1.6.1-1 * Sat Jan 30 2021 Marian Csontos <mcsontos@redhat.com> 1.3-1
- Update to release 1.6.1. - Check for duplicates consistently in the clone and edit commands.
- Apply correct command line precedence to --add-opts and --del-opts.
- Correctly merge multiple --add/del-opts when editing or cloning.
- Correctly propagate --add/del-opts in boom edit commands.
- Enhanced logging of --add/del-opts merge logic.
- The default Python interpreter is now /usr/bin/python.
- Fixed re-ordering of options modifications when read from disk.
- Do not set BootParams attributes for anonymous option words.
- Make lvm_root_lv validation checks more strict.
- Improve BootParams.from_entry() parameter recovery debug logging.
- Include sample OsProfile for Fedora 32.
- Re-set sandbox state in test suite to ensure run-to-run consistency.
- Improve compatibility with Red Hat BLS implementation.
- Allow non-boom managed entries to be listed and displayed.
- Handle quirks in Red Hat's use of the BLS machine_id key.
- Allow grub2 bootloader variables to be expanded when cloning entries.
- Simplify clone_entry logic and make consistent with edit_entry.
- Ensure stable ordering of legacy boot entry configuration.
* Tue Dec 05 2023 Marian Csontos <mcsontos@redhat.com> - 1.6.0-2 * Mon Jun 29 2020 Marian Csontos <mcsontos@redhat.com> 1.2-2
- Add dependency on systemd version - Fix RHEL-8 profiles.
- Fix --add/del-opt precedence.
* Wed Nov 22 2023 Marian Csontos <mcsontos@redhat.com> - 1.6.0-1 - Fix backup image reference counting.
- Update to release 1.6.0.
* Tue May 16 2023 Marian Csontos <mcsontos@redhat.com> - 1.5.1-1
- Update to release 1.5.1.
* Wed Jul 13 2022 Marian Csontos <mcsontos@redhat.com> 1.4-4
- Fix handling of read-only entries.
- Add OS names for recent versions.
* Tue May 24 2022 Marian Csontos <mcsontos@redhat.com> 1.4-3
- Fix missing /boot/boom/profiles directory.
* Tue May 24 2022 Marian Csontos <mcsontos@redhat.com> 1.4-2
- Update gating.yaml.
* Mon May 23 2022 Marian Csontos <mcsontos@redhat.com> 1.4-1
- Update to release 1.4.
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 1.3-2
- Rebuilt for Python 3.10
* Fri Jan 29 2021 Marian Csontos <mcsontos@redhat.com> 1.3-1
- Update to release 1.3.
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sun Jun 07 2020 Marian Csontos <mcsontos@redhat.com> 1.2-1 * Sun Jun 07 2020 Marian Csontos <mcsontos@redhat.com> 1.2-1
- Update to bug fix release 1.2. - Update to bug fix release 1.2.
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 1.1-4 * Tue May 26 2020 Marian Csontos <mcsontos@redhat.com> 1.1-2
- Rebuilt for Python 3.9
* Tue May 26 2020 Marian Csontos <mcsontos@redhat.com> 1.1-3
- Fix unicode entries handling. - Fix unicode entries handling.
- Add tracebacks when --debug is used. - Add tracebacks when --debug is used.
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 1.1-2
- Rebuilt for Python 3.9
* Thu May 14 2020 Marian Csontos <mcsontos@redhat.com> 1.1-1 * Thu May 14 2020 Marian Csontos <mcsontos@redhat.com> 1.1-1
- Update to new upstream release 1.1. - Update to new upstream release 1.1.
- Add caching of kernel and init ramdisk images. - Add caching of kernel and init ramdisk images.
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-2 * Fri Nov 29 2019 Marian Csontos <mcsontos@redhat.com> 1.0-1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Jan 20 2020 Marian Csontos <mcsontos@redhat.com> 1.0-1
- Update to new upstream release 1.0. - Update to new upstream release 1.0.
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 1.0-0.5.20190329git6ff3e08 * Mon Jun 10 2019 Marian Csontos <mcsontos@redhat.com> 1.0-0.2.20190610git246b116
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 1.0-0.4.20190329git6ff3e08
- Rebuilt for Python 3.8
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-0.3.20190329git6ff3e08
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu May 09 2019 Marian Csontos <mcsontos@redhat.com> 1.0-0.2.20190329git6ff3e08
- Fix packaging issues. - Fix packaging issues.
* Thu May 09 2019 Marian Csontos <mcsontos@redhat.com> 1.0-0.1.20190329git6ff3e08 * Mon May 06 2019 Marian Csontos <mcsontos@redhat.com> 1.0-0.1.20190329git6ff3e08
- Pre-release of new version. - Test upstream packaging.
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.9-5 * Mon Jan 14 2019 Marian Csontos <mcsontos@redhat.com> 0.9-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - Reduce log level of "Could not load BootEntry" messages.
- Raise more appropriate LookupError on unknown BLS keys.
* Tue Dec 18 2018 Marian Csontos <mcsontos@redhat.com> 0.9-6
- Disable GRUB2 plugin on RHEL-8.
* Mon Sep 17 2018 Tomas Orsava <torsava@redhat.com> - 0.9-5
- Require the Python interpreter directly instead of using the package name
- Related: rhbz#1619153
* Tue Jul 17 2018 Marian Csontos <mcsontos@redhat.com> 0.9-4 * Tue Jul 17 2018 Marian Csontos <mcsontos@redhat.com> 0.9-4
- Change dependencies. - Change dependencies.

View File

@ -1,6 +0,0 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

View File

@ -1 +0,0 @@
SHA512 (boom-1.6.1.tar.gz) = 33a66e9a4ed8b9a4ff727a542725944cd52c58485ebd9e9c5df9b0557a73c575f4427de07134b72cd248a41a41f1a52d99fc949481170977b0d28ad756e1d793

View File

@ -1,51 +0,0 @@
---
- 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
- lvm2