Patchwork [02/22] gettext: fix tools build failure for uClibc toolchain with C++

login
register
mail settings
Submitter Thomas Petazzoni
Date March 24, 2013, 8:26 a.m.
Message ID <1364113606-20836-3-git-send-email-thomas.petazzoni@free-electrons.com>
Download mbox | patch
Permalink /patch/230382/
State Accepted
Commit a452db1d822e88f0fe00bf6e65d5979a2f221d72
Headers show

Comments

Thomas Petazzoni - March 24, 2013, 8:26 a.m.
From: Gustavo Zacarias <gustavo@zacarias.com.ar>

Fixes:
http://autobuild.buildroot.net/results/e5777d754653edef9d8c8558f04c2836734f2c25/

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/gettext/gettext-fix_rpl_gettimeofday.patch |  282 ++++++++++++++++++++
 1 file changed, 282 insertions(+)
 create mode 100644 package/gettext/gettext-fix_rpl_gettimeofday.patch
Peter Korsgaard - March 24, 2013, 11:43 a.m.
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> From: Gustavo Zacarias <gustavo@zacarias.com.ar>
 Thomas> Fixes:
 Thomas> http://autobuild.buildroot.net/results/e5777d754653edef9d8c8558f04c2836734f2c25/

Committed, thanks.

Patch

diff --git a/package/gettext/gettext-fix_rpl_gettimeofday.patch b/package/gettext/gettext-fix_rpl_gettimeofday.patch
new file mode 100644
index 0000000..e97ceb2
--- /dev/null
+++ b/package/gettext/gettext-fix_rpl_gettimeofday.patch
@@ -0,0 +1,282 @@ 
+Newer sys_time.in.h from gnulib breaks on uClibc with C++ so roll back
+to a previous version that's known to work.
+
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+
+diff -Nura gettext-0.18.2.1.orig/gettext-tools/gnulib-lib/sys_time.in.h gettext-0.18.2.1/gettext-tools/gnulib-lib/sys_time.in.h
+--- gettext-0.18.2.1.orig/gettext-tools/gnulib-lib/sys_time.in.h	2013-03-12 09:17:10.530475932 -0300
++++ gettext-0.18.2.1/gettext-tools/gnulib-lib/sys_time.in.h	2013-03-19 12:00:17.557958255 -0300
+@@ -1,6 +1,6 @@
+ /* Provide a more complete sys/time.h.
+ 
+-   Copyright (C) 2007-2013 Free Software Foundation, Inc.
++   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -17,34 +17,37 @@
+ 
+ /* Written by Paul Eggert.  */
+ 
+-#ifndef _@GUARD_PREFIX@_SYS_TIME_H
+-
+ #if __GNUC__ >= 3
+ @PRAGMA_SYSTEM_HEADER@
+ #endif
+ @PRAGMA_COLUMNS@
+ 
+-/* The include_next requires a split double-inclusion guard.  */
+-#if @HAVE_SYS_TIME_H@
+-# @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
+-#endif
++#if defined _@GUARD_PREFIX@_SYS_TIME_H
+ 
+-#ifndef _@GUARD_PREFIX@_SYS_TIME_H
+-#define _@GUARD_PREFIX@_SYS_TIME_H
++/* Simply delegate to the system's header, without adding anything.  */
++# if @HAVE_SYS_TIME_H@
++#  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
++# endif
+ 
+-#if ! @HAVE_SYS_TIME_H@
+-# include <time.h>
+-#endif
++#else
++
++# define _@GUARD_PREFIX@_SYS_TIME_H
++
++# if @HAVE_SYS_TIME_H@
++#  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
++# else
++#  include <time.h>
++# endif
+ 
+ /* On native Windows with MSVC, get the 'struct timeval' type.
+    Also, on native Windows with a 64-bit time_t, where we are overriding the
+    'struct timeval' type, get all declarations of system functions whose
+    signature contains 'struct timeval'.  */
+-#if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H
+-# define _GL_INCLUDING_WINSOCK2_H
+-# include <winsock2.h>
+-# undef _GL_INCLUDING_WINSOCK2_H
+-#endif
++# if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H
++#  define _GL_INCLUDING_WINSOCK2_H
++#  include <winsock2.h>
++#  undef _GL_INCLUDING_WINSOCK2_H
++# endif
+ 
+ /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+ 
+@@ -52,112 +55,112 @@
+ 
+ /* The definition of _GL_WARN_ON_USE is copied here.  */
+ 
+-#ifdef __cplusplus
++# ifdef __cplusplus
+ extern "C" {
+-#endif
++# endif
+ 
+-#if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@
++# if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@
+ 
+-# if @REPLACE_STRUCT_TIMEVAL@
+-#  define timeval rpl_timeval
+-# endif
++#  if @REPLACE_STRUCT_TIMEVAL@
++#   define timeval rpl_timeval
++#  endif
+ 
+-# if !GNULIB_defined_struct_timeval
++#  if !GNULIB_defined_struct_timeval
+ struct timeval
+ {
+   time_t tv_sec;
+   long int tv_usec;
+ };
+-#  define GNULIB_defined_struct_timeval 1
+-# endif
++#   define GNULIB_defined_struct_timeval 1
++#  endif
+ 
+-#endif
++# endif
+ 
+-#ifdef __cplusplus
++# ifdef __cplusplus
+ }
+-#endif
++# endif
+ 
+-#if @GNULIB_GETTIMEOFDAY@
+-# if @REPLACE_GETTIMEOFDAY@
+-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-#   undef gettimeofday
+-#   define gettimeofday rpl_gettimeofday
+-#  endif
++# if @GNULIB_GETTIMEOFDAY@
++#  if @REPLACE_GETTIMEOFDAY@
++#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++#    undef gettimeofday
++#    define gettimeofday rpl_gettimeofday
++#   endif
+ _GL_FUNCDECL_RPL (gettimeofday, int,
+-                  (struct timeval *restrict, void *restrict)
++                  (struct timeval *__restrict, void *__restrict)
+                   _GL_ARG_NONNULL ((1)));
+ _GL_CXXALIAS_RPL (gettimeofday, int,
+-                  (struct timeval *restrict, void *restrict));
+-# else
+-#  if !@HAVE_GETTIMEOFDAY@
++                  (struct timeval *__restrict, void *__restrict));
++#  else
++#   if !@HAVE_GETTIMEOFDAY@
+ _GL_FUNCDECL_SYS (gettimeofday, int,
+-                  (struct timeval *restrict, void *restrict)
++                  (struct timeval *__restrict, void *__restrict)
+                   _GL_ARG_NONNULL ((1)));
+-#  endif
++#   endif
+ /* Need to cast, because on glibc systems, by default, the second argument is
+                                                   struct timezone *.  */
+ _GL_CXXALIAS_SYS_CAST (gettimeofday, int,
+-                       (struct timeval *restrict, void *restrict));
+-# endif
++                       (struct timeval *__restrict, void *__restrict));
++#  endif
+ _GL_CXXALIASWARN (gettimeofday);
+-#elif defined GNULIB_POSIXCHECK
+-# undef gettimeofday
+-# if HAVE_RAW_DECL_GETTIMEOFDAY
++# elif defined GNULIB_POSIXCHECK
++#  undef gettimeofday
++#  if HAVE_RAW_DECL_GETTIMEOFDAY
+ _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - "
+                  "use gnulib module gettimeofday for portability");
++#  endif
+ # endif
+-#endif
+ 
+ /* Hide some function declarations from <winsock2.h>.  */
+ 
+-#if defined _MSC_VER && @HAVE_WINSOCK2_H@
+-# if !defined _@GUARD_PREFIX@_UNISTD_H
+-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-#   undef close
+-#   define close close_used_without_including_unistd_h
+-#  else
++# if defined _MSC_VER && @HAVE_WINSOCK2_H@
++#  if !defined _@GUARD_PREFIX@_UNISTD_H
++#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++#    undef close
++#    define close close_used_without_including_unistd_h
++#   else
+      _GL_WARN_ON_USE (close,
+                       "close() used without including <unistd.h>");
+-#  endif
+-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-#   undef gethostname
+-#   define gethostname gethostname_used_without_including_unistd_h
+-#  else
++#   endif
++#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++#    undef gethostname
++#    define gethostname gethostname_used_without_including_unistd_h
++#   else
+      _GL_WARN_ON_USE (gethostname,
+                       "gethostname() used without including <unistd.h>");
++#   endif
+ #  endif
+-# endif
+-# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
+-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-#   undef socket
+-#   define socket              socket_used_without_including_sys_socket_h
+-#   undef connect
+-#   define connect             connect_used_without_including_sys_socket_h
+-#   undef accept
+-#   define accept              accept_used_without_including_sys_socket_h
+-#   undef bind
+-#   define bind                bind_used_without_including_sys_socket_h
+-#   undef getpeername
+-#   define getpeername         getpeername_used_without_including_sys_socket_h
+-#   undef getsockname
+-#   define getsockname         getsockname_used_without_including_sys_socket_h
+-#   undef getsockopt
+-#   define getsockopt          getsockopt_used_without_including_sys_socket_h
+-#   undef listen
+-#   define listen              listen_used_without_including_sys_socket_h
+-#   undef recv
+-#   define recv                recv_used_without_including_sys_socket_h
+-#   undef send
+-#   define send                send_used_without_including_sys_socket_h
+-#   undef recvfrom
+-#   define recvfrom            recvfrom_used_without_including_sys_socket_h
+-#   undef sendto
+-#   define sendto              sendto_used_without_including_sys_socket_h
+-#   undef setsockopt
+-#   define setsockopt          setsockopt_used_without_including_sys_socket_h
+-#   undef shutdown
+-#   define shutdown            shutdown_used_without_including_sys_socket_h
+-#  else
++#  if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
++#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++#    undef socket
++#    define socket              socket_used_without_including_sys_socket_h
++#    undef connect
++#    define connect             connect_used_without_including_sys_socket_h
++#    undef accept
++#    define accept              accept_used_without_including_sys_socket_h
++#    undef bind
++#    define bind                bind_used_without_including_sys_socket_h
++#    undef getpeername
++#    define getpeername         getpeername_used_without_including_sys_socket_h
++#    undef getsockname
++#    define getsockname         getsockname_used_without_including_sys_socket_h
++#    undef getsockopt
++#    define getsockopt          getsockopt_used_without_including_sys_socket_h
++#    undef listen
++#    define listen              listen_used_without_including_sys_socket_h
++#    undef recv
++#    define recv                recv_used_without_including_sys_socket_h
++#    undef send
++#    define send                send_used_without_including_sys_socket_h
++#    undef recvfrom
++#    define recvfrom            recvfrom_used_without_including_sys_socket_h
++#    undef sendto
++#    define sendto              sendto_used_without_including_sys_socket_h
++#    undef setsockopt
++#    define setsockopt          setsockopt_used_without_including_sys_socket_h
++#    undef shutdown
++#    define shutdown            shutdown_used_without_including_sys_socket_h
++#   else
+      _GL_WARN_ON_USE (socket,
+                       "socket() used without including <sys/socket.h>");
+      _GL_WARN_ON_USE (connect,
+@@ -186,18 +189,17 @@
+                       "setsockopt() used without including <sys/socket.h>");
+      _GL_WARN_ON_USE (shutdown,
+                       "shutdown() used without including <sys/socket.h>");
++#   endif
+ #  endif
+-# endif
+-# if !defined _@GUARD_PREFIX@_SYS_SELECT_H
+-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-#   undef select
+-#   define select select_used_without_including_sys_select_h
+-#  else
++#  if !defined _@GUARD_PREFIX@_SYS_SELECT_H
++#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++#    undef select
++#    define select select_used_without_including_sys_select_h
++#   else
+      _GL_WARN_ON_USE (select,
+                       "select() used without including <sys/select.h>");
++#   endif
+ #  endif
+ # endif
+-#endif
+ 
+ #endif /* _@GUARD_PREFIX@_SYS_TIME_H */
+-#endif /* _@GUARD_PREFIX@_SYS_TIME_H */