Hello community,

here is the log from the commit of package yast2-bootloader for 
openSUSE:Factory checked in at 2019-04-08 10:34:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-bootloader (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-bootloader.new.3908 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-bootloader"

Mon Apr  8 10:34:10 2019 rev:278 rq:691556 version:4.1.24

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-bootloader/yast2-bootloader.changes        
2019-03-27 16:14:27.879620707 +0100
+++ 
/work/SRC/openSUSE:Factory/.yast2-bootloader.new.3908/yast2-bootloader.changes  
    2019-04-08 10:34:13.835207945 +0200
@@ -1,0 +2,6 @@
+Thu Apr  4 11:57:27 UTC 2019 - Stefan Hundhammer <shundham...@suse.com>
+
+- Propagate serial console params to XEN kernels (bsc#1080928)
+- 4.1.24
+
+-------------------------------------------------------------------

Old:
----
  yast2-bootloader-4.1.23.tar.bz2

New:
----
  yast2-bootloader-4.1.24.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-bootloader.spec ++++++
--- /var/tmp/diff_new_pack.bj8rYp/_old  2019-04-08 10:34:14.459208515 +0200
+++ /var/tmp/diff_new_pack.bj8rYp/_new  2019-04-08 10:34:14.475208531 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-bootloader
-Version:        4.1.23
+Version:        4.1.24
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ yast2-bootloader-4.1.23.tar.bz2 -> yast2-bootloader-4.1.24.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-bootloader-4.1.23/Dockerfile 
new/yast2-bootloader-4.1.24/Dockerfile
--- old/yast2-bootloader-4.1.23/Dockerfile      2019-03-25 16:25:17.000000000 
+0100
+++ new/yast2-bootloader-4.1.24/Dockerfile      2019-04-04 16:28:47.000000000 
+0200
@@ -1,2 +1,2 @@
-FROM yastdevel/ruby
+FROM registry.opensuse.org/yast/head/containers/yast-ruby:latest
 COPY . /usr/src/app
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-4.1.23/package/yast2-bootloader.changes 
new/yast2-bootloader-4.1.24/package/yast2-bootloader.changes
--- old/yast2-bootloader-4.1.23/package/yast2-bootloader.changes        
2019-03-25 16:25:17.000000000 +0100
+++ new/yast2-bootloader-4.1.24/package/yast2-bootloader.changes        
2019-04-04 16:28:47.000000000 +0200
@@ -1,4 +1,10 @@
 -------------------------------------------------------------------
+Thu Apr  4 11:57:27 UTC 2019 - Stefan Hundhammer <shundham...@suse.com>
+
+- Propagate serial console params to XEN kernels (bsc#1080928)
+- 4.1.24
+
+-------------------------------------------------------------------
 Mon Mar 25 15:45:54 CET 2019 - sch...@suse.de
 
 - Removed double "smt" entry from *.rnc file (bsc#1128707).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-4.1.23/package/yast2-bootloader.spec 
new/yast2-bootloader-4.1.24/package/yast2-bootloader.spec
--- old/yast2-bootloader-4.1.23/package/yast2-bootloader.spec   2019-03-25 
16:25:17.000000000 +0100
+++ new/yast2-bootloader-4.1.24/package/yast2-bootloader.spec   2019-04-04 
16:28:47.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-bootloader
-Version:        4.1.23
+Version:        4.1.24
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-4.1.23/src/lib/bootloader/grub2base.rb 
new/yast2-bootloader-4.1.24/src/lib/bootloader/grub2base.rb
--- old/yast2-bootloader-4.1.23/src/lib/bootloader/grub2base.rb 2019-03-25 
16:25:17.000000000 +0100
+++ new/yast2-bootloader-4.1.24/src/lib/bootloader/grub2base.rb 2019-04-04 
16:28:47.000000000 +0200
@@ -28,6 +28,7 @@
 
 module Bootloader
   # Common base for GRUB2 specialized classes
+  # rubocop:disable Metrics/ClassLength
   class Grub2Base < BootloaderBase
     include Yast::Logger
     include Yast::I18n
@@ -46,6 +47,10 @@
     # @return [Boolean]
     attr_accessor :trusted_boot
 
+    # @!attribute console
+    #   @return [::Bootloader::SerialConsole] serial console or nil if none
+    attr_reader :console
+
     def initialize
       super
 
@@ -160,9 +165,9 @@
       self.trusted_boot = other.trusted_boot unless other.trusted_boot.nil?
     end
 
-    def enable_serial_console(console)
-      console = SerialConsole.load_from_console_args(console)
-      raise ::Bootloader::InvalidSerialConsoleArguments unless console
+    def enable_serial_console(console_arg_string)
+      @console = SerialConsole.load_from_console_args(console_arg_string)
+      raise ::Bootloader::InvalidSerialConsoleArguments unless @console
 
       grub_default.serial_console = console.console_args
 
@@ -172,10 +177,15 @@
     end
 
     def disable_serial_console
+      @console = nil
       grub_default.kernel_params.remove_parameter(serial_console_matcher)
       grub_default.serial_console = ""
     end
 
+    def serial_console?
+      !console.nil?
+    end
+
   private
 
     def systemwide_locale
@@ -307,13 +317,22 @@
     end
 
     def propose_serial
-      console = SerialConsole.load_from_kernel_args(grub_default.kernel_params)
-      return unless console
+      @console = 
SerialConsole.load_from_kernel_args(grub_default.kernel_params)
+      return unless @console
 
       grub_default.serial_console = console.console_args
+      propose_xen_serial
+    end
+
+    def propose_xen_serial
+      return unless serial_console?
+
+      grub_default.xen_kernel_params.replace(console.xen_kernel_args)
+      grub_default.xen_hypervisor_params.replace(console.xen_hypervisor_args)
     end
 
     def propose_xen_hypervisor
+      return if serial_console?
       return if Dir["/dev/fb*"].empty?
 
       matcher = CFA::Matcher.new(key: "vga")
@@ -338,4 +357,5 @@
       grub_default.cryptodisk.value = !!Yast::BootStorage.encrypted_boot?
     end
   end
+  # rubocop:enable Metrics/ClassLength
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-4.1.23/src/lib/bootloader/serial_console.rb 
new/yast2-bootloader-4.1.24/src/lib/bootloader/serial_console.rb
--- old/yast2-bootloader-4.1.23/src/lib/bootloader/serial_console.rb    
2019-03-25 16:25:17.000000000 +0100
+++ new/yast2-bootloader-4.1.24/src/lib/bootloader/serial_console.rb    
2019-04-04 16:28:47.000000000 +0200
@@ -97,12 +97,27 @@
       "#{serial_console}#{@unit},#{@speed}#{@parity[0]}#{@word}"
     end
 
-    # generates serial command for grub2
+    # generates serial command for grub2 GRUB_SERIAL_COMMAND
     def console_args
       res = "serial --unit=#{@unit} --speed=#{@speed} --parity=#{@parity}"
       res << " --word=#{@word}" unless @word.empty?
 
       res
     end
+
+    # generates serial console parameters for grub2
+    # GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT
+    def xen_kernel_args
+      # This is always hvc0 (for HyperVisor Console).
+      "console=hvc0"
+    end
+
+    # generates serial console parameters for grub2
+    # GRUB_CMDLINE_XEN_DEFAULT
+    def xen_hypervisor_args
+      # Notice that this is always com1, even if the host uses another serial 
tty.
+      # See also https://wiki.xenproject.org/wiki/Xen_Serial_Console
+      "console=com1 com1=#{@speed}"
+    end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-bootloader-4.1.23/test/grub2base_test.rb 
new/yast2-bootloader-4.1.24/test/grub2base_test.rb
--- old/yast2-bootloader-4.1.23/test/grub2base_test.rb  2019-03-25 
16:25:17.000000000 +0100
+++ new/yast2-bootloader-4.1.24/test/grub2base_test.rb  2019-04-04 
16:28:47.000000000 +0200
@@ -324,7 +324,7 @@
       end
     end
 
-    context "xen hyperviser kernel parameters proposal" do
+    context "xen hypervisor kernel parameters proposal" do
       it "do nothing if there is no framebuffer" do
         allow(Dir).to receive(:[]).and_return([])
 
@@ -360,20 +360,35 @@
       expect(subject.grub_default.distributor).to eq ""
     end
 
-    it "proposes serial console from its usage on kernel command line on 
non-s390" do
-      allow(Yast::Arch).to receive(:architecture).and_return("x86_64")
-      kernel_params = "console=ttyS1,4800n8"
-      allow(Yast::Kernel).to receive(:GetCmdLine).and_return(kernel_params)
-
+    it "proposes to disable trusted boot" do
       subject.propose
 
-      expect(subject.grub_default.serial_console).to eq "serial --unit=1 
--speed=4800 --parity=no --word=8"
+      expect(subject.trusted_boot).to eq false
     end
 
-    it "proposes to disable trusted boot" do
-      subject.propose
+    context "with a serial console on the kernel command line on non-s390" do
+      before do
+        allow(Yast::Arch).to receive(:architecture).and_return("x86_64")
+        kernel_params = "console=ttyS2,4800n8"
+        allow(Yast::Kernel).to receive(:GetCmdLine).and_return(kernel_params)
+      end
 
-      expect(subject.trusted_boot).to eq false
+      it "proposes a serial console for grub" do
+        subject.propose
+        expect(subject.grub_default.serial_console).to eq "serial --unit=2 
--speed=4800 --parity=no --word=8"
+      end
+
+      it "proposes a serial console for the kernel" do
+        subject.propose
+        expect(subject.grub_default.kernel_params.serialize).to include 
"console=ttyS2,4800n8"
+      end
+
+      it "proposes a serial console for XEN" do
+        subject.propose
+        # Notice that this is always com1, even if the host uses ttyS2!
+        expect(subject.grub_default.xen_hypervisor_params.serialize).to eq 
"console=com1 com1=4800"
+        expect(subject.grub_default.xen_kernel_params.serialize).to eq 
"console=hvc0"
+      end
     end
   end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-bootloader-4.1.23/test/serial_console_test.rb 
new/yast2-bootloader-4.1.24/test/serial_console_test.rb
--- old/yast2-bootloader-4.1.23/test/serial_console_test.rb     2019-03-25 
16:25:17.000000000 +0100
+++ new/yast2-bootloader-4.1.24/test/serial_console_test.rb     2019-04-04 
16:28:47.000000000 +0200
@@ -114,4 +114,18 @@
       expect(obj.console_args).to eq "serial --unit=2 --speed=9600 --parity=no"
     end
   end
+
+  describe "#xen_kernel_args" do
+    it "returns the hypervisor console for XEN kernels" do
+      obj = described_class.new(2, 9600, "no", "8")
+      expect(obj.xen_kernel_args).to eq "console=hvc0"
+    end
+  end
+
+  describe "#xen_hypervisor_args" do
+    it "returns the correct console speed parameters" do
+      obj = described_class.new(2, 9600, "no", "8")
+      expect(obj.xen_hypervisor_args).to eq "console=com1 com1=9600"
+    end
+  end
 end


Reply via email to