diff --git a/build-package.sh b/build-package.sh index 5cd4fdc3c..161f3066d 100755 --- a/build-package.sh +++ b/build-package.sh @@ -254,8 +254,8 @@ termux_step_setup_variables() { : "${TERMUX_ANDROID_HOME:="/data/data/com.termux/files/home"}" : "${TERMUX_DEBUG:=""}" : "${TERMUX_PKG_API_LEVEL:="21"}" - : "${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="26.0.1"}" - : "${TERMUX_NDK_VERSION:="15.2"}" + : "${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="27.0.1"}" + : "${TERMUX_NDK_VERSION:="16"}" if [ "x86_64" = "$TERMUX_ARCH" ] || [ "aarch64" = "$TERMUX_ARCH" ]; then TERMUX_ARCH_BITS=64 @@ -364,7 +364,7 @@ termux_step_start_build() { TERMUX_STANDALONE_TOOLCHAIN="$TERMUX_TOPDIR/_lib/${TERMUX_NDK_VERSION}-${TERMUX_ARCH}-${TERMUX_PKG_API_LEVEL}" # Bump the below version if a change is made in toolchain setup to ensure # that everyone gets an updated toolchain: - TERMUX_STANDALONE_TOOLCHAIN+="-v14" + TERMUX_STANDALONE_TOOLCHAIN+="-v1" if [ -n "${TERMUX_PKG_BLACKLISTED_ARCHES:=""}" ] && [ "$TERMUX_PKG_BLACKLISTED_ARCHES" != "${TERMUX_PKG_BLACKLISTED_ARCHES/$TERMUX_ARCH/}" ]; then echo "Skipping building $TERMUX_PKG_NAME for arch $TERMUX_ARCH" @@ -668,8 +668,10 @@ termux_step_setup_toolchain() { cp "$TERMUX_SCRIPTDIR"/ndk-patches/{elf.h,sysexits.h,ifaddrs.h,libintl.h} usr/include # Remove from the NDK in favour of that from the libandroid-shmem. - # Also remove as it doesn't work for non-root. - rm usr/include/sys/{shm.h,sem.h} + # Remove as it doesn't work for non-root. + # Remove as we currently provide it from libandroid-support. + # Remove as we currently provide it from libandroid-glob. + rm usr/include/sys/{shm.h,sem.h} usr/include/{iconv.h,glob.h} sed -i "s/define __ANDROID_API__ __ANDROID_API_FUTURE__/define __ANDROID_API__ $TERMUX_PKG_API_LEVEL/" \ usr/include/android/api-level.h diff --git a/ndk-patches/arpa-ftp.patch b/ndk-patches/arpa-ftp.patch deleted file mode 100644 index d6a673c05..000000000 --- a/ndk-patches/arpa-ftp.patch +++ /dev/null @@ -1,111 +0,0 @@ -Add for some ftp defines which some packages needs. - -diff -Nur /Users/fornwall/lib/android-ndk/platforms/android-18/arch-arm/usr/include/arpa/ftp.h ./usr/include/arpa/ftp.h ---- /Users/fornwall/lib/android-ndk/platforms/android-18/arch-arm/usr/include/arpa/ftp.h 1970-01-01 01:00:00.000000000 +0100 -+++ ./usr/include/arpa/ftp.h 2014-02-07 02:07:52.000000000 +0100 -@@ -0,0 +1,105 @@ -+/* -+ * Copyright (c) 1983, 1989, 1993 -+ * The Regents of the University of California. All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 4. Neither the name of the University nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * @(#)ftp.h 8.1 (Berkeley) 6/2/93 -+ */ -+ -+#ifndef _ARPA_FTP_H -+#define _ARPA_FTP_H 1 -+ -+/* Definitions for FTP; see RFC-765. */ -+ -+/* -+ * Reply codes. -+ */ -+#define PRELIM 1 /* positive preliminary */ -+#define COMPLETE 2 /* positive completion */ -+#define CONTINUE 3 /* positive intermediate */ -+#define TRANSIENT 4 /* transient negative completion */ -+#define ERROR 5 /* permanent negative completion */ -+ -+/* -+ * Type codes -+ */ -+#define TYPE_A 1 /* ASCII */ -+#define TYPE_E 2 /* EBCDIC */ -+#define TYPE_I 3 /* image */ -+#define TYPE_L 4 /* local byte size */ -+ -+#ifdef FTP_NAMES -+char *typenames[] = {"0", "ASCII", "EBCDIC", "Image", "Local" }; -+#endif -+ -+/* -+ * Form codes -+ */ -+#define FORM_N 1 /* non-print */ -+#define FORM_T 2 /* telnet format effectors */ -+#define FORM_C 3 /* carriage control (ASA) */ -+#ifdef FTP_NAMES -+char *formnames[] = {"0", "Nonprint", "Telnet", "Carriage-control" }; -+#endif -+ -+/* -+ * Structure codes -+ */ -+#define STRU_F 1 /* file (no record structure) */ -+#define STRU_R 2 /* record structure */ -+#define STRU_P 3 /* page structure */ -+#ifdef FTP_NAMES -+char *strunames[] = {"0", "File", "Record", "Page" }; -+#endif -+ -+/* -+ * Mode types -+ */ -+#define MODE_S 1 /* stream */ -+#define MODE_B 2 /* block */ -+#define MODE_C 3 /* compressed */ -+#ifdef FTP_NAMES -+char *modenames[] = {"0", "Stream", "Block", "Compressed" }; -+#endif -+ -+/* -+ * Record Tokens -+ */ -+#define REC_ESC '\377' /* Record-mode Escape */ -+#define REC_EOR '\001' /* Record-mode End-of-Record */ -+#define REC_EOF '\002' /* Record-mode End-of-File */ -+ -+/* -+ * Block Header -+ */ -+#define BLK_EOR 0x80 /* Block is End-of-Record */ -+#define BLK_EOF 0x40 /* Block is End-of-File */ -+#define BLK_ERRORS 0x20 /* Block is suspected of containing errors */ -+#define BLK_RESTART 0x10 /* Block is Restart Marker */ -+ -+#define BLK_BYTECOUNT 2 /* Bytes in this block */ -+ -+#endif /* arpa/ftp.h */ diff --git a/ndk-patches/arpa-tftp.patch b/ndk-patches/arpa-tftp.patch deleted file mode 100644 index a7ec89078..000000000 --- a/ndk-patches/arpa-tftp.patch +++ /dev/null @@ -1,88 +0,0 @@ -The header is needed by inetutils. - -diff -N -a -u -r /home/fornwall/lib/android-ndk/platforms/android-21/arch-arm/usr/include/arpa/tftp.h ./usr/include/arpa/tftp.h ---- /home/fornwall/lib/android-ndk/platforms/android-21/arch-arm/usr/include/arpa/tftp.h 1969-12-31 19:00:00.000000000 -0500 -+++ ./usr/include/arpa/tftp.h 2015-05-12 15:40:31.648145474 -0400 -@@ -0,0 +1,82 @@ -+/* -+ * Copyright (c) 1983, 1993 -+ * The Regents of the University of California. All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 4. Neither the name of the University nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * @(#)tftp.h 8.1 (Berkeley) 6/2/93 -+ */ -+ -+#ifndef _ARPA_TFTP_H -+#define _ARPA_TFTP_H 1 -+ -+/* -+ * Trivial File Transfer Protocol (IEN-133) -+ */ -+#define SEGSIZE 512 /* data segment size */ -+ -+/* -+ * Packet types. -+ */ -+#define RRQ 01 /* read request */ -+#define WRQ 02 /* write request */ -+#define DATA 03 /* data packet */ -+#define ACK 04 /* acknowledgement */ -+#define ERROR 05 /* error code */ -+ -+struct tftphdr { -+ short th_opcode; /* packet type */ -+ union { -+ char tu_padding[3]; /* sizeof() compat */ -+ struct { -+ union { -+ unsigned short tu_block; /* block # */ -+ short tu_code; /* error code */ -+ } __attribute__ ((__packed__)) th_u3; -+ char tu_data[0]; /* data or error string */ -+ } __attribute__ ((__packed__)) th_u2; -+ char tu_stuff[0]; /* request packet stuff */ -+ } __attribute__ ((__packed__)) th_u1; -+} __attribute__ ((__packed__)); -+ -+#define th_block th_u1.th_u2.th_u3.tu_block -+#define th_code th_u1.th_u2.th_u3.tu_code -+#define th_stuff th_u1.tu_stuff -+#define th_data th_u1.th_u2.tu_data -+#define th_msg th_u1.th_u2.tu_data -+ -+/* -+ * Error codes. -+ */ -+#define EUNDEF 0 /* not defined */ -+#define ENOTFOUND 1 /* file not found */ -+#define EACCESS 2 /* access violation */ -+#define ENOSPACE 3 /* disk full or allocation exceeded */ -+#define EBADOP 4 /* illegal TFTP operation */ -+#define EBADID 5 /* unknown transfer ID */ -+#define EEXISTS 6 /* file already exists */ -+#define ENOUSER 7 /* no such user */ -+ -+#endif /* arpa/tftp.h */ diff --git a/ndk-patches/fcntl.h.patch b/ndk-patches/fcntl.h.patch deleted file mode 100644 index 0b6e78ebb..000000000 --- a/ndk-patches/fcntl.h.patch +++ /dev/null @@ -1,17 +0,0 @@ -Avoid defining constants which causes at least dpkg build to think that -sync_file_range(2) is available - which it is not. - -diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/fcntl.h ./usr/include/fcntl.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/fcntl.h 2017-06-07 01:07:52.000000000 +0200 -+++ ./usr/include/fcntl.h 2017-06-18 02:03:25.533276409 +0200 -@@ -61,10 +61,6 @@ - #define SPLICE_F_MORE 4 - #define SPLICE_F_GIFT 8 - --#define SYNC_FILE_RANGE_WAIT_BEFORE 1 --#define SYNC_FILE_RANGE_WRITE 2 --#define SYNC_FILE_RANGE_WAIT_AFTER 4 -- - int creat(const char*, mode_t); - - #if __ANDROID_API__ >= 21 diff --git a/ndk-patches/grp.h.patch b/ndk-patches/grp.h.patch index 8aa7c0cf0..5a47373af 100644 --- a/ndk-patches/grp.h.patch +++ b/ndk-patches/grp.h.patch @@ -1,6 +1,6 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/grp.h ./usr/include/grp.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/grp.h 2017-06-07 01:07:52.000000000 +0200 -+++ ./usr/include/grp.h 2017-06-18 01:40:08.452570901 +0200 +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/grp.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/grp.h 2017-11-15 11:43:43.065533963 +0100 @@ -52,18 +52,11 @@ /* Note: Android has thousands and thousands of ids to iterate through. */ @@ -14,8 +14,8 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/grp.h ./usr/includ - - -#if __ANDROID_API__ >= 24 --int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**) __INTRODUCED_IN(24); --int getgrnam_r(const char*, struct group*, char*, size_t, struct group**) __INTRODUCED_IN(24); +-int getgrgid_r(gid_t __gid, struct group* __group, char* __buf, size_t __n, struct group** __result) __INTRODUCED_IN(24); +-int getgrnam_r(const char* __name, struct group* __group, char* __buf, size_t __n, struct group** __result) __INTRODUCED_IN(24); -#endif /* __ANDROID_API__ >= 24 */ +static struct group* getgrent(void) { return 0; } +static void setgrent(void) {} @@ -23,5 +23,5 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/grp.h ./usr/includ +static int getgrgid_r(gid_t gid, struct group * grp, char * buf, size_t buflen, struct group ** result) { *result = 0; return 0; } +static int getgrnam_r(const char * name, struct group * grp, char * buf, size_t buflen, struct group ** result) { *result = 0; return 0; } - int getgrouplist (const char*, gid_t, gid_t*, int*); - int initgroups (const char*, gid_t); + int getgrouplist(const char* __user, gid_t __group, gid_t* __groups, int* __group_count); + int initgroups(const char* __user, gid_t __group); diff --git a/ndk-patches/langinfo.h.patch b/ndk-patches/langinfo.h.patch index f7eace444..14d8a1b9c 100644 --- a/ndk-patches/langinfo.h.patch +++ b/ndk-patches/langinfo.h.patch @@ -1,5 +1,5 @@ diff -N -a -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/langinfo.h ./usr/include/langinfo.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/langinfo.h 2017-06-20 17:41:56.000000000 +0200 +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/langinfo.h 2017-11-09 09:57:12.000000000 +0100 +++ ./usr/include/langinfo.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,104 +0,0 @@ -/* @@ -98,8 +98,8 @@ diff -N -a -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/langinfo.h . - - -#if __ANDROID_API__ >= 26 --char* nl_langinfo(nl_item) __INTRODUCED_IN(26); --char* nl_langinfo_l(nl_item, locale_t) __INTRODUCED_IN(26); +-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26); +-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26); -#endif /* __ANDROID_API__ >= 26 */ - - diff --git a/ndk-patches/limits.h.patch b/ndk-patches/limits.h.patch deleted file mode 100644 index c12f43f58..000000000 --- a/ndk-patches/limits.h.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/limits.h ./usr/include/limits.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/limits.h 2017-06-07 01:07:52.000000000 +0200 -+++ ./usr/include/limits.h 2017-06-18 02:05:17.404056395 +0200 -@@ -139,7 +139,7 @@ - #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX - - #define _POSIX_VERSION 200809L /* Posix C language bindings version */ --#define _POSIX2_VERSION -1 /* we don't support Posix command-line tools */ -+#define _POSIX2_VERSION 200809 /* Termux change to avoid coreutils obsolete breakage */ - #define _XOPEN_VERSION 700 /* by Posix definition */ - - /* >= _POSIX_THREAD_DESTRUCTOR_ITERATIONS */ diff --git a/ndk-patches/linux-fcntl.h.patch b/ndk-patches/linux-fcntl.h.patch index 0563e3d1f..5614657eb 100644 --- a/ndk-patches/linux-fcntl.h.patch +++ b/ndk-patches/linux-fcntl.h.patch @@ -1,18 +1,16 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/linux/fcntl.h ./usr/include/linux/fcntl.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/linux/fcntl.h 2017-06-07 01:07:52.000000000 +0200 -+++ ./usr/include/linux/fcntl.h 2017-06-18 01:44:54.697429382 +0200 -@@ -46,6 +46,14 @@ +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/linux/fcntl.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/linux/fcntl.h 2017-11-15 11:49:10.709710452 +0100 +@@ -40,6 +40,12 @@ + #define DN_ATTRIB 0x00000020 #define DN_MULTISHOT 0x80000000 #define AT_FDCWD - 100 - /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ -+ +/* Termux patch: This flag is not supported on Android 6.0+, and should not + be needed since there are not setuid binaries. Define AT_EACCESS to 0 to + avoid packages defining their own AT_EACCESS (which e.g. coreutil does) + since that will only result in errors. See: + https://android.googlesource.com/platform/bionic/+/3577825%5E!/ */ +#define AT_EACCESS 0 -+ #define AT_SYMLINK_NOFOLLOW 0x100 #define AT_REMOVEDIR 0x200 #define AT_SYMLINK_FOLLOW 0x400 diff --git a/ndk-patches/paths.h.patch b/ndk-patches/paths.h.patch index b1731c2c9..d4cc3fe89 100644 --- a/ndk-patches/paths.h.patch +++ b/ndk-patches/paths.h.patch @@ -1,11 +1,13 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/paths.h ./usr/include/paths.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/paths.h 2017-06-07 01:07:52.000000000 +0200 -+++ ./usr/include/paths.h 2017-06-18 01:49:55.374140031 +0200 -@@ -34,13 +34,19 @@ +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/paths.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/paths.h 2017-11-15 11:51:24.456129565 +0100 +@@ -34,15 +34,19 @@ #include +-#ifndef _PATH_BSHELL -#define _PATH_BSHELL "/system/bin/sh" +-#endif +#define _PATH_BSHELL "@TERMUX_PREFIX@/bin/sh" #define _PATH_CONSOLE "/dev/console" -#define _PATH_DEFPATH "/sbin:/system/sbin:/system/bin:/system/xbin:/vendor/bin:/vendor/xbin" @@ -16,10 +18,10 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/paths.h ./usr/incl #define _PATH_MOUNTED "/proc/mounts" #define _PATH_TTY "/dev/tty" -+#define _PATH_STDPATH _PATH_DEFPATH -+#define _PATH_TMP "@TERMUX_PREFIX@/tmp/" -+#define _PATH_VARDB "@TERMUX_PREFIX@/var/db/" -+#define _PATH_VARRUN "@TERMUX_PREFIX@/var/run/" -+#define _PATH_VARTMP "@TERMUX_PREFIX@/var/tmp/" ++#define _PATH_STDPATH _PATH_DEFPATH ++#define _PATH_TMP "@TERMUX_PREFIX@/tmp/" ++#define _PATH_VARDB "@TERMUX_PREFIX@/var/db/" ++#define _PATH_VARRUN "@TERMUX_PREFIX@/var/run/" ++#define _PATH_VARTMP "@TERMUX_PREFIX@/var/tmp/" + #endif /* !_PATHS_H_ */ diff --git a/ndk-patches/pty.h.patch b/ndk-patches/pty.h.patch index 68b7061bb..1c924a3e9 100644 --- a/ndk-patches/pty.h.patch +++ b/ndk-patches/pty.h.patch @@ -1,18 +1,19 @@ -In Termux these are implemented in the libutil package to support android-21. - diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/pty.h ./usr/include/pty.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/pty.h 2017-06-20 17:41:56.000000000 +0200 -+++ ./usr/include/pty.h 2017-07-02 11:42:39.244882732 +0200 -@@ -37,10 +37,8 @@ - __BEGIN_DECLS +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/pty.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/pty.h 2017-11-15 11:52:53.115077179 +0100 +@@ -36,12 +36,9 @@ + __BEGIN_DECLS +- -#if __ANDROID_API__ >= 23 --int openpty(int*, int*, char*, const struct termios*, const struct winsize*) __INTRODUCED_IN(23); --int forkpty(int*, char*, const struct termios*, const struct winsize*) __INTRODUCED_IN(23); +-int openpty(int* __master_fd, int* __slave_fd, char* __slave_name, const struct termios* __termios_ptr, const struct winsize* __winsize_ptr) __INTRODUCED_IN(23); +-int forkpty(int* __master_fd, char* __slave_name, const struct termios* __termios_ptr, const struct winsize* __winsize_ptr) __INTRODUCED_IN(23); -#endif /* __ANDROID_API__ >= 23 */ -+int openpty(int*, int*, char*, const struct termios*, const struct winsize*); -+int forkpty(int*, char*, const struct termios*, const struct winsize*); - +- ++/* In Termux these are implemented in the libutil package to support android-21. */ ++int openpty(int* __master_fd, int* __slave_fd, char* __slave_name, const struct termios* __termios_ptr, const struct winsize* __winsize_ptr); ++int forkpty(int* __master_fd, char* __slave_name, const struct termios* __termios_ptr, const struct winsize* __winsize_ptr); __END_DECLS + diff --git a/ndk-patches/spawn.h.patch b/ndk-patches/spawn.h.patch new file mode 100644 index 000000000..dcd5fef6a --- /dev/null +++ b/ndk-patches/spawn.h.patch @@ -0,0 +1,20 @@ +diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/spawn.h ./usr/include/spawn.h +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/spawn.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/spawn.h 2017-11-15 12:08:34.911786251 +0100 +@@ -36,6 +36,8 @@ + + __BEGIN_DECLS + ++#if __ANDROID_API__ >= __ANDROID_API_FUTURE__ ++ + #define POSIX_SPAWN_RESETIDS 1 + #define POSIX_SPAWN_SETPGROUP 2 + #define POSIX_SPAWN_SETSIGDEF 4 +@@ -51,7 +53,6 @@ + typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t; + + +-#if __ANDROID_API__ >= __ANDROID_API_FUTURE__ + int posix_spawn(pid_t* __pid, const char* __path, const posix_spawn_file_actions_t* __actions, const posix_spawnattr_t* __attr, char* const __argv[], char* const __env[]) __INTRODUCED_IN_FUTURE; + int posix_spawnp(pid_t* __pid, const char* __file, const posix_spawn_file_actions_t* __actions, const posix_spawnattr_t* __attr, char* const __argv[], char* const __env[]) __INTRODUCED_IN_FUTURE; + diff --git a/ndk-patches/stdio.h.patch b/ndk-patches/stdio.h.patch index ee15fa1e4..55ab27c1e 100644 --- a/ndk-patches/stdio.h.patch +++ b/ndk-patches/stdio.h.patch @@ -1,6 +1,6 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/stdio.h ./usr/include/stdio.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/stdio.h 2017-06-07 01:07:52.000000000 +0200 -+++ ./usr/include/stdio.h 2017-06-18 01:59:17.835984565 +0200 +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/stdio.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/stdio.h 2017-11-15 11:57:58.567432093 +0100 @@ -44,6 +44,9 @@ #include #include @@ -8,20 +8,20 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/stdio.h ./usr/incl +#include /* For strcpy(3) used by ctermid() */ +#include /* For O_RDWR and other O_* constants */ + - #define __need_NULL - #include + #include -@@ -174,7 +178,7 @@ + #if __ANDROID_API__ < __ANDROID_API_N__ +@@ -167,7 +170,7 @@ __warnattr_strict("vsprintf is often misused; please use vsnprintf"); - char* tmpnam(char*) + char* tmpnam(char* __s) __warnattr("tempnam is unsafe, use mkstemp or tmpfile instead"); -#define P_tmpdir "/tmp/" /* deprecated */ +#define P_tmpdir "@TERMUX_PREFIX@/tmp/" /* deprecated */ - char* tempnam(const char*, const char*) + char* tempnam(const char* __dir, const char* __prefix) __warnattr("tempnam is unsafe, use mkstemp or tmpfile instead"); -@@ -239,8 +243,6 @@ - __INTRODUCED_IN(24); +@@ -242,8 +245,6 @@ + FILE* freopen64(const char* __path, const char* __mode, FILE* __fp) __INTRODUCED_IN(24); #endif /* __ANDROID_API__ >= 24 */ -FILE* tmpfile(void); @@ -29,31 +29,29 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/stdio.h ./usr/incl #if __ANDROID_API__ >= 24 FILE* tmpfile64(void) __INTRODUCED_IN(24); #endif /* __ANDROID_API__ >= 24 */ -@@ -256,10 +258,15 @@ +@@ -259,10 +260,15 @@ #define L_ctermid 1024 /* size for ctermid() */ -#if __ANDROID_API__ >= 26 --char* ctermid(char*) __INTRODUCED_IN(26); +-char* ctermid(char* __buf) __INTRODUCED_IN(26); -#endif /* __ANDROID_API__ >= 26 */ -+/* Needed by gnulibs freading() */ ++/* Needed by gnulibs freading(). */ +#define __sferror(p) (((p)->_flags & __SERR) != 0) -+/* Used by perl, fish, and others */ ++/* Used by perl, fish, and others. */ +static __inline__ char* ctermid(char* s) { -+ if (s == 0) return (char*) "/dev/tty"; -+ strcpy(s, "/dev/tty"); -+ return s; ++ if (s == 0) return (char*) "/dev/tty"; ++ strcpy(s, "/dev/tty"); ++ return s; +} - FILE* fdopen(int, const char*); - int fileno(FILE*); -@@ -577,4 +584,31 @@ - - __END_DECLS + FILE* fdopen(int __fd, const char* __mode); + int fileno(FILE* __fp); +@@ -310,6 +316,29 @@ + #include + #endif -+__BEGIN_DECLS -+ +int open(const char*, int, ...) __overloadable __RENAME_CLANG(open); +extern pid_t getpid(); +extern int unlink(const char*); @@ -77,6 +75,6 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/stdio.h ./usr/incl + return NULL; +} + -+__END_DECLS -+ - #endif /* _STDIO_H_ */ + __END_DECLS + + #endif diff --git a/ndk-patches/stdlib.h.patch b/ndk-patches/stdlib.h.patch index d4a38f144..e17588b5e 100644 --- a/ndk-patches/stdlib.h.patch +++ b/ndk-patches/stdlib.h.patch @@ -1,6 +1,6 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/stdlib.h ./usr/include/stdlib.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/stdlib.h 2017-06-20 17:41:56.000000000 +0200 -+++ ./usr/include/stdlib.h 2017-07-16 12:30:31.724463111 +0200 +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/stdlib.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/stdlib.h 2017-11-15 12:49:51.790799140 +0100 @@ -35,6 +35,7 @@ #include #include @@ -9,8 +9,8 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/stdlib.h ./usr/inc __BEGIN_DECLS -@@ -210,8 +211,7 @@ - size_t wcstombs(char*, const wchar_t*, size_t); +@@ -205,8 +206,7 @@ + size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n); #if __ANDROID_API__ >= __ANDROID_API_L__ -size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21); @@ -19,3 +19,14 @@ diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/stdlib.h ./usr/inc #else /* * Pre-L we didn't have any locale support and so we were always the POSIX +@@ -244,7 +244,9 @@ + float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26); + long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26); + #else +-// Implemented as static inlines before 26. ++static __inline__ double strtod_l(const char* __s, char** __end_ptr, locale_t __l) { return strtod(__s, __end_ptr); } ++static __inline__ float strtof_l(const char* __s, char** __end_ptr, locale_t __l) { return strtof(__s, __end_ptr); } ++static __inline__ long strtol_l(const char* __s, char** __end_ptr, int __b, locale_t __l) { return strtol(__s, __end_ptr, __b); } + #endif + + __END_DECLS diff --git a/ndk-patches/string.h.patch b/ndk-patches/string.h.patch deleted file mode 100644 index 7754e5755..000000000 --- a/ndk-patches/string.h.patch +++ /dev/null @@ -1,35 +0,0 @@ -See https://github.com/android-ndk/ndk/issues/440 - -diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/string.h ./usr/include/string.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/string.h 2017-06-20 17:41:56.000000000 +0200 -+++ ./usr/include/string.h 2017-06-30 22:15:01.161342640 +0200 -@@ -74,12 +74,12 @@ - #endif /* __ANDROID_API__ >= 18 */ - - #if defined(__USE_GNU) -+#if __ANDROID_API__ >= 24 - #if defined(__cplusplus) - extern "C++" char* strchrnul(char* _Nonnull, int) __RENAME(strchrnul) __attribute_pure__; - extern "C++" const char* strchrnul(const char* _Nonnull, int) __RENAME(strchrnul) __attribute_pure__; - #else - --#if __ANDROID_API__ >= 24 - char* strchrnul(const char* _Nonnull, int) __attribute_pure__ __INTRODUCED_IN(24); - #endif /* __ANDROID_API__ >= 24 */ - -@@ -169,6 +169,7 @@ - #endif - - #if defined(__USE_GNU) && !defined(basename) -+#if __ANDROID_API__ >= 23 - /* - * glibc has a basename in that's different to the POSIX one in . - * It doesn't modify its argument, and in C++ it's const-correct. -@@ -178,7 +179,6 @@ - extern "C++" const char* basename(const char* _Nonnull) __RENAME(__gnu_basename); - #else - --#if __ANDROID_API__ >= 23 - char* basename(const char* _Nonnull) __RENAME(__gnu_basename) __INTRODUCED_IN(23); - #endif /* __ANDROID_API__ >= 23 */ - diff --git a/ndk-patches/sys-ttydefault.h.patch b/ndk-patches/sys-ttydefault.h.patch deleted file mode 100644 index a0e1fe969..000000000 --- a/ndk-patches/sys-ttydefault.h.patch +++ /dev/null @@ -1,14 +0,0 @@ -Needed by util-linux. - -diff -u -r /home/fornwall/lib/android-ndk/platforms/android-21/arch-arm/usr/include/sys/ttydefaults.h ./usr/include/sys/ttydefaults.h ---- /home/fornwall/lib/android-ndk/platforms/android-21/arch-arm/usr/include/sys/ttydefaults.h 2016-06-01 12:53:26.000000000 -0400 -+++ ./usr/include/sys/ttydefaults.h 2016-06-22 06:29:26.247578626 -0400 -@@ -46,7 +46,7 @@ - * Defaults on "first" open. - */ - #define TTYDEF_IFLAG (BRKINT | ICRNL | IMAXBEL | IXON | IXANY) --#define TTYDEF_OFLAG (OPOST | ONLCR | OXTABS) -+#define TTYDEF_OFLAG (OPOST | ONLCR | XTABS) - #define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL) - #define TTYDEF_CFLAG (CREAD | CS8 | HUPCL) - #define TTYDEF_SPEED (B9600) diff --git a/ndk-patches/utmp.h.patch b/ndk-patches/utmp.h.patch index 3c335e724..94af833bf 100644 --- a/ndk-patches/utmp.h.patch +++ b/ndk-patches/utmp.h.patch @@ -1,18 +1,17 @@ -In Termux login_tty() is implemented in the libutil package to support android-21. - diff -u -r /home/fornwall/lib/android-ndk/sysroot/usr/include/utmp.h ./usr/include/utmp.h ---- /home/fornwall/lib/android-ndk/sysroot/usr/include/utmp.h 2017-06-20 17:41:56.000000000 +0200 -+++ ./usr/include/utmp.h 2017-07-10 09:47:42.422659110 +0200 -@@ -101,11 +101,7 @@ +--- /home/fornwall/lib/android-ndk/sysroot/usr/include/utmp.h 2017-11-09 09:57:12.000000000 +0100 ++++ ./usr/include/utmp.h 2017-11-15 12:01:37.108811692 +0100 +@@ -101,11 +101,8 @@ struct utmp* getutent(void); void endutent(void); - -#if __ANDROID_API__ >= 23 --int login_tty(int) __INTRODUCED_IN(23); +-int login_tty(int __fd) __INTRODUCED_IN(23); -#endif /* __ANDROID_API__ >= 23 */ - -+int login_tty(int); ++/* In Termux login_tty() is implemented in the libutil package to support android-21. */ ++int login_tty(int __fd); __END_DECLS diff --git a/packages/aapt/build.sh b/packages/aapt/build.sh index e93040f6f..2aecd7f4b 100644 --- a/packages/aapt/build.sh +++ b/packages/aapt/build.sh @@ -298,7 +298,7 @@ termux_step_make_install () { rm -rf android-jar mkdir android-jar cd android-jar - cp $ANDROID_HOME/platforms/android-26/android.jar . + cp $ANDROID_HOME/platforms/android-27/android.jar . unzip -q android.jar mkdir -p $TERMUX_PREFIX/share/aapt zip -q $TERMUX_PREFIX/share/aapt/android.jar AndroidManifest.xml resources.arsc diff --git a/packages/ecj/build.sh b/packages/ecj/build.sh index 89b8efa35..1353dcafe 100755 --- a/packages/ecj/build.sh +++ b/packages/ecj/build.sh @@ -1,7 +1,7 @@ TERMUX_PKG_HOMEPAGE=http://www.eclipse.org/jdt/core/ TERMUX_PKG_DESCRIPTION="Eclipse Compiler for Java" TERMUX_PKG_VERSION=4.6.2 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=http://eclipse.mirror.wearetriple.com/eclipse/downloads/drops4/R-4.6.2-201611241400/ecj-4.6.2.jar TERMUX_PKG_PLATFORM_INDEPENDENT=true @@ -28,7 +28,7 @@ termux_step_make () { cd android-jar # We need the android classes for JDT to compile against. - cp $ANDROID_HOME/platforms/android-26/android.jar . + cp $ANDROID_HOME/platforms/android-27/android.jar . unzip -q android.jar rm -Rf android.jar resources.arsc res assets zip -q -r android.jar . diff --git a/scripts/setup-android-sdk.sh b/scripts/setup-android-sdk.sh index 4f3b4b870..62f823a68 100755 --- a/scripts/setup-android-sdk.sh +++ b/scripts/setup-android-sdk.sh @@ -25,7 +25,7 @@ if [ ! -d $NDK ]; then mkdir -p $NDK cd $NDK/.. rm -Rf `basename $NDK` - NDK_VERSION=r15c + NDK_VERSION=r16 curl --fail --retry 3 -o ndk.zip \ http://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-`uname`-x86_64.zip @@ -38,4 +38,4 @@ fi yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses # The android-16 platform is used in the ecj package: -$ANDROID_HOME/tools/bin/sdkmanager "build-tools;26.0.1" "platforms;android-26" "platforms;android-16" +$ANDROID_HOME/tools/bin/sdkmanager "build-tools;27.0.1" "platforms;android-27" "platforms;android-16"