From d59a97b31b6a8b24c422db21cfb1fa45abc40df3 Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Tue, 1 Dec 2015 21:50:00 -0500 Subject: [PATCH 1/1] nodejs: Fix 64-bit builds --- packages/nodejs/build.sh | 4 +++ packages/nodejs/deps-cares-src-ares_init.c.patch | 39 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 packages/nodejs/deps-cares-src-ares_init.c.patch diff --git a/packages/nodejs/build.sh b/packages/nodejs/build.sh index 0983bfb8..0e6a1d50 100644 --- a/packages/nodejs/build.sh +++ b/packages/nodejs/build.sh @@ -16,6 +16,10 @@ termux_step_configure () { TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --dest-cpu=arm" elif [ $TERMUX_ARCH = "i686" ]; then TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --dest-cpu=ia32" + elif [ $TERMUX_ARCH = "aarch64" ]; then + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --dest-cpu=arm64" + elif [ $TERMUX_ARCH = "x86_64" ]; then + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --dest-cpu=x64" else echo "Unsupported arch: $TERMUX_ARCH" exit 1 diff --git a/packages/nodejs/deps-cares-src-ares_init.c.patch b/packages/nodejs/deps-cares-src-ares_init.c.patch new file mode 100644 index 00000000..ec2f1c36 --- /dev/null +++ b/packages/nodejs/deps-cares-src-ares_init.c.patch @@ -0,0 +1,39 @@ +diff -u -r ../node-v4.2.2/deps/cares/src/ares_init.c ./deps/cares/src/ares_init.c +--- ../node-v4.2.2/deps/cares/src/ares_init.c 2015-11-03 15:00:03.000000000 -0500 ++++ ./deps/cares/src/ares_init.c 2015-12-01 21:18:14.327288234 -0500 +@@ -43,7 +43,35 @@ + #endif + + #if defined(ANDROID) || defined(__ANDROID__) ++# ifdef __LP64__ ++# include ++// http://stackoverflow.com/questions/28413530/api-to-get-android-system-properties-is-removed-in-arm64-platforms ++// Android 'L' makes __system_property_get a non-global symbol. ++// Here we provide a stub which loads the symbol from libc via dlsym. ++#define PROP_NAME_MAX 31 ++#define PROP_VALUE_MAX 91 ++typedef int (*PFN_SYSTEM_PROP_GET)(const char *, char *); ++int __system_property_get(const char* name, char* value) ++{ ++ static PFN_SYSTEM_PROP_GET __real_system_property_get = NULL; ++ if (!__real_system_property_get) { ++ // libc.so should already be open, get a handle to it. ++ void *handle = dlopen("libc.so", RTLD_NOLOAD); ++ if (!handle) { ++ printf("Cannot dlopen libc.so: %s.\n", dlerror()); ++ } else { ++ __real_system_property_get = (PFN_SYSTEM_PROP_GET)dlsym(handle, "__system_property_get"); ++ } ++ if (!__real_system_property_get) { ++ printf("Cannot resolve __system_property_get(): %s.\n", dlerror()); ++ } ++ } ++ return (*__real_system_property_get)(name, value); ++} ++# else + #include ++#endif ++ + /* From the Bionic sources */ + #define DNS_PROP_NAME_PREFIX "net.dns" + #define MAX_DNS_PROPERTIES 8 -- 2.11.0