Hello community,

here is the log from the commit of package yast2-bootloader for 
openSUSE:Factory checked in at 2014-05-06 13:40:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-bootloader (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-bootloader.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-bootloader"

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-bootloader/yast2-bootloader.changes        
2014-04-26 11:45:11.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-bootloader.new/yast2-bootloader.changes   
2014-05-06 13:40:39.000000000 +0200
@@ -1,0 +2,19 @@
+Fri May  2 08:31:32 UTC 2014 - [email protected]
+
+- fix activating partitions with number bigger then 4 on GPT disks
+  with legacy x86 boot (bnc#875757)
+- 3.1.32
+
+-------------------------------------------------------------------
+Wed Apr 30 16:23:57 UTC 2014 - [email protected]
+
+- handle diskless nfs setup for ppc (bnc#874466)
+- 3.1.31
+
+-------------------------------------------------------------------
+Tue Apr 29 19:47:03 UTC 2014 - [email protected]
+
+- fix reading of previous bootloader (bnc#874646)
+- 3.1.30
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ yast2-bootloader.spec ++++++
--- /var/tmp/diff_new_pack.6bgmBk/_old  2014-05-06 13:40:42.000000000 +0200
+++ /var/tmp/diff_new_pack.6bgmBk/_new  2014-05-06 13:40:42.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-bootloader
-Version:        3.1.29
+Version:        3.1.32
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ yast2-bootloader-3.1.29.tar.bz2 -> yast2-bootloader-3.1.32.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-3.1.29/package/yast2-bootloader.changes 
new/yast2-bootloader-3.1.32/package/yast2-bootloader.changes
--- old/yast2-bootloader-3.1.29/package/yast2-bootloader.changes        
2014-04-22 11:18:41.000000000 +0200
+++ new/yast2-bootloader-3.1.32/package/yast2-bootloader.changes        
2014-05-02 12:43:49.000000000 +0200
@@ -1,4 +1,23 @@
 -------------------------------------------------------------------
+Fri May  2 08:31:32 UTC 2014 - [email protected]
+
+- fix activating partitions with number bigger then 4 on GPT disks
+  with legacy x86 boot (bnc#875757)
+- 3.1.32
+
+-------------------------------------------------------------------
+Wed Apr 30 16:23:57 UTC 2014 - [email protected]
+
+- handle diskless nfs setup for ppc (bnc#874466)
+- 3.1.31
+
+-------------------------------------------------------------------
+Tue Apr 29 19:47:03 UTC 2014 - [email protected]
+
+- fix reading of previous bootloader (bnc#874646)
+- 3.1.30
+
+-------------------------------------------------------------------
 Tue Apr 22 08:44:57 UTC 2014 - [email protected]
 
 - Use correct check for partition setup for grub2 on s390
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-3.1.29/package/yast2-bootloader.spec 
new/yast2-bootloader-3.1.32/package/yast2-bootloader.spec
--- old/yast2-bootloader-3.1.29/package/yast2-bootloader.spec   2014-04-22 
11:18:41.000000000 +0200
+++ new/yast2-bootloader-3.1.32/package/yast2-bootloader.spec   2014-05-02 
12:43:49.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-bootloader
-Version:        3.1.29
+Version:        3.1.32
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-3.1.29/src/clients/bootloader_proposal.rb 
new/yast2-bootloader-3.1.32/src/clients/bootloader_proposal.rb
--- old/yast2-bootloader-3.1.29/src/clients/bootloader_proposal.rb      
2014-04-22 11:18:41.000000000 +0200
+++ new/yast2-bootloader-3.1.32/src/clients/bootloader_proposal.rb      
2014-05-02 12:43:49.000000000 +0200
@@ -19,6 +19,7 @@
       Yast.import "BootCommon"
       Yast.import "Bootloader"
       Yast.import "GfxMenu"
+      Yast.import "Installation"
       Yast.import "Storage"
       Yast.import "Mode"
       Yast.import "BootSupportCheck"
@@ -54,7 +55,7 @@
         end
 
         if Mode.update
-          if ["grub2", "grub2-efi"].include? Bootloader.getLoaderType
+          if ["grub2", "grub2-efi"].include? old_bootloader
             Builtins.y2milestone "update of grub2, do not repropose"
             Bootloader.blRead(true, true)
           else
@@ -231,7 +232,25 @@
 
       deep_copy(@ret)
     end
-  end
+
+  private
+    BOOT_SYSCONFIG_PATH = "/etc/sysconfig/bootloader"
+    # read bootloader from /mnt as SCR is not yet switched in proposal
+    # phase of update (bnc#874646)
+    def old_bootloader
+      target_boot_sysconfig_path = ::File.join(Installation.destdir, 
BOOT_SYSCONFIG_PATH)
+      return nil unless ::File.exists? target_boot_sysconfig_path
+
+      boot_sysconfig = ::File.read target_boot_sysconfig_path
+      old_bootloader = boot_sysconfig.lines.grep /^\s*LOADER_TYPE/
+      Builtins.y2milestone "bootloader entry #{old_bootloader.inspect}"
+      retur nil if old_bootloader.empty?
+
+      # get value from entry
+      old_bootloader.last.sub(/^.*=\s*(\S*).*/,"\\1").delete('"')
+    end
+
+  end unless defined? Yast::BootloaderProposalClient
 end
 
 Yast::BootloaderProposalClient.new.main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-bootloader-3.1.29/src/include/bootloader/grub2/misc.rb 
new/yast2-bootloader-3.1.32/src/include/bootloader/grub2/misc.rb
--- old/yast2-bootloader-3.1.29/src/include/bootloader/grub2/misc.rb    
2014-04-22 11:18:41.000000000 +0200
+++ new/yast2-bootloader-3.1.32/src/include/bootloader/grub2/misc.rb    
2014-05-02 12:43:49.000000000 +0200
@@ -102,44 +102,6 @@
           mbr_dev = Ops.get_string(p_dev2, "disk", "")
         end
       end
-      # If loader_device is a disk device ("/dev/sda"), that means that we
-      # install the bootloader to the MBR. In this case, activate /boot
-      # partition.
-      # (partial fix of #20637)
-      # FIXME: necessity and purpose are unclear: if we install the
-      # bootloader to the MBR, then why do we need to activate the /boot
-      # partition? Stage1 of a GRUB has the first block of the stage2
-      # hard-coded inside.
-      # This code was added because a /boot partition on a /dev/cciss device
-      # was not activated in bug #20637. Anyway, it probably never worked,
-      # since the bootloader was not installed to the MBR in that bug (and
-      # thus this code is not triggered).
-      # The real problem may have been that Storage::GetDiskPartition() did
-      # not know how to parse /dev/cciss/c0d0p1, so that the default case at
-      # the beginning of this function did not set up correct values. These
-      # days, Storage::GetDiskPartition() looks OK with /dev/cciss.
-      # Deactivated this code, so that "/boot" does not get activated
-      # unecessarily when GRUB stage1 is installed to the MBR anyway (this
-      # would unecessarily have broken drive C: detection on older MS
-      # operating systems).
-      #        else if (num == 0)
-      #        {
-      #            p_dev = Storage::GetDiskPartition (boot_partition);
-      #            num = BootCommon::myToInteger( p_dev["nr"]:nil );
-      #            mbr_dev = p_dev["disk"]:"";
-      #
-      #            if (size (BootCommon::Md2Partitions (boot_partition)) > 1)
-      #            {
-      #                foreach (string k, integer v, BootCommon::Md2Partitions 
(boot_partition),{
-      #                    if (search (k, loader_device) == 0)
-      #                    {
-      #                        p_dev = Storage::GetDiskPartition (k);
-      #                        num = BootCommon::myToInteger( p_dev["nr"]:nil 
);
-      #                        mbr_dev = p_dev["disk"]:"";
-      #                    }
-      #                });
-      #            }
-      #        }
 
       # (bnc # 337742) - Unable to boot the openSUSE (32 and 64 bits) after 
installation
       # if loader_device is disk device activate 
BootStorage::BootPartitionDevice
@@ -150,7 +112,7 @@
       end
 
       if Ops.greater_than(num, 4)
-        Builtins.y2milestone("Bootloader partition type is logical")
+        Builtins.y2milestone("Bootloader partition type can be logical")
         tm = Storage.GetTargetMap
         partitions = Ops.get_list(tm, [mbr_dev, "partitions"], [])
         Builtins.foreach(partitions) do |p|
@@ -469,50 +431,49 @@
       Builtins.foreach(grub_getPartitionsToActivate) do |m_activate|
         num = Ops.get_integer(m_activate, "num", 0)
         mbr_dev = Ops.get_string(m_activate, "mbr", "")
-        if num != 0 && mbr_dev != ""
-          # if primary partition
-          if !Ops.is_integer?(num) || Ops.less_or_equal(num, 4)
-            Builtins.y2milestone("Activating partition %1 on %2", num, mbr_dev)
-            # FIXME: this is the most rotten code since molded sliced bread
-            # move to bootloader/Core/GRUB.pm or similar
-            # TESTME: make sure that parted does not destroy BSD
-            # slices (#suse24740): cf. section 5.1 of "info parted":
-            #   Parted only supports the BSD disk label system.
-            #   Parted is unlikely to support the partition slice
-            #   system in the future because the semantics are rather
-            #   strange, and don't work like "normal" partition tables
-            #   do.
-            # FIXED: investigate proper handling of the activate flag
-            # (kernel ioctls in parted etc.) and fix parted
-
-            # this is needed only on gpt disks but we run it always
-            # anyway; parted just fails, then
-            command = Builtins.sformat(
-              "/usr/sbin/parted -s %1 set %2 legacy_boot on",
-              mbr_dev,
-              num
-            )
-            Builtins.y2milestone("Running command %1", command)
-            out = Convert.to_map(
-              WFM.Execute(path(".local.bash_output"), command)
-            )
-            Builtins.y2milestone("Command output: %1", out)
+        raise "INTERNAL ERROR: Data for partition to activate is invalid." if 
num == 0 || mbr_dev.empty?
 
-            command = Builtins.sformat(
-              "/usr/sbin/parted -s %1 set %2 boot on",
-              mbr_dev,
-              num
-            )
-            Builtins.y2milestone("Running command %1", command)
-            out = Convert.to_map(
-              WFM.Execute(path(".local.bash_output"), command)
-            )
-            exit = Ops.get_integer(out, "exit", 0)
-            Builtins.y2milestone("Command output: %1", out)
-            ret = ret && 0 == exit
-          end
-        else
-          Builtins.y2error("Cannot activate %1", m_activate)
+        gpt_disk = Storage.GetTargetMap[BootCommon.mbrDisk]["label"] == "gpt"
+        # if primary partition on old DOS MBR table, GPT do not have such limit
+        if gpt_disk || num <= 4
+          Builtins.y2milestone("Activating partition %1 on %2", num, mbr_dev)
+          # FIXME: this is the most rotten code since molded sliced bread
+          # move to bootloader/Core/GRUB.pm or similar
+          # TESTME: make sure that parted does not destroy BSD
+          # slices (#suse24740): cf. section 5.1 of "info parted":
+          #   Parted only supports the BSD disk label system.
+          #   Parted is unlikely to support the partition slice
+          #   system in the future because the semantics are rather
+          #   strange, and don't work like "normal" partition tables
+          #   do.
+          # FIXED: investigate proper handling of the activate flag
+          # (kernel ioctls in parted etc.) and fix parted
+
+          # this is needed only on gpt disks but we run it always
+          # anyway; parted just fails, then
+          command = Builtins.sformat(
+            "/usr/sbin/parted -s %1 set %2 legacy_boot on",
+            mbr_dev,
+            num
+          )
+          Builtins.y2milestone("Running command %1", command)
+          out = Convert.to_map(
+            WFM.Execute(path(".local.bash_output"), command)
+          )
+          Builtins.y2milestone("Command output: %1", out)
+
+          command = Builtins.sformat(
+            "/usr/sbin/parted -s %1 set %2 boot on",
+            mbr_dev,
+            num
+          )
+          Builtins.y2milestone("Running command %1", command)
+          out = Convert.to_map(
+            WFM.Execute(path(".local.bash_output"), command)
+          )
+          exit = Ops.get_integer(out, "exit", 0)
+          Builtins.y2milestone("Command output: %1", out)
+          ret = ret && 0 == exit
         end
       end if activate
       ret
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-bootloader-3.1.29/src/modules/BootGRUB2.rb 
new/yast2-bootloader-3.1.32/src/modules/BootGRUB2.rb
--- old/yast2-bootloader-3.1.29/src/modules/BootGRUB2.rb        2014-04-22 
11:18:41.000000000 +0200
+++ new/yast2-bootloader-3.1.32/src/modules/BootGRUB2.rb        2014-05-02 
12:43:49.000000000 +0200
@@ -24,6 +24,7 @@
 module Yast
   import "Arch"
   import "Storage"
+  import "BootCommon"
 
   class BootGRUB2Class < GRUB2Base
     def main
@@ -118,9 +119,19 @@
           grub_LocationProposal
         when /ppc/
           partition = prep_partitions.first
-          raise "there is no prep partition" unless partition
-
-          BootCommon.globals["boot_custom"] = partition
+          if partition
+            BootCommon.globals["boot_custom"] = partition
+          else
+            # handle diskless setup, in such case do not write boot code 
anywhere (bnc#874466)
+            # we need to detect what is mount on /boot and if it is nfs, then 
just
+            # skip this proposal. In other case if it is not nfs, then it is 
error and raise exception
+            BootCommon.DetectDisks
+            if BootCommon.getBootDisk == "/dev/nfs"
+              return
+            else
+              raise "there is no prep partition"
+            end
+          end
         when /s390/
           Builtins.y2milestone "no partition needed for grub2 on s390"
         else

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to