--- Begin Message ---
Subject: |
26.0.50; GNU LIB build fails on macOS 10.12.4 |
Date: |
Sat, 8 Apr 2017 09:14:25 +0200 |
The latest git checkout fails on mac OS 10.12.4.
CC fstatat.o
In file included from fstatat.c:45:
In file included from ./fcntl.h:67:
In file included from ./unistd.h:135:
In file included from ./getopt_pfx_core.h:52:
./getopt_core.h:91:79: error: expected ';' after top level declarator
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
^
./getopt_core.h:92:28: error: expected identifier or '('
__THROW __nonnull ((2, 3));
^
./getopt_core.h:92:28: error: expected ')'
./getopt_core.h:92:27: note: to match this '('
__THROW __nonnull ((2, 3));
^
3 errors generated.
make[2]: *** [fstatat.o] Error 1
make[1]: *** [lib] Error 2
$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr
--with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.38)
Target: x86_64-apple-darwin16.5.0
In GNU Emacs 26.0.50 (build 2, x86_64-apple-darwin16.4.0, X toolkit, Xaw3d
scroll bars)
of 2017-03-26 built on ate.maierh
Repository revision: 082e2cb3f40b717e4c00d31532927c9693b7cb9b
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
Recent messages:
Omitting...
Omitted 54 lines.
Mark saved where search started
Updating buffer list...
Formats have changed, recompiling...done
Updating buffer list...done
Commands: m, u, t, RET, g, k, S, D, Q; q to quit; h for help
Mark set
previous-line: Beginning of buffer
Mark saved where search started
Quit [2 times]
Configured using:
'configure --without-ns --with-x-toolkit=lucid
--x-includes=/opt/X11/include --x-libraries=/opt/X11/lib --without-pop
--without-gsettings --with-jpeg=no --with-png=no --with-gif=no
--with-tiff=no'
--- End Message ---
--- Begin Message ---
Subject: |
Re: GNU LIB build fails on macOS 10.12.4 |
Date: |
Sun, 9 Apr 2017 01:03:30 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 |
Zack Weinberg wrote:
This patch is incomplete.
Yes, it was the Emacs patch, not the Gnulib patch. I'll attach a complete Gnulib
patch.
If gnulib cannot use __nonnull in
getopt_{core,ext}.h, then there is no point trying to define it in
getopt_cdefs.h.
Good point, I've removed that in the attached.
And you're going to need to put snippet/arg-nonnull
back in the module file for this to work at all, aren't you?
Yes, that's in the attached patch.
From glibc's point of view, I think it would be better if
getopt_core.h and getopt_ext.h simply assumed _GL_ARG_NONNULL to be
available; we can add it to either our getopt.h wrapper or to
sys/cdefs.h - I don't want to make that call unilaterally.
By "our getopt.h wrapper" do you mean a file in glibc but not in Gnulib? If so,
this doesn't affect Gnulib. I suspect _GL_ARG_NONNULL logically belongs in
sys/cdefs.h but it should also work to put it into the getopt.h wrapper.
(Do you
know of a complete list of _GL_ macros that may appear in _public_
header files?)
I don't know of an explicit list. You can look at all the .h files listed in the
Files: sections of gnulib/modules/snippet/*. For example, the
snippet/arg-nonnull module defines _GL_ARG_NONNULL, the snippet/_Noreturn module
defines _Noreturn, and so forth. There are quite a few such macros, and (as
_Noreturn indicates) they don't all begin with _GL_.
I installed the attached into Gnulib and merged it into Emacs, and am boldly
marking the Emacs bug (Bug#26398) as done. I think there still needs to be some
changes done on the proposed change to glibc, to define _GL_ARG_NONNULL
somewhere for glibc.
0001-getopt-port-recent-getopt-changes-to-macOS.patch
Description: Text Data
--- End Message ---