Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package yast2-update for openSUSE:Factory checked in at 2026-03-26 21:07:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-update (Old) and /work/SRC/openSUSE:Factory/.yast2-update.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-update" Thu Mar 26 21:07:11 2026 rev:154 rq:1342605 version:5.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-update/yast2-update.changes 2023-11-02 20:20:42.942170573 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-update.new.8177/yast2-update.changes 2026-03-27 06:53:58.261019622 +0100 @@ -1,0 +2,6 @@ +Tue Mar 10 09:00:28 UTC 2026 - Michal Filka <[email protected]> + +- jsc#PED-14507 + - Removed reference to update-desktop-files from spec file + - 5.0.2 +------------------------------------------------------------------- Old: ---- yast2-update-5.0.1.tar.bz2 New: ---- yast2-update-5.0.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-update.spec ++++++ --- /var/tmp/diff_new_pack.uCz0bu/_old 2026-03-27 06:53:58.769040595 +0100 +++ /var/tmp/diff_new_pack.uCz0bu/_new 2026-03-27 06:53:58.773040760 +0100 @@ -1,7 +1,7 @@ # # spec file for package yast2-update # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: yast2-update -Version: 5.0.1 +Version: 5.0.2 Release: 0 Summary: YaST2 - Update Group: System/YaST @@ -26,7 +26,6 @@ Source0: %{name}-%{version}.tar.bz2 -BuildRequires: update-desktop-files BuildRequires: yast2-devtools >= 4.2.2 BuildRequires: yast2-ruby-bindings >= 1.0.0 # Product#register_target ++++++ yast2-update-5.0.1.tar.bz2 -> yast2-update-5.0.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/.github/workflows/ci.yml new/yast2-update-5.0.2/.github/workflows/ci.yml --- old/yast2-update-5.0.1/.github/workflows/ci.yml 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/.github/workflows/ci.yml 2026-03-25 18:39:21.000000000 +0100 @@ -1,9 +1,8 @@ - # See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions name: CI -on: [push, pull_request] +on: [ push, pull_request ] jobs: Tests: @@ -12,33 +11,32 @@ strategy: fail-fast: false matrix: - distro: [ "tumbleweed", "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - # just for easier debugging... - - name: Inspect Installed Packages - run: rpm -qa | sort - - - name: Unit Tests - run: rake test:unit - # enable code coverage reporting - env: - COVERAGE: 1 - - # send the coverage report to coveralls.io - - name: Coveralls Report - # send it only from the TW build to avoid duplicate submits - if: ${{ matrix.distro == 'tumbleweed' }} - uses: coverallsapp/github-action@master - with: - github-token: ${{ secrets.GITHUB_TOKEN }} + # just for easier debugging... + - name: Inspect Installed Packages + run: rpm -qa | sort + + - name: Unit Tests + run: rake test:unit + # enable code coverage reporting + env: + COVERAGE: 1 + + # send the coverage report to coveralls.io + - name: Coveralls Report + # send it only from the TW build to avoid duplicate submits + if: ${{ matrix.distro == 'tumbleweed' }} + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} Rubocop: runs-on: ubuntu-latest @@ -46,37 +44,38 @@ strategy: fail-fast: false matrix: - distro: [ "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: Rubocop - run: rake check:rubocop + - name: Rubocop + run: rake check:rubocop Package: + # skip in master, but run in forks + if: github.ref_name != 'master' || github.repository_owner != 'yast' + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - distro: [ "tumbleweed", "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: Package Build - run: yast-ci-ruby -o package + - name: Package Build + run: yast-ci-ruby -o package Yardoc: runs-on: ubuntu-latest @@ -84,18 +83,17 @@ strategy: fail-fast: false matrix: - distro: [ "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: Yardoc - run: rake check:doc + - name: Yardoc + run: rake check:doc # downloading the Docker image takes some time so bundling several fast # checks into one job avoids that overhead @@ -105,15 +103,14 @@ strategy: fail-fast: false matrix: - distro: [ "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: POT Check - run: rake check:pot + - name: POT Check + run: rake check:pot diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/.github/workflows/submit.yml new/yast2-update-5.0.2/.github/workflows/submit.yml --- old/yast2-update-5.0.1/.github/workflows/submit.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-update-5.0.2/.github/workflows/submit.yml 2026-03-25 18:39:21.000000000 +0100 @@ -0,0 +1,29 @@ +# See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions + +name: OBS + +on: + # only when committing to master + push: + branches: master + + # allow running manually from GitHub Web + workflow_dispatch: + +jobs: + submit: + # do not run in forks + if: github.repository_owner == 'yast' + + runs-on: ubuntu-latest + + # the default timeout is 6 hours, do not wait for that long if osc gets stucked + timeout-minutes: 30 + + steps: + - name: Submit the package + # see https://github.com/yast/actions/blob/master/submit/action.yml + uses: yast/actions/submit@master + with: + obs_user: ${{ secrets.OBS_USER }} + obs_password: ${{ secrets.OBS_PASSWORD }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/.rubocop.yml new/yast2-update-5.0.2/.rubocop.yml --- old/yast2-update-5.0.1/.rubocop.yml 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/.rubocop.yml 2026-03-25 18:39:21.000000000 +0100 @@ -1,6 +1,6 @@ # use the shared Yast defaults inherit_from: - - /usr/share/YaST2/data/devtools/data/rubocop-0.71.0_yast_style.yml + - /usr/share/YaST2/data/devtools/data/rubocop-1.24.1_yast_style.yml # this needs more testing if we can have frozen string literals Style/FrozenStringLiteralComment: @@ -18,7 +18,7 @@ # Offense count: 25 Metrics/AbcSize: - Max: 190 + Max: 200 # Offense count: 23 # Configuration parameters: CountComments, ExcludedMethods. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/README.md new/yast2-update-5.0.2/README.md --- old/yast2-update-5.0.1/README.md 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/README.md 2026-03-25 18:39:21.000000000 +0100 @@ -4,6 +4,5 @@ Status](https://coveralls.io/repos/github/yast/yast-update/badge.svg?branch=master)](https://coveralls.io/github/yast/yast-update?branch=master) []( https://github.com/yast/yast-update/actions?query=branch%3Amaster) -[]( -https://ci.opensuse.org/view/Yast/job/yast-yast-update-master/) +[](https://github.com/yast/yast-update/actions/workflows/submit.yml) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/Rakefile new/yast2-update-5.0.2/Rakefile --- old/yast2-update-5.0.1/Rakefile 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/Rakefile 2026-03-25 18:39:21.000000000 +0100 @@ -11,5 +11,5 @@ # additionally validate the control XML files as a part of the unit tests task "test:unit" do sh "xmllint --noout --relaxng #{Packaging::Configuration::YAST_DIR.shellescape}"\ - "/control/control.rng control/*.xml" + "/control/control.rng control/*.xml" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/package/yast2-update.changes new/yast2-update-5.0.2/package/yast2-update.changes --- old/yast2-update-5.0.1/package/yast2-update.changes 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/package/yast2-update.changes 2026-03-25 18:39:21.000000000 +0100 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Tue Mar 10 09:00:28 UTC 2026 - Michal Filka <[email protected]> + +- jsc#PED-14507 + - Removed reference to update-desktop-files from spec file + - 5.0.2 +------------------------------------------------------------------- Tue Oct 31 12:29:07 UTC 2023 - Ladislav Slezák <[email protected]> - Drop the previously used repositories when going back to the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/package/yast2-update.spec new/yast2-update-5.0.2/package/yast2-update.spec --- old/yast2-update-5.0.1/package/yast2-update.spec 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/package/yast2-update.spec 2026-03-25 18:39:21.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-update -Version: 5.0.1 +Version: 5.0.2 Release: 0 Summary: YaST2 - Update Group: System/YaST @@ -26,7 +26,6 @@ Source0: %{name}-%{version}.tar.bz2 -BuildRequires: update-desktop-files BuildRequires: yast2-devtools >= 4.2.2 BuildRequires: yast2-ruby-bindings >= 1.0.0 # Product#register_target diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/backup_proposal.rb new/yast2-update-5.0.2/src/clients/backup_proposal.rb --- old/yast2-update-5.0.1/src/clients/backup_proposal.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/clients/backup_proposal.rb 2026-03-25 18:39:21.000000000 +0100 @@ -38,7 +38,8 @@ @param = Convert.to_map(WFM.Args(1)) @ret = {} - if @func == "MakeProposal" + case @func + when "MakeProposal" @force_reset = Ops.get_boolean(@param, "force_reset", false) @language_changed = Ops.get_boolean(@param, "language_changed", false) @@ -81,7 +82,7 @@ end @ret = { "preformatted_proposal" => HTML.List(@tmp) } - elsif @func == "AskUser" + when "AskUser" @has_next = Ops.get_boolean(@param, "has_next", false) # call some function that displays a user dialog @@ -96,7 +97,7 @@ # Fill return map @ret = { "workflow_sequence" => @result } - elsif @func == "Description" + when "Description" # Fill return map. # # Static values do just nicely here, no need to call a function. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/inst_backup.rb new/yast2-update-5.0.2/src/clients/inst_backup.rb --- old/yast2-update-5.0.1/src/clients/inst_backup.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/clients/inst_backup.rb 2026-03-25 18:39:21.000000000 +0100 @@ -87,7 +87,7 @@ # TRANSLATORS: help text for backup dialog during update 1/7 @help_text = _( "<p>To avoid any loss of information during update,\n" \ - "create a <b>backup</b> prior to updating.</p>\n" + "create a <b>backup</b> prior to updating.</p>\n" ) # TRANSLATORS: help text for backup dialog during update 2/7 @@ -95,7 +95,7 @@ @help_text, _( "<p><b>Warning:</b> This will not be a complete\n" \ - "backup. Only modified files will be saved.</p>\n" + "backup. Only modified files will be saved.</p>\n" ) ) @@ -110,7 +110,7 @@ @help_text, _( "<p><b>Create a Backup of Modified Files:</b>\n" \ - "Stores only those modified files that will be replaced during update.</p>\n" + "Stores only those modified files that will be replaced during update.</p>\n" ) ) @@ -119,8 +119,8 @@ @help_text, _( "<p><b>Create a Complete Backup of\n" \ - "/etc/sysconfig:</b> This covers all configuration files that are part of the\n" \ - "sysconfig mechanism, even those that will not be replaced.</p>\n" + "/etc/sysconfig:</b> This covers all configuration files that are part of the\n" \ + "sysconfig mechanism, even those that will not be replaced.</p>\n" ) ) @@ -129,9 +129,9 @@ @help_text, _( "<p><b>Remove Old Backups from the Backup\n" \ - "Directory:</b> If your current system already is the result of an earlier\n" \ - "update, there may be old configuration file backups. Select this option to\n" \ - "remove them.</p>\n" + "Directory:</b> If your current system already is the result of an earlier\n" \ + "update, there may be old configuration file backups. Select this option to\n" \ + "remove them.</p>\n" ) ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/packages_proposal.rb new/yast2-update-5.0.2/src/clients/packages_proposal.rb --- old/yast2-update-5.0.1/src/clients/packages_proposal.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/clients/packages_proposal.rb 2026-03-25 18:39:21.000000000 +0100 @@ -49,7 +49,8 @@ @param = Convert.to_map(WFM.Args(1)) @ret = {} - if @func == "MakeProposal" + case @func + when "MakeProposal" @force_reset = Ops.get_boolean(@param, "force_reset", false) @language_changed = Ops.get_boolean(@param, "language_changed", false) @@ -188,7 +189,7 @@ ret_ref = arg_ref(@ret) Packages.CheckOldAddOns(ret_ref) @ret = ret_ref.value - elsif @func == "AskUser" + when "AskUser" @has_next = Ops.get_boolean(@param, "has_next", false) # call some function that displays a user dialog @@ -202,7 +203,7 @@ # Fill return map @ret = { "workflow_sequence" => @result } - elsif @func == "Description" + when "Description" # Fill return map. # # Static values do just nicely here, no need to call a function. @@ -288,7 +289,7 @@ if packages.size > ORPHANED_MAX_SIZE # TRANSLATORS: %s is replaced by a number of remaining items - summary << _("... and %s more") % (packages.size - ORPHANED_MAX_SIZE) + summary << (_("... and %s more") % (packages.size - ORPHANED_MAX_SIZE)) end summary diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/rootpart_proposal.rb new/yast2-update-5.0.2/src/clients/rootpart_proposal.rb --- old/yast2-update-5.0.1/src/clients/rootpart_proposal.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/clients/rootpart_proposal.rb 2026-03-25 18:39:21.000000000 +0100 @@ -43,7 +43,8 @@ @param = Convert.to_map(WFM.Args(1)) @ret = {} - if @func == "MakeProposal" + case @func + when "MakeProposal" @force_reset = Ops.get_boolean(@param, "force_reset", false) @language_changed = Ops.get_boolean(@param, "language_changed", false) @@ -113,7 +114,7 @@ @ret = Builtins.add(@ret, "raw_proposal", []) end end - elsif @func == "AskUser" + when "AskUser" @has_next = Ops.get_boolean(@param, "has_next", false) # call some function that displays a user dialog @@ -138,7 +139,7 @@ "workflow_sequence" => @result, "rootpart_changed" => RootPart.selectedRootPartition != @tmp } - elsif @func == "Description" + when "Description" # Fill return map. @ret = if Mode.normal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/update_proposal.rb new/yast2-update-5.0.2/src/clients/update_proposal.rb --- old/yast2-update-5.0.1/src/clients/update_proposal.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/clients/update_proposal.rb 2026-03-25 18:39:21.000000000 +0100 @@ -59,7 +59,8 @@ @rpm_db_existency_checked_already = false - if @func == "MakeProposal" + case @func + when "MakeProposal" @force_reset = Ops.get_boolean(@param, "force_reset", false) @language_changed = Ops.get_boolean(@param, "language_changed", false) @@ -147,9 +148,9 @@ # %2 is the version being installed _( "Updating system to another version (%1 -> %2) is not supported on " \ - "the running system.<br>\n" \ - "Boot from the installation media and use a normal upgrade\n" \ - "or disable software repositories of products with different versions.\n" + "the running system.<br>\n" \ + "Boot from the installation media and use a normal upgrade\n" \ + "or disable software repositories of products with different versions.\n" ), @update_from, @update_to @@ -196,9 +197,9 @@ # TRANSLATORS: proposal dialog help @update_options_help = _( "<p><b><big>Update Options</big></b> Select how your system will be updated.\n" \ - "Choose if only installed packages should be updated or new ones should be\n" \ - "installed as well (default). Decide whether unmaintained packages should be\n" \ - "deleted.</p>\n" + "Choose if only installed packages should be updated or new ones should be\n" \ + "installed as well (default). Decide whether unmaintained packages should be\n" \ + "deleted.</p>\n" ) @ret = { @@ -218,12 +219,12 @@ end # save the solver test case with details for later debugging Pkg.CreateSolverTestCase("/var/log/YaST2/solver-upgrade-proposal") if @ret["warning"] - elsif @func == "AskUser" + when "AskUser" # With proper control file, this should never be reached # TRANSLATORS: error message Report.Error(_("The update summary is read only and cannot be changed.")) @ret = { "workflow_sequence" => :back } - elsif @func == "Description" + when "Description" # Fill return map. # # Static values do just nicely here, no need to call a function. @@ -363,11 +364,12 @@ ui_r = UI.UserInput - if ui_r == :cancel || ui_r == :abort + case ui_r + when :cancel, :abort ret = false file_found_or_error_skipped = true Builtins.y2milestone("Check failed, returning error.") - elsif ui_r == :retry + when :retry file_found_or_error_skipped = false Builtins.y2milestone("Trying again...") # } else if (ui_r == `ignore) { @@ -474,9 +476,9 @@ Update.solve_errors = Pkg.PkgSolve(false) ? 0 : Pkg.PkgSolveErrors log.info "Update compatibility: " \ - "Update.ProductsCompatible: #{Update.ProductsCompatible}, " \ - "Update.products_incompatible: #{Update.products_incompatible}, " \ - "update_not_possible: #{update_not_possible}" + "Update.ProductsCompatible: #{Update.ProductsCompatible}, " \ + "Update.products_incompatible: #{Update.products_incompatible}, " \ + "update_not_possible: #{update_not_possible}" # check product compatibility if !(Update.ProductsCompatible || Update.products_incompatible) || update_not_possible @@ -484,9 +486,9 @@ # TRANSLATORS: continue-cancel popup _( "The installed product is not compatible with the product\n" \ - "on the installation media. If you try to update using the\n" \ - "current installation media, the system may not start or\n" \ - "some applications may not run properly." + "on the installation media. If you try to update using the\n" \ + "current installation media, the system may not start or\n" \ + "some applications may not run properly." ) ) Update.IgnoreProductCompatibility diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/include/update/rootpart.rb new/yast2-update-5.0.2/src/include/update/rootpart.rb --- old/yast2-update-5.0.1/src/include/update/rootpart.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/include/update/rootpart.rb 2026-03-25 18:39:21.000000000 +0100 @@ -107,7 +107,7 @@ # see bugzilla #288201 # architecture needs to be valid when updating, not booting arch_is_valid = flavor == :boot || Ops.get_boolean(i, :arch_valid, false) - if withall || Ops.get_boolean(i, :valid, false) && arch_is_valid + if withall || (Ops.get_boolean(i, :valid, false) && arch_is_valid) # `ext2, `jfs, ... part_fs = Ops.get_symbol(i, :fs) part_fs_name = Builtins.tostring(part_fs) @@ -211,8 +211,8 @@ # TRANSLATORS: help text for root partition dialog (for boot) help_text = _( "<p>\n" \ - "Select the partition or system to boot.\n" \ - "</p>\n" + "Select the partition or system to boot.\n" \ + "</p>\n" ) else # TRANSLATORS: label for selection of root partition (for update) @@ -221,8 +221,8 @@ # TRANSLATORS: help text for root partition dialog (for update) help_text = _( "<p>\n" \ - "Select the partition or system to update.\n" \ - "</p>\n" + "Select the partition or system to update.\n" \ + "</p>\n" ) if flavor == :update_dialog || flavor == :update_dialog_proposal @@ -236,9 +236,9 @@ help_text, _( "<p>\n" \ - "<b>Show All Partitions</b> expands the list to a\n" \ - "general overview of your system's partitions.\n" \ - "</p>\n" + "<b>Show All Partitions</b> expands the list to a\n" \ + "general overview of your system's partitions.\n" \ + "</p>\n" ) ) @@ -284,10 +284,11 @@ # finishing the target before selecting a new system to load Pkg.TargetFinish if flavor == :update_dialog - if flavor == :update_dialog + case flavor + when :update_dialog Wizard.SetContents(title, contents, help_text, true, true) Wizard.EnableAbortButton if Mode.autoupgrade - elsif flavor == :update_dialog_proposal + when :update_dialog_proposal Wizard.CreateDialog Wizard.SetContentsButtons( title, @@ -374,15 +375,15 @@ cont = false # TRANSLATORS: error message Report.Error(_("ReiserFS is not supported anymore.\n" \ - "Please migrate your data to another " \ - "filesystem before performing the upgrade.\n\n")) + "Please migrate your data to another " \ + "filesystem before performing the upgrade.\n\n")) elsif (freshman[:name] || "unknown") == "unknown" cont = false Popup.Error( # TRANSLATORS: error popup _( "No installed system that can be upgraded with this product was found\n" \ - "on the selected partition." + "on the selected partition." ) ) elsif !DoArchitecturesMatch( @@ -393,7 +394,7 @@ # TRANSLATORS: continue-cancel popup _( "The architecture of the system installed in the selected partition\n " \ - "is different from the one of this product.\n" + "is different from the one of this product.\n" ) ) end @@ -424,7 +425,7 @@ # TRANSLATORS: pop-up question _( "A possibly incomplete installation has been detected on the selected " \ - "partition.\nAre sure you want to use it anyway?" + "partition.\nAre sure you want to use it anyway?" ), # TRANSLATORS: button label _("&Yes, Use It"), @@ -475,9 +476,9 @@ # TRANSLATORS: error message _( "Initializing the system for upgrade has failed for unknown reason.\n" \ - "It is highly recommended not to continue the upgrade process.\n" \ - "\n" \ - "Are you sure you want to continue?" + "It is highly recommended not to continue the upgrade process.\n" \ + "\n" \ + "Are you sure you want to continue?" ), # TRANSLATORS: button label _("&Yes, Continue"), @@ -493,30 +494,27 @@ end # not aborted - if ret != :back - # Target load failed, #466803 - if Pkg.TargetLoad != true - Builtins.y2error("Pkg::TargetLoad failed") - if Popup.AnyQuestion( - Label.ErrorMsg, - # TRANSLATORS: error message - _( - "Initializing the system for upgrade has failed for unknown reason.\n" \ - "It is highly recommended not to continue the upgrade process.\n" \ - "\n" \ - "Are you sure you want to continue?" - ), - # TRANSLATORS: button label - _("&Yes, Continue"), - Label.CancelButton, - :focus_no + if ret != :back && (Pkg.TargetLoad != true) + Builtins.y2error("Pkg::TargetLoad failed") + if Popup.AnyQuestion( + Label.ErrorMsg, + # TRANSLATORS: error message + _( + "Initializing the system for upgrade has failed for unknown reason.\n" \ + "It is highly recommended not to continue the upgrade process.\n" \ + "\n" \ + "Are you sure you want to continue?" + ), + # TRANSLATORS: button label + _("&Yes, Continue"), + Label.CancelButton, + :focus_no + ) + ret = :back + else + Builtins.y2warning( + "User decided to continue despite the error above (Pkg::TargetLoad() failed)" ) - ret = :back - else - Builtins.y2warning( - "User decided to continue despite the error above (Pkg::TargetLoad() failed)" - ) - end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/lib/update/clients/inst_update_partition_auto.rb new/yast2-update-5.0.2/src/lib/update/clients/inst_update_partition_auto.rb --- old/yast2-update-5.0.1/src/lib/update/clients/inst_update_partition_auto.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/lib/update/clients/inst_update_partition_auto.rb 2026-03-25 18:39:21.000000000 +0100 @@ -31,6 +31,8 @@ DATA_PATH = "/var/lib/YaST2/update_partition_auto.yaml".freeze def initialize + super + Yast.import "Pkg" Yast.import "UI" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/modules/RootPart.rb new/yast2-update-5.0.2/src/modules/RootPart.rb --- old/yast2-update-5.0.1/src/modules/RootPart.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/modules/RootPart.rb 2026-03-25 18:39:21.000000000 +0100 @@ -186,7 +186,8 @@ Builtins.y2milestone("Unmounting %1", info) type = Ops.get_string(info, :type, "") if type != "" - if type == "mount" + case type + when "mount" file = Ops.add( Installation.destdir, Ops.get_string(info, :mntpt, "") @@ -197,16 +198,16 @@ Builtins.sformat( _( "Cannot unmount partition %1.\n" \ - "\n" \ - "It is currently in use. If the partition stays mounted,\n" \ - "the data may be lost. Unmount the partition manually\n" \ - "or restart your computer.\n" + "\n" \ + "It is currently in use. If the partition stays mounted,\n" \ + "the data may be lost. Unmount the partition manually\n" \ + "or restart your computer.\n" ), file ) ) end - elsif type == "swap" + when "swap" device = Ops.get_string(info, :device, "") # FIXME? is it safe? if SCR.Execute( @@ -215,7 +216,7 @@ ) != 0 Builtins.y2error("Cannot deactivate swap %1", device) end - elsif type == "crypt" + when "crypt" dmname = Ops.get_string(info, :device, "") dmname = Ops.add( "cr_", @@ -333,10 +334,11 @@ loop do userinput = UI.UserInput - if userinput == :yes + case userinput + when :yes ret = true break - elsif userinput == :details + when :details curr_status = Convert.to_boolean(UI.QueryWidget(Id(:details), :Value)) if curr_status == false @@ -395,7 +397,15 @@ UI.CloseDialog # failed - if Ops.get(cmd, "exit") != 0 + if Ops.get(cmd, "exit") == 0 + # add device into the list of already checked partitions (with exit status 0); + @already_checked_jfs_partitions = Builtins.add( + @already_checked_jfs_partitions, + device + ) + Builtins.y2milestone("Result: %1", cmd) + return true + else Builtins.y2error("Result: %1", cmd) error_message.value = Builtins.tostring(Ops.get(cmd, "stderr")) @@ -418,8 +428,8 @@ # %1 is a device name such as /dev/hda5 _( "The file system check of device %1 has failed.\n" \ - "\n" \ - "Do you want to continue mounting the device?\n" + "\n" \ + "Do you want to continue mounting the device?\n" ), device ), @@ -429,14 +439,6 @@ details ) # succeeded - else - # add device into the list of already checked partitions (with exit status 0); - @already_checked_jfs_partitions = Builtins.add( - @already_checked_jfs_partitions, - device - ) - Builtins.y2milestone("Result: %1", cmd) - return true end end @@ -595,7 +597,7 @@ fstab_file = Ops.add(Installation.destdir, "/etc/fstab") if FileUtils.Exists(fstab_file) - # Note: this is a copy from etc_fstab.scr file (yast2.rpm), + # NOTE: this is a copy from etc_fstab.scr file (yast2.rpm), # keep the files in sync! SCR.RegisterAgent( path(".target.etc.fstab"), @@ -705,15 +707,15 @@ SCR.Execute(path(".target.bash_output"), cmd) ) - if Ops.get_integer(bootsizeout, "exit", -1) != 0 - Builtins.y2error("Error: '%1' -> %2", cmd, bootsizeout) - else + if Ops.get_integer(bootsizeout, "exit", -1) == 0 scriptout = Builtins.splitstring( Ops.get_string(bootsizeout, "stdout", ""), " " ) Builtins.y2milestone("Scriptout: %1", scriptout) bootsize = Builtins.tointeger(Ops.get(scriptout, 1, "0")) + else + Builtins.y2error("Error: '%1' -> %2", cmd, bootsizeout) end if bootsize.nil? || bootsize == 0 @@ -745,11 +747,11 @@ Builtins.sformat( _( "Your /boot partition is too small (%1 MB).\n" \ - "We recommend a size of no less than %2 MB or else the new Kernel may not fit.\n" \ - "It is safer to either enlarge the partition\n" \ - "or not use a /boot partition at all.\n" \ - "\n" \ - "Do you want to continue updating the current system?\n" + "We recommend a size of no less than %2 MB or else the new Kernel may not fit.\n" \ + "It is safer to either enlarge the partition\n" \ + "or not use a /boot partition at all.\n" \ + "\n" \ + "Do you want to continue updating the current system?\n" ), current_bs, suggested_bs @@ -760,12 +762,12 @@ Builtins.y2warning( "User decided to continue despite small a /boot partition" ) - return true + true else Builtins.y2milestone( "User decided not to continue with small /boot partition" ) - return false + false end end @@ -858,9 +860,7 @@ end end - if fspath == "/boot" || fspath == "/boot/" - success = false unless CheckBootSize(spec) - end + success = false if (fspath == "/boot" || fspath == "/boot/") && !CheckBootSize(spec) elsif vfstype == "swap" && fspath == "swap" log.info("mounting #{spec} to #{fspath}") @@ -873,10 +873,10 @@ ret_from_shell = Convert.to_integer( SCR.Execute(path(".target.bash"), command) ) - if ret_from_shell != 0 - log.error("swapon failed: #{command}") - else + if ret_from_shell == 0 AddMountedPartition(type: "swap", device: spec) + else + log.error("swapon failed: #{command}") end end end @@ -909,13 +909,13 @@ # %2 is output of the 'mount' command _( "The partition %1 could not be mounted.\n" \ - "\n" \ - "%2\n" \ - "\n" \ - "If you are sure that the partition is not necessary for the\n" \ - "update (not a system partition), click Continue.\n" \ - "To check or fix the mount options, click Specify Mount Options.\n" \ - "To abort the update, click Cancel.\n" + "\n" \ + "%2\n" \ + "\n" \ + "If you are sure that the partition is not necessary for the\n" \ + "update (not a system partition), click Continue.\n" \ + "To check or fix the mount options, click Specify Mount Options.\n" \ + "To abort the update, click Cancel.\n" ), spec, error @@ -1012,8 +1012,8 @@ message = Builtins.sformat( _( "Partitions could not be mounted.\n" \ - "\n" \ - "Check the log file %1." + "\n" \ + "Check the log file %1." ), Ops.add(Directory.logdir, "/y2log") ) @@ -1063,9 +1063,9 @@ # TRANSLATORS: warning popup _( "Some partitions in the system on %1 are mounted by kernel-device name. This is\n" \ - "not reliable for the update since kernel-device names are unfortunately not\n" \ - "persistent. It is strongly recommended to start the old system and change the\n" \ - "mount-by method to any other method for all partitions." + "not reliable for the update since kernel-device names are unfortunately not\n" \ + "persistent. It is strongly recommended to start the old system and change the\n" \ + "mount-by method to any other method for all partitions." ), root_device_current ) @@ -1081,12 +1081,12 @@ # TRANSLATORS: warning popup _( "Some home directories in the system on %1 are encrypted. This release does not\n" \ - "support cryptconfig any longer and those home directories " \ - "will not be accessible\n" \ - "after upgrade. In order to access these home directories, " \ - "they need to be decrypted\n" \ - "before performing upgrade.\n" \ - "You can consider encrypting whole volume via LUKS." + "support cryptconfig any longer and those home directories " \ + "will not be accessible\n" \ + "after upgrade. In order to access these home directories, " \ + "they need to be decrypted\n" \ + "before performing upgrade.\n" \ + "You can consider encrypting whole volume via LUKS." ), root_device_current ) @@ -1101,29 +1101,13 @@ else tmp = "" - if !( - tmp_ref = arg_ref(tmp) - check_root_device_result = check_root_device( - root_device_current, - fstab, - tmp_ref - ) - tmp = tmp_ref.value - check_root_device_result - ) - Builtins.y2error("fstab has wrong root device!") - - # TRANSLATORS: Error message, where %{root} and %{tmp} are replaced by - # device names (e.g., /dev/sda1 and /dev/sda2). - message = format( - _("The root partition in /etc/fstab has an invalid root device.\n" \ - "It is currently mounted as %{root} but listed as %{tmp}."), - root: root_device_current, - tmp: tmp + if (tmp_ref = arg_ref(tmp)) + check_root_device( + root_device_current, + fstab, + tmp_ref ) - success = false - else Builtins.y2milestone("fstab %1", fstab) legacy_filesystems = @@ -1152,6 +1136,19 @@ ) success = false end + else + Builtins.y2error("fstab has wrong root device!") + + # TRANSLATORS: Error message, where %{root} and %{tmp} are replaced by + # device names (e.g., /dev/sda1 and /dev/sda2). + message = format( + _("The root partition in /etc/fstab has an invalid root device.\n" \ + "It is currently mounted as %{root} but listed as %{tmp}."), + root: root_device_current, + tmp: tmp + ) + + success = false end end else @@ -1170,19 +1167,19 @@ ) Builtins.y2milestone("activated %1", @activated) - if !success - Popup.Message(message) - - # some mount failed, unmount all mounted fs - UnmountPartitions(false) - @did_try_mount_partitions = true - else + if success # enter the mount points of the newly mounted partitions update_staging! create_pre_snapshot Update.clean_backup create_backup inject_intsys_files + else + Popup.Message(message) + + # some mount failed, unmount all mounted fs + UnmountPartitions(false) + @did_try_mount_partitions = true end success @@ -1479,7 +1476,7 @@ filesystems.each_with_index do |fs, counter| if UI.WidgetExists(Id("search_progress")) - percent = 100 * (counter + 1 / filesystems.size) + percent = 100 * (counter + (1 / filesystems.size)) UI.ChangeWidget(Id("search_pb"), :Value, percent) end @@ -1578,7 +1575,7 @@ publish function: :SetSelectedToValid, type: "void ()" publish function: :UnmountPartitions, type: "void (boolean)" publish function: :AnyQuestionAnyButtonsDetails, - type: "boolean (string, string, string, string, string)" + type: "boolean (string, string, string, string, string)" publish function: :MountPartitions, type: "boolean (string)" publish function: :IncompleteInstallationDetected, type: "boolean (string)" publish function: :FindRootPartitions, type: "void ()" @@ -1717,8 +1714,8 @@ # log which devicegraph we operate on graph = "?" - graph = "probed" if devicegraph.object_id == probed.object_id - if devicegraph.object_id == staging.object_id + graph = "probed" if devicegraph.equal?(probed) + if devicegraph.equal?(staging) graph = "staging#" + Y2Storage::StorageManager.instance.staging_revision.to_s end log.info("fs_by_devicename(#{graph}, #{device_spec}) = #{"sid#" + fs.sid.to_s if fs}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/modules/SUSERelease.rb new/yast2-update-5.0.2/src/modules/SUSERelease.rb --- old/yast2-update-5.0.1/src/modules/SUSERelease.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/modules/SUSERelease.rb 2026-03-25 18:39:21.000000000 +0100 @@ -29,9 +29,6 @@ module Yast class SUSEReleaseFileMissingError < StandardError - def initialize(message) - super message - end end class SUSEReleaseClass < Module @@ -40,6 +37,8 @@ RELEASE_FILE_PATH = "/etc/SuSE-release".freeze def initialize + super + textdomain "update" Yast.import "FileUtils" @@ -80,7 +79,7 @@ # Removes all unneeded stuff such as architecture or product nickname def shorten(long_name) - long_name.gsub(/[ ]*\(.*/, "") + long_name.gsub(/ *\(.*/, "") end publish function: :ReleaseInformation, type: "string (string)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/src/modules/Update.rb new/yast2-update-5.0.2/src/modules/Update.rb --- old/yast2-update-5.0.1/src/modules/Update.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/src/modules/Update.rb 2026-03-25 18:39:21.000000000 +0100 @@ -947,7 +947,7 @@ command = "tar cv -C '#{root}'" # no shell escaping here, but we backup reasonable files and want to allow globs - command << " " + paths_without_prefix.join(" ") + command << (" " + paths_without_prefix.join(" ")) # use parallel gzip for faster compression (uses all available CPU cores) command << " | pigz - > '#{tarball_path}'" res = SCR.Execute(path(".target.bash_output"), command) @@ -997,7 +997,7 @@ if !FileUtils.Exists(windowmanager_sysconfig) log.warn "Sysconfig file #{windowmanager_sysconfig} does not exist, " \ - "desktop upgrade will not be handled" + "desktop upgrade will not be handled" return nil end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-update-5.0.1/test/update_test.rb new/yast2-update-5.0.2/test/update_test.rb --- old/yast2-update-5.0.1/test/update_test.rb 2023-10-31 13:43:56.000000000 +0100 +++ new/yast2-update-5.0.2/test/update_test.rb 2026-03-25 18:39:21.000000000 +0100 @@ -53,7 +53,7 @@ end it "returns product name from SUSE-release if os-release is missing and " \ - "SUSE-release exists in Installation.destdir" do + "SUSE-release exists in Installation.destdir" do allow(Yast::Installation).to receive(:destdir) .and_return(File.join(DATA_DIR, "update-test-2")) expect(Yast::Update.installed_product).to eq("SUSE Linux Enterprise Server 11") @@ -251,7 +251,7 @@ it "logs info and error" do expect(Yast::Update.log).to receive(:info) .with("Version expected: opensuse-leap-15.0. " \ - "Backup version: opensuse-tumbleweed-20180911") + "Backup version: opensuse-tumbleweed-20180911") .and_call_original expect(Yast::Update.log).to receive(:error).with(/not restored/).and_call_original @@ -284,7 +284,7 @@ end context "if there is no windowmanager sysconfig file present " \ - "on the system selected for upgrade" do + "on the system selected for upgrade" do it "returns true as there is nothing to do" do default_product_control_desktop allow(Yast::FileUtils).to receive(:Exists).with(/windowmanager/).and_return(false) @@ -425,10 +425,10 @@ allow(Yast::ProductFeatures).to receive(:GetFeature) .with("software", "upgrade") .and_return("product_upgrades" => [{ - "from" => "openSUSE", - "to" => "SLES", - "compatible_vendors" => ["openSUSE", "SLES LCC"] - }]) + "from" => "openSUSE", + "to" => "SLES", + "compatible_vendors" => ["openSUSE", "SLES LCC"] + }]) end it "does not set compatible vendors at all" do @@ -443,9 +443,9 @@ allow(Yast::ProductFeatures).to receive(:GetFeature) .with("software", "upgrade") .and_return("product_upgrades" => [{ - "from" => "openSUSE Leap", - "to" => "openSUSE Jump" - }]) + "from" => "openSUSE Leap", + "to" => "openSUSE Jump" + }]) end it "does not set compatible vendors at all" do @@ -459,10 +459,10 @@ allow(Yast::ProductFeatures).to receive(:GetFeature) .with("software", "upgrade") .and_return("product_upgrades" => [{ - "from" => "openSUSE Leap", - "to" => "openSUSE Jump", - "compatible_vendors" => ["openSUSE", "SLES LCC"] - }]) + "from" => "openSUSE Leap", + "to" => "openSUSE Jump", + "compatible_vendors" => ["openSUSE", "SLES LCC"] + }]) end it "set it in the solver" do
