Wireshark-dev: Re: [Wireshark-dev] macOS build broken
From: Gerald Combs <gerald@xxxxxxxxxxxxx>
Date: Fri, 24 Apr 2020 09:43:43 -0700
I ran into this recently when upgrading Xcode's command line tools. Builds fail for me when using the SDK that ships with Xcode.app and succeed when using the one that ships with the command line tools:

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.15.4
BuildVersion:	19E287

$ xcodebuild -version 
Xcode 11.4.1
Build version 11E503a

$ sudo xcode-select --reset
$ xcode-select --print-path
/Applications/Xcode.app/Contents/Developer

# From the build directory
$ rm -rf * && cmake -G Ninja .. && ninja
[ build fails ]

$ sudo xcode-select --switch /Library/Developer/CommandLineTools
$ xcode-select --print-path
/Library/Developer/CommandLineTools

$ rm -rf * && cmake -G Ninja .. && ninja
[ build succeeds ]


On 4/24/20 9:27 AM, Lori Jakab wrote:
> I attached my cmake output, in case that helps.
> 
> -Lori
> 
> On Fri, Apr 24, 2020 at 6:21 PM Lori Jakab <lorand.jakab@xxxxxxxxx <mailto:lorand.jakab@xxxxxxxxx>> wrote:
> 
>     On Fri, Apr 24, 2020 at 6:06 PM Graham Bloice <graham.bloice@xxxxxxxxxxxxx <mailto:graham.bloice@xxxxxxxxxxxxx>> wrote:
> 
>         The macOS build slave is coping, according to the CMake output it's using:
> 
>         -- The C compiler identification is AppleClang 11.0.0.11000033 -- The CXX compiler identification is AppleClang 11.0.0.11000033
> 
> 
>     I have the exact same compiler...
>      
> 
>         on osx-10.14-x64.  Presumably that's an older OS.
> 
> 
>     And the same OS version, Mojave, which is the version before Catalina (10.15).
> 
>     I start with a clean state, and do a full build, like this (from just above the wireshark folder):
> 
>     rm -rf build; and mkdir build; and cd build; and cmake -G Ninja ../wireshark; and time ninja -j 10
> 
>     I wonder what's different from the build slave that breaks the build...
> 
>     -Lori
>      
> 
> 
>         On Fri, 24 Apr 2020 at 15:48, Lori Jakab <lorand.jakab@xxxxxxxxx <mailto:lorand.jakab@xxxxxxxxx>> wrote:
> 
>             This particular failure can be fixed by this: https://code.wireshark.org/review/36921
> 
>             However, I get other failures afterwards:
> 
>             FAILED: epan/dissectors/CMakeFiles/dissectors.dir/packet-kerberos.c.o
>             /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -DG_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES -DWS_BUILD_DLL -I. -I/Users/lojakab/src/wireshark-lisp/wireshark -I/usr/local/opt/gettext/include -I/usr/local/include -I/usr/local/Cellar/gnutls/3.6.13/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Kerberos.framework/Headers -I/usr/local/Cellar/lz4/1.9.2/include -I/usr/local/Cellar/nghttp2/1.40.0/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/libxml2 -Iepan/dissectors -I/Users/lojakab/src/wireshark-lisp/wireshark/epan/dissectors -I/Users/lojakab/src/wireshark-lisp/wireshark/epan -isystem /usr/local/Cellar/glib/2.64.2_1/include/glib-2.0 -isystem /usr/local/Cellar/glib/2.64.2_1/lib/glib-2.0/include -fvisibility=hidden  -Qunused-arguments
>             -Wall -Wextra -Wendif-labels -Wpointer-arith -Wformat-security -fwrapv -fno-strict-overflow -Wvla -Waddress -Wattributes -Wdiv-by-zero -Wignored-qualifiers -Wpragmas -Wno-overlength-strings -Wno-long-long -Wheader-guard -Wcomma -Wshorten-64-to-32 -Wframe-larger-than=32768 -Wno-nullability-completeness -Wc++-compat -Wunused-const-variable -Wshadow -Wold-style-definition -Wstrict-prototypes -Werror=implicit -Wno-pointer-sign -std=gnu99  -O2 -g -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.14 -fPIC   -Werror -MD -MT epan/dissectors/CMakeFiles/dissectors.dir/packet-kerberos.c.o -MF epan/dissectors/CMakeFiles/dissectors.dir/packet-kerberos.c.o.d -o epan/dissectors/CMakeFiles/dissectors.dir/packet-kerberos.c.o   -c /Users/lojakab/src/wireshark-lisp/wireshark/epan/dissectors/packet-kerberos.c
>             In file included from ./asn1/kerberos/packet-kerberos-template.c:321:
>             /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Kerberos.framework/Headers/krb5.h:318:174: error: expected ','
>             krb5_boolean KRB5_CALLCONV krb5_is_referral_realm(const krb5_data *) KERBEROS_APPLE_DEPRECATED("use GSS.framework") __API_DEPRECATED("Use GSS.framework", macos(10.0, 10.8)) __API_UNAVAILABLE(macCatalyst);
>                                                                                                                                                                                          ^
>             /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/Availability.h:479:171: note: expanded from macro '__API_UNAVAILABLE'
>                 #define __API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE6,__API_UNAVAILABLE5,__API_UNAVAILABLE4,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1, 0)(__VA_ARGS__)
> 
>             On Fri, Apr 24, 2020 at 4:33 PM Dario Lombardo <lomato@xxxxxxxxx <mailto:lomato@xxxxxxxxx>> wrote:
> 
>                 Hi,
>                 I was aware of such a problem. The travis macOS builder got that while ago.
> 
>                 https://travis-ci.org/github/crondaemon/wireshark
> 
>                 I didn't bisect, but going back in build history, I looks something between 2acbaf584984828855a36105258033020f338c5c and d30a0a2ce7c17f5d695e9ee7647e92d3cc1156bb.
> 
>                 On Fri, Apr 24, 2020 at 3:29 PM Lori Jakab <lorand.jakab@xxxxxxxxx <mailto:lorand.jakab@xxxxxxxxx>> wrote:
> 
>                     Hi,
> 
>                     I'm have been building on macOS Mojave for a while without issues, but for the last few days the build has been broken. I didn't try a git dissect yet to see which commit broke it, but the issue seems to be caused by the usage of the _Nonnull, _Nullable, or _Null_unspecified type specifiers in the 6lowpan dissector.
> 
>                     My compiler is:
> 
>                     > gcc --version
>                     Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
>                     Apple clang version 11.0.0 (clang-1100.0.33.17)
>                     Target: x86_64-apple-darwin18.7.0
>                     Thread model: posix
>                     InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
> 
>                     This is the error: 
> 
>                     In file included from /Users/lojakab/src/wireshark-lisp/wireshark/epan/dissectors/packet-6lowpan.c:19:
>                     In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:64:
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:93:16: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                             unsigned char   *_base;
>                                             ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:93:16: note: insert '_Nullable' if the pointer may be null
>                             unsigned char   *_base;
>                                             ^
>                                               _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:93:16: note: insert '_Nonnull' if the pointer should never be null
>                             unsigned char   *_base;
>                                             ^
>                                               _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:138:32: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                             int     (* _Nullable _read) (void *, char *, int);
>                                                               ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:138:32: note: insert '_Nullable' if the pointer may be null
>                             int     (* _Nullable _read) (void *, char *, int);
>                                                               ^
>                                                                _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:138:32: note: insert '_Nonnull' if the pointer should never be null
>                             int     (* _Nullable _read) (void *, char *, int);
>                                                               ^
>                                                                _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:138:40: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                             int     (* _Nullable _read) (void *, char *, int);
>                                                                       ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:138:40: note: insert '_Nullable' if the pointer may be null
>                             int     (* _Nullable _read) (void *, char *, int);
>                                                                       ^
>                                                                        _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:138:40: note: insert '_Nonnull' if the pointer should never be null
>                             int     (* _Nullable _read) (void *, char *, int);
>                                                                       ^
>                                                                        _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:139:35: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                             fpos_t  (* _Nullable _seek) (void *, fpos_t, int);
>                                                               ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:139:35: note: insert '_Nullable' if the pointer may be null
>                             fpos_t  (* _Nullable _seek) (void *, fpos_t, int);
>                                                               ^
>                                                                _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:139:35: note: insert '_Nonnull' if the pointer should never be null
>                             fpos_t  (* _Nullable _seek) (void *, fpos_t, int);
>                                                               ^
>                                                                _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:140:32: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                             int     (* _Nullable _write)(void *, const char *, int);
>                                                               ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:140:32: note: insert '_Nullable' if the pointer may be null
>                             int     (* _Nullable _write)(void *, const char *, int);
>                                                               ^
>                                                                _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:140:32: note: insert '_Nonnull' if the pointer should never be null
>                             int     (* _Nullable _write)(void *, const char *, int);
>                                                               ^
>                                                                _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:140:46: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                             int     (* _Nullable _write)(void *, const char *, int);
>                                                                             ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:140:46: note: insert '_Nullable' if the pointer may be null
>                             int     (* _Nullable _write)(void *, const char *, int);
>                                                                             ^
>                                                                              _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:140:46: note: insert '_Nonnull' if the pointer should never be null
>                             int     (* _Nullable _write)(void *, const char *, int);
>                                                                             ^
>                                                                              _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:144:18: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                             struct __sFILEX *_extra; /* additions to FILE to not break ABI */
>                                             ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:144:18: note: insert '_Nullable' if the pointer may be null
>                             struct __sFILEX *_extra; /* additions to FILE to not break ABI */
>                                             ^
>                                               _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_stdio.h:144:18: note: insert '_Nonnull' if the pointer should never be null
>                             struct __sFILEX *_extra; /* additions to FILE to not break ABI */
>                                             ^
>                                               _Nonnull
>                     In file included from /Users/lojakab/src/wireshark-lisp/wireshark/epan/dissectors/packet-6lowpan.c:19:
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:67:13: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                     extern FILE *__stdinp;
>                                 ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:67:13: note: insert '_Nullable' if the pointer may be null
>                     extern FILE *__stdinp;
>                                 ^
>                                   _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:67:13: note: insert '_Nonnull' if the pointer should never be null
>                     extern FILE *__stdinp;
>                                 ^
>                                   _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:390:41: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                                      int (* _Nullable)(void *, const char *, int),
>                                                             ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:390:41: note: insert '_Nullable' if the pointer may be null
>                                      int (* _Nullable)(void *, const char *, int),
>                                                             ^
>                                                              _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:390:41: note: insert '_Nonnull' if the pointer should never be null
>                                      int (* _Nullable)(void *, const char *, int),
>                                                             ^
>                                                              _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:390:55: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                                      int (* _Nullable)(void *, const char *, int),
>                                                                           ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:390:55: note: insert '_Nullable' if the pointer may be null
>                                      int (* _Nullable)(void *, const char *, int),
>                                                                           ^
>                                                                            _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:390:55: note: insert '_Nonnull' if the pointer should never be null
>                                      int (* _Nullable)(void *, const char *, int),
>                                                                           ^
>                                                                            _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:391:44: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                                      fpos_t (* _Nullable)(void *, fpos_t, int),
>                                                                ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:391:44: note: insert '_Nullable' if the pointer may be null
>                                      fpos_t (* _Nullable)(void *, fpos_t, int),
>                                                                ^
>                                                                 _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:391:44: note: insert '_Nonnull' if the pointer should never be null
>                                      fpos_t (* _Nullable)(void *, fpos_t, int),
>                                                                ^
>                                                                 _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:392:41: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                                      int (* _Nullable)(void *));
>                                                             ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:392:41: note: insert '_Nullable' if the pointer may be null
>                                      int (* _Nullable)(void *));
>                                                             ^
>                                                              _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:392:41: note: insert '_Nonnull' if the pointer should never be null
>                                      int (* _Nullable)(void *));
>                                                             ^
>                                                              _Nonnull
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:388:6: error: pointer is missing a nullability type specifier
>                           (_Nonnull, _Nullable, or _Null_unspecified) [-Werror,-Wnullability-completeness]
>                     FILE    *funopen(const void *,
>                             ^
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:388:6: note: insert '_Nullable' if the pointer may be null
>                     FILE    *funopen(const void *,
>                             ^
>                               _Nullable
>                     /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h:388:6: note: insert '_Nonnull' if the pointer should never be null
>                     FILE    *funopen(const void *,
>                             ^
>                               _Nonnull
>                     3 errors generated.
>                     make[2]: *** [epan/dissectors/CMakeFiles/dissectors.dir/packet-6lowpan.c.o] Error 1
>                     make[2]: *** Waiting for unfinished jobs....
>                     make[1]: *** [epan/dissectors/CMakeFiles/dissectors.dir/all] Error 2
> 
>                     This code builds on Linux, and I assume some older version of macOS on the buildbots too. Should I give it a go to fixing this? I'm not the 6lowpan dissector author/maintainer.
> 
>                     -Lori
> 
> 
> 
>         -- 
>         Graham Bloice
>         ___________________________________________________________________________
>         Sent via:    Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx <mailto:wireshark-dev@xxxxxxxxxxxxx>>
>         Archives:    https://www.wireshark.org/lists/wireshark-dev
>         Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>                      mailto:wireshark-dev-request@xxxxxxxxxxxxx <mailto:wireshark-dev-request@xxxxxxxxxxxxx>?subject=unsubscribe
> 
> 
> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx>
> Archives:    https://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>              mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>