diff options
Diffstat (limited to 'dev-ruby')
| -rw-r--r-- | dev-ruby/arel-helpers/Manifest | 2 | ||||
| -rw-r--r-- | dev-ruby/arel-helpers/arel-helpers-2.16.0.ebuild (renamed from dev-ruby/arel-helpers/arel-helpers-2.14.0-r1.ebuild) | 17 | ||||
| -rw-r--r-- | dev-ruby/metasm/files/metasm-1.0.5-ruby33.patch | 145 | ||||
| -rw-r--r-- | dev-ruby/metasm/metasm-1.0.5-r2.ebuild | 36 |
4 files changed, 194 insertions, 6 deletions
diff --git a/dev-ruby/arel-helpers/Manifest b/dev-ruby/arel-helpers/Manifest index c87c573ef0c3..f60274543556 100644 --- a/dev-ruby/arel-helpers/Manifest +++ b/dev-ruby/arel-helpers/Manifest @@ -1,2 +1,2 @@ -DIST arel-helpers-2.14.0.tar.gz 11711 BLAKE2B 75182a17ae741b2fe62189bccf008ca9958a69d69b5c2aced227e1b77f7278565f2c6261f56e567e4534c1e0229ce00e630bb1dc77ce8e49d03267784f8f8dc2 SHA512 47edec1aaa5be14de4ee695b13096dcf3f0c30804b20dfdc84421e1a779d3faa6241c022003f4752da911d1ea71a49de6e1e3339e6a3e452ca7fa8116ff751ca DIST arel-helpers-2.15.0.tar.gz 11785 BLAKE2B 5588b114c0f3a1daf7ce8bb9301f709b6afefa91fdfbd4b30d98574c9bff0d650c996f9462836c22edd70bb5a4d8edabb4d46fd8d67ee6c3cb2fa2dd3459a807 SHA512 f13fc81815f3041fd40f8029683707698d283dc27d041f790bd4e14775cb113871f272c8dc22698a0dfbc5d6cf20d7a876bb02ea34a70583f1d6a4dc7c66a8e3 +DIST arel-helpers-2.16.0.tar.gz 11845 BLAKE2B 584ecaf16b19274674e92a524a256d3045b9007683123c8bf7bc73d02ec91be8513c4a1c0eff5e0be094db74772b31b0afd4186fb5950914d5d9d76348cc8f0e SHA512 b1d9b74c0082fabd4cf79c43d79f53a2e46e4647d5fbe05bdcdb3821692a46a15a1d6418c24155838c739e83c646f9af0c636b99bfc4f84c6355792c959fae8b diff --git a/dev-ruby/arel-helpers/arel-helpers-2.14.0-r1.ebuild b/dev-ruby/arel-helpers/arel-helpers-2.16.0.ebuild index 62e4e4422c0f..347f1c25241b 100644 --- a/dev-ruby/arel-helpers/arel-helpers-2.14.0-r1.ebuild +++ b/dev-ruby/arel-helpers/arel-helpers-2.16.0.ebuild @@ -1,9 +1,9 @@ -# Copyright 1999-2023 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -USE_RUBY="ruby31 ruby32" +USE_RUBY="ruby31 ruby32 ruby33" RUBY_FAKEGEM_RECIPE_TEST="rspec3" RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec" RUBY_S=${PN}-* @@ -21,6 +21,9 @@ KEYWORDS="~amd64 ~arm" ruby_add_rdepend " || ( + dev-ruby/activerecord:8.0 + dev-ruby/activerecord:7.2 + dev-ruby/activerecord:7.1 dev-ruby/activerecord:7.0 dev-ruby/activerecord:6.1 ) @@ -31,15 +34,19 @@ ruby_add_bdepend " dev-ruby/rr dev-ruby/activerecord[sqlite] dev-ruby/bundler - dev-ruby/combustion - >=dev-ruby/database_cleaner-1.8 + >=dev-ruby/combustion-1.3 + >=dev-ruby/database_cleaner-2.0 >=dev-ruby/sqlite3-1.4 ) " all_ruby_prepare() { # pry is for debugging, not useful here - sed -i -e '/pry-/ s:^:#:' spec/spec_helper.rb || die + sed -e '/pry-/ s:^:#:' \ + -i spec/spec_helper.rb || die + + sed -e '2igem "activerecord", "<8.1"' \ + -i Gemfile || die sed \ -e '/rake/ s/~>/>=/' \ diff --git a/dev-ruby/metasm/files/metasm-1.0.5-ruby33.patch b/dev-ruby/metasm/files/metasm-1.0.5-ruby33.patch new file mode 100644 index 000000000000..4a48ddcef208 --- /dev/null +++ b/dev-ruby/metasm/files/metasm-1.0.5-ruby33.patch @@ -0,0 +1,145 @@ +From c8f02d5d170c5373eeef98d6f6354ae7c726e29b Mon Sep 17 00:00:00 2001 +From: jj <john-git@ofjj.net> +Date: Mon, 11 Dec 2023 19:22:30 +0100 +Subject: [PATCH] dynldr: ruby3.3 compat + +--- + metasm/dynldr.rb | 64 ++++++++++++++++++++++++++++-------------------- + 1 file changed, 37 insertions(+), 27 deletions(-) + +diff --git a/metasm/dynldr.rb b/metasm/dynldr.rb +index 74bf786f2..a7b807703 100644 +--- a/metasm/dynldr.rb ++++ b/metasm/dynldr.rb +@@ -9,7 +9,7 @@ + + module Metasm + class DynLdr +- # basic C defs for ruby internals - 1.8 and 1.9 compat - x86/x64 ++ # basic C defs for ruby internals - 1.8, 1.9, 3.3 compat - x86/x64 + RUBY_H = <<EOS + #line #{__LINE__} + typedef uintptr_t VALUE; +@@ -26,7 +26,7 @@ class DynLdr + struct rb_string_t { + VALUE flags; + VALUE klass; +- VALUE len; ++ long len; + char *ptr; + union { + long capa; +@@ -38,7 +38,7 @@ class DynLdr + struct rb_array_t { + VALUE flags; + VALUE klass; +- VALUE len; ++ long len; + union { + long capa; + VALUE shared; +@@ -52,41 +52,45 @@ class DynLdr + extern VALUE *rb_eRuntimeError __attribute__((import)); + extern VALUE *rb_eArgError __attribute__((import)); + +-// allows generating a ruby1.9 dynldr.so from ruby1.8 +-#ifndef DYNLDR_RUBY_19 +-#define DYNLDR_RUBY_19 #{RUBY_VERSION >= '1.9' ? 1 : 0} +-#endif +- + #if #{RUBY_VERSION >= '2.0' ? 1 : 0} + // flonums. WHY? + // also breaks Qtrue/Qnil + #define rb_float_new rb_float_new_in_heap + #endif + +-#if DYNLDR_RUBY_19 ++#if #{RUBY_VERSION >= '1.9' ? 0 : 1} ++ #define T_STRING 0x07 ++ #define T_ARRAY 0x09 ++ #define T_FIXNUM 0x0a ++ #define T_MASK 0x3f ++ #define STR_PTR(o) (RString(o)->ptr) ++ #define STR_LEN(o) (RString(o)->len) ++ #define ARY_PTR(o) (RArray(o)->ptr) ++ #define ARY_LEN(o) (RArray(o)->len) ++#else + #define T_STRING 0x05 + #define T_ARRAY 0x07 + #define T_FIXNUM 0x15 + #define T_MASK 0x1f + #define RSTRING_NOEMBED (1<<13) ++#if #{RUBY_VERSION >= '3.2' ? 0 : 1} ++ // ruby1.9 .. 3.2 + #define STR_PTR(o) ((RString(o)->flags & RSTRING_NOEMBED) ? RString(o)->ptr : (char*)&RString(o)->len) + #define STR_LEN(o) ((RString(o)->flags & RSTRING_NOEMBED) ? RString(o)->len : (RString(o)->flags >> 14) & 0x1f) ++#else ++ // ruby3.2+: len is used for NOEMBED strings, and the str buffer starts right after len (off 8+8+4 on win64) ++ // TODO find a better way to test, not depending on the compiling interpreter ? ++ #define STR_PTR(o) ((RString(o)->flags & RSTRING_NOEMBED) ? RString(o)->ptr : (((char*)&RString(o)->len) + sizeof(long))) ++ #define STR_LEN(o) RString(o)->len ++#endif + #define RARRAY_EMBED (1<<13) + #define ARY_PTR(o) ((RArray(o)->flags & RARRAY_EMBED) ? (VALUE*)&RArray(o)->len : RArray(o)->ptr) +- #define ARY_LEN(o) ((RArray(o)->flags & RARRAY_EMBED) ? ((RArray(o)->flags >> 15) & 3) : RArray(o)->len) +-#else +- #define T_STRING 0x07 +- #define T_ARRAY 0x09 +- #define T_FIXNUM 0x0a +- #define T_MASK 0x3f +- #define STR_PTR(o) (RString(o)->ptr) +- #define STR_LEN(o) (RString(o)->len) +- #define ARY_PTR(o) (RArray(o)->ptr) +- #define ARY_LEN(o) (RArray(o)->len) ++ // RVARGC uses more bits, should be 0/unused in earlier ruby versions ++ #define ARY_LEN(o) ((RArray(o)->flags & RARRAY_EMBED) ? ((RArray(o)->flags >> 15) & 0xff) : RArray(o)->len) + #endif + +-#if #{nil.object_id == 4 ? 1 : 0} +-// ruby1.8 ++#if #{(RUBY_VERSION < '3.0' and nil.object_id == 4) ? 1 : 0} ++// ruby1.8 (Qnil changed in 1.9 and back in 3.3 + #define TYPE(x) (((VALUE)(x) & 1) ? T_FIXNUM : (((VALUE)(x) < 0x07) || (((VALUE)(x) & 0xf) == 0xe)) ? 0x40 : RString(x)->flags & T_MASK) + #else + // ruby2.0+, USE_FLONUM, world is hell +@@ -138,7 +142,6 @@ class DynLdr + #define os_load_sym_ord(l, s) 0U + #endif + +-extern int *cb_ret_table; + extern void *callback_handler; + extern void *callback_id_0; + extern void *callback_id_1; +@@ -207,13 +210,12 @@ class DynLdr + else + rb_raise(*rb_eArgError, "Invalid lib"); + +- if (TYPE(func) != T_STRING && TYPE(func) != T_FIXNUM) +- rb_raise(*rb_eArgError, "Invalid func"); +- +- if (TYPE(func) == T_FIXNUM) ++ if (TYPE(func) == T_STRING) ++ p = os_load_sym(h, STR_PTR(func)); ++ else if (TYPE(func) == T_FIXNUM) + p = os_load_sym_ord(h, VAL2INT(func)); + else +- p = os_load_sym(h, STR_PTR(func)); ++ rb_raise(*rb_eArgError, "Invalid func"); + + return INT2VAL(p); + } +@@ -354,6 +356,14 @@ class DynLdr + } + #endif + ++unsigned long long ruby_abi_version(void) __attribute__((export)) ++{ ++ // mandatory to be loadable in a dev ruby build ++ // TODO find expected value in current interpreter ? ++ return 0; ++ // disable the value check interpreter side: #{ENV['RUBY_ABI_CHECK'] = '0'} ++} ++ + int Init_dynldr(void) __attribute__((export_as(Init_<insertfilenamehere>))) // to patch before parsing to match the .so name + { + dynldr = rb_const_get(rb_const_get(*rb_cObject, rb_intern("Metasm")), rb_intern("DynLdr")); diff --git a/dev-ruby/metasm/metasm-1.0.5-r2.ebuild b/dev-ruby/metasm/metasm-1.0.5-r2.ebuild new file mode 100644 index 000000000000..84a5ce21b825 --- /dev/null +++ b/dev-ruby/metasm/metasm-1.0.5-r2.ebuild @@ -0,0 +1,36 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +USE_RUBY="ruby31 ruby32 ruby33 ruby34" + +RUBY_FAKEGEM_RECIPE_DOC="none" +RUBY_FAKEGEM_EXTRADOC="BUGS README TODO" +RUBY_FAKEGEM_EXTRAINSTALL="metasm metasm.rb misc samples" + +inherit ruby-fakegem + +DESCRIPTION="Cross-architecture assembler, disassembler, linker, and debugger" +HOMEPAGE="https://metasm.cr0.org/" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" + +PATCHES=( "${FILESDIR}/${P}-ruby33.patch" ) + +all_ruby_prepare() { + mkdir bin || die + ln -s ../samples/disassemble.rb ./bin/disassemble || die +} + +each_ruby_test() { + ${RUBY} -Ilib:. -e "Dir['tests/*.rb'].each{|f| require f}" || die +} + +all_ruby_install() { + all_fakegem_install + + ruby_fakegem_binwrapper disassemble +} |
