Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/Makefile,v
retrieving revision 1.2
diff -u -p -u -r1.2 Makefile
--- Makefile    18 May 2020 09:22:23 -0000      1.2
+++ Makefile    22 May 2020 06:27:23 -0000
@@ -2,7 +2,7 @@

 PORTROACH=             limit:^6

-VERSION=               6.14.0
+VERSION=               6.15.0
 REVISION=              0

 RUN_DEPENDS+=          databases/ruby-hiera3,${MODRUBY_FLAVOR} \
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/distinfo,v
retrieving revision 1.1.1.1
diff -u -p -u -r1.1.1.1 distinfo
--- distinfo    18 May 2020 08:59:00 -0000      1.1.1.1
+++ distinfo    22 May 2020 06:27:23 -0000
@@ -1,2 +1,2 @@
-SHA256 (puppet-6.14.0.tar.gz) = b9Yab8uZoJK+JAjcUe8pvDYhlAH2++ndG+hJt1jXq5U=
-SIZE (puppet-6.14.0.tar.gz) = 2842351
+SHA256 (puppet-6.15.0.tar.gz) = fqIKll86LUM1PoykSR/Ot3/ndBZZzk6rQBorbDTXoQo=
+SIZE (puppet-6.15.0.tar.gz) = 2880562
Index: patches/patch-lib_puppet_defaults_rb
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/patches/patch-lib_puppet_defaults_rb,v
retrieving revision 1.1.1.1
diff -u -p -u -r1.1.1.1 patch-lib_puppet_defaults_rb
--- patches/patch-lib_puppet_defaults_rb        18 May 2020 08:59:00 -0000      1.1.1.1
+++ patches/patch-lib_puppet_defaults_rb        22 May 2020 06:27:23 -0000
@@ -24,7 +24,7 @@ Index: lib/puppet/defaults.rb
      end
    end

-@@ -1283,13 +1283,13 @@ EOT
+@@ -1286,13 +1286,13 @@ EOT

    settings.define_settings(:master,
      :user => {
Index: patches/patch-lib_puppet_provider_package_gem_rb
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/patches/patch-lib_puppet_provider_package_gem_rb,v
retrieving revision 1.2
diff -u -p -u -r1.2 patch-lib_puppet_provider_package_gem_rb
--- patches/patch-lib_puppet_provider_package_gem_rb    18 May 2020 09:11:42 -0000      1.2
+++ patches/patch-lib_puppet_provider_package_gem_rb    22 May 2020 06:27:23 -0000
@@ -5,7 +5,7 @@ Use the locally installed gem command wi
 Index: lib/puppet/provider/package/gem.rb
 --- lib/puppet/provider/package/gem.rb.orig
 +++ lib/puppet/provider/package/gem.rb
-@@ -37,7 +37,7 @@ Puppet::Type.type(:package).provide :gem, :parent => P
+@@ -42,7 +42,7 @@ Puppet::Type.type(:package).provide :gem, :parent => P
    # Define the default provider package command as optional when the provider is targetable.
    # Doing do defers the evaluation of provider suitability until all commands are evaluated.

Index: patches/patch-lib_puppet_provider_package_openbsd_rb
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/patches/patch-lib_puppet_provider_package_openbsd_rb,v
retrieving revision 1.2
diff -u -p -u -r1.2 patch-lib_puppet_provider_package_openbsd_rb
--- patches/patch-lib_puppet_provider_package_openbsd_rb        18 May 2020 09:04:24 -0000      1.2
+++ patches/patch-lib_puppet_provider_package_openbsd_rb        22 May 2020 06:27:23 -0000
@@ -1,8 +1,9 @@
 $OpenBSD: patch-lib_puppet_provider_package_openbsd_rb,v 1.2 2020/05/18 09:04:24 kn Exp $

-- Handle the flavor as a property, not as a parameter.
 - Handle errors from pkg_add
 - Handle uninstall_options being 'nil' by default
+- If no flavor speficied, force the empty flavor with '--'
+  but skipping the % un-ambiguity pkg names
 - Bail out on shortform PKG_PATH (i.e. 'ftp.openbsd.org')
 - pkg.conf is gone

@@ -10,82 +11,31 @@ $OpenBSD: patch-lib_puppet_provider_pack
 Index: lib/puppet/provider/package/openbsd.rb
 --- lib/puppet/provider/package/openbsd.rb.orig
 +++ lib/puppet/provider/package/openbsd.rb
-@@ -21,70 +21,63 @@ Puppet::Type.type(:package).provide :openbsd, :parent
-   has_feature :uninstall_options
+@@ -22,6 +22,8 @@ Puppet::Type.type(:package).provide :openbsd, :parent
    has_feature :upgradeable
    has_feature :supports_flavors
-+  has_feature :flavorable

 +  mk_resource_methods
 +
    def self.instances
-+    # our regex for matching pkg_info output
-+    regex = /^(.*)-(\d[^-]*)[-]?(\w*)(.*)$/
      packages = []

-     begin
--      execpipe(listcmd) do |process|
--        # our regex for matching pkg_info output
--        regex = /^(.*)-(\d[^-]*)[-]?([\w-]*)(.*)$/
--        fields = [:name, :ensure, :flavor ]
--        hash = {}
--
--        # now turn each returned line into a package object
--        process.each_line { |line|
--          match = regex.match(line.split[0])
--          if match
--            fields.zip(match.captures) { |field,value|
--              hash[field] = value
--            }
--
--            hash[:provider] = self.name
--
--            packages << new(hash)
--            hash = {}
+@@ -44,12 +46,6 @@ Puppet::Type.type(:package).provide :openbsd, :parent
+
+             packages << new(hash)
+             hash = {}
 -          else
 -            unless line =~ /Updating the pkgdb/
 -              # Print a warning on lines we can't match, but move
 -              # on, since it should be non-fatal
 -              warning(_("Failed to match line %{line}") % { line: line })
 -            end
-+      packages = pkginfo('-a')
-+      packages.split("\n").collect do |package|
-+        if match = regex.match(package.split[0])
-+         new( :name => match.captures[0],
-+               :ensure => match.captures[1],
-+               :flavor => match.captures[2],
-+          )
-+        else
-+          unless line =~ /Updating the pkgdb/
-+            # Print a warning on lines we can't match, but move
-+            # on, since it should be non-fatal
-+            warning("Failed to match line #{line}")
            end
--        }
-+        end
+         }
        end
-
--      return packages
-     rescue Puppet::ExecutionFailure
-       return nil
-     end
+@@ -65,26 +61,18 @@ Puppet::Type.type(:package).provide :openbsd, :parent
    end

--  def self.listcmd
--    [command(:pkginfo), "-a"]
-+  def self.prefetch(resources)
-+    packages = instances
-+    resources.keys.each do |name|
-+      if provider = packages.find{ |pkg| pkg.name == name }
-+        resources[name].provider = provider
-+      end
-+    end
-   end
-
-+  def flavor=(value)
-+    install
-+  end
-+
    def latest
 -    parse_pkgconf

@@ -98,7 +48,8 @@ Index: lib/puppet/provider/package/openb
      if @resource[:flavor]
        query = "#{@resource[:name]}--#{@resource[:flavor]}"
      else
-       query = @resource[:name]
+-      query = @resource[:name]
++      query = @resource[:name] + "--"
      end

 -    output = Puppet::Util.withenv(e_vars) {pkginfo "-Q", query}
@@ -112,7 +63,7 @@ Index: lib/puppet/provider/package/openb
      else
        # Remove all fuzzy matches first.
        output = output.split.select {|p| p =~ /^#{resource[:name]}-(\d[^-]*)[-]?(\w*)/ }.join
-@@ -93,21 +86,22 @@ Puppet::Type.type(:package).provide :openbsd, :parent
+@@ -93,21 +81,22 @@ Puppet::Type.type(:package).provide :openbsd, :parent

      if output =~ /^#{resource[:name]}-(\d[^-]*)[-]?(\w*) \(installed\)$/
        debug "Package is already the latest available"
@@ -140,7 +91,7 @@ Index: lib/puppet/provider/package/openb
        else
          return match[2]
        end
-@@ -118,57 +112,25 @@ Puppet::Type.type(:package).provide :openbsd, :parent
+@@ -118,57 +107,25 @@ Puppet::Type.type(:package).provide :openbsd, :parent
      self.install(true)
    end

@@ -209,7 +160,30 @@ Index: lib/puppet/provider/package/openb
    end

    def get_full_name(latest = false)
-@@ -197,27 +159,28 @@ Puppet::Type.type(:package).provide :openbsd, :parent
+@@ -181,7 +138,11 @@ Puppet::Type.type(:package).provide :openbsd, :parent
+       "#{resource[:name]}--#{resource[:flavor]}"
+     elsif latest
+       # Don't depend on get_version for updates.
+-      @resource[:name]
++      if resource[:name].to_s.match(/[a-z0-9]%[0-9a-z]/i)
++        "#{resource[:name]}"
++      else
++        "#{resource[:name]}--"
++      end
+     else
+       # If :ensure contains a version, use that instead of looking it up.
+       # This allows for installing packages with the same stem, but multiple
+@@ -192,32 +153,42 @@ Puppet::Type.type(:package).provide :openbsd, :parent
+         use_version = get_version
+       end
+
+-      [ @resource[:name], use_version, @resource[:flavor]].join('-').gsub(/-+$/, '')
++      if resource[:flavor]
++        [ @resource[:name], use_version, @resource[:flavor]].join('-').gsub(/-+$/, '')
++      else
++        [ @resource[:name], use_version ]
++      end
+     end
    end

    def get_version
@@ -218,6 +192,12 @@ Index: lib/puppet/provider/package/openb
 -      regex = /^(.*)-(\d[^-]*)[-]?(\w*)(.*)$/
 -      master_version = 0
 -      version = -1
++    pkg_search_name = @resource[:name]
++    unless pkg_search_name.match(/[a-z0-9]%[0-9a-z]/i) and not @resource[:flavor]
++      # we are only called when no flavor is specified
++      # so append '--' to the :name to avoid patch versions on flavors
++      pkg_search_name << "--"
++    end
 +    # our regex for matching pkg_info output
 +    regex = /^(.*)-(\d[^-]*)[-]?(\w*)(.*)$/
 +    master_version = 0
@@ -229,16 +209,16 @@ Index: lib/puppet/provider/package/openb
 -          # now we return the first version, unless ensure is latest
 -          version = match.captures[1]
 -          return version unless @resource[:ensure] == "latest"
+-
+-          master_version = version unless master_version > version
+-        end
 +    # pkg_info -I might return multiple lines, i.e. flavors
-+    matching_pkgs = pkginfo("-I", @resource[:name])
++    matching_pkgs = pkginfo("-I", "pkg_search_name")
 +    matching_pkgs.each_line do |line|
 +      if match = regex.match(line.split[0])
 +        # now we return the first version, unless ensure is latest
 +        version = match.captures[1]
 +        return version unless @resource[:ensure] == "latest"
-
--          master_version = version unless master_version > version
--        end
 +        master_version = version unless master_version > version
        end

@@ -254,7 +234,7 @@ Index: lib/puppet/provider/package/openb
    rescue Puppet::ExecutionFailure
      return nil
    end
-@@ -236,7 +199,7 @@ Puppet::Type.type(:package).provide :openbsd, :parent
+@@ -236,7 +207,7 @@ Puppet::Type.type(:package).provide :openbsd, :parent
    end

    def uninstall_options
Index: patches/patch-lib_puppet_provider_package_pip3_rb
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/patches/patch-lib_puppet_provider_package_pip3_rb,v
retrieving revision 1.1.1.1
diff -u -p -u -r1.1.1.1 patch-lib_puppet_provider_package_pip3_rb
--- patches/patch-lib_puppet_provider_package_pip3_rb   18 May 2020 08:59:00 -0000      1.1.1.1
+++ patches/patch-lib_puppet_provider_package_pip3_rb   22 May 2020 06:27:23 -0000
@@ -7,7 +7,7 @@ python3 version
 Index: lib/puppet/provider/package/pip3.rb
 --- lib/puppet/provider/package/pip3.rb.orig
 +++ lib/puppet/provider/package/pip3.rb
-@@ -14,6 +14,6 @@ Puppet::Type.type(:package).provide :pip3,
+@@ -12,6 +12,6 @@ Puppet::Type.type(:package).provide :pip3,
    has_feature :installable, :uninstallable, :upgradeable, :versionable, :install_options, :targetable

    def self.cmd
Index: patches/patch-lib_puppet_provider_package_pip_rb
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/patches/patch-lib_puppet_provider_package_pip_rb,v
retrieving revision 1.1.1.1
diff -u -p -u -r1.1.1.1 patch-lib_puppet_provider_package_pip_rb
--- patches/patch-lib_puppet_provider_package_pip_rb    18 May 2020 08:59:00 -0000      1.1.1.1
+++ patches/patch-lib_puppet_provider_package_pip_rb    22 May 2020 06:27:23 -0000
@@ -7,7 +7,7 @@ python2 version
 Index: lib/puppet/provider/package/pip.rb
 --- lib/puppet/provider/package/pip.rb.orig
 +++ lib/puppet/provider/package/pip.rb
-@@ -35,7 +35,7 @@ Puppet::Type.type(:package).provide :pip, :parent => :
+@@ -39,7 +39,7 @@ Puppet::Type.type(:package).provide :pip, :parent => :
      if Puppet::Util::Platform.windows?
        ["pip.exe"]
      else
Index: patches/patch-lib_puppet_type_package_rb
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/patches/patch-lib_puppet_type_package_rb,v
retrieving revision 1.1.1.1
diff -u -p -u -r1.1.1.1 patch-lib_puppet_type_package_rb
--- patches/patch-lib_puppet_type_package_rb    18 May 2020 08:59:00 -0000      1.1.1.1
+++ patches/patch-lib_puppet_type_package_rb    22 May 2020 06:27:23 -0000
@@ -7,7 +7,7 @@ as a property instead of a parameter
 Index: lib/puppet/type/package.rb
 --- lib/puppet/type/package.rb.orig
 +++ lib/puppet/type/package.rb
-@@ -67,7 +67,6 @@ module Puppet
+@@ -68,7 +68,6 @@ module Puppet
        provider-specific.",
        :methods => [:package_settings_insync?, :package_settings, :package_settings=]
      feature :virtual_packages, "The provider accepts virtual package names for install and uninstall."
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/sysutils/ruby-puppet/6/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -u -r1.1.1.1 PLIST
--- pkg/PLIST   18 May 2020 08:59:01 -0000      1.1.1.1
+++ pkg/PLIST   22 May 2020 06:27:23 -0000
@@ -294,6 +294,7 @@ ${MODRUBY_SITEDIR}/puppet/http/
 ${MODRUBY_SITEDIR}/puppet/http.rb
 ${MODRUBY_SITEDIR}/puppet/http/client.rb
 ${MODRUBY_SITEDIR}/puppet/http/errors.rb
+${MODRUBY_SITEDIR}/puppet/http/external_client.rb
 ${MODRUBY_SITEDIR}/puppet/http/redirector.rb
 ${MODRUBY_SITEDIR}/puppet/http/resolver/
 ${MODRUBY_SITEDIR}/puppet/http/resolver.rb
@@ -1093,7 +1094,21 @@ ${MODRUBY_SITEDIR}/puppet/util/network_d
 ${MODRUBY_SITEDIR}/puppet/util/network_device/transport/
 ${MODRUBY_SITEDIR}/puppet/util/network_device/transport.rb
 ${MODRUBY_SITEDIR}/puppet/util/network_device/transport/base.rb
+${MODRUBY_SITEDIR}/puppet/util/package/
 ${MODRUBY_SITEDIR}/puppet/util/package.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/
+${MODRUBY_SITEDIR}/puppet/util/package/version/debian.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/gem.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/pip.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/range/
+${MODRUBY_SITEDIR}/puppet/util/package/version/range.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/range/gt.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/range/gt_eq.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/range/lt.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/range/lt_eq.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/range/min_max.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/range/simple.rb
+${MODRUBY_SITEDIR}/puppet/util/package/version/rpm.rb
 ${MODRUBY_SITEDIR}/puppet/util/pidlock.rb
 ${MODRUBY_SITEDIR}/puppet/util/platform.rb
 ${MODRUBY_SITEDIR}/puppet/util/plist.rb
@@ -1122,6 +1137,7 @@ ${MODRUBY_SITEDIR}/puppet/util/rdoc/pars
 ${MODRUBY_SITEDIR}/puppet/util/reference.rb
 ${MODRUBY_SITEDIR}/puppet/util/resource_template.rb
 ${MODRUBY_SITEDIR}/puppet/util/retry_action.rb
+${MODRUBY_SITEDIR}/puppet/util/rpm_compare.rb
 ${MODRUBY_SITEDIR}/puppet/util/rubygems.rb
 ${MODRUBY_SITEDIR}/puppet/util/run_mode.rb
 ${MODRUBY_SITEDIR}/puppet/util/selinux.rb
