Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package yast2-packager for openSUSE:Factory checked in at 2021-12-03 20:35:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-packager (Old) and /work/SRC/openSUSE:Factory/.yast2-packager.new.31177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-packager" Fri Dec 3 20:35:27 2021 rev:416 rq:935228 version:4.4.17 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-packager/yast2-packager.changes 2021-11-23 22:12:35.314477449 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-packager.new.31177/yast2-packager.changes 2021-12-03 20:35:40.736161639 +0100 @@ -1,0 +2,19 @@ +Thu Dec 2 14:39:19 UTC 2021 - Ladislav Slez??k <lsle...@suse.cz> + +- Unify the Yes/No popup button IDs (bsc#1193326) +- 4.4.17 + +------------------------------------------------------------------- +Thu Dec 2 12:58:16 UTC 2021 - Ladislav Slez??k <lsle...@suse.cz> + +- Properly set the custom repository name (#1191491) +- 4.4.16 + +------------------------------------------------------------------- +Wed Dec 1 12:52:52 UTC 2021 - Imobach Gonzalez Sosa <igonzalezs...@suse.com> + +- Add the register_target property to ProductSpec so it is + available in all the derived classes (bsc#1193212). +- 4.4.15 + +------------------------------------------------------------------- Old: ---- yast2-packager-4.4.14.tar.bz2 New: ---- yast2-packager-4.4.17.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-packager.spec ++++++ --- /var/tmp/diff_new_pack.eRLwuj/_old 2021-12-03 20:35:41.336159446 +0100 +++ /var/tmp/diff_new_pack.eRLwuj/_new 2021-12-03 20:35:41.340159431 +0100 @@ -17,7 +17,7 @@ Name: yast2-packager -Version: 4.4.14 +Version: 4.4.17 Release: 0 Summary: YaST2 - Package Library License: GPL-2.0-or-later @@ -36,8 +36,8 @@ BuildRequires: yast2-storage-ng >= 4.0.141 # break the yast2-packager -> yast2-storage-ng -> yast2-packager build cycle #!BuildIgnore: yast2-packager -# ProductSpec API -BuildRequires: yast2 >= 4.4.21 +# Product#register_target +BuildRequires: yast2 >= 4.4.25 # raw_name BuildRequires: yast2-pkg-bindings >= 4.2.8 # Augeas lenses @@ -48,8 +48,8 @@ Requires: yast2-country-data >= 2.16.3 # raw_name Requires: yast2-pkg-bindings >= 4.2.8 -# ProductSpec API -Requires: yast2 >= 4.4.21 +# Product#register_target +Requires: yast2 >= 4.4.25 # unzipping license file Requires: unzip # HTTP, FTP, HTTPS modules (inst_productsources.ycp) ++++++ yast2-packager-4.4.14.tar.bz2 -> yast2-packager-4.4.17.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/package/yast2-packager.changes new/yast2-packager-4.4.17/package/yast2-packager.changes --- old/yast2-packager-4.4.14/package/yast2-packager.changes 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/package/yast2-packager.changes 2021-12-02 16:22:46.000000000 +0100 @@ -1,10 +1,29 @@ ------------------------------------------------------------------- +Thu Dec 2 14:39:19 UTC 2021 - Ladislav Slez??k <lsle...@suse.cz> + +- Unify the Yes/No popup button IDs (bsc#1193326) +- 4.4.17 + +------------------------------------------------------------------- +Thu Dec 2 12:58:16 UTC 2021 - Ladislav Slez??k <lsle...@suse.cz> + +- Properly set the custom repository name (#1191491) +- 4.4.16 + +------------------------------------------------------------------- +Wed Dec 1 12:52:52 UTC 2021 - Imobach Gonzalez Sosa <igonzalezs...@suse.com> + +- Add the register_target property to ProductSpec so it is + available in all the derived classes (bsc#1193212). +- 4.4.15 + +------------------------------------------------------------------- Mon Nov 22 08:22:46 UTC 2021 - Ladislav Slez??k <lsle...@suse.cz> - Use consistent names for the Full medium repositories (bsc#1191652) - 4.4.14 - + ------------------------------------------------------------------- Fri Nov 12 13:02:17 UTC 2021 - Imobach Gonzalez Sosa <igonzalezs...@suse.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/package/yast2-packager.spec new/yast2-packager-4.4.17/package/yast2-packager.spec --- old/yast2-packager-4.4.14/package/yast2-packager.spec 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/package/yast2-packager.spec 2021-12-02 16:22:46.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-packager -Version: 4.4.14 +Version: 4.4.17 Release: 0 Summary: YaST2 - Package Library License: GPL-2.0-or-later @@ -36,8 +36,8 @@ BuildRequires: yast2-storage-ng >= 4.0.141 # break the yast2-packager -> yast2-storage-ng -> yast2-packager build cycle #!BuildIgnore: yast2-packager -# ProductSpec API -BuildRequires: yast2 >= 4.4.21 +# Product#register_target +BuildRequires: yast2 >= 4.4.25 # raw_name BuildRequires: yast2-pkg-bindings >= 4.2.8 # Augeas lenses @@ -48,8 +48,8 @@ Requires: yast2-country-data >= 2.16.3 # raw_name Requires: yast2-pkg-bindings >= 4.2.8 -# ProductSpec API -Requires: yast2 >= 4.4.21 +# Product#register_target +Requires: yast2 >= 4.4.25 # unzipping license file Requires: unzip # HTTP, FTP, HTTPS modules (inst_productsources.ycp) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/src/include/packager/repositories_include.rb new/yast2-packager-4.4.17/src/include/packager/repositories_include.rb --- old/yast2-packager-4.4.14/src/include/packager/repositories_include.rb 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/src/include/packager/repositories_include.rb 2021-12-02 16:22:46.000000000 +0100 @@ -1,5 +1,6 @@ require "y2packager/product_spec_readers/full" require "y2packager/product" +require "cgi" # encoding: utf-8 module Yast @@ -100,7 +101,7 @@ return :ok end - found_products = scan_products(expanded_url, url) + found_products = scan_products(expanded_url, url, preferred_name) newSources = [] enter_again = false @@ -345,8 +346,11 @@ private # scan the repository URL and return the available products - # @return [Array<Y2Packager::RepoProductSpec>] Found products - def scan_products(_expanded_url, original_url) + # @param _expanded_url [String] expanded repository URL + # @param original_url [String] original repository URL + # @param preferred_name [String] user preferred name or empty string + # @return [Array<Y2Packager::ProductLocation>] Found products + def scan_products(_expanded_url, original_url, preferred_name) # use the selected base product during installation, # in installed system or during upgrade use the installed base product base_product = if Stage.initial && !Mode.update @@ -362,33 +366,9 @@ # add at least one product if the scan result is empty (no product info available) # to try adding the repository at the root (/) of the medium if found_products.empty? - url_path = URL.Parse(original_url)["path"] - p_elems = url_path.split("/") - - fallback = Packages.fallback_name - - if p_elems.size > 1 - url_path = Ops.get( - p_elems, - Ops.subtract(Builtins.size(p_elems), 1), - fallback - ) - - if url_path.nil? || url_path == "" - url_path = Ops.get( - p_elems, - Ops.subtract(Builtins.size(p_elems), 2), - fallback - ) - - url_path = fallback if url_path.nil? || url_path == "" - end - elsif url_path == "/" - url_path = fallback - end - + name = propose_name(preferred_name, original_url) found_products << Y2Packager::RepoProductSpec.new( - name: url_path, # FIXME: how is this addon selected? + name: name, # FIXME: how is this addon selected? dir: "/" ) end @@ -396,6 +376,27 @@ found_products end + # Propose a repository name + # - use the user defined name if it is set + # - otherwise use the last URL path element + # - if it is empty then use the default fallback + # @param preferred_name [String] user entered name or empty string + # @param url [String] repository URL + # @return [String] repository name + def propose_name(preferred_name, url) + # if preferred name is set then use it + return preferred_name unless preferred_name.empty? + + # otherwise use the last URL path element + path = URL.Parse(url)["path"].split("/").delete_if(&:empty?) + if path.empty? + # if it is empty then use the fallback + Packages.fallback_name + else + CGI.unescape(path.last) + end + end + # propose the repository alias (based on the product name) # @return [String] an unique alias def propose_alias(product_name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/src/lib/y2packager/control_product_spec.rb new/yast2-packager-4.4.17/src/lib/y2packager/control_product_spec.rb --- old/yast2-packager-4.4.14/src/lib/y2packager/control_product_spec.rb 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/src/lib/y2packager/control_product_spec.rb 2021-12-02 16:22:46.000000000 +0100 @@ -28,8 +28,6 @@ class ControlProductSpec < ProductSpec # @return [String] License URL attr_reader :license_url - # @return [String] Registration target name used for registering the product - attr_reader :register_target # @param register_target [String] The registration target name used # for registering the product, the $arch variable is replaced @@ -37,10 +35,8 @@ # @param license_url [String] License URL def initialize(name:, version:, arch:, display_name:, order:, license_url:, register_target:) super(name: name, version: version, display_name: display_name, arch: arch, - order: order, base: true) + order: order, base: true, register_target: register_target) - # expand the "$arch" placeholder - @register_target = register_target&.gsub("$arch", arch) || "" @license_url = license_url end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/src/lib/y2packager/product_spec.rb new/yast2-packager-4.4.17/src/lib/y2packager/product_spec.rb --- old/yast2-packager-4.4.14/src/lib/y2packager/product_spec.rb 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/src/lib/y2packager/product_spec.rb 2021-12-02 16:22:46.000000000 +0100 @@ -50,6 +50,9 @@ # @return [Boolean] Determine whether it is a base product attr_reader :base + # @return [String] Registration target name used for registering the product + attr_reader :register_target + class << self # Returns the specs for the base products # @@ -106,7 +109,7 @@ # @param version [String] version ("15.2") # @param arch [String] The architecture ("x86_64") # @param display_name [String] The user visible name ("SUSE Linux Enterprise Server 15 SP2") - def initialize(name:, version:, arch:, display_name:, order: 1, base: true) + def initialize(name:, version:, arch:, display_name:, order: 1, base: true, register_target: "") @name = name @version = version @arch = arch @@ -114,6 +117,10 @@ @order = order @base = base @selected = false + + @register_target = register_target + # expand the "$arch" placeholder + @register_target = @register_target.gsub("$arch", arch.to_s) if arch end def selected? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/src/modules/SlideShowCallbacks.rb new/yast2-packager-4.4.17/src/modules/SlideShowCallbacks.rb --- old/yast2-packager-4.4.14/src/modules/SlideShowCallbacks.rb 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/src/modules/SlideShowCallbacks.rb 2021-12-02 16:22:46.000000000 +0100 @@ -194,7 +194,7 @@ def YesNoButtonBox yes_button = PushButton(Id(:yes), Opt(:key_F10), Label.YesButton) no_button = PushButton( - Id(:no_button), + Id(:no), Opt(:default, :key_F9), Label.NoButton ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/test/lib/product_upgrade_test.rb new/yast2-packager-4.4.17/test/lib/product_upgrade_test.rb --- old/yast2-packager-4.4.14/test/lib/product_upgrade_test.rb 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/test/lib/product_upgrade_test.rb 2021-12-02 16:22:46.000000000 +0100 @@ -126,7 +126,7 @@ describe ".obsolete_upgrades" do before do - allow(Y2Packager::Resolvable).to receive(:find).with(kind: :product) + allow(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target]) .and_return(suma_products) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.4.14/test/repositories_include_test.rb new/yast2-packager-4.4.17/test/repositories_include_test.rb --- old/yast2-packager-4.4.14/test/repositories_include_test.rb 2021-11-22 09:37:55.000000000 +0100 +++ new/yast2-packager-4.4.17/test/repositories_include_test.rb 2021-12-02 16:22:46.000000000 +0100 @@ -207,4 +207,54 @@ end end end + + # the "propose_name" method is private so use send() in the tests + describe ".propose_name" do + context "user provided a repository name" do + it "returns the name provided by user" do + preferred_name = "my repository" + url = "http://example.com" + ret = RepositoryIncludeTester.send(:propose_name, preferred_name, url) + expect(ret).to eq(preferred_name) + end + end + + context "no user provided repository name" do + it "returns a name created from the last URL path element" do + preferred_name = "" + url = "http://example.com/Leap-15.3" + ret = RepositoryIncludeTester.send(:propose_name, preferred_name, url) + expect(ret).to eq("Leap-15.3") + end + + it "returns a name created from the last non-empty URL path element" do + preferred_name = "" + url = "http://example.com/Leap-15.3/" + ret = RepositoryIncludeTester.send(:propose_name, preferred_name, url) + expect(ret).to eq("Leap-15.3") + end + + it "returns an unescaped URL path" do + preferred_name = "" + url = "http://example.com/Leap%2015.3/" + ret = RepositoryIncludeTester.send(:propose_name, preferred_name, url) + # %20 (0x20) => " " + expect(ret).to eq("Leap 15.3") + end + + it "returns the fallback name if the path is root" do + preferred_name = "" + url = "http://example.com/" + ret = RepositoryIncludeTester.send(:propose_name, preferred_name, url) + expect(ret).to eq(Yast::Packages.fallback_name) + end + + it "returns the fallback name if the path is empty" do + preferred_name = "" + url = "http://example.com" + ret = RepositoryIncludeTester.send(:propose_name, preferred_name, url) + expect(ret).to eq(Yast::Packages.fallback_name) + end + end + end end