Update to PostgreSQL 9.0.2
This commit is contained in:
parent
6b84484ca5
commit
4753f3695e
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
/postgresql-9.0.2.tar.bz2
|
||||
/postgresql-9.0.2-US.pdf
|
||||
/postgresql-8.4.6.tar.bz2
|
||||
/postgresql-8.4.6-US.pdf
|
||||
|
127
README.rpm-dist
127
README.rpm-dist
@ -1,29 +1,21 @@
|
||||
README.rpm-dist
|
||||
-----------------------------------------------------------------------------
|
||||
Version 8.4, for the PostgreSQL 8.4 RPM set.
|
||||
Version 9.0, for the PostgreSQL 9.0 RPM set.
|
||||
Devrim Gündüz <devrim@CommandPrompt.com>
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Contents:
|
||||
0.) Quick note about '-i'
|
||||
1.) Introduction and QuickStart
|
||||
2.) PostgreSQL RPM packages and rationale
|
||||
3.) Starting multiple postmasters
|
||||
4.) Regression Testing
|
||||
5.) Starting postmaster automatically on startup
|
||||
6.) Grand Unified Configuration(GUC) File
|
||||
7.) Logging set up
|
||||
8.) Rebuilding from the source RPM
|
||||
9.) Contrib files
|
||||
10.) Further Information Resource
|
||||
|
||||
QUICK NOTE ABOUT '-i'
|
||||
-----------------------------------------------------------------------------
|
||||
The postmaster '-i' option is NOT used by default in the initscript shipped
|
||||
with these RPMs. Please do NOT modify the initscript to add the '-i' back
|
||||
in -- it will get overwritten on the next package upgrade. Rather, see the
|
||||
section below on the Grand Unified Configuration file, which includes the
|
||||
recommended way to get '-i' functionality.
|
||||
2.) Upgrading an installation
|
||||
3.) PostgreSQL RPM packages and rationale
|
||||
4.) Starting multiple postmasters
|
||||
5.) Regression Testing
|
||||
6.) Starting postmaster automatically on startup
|
||||
7.) Grand Unified Configuration(GUC) File
|
||||
8.) Logging set up
|
||||
9.) Rebuilding from the source RPM
|
||||
10.) Contrib files
|
||||
11.) Further Information Resource
|
||||
|
||||
INTRODUCTION
|
||||
-----------------------------------------------------------------------------
|
||||
@ -31,27 +23,14 @@ This document exists to explain the layout of the RPMs for PostgreSQL, to
|
||||
describe various RPM specifics, and to document special features found
|
||||
in the RPMset.
|
||||
|
||||
This document is written to be applicable to version 8.4 of PostgreSQL,
|
||||
This document is written to be applicable to version 9.0 of PostgreSQL,
|
||||
which is the current version of the RPMs as of this writing. More to the
|
||||
point, versions prior to 8.4 are not documented here.
|
||||
point, versions prior to 9.0 are not documented here.
|
||||
|
||||
Official PostgreSQL Global Development Group RPMs carry a 'PGDG after the
|
||||
release number. Other RPMsets as distributed with Linux distributions may
|
||||
have a different release number and initials.
|
||||
|
||||
If you want to stay up-to-date on the PostgreSQL core itself, you may
|
||||
want to use PGDG set, instead of the binaries supplied by distribution.
|
||||
|
||||
These RPMs do not support any sort of major version upgrading process
|
||||
other than that documented in the regular documentation. That is, you
|
||||
must dump, upgrade,initdb, and restore your data if you are
|
||||
performing a major version update. This is not needed for minor version
|
||||
updates.
|
||||
|
||||
For major version upgrade, dump first, then remove the old server
|
||||
subpackage, install the new package, and restore the data from dump.
|
||||
|
||||
This document is intended for use only with Red Hat, CentOS and Fedora.
|
||||
This document is intended for use only with the RPMs supplied in Red Hat
|
||||
Enterprise Linux, CentOS and Fedora. Note that there are also "PGDG"
|
||||
RPMs available directly from the upstream PostgreSQL project. Those are
|
||||
slightly different.
|
||||
|
||||
QUICKSTART
|
||||
-----------------------------------------------------------------------------
|
||||
@ -78,9 +57,43 @@ upgrading.
|
||||
The user 'postgres' is created during installation of the server subpackage.
|
||||
This user by default is UID and GID 26. The user has the default shell set to
|
||||
bash, and the home directory set to /var/lib/pgsql. This user also has no
|
||||
default password -- in order to be able to su to it from a non-root account
|
||||
default password. If you want to be able to su to it from a non-root account
|
||||
or login as 'postgres' you will need to set a password using passwd.
|
||||
|
||||
UPGRADING AN INSTALLATION
|
||||
-----------------------------------------------------------------------------
|
||||
For a minor-version upgrade (such as 9.0.1 to 9.0.2), just install the
|
||||
new RPMs; there's usually nothing more to it than that. Upgrading
|
||||
across a major release of PostgreSQL (for example, from 8.3.x to 8.4.x)
|
||||
requires more effort.
|
||||
|
||||
If you are upgrading across more than one major release of PostgreSQL
|
||||
(for example, from 8.3.x to 9.0.x), you will need to follow the "traditional"
|
||||
dump and reload process to bring your data into the new version. That is:
|
||||
*before* upgrading, run pg_dumpall to extract all your data into a SQL file.
|
||||
Shut down the old postmaster, upgrade to the new version RPMs, initdb,
|
||||
and run the dump file through psql to restore your data.
|
||||
|
||||
In some major releases, the RPMs also support in-place upgrade from the
|
||||
immediately previous major release. Currently, you can upgrade in-place
|
||||
from 8.4.x to 9.0.x. This is much faster than a dump and reload.
|
||||
To do an in-place upgrade:
|
||||
* shut down the old postmaster
|
||||
* optionally make a backup of /var/lib/pgsql/data/
|
||||
* install the new version's RPMs (install all the ones you had before,
|
||||
plus postgresql-upgrade)
|
||||
* as root, run "service postgresql upgrade"
|
||||
* update the configuration files /var/lib/pgsql/data/*.conf with any
|
||||
customizations you had before (your old configuration files are in
|
||||
/var/lib/pgsql/data-old/)
|
||||
* as root, run "service postgresql start"
|
||||
* postgresql-upgrade can be removed after the update is complete
|
||||
|
||||
NOTE: The in-place upgrade process is new and relatively poorly tested,
|
||||
so if your data is critical it's a really good idea to make a tarball
|
||||
backup of /var/lib/pgsql/data/ before running the upgrade. This will
|
||||
let you get back to where you were in case of disaster.
|
||||
|
||||
POSTGRESQL RPM PACKAGES AND RATIONALE.
|
||||
-----------------------------------------------------------------------------
|
||||
PostgreSQL is split up into multiple packages so that users can 'pick and
|
||||
@ -88,13 +101,12 @@ choose' what pieces are needed, and what dependencies are required.
|
||||
|
||||
The RPMset is packaged in the following subpackages:
|
||||
|
||||
postgresql: Key clients and libraries, and documentation
|
||||
postgresql: Key client programs and documentation
|
||||
postgresql-libs: Client shared libraries
|
||||
postgresql-server: Server executables and data files
|
||||
postgresql-devel: Development libraries and include files
|
||||
postgresql-python: The PyGreSQL client library
|
||||
postgresql-tcl: Tcl client library (Pgtcl)
|
||||
postgresql-test: The regression tests and associated files
|
||||
postgresql-upgrade: Support files for upgrading from previous major version
|
||||
postgresql-docs: Extra documentation, such as the tutorial files
|
||||
postgresql-contrib: The contrib source tree, as well as selected binaries
|
||||
postgresql-plperl: PL/Perl procedural language
|
||||
@ -105,14 +117,10 @@ You have to install postgresql and postgresql-libs to do anything.
|
||||
postgresql-server is needed unless you only plan to use the clients to work
|
||||
with a remote PostgreSQL server. The others are optional.
|
||||
|
||||
Note that there is no postgresql-perl, postgresql-jdbc, postgresql-odbc, or
|
||||
postgresql-tk package any longer. This is due to these portions being split
|
||||
into separate source distributions.
|
||||
|
||||
While PyGreSQL was split out from the core PostgreSQL distribution, thanks to
|
||||
Kaj's work it is still included as the python subpackage. Also, Pgtcl is
|
||||
still included as the tcl subpackage, although it is not part of the core
|
||||
distribution anymore.
|
||||
Note that there are no postgresql-perl, postgresql-jdbc, postgresql-odbc,
|
||||
postgresql-python, postgresql-tcl, or postgresql-tk subpackages any longer.
|
||||
Those programs have been split off into separate source distributions.
|
||||
They are still available, but in some cases not under those RPM names.
|
||||
|
||||
RPM FILE LOCATIONS.
|
||||
-----------------------------------------------------------------------------
|
||||
@ -142,7 +150,6 @@ Development Headers: /usr/include/pgsql
|
||||
Other shared data: /usr/share/pgsql
|
||||
Regression tests: /usr/lib/pgsql/test/regress (in the -test package)
|
||||
or /usr/lib64/pgsql/test/regress
|
||||
Documentation SGML: /usr/share/doc/postgresql-docs-x.y.z/sgml
|
||||
|
||||
While it may seem gratuitous to place these files in different locations, the
|
||||
FHS requires it -- distributions should not ever touch /usr/local. It may
|
||||
@ -171,15 +178,10 @@ As an example, let us create a secondary postmaster called, creatively enough,
|
||||
here. Since $PGDATA/postgresql.conf will override many of these
|
||||
settings, except PGDATA, you might be surprised on startup.
|
||||
3.) create the target PGDATA.
|
||||
4.) Initdb the targe PGDATA as documented in the main documentation.
|
||||
Automatic initdb may or may not work for you, so a manual one is
|
||||
preferred. This must be done as user 'postgres'
|
||||
4.) Initdb the target PGDATA with 'service secondary initdb'.
|
||||
5.) Edit postgresql.conf to change the port, address, tcpip settings, etc.
|
||||
6.) Start the postmaster with 'service secondary start'.
|
||||
|
||||
Note that there may be problems with the standard symlink -- consider this
|
||||
support experimental at this point in time.
|
||||
|
||||
REGRESSION TESTING
|
||||
-------------------------------------------------------------------------------
|
||||
If you install the postgresql-test RPM then you can run the PostgreSQL
|
||||
@ -188,9 +190,8 @@ results that give you assurances that the installation is complete, and that
|
||||
your database machine is up to the task.
|
||||
|
||||
To run the regression tests under the RPM installation, make sure that
|
||||
postmaster has been started (if not, su to root and execute the
|
||||
"/etc/rc.d/init.d/postgresql start" init script), cd to
|
||||
/usr/lib/pgsql/test/regress (or /usr/lib64/pgsql/test/regress),
|
||||
postmaster has been started (if not, su to root and do "service postgresql
|
||||
start"), cd to /usr/lib/pgsql/test/regress (or /usr/lib64/pgsql/test/regress),
|
||||
su to postgres, and execute "make check".
|
||||
This command will start the regression tests and will both show the
|
||||
results to the screen and store the results in the file regress.out.
|
||||
@ -208,8 +209,8 @@ STARTING POSTMASTER AUTOMATICALLY AT SYSTEM STARTUP
|
||||
-------------------------------------------------------------------------------
|
||||
Fedora / Red Hat / CentOS use the System V Init package. A startup
|
||||
script for PostgreSQL is provided in the server package, as
|
||||
/etc/rc.d/init.d/postgresql. To start the postmaster, with sanity
|
||||
checking, as root, run
|
||||
/etc/rc.d/init.d/postgresql. To start the postmaster manually,
|
||||
as root run
|
||||
service postgresql start
|
||||
To shut the postmaster down,
|
||||
service postgresql stop
|
||||
@ -281,7 +282,7 @@ uuid 1 #build contrib/uuid-ossp
|
||||
To use these defines, invoke a rebuild like this:
|
||||
rpmbuild --rebuild --define 'python 0' --define 'tcl 0' \
|
||||
--define 'test 0' --define 'runselftest 0' --define 'kerberos 0' \
|
||||
postgresql-8.4.0-1.src.rpm
|
||||
postgresql-9.0.2-1.src.rpm
|
||||
This line would disable the python, tcl, and test subpackages, disable the
|
||||
regression test run during build, and disable kerberos support.
|
||||
|
||||
|
@ -1,20 +0,0 @@
|
||||
Upstream has a policy of only supporting one autoconf version with any
|
||||
given PostgreSQL version; which is good for ensuring repeatable results
|
||||
for PostgreSQL, but it's not very tenable in the Fedora/RHEL world.
|
||||
Dike out the check.
|
||||
|
||||
|
||||
diff -Naur postgresql-8.4.6.orig/configure.in postgresql-8.4.6/configure.in
|
||||
--- postgresql-8.4.6.orig/configure.in 2009-09-03 20:36:50.000000000 -0400
|
||||
+++ postgresql-8.4.6/configure.in 2009-09-04 13:03:07.000000000 -0400
|
||||
@@ -19,10 +19,6 @@
|
||||
|
||||
AC_INIT([PostgreSQL], [8.4.6], [pgsql-bugs@postgresql.org])
|
||||
|
||||
-m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.61], [], [m4_fatal([Autoconf version 2.61 is required.
|
||||
-Untested combinations of 'autoconf' and PostgreSQL versions are not
|
||||
-recommended. You can remove the check from 'configure.in' but it is then
|
||||
-your responsibility whether the result works or not.])])
|
||||
AC_COPYRIGHT([Copyright (c) 1996-2009, PostgreSQL Global Development Group])
|
||||
AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
|
||||
AC_CONFIG_AUX_DIR(config)
|
@ -1,10 +1,10 @@
|
||||
Select stderr-based logging with a week's worth of daily logfiles.
|
||||
Default to stderr-based logging with a week's worth of daily logfiles.
|
||||
|
||||
|
||||
diff -Naur postgresql-8.4.0.orig/src/backend/utils/misc/postgresql.conf.sample postgresql-8.4.0/src/backend/utils/misc/postgresql.conf.sample
|
||||
--- postgresql-8.4.0.orig/src/backend/utils/misc/postgresql.conf.sample 2009-04-22 20:23:45.000000000 -0400
|
||||
+++ postgresql-8.4.0/src/backend/utils/misc/postgresql.conf.sample 2009-08-12 23:20:46.000000000 -0400
|
||||
@@ -236,17 +236,17 @@
|
||||
diff -Naur postgresql-9.0.1.orig/src/backend/utils/misc/postgresql.conf.sample postgresql-9.0.1/src/backend/utils/misc/postgresql.conf.sample
|
||||
--- postgresql-9.0.1.orig/src/backend/utils/misc/postgresql.conf.sample 2010-10-01 10:25:44.000000000 -0400
|
||||
+++ postgresql-9.0.1/src/backend/utils/misc/postgresql.conf.sample 2010-10-11 11:53:34.650971490 -0400
|
||||
@@ -262,17 +262,17 @@
|
||||
# requires logging_collector to be on.
|
||||
|
||||
# This is used when logging to stderr:
|
||||
@ -26,7 +26,7 @@ diff -Naur postgresql-8.4.0.orig/src/backend/utils/misc/postgresql.conf.sample p
|
||||
# same name as the new log file will be
|
||||
# truncated rather than appended to.
|
||||
# But such truncation only occurs on
|
||||
@@ -254,9 +254,9 @@
|
||||
@@ -280,9 +280,9 @@
|
||||
# or size-driven rotation. Default is
|
||||
# off, meaning append to existing files
|
||||
# in all cases.
|
||||
|
@ -1,57 +0,0 @@
|
||||
Back-ported patch from Postgres devel head: reset oom_adj to zero in any
|
||||
postmaster child process. This allows us to disable OOM kill on the postmaster
|
||||
(see the init script) without affecting OOM behavior for child processes.
|
||||
|
||||
|
||||
diff -Naur postgresql-8.4.2.orig/src/backend/postmaster/fork_process.c postgresql-8.4.2/src/backend/postmaster/fork_process.c
|
||||
--- postgresql-8.4.2.orig/src/backend/postmaster/fork_process.c 2009-01-01 12:23:46.000000000 -0500
|
||||
+++ postgresql-8.4.2/src/backend/postmaster/fork_process.c 2010-01-11 12:28:17.000000000 -0500
|
||||
@@ -12,7 +12,9 @@
|
||||
#include "postgres.h"
|
||||
#include "postmaster/fork_process.h"
|
||||
|
||||
+#include <fcntl.h>
|
||||
#include <time.h>
|
||||
+#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -60,6 +62,38 @@
|
||||
setitimer(ITIMER_PROF, &prof_itimer, NULL);
|
||||
#endif
|
||||
|
||||
+ /*
|
||||
+ * By default, Linux tends to kill the postmaster in out-of-memory
|
||||
+ * situations, because it blames the postmaster for the sum of child
|
||||
+ * process sizes *including shared memory*. (This is unbelievably
|
||||
+ * stupid, but the kernel hackers seem uninterested in improving it.)
|
||||
+ * Therefore it's often a good idea to protect the postmaster by
|
||||
+ * setting its oom_adj value negative (which has to be done in a
|
||||
+ * root-owned startup script). If you just do that much, all child
|
||||
+ * processes will also be protected against OOM kill, which might not
|
||||
+ * be desirable. You can then choose to build with LINUX_OOM_ADJ
|
||||
+ * #defined to 0, or some other value that you want child processes
|
||||
+ * to adopt here.
|
||||
+ */
|
||||
+#ifdef LINUX_OOM_ADJ
|
||||
+ {
|
||||
+ /*
|
||||
+ * Use open() not stdio, to ensure we control the open flags.
|
||||
+ * Some Linux security environments reject anything but O_WRONLY.
|
||||
+ */
|
||||
+ int fd = open("/proc/self/oom_adj", O_WRONLY, 0);
|
||||
+
|
||||
+ /* We ignore all errors */
|
||||
+ if (fd >= 0)
|
||||
+ {
|
||||
+ char buf[16];
|
||||
+
|
||||
+ snprintf(buf, sizeof(buf), "%d\n", LINUX_OOM_ADJ);
|
||||
+ (void) write(fd, buf, strlen(buf));
|
||||
+ close(fd);
|
||||
+ }
|
||||
+ }
|
||||
+#endif /* LINUX_OOM_ADJ */
|
||||
}
|
||||
|
||||
return result;
|
@ -7,10 +7,10 @@ So work around it by adding an rpath spec to plperl.so (only).
|
||||
Per bug #162198.
|
||||
|
||||
|
||||
diff -Naur postgresql-8.4.4.orig/src/pl/plperl/GNUmakefile postgresql-8.4.4/src/pl/plperl/GNUmakefile
|
||||
--- postgresql-8.4.4.orig/src/pl/plperl/GNUmakefile 2010-05-13 12:40:36.000000000 -0400
|
||||
+++ postgresql-8.4.4/src/pl/plperl/GNUmakefile 2010-05-14 11:50:27.000000000 -0400
|
||||
@@ -38,6 +38,9 @@
|
||||
diff -Naur postgresql-9.0.1.orig/src/pl/plperl/GNUmakefile postgresql-9.0.1/src/pl/plperl/GNUmakefile
|
||||
--- postgresql-9.0.1.orig/src/pl/plperl/GNUmakefile 2010-10-01 10:25:44.000000000 -0400
|
||||
+++ postgresql-9.0.1/src/pl/plperl/GNUmakefile 2010-10-11 11:50:19.933972244 -0400
|
||||
@@ -40,6 +40,9 @@
|
||||
|
||||
SHLIB_LINK = $(perl_embed_ldflags)
|
||||
|
||||
@ -18,5 +18,5 @@ diff -Naur postgresql-8.4.4.orig/src/pl/plperl/GNUmakefile postgresql-8.4.4/src/
|
||||
+SHLIB_LINK += $(rpath)
|
||||
+
|
||||
REGRESS_OPTS = --dbname=$(PL_TESTDB) --load-language=plperl --load-language=plperlu
|
||||
REGRESS = plperl plperl_trigger plperl_shared plperl_elog
|
||||
REGRESS = plperl plperl_trigger plperl_shared plperl_elog plperl_util plperl_init plperlu
|
||||
# if Perl can support two interpreters in one backend,
|
||||
|
72
postgresql-upgrade-fixes.patch
Normal file
72
postgresql-upgrade-fixes.patch
Normal file
@ -0,0 +1,72 @@
|
||||
Patch pg_upgrade to not insist on useless baggage in the upgrade RPM,
|
||||
as well as being more careful to check for things it does need.
|
||||
|
||||
|
||||
diff -Naur postgresql-9.0.2.orig/contrib/pg_upgrade/exec.c postgresql-9.0.2/contrib/pg_upgrade/exec.c
|
||||
--- postgresql-9.0.2.orig/contrib/pg_upgrade/exec.c 2010-12-13 21:55:50.000000000 -0500
|
||||
+++ postgresql-9.0.2/contrib/pg_upgrade/exec.c 2010-12-28 16:56:05.734506648 -0500
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
|
||||
static void check_data_dir(migratorContext *ctx, const char *pg_data);
|
||||
-static void check_bin_dir(migratorContext *ctx, ClusterInfo *cluster);
|
||||
+static void check_bin_dir(migratorContext *ctx, ClusterInfo *cluster, Cluster whichCluster);
|
||||
static int check_exec(migratorContext *ctx, const char *dir, const char *cmdName);
|
||||
static const char *validate_exec(const char *path);
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
check_ok(ctx);
|
||||
|
||||
prep_status(ctx, "Checking old bin directory (%s)", ctx->old.bindir);
|
||||
- check_bin_dir(ctx, &ctx->old);
|
||||
+ check_bin_dir(ctx, &ctx->old, CLUSTER_OLD);
|
||||
check_ok(ctx);
|
||||
|
||||
prep_status(ctx, "Checking new data directory (%s)", ctx->new.pgdata);
|
||||
@@ -107,7 +107,7 @@
|
||||
check_ok(ctx);
|
||||
|
||||
prep_status(ctx, "Checking new bin directory (%s)", ctx->new.bindir);
|
||||
- check_bin_dir(ctx, &ctx->new);
|
||||
+ check_bin_dir(ctx, &ctx->new, CLUSTER_NEW);
|
||||
check_ok(ctx);
|
||||
}
|
||||
|
||||
@@ -158,12 +158,18 @@
|
||||
* exit().
|
||||
*/
|
||||
static void
|
||||
-check_bin_dir(migratorContext *ctx, ClusterInfo *cluster)
|
||||
+check_bin_dir(migratorContext *ctx, ClusterInfo *cluster, Cluster whichCluster)
|
||||
{
|
||||
check_exec(ctx, cluster->bindir, "postgres");
|
||||
- check_exec(ctx, cluster->bindir, "psql");
|
||||
check_exec(ctx, cluster->bindir, "pg_ctl");
|
||||
- check_exec(ctx, cluster->bindir, "pg_dumpall");
|
||||
+ check_exec(ctx, cluster->bindir, "pg_resetxlog");
|
||||
+ if (whichCluster == CLUSTER_NEW)
|
||||
+ {
|
||||
+ /* these are only needed in the new cluster */
|
||||
+ check_exec(ctx, cluster->bindir, "pg_config");
|
||||
+ check_exec(ctx, cluster->bindir, "psql");
|
||||
+ check_exec(ctx, cluster->bindir, "pg_dumpall");
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
diff -Naur postgresql-9.0.2.orig/contrib/pg_upgrade/option.c postgresql-9.0.2/contrib/pg_upgrade/option.c
|
||||
--- postgresql-9.0.2.orig/contrib/pg_upgrade/option.c 2010-12-13 21:55:50.000000000 -0500
|
||||
+++ postgresql-9.0.2/contrib/pg_upgrade/option.c 2010-12-28 16:53:44.730531216 -0500
|
||||
@@ -308,7 +308,11 @@
|
||||
static void
|
||||
get_pkglibdirs(migratorContext *ctx)
|
||||
{
|
||||
- ctx->old.libpath = get_pkglibdir(ctx, ctx->old.bindir);
|
||||
+ /*
|
||||
+ * we do not need to know the libpath in the old cluster, and might not
|
||||
+ * have a working pg_config to ask for it anyway.
|
||||
+ */
|
||||
+ ctx->old.libpath = NULL;
|
||||
ctx->new.libpath = get_pkglibdir(ctx, ctx->new.bindir);
|
||||
}
|
||||
|
156
postgresql.init
156
postgresql.init
@ -11,11 +11,20 @@
|
||||
# This script is slightly unusual in that the name of the daemon (postmaster)
|
||||
# is not the same as the name of the subsystem (postgresql)
|
||||
|
||||
# PGVERSION is the full package version, e.g., 8.4.0
|
||||
# PGVERSION is the full package version, e.g., 9.0.2
|
||||
# Note: the specfile inserts the correct value during package build
|
||||
PGVERSION=xxxx
|
||||
# PGMAJORVERSION is major version, e.g., 8.4 (this should match PG_VERSION)
|
||||
# PGMAJORVERSION is major version, e.g., 9.0 (this should match PG_VERSION)
|
||||
PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`
|
||||
# PREVMAJORVERSION is the previous major version, e.g., 8.4, for upgrades
|
||||
# Note: the specfile inserts the correct value during package build
|
||||
PREVMAJORVERSION=xxxx
|
||||
# PREVPGENGINE is the directory containing the previous postmaster executable
|
||||
# Note: the specfile inserts the correct value during package build
|
||||
PREVPGENGINE=xxxx
|
||||
# PGDOCDIR is the directory containing the package's documentation
|
||||
# Note: the specfile inserts the correct value during package build
|
||||
PGDOCDIR=xxxx
|
||||
|
||||
# Source function library.
|
||||
. /etc/rc.d/init.d/functions
|
||||
@ -76,35 +85,27 @@ start(){
|
||||
if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]
|
||||
then
|
||||
# Check version of existing PGDATA
|
||||
if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]
|
||||
if [ x`cat "$PGDATA/PG_VERSION"` = x"$PGMAJORVERSION" ]
|
||||
then
|
||||
: A-OK
|
||||
elif [ x`cat "$PGDATA/PG_VERSION"` = x"$PREVMAJORVERSION" ]
|
||||
then
|
||||
SYSDOCDIR="(Your System's documentation directory)"
|
||||
if [ -d "/usr/doc/postgresql-$PGVERSION" ]
|
||||
then
|
||||
SYSDOCDIR=/usr/doc
|
||||
fi
|
||||
if [ -d "/usr/share/doc/postgresql-$PGVERSION" ]
|
||||
then
|
||||
SYSDOCDIR=/usr/share/doc
|
||||
fi
|
||||
if [ -d "/usr/doc/packages/postgresql-$PGVERSION" ]
|
||||
then
|
||||
SYSDOCDIR=/usr/doc/packages
|
||||
fi
|
||||
if [ -d "/usr/share/doc/packages/postgresql-$PGVERSION" ]
|
||||
then
|
||||
SYSDOCDIR=/usr/share/doc/packages
|
||||
fi
|
||||
echo
|
||||
echo $"An old version of the database format was found."
|
||||
echo $"You need to upgrade the data format before using PostgreSQL."
|
||||
echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
|
||||
echo $"Use \"service postgresql upgrade\" to upgrade to version $PGMAJORVERSION."
|
||||
echo $"See $PGDOCDIR/README.rpm-dist for more information."
|
||||
exit 1
|
||||
else
|
||||
echo
|
||||
echo $"An old version of the database format was found."
|
||||
echo $"You need to dump and reload before using PostgreSQL $PGMAJORVERSION."
|
||||
echo $"See $PGDOCDIR/README.rpm-dist for more information."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# No existing PGDATA! Warn the user to initdb it.
|
||||
echo
|
||||
echo "$PGDATA is missing. Use \"service postgresql initdb\" to initialize the cluster first."
|
||||
echo $"$PGDATA is missing. Use \"service postgresql initdb\" to initialize the cluster first."
|
||||
echo_failure
|
||||
echo
|
||||
exit 1
|
||||
@ -163,18 +164,11 @@ reload(){
|
||||
$SU -l postgres -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
|
||||
}
|
||||
|
||||
initdb(){
|
||||
if [ -f "$PGDATA/PG_VERSION" ]
|
||||
then
|
||||
echo -n "Data directory is not empty!"
|
||||
echo_failure
|
||||
echo
|
||||
script_result=1
|
||||
else
|
||||
echo -n $"Initializing database: "
|
||||
# code shared between initdb and upgrade actions
|
||||
perform_initdb(){
|
||||
if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
|
||||
then
|
||||
mkdir -p "$PGDATA" || exit 1
|
||||
mkdir -p "$PGDATA" || return 1
|
||||
chown postgres:postgres "$PGDATA"
|
||||
chmod go-rwx "$PGDATA"
|
||||
fi
|
||||
@ -184,7 +178,7 @@ initdb(){
|
||||
# Make sure the startup-time log file is OK, too
|
||||
if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
|
||||
then
|
||||
touch "$PGLOG" || exit 1
|
||||
touch "$PGLOG" || return 1
|
||||
chown postgres:postgres "$PGLOG"
|
||||
chmod go-rwx "$PGLOG"
|
||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
|
||||
@ -199,6 +193,22 @@ initdb(){
|
||||
chmod go-rwx "$PGDATA/pg_log"
|
||||
|
||||
if [ -f "$PGDATA/PG_VERSION" ]
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
initdb(){
|
||||
if [ -f "$PGDATA/PG_VERSION" ]
|
||||
then
|
||||
echo -n $"Data directory is not empty!"
|
||||
echo_failure
|
||||
echo
|
||||
script_result=1
|
||||
else
|
||||
echo -n $"Initializing database: "
|
||||
if perform_initdb
|
||||
then
|
||||
echo_success
|
||||
else
|
||||
@ -209,6 +219,79 @@ initdb(){
|
||||
fi
|
||||
}
|
||||
|
||||
upgrade(){
|
||||
# must see previous version in PG_VERSION
|
||||
if [ ! -f "$PGDATA/PG_VERSION" -o \
|
||||
x`cat "$PGDATA/PG_VERSION"` != x"$PREVMAJORVERSION" ]
|
||||
then
|
||||
echo
|
||||
echo $"Cannot upgrade because database is not of version $PREVMAJORVERSION."
|
||||
echo_failure
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x "$PGENGINE/pg_upgrade" ]
|
||||
then
|
||||
echo
|
||||
echo $"Please install the postgresql-upgrade RPM."
|
||||
echo_failure
|
||||
echo
|
||||
exit 5
|
||||
fi
|
||||
# Make sure service is stopped
|
||||
stop
|
||||
|
||||
echo -n $"Upgrading database: "
|
||||
|
||||
# Set up log file for pg_upgrade
|
||||
PGUPLOG=/var/lib/pgsql/pgupgrade.log
|
||||
rm -f "$PGUPLOG"
|
||||
touch "$PGUPLOG" || exit 1
|
||||
chown postgres:postgres "$PGUPLOG"
|
||||
chmod go-rwx "$PGUPLOG"
|
||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGUPLOG"
|
||||
|
||||
# Move old DB to PGDATAOLD
|
||||
PGDATAOLD="${PGDATA}-old"
|
||||
rm -rf "$PGDATAOLD"
|
||||
mv "$PGDATA" "$PGDATAOLD" || exit 1
|
||||
|
||||
# Create empty new-format database
|
||||
if perform_initdb
|
||||
then
|
||||
# Do the upgrade
|
||||
$SU -l postgres -c "$PGENGINE/pg_upgrade \
|
||||
'--old-bindir=$PREVPGENGINE' \
|
||||
'--new-bindir=$PGENGINE' \
|
||||
'--old-datadir=$PGDATAOLD' \
|
||||
'--new-datadir=$PGDATA' \
|
||||
--link \
|
||||
'--old-port=$PGPORT' '--new-port=$PGPORT' \
|
||||
--user=postgres" >> "$PGUPLOG" 2>&1 < /dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# pg_upgrade failed
|
||||
script_result=1
|
||||
fi
|
||||
else
|
||||
# initdb failed
|
||||
script_result=1
|
||||
fi
|
||||
|
||||
if [ $script_result -eq 0 ]
|
||||
then
|
||||
echo_success
|
||||
else
|
||||
# Clean up after failure
|
||||
rm -rf "$PGDATA"
|
||||
mv "$PGDATAOLD" "$PGDATA"
|
||||
|
||||
echo_failure
|
||||
fi
|
||||
echo
|
||||
echo $"See $PGUPLOG for details."
|
||||
}
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start)
|
||||
@ -236,8 +319,11 @@ case "$1" in
|
||||
initdb)
|
||||
initdb
|
||||
;;
|
||||
upgrade)
|
||||
upgrade
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb}"
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb|upgrade}"
|
||||
exit 2
|
||||
esac
|
||||
|
||||
|
194
postgresql.spec
Executable file → Normal file
194
postgresql.spec
Executable file → Normal file
@ -34,6 +34,7 @@
|
||||
|
||||
%{!?tcldevel:%global tcldevel 1}
|
||||
%{!?test:%global test 1}
|
||||
%{!?upgrade:%global upgrade 1}
|
||||
%{!?plpython:%global plpython 1}
|
||||
%{!?pltcl:%global pltcl 1}
|
||||
%{!?plperl:%global plperl 1}
|
||||
@ -51,37 +52,43 @@
|
||||
|
||||
Summary: PostgreSQL client programs
|
||||
Name: postgresql
|
||||
%global majorversion 8.4
|
||||
Version: 8.4.6
|
||||
%global majorversion 9.0
|
||||
Version: 9.0.2
|
||||
Release: 1%{?dist}
|
||||
# The PostgreSQL license is very similar to other MIT licenses, but the OSI
|
||||
# recognizes it as an independent license, so we do as well.
|
||||
License: PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Url: http://www.postgresql.org/
|
||||
Url: http://www.postgresql.org/
|
||||
|
||||
# This SRPM includes a copy of the previous major release, which is needed for
|
||||
# in-place upgrade of an old database. In most cases it will not be critical
|
||||
# that this be kept up with the latest minor release of the previous series.
|
||||
%global prevversion 8.4.6
|
||||
%global prevmajorversion 8.4
|
||||
|
||||
Source0: ftp://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2
|
||||
# The PDF file is generated by generate-pdf.sh, which see for comments
|
||||
Source1: postgresql-%{version}-US.pdf
|
||||
# generate-pdf.sh is not used during RPM build, but include for documentation
|
||||
Source2: generate-pdf.sh
|
||||
Source3: postgresql.init
|
||||
Source4: Makefile.regress
|
||||
Source5: pg_config.h
|
||||
Source6: README.rpm-dist
|
||||
Source3: ftp://ftp.postgresql.org/pub/source/v%{prevversion}/postgresql-%{prevversion}.tar.bz2
|
||||
Source4: postgresql.init
|
||||
Source5: Makefile.regress
|
||||
Source6: pg_config.h
|
||||
Source7: ecpg_config.h
|
||||
Source8: README.rpm-dist
|
||||
Source14: postgresql.pam
|
||||
Source15: postgresql-bashprofile
|
||||
Source16: filter-requires-perl-Pg.sh
|
||||
|
||||
# Comments for these patches are in the patch files.
|
||||
Patch1: rpm-pgsql.patch
|
||||
Patch2: postgresql-ac-version.patch
|
||||
Patch3: postgresql-logging.patch
|
||||
Patch4: postgresql-oom-adj.patch
|
||||
Patch6: postgresql-perl-rpath.patch
|
||||
Patch2: postgresql-logging.patch
|
||||
Patch3: postgresql-perl-rpath.patch
|
||||
Patch4: postgresql-upgrade-fixes.patch
|
||||
|
||||
BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex autoconf gawk
|
||||
BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk
|
||||
BuildRequires: perl(ExtUtils::Embed), perl-devel
|
||||
# for /sbin/ldconfig
|
||||
Requires(post): glibc initscripts
|
||||
@ -134,14 +141,14 @@ BuildRequires: systemtap-sdt-devel
|
||||
%endif
|
||||
|
||||
# main package requires -libs subpackage
|
||||
Requires: postgresql-libs = %{version}-%{release}
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||
|
||||
%description
|
||||
PostgreSQL is an advanced Object-Relational database management system
|
||||
(DBMS) that supports almost all SQL constructs (including
|
||||
transactions, subselects and user-defined types and functions). The
|
||||
transactions, sub-selects and user-defined types and functions). The
|
||||
postgresql package includes the client programs and libraries that
|
||||
you'll need to access a PostgreSQL DBMS server. These PostgreSQL
|
||||
client programs are programs that directly manipulate the internal
|
||||
@ -171,6 +178,7 @@ PostgreSQL server.
|
||||
Summary: The programs needed to create and run a PostgreSQL server
|
||||
Group: Applications/Databases
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
Requires(pre): /usr/sbin/useradd
|
||||
Requires(post): chkconfig
|
||||
Requires(preun): chkconfig
|
||||
@ -183,7 +191,7 @@ The postgresql-server package includes the programs needed to create
|
||||
and run a PostgreSQL server, which will in turn allow you to create
|
||||
and maintain PostgreSQL databases. PostgreSQL is an advanced
|
||||
Object-Relational database management system (DBMS) that supports
|
||||
almost all SQL constructs (including transactions, subselects and
|
||||
almost all SQL constructs (including transactions, sub-selects and
|
||||
user-defined types and functions). You should install
|
||||
postgresql-server if you want to create and maintain your own
|
||||
PostgreSQL databases and/or your own PostgreSQL server. You also need
|
||||
@ -193,7 +201,7 @@ to install the postgresql package.
|
||||
%package docs
|
||||
Summary: Extra documentation for PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Requires: postgresql = %{version}-%{release}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description docs
|
||||
The postgresql-docs package includes some additional documentation for
|
||||
@ -204,7 +212,8 @@ and source files for the PostgreSQL tutorial.
|
||||
%package contrib
|
||||
Summary: Contributed modules distributed with PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Requires: postgresql = %{version}-%{release}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
|
||||
%description contrib
|
||||
The postgresql-contrib package contains contributed packages that are
|
||||
@ -214,7 +223,8 @@ included in the PostgreSQL distribution.
|
||||
%package devel
|
||||
Summary: PostgreSQL development header files and libraries
|
||||
Group: Development/Libraries
|
||||
Requires: postgresql = %{version}-%{release}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The postgresql-devel package contains the header files and libraries
|
||||
@ -223,11 +233,27 @@ with a PostgreSQL database management server and the ecpg Embedded C
|
||||
Postgres preprocessor. You need to install this package if you want to
|
||||
develop applications which will interact with a PostgreSQL server.
|
||||
|
||||
|
||||
%if %upgrade
|
||||
%package upgrade
|
||||
Summary: Support for upgrading from the previous major release of PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Requires: %{name}-server = %{version}-%{release}
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
|
||||
%description upgrade
|
||||
PostgreSQL is an advanced Object-Relational database management
|
||||
system. The postgresql-upgrade package includes the pg_upgrade utility
|
||||
and supporting files needed for upgrading a database from the previous
|
||||
major version of PostgreSQL.
|
||||
%endif
|
||||
|
||||
|
||||
%if %plperl
|
||||
%package plperl
|
||||
Summary: The Perl procedural language for PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Requires: postgresql-server = %{version}-%{release}
|
||||
Requires: %{name}-server = %{version}-%{release}
|
||||
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
|
||||
|
||||
%description plperl
|
||||
@ -240,7 +266,7 @@ procedural language for the backend.
|
||||
%package plpython
|
||||
Summary: The Python procedural language for PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Requires: postgresql-server = %{version}-%{release}
|
||||
Requires: %{name}-server = %{version}-%{release}
|
||||
|
||||
%description plpython
|
||||
PostgreSQL is an advanced Object-Relational database management
|
||||
@ -252,7 +278,7 @@ procedural language for the backend.
|
||||
%package pltcl
|
||||
Summary: The Tcl procedural language for PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Requires: postgresql-server = %{version}-%{release}
|
||||
Requires: %{name}-server = %{version}-%{release}
|
||||
|
||||
%description pltcl
|
||||
PostgreSQL is an advanced Object-Relational database management
|
||||
@ -264,7 +290,7 @@ procedural language for the backend.
|
||||
%package test
|
||||
Summary: The test suite distributed with PostgreSQL
|
||||
Group: Applications/Databases
|
||||
Requires: postgresql-server = %{version}-%{release}
|
||||
Requires: %{name}-server = %{version}-%{release}
|
||||
|
||||
%description test
|
||||
PostgreSQL is an advanced Object-Relational database management
|
||||
@ -281,12 +307,16 @@ system, including regression tests and benchmarks.
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch6 -p1
|
||||
|
||||
autoconf
|
||||
# We used to run autoconf here, but there's no longer any real need to,
|
||||
# since Postgres ships with a reasonably modern configure script.
|
||||
|
||||
cp -p %{SOURCE1} .
|
||||
|
||||
%if %upgrade
|
||||
tar xfj %{SOURCE3}
|
||||
%endif
|
||||
|
||||
# remove .gitignore files to ensure none get into the RPMs (bug #642210)
|
||||
find . -type f -name .gitignore | xargs rm
|
||||
|
||||
@ -310,9 +340,9 @@ CFLAGS=`echo $CFLAGS|xargs -n 1|grep -v ffast-math|xargs -n 100`
|
||||
CFLAGS="$CFLAGS -DLINUX_OOM_ADJ=0"
|
||||
# let's try removing this kluge, it may just be a workaround for bz#520916
|
||||
# # use -O1 on sparc64 and alpha
|
||||
# %ifarch sparc64 alpha
|
||||
# %%ifarch sparc64 alpha
|
||||
# CFLAGS=`echo $CFLAGS| sed -e "s|-O2|-O1|g" `
|
||||
# %endif
|
||||
# %%endif
|
||||
|
||||
%configure --disable-rpath \
|
||||
%if %beta
|
||||
@ -362,8 +392,7 @@ CFLAGS="$CFLAGS -DLINUX_OOM_ADJ=0"
|
||||
--sysconfdir=/etc/sysconfig/pgsql \
|
||||
--datadir=/usr/share/pgsql
|
||||
|
||||
make %{?_smp_mflags} all
|
||||
make %{?_smp_mflags} -C contrib all
|
||||
make %{?_smp_mflags} world
|
||||
|
||||
# Have to hack makefile to put correct path into tutorial scripts
|
||||
sed "s|C=\`pwd\`;|C=%{_libdir}/pgsql/tutorial;|" < src/tutorial/Makefile > src/tutorial/GNUmakefile
|
||||
@ -384,20 +413,36 @@ rm -f src/tutorial/GNUmakefile
|
||||
popd
|
||||
%endif
|
||||
|
||||
%if %upgrade
|
||||
pushd postgresql-%{prevversion}
|
||||
|
||||
# The upgrade build can be pretty stripped-down, but make sure that
|
||||
# any options that affect on-disk file layout match the previous
|
||||
# major release! Also, note we intentionally do not use %%configure
|
||||
# here, because we *don't* want its ideas about installation paths.
|
||||
./configure --build=%{_build} --host=%{_host} \
|
||||
--prefix=%{_libdir}/pgsql/postgresql-%{prevmajorversion} \
|
||||
--disable-rpath \
|
||||
--with-system-tzdata=/usr/share/zoneinfo
|
||||
|
||||
make %{?_smp_mflags} all
|
||||
|
||||
popd
|
||||
%endif
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
make -C contrib DESTDIR=$RPM_BUILD_ROOT install
|
||||
make DESTDIR=$RPM_BUILD_ROOT install-world
|
||||
|
||||
# multilib header hack; note pg_config.h is installed in two places!
|
||||
# we only apply this to known Red Hat multilib arches, per bug #177564
|
||||
case `uname -i` in
|
||||
i386 | x86_64 | ppc | ppc64 | s390 | s390x | sparc | sparc64 )
|
||||
mv $RPM_BUILD_ROOT/usr/include/pg_config.h $RPM_BUILD_ROOT/usr/include/pg_config_`uname -i`.h
|
||||
install -m 644 %{SOURCE5} $RPM_BUILD_ROOT/usr/include/
|
||||
install -m 644 %{SOURCE6} $RPM_BUILD_ROOT/usr/include/
|
||||
mv $RPM_BUILD_ROOT/usr/include/pgsql/server/pg_config.h $RPM_BUILD_ROOT/usr/include/pgsql/server/pg_config_`uname -i`.h
|
||||
install -m 644 %{SOURCE5} $RPM_BUILD_ROOT/usr/include/pgsql/server/
|
||||
install -m 644 %{SOURCE6} $RPM_BUILD_ROOT/usr/include/pgsql/server/
|
||||
mv $RPM_BUILD_ROOT/usr/include/ecpg_config.h $RPM_BUILD_ROOT/usr/include/ecpg_config_`uname -i`.h
|
||||
install -m 644 %{SOURCE7} $RPM_BUILD_ROOT/usr/include/
|
||||
;;
|
||||
@ -408,8 +453,13 @@ esac
|
||||
install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
|
||||
cp src/tutorial/* $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
|
||||
|
||||
# prep the initscript, including insertion of some values it needs
|
||||
install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
|
||||
sed 's/^PGVERSION=.*$/PGVERSION=%{version}/' <%{SOURCE3} >postgresql.init
|
||||
sed -e 's|^PGVERSION=.*$|PGVERSION=%{version}|' \
|
||||
-e 's|^PREVMAJORVERSION=.*$|PREVMAJORVERSION=%{prevmajorversion}|' \
|
||||
-e 's|^PREVPGENGINE=.*$|PREVPGENGINE=%{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin|' \
|
||||
-e 's|^PGDOCDIR=.*$|PGDOCDIR=%{_docdir}/%{name}-%{version}|' \
|
||||
<%{SOURCE4} >postgresql.init
|
||||
install -m 755 postgresql.init $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql
|
||||
|
||||
%if %pam
|
||||
@ -430,6 +480,49 @@ install -m 644 %{SOURCE15} $RPM_BUILD_ROOT/var/lib/pgsql/.bash_profile
|
||||
install -d -m 700 $RPM_BUILD_ROOT/etc/sysconfig/pgsql
|
||||
|
||||
|
||||
%if %upgrade
|
||||
pushd postgresql-%{prevversion}
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
popd
|
||||
|
||||
# remove stuff we don't actually need for upgrade purposes
|
||||
pushd $RPM_BUILD_ROOT%{_libdir}/pgsql/postgresql-%{prevmajorversion}
|
||||
rm bin/clusterdb
|
||||
rm bin/createdb
|
||||
rm bin/createlang
|
||||
rm bin/createuser
|
||||
rm bin/dropdb
|
||||
rm bin/droplang
|
||||
rm bin/dropuser
|
||||
rm bin/ecpg
|
||||
rm bin/initdb
|
||||
rm bin/pg_config
|
||||
rm bin/pg_controldata
|
||||
rm bin/pg_dump
|
||||
rm bin/pg_dumpall
|
||||
rm bin/pg_restore
|
||||
rm bin/psql
|
||||
rm bin/reindexdb
|
||||
rm bin/vacuumdb
|
||||
rm -rf include
|
||||
rm lib/dict_snowball.so
|
||||
rm lib/libecpg*
|
||||
rm lib/libpg*
|
||||
rm lib/libpq*
|
||||
rm -rf lib/pgxs
|
||||
rm lib/plpgsql.so
|
||||
rm -rf share/doc
|
||||
rm -rf share/man
|
||||
rm -rf share/tsearch_data
|
||||
rm share/*.bki
|
||||
rm share/*description
|
||||
rm share/*.sample
|
||||
rm share/*.sql
|
||||
rm share/*.txt
|
||||
popd
|
||||
%endif
|
||||
|
||||
|
||||
%if %test
|
||||
# tests. There are many files included here that are unnecessary,
|
||||
# but include them anyway for completeness. We replace the original
|
||||
@ -440,13 +533,13 @@ install -d -m 700 $RPM_BUILD_ROOT/etc/sysconfig/pgsql
|
||||
strip *.so
|
||||
rm -f GNUmakefile Makefile *.o
|
||||
popd
|
||||
cp %{SOURCE4} $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/Makefile
|
||||
cp %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/Makefile
|
||||
chmod 0644 $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/Makefile
|
||||
%endif
|
||||
|
||||
# Fix some more documentation
|
||||
# gzip doc/internals.ps
|
||||
cp %{SOURCE6} README.rpm-dist
|
||||
cp %{SOURCE8} README.rpm-dist
|
||||
mv $RPM_BUILD_ROOT%{_docdir}/pgsql/html doc
|
||||
rm -rf $RPM_BUILD_ROOT%{_docdir}/pgsql
|
||||
|
||||
@ -461,14 +554,14 @@ cat ecpglib6-%{majorversion}.lang >libs.lst
|
||||
cat initdb-%{majorversion}.lang >server.lst
|
||||
%find_lang libpq5-%{majorversion}
|
||||
cat libpq5-%{majorversion}.lang >>libs.lst
|
||||
%find_lang pg_config-%{majorversion}
|
||||
cat pg_config-%{majorversion}.lang >>devel.lst
|
||||
%find_lang pg_controldata-%{majorversion}
|
||||
cat pg_controldata-%{majorversion}.lang >>server.lst
|
||||
%find_lang pg_ctl-%{majorversion}
|
||||
cat pg_ctl-%{majorversion}.lang >>server.lst
|
||||
%find_lang pg_config-%{majorversion}
|
||||
cat pg_config-%{majorversion}.lang >main.lst
|
||||
%find_lang pg_dump-%{majorversion}
|
||||
cat pg_dump-%{majorversion}.lang >main.lst
|
||||
cat pg_dump-%{majorversion}.lang >>main.lst
|
||||
%find_lang pg_resetxlog-%{majorversion}
|
||||
cat pg_resetxlog-%{majorversion}.lang >>server.lst
|
||||
%find_lang pgscripts-%{majorversion}
|
||||
@ -549,6 +642,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_bindir}/dropdb
|
||||
%{_bindir}/droplang
|
||||
%{_bindir}/dropuser
|
||||
%{_bindir}/pg_config
|
||||
%{_bindir}/pg_dump
|
||||
%{_bindir}/pg_dumpall
|
||||
%{_bindir}/pg_restore
|
||||
@ -562,6 +656,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_mandir}/man1/dropdb.*
|
||||
%{_mandir}/man1/droplang.*
|
||||
%{_mandir}/man1/dropuser.*
|
||||
%{_mandir}/man1/pg_config.*
|
||||
%{_mandir}/man1/pg_dump.*
|
||||
%{_mandir}/man1/pg_dumpall.*
|
||||
%{_mandir}/man1/pg_restore.*
|
||||
@ -599,6 +694,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_libdir}/pgsql/ltree.so
|
||||
%{_libdir}/pgsql/moddatetime.so
|
||||
%{_libdir}/pgsql/pageinspect.so
|
||||
%{_libdir}/pgsql/passwordcheck.so
|
||||
%{_libdir}/pgsql/pg_buffercache.so
|
||||
%{_libdir}/pgsql/pg_freespacemap.so
|
||||
%{_libdir}/pgsql/pg_trgm.so
|
||||
@ -613,6 +709,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_libdir}/pgsql/test_parser.so
|
||||
%{_libdir}/pgsql/timetravel.so
|
||||
%{_libdir}/pgsql/tsearch2.so
|
||||
%{_libdir}/pgsql/unaccent.so
|
||||
%if %uuid
|
||||
%{_libdir}/pgsql/uuid-ossp.so
|
||||
%endif
|
||||
@ -621,9 +718,11 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
%{_datadir}/pgsql/contrib/
|
||||
%{_bindir}/oid2name
|
||||
%{_bindir}/pg_archivecleanup
|
||||
%{_bindir}/pg_standby
|
||||
%{_bindir}/pgbench
|
||||
%{_bindir}/vacuumlo
|
||||
%{_mandir}/man3/dblink*
|
||||
%doc contrib/spi/*.example
|
||||
|
||||
%files libs -f libs.lst
|
||||
@ -667,7 +766,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%attr(700,postgres,postgres) %dir /var/lib/pgsql/data
|
||||
%attr(700,postgres,postgres) %dir /var/lib/pgsql/backups
|
||||
%attr(644,postgres,postgres) %config(noreplace) /var/lib/pgsql/.bash_profile
|
||||
%{_libdir}/pgsql/libpqwalreceiver.so
|
||||
%{_libdir}/pgsql/*_and_*.so
|
||||
%{_libdir}/pgsql/euc2004_sjis2004.so
|
||||
%{_datadir}/pgsql/conversion_create.sql
|
||||
%{_datadir}/pgsql/information_schema.sql
|
||||
%{_datadir}/pgsql/snowball_create.sql
|
||||
@ -677,14 +778,21 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%defattr(-,root,root)
|
||||
/usr/include/*
|
||||
%{_bindir}/ecpg
|
||||
%{_bindir}/pg_config
|
||||
%{_libdir}/libpq.so
|
||||
%{_libdir}/libecpg.so
|
||||
%{_libdir}/libecpg_compat.so
|
||||
%{_libdir}/libpgtypes.so
|
||||
%{_libdir}/pgsql/pgxs/
|
||||
%{_mandir}/man1/ecpg.*
|
||||
%{_mandir}/man1/pg_config.*
|
||||
%{_mandir}/man3/SPI_*
|
||||
|
||||
%if %upgrade
|
||||
%files upgrade
|
||||
%defattr(-,root,root)
|
||||
%{_bindir}/pg_upgrade
|
||||
%{_libdir}/pgsql/pg_upgrade_support.so
|
||||
%{_libdir}/pgsql/postgresql-%{prevmajorversion}
|
||||
%endif
|
||||
|
||||
%if %plperl
|
||||
%files plperl -f plperl.lst
|
||||
@ -706,6 +814,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%files plpython -f plpython.lst
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/pgsql/plpython.so
|
||||
%{_libdir}/pgsql/plpython2.so
|
||||
%endif
|
||||
|
||||
%if %test
|
||||
@ -716,6 +825,11 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Dec 28 2010 Tom Lane <tgl@redhat.com> 9.0.2-1
|
||||
- Update to PostgreSQL 9.0.2 (major version bump)
|
||||
- Create infrastructure for in-place database upgrade using pg_upgrade
|
||||
Resolves: #398221
|
||||
|
||||
* Thu Dec 16 2010 Tom Lane <tgl@redhat.com> 8.4.6-1
|
||||
- Update to PostgreSQL 8.4.6, for various fixes described at
|
||||
http://www.postgresql.org/docs/8.4/static/release-8-4-6.html
|
||||
|
@ -8,10 +8,10 @@ However, datadir and sysconfdir are already set up in the specfile's
|
||||
configure call, so we do not have to append anything to them.
|
||||
|
||||
|
||||
diff -Naur postgresql-8.4.3.orig/src/Makefile.global.in postgresql-8.4.3/src/Makefile.global.in
|
||||
--- postgresql-8.4.3.orig/src/Makefile.global.in 2009-06-22 23:46:00.000000000 -0400
|
||||
+++ postgresql-8.4.3/src/Makefile.global.in 2010-03-13 22:18:12.000000000 -0500
|
||||
@@ -54,8 +54,7 @@
|
||||
diff -Naur postgresql-9.0.1.orig/src/Makefile.global.in postgresql-9.0.1/src/Makefile.global.in
|
||||
--- postgresql-9.0.1.orig/src/Makefile.global.in 2010-10-01 10:25:44.000000000 -0400
|
||||
+++ postgresql-9.0.1/src/Makefile.global.in 2010-10-11 11:52:05.224975308 -0400
|
||||
@@ -55,8 +55,7 @@
|
||||
# Installation directories
|
||||
#
|
||||
# These are set by the equivalent --xxxdir configure options. We
|
||||
@ -21,7 +21,7 @@ diff -Naur postgresql-8.4.3.orig/src/Makefile.global.in postgresql-8.4.3/src/Mak
|
||||
#
|
||||
# In a PGXS build, we cannot use the values inserted into Makefile.global
|
||||
# by configure, since the installation tree may have been relocated.
|
||||
@@ -73,45 +72,23 @@
|
||||
@@ -74,45 +73,23 @@
|
||||
bindir := @bindir@
|
||||
|
||||
datadir := @datadir@
|
||||
|
Loading…
Reference in New Issue
Block a user