vondruch / rpms / ruby

Forked from rpms/ruby 6 years ago
Clone

b7b5473 Define compaction methods as rb_f_notimplement on unsupported platforms.

Authored and Committed by jackorp 2 years ago
    Define compaction methods as rb_f_notimplement on unsupported platforms.
    
    The patch implements the methods as rb_f_notimplement.
    To test for compaction users can now use `GC.respond_to?(:compact)`.
    
    The upstream patch relies on the macro `GC_COMPACTION_SUPPORTED`
    that is defined when the `__wasi__` is false. The define is defined by
    an arch conditional in the specfile, which is not optimal but works in our case.
    https://github.com/ruby/ruby/commit/663833b08fbae8d92cb2245a729312b86aa33a35
    https://bugs.ruby-lang.org/issues/18829
    
    This also requires regenerating the gc.rbinc and miniprelude.c
    since the patch touches gc.rb. This patch is available in
    ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch.
    
    To regenerate the gc.rbinc and miniprelude.c files patch:
    ~~~
    tar -Jxvf ./ruby-3.1.2.tar.xz
    git clone https://github.com/ruby/ruby.git
    cd ruby && git checkout v3_1_2
    patch -p1 < ../ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch
    ./autogen.sh && ./configure
    make gc.rbinc miniprelude.c
    cd ..
    diff -u {ruby-3.1.2,ruby}/gc.rbinc > ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
    diff -u {ruby-3.1.2,ruby}/miniprelude.c >> ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
    ~~~
    
    Uptream bug: https://bugs.ruby-lang.org/issues/18779
    Upstream PR: https://github.com/ruby/ruby/pull/5934
    
        
file modified
+28 -1