Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 04 Jun 2023 16:22:51 +0000
From:      bugzilla-noreply@freebsd.org
To:        ruby@FreeBSD.org
Subject:   [Bug 271706] graphics/rubygem-cairo: fix build with clang 16
Message-ID:  <bug-271706-21402-Go8cub4LfC@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-271706-21402@https.bugs.freebsd.org/bugzilla/>
References:  <bug-271706-21402@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D271706

--- Comment #3 from commit-hook@FreeBSD.org ---
A commit in branch main references this bug:

URL:
https://cgit.FreeBSD.org/ports/commit/?id=3Deff4307ac72a9630c67d030e0565fde=
34ff82d7d

commit eff4307ac72a9630c67d030e0565fde34ff82d7d
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-05-29 13:20:55 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-06-04 16:21:24 +0000

    graphics/rubygem-cairo: fix build with clang 16

    Clang 16 has a new error about incompatible function types, which shows
    up when building graphics/rubygem-cairo:

      rb_cairo_surface.c:2354:3: error: incompatible function pointer types
passing 'VALUE (int, VALUE *, VALUE)' (aka 'unsigned long (int, unsigned lo=
ng
*, unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka
'unsigned long (*)(unsigned long, unsigned long)')
[-Wincompatible-function-pointer-types]
        rb_define_method (rb_cCairo_GLSurface, "initialize",
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/ruby-3.1/ruby/internal/anyargs.h:287:135: note:
expanded from macro 'rb_define_method'
      #define rb_define_method(klass, mid, func, arity)=20=20=20=20=20=20=
=20=20=20=20
RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid),
(func), (arity))
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
                                                            ^~~~~~
      /usr/local/include/ruby-3.1/ruby/internal/anyargs.h:276:1: note: pass=
ing
argument to parameter here
      RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *)
      ^
      /usr/local/include/ruby-3.1/ruby/internal/anyargs.h:255:72: note:
expanded from macro 'RBIMPL_ANYARGS_DECL'
      RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _01(__VA_ARGS__,
VALUE(*)(VALUE, VALUE), int); \
                                                                           =
  ^
      rb_cairo_surface.c:2368:3: error: incompatible function pointer types
passing 'VALUE (int, VALUE *, VALUE)' (aka 'unsigned long (int, unsigned lo=
ng
*, unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka
'unsigned long (*)(unsigned long, unsigned long)')
[-Wincompatible-function-pointer-types]
        rb_define_method (rb_cCairo_GLTextureSurface, "initialize",
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/local/include/ruby-3.1/ruby/internal/anyargs.h:287:135: note:
expanded from macro 'rb_define_method'
      #define rb_define_method(klass, mid, func, arity)=20=20=20=20=20=20=
=20=20=20=20
RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid),
(func), (arity))
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
                                                            ^~~~~~
      /usr/local/include/ruby-3.1/ruby/internal/anyargs.h:276:1: note: pass=
ing
argument to parameter here
      RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *)
      ^
      /usr/local/include/ruby-3.1/ruby/internal/anyargs.h:255:72: note:
expanded from macro 'RBIMPL_ANYARGS_DECL'
      RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _01(__VA_ARGS__,
VALUE(*)(VALUE, VALUE), int); \
                                                                           =
  ^

    This is because rb_define_method's last argument is the 'arity' of the
    method, and in case of cr_gl_surface_initialize() and
    cr_gl_texture_surface_initialize() it should be -1 to indicate a
    variable number of arguments.

    PR:             271706
    Approved by:    portmgr (buildfix blanket)
    MFH:            2023Q2

 graphics/rubygem-cairo/Makefile                      |  1 +
 .../files/patch-ext_cairo_rb__cairo__surface.c (new) | 20 ++++++++++++++++=
++++
 2 files changed, 21 insertions(+)

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-271706-21402-Go8cub4LfC>