-<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.291 2007/08/20 08:53:12 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.292 2007/08/25 20:29:25 tgl Exp $ -->
<chapter id="installation">
<title><![%standalone-include[<productname>PostgreSQL</>]]>
</indexterm>
<listitem>
<para>
- PostgreSQL includes its own time zone database, which it
- requires for date and time operations. This time zone
- database is in fact compatible with the time zone database
- provided by many operating systems such as FreeBSD, Linux,
- and Solaris, so it would be redundant to install it again.
- When this option is used, the operating system supplied time
- zone database in <replaceable>DIRECTORY</replaceable> is used
- instead of the one included in the PostgreSQL source
- distribution. <filename>/usr/share/zoneinfo/</filename> is a
+ <productname>PostgreSQL</> includes its own time zone database,
+ which it requires for date and time operations. This time zone
+ database is in fact compatible with the <quote>zic</> time zone
+ database provided by many operating systems such as FreeBSD,
+ Linux, and Solaris, so it would be redundant to install it again.
+ When this option is used, the system-supplied time zone database
+ in <replaceable>DIRECTORY</replaceable> is used instead of the one
+ included in the PostgreSQL source distribution.
+ <replaceable>DIRECTORY</replaceable> must be specified as an
+ absolute path. <filename>/usr/share/zoneinfo</filename> is a
likely directory on some operating systems. Note that the
- installation routine does not detect mismatching or erroneous
- time zone data. You are advised to run the regression tests
- to verify that the time zone data you have pointed to works
- correctly.
+ installation routine will not detect mismatching or erroneous time
+ zone data. If you use this option, you are advised to run the
+ regression tests to verify that the time zone data you have
+ pointed to works correctly with <productname>PostgreSQL</>.
</para>
<para>
who know their target operating system well. The main
advantage of using this option is that the PostgreSQL package
won't need to be upgraded whenever any of the many local
- daylight-saving time rules changes. Another completely
- incidental advantage is that PostgreSQL can be
- cross-compiled<indexterm><primary>cross
- compilation</primary></indexterm> straightforwardly if the
- time-zone database does not need to be built during the
+ daylight-saving time rules change. Another advantage is that
+ PostgreSQL can be cross-compiled<indexterm><primary>cross
+ compilation</primary></indexterm> more straightforwardly if the
+ time zone database files do not need to be built during the
installation.
</para>
</listitem>
# Makefile for the timezone library
# IDENTIFICATION
-# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.27 2007/08/20 08:53:12 petere Exp $
+# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.28 2007/08/25 20:29:25 tgl Exp $
#
#-------------------------------------------------------------------------
# for POSIX-style timezone specs
POSIXRULES = US/Eastern
-all: SUBSYS.o submake-libpgport zic
+# use system timezone data?
+ifneq (,$(with_system_tzdata))
+override CPPFLAGS += '-DSYSTEMTZDIR="$(with_system_tzdata)"'
+endif
+
+all: SUBSYS.o
+
+ifeq (,$(with_system_tzdata))
+all: submake-libpgport zic
+endif
SUBSYS.o: $(OBJS)
$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
-ifeq (,$(with_system_tzdata))
zic: $(ZICOBJS)
$(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
-endif
install: all installdirs
ifeq (,$(with_system_tzdata))
./zic -d '$(DESTDIR)$(datadir)/timezone' -p '$(POSIXRULES)' $(TZDATAFILES)
-else
- ln -s '$(with_system_tzdata)' '$(DESTDIR)$(datadir)/timezone'
endif
$(MAKE) -C tznames $@
$(mkinstalldirs) '$(DESTDIR)$(datadir)'
uninstall:
+ifeq (,$(with_system_tzdata))
rm -rf '$(DESTDIR)$(datadir)/timezone'
+endif
$(MAKE) -C tznames $@
clean distclean maintainer-clean:
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.53 2007/08/04 19:29:25 tgl Exp $
+ * $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.54 2007/08/25 20:29:25 tgl Exp $
*
*-------------------------------------------------------------------------
*/
static pg_tz gmt_timezone_data;
-static char tzdir[MAXPGPATH];
-static bool done_tzdir = false;
-
static bool scan_directory_ci(const char *dirname,
const char *fname, int fnamelen,
char *canonname, int canonnamelen);
/*
* Return full pathname of timezone data directory
*/
-static char *
+static const char *
pg_TZDIR(void)
{
+#ifndef SYSTEMTZDIR
+ /* normal case: timezone stuff is under our share dir */
+ static bool done_tzdir = false;
+ static char tzdir[MAXPGPATH];
+
if (done_tzdir)
return tzdir;
done_tzdir = true;
return tzdir;
+#else
+ /* we're configured to use system's timezone database */
+ return SYSTEMTZDIR;
+#endif
}