<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>