<pre style='margin:0'>
kimura wataru (kimuraw) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/f5ed23cd1b62ada69f98a5bd262f702e783f5cc7">https://github.com/macports/macports-ports/commit/f5ed23cd1b62ada69f98a5bd262f702e783f5cc7</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new f5ed23cd1b6 ruby-devel: new port (latest Ruby), supports PPC (#16454)
</span>f5ed23cd1b6 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit f5ed23cd1b62ada69f98a5bd262f702e783f5cc7
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Thu Oct 27 21:09:28 2022 +0800
<span style='display:block; white-space:pre;color:#404040;'> ruby-devel: new port (latest Ruby), supports PPC (#16454)
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * ruby-devel: new port, supports PPC
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * ruby31: fix PPC build, needed for ruby-devel
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * ruby-devel: add kimuraw as co-maintainer
</span><span style='display:block; white-space:pre;color:#404040;'> [skip ci]
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Co-authored-by: kimura wataru <kimuraw@macports.org>
</span>---
lang/{ruby31 => ruby-devel}/Portfile | 173 +++++------
.../files/0001-Use-numerical-macOS-versions.patch | 123 ++++++++
lang/ruby-devel/files/ruby32 | 20 ++
lang/ruby31/Portfile | 14 +-
lang/ruby31/files/patch-configure-ppc.diff | 57 ++++
lang/ruby31/files/patch-coroutine-darwin-ppc.diff | 335 +++++++++++++++++++++
lang/ruby31/files/patch-thread_pthread.diff | 44 +++
7 files changed, 680 insertions(+), 86 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ruby31/Portfile b/lang/ruby-devel/Portfile
</span>similarity index 54%
copy from lang/ruby31/Portfile
copy to lang/ruby-devel/Portfile
<span style='display:block; white-space:pre;color:#808080;'>index 2082afaaa8f..9845b090e02 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/ruby31/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ruby-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,72 +4,99 @@ PortSystem 1.0
</span> PortGroup select 1.0
PortGroup openssl 1.0
PortGroup compiler_blacklist_versions 1.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup conflicts_build 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup github 1.0
</span> PortGroup legacysupport 1.1
# MAP_ANONYMOUS
legacysupport.newest_darwin_requires_legacy 14
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set ruby_ver 3.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set ruby_patch 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup ruby ruby 8dfe3bdf48ff73052de1262e4644c08742abd8e6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set ruby_ver 3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set ruby_patch 0
</span> set ruby_ver_nodot [string map {. {}} ${ruby_ver}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-name ruby${ruby_ver_nodot}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-version ${ruby_ver}.${ruby_patch}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name ruby-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 2022.10.23
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span>
categories lang ruby
<span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers {kimuraw @kimuraw} openmaintainer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {@barracuda156 gmail.com:vital.had} {kimuraw @kimuraw} openmaintainer
</span>
description Powerful and clean object-oriented scripting language
<span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description Ruby is the interpreted scripting language for quick \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- and easy object-oriented programming. It has many \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- features to process text files and to do system \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- management tasks (as in Perl). It is simple, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- straight-forward, extensible, and portable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description Ruby is the interpreted scripting language \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for quick and easy object-oriented programming. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ It has many features to process text files \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and to do system management tasks (as in Perl). \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ It is simple, straight-forward, extensible and portable.
</span>
homepage https://www.ruby-lang.org/
license {Ruby BSD}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites ruby:${ruby_ver}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distname ruby-${version}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-dist_subdir ruby${ruby_ver_nodot}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums rmd160 544ae8509271263956c0a3d6cb415f2d4e00cdb3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 61843112389f02b735428b53bb64cf988ad9fb81858b8248e22e57336f24a83e \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 20553628
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 c20c4ffcea6fd5e53a8d96a14c5e0971918ac889 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 d44f9c5c6ff5a36dd65621c6533f3b0038f83627b70097af72afb067e0efa531 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 15463281
</span>
universal_variant no
# ruby/openssl does not support openssl-3
openssl.branch 1.1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib port:readline \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:zlib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:libyaml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# We need baseruby to build from upstream/master.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Minimum required version is 2.7. However ruby27 is broken on PPC: https://trac.macports.org/ticket/64906
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Since this is a devel port, let it depend on recent a Ruby version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Darwin PPC support was re-introduced from 3.1.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set baseruby_ver 3.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set baseruby_ver_nodot \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [string map {. {}} ${baseruby_ver}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoreconf.cmd ./autogen.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append port:gdbm \
</span> port:libffi \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port:gdbm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_run port:ruby_select
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_build port:pkgconfig port:cctools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libyaml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:readline \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:autoconf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:automake \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:bison \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:cctools \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gperf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libtool \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:ruby${baseruby_ver_nodot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run-append port:ruby_select
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> depends_skip_archcheck pkgconfig
select.group ruby
select.file ${filespath}/ruby${ruby_ver_nodot}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#----------------------------------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Fix compilation on buildbots for 10.12 and earlier.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Issue: 62183: error: use of undeclared identifier 'fmt'; did you mean 'fma'?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#----------------------------------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { clang < 901 }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append 0001-Use-numerical-macOS-versions.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # rewrite "gem" to "gem${ruby_ver}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # def gem_command
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ENV["GEM_COMMAND"]&.shellsplit || ["gem"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # end
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -E "s/(shellsplit .. .)(\"gem\")/\\1\"gem${ruby_ver}\"/g" ${worksrcpath}/lib/bundler/gem_helper.rb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {clang < 901}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.thread_local_storage yes
</span>
if { [string match macports-clang-* ${configure.compiler}] } {
# clang-mp-14 => dsymutil-mp-14; fix POSTLINK
configure.env-append dsymutil=[string map {clang dsymutil} ${configure.cc}]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.thread_local_storage yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args --enable-shared \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --enable-shared \
</span> --enable-install-static-library \
--disable-install-doc \
--mandir="${prefix}/share/man" \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -77,42 +104,39 @@ configure.args --enable-shared \
</span> --without-gmp \
--with-opt-dir="${prefix}" \
--program-suffix=${ruby_ver} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- --with-rubyhdrdir=${prefix}/include/ruby-${version} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-rubyhdrdir=${prefix}/include/ruby-${ruby_ver}.${ruby_patch} \
</span> --with-rubylibprefix="${prefix}/lib/ruby${ruby_ver}" \
--with-openssl-dir=[openssl::install_area] \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- --without-baseruby
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-baseruby=${prefix}/bin/ruby${baseruby_ver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # prefer Apple cctools to GNU binutils, build with binutils may fail.
configure.args-append AR=${prefix}/bin/ar RANLIB=${prefix}/bin/ranlib
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# temporal fix error at destroot "bundled gems" (`make install DESTDIR=path/to`)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://bugs.ruby-lang.org/issues/18373
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles patch-_bundle_gems-extconf.rb.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# fix version detection with AvailabilityMacros.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# future version should be a numeric literal, not a macro
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append patch-configure.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-dln.c.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # Add the architecture flag as required
if {[info exists build_arch] && ${build_arch} != ""} {
configure.args-append "--with-arch=${build_arch}"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-patch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # rewrite "gem" to "gem${ruby_ver}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # def gem_command
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # ENV["GEM_COMMAND"]&.shellsplit || ["gem"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -E "s/(shellsplit .. .)(\"gem\")/\\1\"gem${ruby_ver}\"/g" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${worksrcpath}/lib/bundler/gem_helper.rb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # temporal fix error at destroot "bundled gems" (`make install DESTDIR=path/to`)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://bugs.ruby-lang.org/issues/18373
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -E "s|@@worksrcpath@@|${worksrcpath}|g" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${worksrcpath}/.bundle/gems/debug-1.4.0/ext/debug/extconf.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${worksrcpath}/.bundle/gems/rbs-2.1.0/ext/rbs_extension/extconf.rb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append port:gmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.cmd ${prefix}/bin/gmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --disable-dtrace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cflags-append -std=c99
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} < 9} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ known_fail yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pre-fetch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "${name} is not supported on Darwin ${os.major}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "incompatible macOS version"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/ruby/ruby/pull/5975#issuecomment-1279751636
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts_build-append libunwind-headers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-destroot {
foreach type {site vendor} {
set libdir ${destroot}${prefix}/lib/ruby${ruby_ver}/${type}_ruby/${version}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -122,17 +146,11 @@ post-destroot {
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # install destination of commands from port:rb31*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # install destination of commands from port:rb32*
</span> xinstall -m 0755 -d ${destroot}${prefix}/libexec/ruby${ruby_ver}
destroot.keepdirs-append ${destroot}${prefix}/libexec/ruby${ruby_ver}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-notes-append "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-To make this the default Ruby (i.e., the version run by\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-the 'ruby', 'gem' or 'bundle' commands), run:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sudo port select --set ruby $name
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> variant doc description "Install rdoc indexes and C API documents" {
configure.args-delete --disable-install-doc
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -148,29 +166,16 @@ variant jemalloc description "use jemalloc" {
</span> depends_lib-append port:jemalloc
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-variant relative description "Enable relative loading of libraries to allow for relocation of binaries." {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant relative description "Enable relative loading of libraries to allow for relocation of binaries" {
</span> #enable relative loading
configure.args-append --enable-load-relative
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# legacy systems support
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-platform darwin {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_build-append port:gmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build.cmd ${prefix}/bin/gmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.args-append --disable-dtrace
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.cflags-append -std=c99
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${os.major} == 8} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.cppflags-append -DCPU_SUBTYPE_MASK=0xff000000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+notes-append "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To make this the default Ruby (i.e., the version run \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+by the 'ruby', 'gem' or 'bundle' commands), run:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo port select --set ruby $name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span>
test.run yes
test.target check
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.type regex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.url https://cache.ruby-lang.org/pub/ruby/${ruby_ver}/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.regex ruby-(3\\.1\\.\\d+)[quotemeta ${extract.suffix}]
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ruby-devel/files/0001-Use-numerical-macOS-versions.patch b/lang/ruby-devel/files/0001-Use-numerical-macOS-versions.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..efa73005606
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ruby-devel/files/0001-Use-numerical-macOS-versions.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,123 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From d3a6597049a2e6e752dee3f8deea667296cd7b2c Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 21 Oct 2022 00:26:52 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/3] Use numerical macOS versions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.ac | 6 +++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dln.c | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ random.c | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ thread_pthread.c | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6 files changed, 11 insertions(+), 11 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/configure.ac b/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0e22aabbe5..ebbd13c2f7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -354,7 +354,7 @@ AS_CASE(["$target_os"],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [darwin*], [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_MSG_CHECKING(if minimum required OS X version is supported)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@%:@include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- @%:@if MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ @%:@if MAC_OS_X_VERSION_MIN_REQUIRED < 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @%:@error pre OS X 10.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [!<===== pre OS X 10.5 =====>]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @%:@endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3831,11 +3831,11 @@ AS_CASE(["$target_os"],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_LANG_BOOL_COMPILE_TRY([
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @%:@include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- least = MAC_OS_X_VERSION_10_7, /* just fail if undefined */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ least = 1070, /* just fail if undefined */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ required = MAC_OS_X_VERSION_MIN_REQUIRED,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ upper /* bigger than MIN_REQUIRED, or */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @%:@ifdef MAC_OS_X_VERSION_10_10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- = MAC_OS_X_VERSION_10_10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ = 101000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @%:@endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [required >= least && required < upper])],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dln.c b/dln.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0edd709bbe..2a7a80ac8d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dln.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dln.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -303,11 +303,11 @@ COMPILER_WARNING_POP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define dln_disable_dlclose() false
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif !defined(MAC_OS_X_VERSION_10_11) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (MAC_OS_X_VERSION_MAX_ALLOWED < 101100)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* targeting older versions only */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define dln_disable_dlclose() true
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* targeting newer versions only */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define dln_disable_dlclose() false
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/error.c b/error.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 67e81d08a0..d7315532e2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/error.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/error.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -668,7 +668,7 @@ bug_important_message(FILE *out, const char *const msg, size_t len)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef CRASH_REPORTER_MAY_BE_CREATED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__APPLE__) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (!defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 || defined(__POWERPC__)) /* 10.6 PPC case */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (!defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MIN_REQUIRED < 1060 || defined(__POWERPC__)) /* 10.6 PPC case */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define CRASH_REPORTER_MAY_BE_CREATED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/file.c b/file.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index efd15ea8a1..8f10f72acc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/file.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/file.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2876,7 +2876,7 @@ utime_failed(struct apply_arg *aa)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if !defined(HAVE_UTIMENSAT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* utimensat() is not found, runtime check is not needed */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # elif defined(__APPLE__) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (!defined(MAC_OS_X_VERSION_13_0) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_13_0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (!defined(MAC_OS_X_VERSION_13_0) || (MAC_OS_X_VERSION_MIN_REQUIRED < 130000))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if defined(__has_attribute) && __has_attribute(availability)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef int utimensat_func(int, const char *, const struct timespec [2], int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/random.c b/random.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f8879cfb88..5f43236e5b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/random.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/random.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -485,10 +485,10 @@ fill_random_bytes_urandom(void *seed, size_t size)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined MAC_OS_X_VERSION_10_7 && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined MAC_OS_X_VERSION_10_7 && MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if defined(USE_COMMON_RANDOM)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# elif defined MAC_OS_X_VERSION_10_10 && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# elif defined MAC_OS_X_VERSION_10_10 && MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define USE_COMMON_RANDOM 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define USE_COMMON_RANDOM 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/thread_pthread.c b/thread_pthread.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index aa5435aa99..006f0c2fc0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/thread_pthread.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/thread_pthread.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1862,11 +1862,11 @@ native_thread_native_thread_id(rb_thread_t *target_th)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint64_t tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if (!defined(MAC_OS_X_VERSION_10_6) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (MAC_OS_X_VERSION_MAX_ALLOWED < 1060) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defined(__POWERPC__) /* never defined for PowerPC platforms */)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const bool no_pthread_threadid_np = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define NO_PTHREAD_MACH_THREAD_NP 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const bool no_pthread_threadid_np = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # if !(defined(__has_attribute) && __has_attribute(availability))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.36.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ruby-devel/files/ruby32 b/lang/ruby-devel/files/ruby32
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1b61ddb3eaf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ruby-devel/files/ruby32
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/erb3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/gem3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/irb3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/rake3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/rdoc3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/ri3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/ruby3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/man/man1/erb3.2.0.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/man/man1/irb3.2.0.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/man/man1/ri3.2.0.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/man/man1/ruby3.2.0.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/bundle3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/bundler3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/racc3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/typeprof3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/rbs3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/rdbg3.2
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ruby31/Portfile b/lang/ruby31/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 2082afaaa8f..11b81f4c38f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/ruby31/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ruby31/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,7 +14,7 @@ set ruby_patch 2
</span> set ruby_ver_nodot [string map {. {}} ${ruby_ver}]
name ruby${ruby_ver_nodot}
version ${ruby_ver}.${ruby_patch}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 2
</span>
categories lang ruby
maintainers {kimuraw @kimuraw} openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -93,6 +93,9 @@ patchfiles patch-_bundle_gems-extconf.rb.diff
</span> patchfiles-append patch-configure.diff \
patch-dln.c.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Backport of a fix from ruby32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append patch-thread_pthread.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Add the architecture flag as required
if {[info exists build_arch] && ${build_arch} != ""} {
configure.args-append "--with-arch=${build_arch}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -155,7 +158,14 @@ variant relative description "Enable relative loading of libraries to allow for
</span>
# legacy systems support
platform darwin {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${build_arch} in [list ppc ppc64]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath}/coroutine/ppc64le ${worksrcpath}/coroutine/ppc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath}/coroutine/ppc64le ${worksrcpath}/coroutine/ppc64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append patch-coroutine-darwin-ppc.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-configure-ppc.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> if {${os.major} < 11} {
depends_build-append port:gmake
build.cmd ${prefix}/bin/gmake
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ruby31/files/patch-configure-ppc.diff b/lang/ruby31/files/patch-configure-ppc.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..70a0aa0585a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ruby31/files/patch-configure-ppc.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,57 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2022-04-12 19:11:17.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure 2022-10-24 06:05:15.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8505,6 +8505,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ARCH_FLAG=-m64 ;; #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ i[3-6]86) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ARCH_FLAG=-m32 ;; #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ powerpc|ppc) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ARCH_FLAG=-m32 ;; #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ as_fn_error $? "unknown target architecture: $target_archs" "$LINENO" 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -23979,7 +23981,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case "${target_cpu}-${target_os}:${target_archs}" in #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- powerpc-darwin*) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ powerpc*-darwin*) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ALLOCA=\${LIBOBJDIR}alloca.${ac_objext}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -23996,17 +23998,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ALLOCA=\${LIBOBJDIR}alloca.${ac_objext}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- printf "#if %s\n" "defined __powerpc__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf "#if %s\n" "defined __POWERPC__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cat >>confdefs.h <<_ACEOF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define C_ALLOCA 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _ACEOF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- printf "#endif /* %s */\n" "defined __powerpc__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf "#endif /* %s */\n" "defined __POWERPC__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- printf "#if %s\n" "defined __powerpc__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf "#if %s\n" "defined __POWERPC__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cat >>confdefs.h <<_ACEOF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define alloca alloca
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _ACEOF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- printf "#endif /* %s */\n" "defined __powerpc__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf "#endif /* %s */\n" "defined __POWERPC__" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;; #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -28450,6 +28452,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ coroutine_type=arm64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;; #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ powerpc-darwin*|ppc-darwin*) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ coroutine_type=ppc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ powerpc64-darwin*|ppc64-darwin*) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ coroutine_type=ppc64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; #(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ x*64-linux*) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case "$ac_cv_sizeof_voidp" in #(
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ruby31/files/patch-coroutine-darwin-ppc.diff b/lang/ruby31/files/patch-coroutine-darwin-ppc.diff
</span>new file mode 100755
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0e0d222056d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ruby31/files/patch-coroutine-darwin-ppc.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,335 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- coroutine/universal/Context.h.orig 2022-02-18 17:42:25.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ coroutine/universal/Context.h 2022-05-08 08:00:38.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,8 +6,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include "coroutine/amd64/Context.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined __i386__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include "coroutine/x86/Context.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include "coroutine/ppc/Context.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined __ppc64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# include "coroutine/ppc64le/Context.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include "coroutine/ppc64/Context.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined __arm64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include "coroutine/arm64/Context.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- coroutine/universal/Context.S.orig 2022-02-18 17:42:25.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ coroutine/universal/Context.S 2022-05-08 08:01:11.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,8 +3,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include "coroutine/amd64/Context.S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined __i386__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include "coroutine/x86/Context.S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include "coroutine/ppc/Context.S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined __ppc64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# include "coroutine/ppc64le/Context.S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include "coroutine/ppc64/Context.S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined __arm64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include "coroutine/arm64/Context.S"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- coroutine/ppc/Context.h.orig 2022-02-18 17:42:25.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ coroutine/ppc/Context.h 2022-05-16 03:31:40.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifndef COROUTINE_PPC64LE_CONTEXT_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define COROUTINE_PPC64LE_CONTEXT_H 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef COROUTINE_PPC_CONTEXT_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define COROUTINE_PPC_CONTEXT_H 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma once
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -12,7 +12,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ COROUTINE_REGISTERS =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- 19 /* 18 general purpose registers (r14-r31) and 1 return address */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 20 /* 19 general purpose registers (r13–r31) and 1 return address */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + 4 /* space for fiber_entry() to store the link register */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -44,7 +44,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Skip a global prologue that sets the TOC register */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- context->stack_pointer[18] = ((char*)start) + 8;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ context->stack_pointer[19] = ((char*)start) + 8;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -54,4 +54,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ context->stack_pointer = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif /* COROUTINE_PPC64LE_CONTEXT_H */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* COROUTINE_PPC_CONTEXT_H */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- coroutine/ppc/Context.S.orig 2022-02-18 17:42:25.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ coroutine/ppc/Context.S 2022-05-16 03:09:49.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,71 +5,69 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .align 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer), @function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Make space on the stack for caller registers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addi 1,1,-152
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addi r1,r1,-80
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Save caller registers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 14,0(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 15,8(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 16,16(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 17,24(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 18,32(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 19,40(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 20,48(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 21,56(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 22,64(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 23,72(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 24,80(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 25,88(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 26,96(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 27,104(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 28,112(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 29,120(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 30,128(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 31,136(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r13,0(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r14,4(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r15,8(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r16,12(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r17,16(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r18,20(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r19,24(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r20,28(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r21,32(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r22,36(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r23,40(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r24,44(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r25,48(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r26,52(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r27,56(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r28,60(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r29,64(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r30,68(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r31,72(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Save return address
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- mflr 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 0,144(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mflr r0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r0,76(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Save stack pointer to first argument
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 1,0(3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ stw r1,0(r3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Load stack pointer from second argument
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 1,0(4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r1,0(r4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Restore caller registers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 14,0(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 15,8(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 16,16(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 17,24(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 18,32(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 19,40(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 20,48(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 21,56(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 22,64(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 23,72(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 24,80(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 25,88(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 26,96(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 27,104(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 28,112(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 29,120(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 30,128(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 31,136(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r13,0(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r14,4(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r15,8(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r16,12(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r17,16(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r18,20(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r19,24(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r20,28(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r21,32(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r22,36(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r23,40(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r24,44(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r25,48(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r26,52(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r27,56(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r28,60(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r29,64(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r30,68(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r31,72(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Load return address
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 0,144(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- mtlr 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz r0,76(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mtlr r0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Pop stack frame
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addi 1,1,152
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addi r1,r1,80
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Jump to return address
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ blr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__linux__) && defined(__ELF__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.section .note.GNU-stack,"",%progbits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- coroutine/ppc64/Context.h.orig 2022-02-18 17:42:25.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ coroutine/ppc64/Context.h 2022-05-08 06:42:30.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifndef COROUTINE_PPC64LE_CONTEXT_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define COROUTINE_PPC64LE_CONTEXT_H 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef COROUTINE_PPC64_CONTEXT_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define COROUTINE_PPC64_CONTEXT_H 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma once
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -12,7 +12,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ COROUTINE_REGISTERS =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- 19 /* 18 general purpose registers (r14-r31) and 1 return address */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 19 /* 18 general purpose registers (r14–r31) and 1 return address */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + 4 /* space for fiber_entry() to store the link register */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -54,4 +54,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ context->stack_pointer = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif /* COROUTINE_PPC64LE_CONTEXT_H */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* COROUTINE_PPC64_CONTEXT_H */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- coroutine/ppc64/Context.S.orig 2022-02-18 17:42:25.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ coroutine/ppc64/Context.S 2022-05-08 06:40:54.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,74 +2,69 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .text
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.align 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.align 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer), @function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Make space on the stack for caller registers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addi 1,1,-152
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addi r1,r1,-152
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Save caller registers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 14,0(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 15,8(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 16,16(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 17,24(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 18,32(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 19,40(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 20,48(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 21,56(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 22,64(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 23,72(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 24,80(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 25,88(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 26,96(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 27,104(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 28,112(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 29,120(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 30,128(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 31,136(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r14,0(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r15,8(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r16,16(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r17,24(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r18,32(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r19,40(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r20,48(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r21,56(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r22,64(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r23,72(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r24,80(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r25,88(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r26,96(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r27,104(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r28,112(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r29,120(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r30,128(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r31,136(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Save return address
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- mflr 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 0,144(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mflr r0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r0,144(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Save stack pointer to first argument
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std 1,0(3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std r1,0(r3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Load stack pointer from second argument
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 1,0(4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r1,0(r4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Restore caller registers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 14,0(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 15,8(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 16,16(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 17,24(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 18,32(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 19,40(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 20,48(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 21,56(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 22,64(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 23,72(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 24,80(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 25,88(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 26,96(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 27,104(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 28,112(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 29,120(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 30,128(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 31,136(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r14,0(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r15,8(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r16,16(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r17,24(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r18,32(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r19,40(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r20,48(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r21,56(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r22,64(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r23,72(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r24,80(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r25,88(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r26,96(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r27,104(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r28,112(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r29,120(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r30,128(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r31,136(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Load return address
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ld 0,144(1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- mtlr 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ld r0,144(r1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mtlr r0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Pop stack frame
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addi 1,1,152
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addi r1,r1,152
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Jump to return address
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ blr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__linux__) && defined(__ELF__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.section .note.GNU-stack,"",%progbits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ruby31/files/patch-thread_pthread.diff b/lang/ruby31/files/patch-thread_pthread.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a18a2c11264
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ruby31/files/patch-thread_pthread.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,44 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- thread_pthread.c.orig 2022-04-12 19:11:15.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ thread_pthread.c 2022-10-24 05:26:46.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -40,6 +40,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <signal.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(HAVE_SYS_EVENTFD_H) && defined(HAVE_EVENTFD)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define USE_EVENTFD (1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/eventfd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1732,9 +1736,29 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return INT2FIX(tid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint64_t tid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int e = pthread_threadid_np(target_th->thread_id, &tid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# if (!defined(MAC_OS_X_VERSION_10_6) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (MAC_OS_X_VERSION_MAX_ALLOWED < 1060) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ defined(__POWERPC__) /* never defined for PowerPC platforms */)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const bool no_pthread_threadid_np = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define NO_PTHREAD_MACH_THREAD_NP 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const bool no_pthread_threadid_np = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# if !(defined(__has_attribute) && __has_attribute(availability))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* __API_AVAILABLE macro does nothing on gcc */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __attribute__((weak)) int pthread_threadid_np(pthread_t, uint64_t*);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* Check weakly linked symbol */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const bool no_pthread_threadid_np = !&pthread_threadid_np;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (no_pthread_threadid_np) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ULL2NUM(pthread_mach_thread_np(pthread_self()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifndef NO_PTHREAD_MACH_THREAD_NP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int e = pthread_threadid_np(target_th->thread_id, &tid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (e != 0) rb_syserr_fail(e, "pthread_threadid_np");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ULL2NUM((unsigned long long)tid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define USE_NATIVE_THREAD_NATIVE_THREAD_ID 1
</span></pre><pre style='margin:0'>
</pre>