Hello community,
here is the log from the commit of package yast2-services-manager for openSUSE:Factory checked in at 2014-07-13 17:15:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-services-manager (Old)
and /work/SRC/openSUSE:Factory/.yast2-services-manager.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-services-manager"
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-services-manager/yast2-services-manager.changes 2014-06-17 11:22:56.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-services-manager.new/yast2-services-manager.changes 2014-07-13 17:15:27.000000000 +0200
@@ -1,0 +2,39 @@
+Tue Jul 8 09:34:32 CEST 2014 - locilka@suse.com
+
+- Function 'localize' moved to ServicesManagerTarget library and
+ added a test case (bnc#886117)
+- 3.1.20
+
+-------------------------------------------------------------------
+Mon Jul 7 16:08:30 CEST 2014 - locilka@suse.com
+
+- Fixed broken N_(...) call (bnc#886040)
+- 3.1.19
+
+-------------------------------------------------------------------
+Fri Jul 4 14:48:16 CEST 2014 - locilka@suse.com
+
+- Default systemd target names marked for translation (bnc#884339)
+- 3.1.18
+
+-------------------------------------------------------------------
+Thu Jul 3 16:32:16 CEST 2014 - locilka@suse.com
+
+- Marked "runlevel" as not clonable, the functionality is there
+ for importing old profiles only (bnc#873604)
+- 3.1.17
+
+-------------------------------------------------------------------
+Wed Jul 2 12:15:17 UTC 2014 - vmoravec@suse.com
+
+- Fix failing tests
+- 3.1.16
+
+-------------------------------------------------------------------
+Tue Jul 1 09:19:08 UTC 2014 - vmoravec@suse.com
+
+- Fix issues with ServicesManagerTarget (bnc#869656, bnc#867759,
+ bnc#875098)
+- 3.1.15
+
+-------------------------------------------------------------------
Old:
----
yast2-services-manager-3.1.14.tar.bz2
New:
----
yast2-services-manager-3.1.20.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-services-manager.spec ++++++
--- /var/tmp/diff_new_pack.0CYwkb/_old 2014-07-13 17:15:28.000000000 +0200
+++ /var/tmp/diff_new_pack.0CYwkb/_new 2014-07-13 17:15:28.000000000 +0200
@@ -24,7 +24,7 @@
######################################################################
Name: yast2-services-manager
-Version: 3.1.14
+Version: 3.1.20
Release: 0
BuildArch: noarch
@@ -33,7 +33,7 @@
Source0: %{name}-%{version}.tar.bz2
Requires: ruby
-Requires: yast2 >= 3.0.5
+Requires: yast2 >= 3.1.82
Requires: yast2-ruby-bindings >= 1.2.0
# need new enough installation for its inst clients
Conflicts: yast2-installation < 3.1.32
@@ -43,7 +43,7 @@
BuildRequires: ruby
BuildRequires: update-desktop-files
-BuildRequires: yast2 >= 3.0.5
+BuildRequires: yast2 >= 3.1.82
BuildRequires: yast2-ruby-bindings >= 1.2.0
# Support for 'data' directory in rake install task
BuildRequires: rubygem-rspec
++++++ yast2-services-manager-3.1.14.tar.bz2 -> yast2-services-manager-3.1.20.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-3.1.14/package/yast2-services-manager.changes new/yast2-services-manager-3.1.20/package/yast2-services-manager.changes
--- old/yast2-services-manager-3.1.14/package/yast2-services-manager.changes 2014-06-06 16:32:27.000000000 +0200
+++ new/yast2-services-manager-3.1.20/package/yast2-services-manager.changes 2014-07-08 11:42:27.000000000 +0200
@@ -1,4 +1,43 @@
-------------------------------------------------------------------
+Tue Jul 8 09:34:32 CEST 2014 - locilka@suse.com
+
+- Function 'localize' moved to ServicesManagerTarget library and
+ added a test case (bnc#886117)
+- 3.1.20
+
+-------------------------------------------------------------------
+Mon Jul 7 16:08:30 CEST 2014 - locilka@suse.com
+
+- Fixed broken N_(...) call (bnc#886040)
+- 3.1.19
+
+-------------------------------------------------------------------
+Fri Jul 4 14:48:16 CEST 2014 - locilka@suse.com
+
+- Default systemd target names marked for translation (bnc#884339)
+- 3.1.18
+
+-------------------------------------------------------------------
+Thu Jul 3 16:32:16 CEST 2014 - locilka@suse.com
+
+- Marked "runlevel" as not clonable, the functionality is there
+ for importing old profiles only (bnc#873604)
+- 3.1.17
+
+-------------------------------------------------------------------
+Wed Jul 2 12:15:17 UTC 2014 - vmoravec@suse.com
+
+- Fix failing tests
+- 3.1.16
+
+-------------------------------------------------------------------
+Tue Jul 1 09:19:08 UTC 2014 - vmoravec@suse.com
+
+- Fix issues with ServicesManagerTarget (bnc#869656, bnc#867759,
+ bnc#875098)
+- 3.1.15
+
+-------------------------------------------------------------------
Fri Jun 6 10:52:11 CEST 2014 - locilka@suse.com
- AutoYast summary - hard-coded ERB moved to separate file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-3.1.14/package/yast2-services-manager.spec new/yast2-services-manager-3.1.20/package/yast2-services-manager.spec
--- old/yast2-services-manager-3.1.14/package/yast2-services-manager.spec 2014-06-06 16:32:27.000000000 +0200
+++ new/yast2-services-manager-3.1.20/package/yast2-services-manager.spec 2014-07-08 11:42:27.000000000 +0200
@@ -24,7 +24,7 @@
######################################################################
Name: yast2-services-manager
-Version: 3.1.14
+Version: 3.1.20
Release: 0
BuildArch: noarch
@@ -33,7 +33,7 @@
Source0: %{name}-%{version}.tar.bz2
Requires: ruby
-Requires: yast2 >= 3.0.5
+Requires: yast2 >= 3.1.82
Requires: yast2-ruby-bindings >= 1.2.0
# need new enough installation for its inst clients
Conflicts: yast2-installation < 3.1.32
@@ -44,7 +44,7 @@
BuildRequires: ruby
BuildRequires: update-desktop-files
BuildRequires: yast2-ruby-bindings >= 1.2.0
-BuildRequires: yast2 >= 3.0.5
+BuildRequires: yast2 >= 3.1.82
# Support for 'data' directory in rake install task
BuildRequires: rubygem-yast-rake >= 0.1.7
BuildRequires: rubygem-rspec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-3.1.14/src/clients/default_target_proposal.rb new/yast2-services-manager-3.1.20/src/clients/default_target_proposal.rb
--- old/yast2-services-manager-3.1.14/src/clients/default_target_proposal.rb 2014-06-06 16:07:33.000000000 +0200
+++ new/yast2-services-manager-3.1.20/src/clients/default_target_proposal.rb 2014-07-08 11:42:27.000000000 +0200
@@ -5,7 +5,7 @@
import 'Linuxrc'
import 'Mode'
import 'Pkg'
- import "Popup"
+ import 'Popup'
import 'ProductFeatures'
import 'ServicesManagerTarget'
import 'Wizard'
@@ -97,10 +97,18 @@
def generate_target_buttons
Builtins.y2milestone "Available targets: #{available_targets}"
+
radio_buttons = available_targets.map do |target_name|
selected = target_name == ServicesManagerTarget.default_target
- Left(RadioButton(Id(target_name), target_name, selected))
+ Left(
+ RadioButton(
+ Id(target_name),
+ ServicesManagerTargetClass::BaseTargets.localize(target_name),
+ selected
+ )
+ )
end
+
VBox(*radio_buttons)
end
@@ -178,8 +186,14 @@
end
def create
- proposal = { 'preformatted_proposal' => list(default_target) }
+ proposal = {
+ 'preformatted_proposal' => list(
+ ServicesManagerTargetClass::BaseTargets.localize(default_target)
+ )
+ }
+
return proposal if warnings.empty?
+
proposal.update 'warning_level' => :warning
proposal.update 'warning' => list(*warnings)
proposal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-3.1.14/src/desktop/runlevel.desktop new/yast2-services-manager-3.1.20/src/desktop/runlevel.desktop
--- old/yast2-services-manager-3.1.14/src/desktop/runlevel.desktop 2014-06-06 16:07:33.000000000 +0200
+++ new/yast2-services-manager-3.1.20/src/desktop/runlevel.desktop 2014-07-08 11:42:27.000000000 +0200
@@ -1,4 +1,5 @@
# This file is needed for legacy support of runlevel autoyast profile
+# and provides only backward compatibility for importing old profiles
[Desktop Entry]
Type=Application
@@ -14,6 +15,8 @@
X-SuSE-YaST-Argument=
X-SuSE-YaST-RootOnly=true
X-SuSE-YaST-AutoInst=all
+# bnc#873604 Export is not supported, use services-manager instead
+X-SuSE-YaST-AutoInstClonable=false
X-SuSE-YaST-Geometry=
X-SuSE-YaST-SortKey=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-3.1.14/src/modules/services_manager.rb new/yast2-services-manager-3.1.20/src/modules/services_manager.rb
--- old/yast2-services-manager-3.1.14/src/modules/services_manager.rb 2014-06-06 16:07:33.000000000 +0200
+++ new/yast2-services-manager-3.1.20/src/modules/services_manager.rb 2014-07-08 11:42:27.000000000 +0200
@@ -52,7 +52,6 @@
# @return Boolean if successful
def save
target_saved = ServicesManagerTarget.save
- errors << ServicesManagerTarget.errors
services_saved = ServicesManagerService.save
errors << ServicesManagerService.errors
!!(target_saved && services_saved)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-3.1.14/src/modules/services_manager_service.rb new/yast2-services-manager-3.1.20/src/modules/services_manager_service.rb
--- old/yast2-services-manager-3.1.14/src/modules/services_manager_service.rb 2014-06-06 16:07:33.000000000 +0200
+++ new/yast2-services-manager-3.1.20/src/modules/services_manager_service.rb 2014-07-08 11:42:27.000000000 +0200
@@ -1,4 +1,6 @@
- module Yast
+require "yast"
+
+module Yast
import "Service"
import "Mode"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-3.1.14/src/modules/services_manager_target.rb new/yast2-services-manager-3.1.20/src/modules/services_manager_target.rb
--- old/yast2-services-manager-3.1.14/src/modules/services_manager_target.rb 2014-06-06 16:07:33.000000000 +0200
+++ new/yast2-services-manager-3.1.20/src/modules/services_manager_target.rb 2014-07-08 11:42:27.000000000 +0200
@@ -2,62 +2,104 @@
module Yast
import 'Mode'
+ import 'SystemdTarget'
class ServicesManagerTargetClass < Module
- LIST_UNITS_COMMAND = 'systemctl list-unit-files --type target'
- LIST_TARGETS_COMMAND = 'systemctl --all --type target'
- COMMAND_OPTIONS = ' --no-legend --no-pager --no-ask-password '
- TERM_OPTIONS = ' LANG=C TERM=dumb COLUMNS=1024 '
- TARGET_SUFFIX = '.target'
- DEFAULT_TARGET = 'default'
- SYSTEMD_TARGETS_DIR = '/usr/lib/systemd/system'
- DEFAULT_TARGET_SYMLINK = "/etc/systemd/system/#{DEFAULT_TARGET}#{TARGET_SUFFIX}"
-
- module Status
- ENABLED = 'enabled'
- DISABLED = 'disabled'
- SUPPORTED = [ENABLED, DISABLED]
- ACTIVE = 'active'
- LOADED = 'loaded'
- end
+ include Yast::Logger
module BaseTargets
+ extend Yast::I18n
+
+ def initialize
+ textdomain 'services-manager'
+ end
+
GRAPHICAL = 'graphical'
MULTIUSER = 'multi-user'
+
+ TRANSLATIONS = {
+ # Default systemd target (previously: runlevel 5) option #1
+ GRAPHICAL => N_("Graphical mode"),
+ # Default systemd target (previously: runlevel 3) option #2
+ MULTIUSER => N_("Text mode"),
+ }
+
+ def self.localize(target_name)
+ _(TRANSLATIONS[target_name] || target_name)
+ end
end
- attr_accessor :modified, :targets, :force, :proposal_reason
- attr_reader :errors, :default_target
+ # The targets listed below should not be displayed to the users in the drop down
+ # menu on the services-manager UI.
+ # More info at:
+ # * https://bugzilla.novell.com/show_bug.cgi?id=869656
+ # * http://www.freedesktop.org/software/systemd/man/bootup.html
+ # * http://www.freedesktop.org/wiki/Software/systemd/SystemUpdates/
+ BLACKLISTED_TARGETS = %w(
+ halt
+ kexec
+ poweroff
+ reboot
+ system-update
+ )
+
+ # @return [Boolean] True if properties of the ServicesManagerTarget has been modified
+ attr_accessor :modified
+
+ # Used during installation workflow
+ # @return [Boolean] Used by client default_target_proposal to override the default settings
+ attr_accessor :force
+
+ # Shown in client default_target_proposal during installation workflow
+ # @return [String] Shows a reason why the default target has been selected;
+ attr_accessor :proposal_reason
+
+ # @return [String] Name of the default systemd target unit
+ attr_reader :default_target
+
+ # @return [Hash] Collection of available targets
+ # @example {'rescue' => {:enabled=>false, :loaded=>true, :active=>false, :description=>'Rescue'}}
+ attr_reader :targets
alias_method :all, :targets
def initialize
textdomain 'services-manager'
- @errors = []
@targets = {}
+ @modified = false
@default_target = ''
- read_targets if Mode.normal
+ read_targets
end
def read_targets
- find_default_target
- load_supported_targets
- load_target_details
- end
+ return unless Mode.normal
- alias_method :read, :read_targets
+ default_target = SystemdTarget.get_default
+ @default_target = default_target ? default_target.name : ''
- def valid?
- errors.empty?
+ SystemdTarget.all.each do |target|
+ next unless target.allow_isolate?
+ next if BLACKLISTED_TARGETS.member?(target.name)
+
+ targets[target.name] = {
+ :enabled => target.enabled?,
+ :loaded => target.loaded?,
+ :active => target.active?,
+ :description => target.description
+ }
+ end
end
+ alias_method :read, :read_targets
+
def default_target= new_default
- if Mode.normal
- errors << _("Target #{new_default} not found") unless targets.keys.include?(new_default)
+ if Mode.normal && !targets.keys.include?(new_default)
+ raise "Target #{new_default} not found, available only #{targets.keys.join(', ')}"
end
+
@default_target = new_default
self.modified = true
- Builtins.y2milestone "New default target set: #{new_default}"
+ log.info "New default target has been set: #{new_default}"
new_default
end
@@ -76,119 +118,17 @@
end
def save
- Builtins.y2milestone('Saving default target...')
- if !modified
- Builtins.y2milestone("Nothing to do, current default target already set to '#{default_target}'")
- return true
- end
-
- if !valid?
- errors.each {|e| Builtins.y2error(e) }
- Builtins.y2error("Invalid default target '#{default_target}'; aborting saving")
- return false
- end
- removed = remove_default_target_symlink
- created = create_default_target_symlink
- removed && created
+ return true if !modified
+ log.info('Saving default target...')
+ SystemdTarget.set_default(default_target)
end
def reset
- errors.clear
+ targets.clear
read_targets
self.modified = false
end
- private
-
- def find_default_target
- @default_target = get_default_target_filename.chomp(TARGET_SUFFIX)
- end
-
- def remove_default_target_symlink
- Builtins.y2milestone("Removing default target symlink..")
- removed = SCR.Execute(path('.target.remove'), DEFAULT_TARGET_SYMLINK)
- if removed
- Builtins.y2milestone "#{DEFAULT_TARGET_SYMLINK} has been removed"
- else
- Builtins.y2error "Removing of #{DEFAULT_TARGET_SYMLINK} has failed"
- end
- removed
- end
-
- def create_default_target_symlink
- Builtins.y2milestone("Creating new default target symlink for #{default_target_file}")
- SCR.Execute(path('.target.symlink'), default_target_file, DEFAULT_TARGET_SYMLINK)
- created = SCR.Read(path('.target.size'), DEFAULT_TARGET_SYMLINK) > 0
- if created
- Builtins.y2milestone("Symlink has been created")
- else
- Builtins.y2error("Default target unit file '#{default_target}' is empty")
- end
- created
- end
-
- def get_default_target_filename
- File.basename(SCR.Read(path('.target.symlink'), DEFAULT_TARGET_SYMLINK).to_s)
- end
-
- def default_target_file
- File.join(SYSTEMD_TARGETS_DIR, "#{default_target}#{TARGET_SUFFIX}")
- end
-
- def list_target_units
- command = TERM_OPTIONS + LIST_UNITS_COMMAND + COMMAND_OPTIONS
- SCR.Execute(path('.target.bash_output'), command)
- end
-
- def list_targets_details
- command = TERM_OPTIONS + LIST_TARGETS_COMMAND + COMMAND_OPTIONS
- SCR.Execute(path('.target.bash_output'), command)
- end
-
- def load_supported_targets
- self.targets = {}
- output = list_target_units
- stdout = output.fetch 'stdout'
- stderr = output.fetch 'stderr'
- exit_code = output.fetch 'exit'
- errors << stderr if exit_code.to_i != 0 && !stderr.to_s.empty?
- stdout.each_line do |line|
- target, status = line.split(/[\s]+/)
- if Status::SUPPORTED.include?(status)
- target.chomp! TARGET_SUFFIX
- next if target == DEFAULT_TARGET
- self.targets[target] = { :enabled => status == Status::ENABLED }
- end
- end
- Builtins.y2milestone "Loaded supported target units: %1", targets.keys
- end
-
- def load_target_details
- output = list_targets_details
- stdout = output.fetch 'stdout'
- stderr = output.fetch 'stderr'
- exit_code = output.fetch 'exit'
- errors << stderr if exit_code.to_i != 0 && !stderr.to_s.empty?
- unknown_targets = []
- stdout.each_line do |line|
- target, loaded, active, _, *description = line.split(/[\s]+/)
- target.chomp! TARGET_SUFFIX
- if targets[target]
- targets[target][:loaded] = loaded == Status::LOADED
- targets[target][:active] = active == Status::ACTIVE
- targets[target][:description] = description.join(' ')
- else
- unknown_targets << target
- end
- end
-
- Builtins.y2milestone 'Loaded target details: %1', targets
-
- if !unknown_targets.empty?
- Builtins.y2warning "No details loaded for these targets: #{unknown_targets.join(', ')} "
- end
- end
-
publish({:function => :all, :type => "map