chiark / gitweb /
openjdk-9-headless: make it build (at least on arm) (#820)
authorVishal Biswas <vshlbiswas@ymail.com>
Sun, 5 Mar 2017 13:23:52 +0000 (18:53 +0530)
committerFredrik Fornwall <fredrik@fornwall.net>
Sun, 5 Mar 2017 13:23:52 +0000 (14:23 +0100)
switch from jdk9/dev to mobile/dev repo
switch from tag based to changeset based build
add patch to use our getgr{gid,nam}_r from grp.h
remove all old patches
clean up code big time (no more custom patch format)

disabled-packages/openjdk-9-headless/build.sh
disabled-packages/openjdk-9-headless/getgr_r.patch [new file with mode: 0644]
disabled-packages/openjdk-9-headless/libpthread.diff [deleted file]
disabled-packages/openjdk-9-headless/os_linux.cpp.diff [deleted file]

index e93bf2fe05d5293afdd8e92ec4dfd695f43d5ef9..4d5623a875033954988e819d1375668b58a0c0ab 100644 (file)
@@ -2,119 +2,110 @@ TERMUX_PKG_HOMEPAGE=http://openjdk.java.net
 TERMUX_PKG_DESCRIPTION='OpenJDK 9 Java Runtime Environment (prerelease)'
 _jbuild=158
 _hg_tag="jdk-9+${_jbuild}"
-TERMUX_PKG_VERSION="9b$_jbuild"
+TERMUX_PKG_VERSION="9.2017.3.3"
 TERMUX_PKG_MAINTAINER='Vishal Biswas @vishalbiswas'
-TERMUX_PKG_DEPENDS="freetype, alsa-lib"
+TERMUX_PKG_DEPENDS="freetype, libpng, libffi"
+# currently upstream has no support building for these arches on android
+# this will change in the future
+TERMUX_PKG_BLACKLISTED_ARCHES="aarch64 x86_64"
 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
 --disable-hotspot-gtest
 --disable-option-checking
 --disable-warnings-as-errors
 --enable-headless-only
---with-debug-level=release
---with-libffi-include=$TERMUX_PREFIX/include
---with-libffi-lib=$TERMUX_PREFIX/lib
+--with-libffi=$TERMUX_PREFIX
+--with-freetype=$TERMUX_PREFIX
 --with-libpng=system
 --with-zlib=system
 "
 TERMUX_PKG_CLANG=no
 _cups_ver=2.2.2
 
-termux_step_extract_package () {
-       _url_src=http://hg.openjdk.java.net/jdk9/dev
-       targzs=(${_url_src}/archive/$_hg_tag.tar.bz2
-               ${_url_src}/corba/archive/$_hg_tag.tar.bz2
-               ${_url_src}/hotspot/archive/$_hg_tag.tar.bz2
-               ${_url_src}/jdk/archive/$_hg_tag.tar.bz2
-               ${_url_src}/jaxws/archive/$_hg_tag.tar.bz2
-               ${_url_src}/jaxp/archive/$_hg_tag.tar.bz2
-               ${_url_src}/langtools/archive/$_hg_tag.tar.bz2
-               ${_url_src}/nashorn/archive/$_hg_tag.tar.bz2
-               "https://github.com/apple/cups/releases/download/v$_cups_ver/cups-$_cups_ver-source.tar.gz")
-
-       sha256sums=('d11fba6c6aea0d815bf37ec33b95a9eabf5cf6bd85c998d2a2945de610340a82'
-               '6c38a48a9a4095604b0feeaacad7fec6337186631a1d11b27215ad3b3f0f4e96'
-               'd646f5e0166b1877951540cac6b9eff6be130cb1324e5a63871104aad3b6d6f0'
-               '773d4420b556baaad69b06434b6e21b488cf8df1f437b3b83ddbbbd32e906e83'
-               'af5d86f1e2b4ac8773ee9e5cb799797c1e9c7e606a1618bfad0e4f7854b062d2'
-               '3d1b96268c6b1fc35f69b4e62be32a0a1b4ef299f95f2139b0c57b982d792869'
-               '94fb51401a4aa6387d0d35df4cba0d2e6560329ca842604be1752f8e4a253e33'
-               '23afc54946898ffc51d1e22a40a078c69441bd1c8b4a99b7e84d471e6ca1f302'
-               'f589bb7d5d1dc3aa0915d7cf2b808571ef2e1530cd1a6ebe76ae8f9f4994e4f6')
-
-       reponames=(dev corba hotspot jdk jaxws jaxp langtools nashorn cups)
-
-       for index in "${!targzs[@]}"; do
-               if [ $index != '8' ]; then
-                       filename=${reponames[index]}-`basename ${targzs[index]}`
-                       folder=`basename $filename .tar.bz2`
-                       folder=`echo $folder | sed 's/_/-/'`
-               else
-                       filename=`basename ${targzs[index]}`
-                       folder="cups-$_cups_ver"
-               fi
-               sum=${sha256sums[index]}
-               file=$TERMUX_PKG_CACHEDIR/$filename
-               termux_download ${targzs[index]} $file $sum
-               rm -Rf $folder
-               $TERMUX_TAR xf $file
-               mkdir -p $TERMUX_PKG_SRCDIR
-               mv $folder $TERMUX_PKG_SRCDIR/
-       done
-}
+changesets=('84493751ba37'
+       '6feea77d2083'
+       '95ce736479b8'
+       'e45f1067d76b'
+       '0ea34706c7fa'
+       '5695854e8831'
+       '39449d2a6398'
+       'd75af059cff6')
+
+sha256sums=('8dba157e41bd3ffcec681d2dfc3141951f19c0a19a68d1e2568b314d0978c018'
+       '1a269f62e7e99b097fd7620c2ce995833336c1b79f03bd8a7af3f066f6099862'
+       '2fff75a970c4ae21620ece45dcb4015ec13cdfd265ab1746503adf786922d200'
+       'd58e2f4a7e8421a5f9396870d4a47f42dd41dfff1232e52add71410c75f35832'
+       'dcb0efdf5e633396957c18c0c8b54531c44d8f6c24d03c3f87cc9b41ff633957'
+       '7da207e287e6df85c955b5d7a45e7f747934dcaa15a12741d022c50ef89799e7'
+       '90980cd581b426a51fa22d77cbcb68e5ddea4c048a282cf82ef438e5da0a7bf0'
+       'f35e87e80ad01cec5d445e59d4b37ba55899651845081f76b6d56a348ca1ce97'
+       'f589bb7d5d1dc3aa0915d7cf2b808571ef2e1530cd1a6ebe76ae8f9f4994e4f6')
+
+reponames=(dev corba hotspot jdk jaxws jaxp langtools nashorn cups)
+
+_url_src=http://hg.openjdk.java.net/mobile/dev
+
+TERMUX_PKG_SRCURL=$_url_src/archive/${changesets[0]}.tar.bz2
+TERMUX_PKG_SHA256=${sha256sums[0]}
+TERMUX_PKG_FOLDERNAME=dev-${changesets[0]}
 
 termux_step_post_extract_package () {
-       for patch in $TERMUX_PKG_BUILDER_DIR/*.diff; do
-               sed "s%\@TAG_VER\@%${_jbuild}%g" "$patch" | \
-                        patch --silent -p1
+       cd "$TERMUX_PKG_TMPDIR"
+       # download and extract repo archives
+       for index in {1..7}; do
+               local sum=${sha256sums[index]}
+               local repo=${reponames[index]}
+               local change=${changesets[index]}
+               local file=$TERMUX_PKG_CACHEDIR/$repo-$change.tar.bz2
+               local url=${_url_src}/$repo/archive/$change.tar.bz2
+
+               termux_download $url $file $sum
+               $TERMUX_TAR xf $file -C $TERMUX_PKG_SRCDIR
+               mv $TERMUX_PKG_SRCDIR/$repo-$change $TERMUX_PKG_SRCDIR/$repo
        done
 
-       cd $TERMUX_PKG_SRCDIR/dev-$_hg_tag
-        chmod a+x configure
-        for subrepo in corba hotspot jdk jaxws jaxp langtools nashorn; do
-                ln -s ../${subrepo}-$_hg_tag ${subrepo}
-        done
-        ln -s ../cups-$_cups_ver cups
+       # setup cups source dir
+       file=$TERMUX_PKG_CACHEDIR/cups-$_cups_ver-source.tar.gz
+       url="https://github.com/apple/cups/releases/download/v$_cups_ver/`basename $file`"
+       termux_download $url $file ${sha256sums[8]}
+       $TERMUX_TAR xf $file -C $TERMUX_PKG_SRCDIR
+}
+
+# override this step to since openjdk provides their own customized guess scripts
+termux_step_replace_guess_scripts () {
+       return
 }
 
 termux_step_pre_configure () {
-       TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR/dev-$_hg_tag
-       #export MAKEFLAGS=${MAKEFLAGS/-j*}
-       #export CFLAGS+=" -Wno-error=deprecated-declarations -DSIGCLD=SIGCHLD"
-       CFLAGS="$CFLAGS -I$TERMUX_PKG_BUILDER_DIR -I$TERMUX_PREFIX/include -DTERMUX_SHMEM_STUBS"
-       CXXFLAGS="$CXXFLAGS -I$TERMUX_PKG_BUILDER_DIR -I$TERMUX_PREFIX/include"
-       #LDFLAGS="$LDFLAGS -landroid-shmem"
-
-       TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-cups-include=$TERMUX_PKG_SRCDIR/cups"
-       TERMUX_JVM_VARIANT=zero
-       if [ "$TERMUX_ARCH" == 'i686' -o "$TERMUX_ARCH" == 'x86_64' ]; then
-               TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=' --with-jvm-variants=client'
-               TERMUX_PKG_JVM_VARIANT=client
-       else
-               TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=' --with-jvm-variants=zero'
-               TERMUX_PKG_JVM_VARIANT=zero
-       fi
+       TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-cups-include=$TERMUX_PKG_SRCDIR/cups-$_cups_ver"
+
+       # might be required
+       # libffi dependency is required if zero interpreter is used
+       #if [ -o "$TERMUX_ARCH" == 'i686' -o "$TERMUX_ARCH" == 'x86_64' ]; then
+       #       TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=' --with-jvm-variants=client'
+       #else
+       #       TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=' --with-jvm-variants=zero'
+       #fi
 
        cat > "$TERMUX_STANDALONE_TOOLCHAIN/devkit.info" <<HERE
 DEVKIT_NAME="Android ${TERMUX_ARCH^^}"
 DEVKIT_TOOLCHAIN_PATH="\$DEVKIT_ROOT/$TERMUX_HOST_PLATFORM/bin"
-DEVKIT_SYSROOT="\$DEVKIT_ROOT/sysroot" i
+DEVKIT_SYSROOT="\$DEVKIT_ROOT/sysroot"
 HERE
 
        export ANDROID_DEVKIT=$TERMUX_STANDALONE_TOOLCHAIN
 
-       cd $TERMUX_PKG_SRCDIR
+       if [ -n "$TERMUX_DEBUG" ]; then TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-debug-level=slowdebug"; fi
 }
 
 termux_step_configure () {
-       $TERMUX_PKG_SRCDIR/configure \
+       bash $TERMUX_PKG_SRCDIR/configure \
                --prefix=$TERMUX_PREFIX \
-               --host=$TERMUX_HOST_PLATFORM \
-               --target=$TERMUX_HOST_PLATFORM \
+               --openjdk-target=$TERMUX_HOST_PLATFORM \
                --with-jdk-variant=normal \
                --libexecdir=$TERMUX_PREFIX/libexec \
                --with-devkit=$ANDROID_DEVKIT \
-               --with-extra-cflags="$CFLAGS" \
-               --with-extra-cxxflags="$CXXFLAGS" \
+               --with-extra-cflags="$CPPFLAGS $CFLAGS" \
+               --with-extra-cxxflags="$CPPFLAGS $CXXFLAGS" \
                --with-extra-ldflags="$LDFLAGS" \
                $TERMUX_PKG_EXTRA_CONFIGURE_ARGS
 }
diff --git a/disabled-packages/openjdk-9-headless/getgr_r.patch b/disabled-packages/openjdk-9-headless/getgr_r.patch
new file mode 100644 (file)
index 0000000..e36515b
--- /dev/null
@@ -0,0 +1,43 @@
+--- ./jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c   2017-03-02 21:55:47.000000000 +0530
++++ ../UnixNativeDispatcher.c  2017-03-03 21:37:02.370375158 +0530
+@@ -168,40 +168,6 @@
+ #endif
+ static fdopendir_func* my_fdopendir_func = NULL;
+-#ifdef __ANDROID__
+-/*
+- * TODO: Android lacks support for the methods listed below.  In it's place are
+- * alternatives that use existing Android functionality, but lack reentrant
+- * support.  Determine if the following are the most suitable alternatives.
+- *
+- */
+-int getgrgid_r(gid_t gid, struct group* grp, char* buf, size_t buflen, struct group** result)
+-{
+-  *result = NULL;
+-  errno = 0;
+-  grp = getgrgid(gid);
+-  if (grp == NULL) {
+-        return errno;
+-  }
+-  // buf not used by caller (see below)
+-  *result = grp;
+-  return 0;
+-}
+-
+-int getgrnam_r(const char *name, struct group* grp, char* buf, size_t buflen, struct group** result)
+-{
+-  *result = NULL;
+-  errno = 0;
+-  grp = getgrnam(name);
+-  if (grp == NULL) {
+-        return errno;
+-  }
+-  // buf not used by caller (see below)
+-  *result = grp;
+-  return 0;
+-}
+-#endif
+-
+ /**
+  * fstatat missing from glibc on Linux. Temporary workaround
+  * for x86/x64.
diff --git a/disabled-packages/openjdk-9-headless/libpthread.diff b/disabled-packages/openjdk-9-headless/libpthread.diff
deleted file mode 100644 (file)
index eb3e40e..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
---- ./dev-jdk-9+@TAG_VER@/common/autoconf/flags.m4     2016-12-21 03:14:04.000000000 +0530
-+++ ../../flags.m4     2017-01-22 13:35:01.668555165 +0530
-@@ -1297,7 +1297,7 @@
-   # Set $2JVM_LIBS (per os)
-   if test "x$OPENJDK_$1_OS" = xlinux; then
--    $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread"
-+    $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl"
-   elif test "x$OPENJDK_$1_OS" = xsolaris; then
-     # FIXME: This hard-coded path is not really proper.
-     if test "x$OPENJDK_$1_CPU" = xx86_64; then
---- ./jdk/make/lib/Awt2dLibraries.gmk  2016-12-21 03:43:34.000000000 +0530
-+++ ./jdk-jdk-9+@TAG_VER@/make/lib/Awt2dLibraries.gmk  2017-01-22 13:36:55.817520779 +0530
-@@ -330,10 +330,6 @@
-     LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm -lc
--    ifeq ($(OPENJDK_TARGET_OS), linux)
--      LIBAWT_XAWT_LIBS += -lpthread
--    endif
--
-     ifeq ($(TOOLCHAIN_TYPE), gcc)
-       # Turn off all warnings for the following files since they contain warnings
-       # that cannot be turned of individually.
-@@ -906,7 +902,7 @@
-     LIBSPLASHSCREEN_LDFLAGS := -delayload:user32.dll
-     LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib
-   else
--    LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl
-+    LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -ldl
-   endif
-   $(eval $(call SetupNativeCompilation,BUILD_LIBSPLASHSCREEN, \
---- ./jdk/make/lib/NioLibraries.gmk    2016-12-21 03:43:34.000000000 +0530
-+++ ./jdk-jdk-9+@TAG_VER@/make/lib/NioLibraries.gmk    2017-01-22 13:38:05.550161653 +0530
-@@ -69,7 +69,7 @@
-     LDFLAGS := $(LDFLAGS_JDKLIB) \
-         $(call SET_SHARED_LIBRARY_ORIGIN), \
-     LIBS_unix := -ljava -lnet, \
--    LIBS_linux := -lpthread $(LIBDL), \
-+    LIBS_linux := $(LIBDL), \
-     LIBS_solaris := -ljvm -lsocket -lposix4 $(LIBDL) \
-         -lsendfile -lc, \
-     LIBS_aix := $(LIBDL), \
---- ./jdk/make/lib/Lib-jdk.sctp.gmk    2016-12-21 03:43:34.000000000 +0530
-+++ ./jdk-jdk-9+@TAG_VER@/make/lib/Lib-jdk.sctp.gmk    2017-01-22 13:38:39.083147832 +0530
-@@ -50,7 +50,7 @@
-         LDFLAGS := $(LDFLAGS_JDKLIB) \
-             $(call SET_SHARED_LIBRARY_ORIGIN), \
-         LIBS_unix := -lnio -lnet -ljava -ljvm, \
--        LIBS_linux := -lpthread $(LIBDL), \
-+        LIBS_linux := $(LIBDL), \
-         LIBS_solaris := -lsocket -lc, \
-         OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libsctp, \
-     ))
---- ./jdk/make/lib/CoreLibraries.gmk   2016-12-21 03:43:34.000000000 +0530
-+++ ./jdk-jdk-9+@TAG_VER@/make/lib/CoreLibraries.gmk   2017-01-22 13:39:17.676071246 +0530
-@@ -389,7 +389,7 @@
-         -export:JLI_PreprocessArg \
-         -export:JLI_GetAppArgIndex, \
-     LIBS_unix := $(LIBZ), \
--    LIBS_linux := $(LIBDL) -lc -lpthread, \
-+    LIBS_linux := $(LIBDL) -lc, \
-     LIBS_solaris := $(LIBDL) -lc, \
-     LIBS_aix := $(LIBDL),\
-     LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
---- ./jdk/make/lib/Lib-jdk.jdwp.agent.gmk      2016-12-21 03:43:34.000000000 +0530
-+++ ./jdk-jdk-9+@TAG_VER@/make/lib/Lib-jdk.jdwp.agent.gmk      2017-01-22 13:40:42.121805959 +0530
-@@ -47,7 +47,7 @@
-     LDFLAGS := $(LDFLAGS_JDKLIB) \
-         $(call SET_SHARED_LIBRARY_ORIGIN), \
-     LDFLAGS_windows := -export:jdwpTransport_OnLoad, \
--    LIBS_linux := -lpthread, \
-+    LIBS_linux := -lc, \
-     LIBS_solaris := -lnsl -lsocket -lc, \
-     LIBS_windows := $(JDKLIB_LIBS) ws2_32.lib, \
-     VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
---- ./jdk/make/lib/NetworkingLibraries.gmk     2016-12-21 03:43:34.000000000 +0530
-+++ ./jdk-jdk-9+@TAG_VER@/make/lib/NetworkingLibraries.gmk     2017-01-22 13:41:39.251151227 +0530
-@@ -41,7 +41,7 @@
-         $(call SET_SHARED_LIBRARY_ORIGIN), \
-     LDFLAGS_windows := -delayload:secur32.dll -delayload:iphlpapi.dll, \
-     LIBS_unix := -ljvm -ljava, \
--    LIBS_linux := $(LIBDL) -lpthread, \
-+    LIBS_linux := $(LIBDL), \
-     LIBS_solaris := -lnsl -lsocket $(LIBDL) -lc, \
-     LIBS_aix := $(LIBDL),\
-     LIBS_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
---- ./jdk/make/launcher/LauncherCommon.gmk     2016-12-21 03:43:34.000000000 +0530
-+++ ./jdk-jdk-9+@TAG_VER@/make/launcher/LauncherCommon.gmk     2017-01-22 13:42:01.530891130 +0530
-@@ -196,7 +196,7 @@
-       MAPFILE := $$($1_MAPFILE), \
-       LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
-       LIBS_unix := $$($1_LIBS_unix), \
--      LIBS_linux := -lpthread -ljli $(LIBDL) -lc, \
-+      LIBS_linux := -ljli $(LIBDL) -lc, \
-       LIBS_solaris := -ljli -lthread $(LIBDL) -lc, \
-       LIBS_windows := $$($1_WINDOWS_JLI_LIB) \
-           $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib advapi32.lib \
---- ./dev-jdk-9+@TAG_VER@//common/autoconf/generated-configure.sh      2016-12-21 03:14:04.000000000 +0530
-+++ ../../generated-configure.sh       2017-01-22 14:01:05.792364527 +0530
-@@ -50593,7 +50593,7 @@
-   # Set JVM_LIBS (per os)
-   if test "x$OPENJDK_TARGET_OS" = xlinux; then
--    JVM_LIBS="$JVM_LIBS -lm -ldl -lpthread"
-+    JVM_LIBS="$JVM_LIBS -lm -ldl"
-   elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
-     # FIXME: This hard-coded path is not really proper.
-     if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
-@@ -51416,7 +51416,7 @@
-   # Set OPENJDK_BUILD_JVM_LIBS (per os)
-   if test "x$OPENJDK_BUILD_OS" = xlinux; then
--    OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm -ldl -lpthread"
-+    OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm -ldl"
-   elif test "x$OPENJDK_BUILD_OS" = xsolaris; then
-     # FIXME: This hard-coded path is not really proper.
-     if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
diff --git a/disabled-packages/openjdk-9-headless/os_linux.cpp.diff b/disabled-packages/openjdk-9-headless/os_linux.cpp.diff
deleted file mode 100644 (file)
index 54d0e15..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
---- ./hotspot-jdk-9+@TAG_VER@/src/os/linux/vm/os_linux.cpp     2017-01-13 05:11:16.000000000 +0530
-+++ ../os_linux.cpp    2017-02-05 11:25:25.918994081 +0530
-@@ -98,7 +98,9 @@
- # include <string.h>
- # include <syscall.h>
- # include <sys/sysinfo.h>
-+# ifndef __ANDROID__
- # include <gnu/libc-version.h>
-+# endif
- # include <sys/ipc.h>
- # include <sys/shm.h>
- # include <link.h>
-@@ -496,6 +498,7 @@
- // detecting pthread library
- void os::Linux::libpthread_init() {
-+#ifndef __ANDROID__
-   // Save glibc and pthread version strings.
- #if !defined(_CS_GNU_LIBC_VERSION) || \
-     !defined(_CS_GNU_LIBPTHREAD_VERSION)
-@@ -513,6 +516,10 @@
-   str = (char *)malloc(n, mtInternal);
-   confstr(_CS_GNU_LIBPTHREAD_VERSION, str, n);
-   os::Linux::set_libpthread_version(str);
-+#else
-+  os::Linux::set_glibc_version("bionic 21");
-+  os::Linux::set_libpthread_version("pthread 21");
-+#endif
- }
- /////////////////////////////////////////////////////////////////////////////
-@@ -2809,7 +2816,10 @@
- // If we are running with earlier version, which did not have symbol versions,
- // we should use the base version.
- void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
--  void *f = dlvsym(handle, name, "libnuma_1.1");
-+  void *f = NULL;
-+  #ifndef __ANDROID__
-+  f = dlvsym(handle, name, "libnuma_1.1");
-+  #endif
-   if (f == NULL) {
-     f = dlsym(handle, name);
-   }
-@@ -5471,7 +5481,11 @@
- // Linux doesn't yet have a (official) notion of processor sets,
- // so just return the system wide load average.
- int os::loadavg(double loadavg[], int nelem) {
-+#ifdef __ANDROID__
-+  return -1;
-+#else
-   return ::getloadavg(loadavg, nelem);
-+#endif
- }
- void os::pause() {
-@@ -6194,7 +6208,15 @@
-   struct stat st;
-   int ret = os::stat(filename, &st);
-   assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
-+#ifdef __ANDROID__
-+  struct timespec ts;
-+  unsigned long ms = st.st_mtime;
-+  ts.tv_sec = ms / 1000;
-+  ts.tv_nsec = (ms % 1000) * 1000000;
-+  return ts;
-+#else
-   return st.st_mtim;
-+#endif
- }
- int os::compare_file_modified_times(const char* file1, const char* file2) {