postgresql: Build with bundled time zone database
authorFredrik Fornwall <fredrik@fornwall.net>
Wed, 8 Mar 2017 01:09:31 +0000 (02:09 +0100)
committerFredrik Fornwall <fredrik@fornwall.net>
Wed, 8 Mar 2017 01:10:00 +0000 (02:10 +0100)
disabled-packages/postgresql/build.sh
disabled-packages/postgresql/src-timezone-zic.c.patch.beforehostbuild [moved from disabled-packages/postgresql/src-timezone-zic.c.patch with 51% similarity]

index 8dc3229..a23574d 100644 (file)
@@ -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:
@@ -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.