Hello community,
here is the log from the commit of package yast2-installation for
openSUSE:Factory checked in at 2018-11-01 19:12:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-installation (Old)
and /work/SRC/openSUSE:Factory/.yast2-installation.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-installation"
Thu Nov 1 19:12:15 2018 rev:412 rq:645894 version:4.1.24
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-installation/yast2-installation.changes
2018-09-04 22:51:57.080134635 +0200
+++
/work/SRC/openSUSE:Factory/.yast2-installation.new/yast2-installation.changes
2018-11-01 19:12:18.702040952 +0100
@@ -1,0 +2,73 @@
+Thu Nov 1 08:03:27 UTC 2018 - [email protected]
+
+- extra_urls: compare unexpanded urls, so two identical
+ repositories with variables are detected (bsc#1090193)
+- 4.1.24
+
+-------------------------------------------------------------------
+Mon Oct 29 13:02:11 CET 2018 - [email protected]
+
+- Added save_y2logs client. (fate#325737)
+- 4.1.23
+
+-------------------------------------------------------------------
+Thu Oct 25 08:02:13 UTC 2018 - [email protected]
+
+- Remember the selected role (related to FATE#325834)
+- 4.1.22
+
+-------------------------------------------------------------------
+Tue Oct 23 14:17:49 CEST 2018 - [email protected]
+
+- Saving y2logs after the installation has been finished.
+ (fate#325737)
+- 4.1.21
+
+-------------------------------------------------------------------
+Tue Oct 16 13:52:00 CEST 2018 - [email protected]
+
+- Fixed path to license file. . Build error in fate#324713
+- 4.1.20
+
+-------------------------------------------------------------------
+Tue Sep 25 15:11:15 UTC 2018 - [email protected]
+
+- Skip the roles' dialog selection when there is only one available
+ (fate#324713)
+- 4.1.19
+
+-------------------------------------------------------------------
+Tue Sep 25 13:34:50 UTC 2018 - [email protected]
+
+- Fix syntax error (bsc#1109659)
+- 4.1.18
+
+-------------------------------------------------------------------
+Tue Sep 25 10:35:03 CEST 2018 - [email protected]
+
+- Updated docu for add_on_products.xml: Added tag "confirm_license"
+ to handle Add-On-products licenses which will be added while
+ installation. (bsc#1105758)
+- 4.1.17
+
+-------------------------------------------------------------------
+Tue Sep 18 09:33:59 UTC 2018 - [email protected]
+
+- Avoid to restore old backups when upgrade fails (bsc#1097297)
+- 4.1.16
+
+-------------------------------------------------------------------
+Thu Sep 13 16:37:43 UTC 2018 - [email protected]
+
+- Copy the selected packages from the self-update repository to an
+ additional add-on repository, allow updating the installation
+ workflow from the self-update repository (bsc#1101016)
+- 4.1.15
+
+-------------------------------------------------------------------
+Tue Sep 11 15:29:22 CEST 2018 - [email protected]
+
+- do not translate snapshot description (bsc#1092757)
+- 4.1.14
+
+-------------------------------------------------------------------
Old:
----
yast2-installation-4.1.13.tar.bz2
New:
----
yast2-installation-4.1.24.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-installation.spec ++++++
--- /var/tmp/diff_new_pack.07HxDy/_old 2018-11-01 19:12:19.322040979 +0100
+++ /var/tmp/diff_new_pack.07HxDy/_new 2018-11-01 19:12:19.326040979 +0100
@@ -17,7 +17,7 @@
Name: yast2-installation
-Version: 4.1.13
+Version: 4.1.24
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -47,8 +47,8 @@
BuildRequires: yast2 >= 4.1.3
Requires: yast2 >= 4.1.3
-# Yast::Packages.check_remote_installation_packages
-BuildRequires: yast2-packager >= 4.0.9
+# Y2Packager::SelfUpdateAddonRepo
+BuildRequires: yast2-packager >= 4.1.5
# Y2Storage::Inhibitors including systemd masking
BuildRequires: yast2-storage-ng >= 4.0.194
@@ -64,8 +64,8 @@
# Mouse-related scripts moved to yast2-mouse
Conflicts: yast2-mouse < 2.18.0
-# Yast::AddOnProduct.selected_installation_products
-Requires: yast2-packager >= 4.0.56
+# Y2Packager::SelfUpdateAddonRepo
+Requires: yast2-packager >= 4.1.5
# use in startup scripts
Requires: initviocons
@@ -252,7 +252,7 @@
%dir %{yast_vardir}/hooks/installation
%dir %{yast_docdir}
-%license %{yast_docdir}/COPYING
+%license COPYING
%doc %{yast_docdir}/README.md
%doc %{yast_docdir}/CONTRIBUTING.md
++++++ yast2-installation-4.1.13.tar.bz2 -> yast2-installation-4.1.24.tar.bz2
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-installation-4.1.13/Rakefile
new/yast2-installation-4.1.24/Rakefile
--- old/yast2-installation-4.1.13/Rakefile 2018-09-04 16:13:02.000000000
+0200
+++ new/yast2-installation-4.1.24/Rakefile 2018-11-01 12:33:37.000000000
+0100
@@ -1,4 +1,6 @@
require "yast/rake"
+require "find"
+require "English"
Yast::Tasks.configuration do |conf|
# lets ignore license check for now
@@ -22,3 +24,16 @@
end
task tarball: :check_rng_status
+
+# Extend the "check:syntax" task to check also the shell scripts
+task :"check:syntax" do
+ puts "* Checking the startup shell scripts..."
+ Find.find("startup") do |path|
+ # simple and stupid check, either it's executable or ends with .sh
+ next unless File.file?(path) && (File.executable?(path) ||
path.end_with?(".sh"))
+ # -n = read commands but do not execute them, syntax check only
+ system("bash", "-n", path)
+ raise "Syntax check failed" unless $CHILD_STATUS.success?
+ end
+ puts "* Done"
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-installation-4.1.13/doc/SELF_UPDATE.md
new/yast2-installation-4.1.24/doc/SELF_UPDATE.md
--- old/yast2-installation-4.1.13/doc/SELF_UPDATE.md 2018-09-04
16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/doc/SELF_UPDATE.md 2018-11-01
12:33:37.000000000 +0100
@@ -31,9 +31,14 @@
containing the updates.
2. If updates are available, they will be downloaded. Otherwise, the process
will be silently skipped.
-3. The updates will be applied to the installation system.
+3. The updates will be applied to the installation system, the meta-packages
+ which are needed by the installer are copied to the inst-sys instead of
+ applying.
4. YaST will be restarted to reload the modified files and the installation
will be resumed.
+5. The selected meta-packages copied to the inst-sys are added as an add-on
+ installation repository to allow updating the `skelcd-*` or `*-release`
+ packages via the self-update repository.
### Language Selection
@@ -67,7 +72,9 @@
YaST will use RPM packages stored in a rpm-md repository, although they are
handled in a different way:
-* All RPMs in the repository are considered (no "patch" metadata).
+* All RPMs in the repository are considered (no "patch" metadata), only some
+ meta-packages are skipped (e.g. the packages providing
`system-installation()`
+ or `product()`, it does not make sense to apply them to the inst-sys).
* RPMs are not installed in the usual way: they're uncompressed and no scripts
are executed.
* No dependency checks are performed. RPMs are added in alphabetical order.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-installation-4.1.13/doc/features.md
new/yast2-installation-4.1.24/doc/features.md
--- old/yast2-installation-4.1.13/doc/features.md 2018-09-04
16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/doc/features.md 2018-11-01
12:33:37.000000000 +0100
@@ -60,6 +60,15 @@
default is 'false' (optional)
-->
<selected config:type="boolean">true</selected>
+ <!--
+ Defines priority of the newly added repository
(optional).
+ Libzypp uses its default priority if not set.
+ -->
+ <priority config:type="integer">20</priority>
+ <!--
+ User has to accept license?
+ -->
+ <confirm_license
config:type="boolean">true</confirm_license>
</product_item>
<!-- Another product item -->
@@ -95,6 +104,12 @@
- (boolean) *selected* - Defines the default state of *pre-selected*
state in case of *ask\_user* used; default is *false*
+- (integer) *priority* - Defines priority of the newly added repository.
+ Libzypp uses its default priority if not set.
+
+- (boolean) *confirm_license* - User has to accept license if available?
+ default: AutoYaST installation:false ; normal installation:true
+
- (list \<string\>) *install\_products/product* - List of products to
add if there are more than one products at the repository URL; if
not defined, all products are installed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/package/yast2-installation.changes
new/yast2-installation-4.1.24/package/yast2-installation.changes
--- old/yast2-installation-4.1.13/package/yast2-installation.changes
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/package/yast2-installation.changes
2018-11-01 12:33:37.000000000 +0100
@@ -1,4 +1,77 @@
-------------------------------------------------------------------
+Thu Nov 1 08:03:27 UTC 2018 - [email protected]
+
+- extra_urls: compare unexpanded urls, so two identical
+ repositories with variables are detected (bsc#1090193)
+- 4.1.24
+
+-------------------------------------------------------------------
+Mon Oct 29 13:02:11 CET 2018 - [email protected]
+
+- Added save_y2logs client. (fate#325737)
+- 4.1.23
+
+-------------------------------------------------------------------
+Thu Oct 25 08:02:13 UTC 2018 - [email protected]
+
+- Remember the selected role (related to FATE#325834)
+- 4.1.22
+
+-------------------------------------------------------------------
+Tue Oct 23 14:17:49 CEST 2018 - [email protected]
+
+- Saving y2logs after the installation has been finished.
+ (fate#325737)
+- 4.1.21
+
+-------------------------------------------------------------------
+Tue Oct 16 13:52:00 CEST 2018 - [email protected]
+
+- Fixed path to license file. . Build error in fate#324713
+- 4.1.20
+
+-------------------------------------------------------------------
+Tue Sep 25 15:11:15 UTC 2018 - [email protected]
+
+- Skip the roles' dialog selection when there is only one available
+ (fate#324713)
+- 4.1.19
+
+-------------------------------------------------------------------
+Tue Sep 25 13:34:50 UTC 2018 - [email protected]
+
+- Fix syntax error (bsc#1109659)
+- 4.1.18
+
+-------------------------------------------------------------------
+Tue Sep 25 10:35:03 CEST 2018 - [email protected]
+
+- Updated docu for add_on_products.xml: Added tag "confirm_license"
+ to handle Add-On-products licenses which will be added while
+ installation. (bsc#1105758)
+- 4.1.17
+
+-------------------------------------------------------------------
+Tue Sep 18 09:33:59 UTC 2018 - [email protected]
+
+- Avoid to restore old backups when upgrade fails (bsc#1097297)
+- 4.1.16
+
+-------------------------------------------------------------------
+Thu Sep 13 16:37:43 UTC 2018 - [email protected]
+
+- Copy the selected packages from the self-update repository to an
+ additional add-on repository, allow updating the installation
+ workflow from the self-update repository (bsc#1101016)
+- 4.1.15
+
+-------------------------------------------------------------------
+Tue Sep 11 15:29:22 CEST 2018 - [email protected]
+
+- do not translate snapshot description (bsc#1092757)
+- 4.1.14
+
+-------------------------------------------------------------------
Tue Sep 4 13:34:17 UTC 2018 - [email protected]
- Use /media.1/media instead the /media.1/build (bsc#1062297)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/package/yast2-installation.spec
new/yast2-installation-4.1.24/package/yast2-installation.spec
--- old/yast2-installation-4.1.13/package/yast2-installation.spec
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/package/yast2-installation.spec
2018-11-01 12:33:37.000000000 +0100
@@ -16,7 +16,7 @@
#
Name: yast2-installation
-Version: 4.1.13
+Version: 4.1.24
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -46,8 +46,8 @@
BuildRequires: yast2 >= 4.1.3
Requires: yast2 >= 4.1.3
-# Yast::Packages.check_remote_installation_packages
-BuildRequires: yast2-packager >= 4.0.9
+# Y2Packager::SelfUpdateAddonRepo
+BuildRequires: yast2-packager >= 4.1.5
# Y2Storage::Inhibitors including systemd masking
BuildRequires: yast2-storage-ng >= 4.0.194
@@ -63,8 +63,8 @@
# Mouse-related scripts moved to yast2-mouse
Conflicts: yast2-mouse < 2.18.0
-# Yast::AddOnProduct.selected_installation_products
-Requires: yast2-packager >= 4.0.56
+# Y2Packager::SelfUpdateAddonRepo
+Requires: yast2-packager >= 4.1.5
# use in startup scripts
Requires: initviocons
@@ -251,6 +251,6 @@
%dir %{yast_vardir}/hooks/installation
%dir %{yast_docdir}
-%license %{yast_docdir}/COPYING
+%license COPYING
%doc %{yast_docdir}/README.md
%doc %{yast_docdir}/CONTRIBUTING.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-installation-4.1.13/src/clients/save_y2logs.rb
new/yast2-installation-4.1.24/src/clients/save_y2logs.rb
--- old/yast2-installation-4.1.13/src/clients/save_y2logs.rb 1970-01-01
01:00:00.000000000 +0100
+++ new/yast2-installation-4.1.24/src/clients/save_y2logs.rb 2018-11-01
12:33:37.000000000 +0100
@@ -0,0 +1,2 @@
+require "installation/clients/save_y2logs"
+Yast::SaveY2logs.new.main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/clients/inst_extrasources.rb
new/yast2-installation-4.1.24/src/lib/installation/clients/inst_extrasources.rb
---
old/yast2-installation-4.1.13/src/lib/installation/clients/inst_extrasources.rb
2018-09-04 16:13:02.000000000 +0200
+++
new/yast2-installation-4.1.24/src/lib/installation/clients/inst_extrasources.rb
2018-11-01 12:33:37.000000000 +0100
@@ -345,7 +345,7 @@
result = srcs.each_with_object([]) do |src, ret|
general = Pkg.SourceGeneralData(src)
- url = general["url"]
+ url = general["raw_url"]
next if url.nil? || url.empty?
@local_urls[src] = url if Mode.update && url =~ /^dir:\/+mnt\/+/
# check for USB sources which should be disabled
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/clients/inst_update_installer.rb
new/yast2-installation-4.1.24/src/lib/installation/clients/inst_update_installer.rb
---
old/yast2-installation-4.1.13/src/lib/installation/clients/inst_update_installer.rb
2018-09-04 16:13:02.000000000 +0200
+++
new/yast2-installation-4.1.24/src/lib/installation/clients/inst_update_installer.rb
2018-11-01 12:33:37.000000000 +0100
@@ -15,6 +15,7 @@
require "installation/updates_manager"
require "installation/update_repositories_finder"
+require "y2packager/self_update_addon_repo"
require "uri"
require "yaml"
@@ -112,6 +113,10 @@
updated = update_repositories.map { |u| add_repository(u) }.any?
if updated
+ # copy the addon packages before applying the updates to inst-sys,
+ # #apply_all removes the repositories!
+ Yast::Progress.NextStage
+ copy_addon_packages
log.info("Applying installer updates")
Yast::Progress.NextStage
updates_manager.apply_all
@@ -387,6 +392,7 @@
# TRANSLATORS: progress label
_("Add Update Repository"),
_("Download the Packages"),
+ _("Copy the Addon Packages"),
_("Apply the Packages"),
_("Restart")
]
@@ -508,5 +514,15 @@
log.info("Processing profile location...")
ProfileLocation.Process
end
+
+ #
+ # Copy the addon packages from the self-update repositories to the inst-sys
+ #
+ def copy_addon_packages
+ log.info("Copying optional addon packages from the self update
repositories...")
+ updates_manager.repositories.each do |u|
+ ::Y2Packager::SelfUpdateAddonRepo.copy_packages(u.repo_id)
+ end
+ end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/clients/save_y2logs.rb
new/yast2-installation-4.1.24/src/lib/installation/clients/save_y2logs.rb
--- old/yast2-installation-4.1.13/src/lib/installation/clients/save_y2logs.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-installation-4.1.24/src/lib/installation/clients/save_y2logs.rb
2018-11-01 12:33:37.000000000 +0100
@@ -0,0 +1,25 @@
+# encoding: utf-8
+# File: src/lib/installation/clients/inst_save_y2logs.rb
+# Module: Installation
+# Summary: Saving y2logs by calling save_y2logs
+#
+
+module Yast
+ class SaveY2logs < Client
+ def main
+ Yast.import "Directory"
+ Yast.import "Installation"
+ Yast.import "ProductFeatures"
+
+ if ProductFeatures.GetBooleanFeature("globals", "save_y2logs")
+ target_path = ::File.join(
+ Yast::Installation.destdir,
+ Yast::Directory.logdir
+ )
+
+ WFM.Execute(Yast::Path.new(".local.bash"),
+ "/usr/sbin/save_y2logs
'#{target_path}/yast-installation-logs.tar.xz'")
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/copy_logs_finish.rb
new/yast2-installation-4.1.24/src/lib/installation/copy_logs_finish.rb
--- old/yast2-installation-4.1.13/src/lib/installation/copy_logs_finish.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/src/lib/installation/copy_logs_finish.rb
2018-11-01 12:33:37.000000000 +0100
@@ -32,6 +32,7 @@
Yast.import "Directory"
Yast.import "Installation"
+ Yast.import "ProductFeatures"
end
def steps
@@ -88,6 +89,9 @@
end
end
+ # Saving y2logs
+ WFM.CallFunction("save_y2logs")
+
nil
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/select_system_role.rb
new/yast2-installation-4.1.24/src/lib/installation/select_system_role.rb
--- old/yast2-installation-4.1.13/src/lib/installation/select_system_role.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/src/lib/installation/select_system_role.rb
2018-11-01 12:33:37.000000000 +0100
@@ -35,11 +35,6 @@
class SelectSystemRole < ::UI::InstallationDialog
include UI::TextHelpers
- class << self
- # once the user selects a role, remember it in case they come back
- attr_accessor :original_role_id
- end
-
NON_OVERLAY_ATTRIBUTES = [
"additional_dialogs",
"id",
@@ -60,10 +55,18 @@
if Yast::GetInstArgs.going_back
# If coming back, we have to run the additional dialogs first...
- clients = additional_clients_for(self.class.original_role_id)
+ clients = additional_clients_for(SystemRole.current)
direction = run_clients(clients, going_back: true)
- # ... and only run the main dialog (super) if we are *still* going back
- return direction unless direction == :back
+ # ...and only run the main dialog (super) if there is more than one
role (fate#324713) and we
+ # are *still* going back
+ return direction if single_role? || direction != :back
+ end
+
+ if single_role?
+ # Apply the role and skip the dialog when there is only one
(fate#324713)
+ log.info "Only one role available, applying it and skipping the dialog"
+ clear_role
+ return select_role(roles.first.id)
end
super
@@ -78,7 +81,7 @@
end
def dialog_content
- @selected_role_id = self.class.original_role_id
+ @selected_role_id = SystemRole.current
@selected_role_id ||= roles.first && roles.first.id if
SystemRole.default?
HCenter(ReplacePoint(Id(:rp), role_buttons(selected_role_id:
@selected_role_id)))
@@ -92,26 +95,7 @@
end
def next_handler
- role_id = @selected_role_id
-
- if role_id.nil? # no role selected (bsc#1078809)
- # An Error popup
- msg = _("Select one of the available roles to continue.")
- Yast::Popup.Error(msg)
- return
- end
-
- orig_role_id = self.class.original_role_id
- if !orig_role_id.nil? && orig_role_id != role_id
- # A Continue-Cancel popup
- msg = _("Changing the system role may undo adjustments you may have
done.")
- return unless Yast::Popup.ContinueCancel(msg)
- end
- self.class.original_role_id = role_id
-
- apply_role(SystemRole.find(role_id))
-
- result = run_clients(additional_clients_for(role_id))
+ result = select_role(@selected_role_id)
# We show the main role dialog; but the additional clients have
# drawn over it, so draw it again and go back to input loop.
# create_dialog do not create new dialog if it already exist like in this
@@ -139,6 +123,35 @@
private
+ # checks if there is only one role available
+ def single_role?
+ roles.size == 1
+ end
+
+ # Applies the role with given id and run its additional clients, if any
+ #
+ # @param role_id [Integer] The role to be applied
+ #
+ # @see run_clients
+ #
+ # @return [:next,:back,:abort] which direction the additional dialogs
exited
+ def select_role(role_id)
+ if role_id.nil?
+ # no role selected (bsc#1078809)
+ Yast::Popup.Error(_("Select one of the available roles to continue."))
+ return :back
+ end
+
+ if SystemRole.current && SystemRole.current != role_id
+ # Changing the role, show a Continue-Cancel popup to user
+ msg = _("Changing the system role may undo adjustments you may have
done.")
+ return :back unless Yast::Popup.ContinueCancel(msg)
+ end
+
+ apply_role(role_id)
+ run_clients(additional_clients_for(role_id))
+ end
+
# gets array of clients to run for given role
def additional_clients_for(role_id)
role = SystemRole.find(role_id)
@@ -192,8 +205,10 @@
end
# Applies given role to configuration
- def apply_role(role)
- log.info "Applying system role '#{role.id}'"
+ def apply_role(role_id)
+ log.info "Applying system role '#{role_id}'"
+
+ role = SystemRole.select(role_id)
role.overlay_features
adapt_services(role)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/snapshots_finish.rb
new/yast2-installation-4.1.24/src/lib/installation/snapshots_finish.rb
--- old/yast2-installation-4.1.13/src/lib/installation/snapshots_finish.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/src/lib/installation/snapshots_finish.rb
2018-11-01 12:33:37.000000000 +0100
@@ -48,15 +48,15 @@
def create_post_snapshot
pre_number = Yast2::FsSnapshotStore.load("update")
- # TRANSLATORS: label for filesystem snapshot taken after system update
- Yast2::FsSnapshot.create_post(_("after update"), pre_number, cleanup:
:number, important: true)
+ # as of bsc #1092757 snapshot descriptions are not translated
+ Yast2::FsSnapshot.create_post("after update", pre_number, cleanup:
:number, important: true)
Yast2::FsSnapshotStore.clean("update")
true
end
def create_single_snapshot
- # TRANSLATORS: label for filesystem snapshot taken after system
installation
- Yast2::FsSnapshot.create_single(_("after installation"), cleanup:
:number, important: true)
+ # as of bsc #1092757 snapshot descriptions are not translated
+ Yast2::FsSnapshot.create_single("after installation", cleanup: :number,
important: true)
true
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/system_role.rb
new/yast2-installation-4.1.24/src/lib/installation/system_role.rb
--- old/yast2-installation-4.1.13/src/lib/installation/system_role.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/src/lib/installation/system_role.rb
2018-11-01 12:33:37.000000000 +0100
@@ -130,6 +130,8 @@
# @see current
def select(role_id)
@current_role = find(role_id)
+ log.info("Selected role: #{current}")
+ current_role
end
# Returns the current role id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/src/lib/installation/update_repository.rb
new/yast2-installation-4.1.24/src/lib/installation/update_repository.rb
--- old/yast2-installation-4.1.13/src/lib/installation/update_repository.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/src/lib/installation/update_repository.rb
2018-11-01 12:33:37.000000000 +0100
@@ -18,6 +18,7 @@
require "packages/package_downloader"
require "packages/package_extractor"
+require "y2packager/self_update_addon_filter"
Yast.import "Pkg"
Yast.import "Progress"
@@ -136,10 +137,11 @@
add_repo
end
- # Retrieves the list of packages to install
+ # Retrieves the list of packages to unpack to the inst-sys
#
- # Only packages in the update repository are considered. Packages are
- # sorted by name (alphabetical order).
+ # Only packages in the update repository are considered, meta-packages
+ # which should be used in an add-on and not applied to the inst-sys are
ignored.
+ # The packages are sorted by name (alphabetical order).
#
# @return [Array<Hash>] List of packages to install
#
@@ -149,7 +151,11 @@
add_repo
candidates = Yast::Pkg.ResolvableProperties("", :package, "")
@packages = candidates.select { |p| p["source"] == repo_id }.sort_by! {
|a| a["name"] }
- log.info "Considering #{@packages.size} packages: #{@packages}"
+ log.info "Found #{@packages.size} packages: #{@packages}"
+ # remove packages which are used as addons, these should not be applied
to the inst-sys
+ addon_pkgs = Y2Packager::SelfUpdateAddonFilter.packages(repo_id)
+ @packages.reject! { |p| addon_pkgs.include?(p["name"]) }
+ log.info "Using #{@packages.size} packages: #{@packages}"
@packages
end
@@ -245,10 +251,9 @@
# Determine whether the repository is empty or not
#
# @return [Boolean] true if the repository is empty; false otherwise.
- #
- # @see #packages
def empty?
- packages.empty?
+ candidates = Yast::Pkg.ResolvableProperties("", :package, "")
+ candidates.none? { |p| p["source"] == repo_id }
end
# Returns whether is a user defined repository
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-installation-4.1.13/startup/YaST2.call
new/yast2-installation-4.1.24/startup/YaST2.call
--- old/yast2-installation-4.1.13/startup/YaST2.call 2018-09-04
16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/startup/YaST2.call 2018-11-01
12:33:37.000000000 +0100
@@ -148,7 +148,7 @@
# ---
#
:
- export Y2STYLE="installation_slim"
+ export Y2STYLE="installation_slim"
set_inst_qt_env
}
@@ -268,7 +268,7 @@
{
# SecondStageRequired can be set:
# 1. after 1st stage (note 2nd stage is not always required)
- # 2. after 2nd stage (when another YaST run is required due to e.g.
+ # 2. after 2nd stage (when another YaST run is required due to e.g.
# kernel update)
if [ -f /etc/install.inf ] ; then
@@ -282,17 +282,47 @@
fi
}
+#---[ validate_backup ]---#
+function validate_backup () {
+ # Check that the ID and VERSION_ID in the backup os-release file
+ # matches with the values in the /etc/os-release to considered it
+ # as a valid backup to be restored (bsc#1097297)
+ #
+ # See also https://www.freedesktop.org/software/systemd/man/os-release.html
+ root="/mnt"
+ backup_id=$(grep "^ID=" $root/var/adm/backup/os-release | cut -d'=' -f2 | tr
-d '"')
+ backup_version_id=$(grep "^VERSION_ID=" $root/var/adm/backup/os-release |
cut -d'=' -f2 | tr -d '"')
+ backup_version="$backup_id-$backup_version_id"
+ current_id=$(grep "^ID=" $root/etc/os-release | cut -d'=' -f2 | tr -d '"')
+ current_version_id=$(grep "^VERSION_ID=" $root/etc/os-release | cut -d'='
-f2 | tr -d '"')
+ current_version="$current_id-$current_version_id"
+
+ log "Checking if it is a valid backup"
+
+ if [ $backup_version = $current_version ]; then
+ return 0
+ else
+ log "\tNot valid backup version. Expected: $current_version. Found:
$backup_version"
+ return 1
+ fi
+}
#----[ restore_backup ]----#
function restore_backup () {
# restores backup if it is available
- if [ -d /mnt/var/adm/backup/system-upgrade ]; then
- log "\tStarting restore scripts"
- for i in /mnt/var/adm/backup/system-upgrade/restore-*.sh; do
- log "\tStarting $i"
- sh $i /mnt
- done
+ if [ -d /mnt/var/adm/backup/system-upgrade ]; then
+ if validate_backup; then
+ log "\tStarting restore scripts"
+
+ for i in /mnt/var/adm/backup/system-upgrade/restore-*.sh; do
+ log "\tStarting $i"
+
+ sh $i /mnt
+ done
+ else
+ log "\tBackup was not restore because its version info does not match"
fi
+ fi
}
#----[ start_yast ]----#
@@ -679,7 +709,7 @@
# when found the ssh daemon is killed, so create this file as the very
last step!!
#
(https://github.com/openSUSE/installation-images/blob/c57181329ab7040369da705c5b0ddd78e2960bf0/data/root/etc/inst_setup#L221-L229)
echo $Y2_EXIT_CODE > /tmp/YaST2_ssh_installation_finished
-fi
+fi
if [ $SELECTED_MEDIUM != "SSH" ] && [ "$Y2_MODE" = "ncurses" ]; then
# Enable display of status messages on the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/test/inst_extrasources_test.rb
new/yast2-installation-4.1.24/test/inst_extrasources_test.rb
--- old/yast2-installation-4.1.13/test/inst_extrasources_test.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/test/inst_extrasources_test.rb
2018-11-01 12:33:37.000000000 +0100
@@ -12,10 +12,10 @@
subject.instance_variable_set(:"@usb_sources", {})
allow(Yast::Pkg).to
receive(:SourceGetCurrent).with(false).and_return([0, 1, 2, 3])
- allow(Yast::Pkg).to receive(:SourceGeneralData).with(0).and_return("url"
=> "http://test.com/")
+ allow(Yast::Pkg).to
receive(:SourceGeneralData).with(0).and_return("raw_url" => "http://test.com/")
allow(Yast::Pkg).to receive(:SourceGeneralData).with(1)
- .and_return("url" => "usb://device=/dev/disk/by-id/usb-15")
- allow(Yast::Pkg).to receive(:SourceGeneralData).with(2).and_return("url"
=> "dir:///mnt/path")
+ .and_return("raw_url" => "usb://device=/dev/disk/by-id/usb-15")
+ allow(Yast::Pkg).to
receive(:SourceGeneralData).with(2).and_return("raw_url" => "dir:///mnt/path")
allow(Yast::Pkg).to receive(:SourceGeneralData).with(3).and_return({})
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/test/inst_update_installer_test.rb
new/yast2-installation-4.1.24/test/inst_update_installer_test.rb
--- old/yast2-installation-4.1.13/test/inst_update_installer_test.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/test/inst_update_installer_test.rb
2018-11-01 12:33:37.000000000 +0100
@@ -14,7 +14,7 @@
let(:manager) do
double("update_manager", all_signed?: all_signed?, apply_all: true,
- repositories?: has_repos)
+ repositories?: has_repos, repositories: repos)
end
let(:url) { "http://update.opensuse.org/\$arch/update.dud" }
let(:real_url) { "http://update.opensuse.org/#{arch}/update.dud" }
@@ -26,6 +26,8 @@
let(:all_signed?) { true }
let(:network_running) { true }
let(:has_repos) { true }
+ let(:repo) { double("repo", repo_id: 42) }
+ let(:repos) { [repo] }
let(:restarting) { false }
let(:profile) { {} }
let(:ay_profile) { double("Yast::Profile", current: profile) }
@@ -43,6 +45,7 @@
allow(subject).to
receive(:require).with("registration/url_helpers").and_raise(LoadError)
stub_const("Registration::Storage::InstallationOptions",
FakeInstallationOptions)
stub_const("Registration::Storage::Config", FakeRegConfig)
+ allow(Y2Packager::SelfUpdateAddonRepo).to receive(:copy_packages)
# skip the libzypp initialization globally, enable in the specific tests
allow(subject).to receive(:initialize_packager).and_return(true)
@@ -111,14 +114,22 @@
context "and update works" do
before do
- allow(subject).to receive(:update_installer).and_return(true)
+ allow(subject).to receive(:self_update_enabled?).and_return(true)
+ allow(subject).to receive(:add_repository).and_return(true)
+ allow(manager).to receive(:apply_all)
+ allow(::FileUtils).to receive(:touch)
+ allow(Y2Packager::SelfUpdateAddonRepo).to receive(:copy_packages)
end
it "creates update file and returns :restart_yast" do
- expect(::FileUtils).to receive(:touch).once
- allow(subject).to receive(:self_update_enabled?).and_return(true)
expect(subject.main).to eq(:restart_yast)
end
+
+ it "copies the add-on packages from the self-update repository" do
+ expect(Y2Packager::SelfUpdateAddonRepo).to receive(:copy_packages)
+ .with(repo.repo_id)
+ subject.main
+ end
end
context "and update fails" do
@@ -154,6 +165,7 @@
context "when repository is empty" do
let(:has_repos) { false }
+ let(:repos) { [] }
it "does not restart YaST" do
expect(manager).to receive(:add_repository)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/test/lib/clients/inst_system_analysis_test.rb
new/yast2-installation-4.1.24/test/lib/clients/inst_system_analysis_test.rb
--- old/yast2-installation-4.1.13/test/lib/clients/inst_system_analysis_test.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/test/lib/clients/inst_system_analysis_test.rb
2018-11-01 12:33:37.000000000 +0100
@@ -43,6 +43,7 @@
allow(storage).to receive(:activate).and_return activate_result
allow(storage).to receive(:probe).and_return probe_result
allow(Yast::Mode).to receive(:auto).and_return(auto)
+ allow(Yast::Execute).to receive(:locally!)
stub_const("Y2Autoinstallation::ActivateCallbacks", callbacks_class)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/test/lib/clients/save_y2logs_test.rb
new/yast2-installation-4.1.24/test/lib/clients/save_y2logs_test.rb
--- old/yast2-installation-4.1.13/test/lib/clients/save_y2logs_test.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-installation-4.1.24/test/lib/clients/save_y2logs_test.rb
2018-11-01 12:33:37.000000000 +0100
@@ -0,0 +1,36 @@
+#!/usr/bin/env rspec
+
+require_relative "../../test_helper"
+require "installation/clients/save_y2logs"
+
+Yast.import "ProductFeatures"
+
+describe Yast::SaveY2logs do
+ subject(:client) { described_class.new }
+
+ describe "#main" do
+ let(:bash_path) { Yast::Path.new(".local.bash") }
+
+ context "globals/save_y2logs in control.xml is false" do
+ it "does not save y2logs" do
+ expect(Yast::ProductFeatures).to
receive(:GetBooleanFeature).with("globals", "save_y2logs").and_return(false)
+ expect(Yast::WFM).not_to receive(:Execute).with(
+ bash_path,
+ "/usr/sbin/save_y2logs
'/var/log/YaST2/yast-installation-logs.tar.xz'"
+ )
+ client.main
+ end
+ end
+
+ context "globals/save_y2logs in control.xml is true" do
+ it "saves y2logs" do
+ expect(Yast::ProductFeatures).to
receive(:GetBooleanFeature).with("globals", "save_y2logs").and_return(true)
+ expect(Yast::WFM).to receive(:Execute).with(
+ bash_path,
+ "/usr/sbin/save_y2logs
'/var/log/YaST2/yast-installation-logs.tar.xz'"
+ )
+ client.main
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-installation-4.1.13/test/select_system_role_test.rb
new/yast2-installation-4.1.24/test/select_system_role_test.rb
--- old/yast2-installation-4.1.13/test/select_system_role_test.rb
2018-09-04 16:13:02.000000000 +0200
+++ new/yast2-installation-4.1.24/test/select_system_role_test.rb
2018-11-01 12:33:37.000000000 +0100
@@ -13,6 +13,7 @@
"Lorem Ipsum #{s}"
end
+ allow(Installation::SystemRole).to receive(:select)
allow(Yast::UI).to receive(:ChangeWidget)
allow(Yast::Language).to receive(:language).and_return("en_US")
@@ -21,12 +22,10 @@
describe "#run" do
before do
- # reset previous test
- subject.class.original_role_id = nil
-
allow(Yast::ProductFeatures).to receive(:ClearOverlay)
- allow(Yast::ProductFeatures).to receive(:SetOverlay) # .with
+ allow(Yast::ProductFeatures).to receive(:SetOverlay)
allow(Yast::Packages).to receive(:SelectSystemPatterns)
+ allow(Installation::SystemRole).to receive(:current)
end
context "when no roles are defined" do
@@ -41,6 +40,90 @@
end
end
+ context "when single role is defined" do
+ let(:additional_dialogs) { "" }
+ let(:control_file_roles) do
+ [
+ { "id" => "bar", "order" => "200",
+ "software" => { "desktop" => "knome" }, "additional_dialogs" =>
additional_dialogs }
+ ]
+ end
+
+ before do
+ allow(Yast::ProductControl).to receive(:system_roles)
+ .and_return(control_file_roles)
+ allow(Yast::WFM).to receive(:CallFunction).and_return(:next)
+ allow(Installation::SystemRole).to receive(:select).with("bar")
+ .and_return(Installation::SystemRole.new(id: "bar", order: 200))
+ end
+
+ it "(re)sets ProductFeatures" do
+ expect(Yast::ProductFeatures).to receive(:ClearOverlay)
+ expect(Yast::ProductFeatures).to receive(:SetOverlay)
+
+ subject.run
+ end
+
+ context "and going forward" do
+ before do
+ allow(Yast::UI).to receive(:UserInput).and_return(:next)
+ end
+
+ it "does not display dialog" do
+ expect(Yast::Wizard).to_not receive(:SetContents)
+ expect(Yast::UI).to_not receive(:UserInput)
+ expect(Yast::UI).to_not receive(:QueryWidget)
+
+ subject.run
+ end
+
+ it "returns :next" do
+ expect(subject.run).to be(:next)
+ end
+
+ context "and there are additional dialogs" do
+ let(:additional_dialogs) { "a,b" }
+
+ it "shows the first one" do
+ expect(Yast::WFM).to receive(:CallFunction).with("a",
anything).and_return(:next)
+
+ subject.run
+ end
+ end
+ end
+
+ context "and going back" do
+ before do
+ allow(Installation::SystemRole).to
receive(:current).and_return("bar")
+ allow(Yast::GetInstArgs).to receive(:going_back).and_return(true)
+ allow(Yast::UI).to receive(:UserInput).and_return(:back)
+ end
+
+ it "does not display dialog" do
+ expect(Yast::Wizard).to_not receive(:SetContents)
+ expect(Yast::UI).to_not receive(:UserInput)
+ expect(Yast::UI).to_not receive(:QueryWidget)
+
+ subject.run
+ end
+
+ it "returns :back" do
+ expect(subject.run).to be(:back)
+ end
+
+ context "and there are additional dialogs" do
+ let(:additional_dialogs) { "a,b" }
+
+ it "shows the last one" do
+ allow(Yast::GetInstArgs).to receive(:going_back).and_return(true)
+ expect(Yast::WFM).to receive(:CallFunction).with("b",
anything).and_return(:next)
+
+ subject.run
+ end
+ end
+ end
+ end
+
context "when some roles are defined" do
let(:control_file_roles) do
[
@@ -53,6 +136,10 @@
before do
allow(Yast::ProductControl).to receive(:system_roles)
.and_return(control_file_roles)
+ allow(Installation::SystemRole).to receive(:select).with("foo")
+ .and_return(Installation::SystemRole.new(id: "foo", order: 100))
+ allow(Installation::SystemRole).to receive(:select).with("bar")
+ .and_return(Installation::SystemRole.new(id: "bar", order: 200))
end
it "displays dialog, and sets ProductFeatures on Next" do
@@ -61,7 +148,7 @@
.and_return("foo", :next)
expect(Yast::ProductFeatures).to receive(:ClearOverlay)
- expect(Yast::ProductFeatures).to receive(:SetOverlay) # .with
+ expect(Yast::ProductFeatures).to receive(:SetOverlay)
expect(subject.run).to eq(:next)
end
@@ -89,7 +176,7 @@
end
it "shows the last dialog when going back" do
- subject.class.original_role_id = "bar"
+ allow(Installation::SystemRole).to
receive(:current).and_return("bar")
allow(Yast::GetInstArgs).to receive(:going_back).and_return(true)
expect(Yast::Wizard).to_not receive(:SetContents)
expect(Yast::UI).to_not receive(:UserInput)
@@ -103,8 +190,7 @@
context "when re-selecting the same role" do
it "just proceeds without a popup" do
- subject.class.original_role_id = "foo"
-
+ allow(Installation::SystemRole).to
receive(:current).and_return("foo")
allow(Yast::Wizard).to receive(:SetContents)
allow(Yast::UI).to receive(:UserInput)
.and_return("foo", :next)
@@ -120,8 +206,7 @@
context "when re-selecting a different role" do
it "displays a popup, and proceeds if Continue is answered" do
- subject.class.original_role_id = "bar"
-
+ allow(Installation::SystemRole).to
receive(:current).and_return("bar")
allow(Yast::Wizard).to receive(:SetContents)
allow(Yast::UI).to receive(:UserInput)
.and_return("foo", :next)
@@ -136,8 +221,7 @@
end
it "displays a popup, and does not proceed if Cancel is answered" do
- subject.class.original_role_id = "bar"
-
+ allow(Installation::SystemRole).to
receive(:current).and_return("bar")
allow(Yast::Wizard).to receive(:SetContents)
allow(Yast::UI).to receive(:UserInput)
.and_return("foo", :next, :back)