diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-05-04 18:17:18 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-05-07 21:35:52 +0000 |
commit | 5a61c2c8ba854fc5131d45f84e9d84f484631989 (patch) | |
tree | 3bdb9b76ba31cdb2e2136ae021056a8534772575 | |
parent | 3426627ccab3d9331bfa903579b5f15d1020e5c7 (diff) | |
download | ports-5a61c2c8ba854fc5131d45f84e9d84f484631989.tar.gz ports-5a61c2c8ba854fc5131d45f84e9d84f484631989.zip |
www/rubygem-hpricot: fix build with clang 16
Clang 16 has a new error about incompatible function types, which shows
up when building www/rubygem-hpricot:
fast_xs.c:165:39: error: incompatible function pointer types passing 'VALUE (VALUE)' (aka 'unsigned long (unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka 'unsigned long (*)(unsigned long, unsigned long)') [-Wincompatible-function-pointer-types]
array = rb_rescue(unpack_utf8, self, unpack_uchar, self);
^~~~~~~~~~~~
/usr/local/include/ruby-3.1/ruby/internal/iterator.h:364:62: note: passing argument to parameter 'r_proc' here
VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
^
This is because the r_proc parameter of rb_rescue() should be a pointer
to a function taking two VALUE parameters, not one (the second parameter
can contain an exception to be handled).
Another similar error occurs later in hpricot_scan.c, which was
generated from hpricot_scan.rl:
hpricot_scan.rl:855:3: error: incompatible function pointer types passing 'VALUE (VALUE, VALUE, VALUE, VALUE, VALUE)' (aka 'unsigned long (unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE, VALUE, VALUE)' (aka 'unsigned long (*)(unsigned long, unsigned long, unsigned long, unsigned long)') [-Wincompatible-function-pointer-types]
rb_define_singleton_method(mHpricot, "css", hpricot_css, 3);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ruby-3.1/ruby/internal/anyargs.h:307:143: note: expanded from macro 'rb_define_singleton_method'
#define rb_define_singleton_method(obj, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method((arity), (func))((obj), (mid), (func), (arity))
^~~~~~
/usr/local/include/ruby-3.1/ruby/internal/anyargs.h:270:1: note: passing argument to parameter here
RBIMPL_ANYARGS_DECL(rb_define_singleton_method, VALUE, const char *)
^
This is because the func parameter of rb_define_singleton_method()
should be a pointer to a function taking four VALUE parameters, not five.
PR: 271245
Approved by: sunpoet (maintainer)
MFH: 2023Q2
-rw-r--r-- | www/rubygem-hpricot/Makefile | 1 | ||||
-rw-r--r-- | www/rubygem-hpricot/files/patch-clang16 | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/www/rubygem-hpricot/Makefile b/www/rubygem-hpricot/Makefile index a917ae964846..9745604fb483 100644 --- a/www/rubygem-hpricot/Makefile +++ b/www/rubygem-hpricot/Makefile @@ -1,5 +1,6 @@ PORTNAME= hpricot PORTVERSION= 0.8.6 +PORTREVISION= 1 CATEGORIES= www rubygems MASTER_SITES= RG diff --git a/www/rubygem-hpricot/files/patch-clang16 b/www/rubygem-hpricot/files/patch-clang16 new file mode 100644 index 000000000000..3d79619449d0 --- /dev/null +++ b/www/rubygem-hpricot/files/patch-clang16 @@ -0,0 +1,22 @@ +--- ext/fast_xs/fast_xs.c.orig 2023-05-04 17:51:30 UTC ++++ ext/fast_xs/fast_xs.c +@@ -144,7 +144,7 @@ static VALUE unpack_utf8(VALUE self) + return rb_funcall(self, unpack_id, 1, U_fmt); + } + +-static VALUE unpack_uchar(VALUE self) ++static VALUE unpack_uchar(VALUE self, VALUE exc) + { + return rb_funcall(self, unpack_id, 1, C_fmt); + } +--- ext/hpricot_scan/hpricot_scan.c.orig 2023-05-04 18:05:46 UTC ++++ ext/hpricot_scan/hpricot_scan.c +@@ -22,7 +22,7 @@ struct hpricot_struct { + #define RSTRING_PTR(str) RSTRING(str)->ptr + #endif + +-VALUE hpricot_css(VALUE, VALUE, VALUE, VALUE, VALUE); ++VALUE hpricot_css(VALUE, VALUE, VALUE, VALUE); + + #define NO_WAY_SERIOUSLY "*** This should not happen, please file a bug report with the HTML you're parsing at http://github.com/hpricot/hpricot/issues. So sorry!" + |