Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 May 2023 09:13:39 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: e5a021541793 - main - x11/xorgproto: ensure Xos.h does not define index() as a macro
Message-ID:  <202305210913.34L9DdkN057913@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by dim:

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

commit e5a0215417930a60ac8fbbc630fad6aa354446e5
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-05-20 15:15:41 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-05-21 09:12:30 +0000

    x11/xorgproto: ensure Xos.h does not define index() as a macro
    
    During the exp-run for clang 16, it turned out that Xos.h defines
    index() and rindex() as preprocessor macros, and this causes many
    problems with libc++ headers [1]:
    
      /usr/include/c++/v1/variant:532:39: error: too few arguments provided to function-like macro invocation
          return __at(__fmatrix, __vs.index()...)(
                                            ^
      /usr/local/include/X11/Xos.h:67:12: note: macro 'index' defined here
      #   define index(s,c) (strchr((s),(c)))
                 ^
      /usr/include/c++/v1/variant:813:18: error: too few arguments provided to function-like macro invocation
          return index() == variant_npos;
                       ^
      /usr/local/include/X11/Xos.h:67:12: note: macro 'index' defined here
      #   define index(s,c) (strchr((s),(c)))
                 ^
      /usr/include/c++/v1/variant:817:25: error: expected ';' at end of declaration list
        constexpr size_t index() const noexcept {
                              ^
      /usr/include/c++/v1/variant:802:9: error: member initializer '__data' does not name a non-static data member or base class
            : __data(__tag), __index(__variant_npos<__index_t>) {}
              ^~~~~~~~~~~~~
      /usr/include/c++/v1/variant:808:9: error: member initializer '__data' does not name a non-static data member or base class
              __data(in_place_index<_Ip>, _VSTD::forward<_Args>(__args)...),
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/c++/v1/variant:920:23: error: too few arguments provided to function-like macro invocation
                __rhs.index(),
                            ^
      /usr/local/include/X11/Xos.h:67:12: note: macro 'index' defined here
      #   define index(s,c) (strchr((s),(c)))
                 ^
    
    Add defined(__FreeBSD__) to Xos.h's #if block to include <strings.h>
    instead, so it will get our regular index() and rindex() declarations
    instead. This has also been sent upstream [2].
    
    [1] <https://pkg-status.freebsd.org/gohan05/data/mainamd64PR271047-default/2023-05-14_19h35m09s/logs/errors/scim-1.4.9_7.log>;
    [2] <https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/73>;
    
    PR:             271533
    Approved by:    manu (maintainer)
    MFH:            2023Q2
---
 x11/xorgproto/Makefile                      |  1 +
 x11/xorgproto/files/patch-include_X11_Xos.h | 11 +++++++++++
 2 files changed, 12 insertions(+)

diff --git a/x11/xorgproto/Makefile b/x11/xorgproto/Makefile
index f11ff7ab68a1..715d3fd010a0 100644
--- a/x11/xorgproto/Makefile
+++ b/x11/xorgproto/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	xorgproto
 DISTVERSION=	2022.1
+PORTREVISION=	1
 CATEGORIES=	x11
 
 MAINTAINER=	x11@FreeBSD.org
diff --git a/x11/xorgproto/files/patch-include_X11_Xos.h b/x11/xorgproto/files/patch-include_X11_Xos.h
new file mode 100644
index 000000000000..9c60de1c0b51
--- /dev/null
+++ b/x11/xorgproto/files/patch-include_X11_Xos.h
@@ -0,0 +1,11 @@
+--- include/X11/Xos.h.orig	2022-04-21 00:48:08 UTC
++++ include/X11/Xos.h
+@@ -60,7 +60,7 @@ in this Software without prior written authorization f
+  */
+ 
+ # include <string.h>
+-# if defined(__SCO__) || defined(__UNIXWARE__) || defined(__sun) || defined(__CYGWIN__) || defined(_AIX) || defined(__APPLE__)
++# if defined(__SCO__) || defined(__UNIXWARE__) || defined(__sun) || defined(__CYGWIN__) || defined(_AIX) || defined(__APPLE__) || defined(__FreeBSD__)
+ #  include <strings.h>
+ # else
+ #  ifndef index



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202305210913.34L9DdkN057913>