Hello community,
here is the log from the commit of package yast2-services-manager for openSUSE:Factory checked in at 2018-12-31 09:43:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-services-manager (Old)
and /work/SRC/openSUSE:Factory/.yast2-services-manager.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-services-manager"
Mon Dec 31 09:43:51 2018 rev:44 rq:657950 version:4.1.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-services-manager/yast2-services-manager.changes 2018-11-01 18:56:46.741975842 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-services-manager.new.28833/yast2-services-manager.changes 2018-12-31 09:43:52.870339857 +0100
@@ -1,0 +2,18 @@
+Wed Dec 12 15:55:24 UTC 2018 - schubi@suse.de
+
+- Fix: Do not crash in chroot environment (bsc#1113732)
+- 4.1.11
+
+-------------------------------------------------------------------
+Wed Dec 12 15:46:31 UTC 2018 - Josef Reidinger
+
+- always use absolute path to binaries (bsc#1118291)
+- 4.1.10
+
+-------------------------------------------------------------------
+Mon Nov 26 02:52:52 UTC 2018 - Noah Davis
+
+- Provide icon with module (boo#1109310)
+- 4.1.9
+
+-------------------------------------------------------------------
Old:
----
yast2-services-manager-4.1.8.tar.bz2
New:
----
yast2-services-manager-4.1.11.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-services-manager.spec ++++++
--- /var/tmp/diff_new_pack.abKyHq/_old 2018-12-31 09:43:53.262339537 +0100
+++ /var/tmp/diff_new_pack.abKyHq/_new 2018-12-31 09:43:53.262339537 +0100
@@ -24,7 +24,7 @@
######################################################################
Name: yast2-services-manager
-Version: 4.1.8
+Version: 4.1.11
Release: 0
BuildArch: noarch
@@ -79,6 +79,7 @@
%suse_update_desktop_file services-manager
%define yast_dir %{_prefix}/share/YaST2
+%define yast_icondir %{_datadir}/icons
%files
%defattr(-,root,root)
@@ -96,7 +97,7 @@
%dir %{yast_dir}/lib/services-manager/dialogs
%{yast_dir}/lib/services-manager/dialogs/*.rb
%{_prefix}/share/applications/YaST2/services-manager.desktop
-
+%{yast_icondir}
%_docdir/%name/
%license COPYING
++++++ yast2-services-manager-4.1.8.tar.bz2 -> yast2-services-manager-4.1.11.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/package/yast2-services-manager.changes new/yast2-services-manager-4.1.11/package/yast2-services-manager.changes
--- old/yast2-services-manager-4.1.8/package/yast2-services-manager.changes 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/package/yast2-services-manager.changes 2018-12-13 11:58:38.000000000 +0100
@@ -1,4 +1,22 @@
-------------------------------------------------------------------
+Wed Dec 12 15:55:24 UTC 2018 - schubi@suse.de
+
+- Fix: Do not crash in chroot environment (bsc#1113732)
+- 4.1.11
+
+-------------------------------------------------------------------
+Wed Dec 12 15:46:31 UTC 2018 - Josef Reidinger
+
+- always use absolute path to binaries (bsc#1118291)
+- 4.1.10
+
+-------------------------------------------------------------------
+Mon Nov 26 02:52:52 UTC 2018 - Noah Davis
+
+- Provide icon with module (boo#1109310)
+- 4.1.9
+
+-------------------------------------------------------------------
Tue Oct 16 15:28:34 CEST 2018 - schubi@suse.de
- Added license file to spec.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/package/yast2-services-manager.spec new/yast2-services-manager-4.1.11/package/yast2-services-manager.spec
--- old/yast2-services-manager-4.1.8/package/yast2-services-manager.spec 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/package/yast2-services-manager.spec 2018-12-13 11:58:38.000000000 +0100
@@ -24,7 +24,7 @@
######################################################################
Name: yast2-services-manager
-Version: 4.1.8
+Version: 4.1.11
Release: 0
BuildArch: noarch
@@ -79,6 +79,7 @@
%suse_update_desktop_file services-manager
%define yast_dir %{_prefix}/share/YaST2
+%define yast_icondir %{_datadir}/icons
%files
%defattr(-,root,root)
@@ -96,6 +97,6 @@
%dir %{yast_dir}/lib/services-manager/dialogs
%{yast_dir}/lib/services-manager/dialogs/*.rb
%{_prefix}/share/applications/YaST2/services-manager.desktop
-
+%{yast_icondir}
%_docdir/%name/
%license COPYING
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/src/desktop/services-manager.desktop new/yast2-services-manager-4.1.11/src/desktop/services-manager.desktop
--- old/yast2-services-manager-4.1.8/src/desktop/services-manager.desktop 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/src/desktop/services-manager.desktop 2018-12-13 11:58:38.000000000 +0100
@@ -17,7 +17,7 @@
X-SuSE-YaST-AutoInstResourceAliases=runlevel
X-SuSE-YaST-Keywords=systemd,system,background
-Icon=yast-runlevel
+Icon=yast-services-manager
Exec=xdg-su -c "/sbin/yast2 services-manager"
Name=Services Manager
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/src/icons/hicolor/scalable/apps/yast-services-manager.svg new/yast2-services-manager-4.1.11/src/icons/hicolor/scalable/apps/yast-services-manager.svg
--- old/yast2-services-manager-4.1.8/src/icons/hicolor/scalable/apps/yast-services-manager.svg 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-services-manager-4.1.11/src/icons/hicolor/scalable/apps/yast-services-manager.svg 2018-12-13 11:58:38.000000000 +0100
@@ -0,0 +1 @@
+<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="36" x2="120" y1="92" y2="8"><stop offset="0" stop-color="#deddda"/><stop offset="1" stop-color="#f6f5f4"/></linearGradient><g stroke-width="4"><path d="M120 12s-48.932 6.888-72 24C34.288 46.172 16 76 16 76l40 40s27.884-17.068 40-32c18.096-22.304 24-72 24-72z" fill="#c0bfbc"/><path d="M120 8s-48.932 6.888-72 24C34.288 42.172 16 72 16 72l40 40s27.884-17.068 40-32c18.096-22.304 24-72 24-72z" fill="url(#a)"/><path d="M80 32a16 16 0 0 0-16 16 16 16 0 0 0 16 16 16 16 0 0 0 16-16 16 16 0 0 0-16-16z" fill="#9a9996"/><path d="M80 36a12 12 0 0 0-12 12 12 12 0 0 0 12 12 12 12 0 0 0 12-12 12 12 0 0 0-12-12z" fill="#241f31"/><path d="M40 44L8 92V68l32-28zM88 92v-4l-48 32v4h24zM24 92l36-24v4l-20 36-24 8v-4z" fill="#a51d2d"/><g fill="#e01b24"><path d="M40 40L8 88V64zM88 88l-48 32h24zM24 88l36-20-20 36-24 8zM120 8s-11.84 1.676-26.6 5.4l21.544 21.544A255.88 255.88 0 0 0 120 8z"/></g><path d="M80 36a12 12 0 0 0-12 12 12 12 0 0 0 10.44 11.88l6.796-22.668A12 12 0 0 0 80 36z" fill="#fff" opacity=".2"/></g></svg>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/src/lib/services-manager/clients/default_target_proposal.rb new/yast2-services-manager-4.1.11/src/lib/services-manager/clients/default_target_proposal.rb
--- old/yast2-services-manager-4.1.8/src/lib/services-manager/clients/default_target_proposal.rb 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/src/lib/services-manager/clients/default_target_proposal.rb 2018-12-13 11:58:38.000000000 +0100
@@ -114,7 +114,7 @@
def create_dialog
caption = _("Set Default Systemd Target")
Wizard.CreateDialog
- Wizard.SetTitleIcon "yast-runlevel"
+ Wizard.SetDesktopIcon "services-manager"
Wizard.SetContentsButtons(
caption,
generate_content,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/src/lib/services-manager/dialogs/services_manager.rb new/yast2-services-manager-4.1.11/src/lib/services-manager/dialogs/services_manager.rb
--- old/yast2-services-manager-4.1.8/src/lib/services-manager/dialogs/services_manager.rb 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/src/lib/services-manager/dialogs/services_manager.rb 2018-12-13 11:58:38.000000000 +0100
@@ -29,6 +29,7 @@
require "services-manager/widgets/show_details_button"
require "services-manager/widgets/logs_button"
require "services-manager/widgets/services_table"
+require "services-manager/service_loader"
Yast.import "ServicesManager"
Yast.import "UI"
@@ -586,6 +587,10 @@
#
# @return [Array<String>] name of all services
def read_services
+ if Y2ServicesManager::ServiceLoader.chroot_env?
+ Popup.Error(_("Cannot read services in chroot environment."))
+ return []
+ end
Yast2::Feedback.show(_("Reading services status...")) do
ServicesManagerService.reload
ServicesManagerService.all.keys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/src/lib/services-manager/service_loader.rb new/yast2-services-manager-4.1.11/src/lib/services-manager/service_loader.rb
--- old/yast2-services-manager-4.1.8/src/lib/services-manager/service_loader.rb 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/src/lib/services-manager/service_loader.rb 2018-12-13 11:58:38.000000000 +0100
@@ -42,9 +42,9 @@
class ServiceLoader
include Yast::Logger
- LIST_UNIT_FILES_COMMAND = 'systemctl list-unit-files --type service'
- LIST_UNITS_COMMAND = 'systemctl list-units --all --type service'
- STATUS_COMMAND = 'systemctl status'
+ LIST_UNIT_FILES_COMMAND = '/usr/bin/systemctl list-unit-files --type service'
+ LIST_UNITS_COMMAND = '/usr/bin/systemctl list-units --all --type service'
+ STATUS_COMMAND = '/usr/bin/systemctl status'
# FIXME: duplicated in Yast::Systemctl
COMMAND_OPTIONS = ' --no-legend --no-pager --no-ask-password '
TERM_OPTIONS = ' LANG=C TERM=dumb COLUMNS=1024 '
@@ -91,6 +91,8 @@
@unit_files = {}
@units = {}
+ return {} if self.class.chroot_env? # systemd is not available
+
load_unit_files
load_units
@@ -106,6 +108,15 @@
services
end
+ # Checking if the module is running in chroot environment
+ #
+ # @return [Boolean] if running in chroot environment
+ def self.chroot_env?
+ command = TERM_OPTIONS + STATUS_COMMAND + COMMAND_OPTIONS
+ ret = Yast::SCR.Execute(Yast::Path.new('.target.bash_output'), command)['stderr']
+ ret.start_with?("Running in chroot")
+ end
+
private
# FIXME: use Yast::Systemctl for this, remember to chomp SERVICE_SUFFIX
@@ -171,13 +182,12 @@
extract_services_from_unit_files
# Add old LSB services (Services which are loaded but not available as a unit file)
extract_services_from_units
-
service_names = services.keys.sort
ss = Yast2::SystemService.find_many(service_names)
# Rest of settings
services.clear
ss.each do |s|
- services[s.name] = s
+ services[s.name] = s if s.service # name is a def_delegator of SystemService.service.name
end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/src/lib/services-manager/widgets/start_mode_button.rb new/yast2-services-manager-4.1.11/src/lib/services-manager/widgets/start_mode_button.rb
--- old/yast2-services-manager-4.1.8/src/lib/services-manager/widgets/start_mode_button.rb 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/src/lib/services-manager/widgets/start_mode_button.rb 2018-12-13 11:58:38.000000000 +0100
@@ -91,6 +91,7 @@
# @return [ArrayYast::Term]
def items
start_modes = ServicesManagerService.start_modes(service_name)
+ return [] unless start_modes #start_modes can also return false due errors
ServicesManagerService.all_start_modes.each_with_object([]) do |mode, all|
next unless start_modes.include?(mode)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/test/service_loader_test.rb new/yast2-services-manager-4.1.11/test/service_loader_test.rb
--- old/yast2-services-manager-4.1.8/test/service_loader_test.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-services-manager-4.1.11/test/service_loader_test.rb 2018-12-13 11:58:38.000000000 +0100
@@ -0,0 +1,109 @@
+#!/usr/bin/env rspec
+# encoding: utf-8
+
+# Copyright (c) [2018] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+
+require_relative 'test_helper'
+
+
+require "yast"
+require "services-manager/service_loader"
+
+describe Y2ServicesManager::ServiceLoader do
+
+ subject { described_class.new }
+
+ let(:alsasound) do
+ instance_double(
+ Yast2::SystemService, name: "alsasound", description: "alsasound", start: true, stop: true,
+ state: "active", substate: "running", changed?: false, start_mode: :on_boot,
+ save: nil, refresh: nil, errors: {}, service: Yast2::SystemService.build("alsasound")
+ )
+ end
+
+ let(:apparmor) do
+ instance_double(
+ Yast2::SystemService, name: "apparmor", changed?: true, active?: true,
+ running?: false, refresh: nil, save: nil, errors: {}, service: Yast2::SystemService.build("apparmor")
+ )
+ end
+
+ let(:empty_SystemService) do
+ instance_double(
+ Yast2::SystemService, errors: {}, service: nil
+ )
+ end
+
+ let(:services) do
+ [alsasound, apparmor]
+ end
+
+ describe "#read" do
+ before do
+ allow_any_instance_of(Y2ServicesManager::ServiceLoader)
+ .to receive(:list_unit_files).
+ and_return(["apparmor.service enabled\n",
+ "alsasound.service static\n"])
+ allow_any_instance_of(Y2ServicesManager::ServiceLoader)
+ .to receive(:list_units).
+ and_return(["alsasound.service loaded inactive dead Sound Card\n",
+ "apparmor.service loaded active exited AppArmor profiles\n"])
+ allow(Y2ServicesManager::ServiceLoader)
+ .to receive(:chroot_env?).and_return(false)
+ end
+
+ context "when services can be evalutated by systemd/sockets" do
+ it "returns services with correct name" do
+ expect(Yast2::SystemService).to receive(:find_many).
+ with(services.map {|service| service.name}.sort).
+ and_return(services)
+ read_services = subject.read.map {|key, service| service.name}
+ expect(read_services).to eq( services.map {|service| service.name})
+ end
+ end
+
+ context "when services cannot be evalutated by systemd/sockets" do
+ it "returns none services" do
+ expect(Yast2::SystemService).to receive(:find_many).
+ with(services.map {|service| service.name}.sort).
+ and_return([empty_SystemService,empty_SystemService])
+ expect(subject.read).to be_empty
+ end
+ end
+ end
+
+ describe ".chroot_env?" do
+ context "when it has been started in chroot environment" do
+ it "returns true" do
+ expect(Yast::SCR).to receive(:Execute).with(Yast::Path.new(".target.bash_output"),
+ /systemctl status/).and_return({"stderr" => "Running in chroot"})
+ expect(Y2ServicesManager::ServiceLoader.chroot_env?).to be true
+ end
+ end
+
+ context "when it has not been started in chroot environment" do
+ it "returns true" do
+ expect(Yast::SCR).to receive(:Execute).with(Yast::Path.new(".target.bash_output"),
+ /systemctl status/).and_return({"stderr" => ""})
+ expect(Y2ServicesManager::ServiceLoader.chroot_env?).to be false
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-services-manager-4.1.8/test/support/services_manager_helpers.rb new/yast2-services-manager-4.1.11/test/support/services_manager_helpers.rb
--- old/yast2-services-manager-4.1.8/test/support/services_manager_helpers.rb 2018-10-16 17:43:02.000000000 +0200
+++ new/yast2-services-manager-4.1.11/test/support/services_manager_helpers.rb 2018-12-13 11:58:38.000000000 +0100
@@ -84,9 +84,9 @@
end
start_modes = service_specs[:start_modes] || [:on_boot, :manually]
-
+ service_name = service_specs[:unit].split(".").first
service = instance_double(Yast2::SystemService,
- name: service_specs[:unit].split(".").first,
+ name: service_name,
start_mode: start_mode,
start_modes: start_modes,
active?: service_specs[:active] == "active",
@@ -96,7 +96,8 @@
keywords: service_specs[:keywords],
changed?: service_specs[:changed] || false,
found?: service_specs[:found] || true,
- errors: service_specs[:errors] || []
+ errors: service_specs[:errors] || [],
+ service: Yast2::SystemService.build(service_name)
)
allow(service).to receive(:start_mode=)