Script 'mail_helper' called by ro
Hello packager,
This is just FYI. Your package was checked in in distribution "sle12"
by autobuild-member: ro.
Here comes the log...
---------------------------%<------------------------------
Hi,
here is the log from ci_new_pac /mounts/work_src_done/SLE12/yast2-online-update -> sle12
Changes:
--------
--- /work/SRC/SUSE:SLE-12:GA/yast2-online-update/yast2-online-update.changes 2014-01-17 14:16:31.000000000 +0100
+++ /mounts/work_src_done/SLE12/yast2-online-update/yast2-online-update.changes 2014-02-10 17:37:45.000000000 +0100
@@ -1,0 +2,9 @@
+Mon Feb 10 10:44:16 CET 2014 - locilka(a)suse.com
+
+- Added functionality which informs user that some of the selected
+ patches (listed) will need rebooting. User can then continue,
+ skip all those patches, or tune the selection of patches manually
+ (FATE#312509).
+- 3.1.2
+
+-------------------------------------------------------------------
calling whatdependson for sle12-i586
Packages directly triggered for rebuild:
- yast2-online-update
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/SUSE:SLE-12:GA/yast2-online-update (Old)
and /mounts/work_src_done/SLE12/yast2-online-update (BS:build ID:32284 MAIL:yast-commit@opensuse.org) (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-online-update", Maintainer is "yast-commit(a)opensuse.org"
Old:
----
yast2-online-update-3.1.1.tar.bz2
New:
----
yast2-online-update-3.1.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-online-update.spec ++++++
--- /var/tmp/diff_new_pack.08S0ig/_old 2014-02-11 18:22:43.000000000 +0100
+++ /var/tmp/diff_new_pack.08S0ig/_new 2014-02-11 18:22:43.000000000 +0100
@@ -17,17 +17,17 @@
Name: yast2-online-update
-Version: 3.1.1
+Version: 3.1.2
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
-BuildRequires: gcc-c++
-BuildRequires: libtool
-BuildRequires: update-desktop-files
-BuildRequires: yast2-devtools >= 3.0.6
-BuildRequires: yast2-packager
+Group: System/YaST
+License: GPL-2.0
+BuildRequires: gcc-c++ libtool update-desktop-files yast2-packager
+BuildRequires: yast2-devtools >= 3.1.10
+BuildRequires: rubygem-rspec
# patch contents
Requires: yast2-pkg-bindings >= 2.23.0
# Kernel::InformAboutKernelChange
@@ -35,21 +35,16 @@
# PackageCallbacks::FormatPatchName
Requires: yast2-packager >= 2.13.159
-Provides: y2c_online_update
-Provides: yast2-config-online-update
-Obsoletes: y2c_online_update
-Obsoletes: yast2-config-online-update
-Provides: y2t_online_update
-Provides: yast2-trans-online-update
-Obsoletes: y2t_online_update
-Obsoletes: yast2-trans-online-update
-BuildArch: noarch
+Provides: y2c_online_update yast2-config-online-update
+Obsoletes: y2c_online_update yast2-config-online-update
+Provides: yast2-trans-online-update y2t_online_update
+Obsoletes: yast2-trans-online-update y2t_online_update
+BuildArchitectures: noarch
-Requires: yast2-ruby-bindings >= 1.0.0
+# Added Logger (replacement for y2error, y2milestone, ...)
+Requires: yast2-ruby-bindings >= 3.1.7
Summary: YaST2 - Online Update (YOU)
-License: GPL-2.0
-Group: System/YaST
%description
YaST Online Update (YOU) provides a convenient way to download and
@@ -70,6 +65,7 @@
%install
%yast_install
+
%files
%defattr(-,root,root)
%{yast_scrconfdir}/*.scr
@@ -82,8 +78,8 @@
%package frontend
Summary: YaST2 - Online Update (YOU)
-Group: System/YaST
Requires: yast2-online-update
+Group: System/YaST
# PatchCD desktop file moved to yast2-wagon
Conflicts: yast2-wagon <= 2.17.3
@@ -94,5 +90,3 @@
%files frontend
%defattr(-,root,root)
%{yast_desktopdir}/online_update.desktop
-
-%changelog
++++++ yast2-online-update-3.1.1.tar.bz2 -> yast2-online-update-3.1.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/SUBDIRS new/yast2-online-update-3.1.2/SUBDIRS
--- old/yast2-online-update-3.1.1/SUBDIRS 2013-11-15 13:10:25.000000000 +0100
+++ new/yast2-online-update-3.1.2/SUBDIRS 2014-02-11 09:23:16.000000000 +0100
@@ -1 +1 @@
-conf doc src testsuite
+conf doc src testsuite test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/VERSION new/yast2-online-update-3.1.2/VERSION
--- old/yast2-online-update-3.1.1/VERSION 2013-11-15 13:10:25.000000000 +0100
+++ new/yast2-online-update-3.1.2/VERSION 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-3.1.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/package/yast2-online-update.changes new/yast2-online-update-3.1.2/package/yast2-online-update.changes
--- old/yast2-online-update-3.1.1/package/yast2-online-update.changes 2013-11-15 13:10:25.000000000 +0100
+++ new/yast2-online-update-3.1.2/package/yast2-online-update.changes 2014-02-11 09:23:16.000000000 +0100
@@ -1,4 +1,13 @@
-------------------------------------------------------------------
+Mon Feb 10 10:44:16 CET 2014 - locilka(a)suse.com
+
+- Added functionality which informs user that some of the selected
+ patches (listed) will need rebooting. User can then continue,
+ skip all those patches, or tune the selection of patches manually
+ (FATE#312509).
+- 3.1.2
+
+-------------------------------------------------------------------
Wed Nov 13 15:56:18 UTC 2013 - jreidinger(a)suse.com
- Add explicit COPYING file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/package/yast2-online-update.spec new/yast2-online-update-3.1.2/package/yast2-online-update.spec
--- old/yast2-online-update-3.1.1/package/yast2-online-update.spec 2013-11-15 13:10:25.000000000 +0100
+++ new/yast2-online-update-3.1.2/package/yast2-online-update.spec 2014-02-11 09:23:16.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-online-update
-Version: 3.1.1
+Version: 3.1.2
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -26,7 +26,8 @@
Group: System/YaST
License: GPL-2.0
BuildRequires: gcc-c++ libtool update-desktop-files yast2-packager
-BuildRequires: yast2-devtools >= 3.0.6
+BuildRequires: yast2-devtools >= 3.1.10
+BuildRequires: rubygem-rspec
# patch contents
Requires: yast2-pkg-bindings >= 2.23.0
# Kernel::InformAboutKernelChange
@@ -40,7 +41,8 @@
Obsoletes: yast2-trans-online-update y2t_online_update
BuildArchitectures: noarch
-Requires: yast2-ruby-bindings >= 1.0.0
+# Added Logger (replacement for y2error, y2milestone, ...)
+Requires: yast2-ruby-bindings >= 3.1.7
Summary: YaST2 - Online Update (YOU)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/src/clients/online_update.rb new/yast2-online-update-3.1.2/src/clients/online_update.rb
--- old/yast2-online-update-3.1.1/src/clients/online_update.rb 2013-11-15 13:10:25.000000000 +0100
+++ new/yast2-online-update-3.1.2/src/clients/online_update.rb 2014-02-11 09:23:16.000000000 +0100
@@ -232,11 +232,10 @@
id = 0
result = :next
- while Ops.greater_or_equal(id, 0) &&
- Ops.less_than(id, Builtins.size(dialog))
- page = Ops.get_list(dialog, id, [])
- module_name = Ops.get_string(page, 0, "")
- module_args = Ops.get_list(page, 1, [])
+ while id >= 0 && id < dialog.size
+ page = dialog[id]
+ module_name = page.fetch(0, "")
+ module_args = page.fetch(1, [])
Builtins.y2debug(
"ONLINE: Module: %1 Args: %2",
@@ -257,12 +256,12 @@
elsif result == :cancel || result == :abort
break
elsif result == :next || result == :auto
- id = Ops.add(id, 1)
+ id += 1
elsif result == :back
- id = Ops.subtract(id, 1)
+ id -= 1
elsif result == :finish
if !Mode.installation && !Mode.update
- id = Ops.subtract(Builtins.size(dialog), 1) # call last module
+ id = dialog.size - 1 # call last module
else
result = :next
break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/src/clients/online_update_select.rb new/yast2-online-update-3.1.2/src/clients/online_update_select.rb
--- old/yast2-online-update-3.1.1/src/clients/online_update_select.rb 2013-11-15 13:10:25.000000000 +0100
+++ new/yast2-online-update-3.1.2/src/clients/online_update_select.rb 2014-02-11 09:23:16.000000000 +0100
@@ -41,6 +41,7 @@
Yast.import "Wizard"
Yast.import "PackageSystem"
Yast.import "Report"
+ Yast.import "OnlineUpdateDialogs"
if OnlineUpdate.cd_update
@canceled = false
@@ -142,10 +143,22 @@
@ret = nil
@current = "simple"
+
begin
@ret = Convert.to_symbol(UI.RunPkgSelection(Id(:selector)))
Builtins.y2milestone("RunPkgSelection returned %1", @ret)
+
+ # FATE#312509: Show if patch needs a reboot and offer
+ # to delay the patch installation
+ if @ret == :accept
+ if ! OnlineUpdateDialogs.validate_selected_patches
+ @ret = nil
+ next
+ end
+ end
+
UI.CloseDialog
+
if @ret == :details
UI.OpenDialog(
Opt(:defaultsize),
@@ -213,6 +226,7 @@
PackageSelector(Id(:selector), @widget_options)
)
end
+
if @ret == :accept
@restart_yast = false
@normal_patches_selected = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/src/modules/OnlineUpdateDialogs.rb new/yast2-online-update-3.1.2/src/modules/OnlineUpdateDialogs.rb
--- old/yast2-online-update-3.1.1/src/modules/OnlineUpdateDialogs.rb 2013-11-15 13:10:25.000000000 +0100
+++ new/yast2-online-update-3.1.2/src/modules/OnlineUpdateDialogs.rb 2014-02-11 09:23:16.000000000 +0100
@@ -25,13 +25,15 @@
module Yast
class OnlineUpdateDialogsClass < Module
+ include Yast::Logger
+
def main
+ Yast.import "Pkg"
Yast.import "UI"
textdomain "online-update"
Yast.import "Label"
- Yast.import "Mode"
Yast.import "Package"
Yast.import "Popup"
Yast.import "Wizard"
@@ -375,6 +377,125 @@
end
end
+ MAX_PATCHES_WIDGET_HEIGHT = 12
+
+ module RebootingPatches
+ module Buttons
+ CONTINUE = :continue
+ BACK = :cancel
+ SKIP = :skip
+ end
+ end
+
+ def patches_needing_reboot
+ Pkg.ResolvableProperties("", :patch, "").select do |patch|
+ patch["status"] == :selected && patch["reboot_needed"]
+ end
+ end
+
+ # Returns formatted list of patches that need rebooting
+ #
+ # @param options [Hash], :use_html defines whether HTML can be used (default: false)
+ # @return [Array] of patches (name: summary)
+ def formatted_rebooting_patches(options = {})
+ patches_needing_reboot.map do |patch|
+ if options[:use_html]
+ "<b>#{patch["name"]}</b>: #{patch["summary"]}"
+ else
+ "#{patch["name"]}: #{patch["summary"]}"
+ end
+ end
+ end
+
+ # Returns dialog definition for listing all patches that need rebooting
+ #
+ # @return dialog layout
+ def rebooting_patches_dialog
+ patches_desc = formatted_rebooting_patches(:use_html => true)
+
+ # 2 is an additional constant for borders
+ min_richtext_heigth = [patches_desc.size, MAX_PATCHES_WIDGET_HEIGHT].min + 2
+
+ return HBox(
+ HSpacing(2),
+ VBox(
+ HSpacing(70),
+ # Dialog label above a list of patches
+ Label(_("These patches will need rebooting after instalation")),
+ MinHeight(
+ min_richtext_heigth,
+ RichText(Opt(:vstretch), patches_desc.join("<br>"))
+ ),
+ ButtonBox(
+ PushButton(Id(RebootingPatches::Buttons::CONTINUE), Opt(:default), Label.ContinueButton),
+ PushButton(Id(RebootingPatches::Buttons::BACK), Label.BackButton),
+ # Push button for Skipping all patches that require rebooting
+ PushButton(Id(RebootingPatches::Buttons::SKIP), _("&Skip All"))
+ )
+ ),
+ HSpacing(2)
+ )
+ end
+
+ # Tries to neutralize all patches that need rebooting.
+ # Returns whether it was successful.
+ #
+ # @return [Boolean] whether skipping rebooting patches was successful
+ def skip_rebooting_patches
+ patches_needing_reboot.each do |patch|
+ log.info "Removing patch #{patch["name"]} from selection"
+ Pkg.ResolvableNeutral(patch["name"], :patch, true)
+ end
+
+ # Solver can't solve it automatically
+ return false unless Pkg.PkgSolve(true)
+
+ rebooting_patches = formatted_rebooting_patches
+
+ if ! rebooting_patches.empty?
+ Popup.MessageDetails(
+ _("Online update was unable to unselect some patches that need rebooting."),
+ rebooting_patches.join("\n")
+ )
+ return false
+ end
+
+ true
+ end
+
+ # Shows dialog with patches that need rebooting and wait for user's decision
+ # whether to continue
+ #
+ # @return [Boolean] whether to continue installing patches (true: continue, false: go_back)
+ def confirm_rebooting_patches
+ UI.OpenDialog(rebooting_patches_dialog)
+ user_ret = UI.UserInput
+ UI.CloseDialog
+
+ case user_ret
+ when RebootingPatches::Buttons::CONTINUE
+ return true
+ when RebootingPatches::Buttons::BACK
+ return false
+ when RebootingPatches::Buttons::SKIP
+ return skip_rebooting_patches
+ else
+ raise RuntimeError.new "Unhandled return value: #{user_ret}"
+ end
+ end
+
+ # Returns boolean whether to continue with patches installation
+ #
+ # @return [Boolean] whether to continue
+ def validate_selected_patches
+ patches = patches_needing_reboot
+ log.info "Patches that need rebooting: #{patches.map{|p| p["name"]}}"
+
+ return true if patches.empty?
+
+ confirm_rebooting_patches
+ end
+
publish :function => :IgnoreWarningPopup, :type => "symbol (string, string)"
publish :function => :IgnorePopup, :type => "symbol (string, string)"
publish :function => :SkipPopup, :type => "symbol (string, string)"
@@ -383,6 +504,7 @@
publish :function => :DisplayMsgYou, :type => "boolean (string, string, string, string)"
publish :function => :DisplayMsgYouOk, :type => "boolean (string, string, string)"
publish :function => :MessagePopup, :type => "boolean (list <map>, boolean)"
+ publish :function => :validate_selected_patches, :type => "boolean ()"
end
OnlineUpdateDialogs = OnlineUpdateDialogsClass.new
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/test/Makefile.am new/yast2-online-update-3.1.2/test/Makefile.am
--- old/yast2-online-update-3.1.1/test/Makefile.am 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-online-update-3.1.2/test/Makefile.am 2014-02-11 09:23:16.000000000 +0100
@@ -0,0 +1,7 @@
+TESTS = \
+ online_update_dialogs_test.rb
+
+TEST_EXTENSIONS = .rb
+RB_LOG_COMPILER = rspec
+VERBOSE = 1
+EXTRA_DIST = $(TESTS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-online-update-3.1.1/test/online_update_dialogs_test.rb new/yast2-online-update-3.1.2/test/online_update_dialogs_test.rb
--- old/yast2-online-update-3.1.1/test/online_update_dialogs_test.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-online-update-3.1.2/test/online_update_dialogs_test.rb 2014-02-11 09:23:16.000000000 +0100
@@ -0,0 +1,109 @@
+#! /usr/bin/env rspec
+
+ENV["Y2DIR"] = File.expand_path("../../src", __FILE__)
+
+require "yast"
+
+Yast.import "OnlineUpdateDialogs"
+Yast.import "Pkg"
+Yast.import "UI"
+
+DEFAULT_PATCH = {
+ "status" => :selected,
+ "name" => "patch_#{$patch_id}",
+ "reboot_needed" => false,
+ "description" => "...",
+ "arch" => "noarch",
+}
+
+def patch(args = {})
+ $patch_id ||= 0
+ $patch_id += 1
+ DEFAULT_PATCH.merge(args)
+end
+
+# Two patches have "reboot_needed" => true
+PATCHES = Array.new(2){ patch("reboot_needed" => true) } + Array.new(2){ patch }
+
+# All patches are "reboot_needed" => false
+PATCHES_WITHOUT_REBOOTING = Array.new(4){ patch }
+
+describe "OnlineUpdateDialogs" do
+ before(:each) do
+ Yast::Pkg.stub(:ResolvableProperties).and_return(PATCHES)
+ Yast::Pkg.stub(:ResolvableNeutral).and_return(true)
+ Yast::Pkg.stub(:PkgSolve).and_return(true)
+ end
+
+ describe "#patches_needing_reboot" do
+ it "returns list of selected patches that need rebooting" do
+ expect(Yast::OnlineUpdateDialogs.patches_needing_reboot.size).to eq 2
+ end
+ end
+
+ describe "#formatted_rebooting_patches" do
+ it "returns list of strings describing patch in HTML when :use_html is set" do
+ patches = Yast::OnlineUpdateDialogs.formatted_rebooting_patches(:use_html => true)
+ expect(patches.size).to eq 2
+ expect(patches[0]).to match(/</)
+ expect(patches[0]).to match(/>/)
+ end
+
+ it "returns list of strings describing patch in plain text when :use_html is not set" do
+ patches = Yast::OnlineUpdateDialogs.formatted_rebooting_patches(:use_html => false)
+ expect(patches.size).to eq 2
+ expect(patches[0]).not_to match(/</)
+ expect(patches[0]).not_to match(/>/)
+ end
+ end
+
+ describe "#rebooting_patches_dialog" do
+ it "returns dialog layout" do
+ expect(Yast::OnlineUpdateDialogs.rebooting_patches_dialog).not_to eq nil
+ end
+ end
+
+ describe "#confirm_rebooting_patches" do
+ before(:each) do
+ Yast::UI.stub(:OpenDialog).and_return(true)
+ Yast::UI.stub(:CloseDialog).and_return(true)
+ end
+
+ it "returns true if user decides to continue" do
+ Yast::UI.stub(:UserInput).and_return(Yast::OnlineUpdateDialogsClass::RebootingPatches::Buttons::CONTINUE)
+ expect(Yast::OnlineUpdateDialogs.confirm_rebooting_patches).to be_true
+ end
+
+ it "returns false if user decides to go back" do
+ Yast::UI.stub(:UserInput).and_return(Yast::OnlineUpdateDialogsClass::RebootingPatches::Buttons::BACK)
+ expect(Yast::OnlineUpdateDialogs.confirm_rebooting_patches).to be_false
+ end
+
+ it "returns true if user decides to skip rebooting patches and they are automatically unselected" do
+ # At first, there are some rebooting patches selected, later there are none
+ Yast::Pkg.stub(:ResolvableProperties).and_return(PATCHES, PATCHES_WITHOUT_REBOOTING)
+ Yast::UI.stub(:UserInput).and_return(Yast::OnlineUpdateDialogsClass::RebootingPatches::Buttons::SKIP)
+ expect(Yast::OnlineUpdateDialogs.confirm_rebooting_patches).to be_true, "Selected patches: #{Yast::Pkg.ResolvableProperties()}"
+ end
+
+ it "returns false if user decides to skip rebooting patches but they are not automatically unselected" do
+ # At first, there are some rebooting patches selected, later there still the same ones
+ Yast::Pkg.stub(:ResolvableProperties).and_return(PATCHES)
+ Yast::UI.stub(:UserInput).and_return(Yast::OnlineUpdateDialogsClass::RebootingPatches::Buttons::SKIP)
+ expect(Yast::OnlineUpdateDialogs.confirm_rebooting_patches).to be_false, "Selected patches: #{Yast::Pkg.ResolvableProperties()}"
+ end
+
+ it "returns false if user decides to skip rebooting patches but there are solver errors preset" do
+ # At first, there are some rebooting patches selected, later there are none
+ Yast::Pkg.stub(:ResolvableProperties).and_return(PATCHES, PATCHES_WITHOUT_REBOOTING)
+ Yast::UI.stub(:UserInput).and_return(Yast::OnlineUpdateDialogsClass::RebootingPatches::Buttons::SKIP)
+ Yast::Pkg.stub(:PkgSolve).and_return(false)
+ expect(Yast::OnlineUpdateDialogs.confirm_rebooting_patches).to be_false, "Selected patches: #{Yast::Pkg.ResolvableProperties()}"
+ end
+
+ it "raises an exception if UI returns unexpected return value" do
+ Yast::UI.stub(:UserInput).and_return(:unknown_user_input)
+ expect { Yast::OnlineUpdateDialogs.confirm_rebooting_patches }.to raise_error
+ end
+ end
+end
continue with "q"...
Checked in at Tue Feb 11 18:23:02 CET 2014 by ro
Remember to have fun...
--
To unsubscribe, e-mail: yast-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: yast-commit+help(a)opensuse.org