Bug 1217968

Summary: [SECURITY][Build 44.1] CC evaluated configuration role installation error in 15-SP6
Product: [openSUSE] PUBLIC SUSE Linux Enterprise Server 15 SP6 Reporter: Timo Jyrinki <tjyrinki>
Component: YaST2Assignee: Steffen Winterfeldt <snwint>
Status: RESOLVED FIXED QA Contact:
Severity: Normal    
Priority: P2 - High CC: ancor, meissner, rtsvetkov, tjyrinki
Version: unspecified   
Target Milestone: ---   
Hardware: Other   
OS: Other   
URL: https://openqa.suse.de/tests/12947910/modules/partitioning/steps/2
Whiteboard:
Found By: openQA Services Priority:
Business Priority: Blocker: Yes
Marketing QA Status: --- IT Deployment: ---
Attachments: local y2logs

Description Timo Jyrinki 2023-12-12 07:16:20 UTC
Created attachment 871280 [details]
local y2logs

openQA test in scenario sle-15-SP6-Online-x86_64-create_hdd_textmode_common_criteria@64bit fails in
[partitioning](https://openqa.suse.de/tests/12947910/modules/partitioning/steps/2)

Last good: [40.1](https://openqa.suse.de/tests/12932726) (or more recent)

Testing locally, I get "cannot load such file -- y2common_criteria/dialogs/installation" as the first error. y2logs attached.

This prevents all our CC testing.
Comment 1 Timo Jyrinki 2023-12-12 07:17:05 UTC
Maybe this bug should go directly to YaST component since it's already at install time?
Comment 2 Timo Jyrinki 2023-12-12 07:22:46 UTC
Link to Build44.1: https://openqa.suse.de/tests/13003738#step/partitioning/2
Comment 3 Stefan Hundhammer 2023-12-12 08:30:48 UTC
Please explain what the test does and what it is that you think is a bug.

"openQA test fails" would just mean that the test is buggy; that is probably not what you mean. We've been through that countless times. See also

https://en.opensuse.org/openSUSE:How_to_Write_a_Good_Bugreport
Comment 4 Timo Jyrinki 2023-12-12 08:50:13 UTC
I linked to the openQA test error so you can see the flow there, but as mentioned I tested it locally.

1. Start installation in qemu with SLE-15-SP6-Online-x86_64-Build44.1-Media1.iso
 (UEFI, TPM)
1. Go with all defaults, but on the role page select Common Criteria evaluated configuration

The error quoted in the description is gotten and seen in the logs.

Sorry that I did not start the description with the local testing results, I know the template texts easily indicate that it's simply a link to a failing openQA test.
Comment 5 Ancor Gonzalez Sosa 2023-12-12 08:56:15 UTC
From the attached logs:

> Calling YaST client inst_cc_mode
> Call client /mounts/mp_0001/usr/share/YaST2/clients/inst_cc_mode.rb
> Client /mounts/mp_0001/usr/share/YaST2/clients/inst_cc_mode.rb
>    failed with 'cannot load such file --
>    y2common_criteria/dialogs/installation' (LoadError).
Comment 6 Ancor Gonzalez Sosa 2023-12-12 09:01:12 UTC
That role is defined in this repository/package. That at first glance seems to contain that file that is being reported to be missing.

https://github.com/yast/system-role-common-criteria
Comment 7 Stefan Hundhammer 2023-12-12 09:02:46 UTC
> I linked to the openQA test error so you can see the flow there

NO. We have been reverse engineering cryptic OpenQA tests since at least 2015, and we decided that we are no longer wading through hundreds of screenshots. 

A description what the test does and what its purpose is should be the default for every single test, but ususally there is either absolutely nothing (like here). So we can just guess what the purpose of those dozens or sometimes even hundreds of screenshots is. That's reverse engineering. And that's a giant waste of development time when the creator of the test already KNOWS that the test does, and that its purpose or focus is.

https://openqa.suse.de/tests/12932726

(the last good - what does it do? Let the guessing begin; especially the "console" part that consists of a gazillion shell commands)

I am sick and tired of repeating this discussion again and again.
Comment 8 Timo Jyrinki 2023-12-12 09:32:55 UTC
The "Last good" information could be changed to be not a link, it's probably enough (of a sidenote) to know that in Build40.1 the problem was not not there yet, no need to go to the sea of screenshots.

I agree the openQA linking is not very useful, but this is not the right place for that discussion, so let's focus on the actual problem which is that installing Build44.1 with CC role fails with the error message about missing file.

I could provide a video also, but as said the error appears with all-defaults by simply selecting the CC role and clickign Next.
Comment 9 Stefan Hundhammer 2023-12-12 09:34:12 UTC
Full backtraces (there are several ones) from the attached y2logs tarball:


> 2023-12-12 02:09:24 <1> install(3922) [Interpreter]
>   installation/select_system_role.rb:191
>   Calling YaST client inst_cc_mode
> .
> 2023-12-12 02:09:24 <1> install(3922) [Ruby] yast/wfm.rb(run_client):341
>   Call client /mounts/mp_0001/usr/share/YaST2/clients/inst_cc_mode.rb
> .  
> 2023-12-12 02:09:24 <3> install(3922) [Ruby] yast/wfm.rb(handle_exception):271
>   Client /mounts/mp_0001/usr/share/YaST2/clients/inst_cc_mode.rb
>   failed with 'cannot load such file --
>   y2common_criteria/dialogs/installation' (LoadError).
> .
> usr/lib64/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
> usr/lib64/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
> usr/share/YaST2/clients/inst_cc_mode.rb:20:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/lib/installation/select_system_role.rb:191:in `block in run_clients'
> usr/share/YaST2/lib/installation/select_system_role.rb:190:in `loop'
> usr/share/YaST2/lib/installation/select_system_role.rb:190:in `run_clients'
> usr/share/YaST2/lib/installation/select_system_role.rb:169:in `select_role'
> usr/share/YaST2/lib/installation/select_system_role.rb:104:in `next_handler'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:47:in `public_send'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:47:in `block in event_loop'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:43:in `loop'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:43:in `event_loop'
> usr/share/YaST2/lib/ui/dialog.rb:53:in `run'
> usr/share/YaST2/lib/installation/select_system_role.rb:71:in `run'
> usr/share/YaST2/clients/inst_system_role.rb:2:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/modules/ProductControl.rb:1306:in `block in RunFrom'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/y2logger.rb:98:in `group'
> usr/share/YaST2/modules/ProductControl.rb:1276:in `RunFrom'
> usr/share/YaST2/lib/add-on/clients/inst_add-on.rb:104:in `main'
> usr/share/YaST2/clients/inst_add-on.rb:3:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/modules/ProductControl.rb:1306:in `block in RunFrom'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/y2logger.rb:98:in `group'
> usr/share/YaST2/modules/ProductControl.rb:1276:in `RunFrom'
> usr/share/YaST2/lib/y2packager/clients/inst_product_workflow.rb:57:in `merge_and_run_workflow'
> usr/share/YaST2/lib/y2packager/clients/inst_product_workflow.rb:44:in `main'
> usr/share/YaST2/clients/inst_product_workflow.rb:3:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/modules/ProductControl.rb:1306:in `block in RunFrom'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/y2logger.rb:98:in `group'
> usr/share/YaST2/modules/ProductControl.rb:1276:in `RunFrom'
> usr/share/YaST2/modules/ProductControl.rb:1501:in `Run'
> usr/share/YaST2/lib/installation/clients/inst_worker_initial.rb:99:in `main'
> usr/share/YaST2/clients/inst_worker_initial.rb:2:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/lib/installation/clients/installation.rb:92:in `block in main'
> usr/share/YaST2/lib/ui/wizards/layout.rb:186:in `open_wizard'
> usr/share/YaST2/lib/installation/clients/installation.rb:60:in `main'
> usr/share/YaST2/clients/installation.rb:2:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'



> 2023-12-12 02:09:35 <1> install(3922) [Ruby]
>   installation/select_system_role.rb(block in run_clients):198
>   client inst_cc_mode return false
> .
> 2023-12-12 02:09:35 <3> install(3922) [Ruby] yast/wfm.rb(handle_exception):271
>   Client /mounts/mp_0001/usr/share/YaST2/clients/inst_system_role.rb
>   failed with 'unsupported client response false' (RuntimeError).
> .
> usr/share/YaST2/lib/installation/select_system_role.rb:210:in `block in run_clients'
> usr/share/YaST2/lib/installation/select_system_role.rb:190:in `loop'
> usr/share/YaST2/lib/installation/select_system_role.rb:190:in `run_clients'
> usr/share/YaST2/lib/installation/select_system_role.rb:169:in `select_role'
> usr/share/YaST2/lib/installation/select_system_role.rb:104:in `next_handler'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:47:in `public_send'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:47:in `block in event_loop'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:43:in `loop'
> usr/share/YaST2/lib/ui/event_dispatcher.rb:43:in `event_loop'
> usr/share/YaST2/lib/ui/dialog.rb:53:in `run'
> usr/share/YaST2/lib/installation/select_system_role.rb:71:in `run'
> usr/share/YaST2/clients/inst_system_role.rb:2:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/modules/ProductControl.rb:1306:in `block in RunFrom'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/y2logger.rb:98:in `group'
> usr/share/YaST2/modules/ProductControl.rb:1276:in `RunFrom'
> usr/share/YaST2/lib/add-on/clients/inst_add-on.rb:104:in `main'
> usr/share/YaST2/clients/inst_add-on.rb:3:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/modules/ProductControl.rb:1306:in `block in RunFrom'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/y2logger.rb:98:in `group'
> usr/share/YaST2/modules/ProductControl.rb:1276:in `RunFrom'
> usr/share/YaST2/lib/y2packager/clients/inst_product_workflow.rb:57:in `merge_and_run_workflow'
> usr/share/YaST2/lib/y2packager/clients/inst_product_workflow.rb:44:in `main'
> usr/share/YaST2/clients/inst_product_workflow.rb:3:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/modules/ProductControl.rb:1306:in `block in RunFrom'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/y2logger.rb:98:in `group'
> usr/share/YaST2/modules/ProductControl.rb:1276:in `RunFrom'
> usr/share/YaST2/modules/ProductControl.rb:1501:in `Run'
> usr/share/YaST2/lib/installation/clients/inst_worker_initial.rb:99:in `main'
> usr/share/YaST2/clients/inst_worker_initial.rb:2:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
> usr/share/YaST2/lib/installation/clients/installation.rb:92:in `block in main'
> usr/share/YaST2/lib/ui/wizards/layout.rb:186:in `open_wizard'
> usr/share/YaST2/lib/installation/clients/installation.rb:60:in `main'
> usr/share/YaST2/clients/installation.rb:2:in `<top (required)>'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `eval'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:345:in `run_client'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:206:in `call_builtin_wrapper'
> usr/lib64/ruby/vendor_ruby/2.5.0/yast/wfm.rb:195:in `CallFunction'
Comment 10 Stefan Hundhammer 2023-12-12 10:55:13 UTC
I downloaded and booted that ISO with 'ssh' and checked that file:

0:install:/usr/share/YaST2/clients # cat inst_cc_mode.rb 

#
# Copyright header omitted
#

require "y2common_criteria/dialogs/installation"

Y2CommonCriteria::Dialogs::Installation.new.run


0:install:~ # find -L /usr/share/YaST2 -type d -name "dialogs"

/usr/share/YaST2/lib/autoinstall/dialogs
/usr/share/YaST2/lib/installation/dialogs
/usr/share/YaST2/lib/registration/dialogs
/usr/share/YaST2/lib/services-manager/dialogs
/usr/share/YaST2/lib/slp/dialogs
/usr/share/YaST2/lib/users/dialogs
/usr/share/YaST2/lib/y2configuration_management/dialogs
/usr/share/YaST2/lib/y2firewall/dialogs
/usr/share/YaST2/lib/y2keyboard/dialogs
/usr/share/YaST2/lib/y2network/dialogs
/usr/share/YaST2/lib/y2packager/dialogs
/usr/share/YaST2/lib/y2partitioner/dialogs
/usr/share/YaST2/lib/y2remote/dialogs
/usr/share/YaST2/lib/y2storage/dialogs

0:install:~ # find -L /usr/share/YaST2 -type d -name "dialogs" | grep common

(nothing)



'clients/inst_cc_mode.rb' comes the here:

https://github.com/yast/system-role-common-criteria/blob/master/src/clients/inst_cc_mode.rb

and this is the file that it wants to include with 'require':

https://github.com/yast/system-role-common-criteria/blob/master/src/lib/y2common_criteria/dialogs/installation.rb

but the whole y2common_criteria subtree is missing on the image.
Comment 11 Marcus Meissner 2023-12-12 10:59:36 UTC
installation-images has:

?system-role-common-criteria: nodeps
  /usr/share/YaST2/lib/y2system_role_handlers/cc_role_finish.rb
  /usr/share/YaST2/clients/inst_cc_mode.rb

So I think this needs to be adjusted.

(Wierd it works on 15-SP4, but perhaps its because its loads from the update repo und unpacks all of it.)
Comment 12 Stefan Hundhammer 2023-12-12 12:45:18 UTC
Downloading the package from here:

https://download.suse.de/ibs/SUSE:/SLE-15-SP6:/GA/standard/x86_64/system-role-common-criteria-15.6.1-150600.1.1.x86_64.rpm


% rpm -qpl system-role-common-criteria-15.6.1-150600.1.1.x86_64.rpm

/usr/share/YaST2
/usr/share/YaST2/clients
/usr/share/YaST2/clients/inst_cc_mode.rb
/usr/share/YaST2/lib
/usr/share/YaST2/lib/y2common_criteria
/usr/share/YaST2/lib/y2common_criteria.rb
/usr/share/YaST2/lib/y2common_criteria/dialogs
/usr/share/YaST2/lib/y2common_criteria/dialogs/installation.rb
/usr/share/YaST2/lib/y2common_criteria/encryption.rb
/usr/share/YaST2/lib/y2system_role_handlers
/usr/share/YaST2/lib/y2system_role_handlers/cc_role_finish.rb
/usr/share/doc/packages/system-role-common-criteria
/usr/share/doc/packages/system-role-common-criteria/LICENSE
/usr/share/system-roles
/usr/share/system-roles/common-criteria.xml


Using 'unrpm', then 'tree' on it:

> usr
> └── share
>     ├── doc
>     │   └── packages
>     │       └── system-role-common-criteria
>     │           └── LICENSE
>     ├── system-roles
>     │   └── common-criteria.xml
>     └── YaST2
>         ├── clients
>         │   └── inst_cc_mode.rb
>         └── lib
>             ├── y2common_criteria
>             │   ├── dialogs
>             │   │   └── installation.rb
>             │   └── encryption.rb
>             ├── y2common_criteria.rb
>             └── y2system_role_handlers
>                 └── cc_role_finish.rb


The RPM looks good.
Comment 13 Stefan Hundhammer 2023-12-12 12:59:56 UTC
Right; this:

https://github.com/openSUSE/installation-images/blob/master/data/root/root.file_list#L288-L290

?system-role-common-criteria: nodeps
  /usr/share/YaST2/lib/y2system_role_handlers/cc_role_finish.rb
  /usr/share/YaST2/clients/inst_cc_mode.rb

...should rather be the whole package content except maybe /usr/share/doc, i.e.

  /usr/share/system-roles
  /usr/share/YaST2
Comment 16 Steffen Winterfeldt 2023-12-14 11:12:31 UTC
For SLE15-SP6:

https://github.com/openSUSE/installation-images/pull/676
Comment 17 Steffen Winterfeldt 2023-12-14 11:16:07 UTC
For TW:

https://github.com/openSUSE/installation-images/pull/677
Comment 21 Stefan Hundhammer 2024-01-11 08:27:33 UTC
See also bug #1218652
Comment 22 Maintenance Automation 2024-01-18 16:36:33 UTC
SUSE-RU-2024:0144-1: An update that has two fixes can now be installed.

Category: recommended (moderate)
Bug References: 1217968, 1218652
Sources used:
openSUSE Leap 15.5 (src): installation-images-SLES-16.58.9-150500.3.6.1
Basesystem Module 15-SP5 (src): installation-images-SLES-16.58.9-150500.3.6.1

NOTE: This line indicates an update has been released for the listed product(s). At times this might be only a partial fix. If you have questions please reach out to maintenance coordination.