From 435971d5d7f83c04187655a162be73de4754a3fa Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 20 Jul 2018 15:15:46 +0200 Subject: [PATCH 1/7] switching to installed system for reading grub settings --- package/yast2-bootloader.changes | 7 +++++++ package/yast2-bootloader.spec | 2 +- src/modules/Bootloader.rb | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/package/yast2-bootloader.changes b/package/yast2-bootloader.changes index 2daa7ebe0..f65e3f094 100644 --- a/package/yast2-bootloader.changes +++ b/package/yast2-bootloader.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Jul 20 15:12:13 CEST 2018 - schubi@suse.de + +- Update: Fixed crash while reading grub settings from installed + system (bsc#1094031). +- 4.0.37 + ------------------------------------------------------------------- Thu Jun 28 15:36:26 CEST 2018 - schubi@suse.de diff --git a/package/yast2-bootloader.spec b/package/yast2-bootloader.spec index c365154d2..54d5e0f35 100644 --- a/package/yast2-bootloader.spec +++ b/package/yast2-bootloader.spec @@ -17,7 +17,7 @@ Name: yast2-bootloader -Version: 4.0.36 +Version: 4.0.37 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff --git a/src/modules/Bootloader.rb b/src/modules/Bootloader.rb index 58c8688b5..01b065c99 100644 --- a/src/modules/Bootloader.rb +++ b/src/modules/Bootloader.rb @@ -422,7 +422,22 @@ def ReadOrProposeIfNeeded Propose() else progress_orig = Progress.set(false) + if Mode.update + # SCR has been currently set to inst-sys. So we have + # set the SCR to installed system in order to read + # grub settings + old_SCR = WFM.SCRGetDefault + new_SCR = WFM.SCROpen("chroot=/mnt:scr", false) + WFM.SCRSetDefault(new_SCR) + end Read() + if Mode.update + # settings have been read from the target system + current_bl.read + # reset target system to inst-sys + WFM.SCRSetDefault(old_SCR) + WFM.SCRClose(new_SCR) + end Progress.set(progress_orig) end end From 3b75a489fd5f108748b174befd105a3367f512c1 Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 20 Jul 2018 15:28:37 +0200 Subject: [PATCH 2/7] adapted testcase --- test/bootloader_test.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/bootloader_test.rb b/test/bootloader_test.rb index 84e13018c..64491f5d7 100644 --- a/test/bootloader_test.rb +++ b/test/bootloader_test.rb @@ -110,6 +110,8 @@ def kernel_line(target) it "reads configuration in update mode" do expect(subject).to_not receive(:Propose) + # switching SCR to /mnt + expect(Yast::WFM).to receive(:SCROpen).with("chroot=/mnt:scr", false) expect(subject).to receive(:Read) allow(Yast::Mode).to receive(:update).and_return(true) allow(Yast::Stage).to receive(:initial).and_return(true) From 502d70935f0f562008b90246dcbb37a104debd68 Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 20 Jul 2018 16:07:23 +0200 Subject: [PATCH 3/7] adapted suggestions --- src/modules/Bootloader.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/modules/Bootloader.rb b/src/modules/Bootloader.rb index 01b065c99..1c0ec95e8 100644 --- a/src/modules/Bootloader.rb +++ b/src/modules/Bootloader.rb @@ -422,16 +422,17 @@ def ReadOrProposeIfNeeded Propose() else progress_orig = Progress.set(false) - if Mode.update + if Stage.initial && Mode.update # SCR has been currently set to inst-sys. So we have # set the SCR to installed system in order to read # grub settings old_SCR = WFM.SCRGetDefault - new_SCR = WFM.SCROpen("chroot=/mnt:scr", false) + new_SCR = WFM.SCROpen("chroot=#{Yast::Installation.destdir}:scr", + false) WFM.SCRSetDefault(new_SCR) end Read() - if Mode.update + if Stage.initial && Mode.update # settings have been read from the target system current_bl.read # reset target system to inst-sys From c50231aaad2653de137020be566f259723920e74 Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 20 Jul 2018 16:23:42 +0200 Subject: [PATCH 4/7] fixed testcase --- test/bootloader_test.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/bootloader_test.rb b/test/bootloader_test.rb index 64491f5d7..b21530354 100644 --- a/test/bootloader_test.rb +++ b/test/bootloader_test.rb @@ -110,8 +110,10 @@ def kernel_line(target) it "reads configuration in update mode" do expect(subject).to_not receive(:Propose) - # switching SCR to /mnt - expect(Yast::WFM).to receive(:SCROpen).with("chroot=/mnt:scr", false) + # switching SCR to Yast::Installation.destdir + expect(Yast::WFM).to receive(:SCROpen).with( + "chroot=#{Yast::Installation.destdir}:scr", + false) expect(subject).to receive(:Read) allow(Yast::Mode).to receive(:update).and_return(true) allow(Yast::Stage).to receive(:initial).and_return(true) From d6eb3d0459fd777e6966d4582c8dfd410bf0c5b9 Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 20 Jul 2018 17:00:13 +0200 Subject: [PATCH 5/7] rubocop --- test/bootloader_test.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/bootloader_test.rb b/test/bootloader_test.rb index b21530354..dcba32ee2 100644 --- a/test/bootloader_test.rb +++ b/test/bootloader_test.rb @@ -111,9 +111,8 @@ def kernel_line(target) it "reads configuration in update mode" do expect(subject).to_not receive(:Propose) # switching SCR to Yast::Installation.destdir - expect(Yast::WFM).to receive(:SCROpen).with( - "chroot=#{Yast::Installation.destdir}:scr", - false) + expect(Yast::WFM).to receive(:SCROpen).with("chroot=#{Yast::Installation.destdir}:scr", + false) expect(subject).to receive(:Read) allow(Yast::Mode).to receive(:update).and_return(true) allow(Yast::Stage).to receive(:initial).and_return(true) From 5f4fbfb26f07ca38407420e12333163c4c51159a Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 20 Jul 2018 17:07:44 +0200 Subject: [PATCH 6/7] importing installation --- src/modules/Bootloader.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/Bootloader.rb b/src/modules/Bootloader.rb index 1c0ec95e8..63e0324ee 100644 --- a/src/modules/Bootloader.rb +++ b/src/modules/Bootloader.rb @@ -30,6 +30,7 @@ Yast.import "Progress" Yast.import "Report" Yast.import "Stage" +Yast.import "Installation" module Yast class BootloaderClass < Module From d32cb384b82e9170d2ccd6d95b7946c10f9266ce Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Mon, 23 Jul 2018 10:15:58 +0200 Subject: [PATCH 7/7] taking *.rb --- src/modules/Bootloader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/Bootloader.rb b/src/modules/Bootloader.rb index 63e0324ee..dbb6cd585 100644 --- a/src/modules/Bootloader.rb +++ b/src/modules/Bootloader.rb @@ -1,7 +1,7 @@ # encoding: utf-8 # File: -# modules/Bootloader.ycp +# modules/Bootloader.rb # # Module: # Bootloader installation and configuration