chiark / gitweb /
coreutils: Fix 32-bit issue with ST_BLKSIZE macro
authorFredrik Fornwall <fredrik@fornwall.net>
Mon, 9 Jan 2017 22:04:46 +0000 (17:04 -0500)
committerFredrik Fornwall <fredrik@fornwall.net>
Mon, 9 Jan 2017 22:04:46 +0000 (17:04 -0500)
Fixes https://github.com/termux/termux-app/issues/233

packages/coreutils/build.sh
packages/coreutils/lib-stat-size.h.patch [new file with mode: 0644]

index 1977e902d9bfa1bd8232f38d4885bf08b72f82b3..8694d77df800814c70d963ced6f4eebbe988dac3 100755 (executable)
@@ -1,7 +1,7 @@
 TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/coreutils/
 TERMUX_PKG_DESCRIPTION="Basic file, shell and text manipulation utilities from the GNU project"
 TERMUX_PKG_VERSION=8.26
-TERMUX_PKG_BUILD_REVISION=1
+TERMUX_PKG_BUILD_REVISION=2
 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/coreutils/coreutils-${TERMUX_PKG_VERSION}.tar.xz
 TERMUX_PKG_SHA256=155e94d748f8e2bc327c66e0cbebdb8d6ab265d2f37c3c928f7bf6c3beba9a8e
 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_func_mkfifo=yes gl_cv_host_operating_system=Android --without-gmp --enable-single-binary=symlinks ac_cv_func_endpwent=no"
diff --git a/packages/coreutils/lib-stat-size.h.patch b/packages/coreutils/lib-stat-size.h.patch
new file mode 100644 (file)
index 0000000..c1c8cdb
--- /dev/null
@@ -0,0 +1,19 @@
+diff -u -r ../coreutils-8.26/lib/stat-size.h ./lib/stat-size.h
+--- ../coreutils-8.26/lib/stat-size.h  2016-07-15 15:47:39.000000000 -0400
++++ ./lib/stat-size.h  2017-01-09 16:49:31.758957157 -0500
+@@ -71,9 +71,13 @@
+    suffice, since "cat" sometimes multiplies the result by 4.)  If
+    anyone knows of a system for which this limit is too small, please
+    report it as a bug in this code.  */
+-# define ST_BLKSIZE(statbuf) ((0 < (statbuf).st_blksize \
++/* Termux patch: Cast to long since on 32-bit Android this otherwise
++   results in an unsigned long, which breaks comparison with e.g.
++   signed off_t in tail.c, see:
++   https://github.com/termux/termux-app/issues/233 */
++# define ST_BLKSIZE(statbuf) ((long) ((0 < (statbuf).st_blksize \
+                                && (statbuf).st_blksize <= ((size_t)-1) / 8 + 1) \
+-                              ? (statbuf).st_blksize : DEV_BSIZE)
++                              ? (statbuf).st_blksize : DEV_BSIZE))
+ # if defined hpux || defined __hpux__ || defined __hpux
+   /* HP-UX counts st_blocks in 1024-byte units.
+      This loses when mixing HP-UX and BSD file systems with NFS.  */