From d4afd14ff1a7bfd2cf5e91e9a374497b1a5ca265 Mon Sep 17 00:00:00 2001 From: Nicolas Thill Date: Tue, 23 Jun 2015 01:06:36 +0200 Subject: [PATCH] erlang: fix musl compatibility gethostbyname_r is available when _GNU_SOURCE is defined, add a patch to check for it instead of __GLIBC__, build with -D_GNU_SOURCE, bump release number Signed-off-by: Nicolas Thill --- lang/erlang/Makefile | 5 ++++- lang/erlang/patches/102-musl_compat.patch | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 lang/erlang/patches/102-musl_compat.patch diff --git a/lang/erlang/Makefile b/lang/erlang/Makefile index 2423f374dd..47c8b1198b 100644 --- a/lang/erlang/Makefile +++ b/lang/erlang/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=erlang PKG_VERSION:=17.5 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz PKG_SOURCE_URL:= http://www.erlang.org/download/ \ @@ -232,6 +232,8 @@ HOST_CONFIGURE_ARGS += \ --disable-smp-support \ --without-javac +HOST_CFLAGS += -D_GNU_SOURCE + define Host/Compile $(MAKE) -C $(HOST_BUILD_DIR) all endef @@ -257,6 +259,7 @@ CONFIGURE_VARS += \ erl_xcomp_getaddrinfo=no \ erl_xcomp_sysroot="$(STAGING_DIR)" +EXTRA_CFLAGS+=-D_GNU_SOURCE EXTRA_LDFLAGS+=-lz define Build/Compile diff --git a/lang/erlang/patches/102-musl_compat.patch b/lang/erlang/patches/102-musl_compat.patch new file mode 100644 index 0000000000..d23900ed2f --- /dev/null +++ b/lang/erlang/patches/102-musl_compat.patch @@ -0,0 +1,11 @@ +--- a/lib/erl_interface/src/connect/ei_resolve.c ++++ b/lib/erl_interface/src/connect/ei_resolve.c +@@ -642,7 +642,7 @@ struct hostent *ei_gethostbyname_r(const + #ifndef HAVE_GETHOSTBYNAME_R + return my_gethostbyname_r(name,hostp,buffer,buflen,h_errnop); + #else +-#if (defined(__GLIBC__) || (__FreeBSD_version >= 602000) || defined(__DragonFly__) || defined(__ANDROID__)) ++#if (defined(_GNU_SOURCE) || (__FreeBSD_version >= 602000) || defined(__DragonFly__) || defined(__ANDROID__)) + struct hostent *result; + + gethostbyname_r(name, hostp, buffer, buflen, &result, h_errnop);