diff --git a/disabled-packages/postgresql/build.sh b/disabled-packages/postgresql/build.sh index 8dc32299e..a23574d1e 100644 --- a/disabled-packages/postgresql/build.sh +++ b/disabled-packages/postgresql/build.sh @@ -8,18 +8,27 @@ TERMUX_PKG_DEPENDS="openssl, libcrypt, readline, libandroid-shmem" # - pgac_cv_prog_cc_ldflags__Wl___as_needed: Inform that the linker supports as-needed. It's # not stricly necessary but avoids unnecessary linking of binaries. # - USE_UNNAMED_POSIX_SEMAPHORES: Avoid using System V semaphores which are disabled on Android. -# - with-system-tzdata: Doesn't currently work as Android uses a single timezone file. But -# if not specified the build uses zic to build timezone files using hard links, which doesn't -# work on Android 6.0+. TODO: Either patch to work with the combined timezone file, or -# replace the hard links with symlinks. +# - ZIC=...: The zic tool is used to build the time zone database bundled with postgresql. +# We specify a binary built in termux_step_host_build which has been patched to use symlinks +# over hard links (which are not supported as of Android 6.0+). +# There exists a --with-system-tzdata configure flag, but that does not work here as Android +# uses a custom combined tzdata file. TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" pgac_cv_prog_cc_ldflags__Wl___as_needed=yes USE_UNNAMED_POSIX_SEMAPHORES=1 --with-openssl ---with-system-tzdata=/system/usr/share/zoneinfo +ZIC=$TERMUX_PKG_HOSTBUILD_DIR/src/timezone/zic " TERMUX_PKG_EXTRA_MAKE_ARGS=" -s" TERMUX_PKG_RM_AFTER_INSTALL="lib/libecpg* bin/ecpg share/man/man1/ecpg.1" +TERMUX_PKG_HOSTBUILD=yes + +termux_step_host_build() { + # Build a native zic binary which we have patched to + # use symlinks instead of hard links. + $TERMUX_PKG_SRCDIR/configure + make ./src/timezone/zic +} termux_step_post_make_install() { # Man pages are not installed by default: diff --git a/disabled-packages/postgresql/src-timezone-zic.c.patch b/disabled-packages/postgresql/src-timezone-zic.c.patch.beforehostbuild similarity index 51% rename from disabled-packages/postgresql/src-timezone-zic.c.patch rename to disabled-packages/postgresql/src-timezone-zic.c.patch.beforehostbuild index dddd9b8fb..68602227b 100644 --- a/disabled-packages/postgresql/src-timezone-zic.c.patch +++ b/disabled-packages/postgresql/src-timezone-zic.c.patch.beforehostbuild @@ -1,11 +1,24 @@ diff -u -r ../postgresql-9.6.2/src/timezone/zic.c ./src/timezone/zic.c ---- ../postgresql-9.6.2/src/timezone/zic.c 2017-02-06 21:45:25.000000000 +0000 -+++ ./src/timezone/zic.c 2017-03-06 02:22:14.841276917 +0000 -@@ -881,8 +881,16 @@ +--- ../postgresql-9.6.2/src/timezone/zic.c 2017-02-06 22:45:25.000000000 +0100 ++++ ./src/timezone/zic.c 2017-03-08 01:51:31.199705267 +0100 +@@ -19,6 +19,12 @@ + #include "private.h" + #include "tzfile.h" + ++/* ++ * Avoid the qsort->pg_qsort define to more easily build ++ * a native patched zic tool. ++ */ ++#undef qsort ++ + #define ZIC_VERSION_PRE_2013 '2' + #define ZIC_VERSION '3' + +@@ -881,8 +887,16 @@ progname, directory, fromfield, strerror(EPERM)); exit(EXIT_FAILURE); } -+#ifdef __ANDROID__ ++#if 1 + /* + * Android does not support hard links starting from 6.0 + * so always use symlinks.