[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openbsd-ports
Subject:    Re: some icu4c fallout
From:       Antoine Jacoutot <ajacoutot () bsdfrog ! org>
Date:       2020-10-30 7:28:50
Message-ID: 20201030072850.GR93136 () janus ! obspm ! bsdfrog ! org
[Download RAW message or body]

On Fri, Oct 30, 2020 at 12:38:35AM +0100, Matthias Kilian wrote:
> Hi,
> 
> it looks like the recent update of icu4c breaks a couple of other
> ports (editors/libreoffice, www/webkitgtk4, x11/qt5/qtwebkit,
> x11/qt5/qtwebengine, textproc/libical so far for my build). The
> reason appears to be that icu4c used to #define TRUE and FALSE but
> no lonber does, and the consuming ports relied on TRUE and FALSE.
> 
> TRUE and FALSE are #defined in include/unicode/umachine.h from icu4c,
> but are now shielded by an
> 
> #if U_DEFINE_FALSE_AND_TRUE || defined(U_IN_DOXYGEN)
> ...
> #endif
> 
> umachine.h also has this comment:
> 
> /**
>  * \def U_DEFINE_FALSE_AND_TRUE
>  * Normally turns off defining macros FALSE=0 & TRUE=1 in public ICU headers.
>  * These obsolete macros sometimes break compilation of other code that
>  * defines enum constants or similar with these names.
>  * C++ has long defined bool/false/true.
>  * C99 also added definitions for these, although as macros; see stdbool.h.
>  *
>  * You may transitionally define U_DEFINE_FALSE_AND_TRUE=1 if you need time to migrate code.
>  *
>  * @internal ICU 68
>  */
> 
> I'm not sure about the best way to fix the current problems -- patch
> icu4c to $define U_DEFINE_FALSE_AND_TRUE 1, patch depending (and
> currently broken) ports to #define U_DEFINE_FALSE_AND_TRUE 1, patch
> depending ports to no longer use TRUE and FALSE (that would be the
> best for submitting upstream).
> 
> Thoughts?

I reverted the update for the time being and will see how to fix those.
Thanks.

-- 
Antoine

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic