This updates lang/ruby/2.{1,2,3,4} and devel/ruby-gems in 6.2-stable to fix the recent rubygems security issues. See:
https://www.ruby-lang.org/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/ https://blog.rubygems.org/2018/02/15/2.7.6-released.html For ruby 2.2, 2.3, and 2.4, this just uses the upstream patch file directly. The ruby 2.2 upstream patch file applies directly to ruby 2.1, except for the version bump, and this applies the upstream patch file as separate patches (lib changes only, no test changes). This includes a backport of the ruby 2.2 upstream patch (for rubygems version 2.4.5) to devel/ruby-gems (rubygems version 1.8.24). I'm not sure this backport is correct, as the differences between the versions were substantial. However, I can both install gems and build gems using it so it doesn't appear to have broken something major. I'd appreciate other eyes on this if someone has time to review the changes to devel/ruby-gems. I'll probably be committing in a couple days unless I hear objections. Thanks, Jeremy Index: lang/ruby/Makefile.inc =================================================================== RCS file: /cvs/ports/lang/ruby/Makefile.inc,v retrieving revision 1.16 diff -u -p -u -p -r1.16 Makefile.inc --- lang/ruby/Makefile.inc 19 Aug 2016 19:09:34 -0000 1.16 +++ lang/ruby/Makefile.inc 21 Feb 2018 17:35:10 -0000 @@ -13,7 +13,8 @@ PERMIT_PACKAGE_CDROM ?= Yes PERMIT_PACKAGE_FTP ?= Yes PERMIT_DISTFILES_FTP ?= Yes -MASTER_SITES ?= http://cache.ruby-lang.org/pub/ruby/${VERSION:R}/ +MASTER_SITES ?= http://cache.ruby-lang.org/pub/ruby/${VERSION:R}/ +MASTER_SITES0 ?= https://bugs.ruby-lang.org/attachments/download/ CONFIGURE_STYLE ?= gnu CONFIGURE_ARGS += --enable-shared Index: devel/ruby-gems/Makefile =================================================================== RCS file: /cvs/ports/devel/ruby-gems/Attic/Makefile,v retrieving revision 1.34 diff -u -p -u -p -r1.34 Makefile --- devel/ruby-gems/Makefile 2 Sep 2017 21:34:12 -0000 1.34 +++ devel/ruby-gems/Makefile 21 Feb 2018 17:35:10 -0000 @@ -7,7 +7,7 @@ DISTNAME= rubygems-$V PKGNAME= ruby-gems-$V CATEGORIES= devel -REVISION= 0 +REVISION= 1 HOMEPAGE= http://docs.rubygems.org/ Index: devel/ruby-gems/patches/patch-lib_rubygems_installer_rb =================================================================== RCS file: /cvs/ports/devel/ruby-gems/patches/Attic/patch-lib_rubygems_installer_rb,v retrieving revision 1.11 diff -u -p -u -p -r1.11 patch-lib_rubygems_installer_rb --- devel/ruby-gems/patches/patch-lib_rubygems_installer_rb 2 Sep 2017 21:34:12 -0000 1.11 +++ devel/ruby-gems/patches/patch-lib_rubygems_installer_rb 21 Feb 2018 17:35:10 -0000 @@ -14,3 +14,22 @@ Index: lib/rubygems/installer.rb unless @force ensure_required_ruby_version_met ensure_required_rubygems_version_met +@@ -566,6 +570,9 @@ EOF + def extract_files + raise ArgumentError, "format required to extract from" if @format.nil? + ++ if duplicates = @format.file_entries.map{|e, _| e['path']}.group_by{|f| f}.select{|k,v| v.size > 1 }.map(&:first) and duplicates.any? ++ raise Gem::InstallError, "duplicate files in the package: (#{duplicates.map(&:inspect).join(', ')})" ++ end + @format.file_entries.each do |entry, file_data| + path = entry['path'].untaint + +@@ -575,7 +582,7 @@ EOF + + path = File.expand_path File.join(gem_dir, path) + +- unless path.start_with? gem_dir then ++ unless path.start_with?(gem_dir+'/') then + msg = "attempt to install file into %p under %s" % + [entry['path'], gem_dir] + raise Gem::InstallError, msg Index: devel/ruby-gems/patches/patch-lib_rubygems_package_tar_header_rb =================================================================== RCS file: devel/ruby-gems/patches/patch-lib_rubygems_package_tar_header_rb diff -N devel/ruby-gems/patches/patch-lib_rubygems_package_tar_header_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/ruby-gems/patches/patch-lib_rubygems_package_tar_header_rb 21 Feb 2018 17:35:10 -0000 @@ -0,0 +1,47 @@ +$OpenBSD$ + +Index: lib/rubygems/package/tar_header.rb +--- lib/rubygems/package/tar_header.rb.orig ++++ lib/rubygems/package/tar_header.rb +@@ -103,20 +103,20 @@ class Gem::Package::TarHeader + fields = header.unpack UNPACK_FORMAT + + name = fields.shift +- mode = fields.shift.oct +- uid = fields.shift.oct +- gid = fields.shift.oct +- size = fields.shift.oct +- mtime = fields.shift.oct +- checksum = fields.shift.oct ++ mode = strict_oct(fields.shift) ++ uid = strict_oct(fields.shift) ++ gid = strict_oct(fields.shift) ++ size = strict_oct(fields.shift) ++ mtime = strict_oct(fields.shift) ++ checksum = strict_oct(fields.shift) + typeflag = fields.shift + linkname = fields.shift + magic = fields.shift +- version = fields.shift.oct ++ version = strict_oct(fields.shift) + uname = fields.shift + gname = fields.shift +- devmajor = fields.shift.oct +- devminor = fields.shift.oct ++ devmajor = strict_oct(fields.shift) ++ devminor = strict_oct(fields.shift) + prefix = fields.shift + + new :name => name, +@@ -157,6 +157,11 @@ class Gem::Package::TarHeader + # :prefix => fields.shift, + + # :empty => empty ++ end ++ ++ def self.strict_oct(str) ++ return str.oct if str =~ /\A[0-7]*\z/ ++ raise ArgumentError, "#{str.inspect} is not an octal string" + end + + ## Index: devel/ruby-gems/patches/patch-lib_rubygems_server_rb =================================================================== RCS file: devel/ruby-gems/patches/patch-lib_rubygems_server_rb diff -N devel/ruby-gems/patches/patch-lib_rubygems_server_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/ruby-gems/patches/patch-lib_rubygems_server_rb 21 Feb 2018 17:35:10 -0000 @@ -0,0 +1,33 @@ +$OpenBSD$ + +Index: lib/rubygems/server.rb +--- lib/rubygems/server.rb.orig ++++ lib/rubygems/server.rb +@@ -610,6 +610,18 @@ div.method-source-code pre { color: #ffdead; overflow: + executables = nil if executables.empty? + executables.last["is_last"] = true if executables + ++ # Pre-process spec homepage for safety reasons ++ begin ++ homepage_uri = URI.parse(spec.homepage) ++ if [URI::HTTP, URI::HTTPS].member? homepage_uri.class ++ homepage_uri = spec.homepage ++ else ++ homepage_uri = "." ++ end ++ rescue URI::InvalidURIError ++ homepage_uri = "." ++ end ++ + specs << { + "authors" => spec.authors.sort.join(", "), + "date" => spec.date.to_s, +@@ -619,7 +631,7 @@ div.method-source-code pre { color: #ffdead; overflow: + "only_one_executable" => (executables && executables.size == 1), + "full_name" => spec.full_name, + "has_deps" => !deps.empty?, +- "homepage" => spec.homepage, ++ "homepage" => homepage_uri, + "name" => spec.name, + "rdoc_installed" => Gem::DocManager.new(spec).rdoc_installed?, + "summary" => spec.summary, Index: devel/ruby-gems/patches/patch-lib_rubygems_specification_rb =================================================================== RCS file: /cvs/ports/devel/ruby-gems/patches/Attic/patch-lib_rubygems_specification_rb,v retrieving revision 1.2 diff -u -p -u -p -r1.2 patch-lib_rubygems_specification_rb --- devel/ruby-gems/patches/patch-lib_rubygems_specification_rb 2 Sep 2017 21:34:12 -0000 1.2 +++ devel/ruby-gems/patches/patch-lib_rubygems_specification_rb 21 Feb 2018 17:35:10 -0000 @@ -6,7 +6,15 @@ b61c621fb2e00e215bcc8ad7d9fe45433881da14 Index: lib/rubygems/specification.rb --- lib/rubygems/specification.rb.orig +++ lib/rubygems/specification.rb -@@ -275,6 +275,12 @@ class Gem::Specification +@@ -8,6 +8,7 @@ require 'rubygems/version' + require 'rubygems/requirement' + require 'rubygems/platform' + require "rubygems/deprecate" ++require "uri" + + # :stopdoc: + class Date; end # for ruby_code if date.rb wasn't required +@@ -275,6 +276,12 @@ class Gem::Specification @@all = specs.values @@ -19,7 +27,7 @@ Index: lib/rubygems/specification.rb _resort! end @@all -@@ -2007,9 +2013,15 @@ class Gem::Specification +@@ -2007,9 +2014,15 @@ class Gem::Specification end end @@ -36,3 +44,23 @@ Index: lib/rubygems/specification.rb end if require_paths.empty? then +@@ -2090,10 +2103,15 @@ class Gem::Specification + raise Gem::InvalidSpecificationException, "#{lazy} is not a summary" + end + +- if homepage and not homepage.empty? and +- homepage !~ /\A[a-z][a-z\d+.-]*:/i then +- raise Gem::InvalidSpecificationException, +- "\"#{homepage}\" is not a URI" ++ if homepage and not homepage.empty? ++ begin ++ homepage_uri = URI.parse(homepage) ++ unless [URI::HTTP, URI::HTTPS].member? homepage_uri.class ++ raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a valid HTTP URI" ++ end ++ rescue URI::InvalidURIError ++ raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a valid HTTP URI" ++ end + end + + # Warnings Index: lang/ruby/2.1/Makefile =================================================================== RCS file: /cvs/ports/lang/ruby/2.1/Attic/Makefile,v retrieving revision 1.28.2.1 diff -u -p -u -p -r1.28.2.1 Makefile --- lang/ruby/2.1/Makefile 18 Dec 2017 16:04:00 -0000 1.28.2.1 +++ lang/ruby/2.1/Makefile 21 Feb 2018 17:35:10 -0000 @@ -15,7 +15,7 @@ PKGNAME-gdbm = ruby21-gdbm-${VERSION} PKGNAME-tk = ruby21-tk-${VERSION} PKGNAME-ri_docs = ruby21-ri_docs-${VERSION} -REVISION-main = 6 +REVISION-main = 7 REVISION-ri_docs = 0 PKG_ARCH-ri_docs = * WANTLIB-ri_docs = # empty Index: lang/ruby/2.1/patches/patch-lib_rubygems_package_rb =================================================================== RCS file: /cvs/ports/lang/ruby/2.1/patches/Attic/patch-lib_rubygems_package_rb,v retrieving revision 1.1.2.1 diff -u -p -u -p -r1.1.2.1 patch-lib_rubygems_package_rb --- lang/ruby/2.1/patches/patch-lib_rubygems_package_rb 18 Dec 2017 16:04:00 -0000 1.1.2.1 +++ lang/ruby/2.1/patches/patch-lib_rubygems_package_rb 21 Feb 2018 17:35:10 -0000 @@ -3,6 +3,15 @@ $OpenBSD: patch-lib_rubygems_package_rb, Index: lib/rubygems/package.rb --- lib/rubygems/package.rb.orig +++ lib/rubygems/package.rb +@@ -397,7 +397,7 @@ EOM + destination = File.expand_path destination + + raise Gem::Package::PathError.new(destination, destination_dir) unless +- destination.start_with? destination_dir ++ destination.start_with? destination_dir + '/' + + destination.untaint + destination @@ -441,7 +441,7 @@ EOM @checksums = gem.seek 'checksums.yaml.gz' do |entry| @@ -12,3 +21,14 @@ Index: lib/rubygems/package.rb end end end +@@ -575,6 +575,10 @@ EOM + unless @files.include? 'data.tar.gz' then + raise Gem::Package::FormatError.new \ + 'package content (data.tar.gz) is missing', @gem ++ end ++ ++ if duplicates = @files.group_by {|f| f }.select {|k,v| v.size > 1 }.map(&:first) and duplicates.any? ++ raise Gem::Security::Exception, "duplicate files in the package: (#{duplicates.map(&:inspect).join(', ')})" + end + end + Index: lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_header_rb =================================================================== RCS file: lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_header_rb diff -N lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_header_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_header_rb 21 Feb 2018 17:35:10 -0000 @@ -0,0 +1,43 @@ +$OpenBSD$ + +Index: lib/rubygems/package/tar_header.rb +--- lib/rubygems/package/tar_header.rb.orig ++++ lib/rubygems/package/tar_header.rb +@@ -103,23 +103,28 @@ class Gem::Package::TarHeader + fields = header.unpack UNPACK_FORMAT + + new :name => fields.shift, +- :mode => fields.shift.oct, +- :uid => fields.shift.oct, +- :gid => fields.shift.oct, +- :size => fields.shift.oct, +- :mtime => fields.shift.oct, +- :checksum => fields.shift.oct, ++ :mode => strict_oct(fields.shift), ++ :uid => strict_oct(fields.shift), ++ :gid => strict_oct(fields.shift), ++ :size => strict_oct(fields.shift), ++ :mtime => strict_oct(fields.shift), ++ :checksum => strict_oct(fields.shift), + :typeflag => fields.shift, + :linkname => fields.shift, + :magic => fields.shift, +- :version => fields.shift.oct, ++ :version => strict_oct(fields.shift), + :uname => fields.shift, + :gname => fields.shift, +- :devmajor => fields.shift.oct, +- :devminor => fields.shift.oct, ++ :devmajor => strict_oct(fields.shift), ++ :devminor => strict_oct(fields.shift), + :prefix => fields.shift, + + :empty => empty ++ end ++ ++ def self.strict_oct(str) ++ return str.oct if str =~ /\A[0-7]*\z/ ++ raise ArgumentError, "#{str.inspect} is not an octal string" + end + + ## Index: lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_writer_rb =================================================================== RCS file: lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_writer_rb diff -N lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_writer_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/ruby/2.1/patches/patch-lib_rubygems_package_tar_writer_rb 21 Feb 2018 17:35:10 -0000 @@ -0,0 +1,14 @@ +$OpenBSD$ + +Index: lib/rubygems/package/tar_writer.rb +--- lib/rubygems/package/tar_writer.rb.orig ++++ lib/rubygems/package/tar_writer.rb +@@ -195,6 +195,8 @@ class Gem::Package::TarWriter + digest_name == signer.digest_name + end + ++ raise "no #{signer.digest_name} in #{digests.values.compact}" unless signature_digest ++ + if signer.key then + signature = signer.sign signature_digest.digest + Index: lang/ruby/2.1/patches/patch-lib_rubygems_server_rb =================================================================== RCS file: lang/ruby/2.1/patches/patch-lib_rubygems_server_rb diff -N lang/ruby/2.1/patches/patch-lib_rubygems_server_rb --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/ruby/2.1/patches/patch-lib_rubygems_server_rb 21 Feb 2018 17:35:10 -0000 @@ -0,0 +1,33 @@ +$OpenBSD$ + +Index: lib/rubygems/server.rb +--- lib/rubygems/server.rb.orig ++++ lib/rubygems/server.rb +@@ -595,6 +595,18 @@ div.method-source-code pre { color: #ffdead; overflow: + executables = nil if executables.empty? + executables.last["is_last"] = true if executables + ++ # Pre-process spec homepage for safety reasons ++ begin ++ homepage_uri = URI.parse(spec.homepage) ++ if [URI::HTTP, URI::HTTPS].member? homepage_uri.class ++ homepage_uri = spec.homepage ++ else ++ homepage_uri = "." ++ end ++ rescue URI::InvalidURIError ++ homepage_uri = "." ++ end ++ + specs << { + "authors" => spec.authors.sort.join(", "), + "date" => spec.date.to_s, +@@ -604,7 +616,7 @@ div.method-source-code pre { color: #ffdead; overflow: + "only_one_executable" => (executables && executables.size == 1), + "full_name" => spec.full_name, + "has_deps" => !deps.empty?, +- "homepage" => spec.homepage, ++ "homepage" => homepage_uri, + "name" => spec.name, + "rdoc_installed" => Gem::RDoc.new(spec).rdoc_installed?, + "ri_installed" => Gem::RDoc.new(spec).ri_installed?, Index: lang/ruby/2.1/patches/patch-lib_rubygems_specification_rb =================================================================== RCS file: /cvs/ports/lang/ruby/2.1/patches/Attic/patch-lib_rubygems_specification_rb,v retrieving revision 1.1.4.1 diff -u -p -u -p -r1.1.4.1 patch-lib_rubygems_specification_rb --- lang/ruby/2.1/patches/patch-lib_rubygems_specification_rb 18 Dec 2017 16:04:00 -0000 1.1.4.1 +++ lang/ruby/2.1/patches/patch-lib_rubygems_specification_rb 21 Feb 2018 17:35:10 -0000 @@ -3,7 +3,15 @@ $OpenBSD: patch-lib_rubygems_specificati Index: lib/rubygems/specification.rb --- lib/rubygems/specification.rb.orig +++ lib/rubygems/specification.rb -@@ -112,6 +112,8 @@ class Gem::Specification < Gem::BasicSpecification +@@ -13,6 +13,7 @@ require 'rubygems/deprecate' + require 'rubygems/basic_specification' + require 'rubygems/stub_specification' + require 'rubygems/util/stringio' ++require 'uri' + + # :stopdoc: + # date.rb can't be loaded for `make install` due to miniruby +@@ -112,6 +113,8 @@ class Gem::Specification < Gem::BasicSpecification private_constant :LOAD_CACHE if defined? private_constant @@ -12,7 +20,7 @@ Index: lib/rubygems/specification.rb # :startdoc: ## -@@ -973,7 +973,7 @@ class Gem::Specification < Gem::BasicSpecification +@@ -971,7 +974,7 @@ class Gem::Specification < Gem::BasicSpecification Gem.load_yaml input = normalize_yaml_input input @@ -21,7 +29,7 @@ Index: lib/rubygems/specification.rb if spec && spec.class == FalseClass then raise Gem::EndOfYAMLException -@@ -2435,9 +2437,15 @@ class Gem::Specification < Gem::BasicSpecification +@@ -2435,9 +2438,15 @@ class Gem::Specification < Gem::BasicSpecification end end @@ -39,3 +47,24 @@ Index: lib/rubygems/specification.rb end if @require_paths.empty? then +@@ -2559,10 +2568,16 @@ http://opensource.org/licenses/alphabetical + raise Gem::InvalidSpecificationException, "#{lazy} is not a summary" + end + +- if homepage and not homepage.empty? and +- homepage !~ /\A[a-z][a-z\d+.-]*:/i then +- raise Gem::InvalidSpecificationException, +- "\"#{homepage}\" is not a URI" ++ # Make sure a homepage is valid HTTP/HTTPS URI ++ if homepage and not homepage.empty? ++ begin ++ homepage_uri = URI.parse(homepage) ++ unless [URI::HTTP, URI::HTTPS].member? homepage_uri.class ++ raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a valid HTTP URI" ++ end ++ rescue URI::InvalidURIError ++ raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a valid HTTP URI" ++ end + end + + # Warnings Index: lang/ruby/2.2/Makefile =================================================================== RCS file: /cvs/ports/lang/ruby/2.2/Attic/Makefile,v retrieving revision 1.22.2.1 diff -u -p -u -p -r1.22.2.1 Makefile --- lang/ruby/2.2/Makefile 18 Dec 2017 16:04:00 -0000 1.22.2.1 +++ lang/ruby/2.2/Makefile 21 Feb 2018 17:35:10 -0000 @@ -18,6 +18,9 @@ PKGNAME-ri_docs = ruby22-ri_docs-${VERSI PKG_ARCH-ri_docs = * WANTLIB-ri_docs = # empty +REVISION-main = 0 +PATCHFILES = 7030/rubygems-276-for-ruby22.patch:0 + NEXTVER = 2.3 PKGSPEC-main = ruby->=${RUBYLIBREV},<${NEXTVER} Index: lang/ruby/2.2/distinfo =================================================================== RCS file: /cvs/ports/lang/ruby/2.2/Attic/distinfo,v retrieving revision 1.10.2.1 diff -u -p -u -p -r1.10.2.1 distinfo --- lang/ruby/2.2/distinfo 18 Dec 2017 16:04:00 -0000 1.10.2.1 +++ lang/ruby/2.2/distinfo 21 Feb 2018 17:35:10 -0000 @@ -1,2 +1,4 @@ +SHA256 (7030/rubygems-276-for-ruby22.patch) = 4ZLas06/Bq60tBnNjeYnadEchMRB3j+BNIlLvoZ5zaw= SHA256 (ruby-2.2.9.tar.gz) = L0fHcFT8QMz94iUBQlJW0yxPoMyvlVTw1pntQ2vsoaY= +SIZE (7030/rubygems-276-for-ruby22.patch) = 15888 SIZE (ruby-2.2.9.tar.gz) = 16681209 Index: lang/ruby/2.3/Makefile =================================================================== RCS file: /cvs/ports/lang/ruby/2.3/Makefile,v retrieving revision 1.19.2.1 diff -u -p -u -p -r1.19.2.1 Makefile --- lang/ruby/2.3/Makefile 18 Dec 2017 16:04:00 -0000 1.19.2.1 +++ lang/ruby/2.3/Makefile 21 Feb 2018 17:35:10 -0000 @@ -18,6 +18,9 @@ PKGNAME-ri_docs = ruby23-ri_docs-${VERSI PKG_ARCH-ri_docs = * WANTLIB-ri_docs = # empty +REVISION-main = 0 +PATCHFILES = 7029/rubygems-276-for-ruby23.patch:0 + NEXTVER = 2.4 PKGSPEC-main = ruby->=${RUBYLIBREV},<${NEXTVER} Index: lang/ruby/2.3/distinfo =================================================================== RCS file: /cvs/ports/lang/ruby/2.3/distinfo,v retrieving revision 1.7.2.1 diff -u -p -u -p -r1.7.2.1 distinfo --- lang/ruby/2.3/distinfo 18 Dec 2017 16:04:00 -0000 1.7.2.1 +++ lang/ruby/2.3/distinfo 21 Feb 2018 17:35:10 -0000 @@ -1,2 +1,4 @@ +SHA256 (7029/rubygems-276-for-ruby23.patch) = kTsC1B1w1gFAvNVd4XH3eN1ddBhrNq8cnpSy6beY870= SHA256 (ruby-2.3.6.tar.gz) = gyJRMnn57fphLURbwRGoeJT6wRKOqlOTAc6/wN1RVx4= +SIZE (7029/rubygems-276-for-ruby23.patch) = 19953 SIZE (ruby-2.3.6.tar.gz) = 17840901 Index: lang/ruby/2.4/Makefile =================================================================== RCS file: /cvs/ports/lang/ruby/2.4/Makefile,v retrieving revision 1.6.2.1 diff -u -p -u -p -r1.6.2.1 Makefile --- lang/ruby/2.4/Makefile 18 Dec 2017 16:04:00 -0000 1.6.2.1 +++ lang/ruby/2.4/Makefile 21 Feb 2018 17:35:10 -0000 @@ -16,6 +16,9 @@ PKGNAME-ri_docs = ruby24-ri_docs-${VERSI PKG_ARCH-ri_docs = * WANTLIB-ri_docs = # empty +REVISION-main = 0 +PATCHFILES = 7028/rubygems-276-for-ruby24.patch:0 + NEXTVER = 2.5 PKGSPEC-main = ruby->=${RUBYLIBREV},<${NEXTVER} Index: lang/ruby/2.4/distinfo =================================================================== RCS file: /cvs/ports/lang/ruby/2.4/distinfo,v retrieving revision 1.4.2.1 diff -u -p -u -p -r1.4.2.1 distinfo --- lang/ruby/2.4/distinfo 18 Dec 2017 16:04:00 -0000 1.4.2.1 +++ lang/ruby/2.4/distinfo 21 Feb 2018 17:35:10 -0000 @@ -1,2 +1,4 @@ +SHA256 (7028/rubygems-276-for-ruby24.patch) = TYGgDKgsEFw4cNLKqM5gujdvqGXoFwXRz6umv+t0bl4= SHA256 (ruby-2.4.3.tar.gz) = /QN1WCySBFqn0xhU5yRHH7Rp4RpLCP8zTTkFLMqqOpg= +SIZE (7028/rubygems-276-for-ruby24.patch) = 19937 SIZE (ruby-2.4.3.tar.gz) = 14178729