lol

neko: Fix build against glibc 2.26

The header file xlocale.h has been removed in glibc 2.26.

Quoting the release notes[1]:

* The nonstandard header <xlocale.h> has been removed. Most programs
should use <locale.h> instead. If you have a specific need for the
definition of locale_t with no other declarations, please contact
libc-alpha@sourceware.org and explain.

I've backported HaxeFoundation/neko@e286c8f3301fa443255a3101d14b73924670
against version 2.1.0 and the build now succeeds.

Signed-off-by: aszlig <aszlig@nix.build>

aszlig bb0b0822 845aae9c

+62
+3
pkgs/development/compilers/neko/default.nix
··· 30 30 + "c6d9c6d796200990b3b6a53a4dc716c9192398e6.patch"; 31 31 sha256 = "1pq0qhhb9gbhc3zbgylwp0amhwsz0q0ggpj6v2xgv0hfy7d63rcd"; 32 32 }) 33 + # Glibc 2.26 no longer has xlocale.h, patch backported from upstream commit 34 + # e286c8f3301fa443255a3101d14b7392467051b8. 35 + ./xlocale-fix.patch 33 36 ]; 34 37 35 38 buildInputs =
+59
pkgs/development/compilers/neko/xlocale-fix.patch
··· 1 + commit 31d3ac3d691b2a1b07991e67302fd52b0f409cac 2 + Author: Andy Li <andy@onthewings.net> 3 + Date: Thu Jul 13 13:23:33 2017 +0800 4 + 5 + include xlocale.h only if it is available since it is removed in recent glibc 6 + 7 + see: https://bugzilla.redhat.com/show_bug.cgi?id=1464244 8 + 9 + (Backported from e286c8f3301fa443255a3101d14b7392467051b8) 10 + 11 + diff --git a/CMakeLists.txt b/CMakeLists.txt 12 + index 8de1702..d64cab9 100644 13 + --- a/CMakeLists.txt 14 + +++ b/CMakeLists.txt 15 + @@ -1,5 +1,6 @@ 16 + cmake_minimum_required(VERSION 2.8.7) 17 + 18 + +include(CheckIncludeFile) 19 + project(neko C) 20 + 21 + set(CMAKE_OSX_ARCHITECTURES x86_64) 22 + @@ -48,6 +49,8 @@ set(NEKO_VERSION_MAJOR 2) 23 + set(NEKO_VERSION_MINOR 1) 24 + set(NEKO_VERSION_PATCH 0) 25 + 26 + +check_include_file(xlocale.h HAVE_XLOCALE_H) 27 + + 28 + configure_file ( 29 + "${CMAKE_SOURCE_DIR}/vm/neko.h.in" 30 + "${CMAKE_BINARY_DIR}/neko.h" 31 + diff --git a/libs/std/sys.c b/libs/std/sys.c 32 + index 8003d41..ae0cfee 100644 33 + --- a/libs/std/sys.c 34 + +++ b/libs/std/sys.c 35 + @@ -41,7 +41,11 @@ 36 + # include <sys/time.h> 37 + # include <sys/times.h> 38 + # include <sys/wait.h> 39 + +#ifdef HAVE_XLOCALE_H 40 + # include <xlocale.h> 41 + +#else 42 + +# include <locale.h> 43 + +#endif 44 + #endif 45 + 46 + #ifdef NEKO_MAC 47 + diff --git a/vm/neko.h.in b/vm/neko.h.in 48 + index bb9ec1b..147ecce 100644 49 + --- a/vm/neko.h.in 50 + +++ b/vm/neko.h.in 51 + @@ -88,6 +88,8 @@ 52 + # include <stdint.h> 53 + #endif 54 + 55 + +#cmakedefine HAVE_XLOCALE_H 56 + + 57 + #define NEKO_VERSION_MAJOR @NEKO_VERSION_MAJOR@ 58 + #define NEKO_VERSION_MINOR @NEKO_VERSION_MINOR@ 59 + #define NEKO_VERSION_PATCH @NEKO_VERSION_PATCH@