Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rubygem-agama-yast for openSUSE:Factory checked in at 2026-06-16 13:47:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-agama-yast (Old) and /work/SRC/openSUSE:Factory/.rubygem-agama-yast.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-agama-yast" Tue Jun 16 13:47:17 2026 rev:46 rq:1359650 version:22 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-agama-yast/rubygem-agama-yast.changes 2026-06-09 14:20:09.168225977 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-agama-yast.new.1981/rubygem-agama-yast.changes 2026-06-16 13:49:07.386453153 +0200 @@ -1,0 +2,17 @@ +Mon Jun 15 15:45:27 UTC 2026 - Imobach Gonzalez Sosa <[email protected]> + +- Version 22 + +------------------------------------------------------------------- +Fri Jun 12 16:45:14 UTC 2026 - José Iván López González <[email protected]> + +- Extend storage model to allow configuring filesystem options + (gh#agama-project/agama#3620). + +------------------------------------------------------------------- +Tue Jun 9 13:21:28 UTC 2026 - José Iván López González <[email protected]> + +- Avoid running DASD formatting in a separate thread (related to + bsc#1266276). + +------------------------------------------------------------------- Old: ---- agama-yast-21.devel360.16caae772.gem New: ---- agama-yast-22.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ agama-yast.spec ++++++ --- /var/tmp/diff_new_pack.dVvvvk/_old 2026-06-16 13:49:09.730550947 +0200 +++ /var/tmp/diff_new_pack.dVvvvk/_new 2026-06-16 13:49:09.738551281 +0200 @@ -17,7 +17,7 @@ Name: agama-yast -Version: 21.devel360.16caae772 +Version: 22 Release: 0 %define mod_name agama-yast %define mod_full_name %{mod_name}-%{version} ++++++ rubygem-agama-yast.spec ++++++ --- /var/tmp/diff_new_pack.dVvvvk/_old 2026-06-16 13:49:10.154568637 +0200 +++ /var/tmp/diff_new_pack.dVvvvk/_new 2026-06-16 13:49:10.174569472 +0200 @@ -24,7 +24,7 @@ # Name: rubygem-agama-yast -Version: 21.devel360.16caae772 +Version: 22 Release: 0 %define mod_name agama-yast %define mod_full_name %{mod_name}-%{version} ++++++ agama-yast-21.devel360.16caae772.gem -> agama-yast-22.gem ++++++ Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/autoyast/report_patching.rb new/lib/agama/autoyast/report_patching.rb --- old/lib/agama/autoyast/report_patching.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/autoyast/report_patching.rb 1980-01-02 01:00:00.000000000 +0100 @@ -29,6 +29,7 @@ require "yast" require "yast2/execute" require "ui/dialog" +require "agama/question_with_password" require "agama/http/clients/questions" # :nodoc: @@ -94,10 +95,9 @@ end def run - question = Agama::Question.new( + question = Agama::QuestionWithPassword.new( qclass: "autoyast.password", text: @label, - field: :password, options: [:ok, :cancel], default_option: :cancel, data: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/dbus/storage/dasd.rb new/lib/agama/dbus/storage/dasd.rb --- old/lib/agama/dbus/storage/dasd.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/dbus/storage/dasd.rb 1980-01-02 01:00:00.000000000 +0100 @@ -37,13 +37,11 @@ private_constant :PATH # @param manager [Agama::Storage::DASD::Manager] - # @param task_runner [Agama::TaskRunner] # @param logger [Logger, nil] - def initialize(manager, task_runner, logger: nil) + def initialize(manager, logger: nil) textdomain "agama" super(PATH, logger: logger) @manager = manager - @task_runner = task_runner @serialized_system = serialize_system @serialized_config = serialize_config register_callbacks @@ -74,7 +72,6 @@ # Applies the given serialized DASD config. # # @todo Raise error if the config is not valid. - # @raise [Agama::TaskRunner::BusyError] If an async task is running, see {TaskRunner}. # # @param serialized_config [String] Serialized DASD config according to the JSON schema. def configure(serialized_config) @@ -86,19 +83,15 @@ # Do not configure if there is nothing to change. return if manager.configured?(config_json) - # The configuration could take long time (e.g., formatting devices). It is important to - # not block the service in order to make possible to attend other requests. - task_runner.async_run("Configure DASD") do - logger.info("Configuring DASD") + logger.info("Configuring DASD") - start_progress(1, _("Configuring DASD")) - manager.configure(config_json) + start_progress(1, _("Configuring DASD")) + manager.configure(config_json) - update_serialized_system - update_serialized_config + update_serialized_system + update_serialized_config - finish_progress - end + finish_progress end private @@ -106,9 +99,6 @@ # @return [Agama::Storage::DASD::Manager] attr_reader :manager - # @return [Agama::TaskRunner] - attr_reader :task_runner - def register_callbacks on_progress_change { self.ProgressChanged(serialize_progress) } on_progress_finish { self.ProgressFinished } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/dbus/storage/manager.rb new/lib/agama/dbus/storage/manager.rb --- old/lib/agama/dbus/storage/manager.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/dbus/storage/manager.rb 1980-01-02 01:00:00.000000000 +0100 @@ -50,13 +50,11 @@ private_constant :PATH # @param manager [Agama::Storage::Manager] - # @param task_runner [Agama::TaskRunner] # @param logger [Logger, nil] - def initialize(manager, task_runner, logger: nil) + def initialize(manager, logger: nil) textdomain "agama" super(PATH, logger: logger) @manager = manager - @task_runner = task_runner @serialized_system = serialize_system @serialized_config = serialize_config @serialized_config_model = serialize_config_model @@ -98,44 +96,36 @@ end # Implementation for the API method #Activate. - # - # @raise [Agama::TaskRunner::BusyError] If an async task is running, see {TaskRunner}. def activate - task_runner.run("Activate storage") do - logger.info("Activating storage") + logger.info("Activating storage") - start_progress(3, ACTIVATING_STEP) - manager.reset_activation if manager.activated? - manager.activate + start_progress(3, ACTIVATING_STEP) + manager.reset_activation if manager.activated? + manager.activate - next_progress_step(PROBING_STEP) - perform_probe(force: true) + next_progress_step(PROBING_STEP) + perform_probe(force: true) - next_progress_step(CONFIGURING_STEP) - configure_with_current + next_progress_step(CONFIGURING_STEP) + configure_with_current - finish_progress - end + finish_progress end # Implementation for the API method #Probe. - # - # @raise [Agama::TaskRunner::BusyError] If an async task is running, see {TaskRunner}. def probe - task_runner.run("Probe storage") do - logger.info("Probing storage") + logger.info("Probing storage") - start_progress(3, ACTIVATING_STEP) - manager.activate + start_progress(3, ACTIVATING_STEP) + manager.activate - next_progress_step(PROBING_STEP) - perform_probe(force: true) + next_progress_step(PROBING_STEP) + perform_probe(force: true) - next_progress_step(CONFIGURING_STEP) - configure_with_current + next_progress_step(CONFIGURING_STEP) + configure_with_current - finish_progress - end + finish_progress end # Configures storage. @@ -144,8 +134,6 @@ # { "storage": ... } or { "legacyAutoyastStorage": ... }. # # @raise If the config is not valid. - # @raise [Agama::TaskRunner::BusyError] If an async task is running and the system needs to - # be probed, see {TaskRunner}. # # @param serialized_product_config [String] Serialized product config. # @param serialized_config [String] Serialized storage config. @@ -156,11 +144,21 @@ # Do not configure if there is nothing to change. return if manager.configured?(product_config_json, config_json) - # It is safe to run the task if the system was already probed. - return configure_task(product_config_json, config_json) if manager.probed? + logger.info("Configuring storage") + + product_config = Agama::Config.new(product_config_json) + manager.update_product_config(product_config) if manager.product_config != product_config + + start_progress(3, ACTIVATING_STEP) + manager.activate unless manager.activated? + + next_progress_step(PROBING_STEP) + perform_probe - # Prevent to probe the system if there is an async task running (e.g., formatting DASD). - task_runner.run("Configure storage") { configure_task(product_config_json, config_json) } + next_progress_step(CONFIGURING_STEP) + calculate_proposal(config_json) + + finish_progress end # Converts the given serialized config model to a config. @@ -265,36 +263,11 @@ # @return [Agama::Storage::Manager] attr_reader :manager - # @return [Agama::TaskRunner] - attr_reader :task_runner - def register_progress_callbacks on_progress_change { self.ProgressChanged(serialize_progress) } on_progress_finish { self.ProgressFinished } end - # Performs the configuration task. - # - # @param product_config_json [Hash, nil] - # @param config_json [Hash, nil] - def configure_task(product_config_json, config_json) - logger.info("Configuring storage") - - product_config = Agama::Config.new(product_config_json) - manager.update_product_config(product_config) if manager.product_config != product_config - - start_progress(3, ACTIVATING_STEP) - manager.activate unless manager.activated? - - next_progress_step(PROBING_STEP) - perform_probe - - next_progress_step(CONFIGURING_STEP) - calculate_proposal(config_json) - - finish_progress - end - # Probes and updates the associated info. # # @param force [Boolean] Forces storage reprobe. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/dbus/storage_service.rb new/lib/agama/dbus/storage_service.rb --- old/lib/agama/dbus/storage_service.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/dbus/storage_service.rb 1980-01-02 01:00:00.000000000 +0100 @@ -25,7 +25,6 @@ require "agama/dbus/storage/manager" require "agama/storage/manager" require "agama/storage/iscsi/adapter" -require "agama/task_runner" require "yast" require "y2storage/inhibitors" @@ -113,7 +112,7 @@ # @return [Agama::DBus::Storage::Manager] def manager_object - @manager_object ||= Agama::DBus::Storage::Manager.new(manager, task_runner, logger: logger) + @manager_object ||= Agama::DBus::Storage::Manager.new(manager, logger: logger) end # @return [Agama::DBus::Storage::ISCSI] @@ -130,7 +129,7 @@ require "agama/storage/dasd/manager" require "agama/dbus/storage/dasd" manager = Agama::Storage::DASD::Manager.new(logger: logger) - @dasd_object = Agama::DBus::Storage::DASD.new(manager, task_runner, logger: logger) + @dasd_object = Agama::DBus::Storage::DASD.new(manager, logger: logger) end # @return [Agama::DBus::Storage::ZFCP, nil] @@ -149,11 +148,6 @@ def manager @manager ||= Agama::Storage::Manager.new(logger: logger) end - - # @return [Agama::TaskRunner] - def task_runner - @task_runner ||= Agama::TaskRunner.new - end end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/question_with_password.rb new/lib/agama/question_with_password.rb --- old/lib/agama/question_with_password.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/question_with_password.rb 1980-01-02 01:00:00.000000000 +0100 @@ -24,5 +24,9 @@ module Agama # This class represent a question that contain additional field to provide password class QuestionWithPassword < Question + def initialize(**args) + args[:field] = :password + super(**args) + end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb new/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb --- old/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 @@ -48,7 +48,7 @@ label: filesystem_json[:label], path: filesystem_json[:path], mount_options: filesystem_json[:mountOptions], - mkfs_options: filesystem_json[:mkfsOptions], + mkfs_args: convert_mkfs_args, mount_by: convert_mount_by, type: convert_type } @@ -69,6 +69,15 @@ FromJSONConversions::FilesystemType.new(filesystem_type_json).convert end + + # @return [String, nil] + def convert_mkfs_args + fallback_value = (filesystem_json[:mkfsOptions] || []).join(" ") + value = filesystem_json[:mkfsExtraArguments] || fallback_value + return nil if value.empty? + + value + end end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/storage/config_conversions/from_model_conversions/filesystem.rb new/lib/agama/storage/config_conversions/from_model_conversions/filesystem.rb --- old/lib/agama/storage/config_conversions/from_model_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/storage/config_conversions/from_model_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 @@ -41,10 +41,12 @@ # @return [Hash] def conversions { - reuse: model_json.dig(:filesystem, :reuse), - path: model_json[:mountPath], - type: convert_type, - label: model_json.dig(:filesystem, :label) + reuse: model_json.dig(:filesystem, :reuse), + path: model_json[:mountPath], + type: convert_type, + label: model_json.dig(:filesystem, :label), + mkfs_args: model_json.dig(:filesystem, :mkfsExtraArguments), + mount_options: model_json.dig(:filesystem, :mountOptions) } end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/storage/config_conversions/to_json_conversions/filesystem.rb new/lib/agama/storage/config_conversions/to_json_conversions/filesystem.rb --- old/lib/agama/storage/config_conversions/to_json_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/storage/config_conversions/to_json_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 @@ -38,13 +38,13 @@ # @see Base#conversions def conversions { - reuseIfPossible: config.reuse?, - label: config.label, - path: config.path, - mountOptions: config.mount_options, - mkfsOptions: config.mkfs_options, - mountBy: config.mount_by&.to_s, - type: convert_type + reuseIfPossible: config.reuse?, + label: config.label, + path: config.path, + mountOptions: config.mount_options, + mkfsExtraArguments: config.mkfs_args, + mountBy: config.mount_by&.to_s, + type: convert_type } end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/storage/config_conversions/to_model_conversions/filesystem.rb new/lib/agama/storage/config_conversions/to_model_conversions/filesystem.rb --- old/lib/agama/storage/config_conversions/to_model_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/storage/config_conversions/to_model_conversions/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 @@ -43,10 +43,12 @@ # @see Base#conversions def conversions { - reuse: config.reuse?, - default: convert_default, - type: convert_type, - label: config.label + reuse: config.reuse?, + default: convert_default, + type: convert_type, + label: config.label, + mkfsExtraArguments: config.mkfs_args, + mountOptions: convert_mount_options } end @@ -69,6 +71,13 @@ config.type.fs_type.to_s end + # @return [Array<String>, nil] + def convert_mount_options + return if config.mount_options.empty? + + config.mount_options + end + # @return [Boolean] def snapshots? !!config.type.btrfs&.snapshots? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/storage/configs/filesystem.rb new/lib/agama/storage/configs/filesystem.rb --- old/lib/agama/storage/configs/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/storage/configs/filesystem.rb 1980-01-02 01:00:00.000000000 +0100 @@ -42,8 +42,8 @@ # @return [String, nil] attr_accessor :label - # @return [Array<String>] - attr_accessor :mkfs_options + # @return [String, nil] + attr_accessor :mkfs_args # @return [Array<String>] attr_accessor :mount_options @@ -54,7 +54,6 @@ def initialize @reuse = false @mount_options = [] - @mkfs_options = [] end # Whether the given path is equivalent to {#path} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/agama/task_runner.rb new/lib/agama/task_runner.rb --- old/lib/agama/task_runner.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/agama/task_runner.rb 1970-01-01 01:00:00.000000000 +0100 @@ -1,94 +0,0 @@ -# frozen_string_literal: true - -# Copyright (c) [2026] 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. - -module Agama - # Class for running tasks in a sync or async way, preventing the execution of several tasks at the - # same time. - class TaskRunner - # Error when an async task is already running. - class BusyError < StandardError - def initialize(running_task = nil, requested_task = nil) - message = "Cannot start a new task while another is in progress: " \ - "requested: '#{requested_task || "unknown"}', " \ - "running: '#{running_task || "unknown"}'" - super(message) - end - end - - def initialize - @running_task = nil - @running_thread = nil - end - - # Runs the given block in a new thread. - # - # @raise [BusyError] If a previous async task is already running. - # - # @param task [String, nil] Description of the task to run. - # @param block [Proc] Code to run in a separate thread. - # @return [Thread] The new thread. - def async_run(task = nil, &block) - # Queue to safely communicate between threads. It is used to indicate to the main thread that - # the task has started. - ready = Queue.new - perform_run(task) do - @running_task = task - @running_thread = Thread.new do - ready.push(true) # Signaling to indicate the task has started. - block.call - end - end - ready.pop # Ensures the task has started. - @running_thread - end - - # Runs the given block in the main thread. - # - # @raise [BusyError] If a async task is running. - # - # @param task [String, nil] Description of the task to run. - # @param block [Proc] Code to run. - def run(task = nil, &block) - perform_run(task, &block) - end - - # Whether there is a task running in a separate thread. - # - # @return [Boolean] - def busy? - @running_thread&.alive? || false - end - - private - - # Runs the given block. - # - # @raise [BusyError] If a async task is running. - # - # @param task [String, nil] Description of the task to run. - # @param block [Proc] Code to run. - def perform_run(task = nil, &block) - raise BusyError.new(@running_task, task) if busy? - - block.call - end - end -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/y2storage/proposal/agama_device_planner.rb new/lib/y2storage/proposal/agama_device_planner.rb --- old/lib/y2storage/proposal/agama_device_planner.rb 1980-01-02 01:00:00.000000000 +0100 +++ new/lib/y2storage/proposal/agama_device_planner.rb 1980-01-02 01:00:00.000000000 +0100 @@ -110,7 +110,7 @@ planned.mount_point = config.path planned.mount_by = config.mount_by planned.fstab_options = config.mount_options - planned.mkfs_options = config.mkfs_options.join(",") + planned.mkfs_options = config.mkfs_args planned.label = config.label configure_filesystem_type(planned, config.type) if config.type end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 1980-01-02 01:00:00.000000000 +0100 +++ new/metadata 1980-01-02 01:00:00.000000000 +0100 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: agama-yast version: !ruby/object:Gem::Version - version: 21.devel360.16caae772 + version: '22' platform: ruby authors: - YaST Team @@ -583,7 +583,6 @@ - lib/agama/storage/zfcp/controller.rb - lib/agama/storage/zfcp/device.rb - lib/agama/storage/zfcp/manager.rb -- lib/agama/task_runner.rb - lib/agama/with_locale.rb - lib/tasks/autoyast.rb - lib/y2storage/agama_proposal.rb ++++++ po.tar.bz2 ++++++
