Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yast2-bootloader for
openSUSE:Factory checked in at 2021-11-22 23:03:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-bootloader (Old)
and /work/SRC/openSUSE:Factory/.yast2-bootloader.new.1895 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-bootloader"
Mon Nov 22 23:03:46 2021 rev:313 rq:932470 version:4.4.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-bootloader/yast2-bootloader.changes
2021-09-20 23:32:34.487130704 +0200
+++
/work/SRC/openSUSE:Factory/.yast2-bootloader.new.1895/yast2-bootloader.changes
2021-11-22 23:03:57.561977273 +0100
@@ -1,0 +2,9 @@
+Thu Nov 18 10:26:38 UTC 2021 - Michal Filka <[email protected]>
+
+- bnc#1092950
+ - improved invalid input handling for custom boot partition
+ - added support for defining custom boot partition by UUID and/or
+ LABEL
+- 4.4.8
+
+-------------------------------------------------------------------
Old:
----
yast2-bootloader-4.4.7.tar.bz2
New:
----
yast2-bootloader-4.4.8.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-bootloader.spec ++++++
--- /var/tmp/diff_new_pack.vdHEHK/_old 2021-11-22 23:03:58.333974682 +0100
+++ /var/tmp/diff_new_pack.vdHEHK/_new 2021-11-22 23:03:58.337974669 +0100
@@ -17,7 +17,7 @@
Name: yast2-bootloader
-Version: 4.4.7
+Version: 4.4.8
Release: 0
Summary: YaST2 - Bootloader Configuration
License: GPL-2.0-or-later
++++++ yast2-bootloader-4.4.7.tar.bz2 -> yast2-bootloader-4.4.8.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-bootloader-4.4.7/.github/workflows/ci.yml
new/yast2-bootloader-4.4.8/.github/workflows/ci.yml
--- old/yast2-bootloader-4.4.7/.github/workflows/ci.yml 2021-09-15
21:37:53.000000000 +0200
+++ new/yast2-bootloader-4.4.8/.github/workflows/ci.yml 2021-11-19
11:13:16.000000000 +0100
@@ -8,7 +8,8 @@
jobs:
Tests:
runs-on: ubuntu-latest
- container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+ container:
+ image: registry.opensuse.org/yast/head/containers/yast-ruby:latest
steps:
@@ -33,7 +34,8 @@
Rubocop:
runs-on: ubuntu-latest
- container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+ container:
+ image: registry.opensuse.org/yast/head/containers/yast-ruby:latest
steps:
@@ -45,7 +47,8 @@
Package:
runs-on: ubuntu-latest
- container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+ container:
+ image: registry.opensuse.org/yast/head/containers/yast-ruby:latest
steps:
@@ -57,7 +60,8 @@
Yardoc:
runs-on: ubuntu-latest
- container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+ container:
+ image: registry.opensuse.org/yast/head/containers/yast-ruby:latest
steps:
@@ -71,7 +75,8 @@
# checks into one job avoids that overhead
Checks:
runs-on: ubuntu-latest
- container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+ container:
+ image: registry.opensuse.org/yast/head/containers/yast-ruby:latest
steps:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-bootloader-4.4.7/package/yast2-bootloader.changes
new/yast2-bootloader-4.4.8/package/yast2-bootloader.changes
--- old/yast2-bootloader-4.4.7/package/yast2-bootloader.changes 2021-09-15
21:37:53.000000000 +0200
+++ new/yast2-bootloader-4.4.8/package/yast2-bootloader.changes 2021-11-19
11:13:16.000000000 +0100
@@ -1,4 +1,13 @@
-------------------------------------------------------------------
+Thu Nov 18 10:26:38 UTC 2021 - Michal Filka <[email protected]>
+
+- bnc#1092950
+ - improved invalid input handling for custom boot partition
+ - added support for defining custom boot partition by UUID and/or
+ LABEL
+- 4.4.8
+
+-------------------------------------------------------------------
Fri Sep 10 08:11:16 UTC 2021 - Josef Reidinger <[email protected]>
- Fix calling dracut to regenerate all initrds (bsc#1189915)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-bootloader-4.4.7/package/yast2-bootloader.spec
new/yast2-bootloader-4.4.8/package/yast2-bootloader.spec
--- old/yast2-bootloader-4.4.7/package/yast2-bootloader.spec 2021-09-15
21:37:53.000000000 +0200
+++ new/yast2-bootloader-4.4.8/package/yast2-bootloader.spec 2021-11-19
11:13:16.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-bootloader
-Version: 4.4.7
+Version: 4.4.8
Release: 0
Summary: YaST2 - Bootloader Configuration
License: GPL-2.0-or-later
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-bootloader-4.4.7/src/lib/bootloader/device_path.rb
new/yast2-bootloader-4.4.8/src/lib/bootloader/device_path.rb
--- old/yast2-bootloader-4.4.7/src/lib/bootloader/device_path.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-bootloader-4.4.8/src/lib/bootloader/device_path.rb
2021-11-19 11:13:16.000000000 +0100
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+require "yast"
+require "y2storage"
+
+module Bootloader
+ # Class for device path
+ #
+ # @example device path can be defined explicitly
+ # DevicePath.new("/devs/sda")
+ # @example definition by UUID is translated to device path
+ # dev = DevicePath.new("UUID=\"0000-00-00\"")
+ # dev.path -> "/dev/disk/by-uuid/0000-00-00"
+ class DevicePath
+ attr_reader :path
+
+ # Performs initialization
+ #
+ # @param dev [<String>] either a path like /dev/sda or special string for
uuid or label
+ def initialize(dev)
+ dev = dev.strip
+
+ @path = if dev_by_uuid?(dev)
+ # if defined by uuid, convert it
+ dev.sub(/UUID="([-a-zA-Z0-9]*)"/, '/dev/disk/by-uuid/\1')
+ elsif dev_by_label?(dev)
+ # as well for label
+ dev.sub(/LABEL="(.*)"/, '/dev/disk/by-label/\1')
+ else
+ # add it exactly (but whitespaces) as specified by the user
+ dev
+ end
+ end
+
+ # @return [Boolean] true if the @path exists in the system
+ def exists?
+ !devicegraph.find_by_any_name(path).nil?
+ end
+
+ alias_method :valid?, :exists?
+
+ def uuid?
+ !!(path =~ /by-uuid/)
+ end
+
+ def label?
+ !!(path =~ /by-label/)
+ end
+
+ private
+
+ def dev_by_uuid?(dev)
+ dev =~ /UUID=".+"/
+ end
+
+ def dev_by_label?(dev)
+ dev =~ /LABEL=".+"/
+ end
+
+ def devicegraph
+ if Yast::Mode.installation
+ Y2Storage::StorageManager.instance.staging
+ else
+ Y2Storage::StorageManager.instance.system
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-bootloader-4.4.7/src/lib/bootloader/grub2_widgets.rb
new/yast2-bootloader-4.4.8/src/lib/bootloader/grub2_widgets.rb
--- old/yast2-bootloader-4.4.7/src/lib/bootloader/grub2_widgets.rb
2021-09-15 21:37:53.000000000 +0200
+++ new/yast2-bootloader-4.4.8/src/lib/bootloader/grub2_widgets.rb
2021-11-19 11:13:16.000000000 +0100
@@ -8,6 +8,7 @@
require "bootloader/cpu_mitigations"
require "bootloader/systeminfo"
require "bootloader/os_prober"
+require "bootloader/device_path"
require "cfa/matcher"
Yast.import "BootStorage"
@@ -880,16 +881,35 @@
devs = Yast::UI.QueryWidget(:custom_list, :Value)
devs.split(",").each do |dev|
- # Add it exactly as specified by the user
- stage1.add_device(dev.strip)
+ stage1.add_device(DevicePath.new(dev).path)
end
end
def validate
- if Yast::UI.QueryWidget(:custom, :Value)
- devs = Yast::UI.QueryWidget(:custom_list, :Value)
- if devs.strip.empty?
- Yast::Report.Error(_("Custom boot device have to be specied if
checked"))
+ return true if !Yast::UI.QueryWidget(:custom, :Value)
+
+ devs = Yast::UI.QueryWidget(:custom_list, :Value)
+
+ if devs.strip.empty?
+ Yast::Report.Error(_("Custom boot device has to be specified if
checked"))
+ Yast::UI.SetFocus(Id(:custom_list))
+ return false
+ end
+
+ invalid_devs = invalid_custom_devices(devs)
+ if !invalid_devs.empty?
+ ret = Yast::Popup.ContinueCancel(
+ format(
+ _(
+ "These custom devices can be invalid: %s." \
+ "Please check if exist and spelled correctly." \
+ "Do you want to continue?"
+ ),
+ invalid_devs.join(", ")
+ )
+ )
+
+ if !ret
Yast::UI.SetFocus(Id(:custom_list))
return false
end
@@ -911,6 +931,30 @@
end
end
+ # Checks list of custom devices
+ #
+ # @param devs_list[String] comma separated list of device definitions
+ #
+ # @return [Array<String>] devices which didn't pass validation
+ def invalid_custom_devices(devs_list)
+ # almost any byte sequence is potentially valid path in unix like systems
+ # AY profile can be generated for whatever system so we cannot decite if
+ # particular byte sequence is valid or not
+ return [] if Yast::Mode.config
+
+ devs_list.split(",").reject do |d|
+ dev_path = DevicePath.new(d)
+
+ if Yast::Mode.installation
+ # uuids are generated later by mkfs, so not known in time of
installation
+ # so whatever can be true
+ dev_path.uuid? || dev_path.valid?
+ else
+ dev_path.valid?
+ end
+ end
+ end
+
def locations
@locations ||= stage1.available_locations
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-bootloader-4.4.7/src/lib/bootloader/stage1.rb
new/yast2-bootloader-4.4.8/src/lib/bootloader/stage1.rb
--- old/yast2-bootloader-4.4.7/src/lib/bootloader/stage1.rb 2021-09-15
21:37:53.000000000 +0200
+++ new/yast2-bootloader-4.4.8/src/lib/bootloader/stage1.rb 2021-11-19
11:13:16.000000000 +0100
@@ -157,7 +157,15 @@
log.info "known devices #{known_devices.inspect}"
devices.reject do |dev|
- kernel_dev = Bootloader::UdevMapping.to_kernel_device(dev)
+ dev_path = DevicePath.new(dev)
+
+ # in installation do not care of uuids - not know at this time
+ kernel_dev = if dev_path.uuid?
+ dev
+ else
+ Bootloader::UdevMapping.to_kernel_device(dev)
+ end
+
log.info "stage1 devices for #{dev} is #{kernel_dev.inspect}"
known_devices.include?(kernel_dev)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-bootloader-4.4.7/src/lib/bootloader/udev_mapping.rb
new/yast2-bootloader-4.4.8/src/lib/bootloader/udev_mapping.rb
--- old/yast2-bootloader-4.4.7/src/lib/bootloader/udev_mapping.rb
2021-09-15 21:37:53.000000000 +0200
+++ new/yast2-bootloader-4.4.8/src/lib/bootloader/udev_mapping.rb
2021-11-19 11:13:16.000000000 +0100
@@ -58,8 +58,12 @@
end
def udev_to_kernel(dev)
+ dev_path = DevicePath.new(dev)
+
# in mode config if not found, then return itself
return dev if Yast::Mode.config
+ # in installation do not care of uuids - not know at this time
+ return dev if Yast::Mode.installation && dev_path.uuid?
device = staging.find_by_any_name(dev)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-bootloader-4.4.7/test/device_path_test.rb
new/yast2-bootloader-4.4.8/test/device_path_test.rb
--- old/yast2-bootloader-4.4.7/test/device_path_test.rb 1970-01-01
01:00:00.000000000 +0100
+++ new/yast2-bootloader-4.4.8/test/device_path_test.rb 2021-11-19
11:13:16.000000000 +0100
@@ -0,0 +1,139 @@
+# frozen_string_literal: true
+
+require_relative "test_helper"
+
+require "bootloader/device_path"
+
+describe Bootloader::DevicePath do
+ subject(:dev_path) { Bootloader::DevicePath.new(param) }
+ let(:storage_manager) { double(Y2Storage::StorageManager, system:
device_graph) }
+
+ before do
+ end
+
+ context "When activated with path for device file" do
+ let(:param) { "/dev/sda1" }
+
+ it "Stores the path as obtained" do
+ expect(dev_path.path).to eql param
+ end
+
+ describe "#exists?" do
+ context "when the path exists" do
+ let(:device_graph) do
+ double(Y2Storage::Devicegraph, find_by_any_name:
double(Y2Storage::Device))
+ end
+
+ it "succeedes" do
+ allow(Y2Storage::StorageManager)
+ .to receive(:instance)
+ .and_return(storage_manager)
+
+ expect(dev_path.exists?).to be true
+ end
+ end
+
+ context "when the path doesn't exist" do
+ let(:device_graph) do
+ double(Y2Storage::Devicegraph, find_by_any_name: nil)
+ end
+
+ it "fails" do
+ allow(Y2Storage::StorageManager)
+ .to receive(:instance)
+ .and_return(storage_manager)
+
+ expect(Bootloader::DevicePath.new("/nonsense").exists?).to be false
+ end
+ end
+ end
+
+ describe "#uuid?" do
+ it "fails for real device path" do
+ expect(dev_path.uuid?).to be false
+ end
+ end
+
+ describe "#label?" do
+ it "fails for real device path" do
+ expect(dev_path.label?).to be false
+ end
+ end
+ end
+
+ context "When activated with UUID" do
+ let(:uuid) { "00000000-1111-2222-3333-444444444444" }
+ let(:param) { "UUID=\"#{uuid}\"" }
+ let(:fs_path) { "/dev/disk/by-uuid/#{uuid}" }
+
+ it "Converts UUID to fs path" do
+ expect(dev_path.path).to eql fs_path
+ end
+
+ describe "#exists?" do
+ context "when the path exists" do
+ let(:device_graph) do
+ double(Y2Storage::Devicegraph, find_by_any_name:
double(Y2Storage::Device))
+ end
+
+ it "succeedes" do
+ allow(Y2Storage::StorageManager)
+ .to receive(:instance)
+ .and_return(storage_manager)
+
+ expect(dev_path.exists?).to be true
+ end
+ end
+ end
+
+ describe "#uuid?" do
+ it "succeedes" do
+ expect(dev_path.uuid?).to be true
+ end
+ end
+
+ describe "#label?" do
+ it "fails for uuid activated path" do
+ expect(dev_path.label?).to be false
+ end
+ end
+ end
+
+ context "When activated with LABEL" do
+ let(:label) { "OpenSUSE" }
+ let(:param) { "LABEL=\"#{label}\"" }
+ let(:fs_path) { "/dev/disk/by-label/#{label}" }
+
+ it "Converts LABEL to fs path" do
+ expect(dev_path.path).to eql fs_path
+ end
+
+ describe "#exists?" do
+ context "when the path exists" do
+ let(:device_graph) do
+ double(Y2Storage::Devicegraph, find_by_any_name:
double(Y2Storage::Device))
+ end
+
+ it "succeedes for existing device" do
+ allow(Y2Storage::StorageManager)
+ .to receive(:instance)
+ .and_return(storage_manager)
+
+ expect(dev_path.exists?).to be true
+ end
+ end
+ end
+
+ describe "#uuid?" do
+ it "fails for label activated path" do
+ expect(dev_path.uuid?).to be false
+ end
+ end
+
+ describe "#label?" do
+ it "succeedes" do
+ expect(dev_path.label?).to be true
+ end
+ end
+ end
+end