diff --git a/library/control/src/modules/WorkflowManager.rb b/library/control/src/modules/WorkflowManager.rb index cbf4bca92..40c36a21d 100644 --- a/library/control/src/modules/WorkflowManager.rb +++ b/library/control/src/modules/WorkflowManager.rb @@ -439,7 +439,18 @@ def control_file(source) dir = addon_control_dir(src, cleanup: true) fetch_package(src, package, dir) - path = File.join(dir, "installation.xml") + # lets first try FHS compliant path (bsc#1114573) + # sadly no glob escaping - https://bugs.ruby-lang.org/issues/8258 + # but as we generate directory, it should be ok + files = Dir.glob("#{dir}/usr/share/system-roles/*.xml") + if files.size == 1 + path = files.first + elsif files.size > 1 + log.error "more then one file in system role #{files.inspect}" + path = files.first + else + path = File.join(dir, "installation.xml") + end return nil unless File.exist?(path) log.info("installation.xml path: #{path}") diff --git a/library/control/test/workflow_manager_test.rb b/library/control/test/workflow_manager_test.rb index d1efba15c..da373777b 100755 --- a/library/control/test/workflow_manager_test.rb +++ b/library/control/test/workflow_manager_test.rb @@ -396,6 +396,13 @@ # the returned path contains "/installation.xml" at the end expect(subject.control_file(repo_id)).to end_with("/installation.xml") end + + it "returns path leading to system-roles dir if it exists" do + allow(Dir).to receive(:glob).and_return(["/tmp/usr/share/system-roles/superyast.xml"]) + expect(File).to receive(:exist?).with("/tmp/usr/share/system-roles/superyast.xml").and_return(true) + + expect(subject.control_file(repo_id)).to eq "/tmp/usr/share/system-roles/superyast.xml" + end end describe "#addon_control_dir" do diff --git a/package/yast2.changes b/package/yast2.changes index cd7a74b06..f02e39f64 100644 --- a/package/yast2.changes +++ b/package/yast2.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Nov 6 14:14:04 UTC 2018 - jreidinger@suse.com + +- WorkflowManager: Allow system roles to live in + /usr/share/system-roles/*.xml (bsc#1108176) +- 4.1.33 + ------------------------------------------------------------------- Fri Oct 26 11:46:16 UTC 2018 - jreidinger@suse.com @@ -10,7 +17,7 @@ Wed Oct 24 16:55:08 UTC 2018 - schubi@suse.de - Added flag save_y2logs to control.xml file in order to save YaST logs at the end of installation (fate#325737) -- 4.1.31 +- 4.1.31 ------------------------------------------------------------------- Wed Oct 24 15:55:08 UTC 2018 - jreidinger@suse.com diff --git a/package/yast2.spec b/package/yast2.spec index 73886aff5..1fb2aed4a 100644 --- a/package/yast2.spec +++ b/package/yast2.spec @@ -17,7 +17,7 @@ Name: yast2 -Version: 4.1.32 +Version: 4.1.33 Release: 0 Summary: YaST2 - Main Package License: GPL-2.0-only