import boom-boot-1.3-1.el8
This commit is contained in:
parent
4a576b6448
commit
8e3e525652
@ -1 +1 @@
|
|||||||
67070610fcc9a8ee2c4fcdb165947b1d30599342 SOURCES/boom-1.2.tar.gz
|
4c95e888f7aecd9dd809c6f0d44ce650a5ae07da SOURCES/boom-1.3.tar.gz
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/boom-1.2.tar.gz
|
SOURCES/boom-1.3.tar.gz
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
boom.spec | 2 +-
|
|
||||||
boom/__init__.py | 2 +-
|
|
||||||
doc/conf.py | 4 ++--
|
|
||||||
3 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/boom.spec b/boom.spec
|
|
||||||
index 160aa53..9331112 100644
|
|
||||||
--- a/boom.spec
|
|
||||||
+++ b/boom.spec
|
|
||||||
@@ -2,7 +2,7 @@
|
|
||||||
%global sphinx_docs 1
|
|
||||||
|
|
||||||
Name: boom
|
|
||||||
-Version: 1.1
|
|
||||||
+Version: 1.2
|
|
||||||
Release: 1%{?dist}
|
|
||||||
Summary: %{summary}
|
|
||||||
|
|
||||||
diff --git a/boom/__init__.py b/boom/__init__.py
|
|
||||||
index fa17610..34f2d14 100644
|
|
||||||
--- a/boom/__init__.py
|
|
||||||
+++ b/boom/__init__.py
|
|
||||||
@@ -35,6 +35,6 @@ from __future__ import print_function
|
|
||||||
from ._boom import *
|
|
||||||
from ._boom import __all__
|
|
||||||
|
|
||||||
-__version__ = "1.1"
|
|
||||||
+__version__ = "1.2"
|
|
||||||
|
|
||||||
# vim: set et ts=4 sw=4 :
|
|
||||||
diff --git a/doc/conf.py b/doc/conf.py
|
|
||||||
index cccdcfa..043655b 100644
|
|
||||||
--- a/doc/conf.py
|
|
||||||
+++ b/doc/conf.py
|
|
||||||
@@ -64,9 +64,9 @@ author = u'Bryn M. Reeves'
|
|
||||||
# built documents.
|
|
||||||
#
|
|
||||||
# The short X.Y version.
|
|
||||||
-version = u'1.1'
|
|
||||||
+version = u'1.2'
|
|
||||||
# The full version, including alpha/beta/rc tags.
|
|
||||||
-release = u'1.1'
|
|
||||||
+release = u'1.2'
|
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
||||||
# for a list of supported languages.
|
|
@ -1,117 +0,0 @@
|
|||||||
boom/command.py | 84 ++++++++++++++++++++++++++++++++++++++++++---------------
|
|
||||||
1 file changed, 63 insertions(+), 21 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/boom/command.py b/boom/command.py
|
|
||||||
index dc9abae..8900457 100644
|
|
||||||
--- a/boom/command.py
|
|
||||||
+++ b/boom/command.py
|
|
||||||
@@ -482,24 +482,72 @@ def _do_print_type(report_fields, selected, output_fields=None,
|
|
||||||
return br.report_output()
|
|
||||||
|
|
||||||
|
|
||||||
-def _merge_add_del_opts(orig_opts, opts):
|
|
||||||
+def _merge_add_del_opts(bp, add_opts, del_opts):
|
|
||||||
"""Merge a set of existing bootparams option alterations with
|
|
||||||
a set of command-line provided values to produce a single
|
|
||||||
set of options to add or remove from a cloned or edited
|
|
||||||
``BootEntry``.
|
|
||||||
- :param orig_opts: A list of original option modifications
|
|
||||||
- :param opts: A space-separated string containing a list of
|
|
||||||
- command line option modifications
|
|
||||||
- :returns: A single list containing the merged options
|
|
||||||
- """
|
|
||||||
- # Merge new and cloned kernel options
|
|
||||||
- all_opts = set()
|
|
||||||
- if opts:
|
|
||||||
- all_opts.update(opts.split())
|
|
||||||
- if orig_opts:
|
|
||||||
- all_opts.update(orig_opts)
|
|
||||||
|
|
||||||
- return list(all_opts)
|
|
||||||
+ The sets are merged giving precedence to alterations on the
|
|
||||||
+ current command line: i.e. if an option is present in both
|
|
||||||
+ ``bp.del_opts`` and ``add_opts`` (or vice versa) then the
|
|
||||||
+ option taken from the current command line will be effective.
|
|
||||||
+
|
|
||||||
+ :param bp: A ``BootParams`` object with the original ``add_opts``
|
|
||||||
+ and ``del_opts`` values.
|
|
||||||
+ :param add_opts: A space-separated string containing a list of
|
|
||||||
+ additional options taken from the current
|
|
||||||
+ command line.
|
|
||||||
+ :param del_opts: A space-separated string containing a list of
|
|
||||||
+ options to delete taken from the current
|
|
||||||
+ command line.
|
|
||||||
+ :returns: A tuple ``(effective_add_opts, effective_del_opts)``
|
|
||||||
+ giving the final effective values as a list of
|
|
||||||
+ strings, one per option word.
|
|
||||||
+ """
|
|
||||||
+ def _merge_opts(orig_opts, opts, r_opts):
|
|
||||||
+ # Merge new and cloned kernel options
|
|
||||||
+ all_opts = set()
|
|
||||||
+ if opts:
|
|
||||||
+ all_opts.update(opts)
|
|
||||||
+ if orig_opts:
|
|
||||||
+ all_opts.update(orig_opts)
|
|
||||||
+ all_opts = list(all_opts)
|
|
||||||
+ return [o for o in all_opts if o not in r_opts]
|
|
||||||
+
|
|
||||||
+ _log_debug_cmd("Add opts: %s" % add_opts)
|
|
||||||
+ _log_debug_cmd("Del opts: %s" % del_opts)
|
|
||||||
+ _log_debug_cmd("Original add_opts: %s" % bp.add_opts)
|
|
||||||
+ _log_debug_cmd("Original del_opts: %s" % bp.del_opts)
|
|
||||||
+
|
|
||||||
+ r_del_opts = []
|
|
||||||
+ r_add_opts = []
|
|
||||||
+
|
|
||||||
+ add_opts = add_opts.split() if add_opts else []
|
|
||||||
+ del_opts = del_opts.split() if del_opts else []
|
|
||||||
+
|
|
||||||
+ for add_opt in list(add_opts):
|
|
||||||
+ # Do not allow conflicting command line add/del opts
|
|
||||||
+ if add_opt in del_opts:
|
|
||||||
+ raise ValueError("Conflicting --add-opts %s and --del-opts %s" %
|
|
||||||
+ (add_opt, add_opt))
|
|
||||||
+
|
|
||||||
+ if add_opt in bp.del_opts:
|
|
||||||
+ r_del_opts.append(add_opt)
|
|
||||||
+ add_opts.remove(add_opt)
|
|
||||||
+
|
|
||||||
+ for del_opt in list(del_opts):
|
|
||||||
+ if del_opt in bp.add_opts:
|
|
||||||
+ r_add_opts.append(del_opt)
|
|
||||||
+ del_opts.remove(del_opt)
|
|
||||||
+
|
|
||||||
+ add_opts = _merge_opts(bp.add_opts, add_opts, r_add_opts)
|
|
||||||
+ del_opts = _merge_opts(bp.del_opts, del_opts, r_del_opts)
|
|
||||||
+
|
|
||||||
+ _log_debug_cmd("Effective add options: %s" % add_opts)
|
|
||||||
+ _log_debug_cmd("Effective del options: %s" % del_opts)
|
|
||||||
+
|
|
||||||
+ return (add_opts, del_opts)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
@@ -759,10 +807,7 @@ def clone_entry(selection=None, title=None, version=None, machine_id=None,
|
|
||||||
else be.bp.btrfs_subvol_id)
|
|
||||||
profile = profile if profile else be._osp
|
|
||||||
|
|
||||||
- add_opts = _merge_add_del_opts(be.bp.add_opts, add_opts)
|
|
||||||
- del_opts = _merge_add_del_opts(be.bp.del_opts, del_opts)
|
|
||||||
- _log_debug_cmd("Effective add options: %s" % add_opts)
|
|
||||||
- _log_debug_cmd("Effective del options: %s" % del_opts)
|
|
||||||
+ (add_opts, del_opts) = _merge_add_del_opts(be.bp, add_opts, del_opts)
|
|
||||||
|
|
||||||
bp = BootParams(version, root_device, lvm_root_lv=lvm_root_lv,
|
|
||||||
btrfs_subvol_path=btrfs_subvol_path,
|
|
||||||
@@ -864,10 +909,7 @@ def edit_entry(selection=None, title=None, version=None, machine_id=None,
|
|
||||||
machine_id = machine_id or be.machine_id
|
|
||||||
version = version or be.version
|
|
||||||
|
|
||||||
- add_opts = _merge_add_del_opts(be.bp.add_opts, add_opts)
|
|
||||||
- del_opts = _merge_add_del_opts(be.bp.del_opts, del_opts)
|
|
||||||
- _log_debug_cmd("Effective add options: %s" % add_opts)
|
|
||||||
- _log_debug_cmd("Effective del options: %s" % del_opts)
|
|
||||||
+ (add_opts, del_opts) = _merge_add_del_opts(be.bp, add_opts, del_opts)
|
|
||||||
|
|
||||||
be._osp = profile or be._osp
|
|
||||||
be.title = title or be.title
|
|
@ -1,25 +0,0 @@
|
|||||||
boom/command.py | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/boom/command.py b/boom/command.py
|
|
||||||
index 8900457..165a8a8 100644
|
|
||||||
--- a/boom/command.py
|
|
||||||
+++ b/boom/command.py
|
|
||||||
@@ -2256,6 +2256,9 @@ def _edit_cmd(cmd_args, select, opts, identifier):
|
|
||||||
|
|
||||||
profile = _find_profile(cmd_args, version, machine_id, "edit")
|
|
||||||
|
|
||||||
+ add_opts = cmd_args.add_opts
|
|
||||||
+ del_opts = cmd_args.del_opts
|
|
||||||
+
|
|
||||||
arch = cmd_args.architecture
|
|
||||||
|
|
||||||
try:
|
|
||||||
@@ -2264,6 +2267,7 @@ def _edit_cmd(cmd_args, select, opts, identifier):
|
|
||||||
lvm_root_lv=lvm_root_lv,
|
|
||||||
btrfs_subvol_path=btrfs_subvol_path,
|
|
||||||
btrfs_subvol_id=btrfs_subvol_id, profile=profile,
|
|
||||||
+ add_opts=add_opts, del_opts=del_opts,
|
|
||||||
architecture=arch, expand=cmd_args.expand_variables)
|
|
||||||
except ValueError as e:
|
|
||||||
print(e)
|
|
@ -1,19 +0,0 @@
|
|||||||
boom/command.py | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/boom/command.py b/boom/command.py
|
|
||||||
index 165a8a8..c164b33 100644
|
|
||||||
--- a/boom/command.py
|
|
||||||
+++ b/boom/command.py
|
|
||||||
@@ -927,6 +927,11 @@ def edit_entry(selection=None, title=None, version=None, machine_id=None,
|
|
||||||
be.initrd = _cache_image(be.initrd, images == I_BACKUP)
|
|
||||||
be.linux = _cache_image(be.linux, images == I_BACKUP)
|
|
||||||
|
|
||||||
+ # Is the entry now identical to an existing entry?
|
|
||||||
+ if len(find_entries(Selection(boot_id=be.boot_id))) > 1:
|
|
||||||
+ raise ValueError("Entry already exists (boot_id=%s)." %
|
|
||||||
+ be.disp_boot_id)
|
|
||||||
+
|
|
||||||
be.update_entry(expand=expand)
|
|
||||||
__write_legacy()
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
tests/command_tests.py | 36 ++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 36 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/tests/command_tests.py b/tests/command_tests.py
|
|
||||||
index 6d0c79b..fee6a33 100644
|
|
||||||
--- a/tests/command_tests.py
|
|
||||||
+++ b/tests/command_tests.py
|
|
||||||
@@ -519,6 +519,42 @@ class CommandTests(unittest.TestCase):
|
|
||||||
be.delete_entry()
|
|
||||||
self.assertFalse(exists(be._entry_path))
|
|
||||||
|
|
||||||
+ def test_clone_entry_del_opts_and_re_add(self):
|
|
||||||
+ # Fedora 24 (Workstation Edition)
|
|
||||||
+
|
|
||||||
+ # Delete rhgb quiet
|
|
||||||
+ osp = get_os_profile_by_id(test_os_id)
|
|
||||||
+ be = create_entry("delopts", "2.6.0", "ffffffff", test_lv,
|
|
||||||
+ lvm_root_lv=test_root_lv, profile=osp,
|
|
||||||
+ del_opts="rhgb quiet")
|
|
||||||
+
|
|
||||||
+ # Assert it's gone
|
|
||||||
+ self.assertFalse("rhgb quiet" in be.options)
|
|
||||||
+
|
|
||||||
+ be2 = clone_entry(Selection(boot_id=be.boot_id), title="addoptsclone",
|
|
||||||
+ add_opts="rhgb quiet")
|
|
||||||
+
|
|
||||||
+ # Assert it's back
|
|
||||||
+ self.assertTrue("rhgb quiet" in be2.options)
|
|
||||||
+
|
|
||||||
+ def test_clone_entry_add_opts_and_re_del(self):
|
|
||||||
+ # Fedora 24 (Workstation Edition)
|
|
||||||
+
|
|
||||||
+ # Add debug
|
|
||||||
+ osp = get_os_profile_by_id(test_os_id)
|
|
||||||
+ be = create_entry("addopts", "2.6.0", "ffffffff", test_lv,
|
|
||||||
+ lvm_root_lv=test_root_lv, profile=osp,
|
|
||||||
+ add_opts="debug")
|
|
||||||
+
|
|
||||||
+ # Assert it's there
|
|
||||||
+ self.assertTrue("debug" in be.options)
|
|
||||||
+
|
|
||||||
+ be2 = clone_entry(Selection(boot_id=be.boot_id), title="deloptsclone",
|
|
||||||
+ del_opts="debug")
|
|
||||||
+
|
|
||||||
+ # Assert it's gone
|
|
||||||
+ self.assertFalse("debug" in be2.options)
|
|
||||||
+
|
|
||||||
@unittest.skipIf(not have_root_lv(), "requires root LV")
|
|
||||||
def test_clone_delete_entry(self):
|
|
||||||
# Fedora 24 (Workstation Edition)
|
|
@ -1,23 +0,0 @@
|
|||||||
tests/command_tests.py | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/tests/command_tests.py b/tests/command_tests.py
|
|
||||||
index fee6a33..b85b7dd 100644
|
|
||||||
--- a/tests/command_tests.py
|
|
||||||
+++ b/tests/command_tests.py
|
|
||||||
@@ -519,6 +519,7 @@ class CommandTests(unittest.TestCase):
|
|
||||||
be.delete_entry()
|
|
||||||
self.assertFalse(exists(be._entry_path))
|
|
||||||
|
|
||||||
+ @unittest.skipIf(not have_root_lv(), "requires root LV")
|
|
||||||
def test_clone_entry_del_opts_and_re_add(self):
|
|
||||||
# Fedora 24 (Workstation Edition)
|
|
||||||
|
|
||||||
@@ -537,6 +538,7 @@ class CommandTests(unittest.TestCase):
|
|
||||||
# Assert it's back
|
|
||||||
self.assertTrue("rhgb quiet" in be2.options)
|
|
||||||
|
|
||||||
+ @unittest.skipIf(not have_root_lv(), "requires root LV")
|
|
||||||
def test_clone_entry_add_opts_and_re_del(self):
|
|
||||||
# Fedora 24 (Workstation Edition)
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
|||||||
%global sphinx_docs 1
|
%global sphinx_docs 1
|
||||||
|
|
||||||
Name: boom-boot
|
Name: boom-boot
|
||||||
Version: 1.2
|
Version: 1.3
|
||||||
Release: 2%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: %{summary}
|
Summary: %{summary}
|
||||||
|
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
@ -12,12 +12,6 @@ Source0: https://github.com/snapshotmanager/boom/archive/%{version}/boom-%{versi
|
|||||||
Patch0: Disable-GRUB2-plugin-on-RHEL-8.patch
|
Patch0: Disable-GRUB2-plugin-on-RHEL-8.patch
|
||||||
Patch1: 0001-etc-Remove-executable-permission-from-etc-default-bo.patch
|
Patch1: 0001-etc-Remove-executable-permission-from-etc-default-bo.patch
|
||||||
Patch2: 0002-man-Fix-line-starting-with.patch
|
Patch2: 0002-man-Fix-line-starting-with.patch
|
||||||
Patch3: 0003-boom-bump-release-to-1.2.patch
|
|
||||||
Patch4: 0004-boom-fix-precedence-and-handle-conflicts-when-mergin.patch
|
|
||||||
Patch5: 0005-boom-pass-add-del-opts-to-edit_entry-in-edit-command.patch
|
|
||||||
Patch6: 0006-boom-check-for-duplicates-in-edit_entry.patch
|
|
||||||
Patch7: 0007-tests-add-test_clone_entry_-add-del-_opts_and_re_-ad.patch
|
|
||||||
Patch8: 0008-tests-skip-add-del-and-re-del-add-tests-if-have_root.patch
|
|
||||||
|
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
@ -27,6 +21,7 @@ BuildRequires: python3-devel
|
|||||||
%if 0%{?sphinx_docs}
|
%if 0%{?sphinx_docs}
|
||||||
BuildRequires: python3-sphinx
|
BuildRequires: python3-sphinx
|
||||||
%endif
|
%endif
|
||||||
|
BuildRequires: make
|
||||||
|
|
||||||
Requires: python3-boom = %{version}-%{release}
|
Requires: python3-boom = %{version}-%{release}
|
||||||
Requires: %{name}-conf = %{version}-%{release}
|
Requires: %{name}-conf = %{version}-%{release}
|
||||||
@ -97,12 +92,6 @@ This package provides integration scripts for grub2 bootloader.
|
|||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%if 0%{?sphinx_docs}
|
%if 0%{?sphinx_docs}
|
||||||
@ -177,6 +166,26 @@ rm doc/conf.py
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Jan 30 2021 Marian Csontos <mcsontos@redhat.com> 1.3-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.
|
||||||
|
|
||||||
* Mon Jun 29 2020 Marian Csontos <mcsontos@redhat.com> 1.2-2
|
* Mon Jun 29 2020 Marian Csontos <mcsontos@redhat.com> 1.2-2
|
||||||
- Fix RHEL-8 profiles.
|
- Fix RHEL-8 profiles.
|
||||||
- Fix --add/del-opt precedence.
|
- Fix --add/del-opt precedence.
|
||||||
|
Loading…
Reference in New Issue
Block a user