nodejs: Fix 64-bit builds
authorFredrik Fornwall <fredrik@fornwall.net>
Wed, 2 Dec 2015 02:50:00 +0000 (21:50 -0500)
committerFredrik Fornwall <fredrik@fornwall.net>
Wed, 2 Dec 2015 02:50:00 +0000 (21:50 -0500)
packages/nodejs/build.sh
packages/nodejs/deps-cares-src-ares_init.c.patch [new file with mode: 0644]

index 0983bfb..0e6a1d5 100644 (file)
@@ -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 (file)
index 0000000..ec2f1c3
--- /dev/null
@@ -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 <dlfcn.h>
++// 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 <sys/system_properties.h>
++#endif
++
+ /* From the Bionic sources */
+ #define DNS_PROP_NAME_PREFIX  "net.dns"
+ #define MAX_DNS_PROPERTIES    8