git: 5a61c2c8ba85 - main - www/rubygem-hpricot: fix build with clang 16

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 07 May 2023 21:37:28 UTC
The branch main has been updated by dim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5a61c2c8ba854fc5131d45f84e9d84f484631989

commit 5a61c2c8ba854fc5131d45f84e9d84f484631989
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-05-04 18:17:18 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-05-07 21:35:52 +0000

    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
---
 www/rubygem-hpricot/Makefile            |  1 +
 www/rubygem-hpricot/files/patch-clang16 | 22 ++++++++++++++++++++++
 2 files changed, 23 insertions(+)

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!"
+