git: a1e6f9f31860 - main - lang/ruby33: Add new port

From: Yasuhiro Kimura <yasu_at_FreeBSD.org>
Date: Mon, 15 May 2023 05:33:24 UTC
The branch main has been updated by yasu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a1e6f9f318602d2566fa4194532c0f8b35c1d1f4

commit a1e6f9f318602d2566fa4194532c0f8b35c1d1f4
Author:     Yasuhiro Kimura <yasu@FreeBSD.org>
AuthorDate: 2023-05-12 12:19:23 +0000
Commit:     Yasuhiro Kimura <yasu@FreeBSD.org>
CommitDate: 2023-05-15 05:32:23 +0000

    lang/ruby33: Add new port
    
    Add preview1 of Ruby 3.3 series.
    
    ReleaseNotes:   https://www.ruby-lang.org/en/news/2023/05/12/ruby-3-3-0-preview1-released/
    PR:             271387
    Approved by:    meta (ruby@)
---
 Mk/Uses/ruby.mk                                    |    10 +-
 Mk/bsd.default-versions.mk                         |     2 +-
 lang/Makefile                                      |     1 +
 lang/ruby33/Makefile                               |   211 +
 lang/ruby33/distinfo                               |     3 +
 lang/ruby33/files/patch-configure.ac               |    36 +
 lang/ruby33/files/patch-lib_mkmf.rb                |    11 +
 .../files/patch-lib_rdoc_generator_json__index.rb  |    20 +
 lang/ruby33/files/patch-tool_mkconfig.rb           |    14 +
 lang/ruby33/files/patch-tool_rbinstall.rb          |   172 +
 lang/ruby33/pkg-descr                              |    17 +
 lang/ruby33/pkg-message                            |    37 +
 lang/ruby33/pkg-plist                              | 13787 +++++++++++++++++++
 13 files changed, 14319 insertions(+), 2 deletions(-)

diff --git a/Mk/Uses/ruby.mk b/Mk/Uses/ruby.mk
index af0b672c3043..69b44d398069 100644
--- a/Mk/Uses/ruby.mk
+++ b/Mk/Uses/ruby.mk
@@ -164,13 +164,20 @@ RUBY_PORTREVISION=	1
 RUBY_DISTVERSION=	3.2.2
 RUBY_PORTREVISION=	1
 
+.      elif ${RUBY_VER} == 3.3
+#
+# Ruby 3.2
+#
+RUBY_DISTVERSION=	3.3.0-preview1
+RUBY_PORTREVISION=	0
+
 # When adding a version, please keep the comment in
 # Mk/bsd.default-versions.mk in sync.
 .      else
 #
 # Other versions
 #
-IGNORE=	Only ruby 3.0, 3.1 and 3.2 are supported
+IGNORE=	Only ruby 3.0, 3.1, 3,2 and 3.3 are supported
 _INVALID_RUBY_VER=	1
 .      endif
 RUBY_PORTEPOCH=		1
@@ -182,6 +189,7 @@ RUBY_VERSION=	${RUBY_DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/}
 RUBY30?=		"@comment "
 RUBY31?=		"@comment "
 RUBY32?=		"@comment "
+RUBY33?=		"@comment "
 
 .      if defined(BROKEN_RUBY${RUBY_VER:R}${RUBY_VER:E})
 .        if ${BROKEN_RUBY${RUBY_VER:R}${RUBY_VER:E}} == "yes"
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index 36f1db62e49b..10d6be970fbf 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -126,7 +126,7 @@ PYTHON_DEFAULT?=	3.9
 PYTHON2_DEFAULT?=	2.7
 # Possible values: 3.7, 3.8, 3.9, 3.10, 3.11
 PYTHON3_DEFAULT?=	3.9
-# Possible values: 3.0, 3.1, 3.2
+# Possible values: 3.0, 3.1, 3.2, 3.3
 RUBY_DEFAULT?=		3.1
 # Possible values: rust, rust-nightly
 RUST_DEFAULT?=		rust
diff --git a/lang/Makefile b/lang/Makefile
index ab8700913696..4e10f6c1869e 100644
--- a/lang/Makefile
+++ b/lang/Makefile
@@ -312,6 +312,7 @@
     SUBDIR += ruby30
     SUBDIR += ruby31
     SUBDIR += ruby32
+    SUBDIR += ruby33
     SUBDIR += rubygem-ruby_language_server
     SUBDIR += runawk
     SUBDIR += rust
diff --git a/lang/ruby33/Makefile b/lang/ruby33/Makefile
new file mode 100644
index 000000000000..d63f4e413e08
--- /dev/null
+++ b/lang/ruby33/Makefile
@@ -0,0 +1,211 @@
+PORTNAME=	ruby
+DISTVERSION=	${RUBY_DISTVERSION}
+PORTREVISION=	${RUBY_PORTREVISION}
+PORTEPOCH=	${RUBY_PORTEPOCH}
+CATEGORIES=	lang ruby
+MASTER_SITES=	RUBY/${MASTER_SITE_SUBDIR_RUBY}
+DIST_SUBDIR=	ruby
+
+MAINTAINER=	ruby@FreeBSD.org
+COMMENT=	Object-oriented interpreted scripting language
+WWW=		https://www.ruby-lang.org/en/
+
+LICENSE=	BSD2CLAUSE RUBY
+LICENSE_COMB=	dual
+LICENSE_FILE_BSD2CLAUSE=	${WRKSRC}/BSDL
+LICENSE_FILE_RUBY=	${WRKSRC}/COPYING
+
+# Using LIB_DEPENDS finds the libffi from gcc which causes problems
+BUILD_DEPENDS=	libffi>=0:devel/libffi
+LIB_DEPENDS=	libyaml.so:textproc/libyaml
+RUN_DEPENDS=	libffi>=0:devel/libffi
+
+USES=		autoreconf cpe ruby:none ssl tar:xz
+CPE_VENDOR=	ruby-lang
+CPE_VERSION=	${RUBY_RELVERSION}
+CPE_UPDATE=	p${RUBY_PATCHLEVEL}
+USE_LDCONFIG=	yes
+
+GNU_CONFIGURE=	yes
+CONFIGURE_ARGS=	${RUBY_CONFIGURE_ARGS} \
+		--disable-rpath \
+		--enable-install-static-library \
+		--enable-pthread \
+		--enable-shared \
+		--with-ruby-version="${RUBY_VER}" \
+		--with-sitedir="${PREFIX}/lib/ruby/site_ruby" \
+		--with-vendordir="${PREFIX}/lib/ruby/vendor_ruby"
+CONFIGURE_ENV=	debugflags=
+
+CPPFLAGS+=	-I${LOCALBASE}/include
+# Keep this, else ruby will fail to load libraries dependent of libpthread.
+LIBS+=		-lpthread -L${LOCALBASE}/lib
+WRKSRC=		${RUBY_WRKSRC}
+
+RUBY_VER=	3.3
+
+OPTIONS_DEFINE=		CAPIDOCS DEBUG DOCS EXAMPLES GMP RDOC YJIT
+OPTIONS_DEFAULT=	RDOC
+OPTIONS_SUB=		yes
+
+CAPIDOCS_DESC=	Build and install C API documents
+GMP_DESC=	Use GMP to accelerate Bignum operations
+RDOC_DESC=	Build and install Rdoc indexes
+YJIT_DESC=	Enable YJIT (Yet Another Ruby JIT)
+
+CAPIDOCS_BUILD_DEPENDS=		dot:graphics/graphviz \
+				doxygen>=1.8.13,2:devel/doxygen
+CAPIDOCS_CONFIGURE_ENABLE=	install-capi
+GMP_LIB_DEPENDS=		libgmp.so:math/gmp
+GMP_CONFIGURE_WITH=		gmp
+RDOC_CONFIGURE_ENABLE=		install-rdoc
+YJIT_BUILD_DEPENDS=		${RUST_DEFAULT}>=1.58.0:lang/${RUST_DEFAULT}
+YJIT_CONFIGURE_ENABLE=		yjit
+
+.include <bsd.port.pre.mk>
+
+# PORTREVISION/PORTEPOCH hack
+
+.if ${PORTREVISION} != 0
+_SUF1=		_${PORTREVISION}
+.endif
+
+.if ${PORTEPOCH} != 0
+_SUF2=		,${PORTEPOCH}
+.endif
+
+#.if ${OPSYS} == "FreeBSD"
+#.if exists(/usr/sbin/dtrace) && (${ARCH} == amd64 || ${ARCH} == i386 || ${ARCH} == powerpc64le || ${ARCH} == powerpc64 || ${ARCH} == powerpc)
+#CONFIGURE_ARGS+=--enable-dtrace
+#.else
+#CONFIGURE_ARGS+=--disable-dtrace
+#.endif
+#.endif
+
+# keep in sync with all platforms where libunwind is available
+.if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH} == armv7 || ${ARCH} == \
+	i386 || ${ARCH} == powerpc || ${ARCH} == powerpc64 || ${ARCH} == powerpc64le
+LIB_DEPENDS+=	libunwind.so:devel/libunwind
+.endif
+
+.if defined(PPC_ABI) && ${PPC_ABI} == ELFv1
+USE_GCC=	yes
+.endif
+
+.if ${ARCH} == armv6 || ${ARCH} == armv7 || ${ARCH} == powerpc
+CONFIGURE_ARGS+=	--with-setjmp-type=_setjmp
+CONFIGURE_ENV+=		ac_cv_func__setjmp=yes
+.endif
+
+.if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
+PLIST_SUB+=	IF_DEFAULT=""
+.else
+PKGNAMESUFFIX=	${RUBY_SUFFIX}
+PLIST_SUB+=	IF_DEFAULT="@comment "
+.endif
+
+INSTALLED_SCRIPTS=	ruby
+INSTALLED_MANUALS=	ruby
+
+EXTSAMPLES=	bigdecimal/sample/*.rb
+
+EXTDOCS=	ripper/README stringio/README.md syslog/syslog.txt
+
+# Macros to change variables in rbconfig.rb
+RB_SET_CONF_VAR=	${SH} -c \
+			'${REINPLACE_CMD} -E -e "s,(CONFIG\[\"$$0\"\][[:space:]]*=[[:space:]]*)(\(?)(.*)(\)?),\1\2$$1\4," ${WRKSRC}/rbconfig.rb' \
+			--
+
+post-patch:
+# We get these from other ports
+.for d in bin/* ext/dbm ext/gdbm ext/win32* lib/bundler* libexec/bundler* \
+	man/bundle* man/erb.1 man/gemfile* man/irb.1 man/ri.1
+	@${RM} -r ${BUILD_WRKSRC}/${d}
+.endfor
+
+post-build:
+#
+# Hack to allow modules to be installed into separate PREFIX and/or under user
+# privileges
+#
+	@${RB_SET_CONF_VAR} "prefix" "ENV['PREFIX'] || \3"
+	@${RB_SET_CONF_VAR} "INSTALL" "'/usr/bin/install -c'"
+	@${RB_SET_CONF_VAR} "INSTALL_PROGRAM" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} ${STRIP} -m ${BINMODE}' : '${INSTALL_PROGRAM}'"
+	@${RB_SET_CONF_VAR} "INSTALL_SCRIPT" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} -m ${BINMODE}' : '${INSTALL_SCRIPT}'"
+	@${RB_SET_CONF_VAR} "INSTALL_DATA" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} -m ${SHAREMODE}' : '${INSTALL_DATA}'"
+
+post-build-CAPIDOCS-on:
+	@${FIND} ${WRKSRC}/doc -type d -empty -delete
+
+pre-install:
+	${MKDIR} ${STAGEDIR}${RUBY_SITEARCHLIBDIR}
+	${MKDIR} ${STAGEDIR}${RUBY_VENDORARCHLIBDIR}
+
+pre-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${RUBY_DOCDIR}
+
+pre-install-EXAMPLES-on:
+	${MKDIR} ${STAGEDIR}${RUBY_EXAMPLESDIR}
+
+pre-install-RDOC-on:
+	${MKDIR} ${STAGEDIR}${RUBY_RIDIR}
+	${MKDIR} ${STAGEDIR}${RUBY_SITERIDIR}
+
+post-install:
+.if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
+#
+# Link just installed "ruby" to "ruby31", etc.
+#
+. for FILE in ${INSTALLED_SCRIPTS}
+	${LN} -fs ${FILE}${RUBY_SUFFIX} ${STAGEDIR}${PREFIX}/bin/${FILE}
+. endfor
+#
+# Link "ruby.1.gz" to "ruby31.1.gz", etc.
+#
+. for FILE in ${INSTALLED_MANUALS}
+	${LN} -fs ${FILE}${RUBY_SUFFIX}.1.gz ${STAGEDIR}${MANPREFIX}/man/man1/${FILE}.1.gz
+. endfor
+.endif
+
+post-install-CAPIDOCS-on:
+	${RM} ${WRKSRC}/doc/capi/.timestamp ${STAGEDIR}${PREFIX}/share/doc/ruby${RUBY_SUFFIX}/capi/.timestamp
+	cd ${STAGEDIR}${PREFIX} && ${FIND} share/doc/ruby${RUBY_SUFFIX}/capi/ -type f >> ${TMPPLIST}
+
+post-install-DEBUG-off:
+#
+# XXX: hack to strip ruby binary. Ruby uses its own install script that seems
+# bogus to hack.
+#
+.if defined(STRIP) && ${STRIP} == -s
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ruby${RUBY_SUFFIX}
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libruby${RUBY_SHLIBVER}.so.${RUBY_SHLIBVER}
+	${FIND} ${STAGEDIR}${RUBY_ARCHLIBDIR} -type f -name '*\.so' -exec ${STRIP_CMD} {} \;
+.endif
+
+post-install-DOCS-on:
+# Create all dirs required (":u" isn't available in STABLE yet :-()
+	${MKDIR} ${EXTDOCS:C|^([^/]+)/.*|\1|:S|^|${STAGEDIR}${RUBY_DOCDIR}/|}
+.for FILE in ${EXTDOCS}
+	${INSTALL_DATA} ${WRKSRC}/ext/${FILE} \
+		${STAGEDIR}${RUBY_DOCDIR}/${FILE:C|^([^/]+)/.*|\1|}/
+.endfor
+	@(cd ${WRKSRC}/doc/ && ${COPYTREE_SHARE} \* ${STAGEDIR}${RUBY_DOCDIR}/)
+	${INSTALL_DATA} ${WRKSRC}/COPYING*	\
+			${WRKSRC}/ChangeLog	\
+			${WRKSRC}/LEGAL		\
+			${WRKSRC}/README*	\
+			${STAGEDIR}${RUBY_DOCDIR}/
+
+post-install-EXAMPLES-on:
+# Create all dirs required (":u" isn't available in STABLE yet :-()
+	${MKDIR} ${EXTSAMPLES:C|^([^/]+)/.*|\1|:S|^|${STAGEDIR}${RUBY_EXAMPLESDIR}/|}
+.for FILE in ${EXTSAMPLES}
+	${INSTALL_DATA} ${WRKSRC}/ext/${FILE} \
+		${STAGEDIR}${RUBY_EXAMPLESDIR}/${FILE:C|^([^/]+)/.*|\1|}/
+.endfor
+	(cd ${WRKSRC}/sample/ && ${COPYTREE_SHARE} . ${STAGEDIR}${RUBY_EXAMPLESDIR}/)
+
+do-test:
+	cd ${WRKSRC} && ${MAKE_CMD} test
+
+.include <bsd.port.post.mk>
diff --git a/lang/ruby33/distinfo b/lang/ruby33/distinfo
new file mode 100644
index 000000000000..d59222a4ec84
--- /dev/null
+++ b/lang/ruby33/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1683894232
+SHA256 (ruby/ruby-3.3.0-preview1.tar.xz) = ae300b49e06c13087dd163b97eddd38db895dc8e0c9904284119795d75303fbb
+SIZE (ruby/ruby-3.3.0-preview1.tar.xz) = 15074600
diff --git a/lang/ruby33/files/patch-configure.ac b/lang/ruby33/files/patch-configure.ac
new file mode 100644
index 000000000000..e4be99dafceb
--- /dev/null
+++ b/lang/ruby33/files/patch-configure.ac
@@ -0,0 +1,36 @@
+--- configure.ac.orig	2023-05-12 09:25:10 UTC
++++ configure.ac
+@@ -1342,7 +1342,7 @@ AC_CHECK_HEADERS(syscall.h)
+ AC_CHECK_HEADERS(time.h)
+ AC_CHECK_HEADERS(ucontext.h)
+ AC_CHECK_HEADERS(utime.h)
+-AS_CASE("$target_cpu", [x64|x86_64|i[3-6]86*], [
++AS_CASE("$target_cpu", [amd64|x64|x86_64|i[3-6]86*], [
+   AC_CHECK_HEADERS(x86intrin.h)
+ ])
+ RUBY_UNIVERSAL_CHECK_HEADER([x86_64, i386], x86intrin.h)
+@@ -3056,7 +3056,7 @@ AC_SUBST(EXTOBJS)
+ 			: ${LDSHARED='$(CC) -shared'}
+ 			AS_IF([test "$rb_cv_binary_elf" = yes], [
+ 			    LDFLAGS="$LDFLAGS -rdynamic"
+-			    DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$@'
++			    DLDFLAGS="$DLDFLAGS "'-Wl,-E'
+ 			], [
+ 			  test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
+ 			])
+@@ -3515,6 +3515,7 @@ AS_CASE("$enable_shared", [yes], [
+     [freebsd*|dragonfly*], [
+ 	LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
+ 	LIBRUBY_SONAME='$(LIBRUBY_SO)'
++	RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,${LIBRUBY_SO}'])
+ 	AS_IF([test "$rb_cv_binary_elf" != "yes" ], [
+ 	    LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)"
+ 	    LIBRUBY_ALIASES=''
+@@ -4325,6 +4326,7 @@ AS_IF([test "${universal_binary-no}" = yes ], [
+         arch="${target_cpu}-mingw-ucrt"
+     ], [
+         arch="${target_cpu}-${target_os}"
++	AS_CASE(["$target_cpu-$target_os"], [x86_64-freebsd*],[arch=amd64-${target_os}])
+     ])
+     AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "$arch")
+ ])
diff --git a/lang/ruby33/files/patch-lib_mkmf.rb b/lang/ruby33/files/patch-lib_mkmf.rb
new file mode 100644
index 000000000000..bc9be47fbaad
--- /dev/null
+++ b/lang/ruby33/files/patch-lib_mkmf.rb
@@ -0,0 +1,11 @@
+--- lib/mkmf.rb.orig	2023-05-12 09:25:10 UTC
++++ lib/mkmf.rb
+@@ -222,7 +222,7 @@ module MakeMakefile
+   end
+   $extmk ||= false
+   if not $extmk and File.exist?(($hdrdir = RbConfig::CONFIG["rubyhdrdir"]) + "/ruby/ruby.h")
+-    $topdir = $hdrdir
++    $topdir = $hdrdir + "/" + "#{CONFIG['arch']}/ruby/"
+     $top_srcdir = $hdrdir
+     $arch_hdrdir = RbConfig::CONFIG["rubyarchhdrdir"]
+   elsif File.exist?(($hdrdir = ($top_srcdir ||= topdir) + "/include")  + "/ruby.h")
diff --git a/lang/ruby33/files/patch-lib_rdoc_generator_json__index.rb b/lang/ruby33/files/patch-lib_rdoc_generator_json__index.rb
new file mode 100644
index 000000000000..7f6277092c56
--- /dev/null
+++ b/lang/ruby33/files/patch-lib_rdoc_generator_json__index.rb
@@ -0,0 +1,20 @@
+--- lib/rdoc/generator/json_index.rb.orig	2023-05-12 09:25:10 UTC
++++ lib/rdoc/generator/json_index.rb
+@@ -178,7 +178,7 @@ class RDoc::Generator::JsonIndex
+     debug_msg "Writing gzipped search index to %s" % outfile
+ 
+     Zlib::GzipWriter.open(outfile) do |gz|
+-      gz.mtime = File.mtime(search_index_file)
++      gz.mtime = 1
+       gz.orig_name = search_index_file.basename.to_s
+       gz.write search_index
+       gz.close
+@@ -196,7 +196,7 @@ class RDoc::Generator::JsonIndex
+         debug_msg "Writing gzipped file to %s" % outfile
+ 
+         Zlib::GzipWriter.open(outfile) do |gz|
+-          gz.mtime = File.mtime(dest)
++          gz.mtime = 1
+           gz.orig_name = dest.basename.to_s
+           gz.write data
+           gz.close
diff --git a/lang/ruby33/files/patch-tool_mkconfig.rb b/lang/ruby33/files/patch-tool_mkconfig.rb
new file mode 100644
index 000000000000..0ae0d3482f7d
--- /dev/null
+++ b/lang/ruby33/files/patch-tool_mkconfig.rb
@@ -0,0 +1,14 @@
+--- tool/mkconfig.rb.orig	2023-05-12 09:25:10 UTC
++++ tool/mkconfig.rb
+@@ -169,8 +169,9 @@ def vars.expand(val, config = self)
+   val.replace(newval) unless newval == val
+   val
+ end
+-prefix = vars.expand(vars["prefix"] ||= "")
+-rubyarchdir = vars.expand(vars["rubyarchdir"] ||= "")
++prefix = vars.expand(vars["rubyarchdir"])
++major, minor, *rest = RUBY_VERSION.split('.')
++rubyarchdir = "/lib/ruby/#{major}.#{minor}/#{arch}"
+ relative_archdir = rubyarchdir.rindex(prefix, 0) ? rubyarchdir[prefix.size..-1] : rubyarchdir
+ 
+ puts %[\
diff --git a/lang/ruby33/files/patch-tool_rbinstall.rb b/lang/ruby33/files/patch-tool_rbinstall.rb
new file mode 100644
index 000000000000..2afb8e198290
--- /dev/null
+++ b/lang/ruby33/files/patch-tool_rbinstall.rb
@@ -0,0 +1,172 @@
+--- tool/rbinstall.rb.orig	2023-05-12 09:25:10 UTC
++++ tool/rbinstall.rb
+@@ -909,169 +909,6 @@ end
+ 
+ # :startdoc:
+ 
+-install?(:ext, :comm, :gem, :'default-gems', :'default-gems-comm') do
+-  install_default_gem('lib', srcdir, bindir)
+-end
+-install?(:ext, :arch, :gem, :'default-gems', :'default-gems-arch') do
+-  install_default_gem('ext', srcdir, bindir)
+-end
+-
+-def load_gemspec(file, base = nil)
+-  file = File.realpath(file)
+-  code = File.read(file, encoding: "utf-8:-")
+-  code.gsub!(/(?:`git[^\`]*`|%x\[git[^\]]*\])\.split\([^\)]*\)/m) do
+-    files = []
+-    if base
+-      Dir.glob("**/*", File::FNM_DOTMATCH, base: base) do |n|
+-        case File.basename(n); when ".", ".."; next; end
+-        next if File.directory?(File.join(base, n))
+-        files << n.dump
+-      end
+-    end
+-    "[" + files.join(", ") + "]"
+-  end
+-  spec = eval(code, binding, file)
+-  unless Gem::Specification === spec
+-    raise TypeError, "[#{file}] isn't a Gem::Specification (#{spec.class} instead)."
+-  end
+-  spec.loaded_from = base ? File.join(base, File.basename(file)) : file
+-  spec.files.reject! {|n| n.end_with?(".gemspec") or n.start_with?(".git")}
+-  spec.date = RUBY_RELEASE_DATE
+-
+-  spec
+-end
+-
+-def install_default_gem(dir, srcdir, bindir)
+-  gem_dir = Gem.default_dir
+-  install_dir = with_destdir(gem_dir)
+-  prepare "default gems from #{dir}", gem_dir
+-  RbInstall.no_write do
+-    makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
+-  end
+-
+-  options = {
+-    :install_dir => with_destdir(gem_dir),
+-    :bin_dir => with_destdir(bindir),
+-    :ignore_dependencies => true,
+-    :dir_mode => $dir_mode,
+-    :data_mode => $data_mode,
+-    :prog_mode => $script_mode,
+-    :wrappers => true,
+-    :format_executable => true,
+-    :install_as_default => true,
+-  }
+-  default_spec_dir = Gem.default_specifications_dir
+-
+-  base = "#{srcdir}/#{dir}"
+-  gems = Dir.glob("**/*.gemspec", base: base).map {|src|
+-    spec = load_gemspec("#{base}/#{src}")
+-    file_collector = RbInstall::Specs::FileCollector.for(srcdir, dir, src)
+-    files = file_collector.collect
+-    if file_collector.skip_install?(files)
+-      next
+-    end
+-    spec.files = files
+-    spec
+-  }
+-  gems.compact.sort_by(&:name).each do |gemspec|
+-    old_gemspecs = Dir[File.join(with_destdir(default_spec_dir), "#{gemspec.name}-*.gemspec")]
+-    if old_gemspecs.size > 0
+-      old_gemspecs.each {|spec| rm spec }
+-    end
+-
+-    full_name = "#{gemspec.name}-#{gemspec.version}"
+-
+-    gemspec.loaded_from = File.join srcdir, gemspec.spec_name
+-
+-    package = RbInstall::DirPackage.new gemspec, {gemspec.bindir => 'libexec'}
+-    ins = RbInstall::UnpackedInstaller.new(package, options)
+-    puts "#{INDENT}#{gemspec.name} #{gemspec.version}"
+-    ins.install
+-  end
+-end
+-
+-install?(:ext, :comm, :gem, :'bundled-gems') do
+-  gem_dir = Gem.default_dir
+-  install_dir = with_destdir(gem_dir)
+-  prepare "bundled gems", gem_dir
+-  RbInstall.no_write do
+-    makedirs(Gem.ensure_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
+-  end
+-
+-  installed_gems = {}
+-  skipped = {}
+-  options = {
+-    :install_dir => install_dir,
+-    :bin_dir => with_destdir(bindir),
+-    :domain => :local,
+-    :ignore_dependencies => true,
+-    :dir_mode => $dir_mode,
+-    :data_mode => $data_mode,
+-    :prog_mode => $script_mode,
+-    :wrappers => true,
+-    :format_executable => true,
+-  }
+-
+-  extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir
+-  specifications_dir = File.join(gem_dir, "specifications")
+-  build_dir = Gem::StubSpecification.gemspec_stub("", ".bundle", ".bundle").extensions_dir
+-
+-  # We are about to build extensions, and want to configure extensions with the
+-  # newly installed ruby.
+-  Gem.instance_variable_set(:@ruby, with_destdir(File.join(bindir, ruby_install_name)))
+-  # Prevent fake.rb propagation. It conflicts with the natural mkmf configs of
+-  # the newly installed ruby.
+-  ENV.delete('RUBYOPT')
+-
+-  File.foreach("#{srcdir}/gems/bundled_gems") do |name|
+-    next if /^\s*(?:#|$)/ =~ name
+-    next unless /^(\S+)\s+(\S+).*/ =~ name
+-    gem_name = "#$1-#$2"
+-    # Try to find the gemspec file for C ext gems
+-    # ex .bundle/gems/debug-1.7.1/debug-1.7.1.gemspec
+-    # This gemspec keep the original dependencies
+-    path = "#{srcdir}/.bundle/gems/#{gem_name}/#{gem_name}.gemspec"
+-    unless File.exist?(path)
+-      path = "#{srcdir}/.bundle/specifications/#{gem_name}.gemspec"
+-      unless File.exist?(path)
+-         skipped[gem_name] = "gemspec not found"
+-         next
+-      end
+-    end
+-    spec = load_gemspec(path, "#{srcdir}/.bundle/gems/#{gem_name}")
+-    unless spec.platform == Gem::Platform::RUBY
+-      skipped[gem_name] = "not ruby platform (#{spec.platform})"
+-      next
+-    end
+-    unless spec.full_name == gem_name
+-      skipped[gem_name] = "full name unmatch #{spec.full_name}"
+-      next
+-    end
+-    spec.extension_dir = "#{extensions_dir}/#{spec.full_name}"
+-    package = RbInstall::DirPackage.new spec
+-    ins = RbInstall::UnpackedInstaller.new(package, options)
+-    puts "#{INDENT}#{spec.name} #{spec.version}"
+-    ins.install
+-    install_recursive("#{build_dir}/#{gem_name}", "#{extensions_dir}/#{gem_name}") do |src, dest|
+-      # puts "#{INDENT}    #{dest[extensions_dir.size+gem_name.size+2..-1]}"
+-      install src, dest, :mode => (File.executable?(src) ? $prog_mode : $data_mode)
+-    end
+-    installed_gems[spec.full_name] = true
+-  end
+-  installed_gems, gems = Dir.glob(srcdir+'/gems/*.gem').partition {|gem| installed_gems.key?(File.basename(gem, '.gem'))}
+-  unless installed_gems.empty?
+-    prepare "bundled gem cache", gem_dir+"/cache"
+-    install installed_gems, gem_dir+"/cache"
+-  end
+-  unless gems.empty?
+-    skipped.default = "not found in bundled_gems"
+-    puts "skipped bundled gems:"
+-    gems.each do |gem|
+-      printf "    %-32s%s\n", File.basename(gem), skipped[gem]
+-    end
+-  end
+-end
+-
+ parse_args()
+ 
+ include FileUtils
diff --git a/lang/ruby33/pkg-descr b/lang/ruby33/pkg-descr
new file mode 100644
index 000000000000..a537df18eb88
--- /dev/null
+++ b/lang/ruby33/pkg-descr
@@ -0,0 +1,17 @@
+Ruby is the interpreted scripting language for quick and
+easy object-oriented programming.  It has many features to
+process text files and to do system management tasks (as in
+Perl).  It is simple, straight-forward, and extensible.
+
+Features of Ruby are shown below.
+
+  + Simple Syntax
+  + *Normal* Object-Oriented features(ex. class, method calls)
+  + *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method)
+  + Operator Overloading
+  + Exception Handling
+  + Iterators and Closures
+  + Garbage Collection
+  + Dynamic Loading of Object files(on some architecture)
+  + Highly Portable(works on many UNIX machines, and on DOS,
+    Windows, Mac, BeOS etc.)
diff --git a/lang/ruby33/pkg-message b/lang/ruby33/pkg-message
new file mode 100644
index 000000000000..d1c7209d19ff
--- /dev/null
+++ b/lang/ruby33/pkg-message
@@ -0,0 +1,37 @@
+[
+{ type: install
+  message: <<EOM
+Some of the standard commands and libraries are provided as separate
+ports for ease of upgrading:
+
+	devel/ruby-gems:		gem - RubyGems package manager
+	devel/rubygem-debug:		debug - Debugging functionality for Ruby
+	devel/rubygem-erb:		erb - Templating system for Ruby
+	devel/rubygem-irb:		irb - Interactive Ruby
+	devel/rubygem-minitest:		minitest - Complete suite of testing facilities
+	devel/rubygem-power_assert:	power_assert - Power Assert for Ruby
+	devel/rubygem-rake:		rake - Ruby Make
+	devel/rubygem-rbs:		rbs - Language for type signatures for Ruby and standard library definitions
+	devel/rubygem-rdoc:		rdoc - Ruby Documentation System
+	devel/rubygem-test-unit:	test-unit - Unit testing framework for Ruby
+	devel/rubygem-typeprof:		typeprof - Type analysis tool for Ruby code
+	ftp/rubygem-net-ftp:		net-ftp - Support for the File Transfer Protocol
+	mail/rubygem-net-imap:		net-imap - Ruby client api for Internet Message Access Protocol
+	mail/rubygem-net-pop:		net-pop - Ruby client library for POP3
+	mail/rubygem-net-smtp:		net-smtp - Simple Mail Transfer Protocol client library for Ruby
+	math/rubygem-matrix:		matrix - Implementation of Matrix and Vector classes
+	math/rubygem-prime:		prime - Prime numbers and factorization library
+	sysutils/rubygem-bundler:	bundler - Tool that manages gem dependencies for ruby applications
+	textproc/rubygem-rexml:		rexml - XML toolkit for Ruby
+	www/rubygem-rss:		rss - Family of libraries that support various formats of XML "feeds"
+
+And some of the standard libraries are provided as separate ports
+since they require extra dependencies:
+
+	databases/rubygem-dbm:	DBM module
+	databases/rubygem-gdbm:	GDBM module
+
+Install them as occasion demands.
+EOM
+}
+]
diff --git a/lang/ruby33/pkg-plist b/lang/ruby33/pkg-plist
new file mode 100644
index 000000000000..beed055426d2
--- /dev/null
+++ b/lang/ruby33/pkg-plist
@@ -0,0 +1,13787 @@
+%%IF_DEFAULT%%bin/ruby
+bin/ruby%%RUBY_SUFFIX%%
+include/ruby-%%RUBY_VER%%/%%RUBY_ARCH%%/ruby/config.h
+include/ruby-%%RUBY_VER%%/ruby.h
+include/ruby-%%RUBY_VER%%/ruby/assert.h
+include/ruby-%%RUBY_VER%%/ruby/atomic.h
+include/ruby-%%RUBY_VER%%/ruby/backward.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/assume.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/attributes.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/bool.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/gcc_version_since.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/inttypes.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/limits.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/long_long.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/r_cast.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/rmodule.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/stdalign.h
+include/ruby-%%RUBY_VER%%/ruby/backward/2/stdarg.h
+include/ruby-%%RUBY_VER%%/ruby/backward/cxxanyargs.hpp
+include/ruby-%%RUBY_VER%%/ruby/debug.h
+include/ruby-%%RUBY_VER%%/ruby/defines.h
+include/ruby-%%RUBY_VER%%/ruby/digest.h
+include/ruby-%%RUBY_VER%%/ruby/encoding.h
+include/ruby-%%RUBY_VER%%/ruby/fiber/scheduler.h
+include/ruby-%%RUBY_VER%%/ruby/intern.h
+include/ruby-%%RUBY_VER%%/ruby/internal/abi.h
+include/ruby-%%RUBY_VER%%/ruby/internal/anyargs.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/char.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/double.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/fixnum.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/gid_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/int.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/intptr_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/long.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/long_long.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/mode_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/off_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/pid_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/short.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/size_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/st_data_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/arithmetic/uid_t.h
+include/ruby-%%RUBY_VER%%/ruby/internal/assume.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/alloc_size.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/artificial.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/cold.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/const.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/constexpr.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/deprecated.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/diagnose_if.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/enum_extensibility.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/error.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/flag_enum.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/forceinline.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/format.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/maybe_unused.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/noalias.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/nodiscard.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/noexcept.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/noinline.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/nonnull.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/noreturn.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/packed_struct.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/pure.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/restrict.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/returns_nonnull.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/warning.h
+include/ruby-%%RUBY_VER%%/ruby/internal/attr/weakref.h
+include/ruby-%%RUBY_VER%%/ruby/internal/cast.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_is.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_is/apple.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_is/clang.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_is/gcc.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_is/intel.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_is/msvc.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_is/sunpro.h
+include/ruby-%%RUBY_VER%%/ruby/internal/compiler_since.h
+include/ruby-%%RUBY_VER%%/ruby/internal/config.h
+include/ruby-%%RUBY_VER%%/ruby/internal/constant_p.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rarray.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rbasic.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rbignum.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rclass.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rdata.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rfile.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rhash.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rmatch.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/robject.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rregexp.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rstring.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rstruct.h
+include/ruby-%%RUBY_VER%%/ruby/internal/core/rtypeddata.h
+include/ruby-%%RUBY_VER%%/ruby/internal/ctype.h
+include/ruby-%%RUBY_VER%%/ruby/internal/dllexport.h
+include/ruby-%%RUBY_VER%%/ruby/internal/dosish.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/coderange.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/ctype.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/encoding.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/pathname.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/re.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/sprintf.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/string.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/symbol.h
+include/ruby-%%RUBY_VER%%/ruby/internal/encoding/transcode.h
+include/ruby-%%RUBY_VER%%/ruby/internal/error.h
+include/ruby-%%RUBY_VER%%/ruby/internal/eval.h
+include/ruby-%%RUBY_VER%%/ruby/internal/event.h
+include/ruby-%%RUBY_VER%%/ruby/internal/fl_type.h
+include/ruby-%%RUBY_VER%%/ruby/internal/gc.h
+include/ruby-%%RUBY_VER%%/ruby/internal/glob.h
+include/ruby-%%RUBY_VER%%/ruby/internal/globals.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/attribute.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/builtin.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/c_attribute.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/cpp_attribute.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/declspec_attribute.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/extension.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/feature.h
+include/ruby-%%RUBY_VER%%/ruby/internal/has/warning.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/array.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/bignum.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/class.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/compar.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/complex.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/cont.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/dir.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/enum.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/enumerator.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/error.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/eval.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/file.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/hash.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/io.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/load.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/marshal.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/numeric.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/object.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/parse.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/proc.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/process.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/random.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/range.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/rational.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/re.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/ruby.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/select.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/select/largesize.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/select/posix.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/signal.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/sprintf.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/string.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/struct.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/thread.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/time.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/variable.h
+include/ruby-%%RUBY_VER%%/ruby/internal/intern/vm.h
+include/ruby-%%RUBY_VER%%/ruby/internal/interpreter.h
+include/ruby-%%RUBY_VER%%/ruby/internal/iterator.h
+include/ruby-%%RUBY_VER%%/ruby/internal/memory.h
+include/ruby-%%RUBY_VER%%/ruby/internal/method.h
+include/ruby-%%RUBY_VER%%/ruby/internal/module.h
+include/ruby-%%RUBY_VER%%/ruby/internal/newobj.h
+include/ruby-%%RUBY_VER%%/ruby/internal/scan_args.h
+include/ruby-%%RUBY_VER%%/ruby/internal/special_consts.h
+include/ruby-%%RUBY_VER%%/ruby/internal/static_assert.h
+include/ruby-%%RUBY_VER%%/ruby/internal/stdalign.h
+include/ruby-%%RUBY_VER%%/ruby/internal/stdbool.h
+include/ruby-%%RUBY_VER%%/ruby/internal/symbol.h
+include/ruby-%%RUBY_VER%%/ruby/internal/value.h
+include/ruby-%%RUBY_VER%%/ruby/internal/value_type.h
+include/ruby-%%RUBY_VER%%/ruby/internal/variable.h
+include/ruby-%%RUBY_VER%%/ruby/internal/warning_push.h
+include/ruby-%%RUBY_VER%%/ruby/internal/xmalloc.h
+include/ruby-%%RUBY_VER%%/ruby/io.h
+include/ruby-%%RUBY_VER%%/ruby/io/buffer.h
+include/ruby-%%RUBY_VER%%/ruby/memory_view.h
+include/ruby-%%RUBY_VER%%/ruby/missing.h
+include/ruby-%%RUBY_VER%%/ruby/onigmo.h
+include/ruby-%%RUBY_VER%%/ruby/oniguruma.h
+include/ruby-%%RUBY_VER%%/ruby/ractor.h
+include/ruby-%%RUBY_VER%%/ruby/random.h
+include/ruby-%%RUBY_VER%%/ruby/re.h
+include/ruby-%%RUBY_VER%%/ruby/regex.h
+include/ruby-%%RUBY_VER%%/ruby/ruby.h
+include/ruby-%%RUBY_VER%%/ruby/st.h
+include/ruby-%%RUBY_VER%%/ruby/subst.h
+include/ruby-%%RUBY_VER%%/ruby/thread.h
+include/ruby-%%RUBY_VER%%/ruby/thread_native.h
+include/ruby-%%RUBY_VER%%/ruby/util.h
+include/ruby-%%RUBY_VER%%/ruby/version.h
+include/ruby-%%RUBY_VER%%/ruby/vm.h
+lib/libruby%%RUBY_SHLIBVER%%-static.a
+lib/libruby%%RUBY_SHLIBVER%%.so
+lib/libruby%%RUBY_SHLIBVER%%.so.%%RUBY_SHLIBVER%%
+%%RUBY_LIBDIR%%/English.rb
+%%RUBY_LIBDIR%%/abbrev.rb
+%%RUBY_ARCHLIBDIR%%/bigdecimal.so
+%%RUBY_ARCHLIBDIR%%/cgi/escape.so
+%%RUBY_ARCHLIBDIR%%/continuation.so
+%%RUBY_ARCHLIBDIR%%/coverage.so
+%%RUBY_ARCHLIBDIR%%/date_core.so
+%%RUBY_ARCHLIBDIR%%/digest.so
+%%RUBY_ARCHLIBDIR%%/digest/bubblebabble.so
+%%RUBY_ARCHLIBDIR%%/digest/md5.so
+%%RUBY_ARCHLIBDIR%%/digest/rmd160.so
+%%RUBY_ARCHLIBDIR%%/digest/sha1.so
+%%RUBY_ARCHLIBDIR%%/digest/sha2.so
+%%RUBY_ARCHLIBDIR%%/enc/big5.so
+%%RUBY_ARCHLIBDIR%%/enc/cesu_8.so
+%%RUBY_ARCHLIBDIR%%/enc/cp949.so
+%%RUBY_ARCHLIBDIR%%/enc/emacs_mule.so
+%%RUBY_ARCHLIBDIR%%/enc/encdb.so
+%%RUBY_ARCHLIBDIR%%/enc/euc_jp.so
+%%RUBY_ARCHLIBDIR%%/enc/euc_kr.so
+%%RUBY_ARCHLIBDIR%%/enc/euc_tw.so
+%%RUBY_ARCHLIBDIR%%/enc/gb18030.so
+%%RUBY_ARCHLIBDIR%%/enc/gb2312.so
+%%RUBY_ARCHLIBDIR%%/enc/gbk.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_1.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_10.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_11.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_13.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_14.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_15.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_16.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_2.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_3.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_4.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_5.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_6.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_7.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_8.so
+%%RUBY_ARCHLIBDIR%%/enc/iso_8859_9.so
+%%RUBY_ARCHLIBDIR%%/enc/koi8_r.so
+%%RUBY_ARCHLIBDIR%%/enc/koi8_u.so
+%%RUBY_ARCHLIBDIR%%/enc/shift_jis.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/big5.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/cesu_8.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/chinese.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/ebcdic.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/emoji.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/emoji_iso2022_kddi.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/emoji_sjis_docomo.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/emoji_sjis_kddi.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/emoji_sjis_softbank.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/escape.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/gb18030.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/gbk.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/iso2022.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/japanese.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/japanese_euc.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/japanese_sjis.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/korean.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/single_byte.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/transdb.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/utf8_mac.so
+%%RUBY_ARCHLIBDIR%%/enc/trans/utf_16_32.so
+%%RUBY_ARCHLIBDIR%%/enc/utf_16be.so
+%%RUBY_ARCHLIBDIR%%/enc/utf_16le.so
+%%RUBY_ARCHLIBDIR%%/enc/utf_32be.so
+%%RUBY_ARCHLIBDIR%%/enc/utf_32le.so
+%%RUBY_ARCHLIBDIR%%/enc/windows_1250.so
+%%RUBY_ARCHLIBDIR%%/enc/windows_1251.so
+%%RUBY_ARCHLIBDIR%%/enc/windows_1252.so
+%%RUBY_ARCHLIBDIR%%/enc/windows_1253.so
+%%RUBY_ARCHLIBDIR%%/enc/windows_1254.so
+%%RUBY_ARCHLIBDIR%%/enc/windows_1257.so
+%%RUBY_ARCHLIBDIR%%/enc/windows_31j.so
+%%RUBY_ARCHLIBDIR%%/erb/escape.so
+%%RUBY_ARCHLIBDIR%%/etc.so
+%%RUBY_ARCHLIBDIR%%/fcntl.so
+%%RUBY_ARCHLIBDIR%%/fiddle.so
+%%RUBY_ARCHLIBDIR%%/io/console.so
+%%RUBY_ARCHLIBDIR%%/io/nonblock.so
+%%RUBY_ARCHLIBDIR%%/io/wait.so
+%%RUBY_ARCHLIBDIR%%/json/ext/generator.so
+%%RUBY_ARCHLIBDIR%%/json/ext/parser.so
+%%RUBY_ARCHLIBDIR%%/monitor.so
+%%RUBY_ARCHLIBDIR%%/nkf.so
+%%RUBY_ARCHLIBDIR%%/objspace.so
+%%RUBY_ARCHLIBDIR%%/openssl.so
+%%RUBY_ARCHLIBDIR%%/pathname.so
+%%RUBY_ARCHLIBDIR%%/psych.so
+%%RUBY_ARCHLIBDIR%%/pty.so
+%%RUBY_ARCHLIBDIR%%/racc/cparse.so
+%%RUBY_ARCHLIBDIR%%/rbconfig.rb
+%%RUBY_ARCHLIBDIR%%/rbconfig/sizeof.so
+%%RUBY_ARCHLIBDIR%%/ripper.so
+%%RUBY_ARCHLIBDIR%%/socket.so
+%%RUBY_ARCHLIBDIR%%/stringio.so
+%%RUBY_ARCHLIBDIR%%/strscan.so
+%%RUBY_ARCHLIBDIR%%/syslog.so
+%%RUBY_ARCHLIBDIR%%/zlib.so
+%%RUBY_LIBDIR%%/base64.rb
+%%RUBY_LIBDIR%%/benchmark.rb
+%%RUBY_LIBDIR%%/benchmark/version.rb
+%%RUBY_LIBDIR%%/bigdecimal.rb
+%%RUBY_LIBDIR%%/bigdecimal/jacobian.rb
+%%RUBY_LIBDIR%%/bigdecimal/ludcmp.rb
+%%RUBY_LIBDIR%%/bigdecimal/math.rb
+%%RUBY_LIBDIR%%/bigdecimal/newton.rb
+%%RUBY_LIBDIR%%/bigdecimal/util.rb
+%%RUBY_LIBDIR%%/cgi.rb
+%%RUBY_LIBDIR%%/cgi/cookie.rb
+%%RUBY_LIBDIR%%/cgi/core.rb
+%%RUBY_LIBDIR%%/cgi/html.rb
+%%RUBY_LIBDIR%%/cgi/session.rb
+%%RUBY_LIBDIR%%/cgi/session/pstore.rb
+%%RUBY_LIBDIR%%/cgi/util.rb
+%%RUBY_LIBDIR%%/coverage.rb
+%%RUBY_LIBDIR%%/csv.rb
+%%RUBY_LIBDIR%%/csv/core_ext/array.rb
*** 13473 LINES SKIPPED ***