[Spice-devel] [PATCH spice-gtk v2 4/4] Add check for macOS, disable ucontext on macOS (deprecated)
Frediano Ziglio
fziglio at redhat.com
Fri May 12 13:29:03 UTC 2017
>
> > On 11 May 2017, at 12:56, Daniel P. Berrange <berrange at redhat.com> wrote:
> >
> > On Thu, May 11, 2017 at 12:47:08PM +0200, Christophe de Dinechin wrote:
> >> From: Christophe de Dinechin <dinechin at redhat.com>
> >>
> >> Signed-off-by: Christophe de Dinechin <dinechin at redhat.com>
> >> ---
> >> configure.ac | 14 ++++++++++++++
> >> 1 file changed, 14 insertions(+)
> >>
> >> diff --git a/configure.ac b/configure.ac
> >> index 74b5811..ecab365 100644
> >> --- a/configure.ac
> >> +++ b/configure.ac
> >> @@ -62,6 +62,18 @@ esac
> >> AC_MSG_RESULT([$os_win32])
> >> AM_CONDITIONAL([OS_WIN32],[test "$os_win32" = "yes"])
> >>
> >> +AC_MSG_CHECKING([for native macOS])
> >> +case "$host_os" in
> >> + *darwin*)
> >> + os_mac=yes
> >> + ;;
> >> + *)
> >> + os_mac=no
> >> + ;;
> >> +esac
> >> +AC_MSG_RESULT([$os_mac])
> >> +AM_CONDITIONAL([OS_MAC],[test "$os_mac" = "yes"])
> >> +
> >> AC_CHECK_HEADERS([sys/socket.h netinet/in.h arpa/inet.h])
> >> AC_CHECK_HEADERS([termios.h])
> >> AC_CHECK_HEADERS([epoxy/egl.h],
> >> @@ -468,6 +480,8 @@ esac
> >> if test "$with_coroutine" = "auto"; then
> >> if test "$os_win32" = "yes"; then
> >> with_coroutine=winfiber
> >> + elif test "$os_mac" = "yes"; then
> >> + with_coroutine=gthread
> >> else
> >> with_coroutine=ucontext
> >> fi
> >
> > Despite ucontext being deprecated we are still better off using that &
> > ignoring the warnings, than using the gthread impl.
>
> Yes, I remember you explained the benefits of keeping ucontext. But for the
> moment at least, on macOS, it is not a warning:
>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ucontext.h:43:2:
> error:
> The deprecated ucontext routines require _XOPEN_SOURCE to be defined
> #error The deprecated ucontext routines require _XOPEN_SOURCE to be defined
> ^
> 1 error generated.
>
> So I can:
> - Add the error in the patch description
> - Attempt to define _XOPEN_SOURCE in the configuration. I’m concerned about
> side effects.
>
> The latter leads to another can of worms. Notably, the macro container_of
> triggers the alignment warning for container_of, so I have a set of
> alignment warnings, and a set of deprecation warnings. But it builds. The
> incremental patch would be something like:
>
>
> diff --git a/configure.ac b/configure.ac
> index ecab365..8b433ba 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -481,7 +481,8 @@ if test "$with_coroutine" = "auto"; then
> if test "$os_win32" = "yes"; then
> with_coroutine=winfiber
> elif test "$os_mac" = "yes"; then
> - with_coroutine=gthread
> + with_coroutine=ucontext
> + AC_DEFINE([_XOPEN_SOURCE], [1], [Define _XOPEN_SOURCE on macOS for
> ucontext])
> else
> with_coroutine=ucontext
> fi
> diff --git a/src/continuation.h b/src/continuation.h
> index 675a257..cbca06e 100644
> --- a/src/continuation.h
> +++ b/src/continuation.h
> @@ -49,7 +49,7 @@ int cc_swap(struct continuation *from, struct continuation
> *to);
>
> #define offset_of(type, member) ((unsigned long)(&((type *)0)->member))
> #define container_of(obj, type, member) \
> - (type *)(((char *)obj) - offset_of(type, member))
> + (type *)(void *)(((char *)obj) - offset_of(type, member))
>
> #endif
> /*
>
This change is ok. If it was a member of a structure surely the
structure must be aligned, if not the code that allocated the structure
is broken, not container_of.
Wondering why this change is needed. Maybe code using ucontext is
causing it?
> Would that be better in your opinion?
>
>
> Christophe
>
> >
> > Regards,
> > Daniel
Frediano
More information about the Spice-devel
mailing list