Sets the access permissions of the Unix-domain socket. Unix-domain
++> Sets the access permissions of the Unix-domain socket(s). Unix-domain
+ sockets use the usual Unix file system permission set.
+ The parameter value is expected to be a numeric mode
+ specified in the format accepted by the
+diff -Naur -r postgresql-9.2.5.orig/doc/src/sgml/html/runtime-config-short.html postgresql-9.2.5/doc/src/sgml/html/runtime-config-short.html
+--- postgresql-9.2.5.orig/doc/src/sgml/html/runtime-config-short.html 2013-10-08 05:47:21.000000000 +0200
++++ postgresql-9.2.5/doc/src/sgml/html/runtime-config-short.html 2013-10-21 17:51:03.063675969 +0200
+@@ -330,7 +330,7 @@
+ >
unix_socket_directory = unix_socket_directories = x
+ Specifies the directory of the Unix-domain socket on which
+ postgres is to listen for
+- connections from client applications. The default is normally
+- /tmp, but can be changed at build time.
++ connections from client applications. The value can also be a
++ comma-separated list of directories. An empty value
++ specifies not listening on any Unix-domain sockets, in which case
++ only TCP/IP sockets can be used to connect to the server.
++ The default value is normally
++ /tmp, but that can be changed at build time.
++ Specifying this option is equivalent to setting the configuration parameter.
+
+
+
+diff -Naur -r postgresql-9.2.5.orig/doc/src/sgml/runtime.sgml postgresql-9.2.5/doc/src/sgml/runtime.sgml
+--- postgresql-9.2.5.orig/doc/src/sgml/runtime.sgml 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/doc/src/sgml/runtime.sgml 2013-10-21 17:51:03.064675976 +0200
+@@ -1798,7 +1798,7 @@
+
+ The simplest way to prevent spoofing for local>
+ connections is to use a Unix domain socket directory () that has write permission only
++ linkend="guc-unix-socket-directories">) that has write permission only
+ for a trusted local user. This prevents a malicious user from creating
+ their own socket file in that directory. If you are concerned that
+ some applications might still reference /tmp> for the
+diff -Naur -r postgresql-9.2.5.orig/src/backend/libpq/pqcomm.c postgresql-9.2.5/src/backend/libpq/pqcomm.c
+--- postgresql-9.2.5.orig/src/backend/libpq/pqcomm.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/backend/libpq/pqcomm.c 2013-10-21 17:51:03.065675983 +0200
+@@ -42,7 +42,7 @@
+ * StreamServerPort - Open postmaster's server port
+ * StreamConnection - Create new connection with client
+ * StreamClose - Close a client/backend connection
+- * TouchSocketFile - Protect socket file against /tmp cleaners
++ * TouchSocketFiles - Protect socket files against /tmp cleaners
+ * pq_init - initialize libpq at backend startup
+ * pq_comm_reset - reset libpq during error recovery
+ * pq_close - shutdown libpq at backend exit
+@@ -103,8 +103,8 @@
+ char *Unix_socket_group;
+
+
+-/* Where the Unix socket file is */
+-static char sock_path[MAXPGPATH];
++/* Where the Unix socket files are (list of palloc'd strings) */
++static List *sock_paths = NIL;
+
+
+ /*
+@@ -140,8 +140,8 @@
+ static void pq_set_nonblocking(bool nonblocking);
+
+ #ifdef HAVE_UNIX_SOCKETS
+-static int Lock_AF_UNIX(unsigned short portNumber, char *unixSocketName);
+-static int Setup_AF_UNIX(void);
++static int Lock_AF_UNIX(char *unixSocketDir, char *unixSocketPath);
++static int Setup_AF_UNIX(char *sock_path);
+ #endif /* HAVE_UNIX_SOCKETS */
+
+
+@@ -234,29 +234,43 @@
+
+ /* StreamDoUnlink()
+ * Shutdown routine for backend connection
+- * If a Unix socket is used for communication, explicitly close it.
++ * If any Unix sockets are used for communication, explicitly close them.
+ */
+ #ifdef HAVE_UNIX_SOCKETS
+ static void
+ StreamDoUnlink(int code, Datum arg)
+ {
+- Assert(sock_path[0]);
+- unlink(sock_path);
++ ListCell *l;
++
++ /* Loop through all created sockets... */
++ foreach(l, sock_paths)
++ {
++ char *sock_path = (char *) lfirst(l);
++
++ unlink(sock_path);
++ }
++ /* Since we're about to exit, no need to reclaim storage */
++ sock_paths = NIL;
+ }
+ #endif /* HAVE_UNIX_SOCKETS */
+
+ /*
+ * StreamServerPort -- open a "listening" port to accept connections.
+ *
+- * Successfully opened sockets are added to the ListenSocket[] array,
+- * at the first position that isn't PGINVALID_SOCKET.
++ * family should be AF_UNIX or AF_UNSPEC; portNumber is the port number.
++ * For AF_UNIX ports, hostName should be NULL and unixSocketDir must be
++ * specified. For TCP ports, hostName is either NULL for all interfaces or
++ * the interface to listen on, and unixSocketDir is ignored (can be NULL).
++ *
++ * Successfully opened sockets are added to the ListenSocket[] array (of
++ * length MaxListen), at the first position that isn't PGINVALID_SOCKET.
+ *
+ * RETURNS: STATUS_OK or STATUS_ERROR
+ */
+
+ int
+ StreamServerPort(int family, char *hostName, unsigned short portNumber,
+- char *unixSocketName,
++ char *unixSocketDir,
+ pgsocket ListenSocket[], int MaxListen)
+ {
+ pgsocket fd;
+@@ -273,6 +287,9 @@
+ int listen_index = 0;
+ int added = 0;
+
++#ifdef HAVE_UNIX_SOCKETS
++ char unixSocketPath[MAXPGPATH];
++#endif
+ #if !defined(WIN32) || defined(IPV6_V6ONLY)
+ int one = 1;
+ #endif
+@@ -286,10 +303,22 @@
+ #ifdef HAVE_UNIX_SOCKETS
+ if (family == AF_UNIX)
+ {
+- /* Lock_AF_UNIX will also fill in sock_path. */
+- if (Lock_AF_UNIX(portNumber, unixSocketName) != STATUS_OK)
++ /*
++ * Create unixSocketPath from portNumber and unixSocketDir and lock
++ * that file path
++ */
++ UNIXSOCK_PATH(unixSocketPath, portNumber, unixSocketDir);
++ if (strlen(unixSocketPath) >= UNIXSOCK_PATH_BUFLEN)
++ {
++ ereport(LOG,
++ (errmsg("Unix-domain socket path \"%s\" is too long (maximum %d bytes)",
++ unixSocketPath,
++ (int) (UNIXSOCK_PATH_BUFLEN - 1))));
++ return STATUS_ERROR;
++ }
++ if (Lock_AF_UNIX(unixSocketDir, unixSocketPath) != STATUS_OK)
+ return STATUS_ERROR;
+- service = sock_path;
++ service = unixSocketPath;
+ }
+ else
+ #endif /* HAVE_UNIX_SOCKETS */
+@@ -432,7 +461,7 @@
+ (IS_AF_UNIX(addr->ai_family)) ?
+ errhint("Is another postmaster already running on port %d?"
+ " If not, remove socket file \"%s\" and retry.",
+- (int) portNumber, sock_path) :
++ (int) portNumber, service) :
+ errhint("Is another postmaster already running on port %d?"
+ " If not, wait a few seconds and retry.",
+ (int) portNumber)));
+@@ -443,7 +472,7 @@
+ #ifdef HAVE_UNIX_SOCKETS
+ if (addr->ai_family == AF_UNIX)
+ {
+- if (Setup_AF_UNIX() != STATUS_OK)
++ if (Setup_AF_UNIX(service) != STATUS_OK)
+ {
+ closesocket(fd);
+ break;
+@@ -490,18 +519,8 @@
+ * Lock_AF_UNIX -- configure unix socket file path
+ */
+ static int
+-Lock_AF_UNIX(unsigned short portNumber, char *unixSocketName)
++Lock_AF_UNIX(char *unixSocketDir, char *unixSocketPath)
+ {
+- UNIXSOCK_PATH(sock_path, portNumber, unixSocketName);
+- if (strlen(sock_path) >= UNIXSOCK_PATH_BUFLEN)
+- {
+- ereport(LOG,
+- (errmsg("Unix-domain socket path \"%s\" is too long (maximum %d bytes)",
+- sock_path,
+- (int) (UNIXSOCK_PATH_BUFLEN - 1))));
+- return STATUS_ERROR;
+- }
+-
+ /*
+ * Grab an interlock file associated with the socket file.
+ *
+@@ -510,13 +529,23 @@
+ * more portable, and second, it lets us remove any pre-existing socket
+ * file without race conditions.
+ */
+- CreateSocketLockFile(sock_path, true);
++ CreateSocketLockFile(unixSocketPath, true, unixSocketDir);
+
+ /*
+ * Once we have the interlock, we can safely delete any pre-existing
+ * socket file to avoid failure at bind() time.
+ */
+- unlink(sock_path);
++ unlink(unixSocketPath);
++
++ /*
++ * Arrange to unlink the socket file(s) at proc_exit. If this is the
++ * first one, set up the on_proc_exit function to do it; then add this
++ * socket file to the list of files to unlink.
++ */
++ if (sock_paths == NIL)
++ on_proc_exit(StreamDoUnlink, 0);
++
++ sock_paths = lappend(sock_paths, pstrdup(unixSocketPath));
+
+ return STATUS_OK;
+ }
+@@ -526,11 +555,8 @@
+ * Setup_AF_UNIX -- configure unix socket permissions
+ */
+ static int
+-Setup_AF_UNIX(void)
++Setup_AF_UNIX(char *sock_path)
+ {
+- /* Arrange to unlink the socket file at exit */
+- on_proc_exit(StreamDoUnlink, 0);
+-
+ /*
+ * Fix socket ownership/permission if requested. Note we must do this
+ * before we listen() to avoid a window where unwanted connections could
+@@ -712,20 +738,24 @@
+ }
+
+ /*
+- * TouchSocketFile -- mark socket file as recently accessed
++ * TouchSocketFiles -- mark socket files as recently accessed
+ *
+ * This routine should be called every so often to ensure that the socket
+- * file has a recent mod date (ordinary operations on sockets usually won't
+- * change the mod date). That saves it from being removed by
++ * files have a recent mod date (ordinary operations on sockets usually won't
++ * change the mod date). That saves them from being removed by
+ * overenthusiastic /tmp-directory-cleaner daemons. (Another reason we should
+ * never have put the socket file in /tmp...)
+ */
+ void
+-TouchSocketFile(void)
++TouchSocketFiles(void)
+ {
+- /* Do nothing if we did not create a socket... */
+- if (sock_path[0] != '\0')
++ ListCell *l;
++
++ /* Loop through all created sockets... */
++ foreach(l, sock_paths)
+ {
++ char *sock_path = (char *) lfirst(l);
++
+ /*
+ * utime() is POSIX standard, utimes() is a common alternative. If we
+ * have neither, there's no way to affect the mod or access time of
+diff -Naur -r postgresql-9.2.5.orig/src/backend/postmaster/postmaster.c postgresql-9.2.5/src/backend/postmaster/postmaster.c
+--- postgresql-9.2.5.orig/src/backend/postmaster/postmaster.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/backend/postmaster/postmaster.c 2013-10-21 17:51:03.066675990 +0200
+@@ -156,7 +156,9 @@
+
+ /* The socket number we are listening for connections on */
+ int PostPortNumber;
+-char *UnixSocketDir;
++/* The directory names for Unix socket(s) */
++char *Unix_socket_directories;
++/* The TCP listen address(es) */
+ char *ListenAddresses;
+
+ /*
+@@ -608,7 +610,7 @@
+ break;
+
+ case 'k':
+- SetConfigOption("unix_socket_directory", optarg, PGC_POSTMASTER, PGC_S_ARGV);
++ SetConfigOption("unix_socket_directories", optarg, PGC_POSTMASTER, PGC_S_ARGV);
+ break;
+
+ case 'l':
+@@ -852,7 +854,7 @@
+ /* Need a modifiable copy of ListenAddresses */
+ rawstring = pstrdup(ListenAddresses);
+
+- /* Parse string into list of identifiers */
++ /* Parse string into list of hostnames */
+ if (!SplitIdentifierString(rawstring, ',', &elemlist))
+ {
+ /* syntax error in list */
+@@ -868,12 +870,12 @@
+ if (strcmp(curhost, "*") == 0)
+ status = StreamServerPort(AF_UNSPEC, NULL,
+ (unsigned short) PostPortNumber,
+- UnixSocketDir,
++ NULL,
+ ListenSocket, MAXLISTEN);
+ else
+ status = StreamServerPort(AF_UNSPEC, curhost,
+ (unsigned short) PostPortNumber,
+- UnixSocketDir,
++ NULL,
+ ListenSocket, MAXLISTEN);
+
+ if (status == STATUS_OK)
+@@ -892,7 +894,7 @@
+ curhost)));
+ }
+
+- if (!success && list_length(elemlist))
++ if (!success && elemlist != NIL)
+ ereport(FATAL,
+ (errmsg("could not create any TCP/IP sockets")));
+
+@@ -939,13 +941,54 @@
+ #endif
+
+ #ifdef HAVE_UNIX_SOCKETS
+- status = StreamServerPort(AF_UNIX, NULL,
+- (unsigned short) PostPortNumber,
+- UnixSocketDir,
+- ListenSocket, MAXLISTEN);
+- if (status != STATUS_OK)
+- ereport(WARNING,
+- (errmsg("could not create Unix-domain socket")));
++ if (Unix_socket_directories)
++ {
++ char *rawstring;
++ List *elemlist;
++ ListCell *l;
++ int success = 0;
++
++ /* Need a modifiable copy of Unix_socket_directories */
++ rawstring = pstrdup(Unix_socket_directories);
++
++ /* Parse string into list of directories */
++ if (!SplitDirectoriesString(rawstring, ',', &elemlist))
++ {
++ /* syntax error in list */
++ ereport(FATAL,
++ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
++ errmsg("invalid list syntax for \"unix_socket_directories\"")));
++ }
++
++ foreach(l, elemlist)
++ {
++ char *socketdir = (char *) lfirst(l);
++
++ status = StreamServerPort(AF_UNIX, NULL,
++ (unsigned short) PostPortNumber,
++ socketdir,
++ ListenSocket, MAXLISTEN);
++
++ if (status == STATUS_OK)
++ {
++ success++;
++ /* record the first successful Unix socket in lockfile */
++ if (success == 1)
++ AddToDataDirLockFile(LOCK_FILE_LINE_SOCKET_DIR, socketdir);
++ }
++ else
++ ereport(WARNING,
++ (errmsg("could not create Unix-domain socket in directory \"%s\"",
++ socketdir)));
++ }
++
++ if (!success && elemlist != NIL)
++ ereport(FATAL,
++ (errmsg("could not create any Unix-domain sockets")));
++
++ list_free_deep(elemlist);
++ pfree(rawstring);
++ }
+ #endif
+
+ /*
+@@ -1435,15 +1478,15 @@
+ }
+
+ /*
+- * Touch the socket and lock file every 58 minutes, to ensure that
++ * Touch Unix socket and lock files every 58 minutes, to ensure that
+ * they are not removed by overzealous /tmp-cleaning tasks. We assume
+ * no one runs cleaners with cutoff times of less than an hour ...
+ */
+ now = time(NULL);
+ if (now - last_touch_time >= 58 * SECS_PER_MINUTE)
+ {
+- TouchSocketFile();
+- TouchSocketLockFile();
++ TouchSocketFiles();
++ TouchSocketLockFiles();
+ last_touch_time = now;
+ }
+ }
+diff -Naur -r postgresql-9.2.5.orig/src/backend/tcop/postgres.c postgresql-9.2.5/src/backend/tcop/postgres.c
+--- postgresql-9.2.5.orig/src/backend/tcop/postgres.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/backend/tcop/postgres.c 2013-10-21 17:51:03.066675990 +0200
+@@ -3344,7 +3344,7 @@
+ break;
+
+ case 'k':
+- SetConfigOption("unix_socket_directory", optarg, ctx, gucsource);
++ SetConfigOption("unix_socket_directories", optarg, ctx, gucsource);
+ break;
+
+ case 'l':
+diff -Naur -r postgresql-9.2.5.orig/src/backend/utils/adt/varlena.c postgresql-9.2.5/src/backend/utils/adt/varlena.c
+--- postgresql-9.2.5.orig/src/backend/utils/adt/varlena.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/backend/utils/adt/varlena.c 2013-10-21 17:51:03.067675996 +0200
+@@ -2446,6 +2446,119 @@
+ }
+
+
++/*
++ * SplitDirectoriesString --- parse a string containing directory names
++ *
++ * This is similar to SplitIdentifierString, except that the parsing
++ * rules are meant to handle pathnames instead of identifiers: there is
++ * no downcasing, embedded spaces are allowed, the max length is MAXPGPATH-1,
++ * and we apply canonicalize_path() to each extracted string. Because of the
++ * last, the returned strings are separately palloc'd rather than being
++ * pointers into rawstring --- but we still scribble on rawstring.
++ *
++ * Inputs:
++ * rawstring: the input string; must be modifiable!
++ * separator: the separator punctuation expected between directories
++ * (typically ',' or ';'). Whitespace may also appear around
++ * directories.
++ * Outputs:
++ * namelist: filled with a palloc'd list of directory names.
++ * Caller should list_free_deep() this even on error return.
++ *
++ * Returns TRUE if okay, FALSE if there is a syntax error in the string.
++ *
++ * Note that an empty string is considered okay here.
++ */
++bool
++SplitDirectoriesString(char *rawstring, char separator,
++ List **namelist)
++{
++ char *nextp = rawstring;
++ bool done = false;
++
++ *namelist = NIL;
++
++ while (isspace((unsigned char) *nextp))
++ nextp++; /* skip leading whitespace */
++
++ if (*nextp == '\0')
++ return true; /* allow empty string */
++
++ /* At the top of the loop, we are at start of a new directory. */
++ do
++ {
++ char *curname;
++ char *endp;
++
++ if (*nextp == '\"')
++ {
++ /* Quoted name --- collapse quote-quote pairs */
++ curname = nextp + 1;
++ for (;;)
++ {
++ endp = strchr(nextp + 1, '\"');
++ if (endp == NULL)
++ return false; /* mismatched quotes */
++ if (endp[1] != '\"')
++ break; /* found end of quoted name */
++ /* Collapse adjacent quotes into one quote, and look again */
++ memmove(endp, endp + 1, strlen(endp));
++ nextp = endp;
++ }
++ /* endp now points at the terminating quote */
++ nextp = endp + 1;
++ }
++ else
++ {
++ /* Unquoted name --- extends to separator or end of string */
++ curname = endp = nextp;
++ while (*nextp && *nextp != separator)
++ {
++ /* trailing whitespace should not be included in name */
++ if (!isspace((unsigned char) *nextp))
++ endp = nextp + 1;
++ nextp++;
++ }
++ if (curname == endp)
++ return false; /* empty unquoted name not allowed */
++ }
++
++ while (isspace((unsigned char) *nextp))
++ nextp++; /* skip trailing whitespace */
++
++ if (*nextp == separator)
++ {
++ nextp++;
++ while (isspace((unsigned char) *nextp))
++ nextp++; /* skip leading whitespace for next */
++ /* we expect another name, so done remains false */
++ }
++ else if (*nextp == '\0')
++ done = true;
++ else
++ return false; /* invalid syntax */
++
++ /* Now safe to overwrite separator with a null */
++ *endp = '\0';
++
++ /* Truncate path if it's overlength */
++ if (strlen(curname) >= MAXPGPATH)
++ curname[MAXPGPATH - 1] = '\0';
++
++ /*
++ * Finished isolating current name --- add it to list
++ */
++ curname = pstrdup(curname);
++ canonicalize_path(curname);
++ *namelist = lappend(*namelist, curname);
++
++ /* Loop back if we didn't reach end of string */
++ } while (!done);
++
++ return true;
++}
++
++
+ /*****************************************************************************
+ * Comparison Functions used for bytea
+ *
+diff -Naur -r postgresql-9.2.5.orig/src/backend/utils/init/miscinit.c postgresql-9.2.5/src/backend/utils/init/miscinit.c
+--- postgresql-9.2.5.orig/src/backend/utils/init/miscinit.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/backend/utils/init/miscinit.c 2013-10-21 17:51:03.067675996 +0200
+@@ -49,8 +49,8 @@
+
+ ProcessingMode Mode = InitProcessing;
+
+-/* Note: we rely on this to initialize as zeroes */
+-static char socketLockFile[MAXPGPATH];
++/* List of lock files to be removed at proc exit */
++static List *lock_files = NIL;
+
+
+ /* ----------------------------------------------------------------
+@@ -640,32 +640,35 @@
+ */
+
+ /*
+- * proc_exit callback to remove a lockfile.
++ * proc_exit callback to remove lockfiles.
+ */
+ static void
+-UnlinkLockFile(int status, Datum filename)
++UnlinkLockFiles(int status, Datum arg)
+ {
+- char *fname = (char *) DatumGetPointer(filename);
++ ListCell *l;
+
+- if (fname != NULL)
++ foreach(l, lock_files)
+ {
+- if (unlink(fname) != 0)
+- {
+- /* Should we complain if the unlink fails? */
+- }
+- free(fname);
++ char *curfile = (char *) lfirst(l);
++
++ unlink(curfile);
++ /* Should we complain if the unlink fails? */
+ }
++ /* Since we're about to exit, no need to reclaim storage */
++ lock_files = NIL;
+ }
+
+ /*
+ * Create a lockfile.
+ *
+- * filename is the name of the lockfile to create.
++ * filename is the path name of the lockfile to create.
+ * amPostmaster is used to determine how to encode the output PID.
++ * socketDir is the Unix socket directory path to include (possibly empty).
+ * isDDLock and refName are used to determine what error message to produce.
+ */
+ static void
+ CreateLockFile(const char *filename, bool amPostmaster,
++ const char *socketDir,
+ bool isDDLock, const char *refName)
+ {
+ int fd;
+@@ -891,12 +894,7 @@
+ DataDir,
+ (long) MyStartTime,
+ PostPortNumber,
+-#ifdef HAVE_UNIX_SOCKETS
+- (*UnixSocketDir != '\0') ? UnixSocketDir : DEFAULT_PGSOCKET_DIR
+-#else
+- ""
+-#endif
+- );
++ socketDir);
+
+ /*
+ * In a standalone backend, the next line (LOCK_FILE_LINE_LISTEN_ADDR)
+@@ -941,9 +939,14 @@
+ }
+
+ /*
+- * Arrange for automatic removal of lockfile at proc_exit.
++ * Arrange to unlink the lock file(s) at proc_exit. If this is the
++ * first one, set up the on_proc_exit function to do it; then add this
++ * lock file to the list of files to unlink.
+ */
+- on_proc_exit(UnlinkLockFile, PointerGetDatum(strdup(filename)));
++ if (lock_files == NIL)
++ on_proc_exit(UnlinkLockFiles, 0);
++
++ lock_files = lappend(lock_files, pstrdup(filename));
+ }
+
+ /*
+@@ -952,41 +955,50 @@
+ * When this is called, we must have already switched the working
+ * directory to DataDir, so we can just use a relative path. This
+ * helps ensure that we are locking the directory we should be.
++ *
++ * Note that the socket directory path line is initially written as empty.
++ * postmaster.c will rewrite it upon creating the first Unix socket.
+ */
+ void
+ CreateDataDirLockFile(bool amPostmaster)
+ {
+- CreateLockFile(DIRECTORY_LOCK_FILE, amPostmaster, true, DataDir);
++ CreateLockFile(DIRECTORY_LOCK_FILE, amPostmaster, "", true, DataDir);
+ }
+
+ /*
+ * Create a lockfile for the specified Unix socket file.
+ */
+ void
+-CreateSocketLockFile(const char *socketfile, bool amPostmaster)
++CreateSocketLockFile(const char *socketfile, bool amPostmaster,
++ const char *socketDir)
+ {
+ char lockfile[MAXPGPATH];
+
+ snprintf(lockfile, sizeof(lockfile), "%s.lock", socketfile);
+- CreateLockFile(lockfile, amPostmaster, false, socketfile);
+- /* Save name of lockfile for TouchSocketLockFile */
+- strcpy(socketLockFile, lockfile);
++ CreateLockFile(lockfile, amPostmaster, socketDir, false, socketfile);
+ }
+
+ /*
+- * TouchSocketLockFile -- mark socket lock file as recently accessed
++ * TouchSocketLockFiles -- mark socket lock files as recently accessed
+ *
+- * This routine should be called every so often to ensure that the lock file
+- * has a recent mod or access date. That saves it
++ * This routine should be called every so often to ensure that the socket
++ * lock files have a recent mod or access date. That saves them
+ * from being removed by overenthusiastic /tmp-directory-cleaner daemons.
+ * (Another reason we should never have put the socket file in /tmp...)
+ */
+ void
+-TouchSocketLockFile(void)
++TouchSocketLockFiles(void)
+ {
+- /* Do nothing if we did not create a socket... */
+- if (socketLockFile[0] != '\0')
++ ListCell *l;
++
++ foreach(l, lock_files)
+ {
++ char *socketLockFile = (char *) lfirst(l);
++
++ /* No need to touch the data directory lock file, we trust */
++ if (strcmp(socketLockFile, DIRECTORY_LOCK_FILE) == 0)
++ continue;
++
+ /*
+ * utime() is POSIX standard, utimes() is a common alternative; if we
+ * have neither, fall back to actually reading the file (which only
+@@ -1018,8 +1030,10 @@
+ * Add (or replace) a line in the data directory lock file.
+ * The given string should not include a trailing newline.
+ *
+- * Caution: this erases all following lines. In current usage that is OK
+- * because lines are added in order. We could improve it if needed.
++ * Note: because we don't truncate the file, if we were to rewrite a line
++ * with less data than it had before, there would be garbage after the last
++ * line. We don't ever actually do that, so not worth adding another kernel
++ * call to cover the possibility.
+ */
+ void
+ AddToDataDirLockFile(int target_line, const char *str)
+@@ -1027,8 +1041,10 @@
+ int fd;
+ int len;
+ int lineno;
+- char *ptr;
+- char buffer[BLCKSZ];
++ char *srcptr;
++ char *destptr;
++ char srcbuffer[BLCKSZ];
++ char destbuffer[BLCKSZ];
+
+ fd = open(DIRECTORY_LOCK_FILE, O_RDWR | PG_BINARY, 0);
+ if (fd < 0)
+@@ -1039,7 +1055,7 @@
+ DIRECTORY_LOCK_FILE)));
+ return;
+ }
+- len = read(fd, buffer, sizeof(buffer) - 1);
++ len = read(fd, srcbuffer, sizeof(srcbuffer) - 1);
+ if (len < 0)
+ {
+ ereport(LOG,
+@@ -1049,37 +1065,51 @@
+ close(fd);
+ return;
+ }
+- buffer[len] = '\0';
++ srcbuffer[len] = '\0';
+
+ /*
+- * Skip over lines we are not supposed to rewrite.
++ * Advance over lines we are not supposed to rewrite, then copy them
++ * to destbuffer.
+ */
+- ptr = buffer;
++ srcptr = srcbuffer;
+ for (lineno = 1; lineno < target_line; lineno++)
+ {
+- if ((ptr = strchr(ptr, '\n')) == NULL)
++ if ((srcptr = strchr(srcptr, '\n')) == NULL)
+ {
+ elog(LOG, "incomplete data in \"%s\": found only %d newlines while trying to add line %d",
+ DIRECTORY_LOCK_FILE, lineno - 1, target_line);
+ close(fd);
+ return;
+ }
+- ptr++;
++ srcptr++;
+ }
++ memcpy(destbuffer, srcbuffer, srcptr - srcbuffer);
++ destptr = destbuffer + (srcptr - srcbuffer);
+
+ /*
+ * Write or rewrite the target line.
+ */
+- snprintf(ptr, buffer + sizeof(buffer) - ptr, "%s\n", str);
++ snprintf(destptr, destbuffer + sizeof(destbuffer) - destptr, "%s\n", str);
++ destptr += strlen(destptr);
++
++ /*
++ * If there are more lines in the old file, append them to destbuffer.
++ */
++ if ((srcptr = strchr(srcptr, '\n')) != NULL)
++ {
++ srcptr++;
++ snprintf(destptr, destbuffer + sizeof(destbuffer) - destptr, "%s",
++ srcptr);
++ }
+
+ /*
+ * And rewrite the data. Since we write in a single kernel call, this
+ * update should appear atomic to onlookers.
+ */
+- len = strlen(buffer);
++ len = strlen(destbuffer);
+ errno = 0;
+ if (lseek(fd, (off_t) 0, SEEK_SET) != 0 ||
+- (int) write(fd, buffer, len) != len)
++ (int) write(fd, destbuffer, len) != len)
+ {
+ /* if write didn't set errno, assume problem is no disk space */
+ if (errno == 0)
+diff -Naur -r postgresql-9.2.5.orig/src/backend/utils/misc/guc.c postgresql-9.2.5/src/backend/utils/misc/guc.c
+--- postgresql-9.2.5.orig/src/backend/utils/misc/guc.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/backend/utils/misc/guc.c 2013-10-21 17:51:03.069676008 +0200
+@@ -2894,14 +2894,18 @@
+ },
+
+ {
+- {"unix_socket_directory", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
+- gettext_noop("Sets the directory where the Unix-domain socket will be created."),
++ {"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
++ gettext_noop("Sets the directories where Unix-domain sockets will be created."),
+ NULL,
+ GUC_SUPERUSER_ONLY
+ },
+- &UnixSocketDir,
++ &Unix_socket_directories,
++#ifdef HAVE_UNIX_SOCKETS
++ DEFAULT_PGSOCKET_DIR,
++#else
+ "",
+- check_canonical_path, NULL, NULL
++#endif
++ NULL, NULL, NULL
+ },
+
+ {
+diff -Naur -r postgresql-9.2.5.orig/src/backend/utils/misc/postgresql.conf.sample postgresql-9.2.5/src/backend/utils/misc/postgresql.conf.sample
+--- postgresql-9.2.5.orig/src/backend/utils/misc/postgresql.conf.sample 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/backend/utils/misc/postgresql.conf.sample 2013-10-21 17:51:03.069676008 +0200
+@@ -65,7 +65,8 @@
+ # Note: Increasing max_connections costs ~400 bytes of shared memory per
+ # connection slot, plus lock space (see max_locks_per_transaction).
+ #superuser_reserved_connections = 3 # (change requires restart)
+-#unix_socket_directory = '' # (change requires restart)
++#unix_socket_directories = '/tmp' # comma-separated list of directories
++ # (change requires restart)
+ #unix_socket_group = '' # (change requires restart)
+ #unix_socket_permissions = 0777 # begin with 0 to use octal notation
+ # (change requires restart)
+diff -Naur -r postgresql-9.2.5.orig/src/bin/initdb/initdb.c postgresql-9.2.5/src/bin/initdb/initdb.c
+--- postgresql-9.2.5.orig/src/bin/initdb/initdb.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/bin/initdb/initdb.c 2013-10-21 17:51:03.070676015 +0200
+@@ -991,7 +991,7 @@
+ setup_config(void)
+ {
+ char **conflines;
+- char repltok[TZ_STRLEN_MAX + 100];
++ char repltok[MAXPGPATH];
+ char path[MAXPGPATH];
+ const char *default_timezone;
+
+@@ -1013,6 +1013,15 @@
+ n_buffers * (BLCKSZ / 1024));
+ conflines = replace_token(conflines, "#shared_buffers = 32MB", repltok);
+
++#ifdef HAVE_UNIX_SOCKETS
++ snprintf(repltok, sizeof(repltok), "#unix_socket_directories = '%s'",
++ DEFAULT_PGSOCKET_DIR);
++#else
++ snprintf(repltok, sizeof(repltok), "#unix_socket_directories = ''");
++#endif
++ conflines = replace_token(conflines, "#unix_socket_directories = '/tmp'",
++ repltok);
++
+ #if DEF_PGPORT != 5432
+ snprintf(repltok, sizeof(repltok), "#port = %d", DEF_PGPORT);
+ conflines = replace_token(conflines, "#port = 5432", repltok);
+diff -Naur -r postgresql-9.2.5.orig/src/bin/pg_ctl/pg_ctl.c postgresql-9.2.5/src/bin/pg_ctl/pg_ctl.c
+--- postgresql-9.2.5.orig/src/bin/pg_ctl/pg_ctl.c 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/bin/pg_ctl/pg_ctl.c 2013-10-21 17:51:03.070676015 +0200
+@@ -559,7 +559,7 @@
+ hostaddr = optlines[LOCK_FILE_LINE_LISTEN_ADDR - 1];
+
+ /*
+- * While unix_socket_directory can accept relative
++ * While unix_socket_directories can accept relative
+ * directories, libpq's host parameter must have a
+ * leading slash to indicate a socket directory. So,
+ * ignore sockdir if it's relative, and try to use TCP
+diff -Naur -r postgresql-9.2.5.orig/src/include/libpq/libpq.h postgresql-9.2.5/src/include/libpq/libpq.h
+--- postgresql-9.2.5.orig/src/include/libpq/libpq.h 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/include/libpq/libpq.h 2013-10-21 17:51:03.070676015 +0200
+@@ -44,12 +44,12 @@
+ /*
+ * prototypes for functions in pqcomm.c
+ */
+-extern int StreamServerPort(int family, char *hostName,
+- unsigned short portNumber, char *unixSocketName, pgsocket ListenSocket[],
+- int MaxListen);
++extern int StreamServerPort(int family, char *hostName,
++ unsigned short portNumber, char *unixSocketDir,
++ pgsocket ListenSocket[], int MaxListen);
+ extern int StreamConnection(pgsocket server_fd, Port *port);
+ extern void StreamClose(pgsocket sock);
+-extern void TouchSocketFile(void);
++extern void TouchSocketFiles(void);
+ extern void pq_init(void);
+ extern void pq_comm_reset(void);
+ extern int pq_getbytes(char *s, size_t len);
+diff -Naur -r postgresql-9.2.5.orig/src/include/miscadmin.h postgresql-9.2.5/src/include/miscadmin.h
+--- postgresql-9.2.5.orig/src/include/miscadmin.h 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/include/miscadmin.h 2013-10-21 17:51:03.070676015 +0200
+@@ -411,7 +411,7 @@
+ * 2 data directory path
+ * 3 postmaster start timestamp (time_t representation)
+ * 4 port number
+- * 5 socket directory path (empty on Windows)
++ * 5 first Unix socket directory path (empty if none)
+ * 6 first listen_address (IP address or "*"; empty if no TCP port)
+ * 7 shared memory key (not present on Windows)
+ *
+@@ -429,8 +429,9 @@
+ #define LOCK_FILE_LINE_SHMEM_KEY 7
+
+ extern void CreateDataDirLockFile(bool amPostmaster);
+-extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster);
+-extern void TouchSocketLockFile(void);
++extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster,
++ const char *socketDir);
++extern void TouchSocketLockFiles(void);
+ extern void AddToDataDirLockFile(int target_line, const char *str);
+ extern void ValidatePgVersion(const char *path);
+ extern void process_shared_preload_libraries(void);
+diff -Naur -r postgresql-9.2.5.orig/src/include/postmaster/postmaster.h postgresql-9.2.5/src/include/postmaster/postmaster.h
+--- postgresql-9.2.5.orig/src/include/postmaster/postmaster.h 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/include/postmaster/postmaster.h 2013-10-21 17:51:03.071676021 +0200
+@@ -19,7 +19,7 @@
+ extern int PostPortNumber;
+ extern int Unix_socket_permissions;
+ extern char *Unix_socket_group;
+-extern char *UnixSocketDir;
++extern char *Unix_socket_directories;
+ extern char *ListenAddresses;
+ extern bool ClientAuthInProgress;
+ extern int PreAuthDelay;
+diff -Naur -r postgresql-9.2.5.orig/src/include/utils/builtins.h postgresql-9.2.5/src/include/utils/builtins.h
+--- postgresql-9.2.5.orig/src/include/utils/builtins.h 2013-10-08 05:16:13.000000000 +0200
++++ postgresql-9.2.5/src/include/utils/builtins.h 2013-10-21 17:51:03.071676021 +0200
+@@ -754,6 +754,8 @@
+ extern List *textToQualifiedNameList(text *textval);
+ extern bool SplitIdentifierString(char *rawstring, char separator,
+ List **namelist);
++extern bool SplitDirectoriesString(char *rawstring, char separator,
++ List **namelist);
+ extern Datum replace_text(PG_FUNCTION_ARGS);
+ extern text *replace_text_regexp(text *src_text, void *regexp,
+ text *replace_text, bool glob);
+diff -Naur -r postgresql-9.2.5.orig/doc/src/sgml/html-stamp postgresql-9.2.5/doc/src/sgml/html-stamp
+--- postgresql-9.2.5.orig/doc/src/sgml/html-stamp 2013-10-08 05:48:15.000000000 +0200
++++ postgresql-9.2.5/doc/src/sgml/html-stamp 2013-10-21 17:51:03.071676021 +0200
+@@ -0,0 +1 @@
++hack
+diff -Naur -r postgresql-9.2.5.orig/doc/src/sgml/man-stamp postgresql-9.2.5/doc/src/sgml/man-stamp
+--- postgresql-9.2.5.orig/doc/src/sgml/man-stamp 2013-10-08 05:49:22.000000000 +0200
++++ postgresql-9.2.5/doc/src/sgml/man-stamp 2013-10-21 17:51:03.071676021 +0200
+@@ -0,0 +1 @@
++hack
diff --git a/SOURCES/postgresql-perl-rpath.patch b/SOURCES/postgresql-perl-rpath.patch
new file mode 100644
index 0000000..59c199b
--- /dev/null
+++ b/SOURCES/postgresql-perl-rpath.patch
@@ -0,0 +1,22 @@
+We configure Postgres with --disable-rpath because for the most part we
+want to leave it to ldconfig to determine where libraries are. However,
+for some reason the Perl package puts libperl.so in a nonstandard place
+and doesn't add that place to the ldconfig search path. I think this
+is a Perl packaging bug, myself, but apparently it's not going to change.
+So work around it by adding an rpath spec to plperl.so (only).
+Per bug #162198.
+
+
+diff -Naur postgresql-9.1.5.orig/src/pl/plperl/GNUmakefile postgresql-9.1.5/src/pl/plperl/GNUmakefile
+--- postgresql-9.1.5.orig/src/pl/plperl/GNUmakefile 2012-08-14 18:41:04.000000000 -0400
++++ postgresql-9.1.5/src/pl/plperl/GNUmakefile 2012-08-17 11:15:09.457116708 -0400
+@@ -43,6 +43,9 @@
+
+ SHLIB_LINK = $(perl_embed_ldflags)
+
++# Force rpath to be used even though we disable it everywhere else
++SHLIB_LINK += $(rpath)
++
+ REGRESS_OPTS = --dbname=$(PL_TESTDB) --load-extension=plperl --load-extension=plperlu
+ REGRESS = plperl plperl_lc plperl_trigger plperl_shared plperl_elog plperl_util plperl_init plperlu plperl_array
+ # if Perl can support two interpreters in one backend,
diff --git a/SOURCES/postgresql-setup b/SOURCES/postgresql-setup
new file mode 100644
index 0000000..a755e11
--- /dev/null
+++ b/SOURCES/postgresql-setup
@@ -0,0 +1,207 @@
+#!/bin/sh
+#
+# postgresql-setup Initialization and upgrade operations for PostgreSQL
+
+# PGVERSION is the full package version, e.g., 9.0.2
+# Note: the specfile inserts the correct value during package build
+PGVERSION=xxxx
+# PGENGINE is the directory containing the postmaster executable
+# Note: the specfile inserts the correct value during package build
+PGENGINE=xxxx
+# 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
+
+# Absorb configuration settings from the specified systemd service file,
+# or the default "postgresql" service if not specified
+SERVICE_NAME="$2"
+if [ x"$SERVICE_NAME" = x ]
+then
+ SERVICE_NAME=postgresql
+fi
+
+# this parsing technique fails for PGDATA pathnames containing spaces,
+# but there's not much I can do about it given systemctl's output format...
+PGDATA=`systemctl show -p Environment "${SERVICE_NAME}.service" |
+ sed 's/^Environment=//' | tr ' ' '\n' |
+ sed -n 's/^PGDATA=//p' | tail -n 1`
+
+if [ x"$PGDATA" = x ]
+then
+ echo "failed to find PGDATA setting in ${SERVICE_NAME}.service"
+ exit 1
+fi
+
+PGPORT=`systemctl show -p Environment "${SERVICE_NAME}.service" |
+ sed 's/^Environment=//' | tr ' ' '\n' |
+ sed -n 's/^PGPORT=//p' | tail -n 1`
+
+if [ x"$PGPORT" = x ]
+then
+ echo "failed to find PGPORT setting in ${SERVICE_NAME}.service"
+ exit 1
+fi
+
+# Log file for initdb
+PGLOG=/var/lib/pgsql/initdb.log
+
+# Log file for pg_upgrade
+PGUPLOG=/var/lib/pgsql/pgupgrade.log
+
+export PGDATA
+export PGPORT
+
+# For SELinux we need to use 'runuser' not 'su'
+if [ -x /sbin/runuser ]
+then
+ SU=runuser
+else
+ SU=su
+fi
+
+script_result=0
+
+# code shared between initdb and upgrade actions
+perform_initdb(){
+ if [ ! -e "$PGDATA" ]
+ then
+ mkdir "$PGDATA" || return 1
+ chown postgres:postgres "$PGDATA"
+ chmod go-rwx "$PGDATA"
+ fi
+ # Clean up SELinux tagging for PGDATA
+ [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
+
+ # Create the initdb log file if needed
+ if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
+ then
+ touch "$PGLOG" || return 1
+ chown postgres:postgres "$PGLOG"
+ chmod go-rwx "$PGLOG"
+ [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
+ fi
+
+ # Initialize the database
+ $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
+
+ # Create directory for postmaster log files
+ mkdir "$PGDATA/pg_log"
+ chown postgres:postgres "$PGDATA/pg_log"
+ chmod go-rwx "$PGDATA/pg_log"
+ [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA/pg_log"
+
+ if [ -f "$PGDATA/PG_VERSION" ]
+ then
+ return 0
+ fi
+ return 1
+}
+
+initdb(){
+ if [ -f "$PGDATA/PG_VERSION" ]
+ then
+ echo $"Data directory is not empty!"
+ echo
+ script_result=1
+ else
+ echo -n $"Initializing database ... "
+ if perform_initdb
+ then
+ echo $"OK"
+ else
+ echo $"failed, see $PGLOG"
+ script_result=1
+ fi
+ echo
+ 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
+ exit 1
+ fi
+ if [ ! -x "$PGENGINE/pg_upgrade" ]
+ then
+ echo
+ echo $"Please install the postgresql-upgrade RPM."
+ echo
+ exit 5
+ fi
+
+ # Make sure service is stopped
+ # Using service here makes it work both with systemd and other init systems
+ service "$SERVICE_NAME" stop
+
+ # Set up log file for pg_upgrade
+ 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
+
+ echo -n $"Upgrading database: "
+
+ # 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 $"OK"
+ else
+ # Clean up after failure
+ rm -rf "$PGDATA"
+ mv "$PGDATAOLD" "$PGDATA"
+
+ echo $"failed"
+ fi
+ echo
+ echo $"See $PGUPLOG for details."
+}
+
+# See how we were called.
+case "$1" in
+ initdb)
+ initdb
+ ;;
+ upgrade)
+ upgrade
+ ;;
+ *)
+ echo $"Usage: $0 {initdb|upgrade} [ service_name ]"
+ exit 2
+esac
+
+exit $script_result
diff --git a/SOURCES/postgresql-var-run-socket.patch b/SOURCES/postgresql-var-run-socket.patch
new file mode 100644
index 0000000..22b8a0c
--- /dev/null
+++ b/SOURCES/postgresql-var-run-socket.patch
@@ -0,0 +1,91 @@
+Change the built-in default socket directory to be /var/run/postgresql.
+For backwards compatibility with (probably non-libpq-based) clients that
+might still expect to find the socket in /tmp, also create a socket in
+/tmp. This is to resolve communication problems with clients operating
+under systemd's PrivateTmp environment, which won't be using the same
+global /tmp directory as the server; see bug #825448.
+
+Note that we apply the socket directory change at the level of the
+hard-wired defaults in the C code, not by just twiddling the setting in
+postgresql.conf.sample; this is so that the change will take effect on
+server package update, without requiring any existing postgresql.conf
+to be updated. (Of course, a user who dislikes this behavior can still
+override it via postgresql.conf.)
+
+This patch must be applied after postgresql-multi-sockets.patch, at
+least until 9.3 when that will be part of the upstream package.
+
+
+diff -Naur postgresql-9.2.2.sockets/contrib/pg_upgrade/test.sh postgresql-9.2.2/contrib/pg_upgrade/test.sh
+--- postgresql-9.2.2.sockets/contrib/pg_upgrade/test.sh 2013-01-03 17:33:45.581567466 -0500
++++ postgresql-9.2.2/contrib/pg_upgrade/test.sh 2013-01-03 17:40:22.923364917 -0500
+@@ -78,6 +78,12 @@
+ rm -rf "$logdir"
+ mkdir "$logdir"
+
++# we want the Unix sockets in $temp_root
++PGHOST=$temp_root
++export PGHOST
++
++POSTMASTER_OPTS="$POSTMASTER_OPTS -c unix_socket_directories='$PGHOST'"
++
+ # enable echo so the user can see what is being executed
+ set -x
+
+diff -Naur postgresql-9.2.2.sockets/src/backend/utils/misc/guc.c postgresql-9.2.2/src/backend/utils/misc/guc.c
+--- postgresql-9.2.2.sockets/src/backend/utils/misc/guc.c 2013-01-03 17:37:56.632977951 -0500
++++ postgresql-9.2.2/src/backend/utils/misc/guc.c 2013-01-03 17:38:30.183271588 -0500
+@@ -2901,7 +2901,7 @@
+ },
+ &Unix_socket_directories,
+ #ifdef HAVE_UNIX_SOCKETS
+- DEFAULT_PGSOCKET_DIR,
++ DEFAULT_PGSOCKET_DIR ", /tmp",
+ #else
+ "",
+ #endif
+diff -Naur postgresql-9.2.2.sockets/src/bin/initdb/initdb.c postgresql-9.2.2/src/bin/initdb/initdb.c
+--- postgresql-9.2.2.sockets/src/bin/initdb/initdb.c 2013-01-03 17:37:56.633977974 -0500
++++ postgresql-9.2.2/src/bin/initdb/initdb.c 2013-01-03 17:38:30.185271611 -0500
+@@ -1007,7 +1007,7 @@
+
+ #ifdef HAVE_UNIX_SOCKETS
+ snprintf(repltok, sizeof(repltok), "#unix_socket_directories = '%s'",
+- DEFAULT_PGSOCKET_DIR);
++ DEFAULT_PGSOCKET_DIR ", /tmp");
+ #else
+ snprintf(repltok, sizeof(repltok), "#unix_socket_directories = ''");
+ #endif
+diff -Naur postgresql-9.2.2.sockets/src/include/pg_config_manual.h postgresql-9.2.2/src/include/pg_config_manual.h
+--- postgresql-9.2.2.sockets/src/include/pg_config_manual.h 2012-12-03 15:16:10.000000000 -0500
++++ postgresql-9.2.2/src/include/pg_config_manual.h 2013-01-03 17:38:30.185271611 -0500
+@@ -144,7 +144,7 @@
+ * here's where to twiddle it. You can also override this at runtime
+ * with the postmaster's -k switch.
+ */
+-#define DEFAULT_PGSOCKET_DIR "/tmp"
++#define DEFAULT_PGSOCKET_DIR "/var/run/postgresql"
+
+ /*
+ * The random() function is expected to yield values between 0 and
+diff -Naur postgresql-9.2.2.sockets/src/test/regress/pg_regress.c postgresql-9.2.2/src/test/regress/pg_regress.c
+--- postgresql-9.2.2.sockets/src/test/regress/pg_regress.c 2012-12-03 15:16:10.000000000 -0500
++++ postgresql-9.2.2/src/test/regress/pg_regress.c 2013-01-03 17:38:30.186271622 -0500
+@@ -772,7 +772,7 @@
+ if (hostname != NULL)
+ doputenv("PGHOST", hostname);
+ else
+- unsetenv("PGHOST");
++ doputenv("PGHOST", "/tmp");
+ unsetenv("PGHOSTADDR");
+ if (port != -1)
+ {
+@@ -2246,7 +2246,7 @@
+ */
+ header(_("starting postmaster"));
+ snprintf(buf, sizeof(buf),
+- SYSTEMQUOTE "\"%s/postgres\" -D \"%s/data\" -F%s -c \"listen_addresses=%s\" > \"%s/log/postmaster.log\" 2>&1" SYSTEMQUOTE,
++ SYSTEMQUOTE "\"%s/postgres\" -D \"%s/data\" -F%s -c \"listen_addresses=%s\" -c \"unix_socket_directories=/tmp\" > \"%s/log/postmaster.log\" 2>&1" SYSTEMQUOTE,
+ bindir, temp_install,
+ debug ? " -d 5" : "",
+ hostname ? hostname : "",
diff --git a/SOURCES/postgresql.pam b/SOURCES/postgresql.pam
new file mode 100644
index 0000000..1d78594
--- /dev/null
+++ b/SOURCES/postgresql.pam
@@ -0,0 +1,3 @@
+#%PAM-1.0
+auth include password-auth
+account include password-auth
diff --git a/SOURCES/postgresql.service b/SOURCES/postgresql.service
new file mode 100644
index 0000000..4a55a66
--- /dev/null
+++ b/SOURCES/postgresql.service
@@ -0,0 +1,59 @@
+# It's not recommended to modify this file in-place, because it will be
+# overwritten during package upgrades. If you want to customize, the
+# best way is to create a file "/etc/systemd/system/postgresql.service",
+# containing
+# .include /lib/systemd/system/postgresql.service
+# ...make your changes here...
+# For more info about custom unit files, see
+# http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F
+
+# For example, if you want to change the server's port number to 5433,
+# create a file named "/etc/systemd/system/postgresql.service" containing:
+# .include /lib/systemd/system/postgresql.service
+# [Service]
+# Environment=PGPORT=5433
+# This will override the setting appearing below.
+
+# Note: changing PGPORT or PGDATA will typically require adjusting SELinux
+# configuration as well; see /usr/share/doc/postgresql-*/README.rpm-dist.
+
+# Note: do not use a PGDATA pathname containing spaces, or you will
+# break postgresql-setup.
+
+# Note: in F-17 and beyond, /usr/lib/... is recommended in the .include line
+# though /lib/... will still work.
+
+[Unit]
+Description=PostgreSQL database server
+After=network.target
+
+[Service]
+Type=forking
+
+User=postgres
+Group=postgres
+
+# Port number for server to listen on
+Environment=PGPORT=5432
+
+# Location of database directory
+Environment=PGDATA=/var/lib/pgsql/data
+
+# Where to send early-startup messages from the server (before the logging
+# options of postgresql.conf take effect)
+# This is normally controlled by the global default set by systemd
+# StandardOutput=syslog
+
+# Disable OOM kill on the postmaster
+OOMScoreAdjust=-1000
+
+ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA}
+ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
+ExecStop=/usr/bin/pg_ctl stop -D ${PGDATA} -s -m fast
+ExecReload=/usr/bin/pg_ctl reload -D ${PGDATA} -s
+
+# Give a reasonable amount of time for the server to start up/shut down
+TimeoutSec=300
+
+[Install]
+WantedBy=multi-user.target
diff --git a/SOURCES/postgresql.tmpfiles.d b/SOURCES/postgresql.tmpfiles.d
new file mode 100644
index 0000000..d8d960d
--- /dev/null
+++ b/SOURCES/postgresql.tmpfiles.d
@@ -0,0 +1 @@
+d /var/run/postgresql 0755 postgres postgres -
diff --git a/SOURCES/rpm-pgsql.patch b/SOURCES/rpm-pgsql.patch
new file mode 100644
index 0000000..aec64ac
--- /dev/null
+++ b/SOURCES/rpm-pgsql.patch
@@ -0,0 +1,72 @@
+For the RPMs, we want the custom installation directories to end in
+/pgsql not /postgresql. This is historical but not worth changing.
+
+Notice that this patch also makes the appending of /pgsql unconditional.
+This is to avoid unexpected behavior if the RPM is built in a working
+directory whose path happens to include "postgres" or "pgsql" already.
+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-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
+-# append "postgresql" to some of them, if the string does not already
+-# contain "pgsql" or "postgres", in order to avoid directory clutter.
++# append "pgsql" to some of them, in order to avoid directory clutter.
+ #
+ # In a PGXS build, we cannot use the values inserted into Makefile.global
+ # by configure, since the installation tree may have been relocated.
+@@ -74,45 +73,23 @@
+ bindir := @bindir@
+
+ datadir := @datadir@
+-ifeq "$(findstring pgsql, $(datadir))" ""
+-ifeq "$(findstring postgres, $(datadir))" ""
+-override datadir := $(datadir)/postgresql
+-endif
+-endif
+
+ sysconfdir := @sysconfdir@
+-ifeq "$(findstring pgsql, $(sysconfdir))" ""
+-ifeq "$(findstring postgres, $(sysconfdir))" ""
+-override sysconfdir := $(sysconfdir)/postgresql
+-endif
+-endif
+
+ libdir := @libdir@
+
+ pkglibdir = $(libdir)
+-ifeq "$(findstring pgsql, $(pkglibdir))" ""
+-ifeq "$(findstring postgres, $(pkglibdir))" ""
+-override pkglibdir := $(pkglibdir)/postgresql
+-endif
+-endif
++override pkglibdir := $(pkglibdir)/pgsql
+
+ includedir := @includedir@
+
+ pkgincludedir = $(includedir)
+-ifeq "$(findstring pgsql, $(pkgincludedir))" ""
+-ifeq "$(findstring postgres, $(pkgincludedir))" ""
+-override pkgincludedir := $(pkgincludedir)/postgresql
+-endif
+-endif
++override pkgincludedir := $(pkgincludedir)/pgsql
+
+ mandir := @mandir@
+
+ docdir := @docdir@
+-ifeq "$(findstring pgsql, $(docdir))" ""
+-ifeq "$(findstring postgres, $(docdir))" ""
+-override docdir := $(docdir)/postgresql
+-endif
+-endif
++override docdir := $(docdir)/pgsql
+
+ htmldir := @htmldir@
+
diff --git a/SOURCES/upgrade.sh b/SOURCES/upgrade.sh
new file mode 100755
index 0000000..c542494
--- /dev/null
+++ b/SOURCES/upgrade.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+#
+# Legacy action script for "service postgresql upgrade"
+
+# Find the name of the service
+SERVICE_NAME=$(basename $(dirname "$0"))
+if [ x"$SERVICE_NAME" = x. ]
+then
+ SERVICE_NAME=postgresql
+fi
+
+echo Hint: the preferred way to do this is now '"postgresql-setup upgrade"' >&2
+
+/usr/bin/postgresql-setup upgrade "$SERVICE_NAME"
+
+exit $?
diff --git a/SPECS/postgresql.spec b/SPECS/postgresql.spec
new file mode 100644
index 0000000..c7d0f6a
--- /dev/null
+++ b/SPECS/postgresql.spec
@@ -0,0 +1,1881 @@
+# This is the PostgreSQL Global Development Group Official RPMset spec file,
+# or a derivative thereof.
+# Copyright 2003-2009 Lamar Owen
+# and others listed.
+
+# Major Contributors:
+# ---------------
+# Lamar Owen
+# Trond Eivind Glomsrd
+# Thomas Lockhart
+# Reinhard Max
+# Karl DeBisschop
+# Peter Eisentraut
+# Joe Conway
+# Andrew Overholt
+# David Jee
+# Kaj J. Niemi
+# Sander Steffann
+# Tom Lane
+# and others in the Changelog....
+
+# This spec file and ancillary files are licensed in accordance with
+# The PostgreSQL license.
+
+# In this file you can find the default build package list macros.
+# These can be overridden by defining on the rpm command line:
+# rpm --define 'packagename 1' .... to force the package to build.
+# rpm --define 'packagename 0' .... to force the package NOT to build.
+# The base package, the libs package, the devel package, and the server package
+# always get built.
+
+%{!?beta:%global beta 0}
+%{?beta:%global __os_install_post /usr/lib/rpm/brp-compress}
+
+%{!?test:%global test 1}
+%{!?upgrade:%global upgrade 1}
+%{!?plpython:%global plpython 1}
+%if 0%{?fedora} > 12
+%{!?plpython3:%global plpython3 1}
+%else
+%{!?plpython3:%global plpython3 0}
+%endif
+%{!?pltcl:%global pltcl 1}
+%{!?plperl:%global plperl 1}
+%{!?ssl:%global ssl 1}
+%{!?kerberos:%global kerberos 1}
+%{!?ldap:%global ldap 1}
+%{!?nls:%global nls 1}
+%{!?uuid:%global uuid 1}
+%{!?xml:%global xml 1}
+%{!?pam:%global pam 1}
+%{!?sdt:%global sdt 1}
+%{!?selinux:%global selinux 1}
+%{!?runselftest:%global runselftest 1}
+
+
+Summary: PostgreSQL client programs
+Name: postgresql
+%global majorversion 9.2
+Version: 9.2.5
+Release: 3%{?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/
+
+# This number must be NVR-greater than any PG version shipped in F15:
+%global first_systemd_version 0:9.0.99
+
+# 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;
+# but update when bugs affecting pg_dump output are fixed.
+%global prevversion 8.4.18
+%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: ftp://ftp.postgresql.org/pub/source/v%{prevversion}/postgresql-%{prevversion}.tar.bz2
+Source4: postgresql-check-db-dir
+Source5: Makefile.regress
+Source6: pg_config.h
+Source7: ecpg_config.h
+Source8: README.rpm-dist
+Source9: postgresql-setup
+Source10: postgresql.service
+Source11: initdb.sh
+Source12: upgrade.sh
+Source13: postgresql.tmpfiles.d
+Source14: postgresql.pam
+Source15: postgresql-bashprofile
+
+# Comments for these patches are in the patch files.
+Patch1: rpm-pgsql.patch
+Patch2: postgresql-logging.patch
+Patch3: postgresql-perl-rpath.patch
+Patch4: postgresql-config-comment.patch
+Patch5: postgresql-multi-sockets.patch
+Patch6: postgresql-var-run-socket.patch
+
+# Comments for these patches are in the patch files.
+Patch8: postgresql-man.patch
+
+# Add support for atomic operations TAS/S_UNLOCK in |aarch64.
+# ~> upstream (612ecf311b)
+# ~> #970661
+Patch11: postgresql-9.2.4-aarch64-atomic-upgrade.patch
+
+# Force older postgres to create socket file in /var/run/postgresql
+# ~> downstream
+Patch12: postgresql-9.2.4-upgrade-from-8.4.13.patch
+
+# When user complicates access of 'postgres' user to the database, the
+# pg_upgrade can left the old server running - and re-run of pg_upgrade thus
+# does not help. This patch stops the server in described scenario properly.
+# ~> not yet upstream, patch by Bruce Momjian:
+# ~> http://www.postgresql.org/message-id/20130812193347.GD12510@momjian.us
+# ~> #896161
+Patch13: postgresql-9.2.4-upgrade-and-perm-problems.patch
+
+BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk
+BuildRequires: perl(ExtUtils::Embed), perl-devel
+BuildRequires: readline-devel zlib-devel
+BuildRequires: systemd-units
+
+%if %plpython
+BuildRequires: python-devel
+%endif
+
+%if %plpython3
+BuildRequires: python3-devel
+%endif
+
+%if %pltcl
+BuildRequires: tcl-devel
+%endif
+
+%if %ssl
+BuildRequires: openssl-devel
+%endif
+
+%if %kerberos
+BuildRequires: krb5-devel
+%endif
+
+%if %ldap
+BuildRequires: openldap-devel
+%endif
+
+%if %nls
+BuildRequires: gettext >= 0.10.35
+%endif
+
+%if %uuid
+BuildRequires: uuid-devel
+%endif
+
+%if %xml
+BuildRequires: libxml2-devel libxslt-devel
+%endif
+
+%if %pam
+BuildRequires: pam-devel
+%endif
+
+%if %sdt
+BuildRequires: systemtap-sdt-devel
+%endif
+
+%if %selinux
+BuildRequires: libselinux-devel
+%endif
+
+# main package requires -libs subpackage
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+
+%description
+PostgreSQL is an advanced Object-Relational database management system (DBMS).
+The base postgresql package contains the client programs that you'll need to
+access a PostgreSQL DBMS server, as well as HTML documentation for the whole
+system. These client programs can be located on the same machine as the
+PostgreSQL server, or on a remote machine that accesses a PostgreSQL server
+over a network connection. The PostgreSQL server can be found in the
+postgresql-server sub-package.
+
+
+%package libs
+Summary: The shared libraries required for any PostgreSQL clients
+Group: Applications/Databases
+Provides: libpq.so = %{version}-%{release}
+# for /sbin/ldconfig
+Requires(post): glibc
+Requires(postun): glibc
+
+%description libs
+The postgresql-libs package provides the essential shared libraries for any
+PostgreSQL client program or interface. You will need to install this package
+to use any other PostgreSQL package or any clients that need to connect to a
+PostgreSQL server.
+
+
+%package server
+Summary: The programs needed to create and run a PostgreSQL server
+Group: Applications/Databases
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+Requires(pre): /usr/sbin/useradd
+# We require this to be present for %%{_prefix}/lib/tmpfiles.d
+Requires: systemd-units
+# Make sure it's there when scriptlets run, too
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+# This is actually needed for the %%triggerun script but Requires(triggerun)
+# is not valid. We can use post because this particular %%triggerun script
+# should fire just after this package is installed.
+Requires(post): systemd-sysv
+Requires(post): chkconfig
+
+%description server
+PostgreSQL is an advanced Object-Relational database management system (DBMS).
+The postgresql-server package contains the programs needed to create
+and run a PostgreSQL server, which will in turn allow you to create
+and maintain PostgreSQL databases.
+
+
+%package docs
+Summary: Extra documentation for PostgreSQL
+Group: Applications/Databases
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description docs
+The postgresql-docs package contains some additional documentation for
+PostgreSQL. Currently, this includes the main documentation in PDF format
+and source files for the PostgreSQL tutorial.
+
+
+%package contrib
+Summary: Extension modules distributed with PostgreSQL
+Group: Applications/Databases
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+
+%description contrib
+The postgresql-contrib package contains various extension modules that are
+included in the PostgreSQL distribution.
+
+
+%package devel
+Summary: PostgreSQL development header files and libraries
+Group: Development/Libraries
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+
+%description devel
+The postgresql-devel package contains the header files and libraries
+needed to compile C or C++ applications which will directly interact
+with a PostgreSQL database management server. It also contains 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%{?_isa} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+
+%description upgrade
+The postgresql-upgrade package contains the pg_upgrade utility and supporting
+files needed for upgrading a PostgreSQL database from the previous major
+version of PostgreSQL.
+%endif
+
+
+%if %plperl
+%package plperl
+Summary: The Perl procedural language for PostgreSQL
+Group: Applications/Databases
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
+Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+
+%description plperl
+The postgresql-plperl package contains the PL/Perl procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Perl.
+%endif
+
+%if %plpython
+%package plpython
+Summary: The Python2 procedural language for PostgreSQL
+Group: Applications/Databases
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
+
+%description plpython
+The postgresql-plpython package contains the PL/Python procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Python 2.
+%endif
+
+%if %plpython3
+%package plpython3
+Summary: The Python3 procedural language for PostgreSQL
+Group: Applications/Databases
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
+
+%description plpython3
+The postgresql-plpython3 package contains the PL/Python3 procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Python 3.
+%endif
+
+%if %pltcl
+%package pltcl
+Summary: The Tcl procedural language for PostgreSQL
+Group: Applications/Databases
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
+
+%description pltcl
+The postgresql-pltcl package contains the PL/Tcl procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Tcl.
+%endif
+
+%if %test
+%package test
+Summary: The test suite distributed with PostgreSQL
+Group: Applications/Databases
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+%description test
+The postgresql-test package contains files needed for various tests for the
+PostgreSQL database management system, including regression tests and
+benchmarks.
+%endif
+
+%prep
+%setup -q
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch8 -p1
+%patch13 -p1
+
+# We used to run autoconf here, but there's no longer any real need to,
+# since Postgres ships with a reasonably modern configure script.
+
+# add ppc64p7 support (https://fedoraproject.org/wiki/Features/Power7Subarch)
+# hopefully need for this will go away next time upstream updates config.sub
+sed -i -e "s/ppc64-\*/ppc64-\* \| ppc64p7-\*/" config/config.sub
+
+cp -p %{SOURCE1} .
+
+%if %upgrade
+tar xfj %{SOURCE3}
+# make sure older version is up-to-date on config.guess/config.sub;
+# not always necessary, but PG 9.2 knows about aarch64 while 9.1 doesn't
+# (and also see the ppc64p7 hack above)
+cp -p config/config.guess postgresql-%{prevversion}/config/config.guess
+cp -p config/config.sub postgresql-%{prevversion}/config/config.sub
+
+pushd postgresql-%{prevversion}
+%patch11 -p2
+%patch12 -p2
+popd
+%endif
+
+# remove .gitignore files to ensure none get into the RPMs (bug #642210)
+find . -type f -name .gitignore | xargs rm
+
+%build
+
+# fail quickly and obviously if user tries to build as root
+%if %runselftest
+ if [ x"`id -u`" = x0 ]; then
+ echo "postgresql's regression tests fail if run as root."
+ echo "If you really need to build the RPM as root, use"
+ echo "--define='runselftest 0' to skip the regression tests."
+ exit 1
+ fi
+%endif
+
+CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS
+
+# Strip out -ffast-math from CFLAGS....
+CFLAGS=`echo $CFLAGS|xargs -n 1|grep -v ffast-math|xargs -n 100`
+# Add LINUX_OOM_SCORE_ADJ=0 to ensure child processes reset postmaster's oom_score_adj
+CFLAGS="$CFLAGS -DLINUX_OOM_SCORE_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
+# CFLAGS=`echo $CFLAGS| sed -e "s|-O2|-O1|g" `
+# %%endif
+
+# plpython requires separate configure/build runs to build against python 2
+# versus python 3. Our strategy is to do the python 3 run first, then make
+# distclean and do it again for the "normal" build. Note that the installed
+# Makefile.global will reflect the python 2 build, which seems appropriate
+# since that's still considered the default plpython version.
+%if %plpython3
+
+export PYTHON=/usr/bin/python3
+
+# These configure options must match main build
+%configure --disable-rpath \
+%if %beta
+ --enable-debug \
+ --enable-cassert \
+%endif
+%if %plperl
+ --with-perl \
+%endif
+%if %pltcl
+ --with-tcl \
+ --with-tclconfig=%{_libdir} \
+%endif
+%if %plpython3
+ --with-python \
+%endif
+%if %ldap
+ --with-ldap \
+%endif
+%if %ssl
+ --with-openssl \
+%endif
+%if %pam
+ --with-pam \
+%endif
+%if %kerberos
+ --with-krb5 \
+ --with-gssapi \
+%endif
+%if %uuid
+ --with-ossp-uuid \
+%endif
+%if %xml
+ --with-libxml \
+ --with-libxslt \
+%endif
+%if %nls
+ --enable-nls \
+%endif
+%if %sdt
+ --enable-dtrace \
+%endif
+%if %selinux
+ --with-selinux \
+%endif
+ --with-system-tzdata=%{_datadir}/zoneinfo \
+ --datadir=%{_datadir}/pgsql
+
+# Fortunately we don't need to build much except plpython itself
+cd src/backend
+make submake-errcodes
+cd ../..
+cd src/pl/plpython
+make %{?_smp_mflags} all
+cd ..
+# save built form in a directory that "make distclean" won't touch
+cp -a plpython plpython3
+cd ../..
+
+# must also save this version of Makefile.global for later
+cp src/Makefile.global src/Makefile.global.python3
+
+make distclean
+
+%endif
+
+unset PYTHON
+
+# Normal (not python3) build begins here
+
+%configure --disable-rpath \
+%if %beta
+ --enable-debug \
+ --enable-cassert \
+%endif
+%if %plperl
+ --with-perl \
+%endif
+%if %pltcl
+ --with-tcl \
+ --with-tclconfig=%{_libdir} \
+%endif
+%if %plpython
+ --with-python \
+%endif
+%if %ldap
+ --with-ldap \
+%endif
+%if %ssl
+ --with-openssl \
+%endif
+%if %pam
+ --with-pam \
+%endif
+%if %kerberos
+ --with-krb5 \
+ --with-gssapi \
+%endif
+%if %uuid
+ --with-ossp-uuid \
+%endif
+%if %xml
+ --with-libxml \
+ --with-libxslt \
+%endif
+%if %nls
+ --enable-nls \
+%endif
+%if %sdt
+ --enable-dtrace \
+%endif
+%if %selinux
+ --with-selinux \
+%endif
+ --with-system-tzdata=/usr/share/zoneinfo \
+ --datadir=/usr/share/pgsql
+
+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
+make %{?_smp_mflags} -C src/tutorial NO_PGXS=1 all
+rm -f src/tutorial/GNUmakefile
+
+%if %runselftest
+ pushd src/test/regress
+ make all
+ make MAX_CONNECTIONS=5 check
+ make clean
+ popd
+ pushd src/pl
+ make MAX_CONNECTIONS=5 check
+ popd
+%if %plpython3
+ # must install Makefile.global that selects python3
+ mv src/Makefile.global src/Makefile.global.save
+ cp src/Makefile.global.python3 src/Makefile.global
+ touch -r src/Makefile.global.save src/Makefile.global
+ # because "make check" does "make install" on the whole tree,
+ # we must temporarily install plpython3 as src/pl/plpython,
+ # since that is the subdirectory src/pl/Makefile knows about
+ mv src/pl/plpython src/pl/plpython2
+ mv src/pl/plpython3 src/pl/plpython
+ pushd src/pl/plpython
+ make MAX_CONNECTIONS=5 check
+ popd
+ # and clean up our mess
+ mv src/pl/plpython src/pl/plpython3
+ mv src/pl/plpython2 src/pl/plpython
+ mv -f src/Makefile.global.save src/Makefile.global
+%endif
+ pushd contrib
+ make MAX_CONNECTIONS=5 check
+ popd
+%endif
+
+# undo the "make clean" above
+%if %test
+ pushd src/test/regress
+ make all
+ 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.
+
+ # The -fno-aggressive-loop-optimizations is hack for #993532
+ CFLAGS="$CFLAGS -fno-aggressive-loop-optimizations" ./configure \
+ --build=%{_build} \
+ --host=%{_host} \
+ --prefix=%{_libdir}/pgsql/postgresql-%{prevmajorversion} \
+ --disable-rpath \
+%if %beta
+ --enable-debug \
+ --enable-cassert \
+%endif
+ --with-system-tzdata=/usr/share/zoneinfo
+
+ make %{?_smp_mflags} all
+
+ popd
+%endif
+
+%install
+
+make DESTDIR=$RPM_BUILD_ROOT install-world
+
+%if %plpython3
+ mv src/Makefile.global src/Makefile.global.save
+ cp src/Makefile.global.python3 src/Makefile.global
+ touch -r src/Makefile.global.save src/Makefile.global
+ pushd src/pl/plpython3
+ make DESTDIR=$RPM_BUILD_ROOT install
+ popd
+ mv -f src/Makefile.global.save src/Makefile.global
+%endif
+
+# make sure these directories exist even if we suppressed all contrib modules
+install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/pgsql/contrib
+install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/pgsql/extension
+
+# 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 %{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 %{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/
+ ;;
+ *)
+ ;;
+esac
+
+install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
+cp -p src/tutorial/* $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
+
+# prep the setup script, including insertion of some values it needs
+sed -e 's|^PGVERSION=.*$|PGVERSION=%{version}|' \
+ -e 's|^PGENGINE=.*$|PGENGINE=%{_bindir}|' \
+ -e 's|^PREVMAJORVERSION=.*$|PREVMAJORVERSION=%{prevmajorversion}|' \
+ -e 's|^PREVPGENGINE=.*$|PREVPGENGINE=%{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin|' \
+ <%{SOURCE9} >postgresql-setup
+touch -r %{SOURCE9} postgresql-setup
+install -m 755 postgresql-setup $RPM_BUILD_ROOT%{_bindir}/postgresql-setup
+
+# prep the startup check script, including insertion of some values it needs
+sed -e 's|^PGVERSION=.*$|PGVERSION=%{version}|' \
+ -e 's|^PREVMAJORVERSION=.*$|PREVMAJORVERSION=%{prevmajorversion}|' \
+ -e 's|^PGDOCDIR=.*$|PGDOCDIR=%{_docdir}/%{name}-%{version}|' \
+ <%{SOURCE4} >postgresql-check-db-dir
+touch -r %{SOURCE4} postgresql-check-db-dir
+install -m 755 postgresql-check-db-dir $RPM_BUILD_ROOT%{_bindir}/postgresql-check-db-dir
+
+install -d $RPM_BUILD_ROOT%{_unitdir}
+install -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_unitdir}/postgresql.service
+
+install -d $RPM_BUILD_ROOT/usr/libexec/initscripts/legacy-actions/postgresql
+install -m 755 %{SOURCE11} $RPM_BUILD_ROOT/usr/libexec/initscripts/legacy-actions/postgresql/initdb
+install -m 755 %{SOURCE12} $RPM_BUILD_ROOT/usr/libexec/initscripts/legacy-actions/postgresql/upgrade
+
+%if %pam
+install -d $RPM_BUILD_ROOT/etc/pam.d
+install -m 644 %{SOURCE14} $RPM_BUILD_ROOT/etc/pam.d/postgresql
+%endif
+
+# Create the directory for sockets.
+install -d -m 755 $RPM_BUILD_ROOT/var/run/postgresql
+
+# ... and make a tmpfiles script to recreate it at reboot.
+mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir}
+install -m 0644 %{SOURCE13} $RPM_BUILD_ROOT%{_tmpfilesdir}/postgresql.conf
+
+# PGDATA needs removal of group and world permissions due to pg_pwd hole.
+install -d -m 700 $RPM_BUILD_ROOT/var/lib/pgsql/data
+
+# backups of data go here...
+install -d -m 700 $RPM_BUILD_ROOT/var/lib/pgsql/backups
+
+# postgres' .bash_profile
+install -m 644 %{SOURCE15} $RPM_BUILD_ROOT/var/lib/pgsql/.bash_profile
+
+
+%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_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
+ # Makefiles, however.
+ mkdir -p $RPM_BUILD_ROOT%{_libdir}/pgsql/test
+ cp -a src/test/regress $RPM_BUILD_ROOT%{_libdir}/pgsql/test
+ # pg_regress binary should be only in one subpackage,
+ # there will be a symlink from -test to -devel
+ rm -f $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/pg_regress
+ ln -sf ../../pgxs/src/test/regress/pg_regress $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/pg_regress
+ pushd $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress
+ rm -f GNUmakefile Makefile *.o
+ chmod 0755 pg_regress regress.so
+ popd
+ 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
+cp %{SOURCE8} README.rpm-dist
+rm -rf doc/html # HACK! allow 'rpmbuild -bi --short-circuit'
+mv $RPM_BUILD_ROOT%{_docdir}/pgsql/html doc
+rm -rf $RPM_BUILD_ROOT%{_docdir}/pgsql
+
+# remove files not to be packaged
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
+%if !%upgrade
+rm -f $RPM_BUILD_ROOT%{_bindir}/pg_upgrade
+rm -f $RPM_BUILD_ROOT%{_libdir}/pgsql/pg_upgrade_support.so
+rm -f $RPM_BUILD_ROOT%{_mandir}/man1/pg_upgrade.*
+%endif
+
+# initialize file lists
+cp /dev/null main.lst
+cp /dev/null libs.lst
+cp /dev/null server.lst
+cp /dev/null devel.lst
+cp /dev/null plperl.lst
+cp /dev/null pltcl.lst
+cp /dev/null plpython.lst
+cp /dev/null plpython3.lst
+
+%if %nls
+%find_lang ecpg-%{majorversion}
+cat ecpg-%{majorversion}.lang >>devel.lst
+%find_lang ecpglib6-%{majorversion}
+cat ecpglib6-%{majorversion}.lang >>libs.lst
+%find_lang initdb-%{majorversion}
+cat initdb-%{majorversion}.lang >>server.lst
+%find_lang libpq5-%{majorversion}
+cat libpq5-%{majorversion}.lang >>libs.lst
+%find_lang pg_basebackup-%{majorversion}
+cat pg_basebackup-%{majorversion}.lang >>server.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
+%find_lang pg_resetxlog-%{majorversion}
+cat pg_resetxlog-%{majorversion}.lang >>server.lst
+%find_lang pgscripts-%{majorversion}
+cat pgscripts-%{majorversion}.lang >>main.lst
+%if %plperl
+%find_lang plperl-%{majorversion}
+cat plperl-%{majorversion}.lang >>plperl.lst
+%endif
+%find_lang plpgsql-%{majorversion}
+cat plpgsql-%{majorversion}.lang >>server.lst
+%if %plpython
+%find_lang plpython-%{majorversion}
+cat plpython-%{majorversion}.lang >>plpython.lst
+%endif
+%if %plpython3
+# plpython3 shares message files with plpython
+%find_lang plpython-%{majorversion}
+cat plpython-%{majorversion}.lang >>plpython3.lst
+%endif
+%if %pltcl
+%find_lang pltcl-%{majorversion}
+cat pltcl-%{majorversion}.lang >>pltcl.lst
+%endif
+%find_lang postgres-%{majorversion}
+cat postgres-%{majorversion}.lang >>server.lst
+%find_lang psql-%{majorversion}
+cat psql-%{majorversion}.lang >>main.lst
+%endif
+
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
+%pre server
+/usr/sbin/groupadd -g 26 -o -r postgres >/dev/null 2>&1 || :
+/usr/sbin/useradd -M -N -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
+ -c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
+
+%post server
+%if 0%{?systemd_post:1}
+%systemd_post postgresql.service
+%else
+if [ $1 -eq 1 ]; then
+ # Initial installation
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
+%endif
+
+# Run this when upgrading from SysV initscript to native systemd unit
+%triggerun server -- postgresql-server < %{first_systemd_version}
+# Save the current service runlevel info
+# User must manually run systemd-sysv-convert --apply postgresql
+# to migrate them to systemd targets
+/usr/bin/systemd-sysv-convert --save postgresql >/dev/null 2>&1 || :
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del postgresql >/dev/null 2>&1 || :
+/bin/systemctl try-restart postgresql.service >/dev/null 2>&1 || :
+
+%preun server
+%if 0%{?systemd_preun:1}
+%systemd_preun postgresql.service
+%else
+if [ $1 -eq 0 ]; then
+ # Package removal, not upgrade
+ /bin/systemctl --no-reload disable postgresql.service >/dev/null 2>&1 || :
+ /bin/systemctl stop postgresql.service >/dev/null 2>&1 || :
+fi
+%endif
+
+%postun server
+%if 0%{?systemd_postun_with_restart:1}
+%systemd_postun_with_restart postgresql.service
+%else
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ]; then
+ # Package upgrade, not uninstall
+ /bin/systemctl try-restart postgresql.service >/dev/null 2>&1 || :
+fi
+%endif
+
+# FILES section.
+
+%files -f main.lst
+%doc doc/KNOWN_BUGS doc/MISSING_FEATURES doc/TODO
+%doc COPYRIGHT README HISTORY doc/bug.template
+%doc README.rpm-dist
+%doc doc/html
+%{_bindir}/clusterdb
+%{_bindir}/createdb
+%{_bindir}/createlang
+%{_bindir}/createuser
+%{_bindir}/dropdb
+%{_bindir}/droplang
+%{_bindir}/dropuser
+%{_bindir}/pg_config
+%{_bindir}/pg_dump
+%{_bindir}/pg_dumpall
+%{_bindir}/pg_restore
+%{_bindir}/psql
+%{_bindir}/reindexdb
+%{_bindir}/vacuumdb
+%{_mandir}/man1/clusterdb.*
+%{_mandir}/man1/createdb.*
+%{_mandir}/man1/createlang.*
+%{_mandir}/man1/createuser.*
+%{_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.*
+%{_mandir}/man1/psql.*
+%{_mandir}/man1/reindexdb.*
+%{_mandir}/man1/vacuumdb.*
+%{_mandir}/man7/*
+%dir %{_libdir}/pgsql
+
+%files docs
+%doc *-US.pdf
+%{_libdir}/pgsql/tutorial/
+
+%files contrib
+%{_datadir}/pgsql/extension/adminpack*
+%{_datadir}/pgsql/extension/autoinc*
+%{_datadir}/pgsql/extension/btree_gin*
+%{_datadir}/pgsql/extension/btree_gist*
+%{_datadir}/pgsql/extension/chkpass*
+%{_datadir}/pgsql/extension/citext*
+%{_datadir}/pgsql/extension/cube*
+%{_datadir}/pgsql/extension/dblink*
+%{_datadir}/pgsql/extension/dict_int*
+%{_datadir}/pgsql/extension/dict_xsyn*
+%{_datadir}/pgsql/extension/earthdistance*
+%{_datadir}/pgsql/extension/file_fdw*
+%{_datadir}/pgsql/extension/fuzzystrmatch*
+%{_datadir}/pgsql/extension/hstore*
+%{_datadir}/pgsql/extension/insert_username*
+%{_datadir}/pgsql/extension/intagg*
+%{_datadir}/pgsql/extension/intarray*
+%{_datadir}/pgsql/extension/isn*
+%{_datadir}/pgsql/extension/lo*
+%{_datadir}/pgsql/extension/ltree*
+%{_datadir}/pgsql/extension/moddatetime*
+%{_datadir}/pgsql/extension/pageinspect*
+%{_datadir}/pgsql/extension/pg_buffercache*
+%{_datadir}/pgsql/extension/pg_freespacemap*
+%{_datadir}/pgsql/extension/pg_stat_statements*
+%{_datadir}/pgsql/extension/pg_trgm*
+%{_datadir}/pgsql/extension/pgcrypto*
+%{_datadir}/pgsql/extension/pgrowlocks*
+%{_datadir}/pgsql/extension/pgstattuple*
+%{_datadir}/pgsql/extension/refint*
+%{_datadir}/pgsql/extension/seg*
+%{_datadir}/pgsql/extension/tablefunc*
+%{_datadir}/pgsql/extension/tcn*
+%{_datadir}/pgsql/extension/test_parser*
+%{_datadir}/pgsql/extension/timetravel*
+%{_datadir}/pgsql/extension/tsearch2*
+%{_datadir}/pgsql/extension/unaccent*
+%{_libdir}/pgsql/_int.so
+%{_libdir}/pgsql/adminpack.so
+%{_libdir}/pgsql/auth_delay.so
+%{_libdir}/pgsql/autoinc.so
+%{_libdir}/pgsql/auto_explain.so
+%{_libdir}/pgsql/btree_gin.so
+%{_libdir}/pgsql/btree_gist.so
+%{_libdir}/pgsql/chkpass.so
+%{_libdir}/pgsql/citext.so
+%{_libdir}/pgsql/cube.so
+%{_libdir}/pgsql/dblink.so
+%{_libdir}/pgsql/dict_int.so
+%{_libdir}/pgsql/dict_xsyn.so
+%{_libdir}/pgsql/dummy_seclabel.so
+%{_libdir}/pgsql/earthdistance.so
+%{_libdir}/pgsql/file_fdw.so
+%{_libdir}/pgsql/fuzzystrmatch.so
+%{_libdir}/pgsql/hstore.so
+%{_libdir}/pgsql/insert_username.so
+%{_libdir}/pgsql/isn.so
+%{_libdir}/pgsql/lo.so
+%{_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
+%{_libdir}/pgsql/pgcrypto.so
+%{_libdir}/pgsql/pgrowlocks.so
+%{_libdir}/pgsql/pgstattuple.so
+%{_libdir}/pgsql/pg_stat_statements.so
+%{_libdir}/pgsql/refint.so
+%{_libdir}/pgsql/seg.so
+%{_libdir}/pgsql/tablefunc.so
+%{_libdir}/pgsql/tcn.so
+%{_libdir}/pgsql/test_parser.so
+%{_libdir}/pgsql/timetravel.so
+%{_libdir}/pgsql/tsearch2.so
+%{_libdir}/pgsql/unaccent.so
+%if %selinux
+%{_datadir}/pgsql/contrib/sepgsql.sql
+%{_libdir}/pgsql/sepgsql.so
+%endif
+%if %ssl
+%{_datadir}/pgsql/extension/sslinfo*
+%{_libdir}/pgsql/sslinfo.so
+%endif
+%if %uuid
+%{_datadir}/pgsql/extension/uuid-ossp*
+%{_libdir}/pgsql/uuid-ossp.so
+%endif
+%if %xml
+%{_datadir}/pgsql/extension/xml2*
+%{_libdir}/pgsql/pgxml.so
+%endif
+%{_bindir}/oid2name
+%{_bindir}/pg_archivecleanup
+%{_bindir}/pg_standby
+%{_bindir}/pg_test_fsync
+%{_bindir}/pg_test_timing
+%{_bindir}/pgbench
+%{_bindir}/vacuumlo
+%{_mandir}/man1/oid2name.*
+%{_mandir}/man1/pg_archivecleanup.*
+%{_mandir}/man1/pg_standby.*
+%{_mandir}/man1/pg_test_fsync.*
+%{_mandir}/man1/pg_test_timing.*
+%{_mandir}/man1/pgbench.*
+%{_mandir}/man1/vacuumlo.*
+%{_mandir}/man3/dblink*
+%doc contrib/spi/*.example
+
+%files libs -f libs.lst
+%doc COPYRIGHT
+%{_libdir}/libpq.so.*
+%{_libdir}/libecpg.so.*
+%{_libdir}/libpgtypes.so.*
+%{_libdir}/libecpg_compat.so.*
+
+%files server -f server.lst
+%{_unitdir}/postgresql.service
+%dir /usr/libexec/initscripts/legacy-actions/postgresql
+/usr/libexec/initscripts/legacy-actions/postgresql/*
+%if %pam
+%config(noreplace) /etc/pam.d/postgresql
+%endif
+%{_bindir}/initdb
+%{_bindir}/pg_basebackup
+%{_bindir}/pg_controldata
+%{_bindir}/pg_ctl
+%{_bindir}/pg_receivexlog
+%{_bindir}/pg_resetxlog
+%{_bindir}/postgres
+%{_bindir}/postmaster
+%{_bindir}/postgresql-setup
+%{_bindir}/postgresql-check-db-dir
+%{_mandir}/man1/initdb.*
+%{_mandir}/man1/pg_basebackup.*
+%{_mandir}/man1/pg_controldata.*
+%{_mandir}/man1/pg_ctl.*
+%{_mandir}/man1/pg_receivexlog.*
+%{_mandir}/man1/pg_resetxlog.*
+%{_mandir}/man1/postgres.*
+%{_mandir}/man1/postmaster.*
+%{_datadir}/pgsql/postgres.bki
+%{_datadir}/pgsql/postgres.description
+%{_datadir}/pgsql/postgres.shdescription
+%{_datadir}/pgsql/system_views.sql
+%{_datadir}/pgsql/*.sample
+%{_datadir}/pgsql/timezonesets/
+%{_datadir}/pgsql/tsearch_data/
+%{_libdir}/pgsql/dict_snowball.so
+%{_libdir}/pgsql/plpgsql.so
+%dir %{_datadir}/pgsql
+%dir %{_datadir}/pgsql/contrib
+%dir %{_datadir}/pgsql/extension
+%{_datadir}/pgsql/extension/plpgsql*
+%{_tmpfilesdir}/postgresql.conf
+%attr(755,postgres,postgres) %dir /var/run/postgresql
+%attr(700,postgres,postgres) %dir /var/lib/pgsql
+%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
+%{_datadir}/pgsql/sql_features.txt
+
+%files devel -f devel.lst
+/usr/include/*
+%{_bindir}/ecpg
+%{_libdir}/libpq.so
+%{_libdir}/libecpg.so
+%{_libdir}/libecpg_compat.so
+%{_libdir}/libpgtypes.so
+%{_libdir}/pgsql/pgxs/
+%{_mandir}/man1/ecpg.*
+%{_mandir}/man3/SPI_*
+
+%if %upgrade
+%files upgrade
+%{_bindir}/pg_upgrade
+%{_libdir}/pgsql/pg_upgrade_support.so
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}
+%{_mandir}/man1/pg_upgrade.*
+%endif
+
+%if %plperl
+%files plperl -f plperl.lst
+%{_datadir}/pgsql/extension/plperl*
+%{_libdir}/pgsql/plperl.so
+%endif
+
+%if %pltcl
+%files pltcl -f pltcl.lst
+%{_datadir}/pgsql/extension/pltcl*
+%{_libdir}/pgsql/pltcl.so
+%{_bindir}/pltcl_delmod
+%{_bindir}/pltcl_listmod
+%{_bindir}/pltcl_loadmod
+%{_datadir}/pgsql/unknown.pltcl
+%endif
+
+%if %plpython
+%files plpython -f plpython.lst
+%{_datadir}/pgsql/extension/plpythonu*
+%{_datadir}/pgsql/extension/plpython2*
+%{_libdir}/pgsql/plpython2.so
+%endif
+
+%if %plpython3
+%files plpython3 -f plpython3.lst
+%{_datadir}/pgsql/extension/plpython3*
+%{_libdir}/pgsql/plpython3.so
+%endif
+
+%if %test
+%files test
+%defattr(-,postgres,postgres)
+%attr(-,postgres,postgres) %{_libdir}/pgsql/test/*
+%attr(-,postgres,postgres) %dir %{_libdir}/pgsql/test
+%endif
+
+%changelog
+* Wed Oct 23 2013 Jozef Mlich - 9.2.5-3
+- Resolves: #1019762
+- Diff hunk order is important in this patch
+
+* Mon Oct 21 2013 Jozef Mlich - 9.2.5-2
+- Resolves: #1019762
+- additionally fixes rpmdiff filelist problem with
+ /usr/share/doc/postgresql-9.2.5/html/bookindex.html.orig
+
+* Mon Oct 21 2013 Jozef Mlich - 9.2.5-1
+- rebase postgresql to 9.2.5 #1019762
+ http://www.postgresql.org/docs/9.2/static/release-9-2-5.html
+
+* Tue Aug 20 2013 Pavel Raiskup - 9.2.4-6
+- disable aggressive loop optimizations for old codebase (#993532)
+- upgrade: stop old server in case of permissions problem (#896161)
+
+* Mon Jul 29 2013 Pavel Raiskup - 9.2.4-5
+- %%beta implies debug everywhere (also in upgrade part of build)
+- allow `rpmbuild -bi --short-circuit`
+- upgrade: setup previous (RHEL6) version as 8.14.3
+- upgrade: start old postgres with socket file in /var/run/postgresql
+
+* Wed Jul 24 2013 Pavel Raiskup - 9.2.4-5
+- split aarch64 patch to allow build without postgresql-upgrade
+
+* Tue Jul 09 2013 Pavel Raiskup - 9.2.4-4
+- do not use -b for manual page fixes
+
+* Thu Jun 20 2013 Pavel Raiskup - 9.2.4-3
+- fix README.rpm-dist for the bug (#969050)
+- replace hard-wired path with %%{_datadir}
+
+* Thu Jun 13 2013 Pavel Raiskup - 9.2.4-3
+- add atomic operations support for aarch64 to preupgrade version also (#970661)
+- apply the forgotten man-page-day patch (#948933)
+
+* Thu Jun 13 2013 Jan Stanek - 9.2.4-3
+- added patch for manual pages (#948933)
+
+* Tue Jun 11 2013 Pavel Raiskup - 9.2.4-2
+- postgresql-setup: don't create whole path to server's data to make sure that
+ the parent directory has correct permissions (#972425)
+
+* Wed Jun 05 2013 Pavel Raiskup - 9.2.4-2
+- fix rpmlint warnings
+- fix aarch64 build by defining missing atomic operations (#970661)
+
+* Thu Apr 4 2013 Tom Lane 9.2.4-1
+- Update to PostgreSQL 9.2.4, for various fixes described at
+ http://www.postgresql.org/docs/9.2/static/release-9-2-4.html
+ including the fixes for CVE-2013-1899, CVE-2013-1900, CVE-2013-1901
+Resolves: #929223, #929255, #929328
+- fix build for aarch64 and ppc64p7
+
+* Thu Feb 7 2013 Tom Lane 9.2.3-1
+- Update to PostgreSQL 9.2.3, for various fixes described at
+ http://www.postgresql.org/docs/9.2/static/release-9-2-3.html
+ including the fix for CVE-2013-0255
+Resolves: #908722
+- Make the package build with selinux option disabled
+Resolves: #894367
+- Include old version of pg_controldata in postgresql-upgrade subpackage
+Related: #896161
+
+* Thu Jan 3 2013 Tom Lane 9.2.2-3
+- Prevent creation of TCP socket during pg_upgrade regression test, so that
+ concurrent RPM builds on the same machine won't fail
+Resolves: #891531
+- Make sure $PGDATA/pg_log/ gets the right SELinux label in postgresql-setup
+Resolves: #891547
+
+* Wed Dec 19 2012 Tom Lane 9.2.2-2
+- Make building of plpython3 dependent on Fedora version, per guidelines
+Resolves: #888419
+
+* Thu Dec 6 2012 Tom Lane 9.2.2-1
+- Update to PostgreSQL 9.2.2, for various fixes described at
+ http://www.postgresql.org/docs/9.2/static/release-9-2-2.html
+- Use new systemd install/uninstall trigger macros conditionally,
+ so that package can still be installed on pre-F18 branches
+
+* Mon Sep 24 2012 Tom Lane 9.2.1-1
+- Update to PostgreSQL 9.2.1, for various fixes described at
+ http://www.postgresql.org/docs/9.2/static/release-9-2-1.html
+ including a nasty data-loss bug
+- Adopt new systemd macros for server package install/uninstall triggers
+Resolves: #850277
+
+* Mon Sep 10 2012 Tom Lane 9.2.0-1
+- Update to PostgreSQL 9.2.0 (major version bump);
+ in-place upgrade support now works from 9.1.x as the previous version
+- Add postgresql-plpython3 subpackage with PL/Python built against Python 3
+
+* Tue Aug 28 2012 Tom Lane 9.1.5-2
+- Remove unnecessary ldconfig calls in pre/post triggers
+Resolves: #849344
+
+* Fri Aug 17 2012 Tom Lane 9.1.5-1
+- Update to PostgreSQL 9.1.5, for various fixes described at
+ http://www.postgresql.org/docs/9.1/static/release-9-1-5.html
+ including the fixes for CVE-2012-3488, CVE-2012-3489
+
+* Mon Aug 13 2012 Tom Lane 9.1.4-5
+- Back-port upstream support for postmaster listening on multiple Unix sockets
+- Configure postmaster to create sockets in both /var/run/postgresql and /tmp;
+ the former is now the default place for libpq to contact the postmaster.
+Resolves: #825448
+- Annotate postgresql.conf about not setting port number there
+- Minor specfile cleanup per suggestions from Tom Callaway
+Related: #845110
+
+* Sat Jul 21 2012 Fedora Release Engineering - 9.1.4-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Sat Jul 14 2012 Tom Lane 9.1.4-3
+- Update code to use oom_score_adj not oom_adj, thereby suppressing
+ whining in the kernel log
+- Add "legacy action" scripts to support "service postgresql initdb" and
+ "service postgresql upgrade" in a now-approved fashion (requires a
+ recent version of initscripts to work)
+Resolves: #800416
+
+* Mon Jun 11 2012 Petr Pisar - 9.1.4-2
+- Perl 5.16 rebuild
+
+* Mon Jun 4 2012 Tom Lane 9.1.4-1
+- Update to PostgreSQL 9.1.4, for various fixes described at
+ http://www.postgresql.org/docs/9.1/static/release-9-1-4.html
+ including the fixes for CVE-2012-2143, CVE-2012-2655
+Resolves: #826606
+- Update previous version (embedded in postgresql-upgrade) to 9.0.8
+ because fix in whole-row variable dumping could be needed for upgrades
+- Revert fix for bug #800416, per fedora-packaging discussion at
+ http://lists.fedoraproject.org/pipermail/packaging/2012-April/008314.html
+ "service postgresql initdb" is dead and will stay that way
+
+* Sat Mar 17 2012 Tom Lane 9.1.3-3
+- Fix postgresql-setup to rely on systemd to parse the unit file, instead
+ of using ad-hoc code
+Resolves: #804290
+
+* Tue Mar 13 2012 Tom Lane 9.1.3-2
+- Fix postgresql-setup to look for unit file in /usr/lib and to ignore
+ comments therein
+Resolves: #802835
+- Resurrect a now-mostly-dummy postgresql init script, so that people can
+ keep on using "service postgresql initdb" if they wish
+Resolves: #800416
+
+* Mon Feb 27 2012 Tom Lane 9.1.3-1
+- Update to PostgreSQL 9.1.3, for various fixes described at
+ http://www.postgresql.org/docs/9.1/static/release-9-1-3.html
+ including the fixes for CVE-2012-0866, CVE-2012-0867, CVE-2012-0868
+Resolves: #797918
+
+* Mon Jan 9 2012 Tom Lane 9.1.2-2
+- Make systemd unit file more user-friendly by resurrecting the old init
+ script's checks for data directory presence and version match
+Resolves: #771496
+
+* Mon Dec 5 2011 Tom Lane 9.1.2-1
+- Update to PostgreSQL 9.1.2, for various fixes described at
+ http://www.postgresql.org/docs/9.1/static/release-9-1-2.html
+
+* Wed Nov 02 2011 Honza Horak 9.1.1-2
+- Create a symlink of pg_regress instead of full copy;
+ Don't strip symbols from regress libs
+Related: #729012
+
+* Mon Sep 26 2011 Tom Lane 9.1.1-1
+- Update to PostgreSQL 9.1.1, for various fixes described at
+ http://www.postgresql.org/docs/9.1/static/release-9-1-1.html
+- Enable build (but not test) of contrib/sepgsql
+- Clean up specfile build options so that turning options off works again
+
+* Mon Sep 12 2011 Tom Lane 9.1.0-1
+- Update to PostgreSQL 9.1.0 (major version bump);
+ in-place upgrade support now works from 9.0.x as the previous version
+
+* Wed Jul 27 2011 Tom Lane 9.0.4-8
+- Convert to systemd startup support
+Resolves: #696427
+
+* Thu Jul 21 2011 Petr Sabata - 9.0.4-7
+- Perl mass rebuild
+
+* Wed Jul 20 2011 Petr Sabata - 9.0.4-6
+- Perl mass rebuild
+
+* Wed Jul 6 2011 Tom Lane 9.0.4-5
+- Remove erroneously-included Default-Start line from LSB init block
+Related: #717024
+
+* Fri Jun 17 2011 Marcela Mašláňová 9.0.4-4
+- Perl mass rebuild
+- incorporate upstream patch to make it build with Perl 5.14
+
+* Fri Jun 10 2011 Tom Lane 9.0.4-3
+- Work around gcc 4.6.0 bug (temporary backport from next upstream release)
+
+* Tue May 10 2011 Tom Lane 9.0.4-2
+- Add LSB init block to initscript, to ensure sane ordering at system boot
+Resolves: #703215
+
+* Mon Apr 18 2011 Tom Lane 9.0.4-1
+- Update to PostgreSQL 9.0.4, for various fixes described at
+ http://www.postgresql.org/docs/9.0/static/release-9-0-4.html
+- Add %%{?_isa} to cross-subpackage Requires, per latest packaging guidelines
+
+* Wed Feb 09 2011 Fedora Release Engineering - 9.0.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Thu Feb 3 2011 Tom Lane 9.0.3-2
+- Remove filter-requires-perl-Pg.sh, which doesn't seem to be needed now that
+ PyGreSQL has been split out; and our use of it isn't compatible with rpm 4.9
+ anyway
+
+* Tue Feb 1 2011 Tom Lane 9.0.3-1
+- Update to PostgreSQL 9.0.3, for various fixes described at
+ http://www.postgresql.org/docs/9.0/static/release-9-0-3.html
+ including the fix for CVE-2010-4015
+Resolves: #674296
+
+* Tue Dec 28 2010 Tom Lane 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 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
+- Ensure we don't package any .gitignore files from the source tarball
+Related: #642210
+
+* Tue Oct 5 2010 Tom Lane 8.4.5-1
+- Update to PostgreSQL 8.4.5, for various fixes described at
+ http://www.postgresql.org/docs/8.4/static/release-8-4-5.html
+ including the fix for CVE-2010-3433
+Related: #639371
+- Add -p "$pidfile" to initscript's status call to improve corner cases.
+Related: #561010
+
+* Sat Jul 31 2010 Orcan Ogetbil - 8.4.4-3
+- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
+- Duplicate COPYRIGHT in -libs subpackage, per revised packaging guidelines
+
+* Wed Jun 02 2010 Marcela Maslanova - 8.4.4-2
+- Mass rebuild with perl-5.12.0
+
+* Mon May 17 2010 Tom Lane 8.4.4-1
+- Update to PostgreSQL 8.4.4, for various fixes described at
+ http://www.postgresql.org/docs/8.4/static/release-8-4-4.html
+ including fixes for CVE-2010-1169 and CVE-2010-1170
+Resolves: #593032
+
+* Sun Mar 14 2010 Tom Lane 8.4.3-1
+- Update to PostgreSQL 8.4.3, for various fixes described at
+ http://www.postgresql.org/docs/8.4/static/release-8-4-3.html
+
+* Mon Feb 22 2010 Tom Lane 8.4.2-8
+- Bring init script into some modicum of compliance with Fedora/LSB standards
+Resolves: #201043
+
+* Thu Feb 18 2010 Tom "spot" Callaway 8.4.2-7
+- adjust license tag to reflect OSI decision
+
+* Tue Jan 26 2010 Tom Lane 8.4.2-6
+- Emit explicit error message if user tries to build RPM as root
+Related: #558921
+
+* Wed Jan 20 2010 Tom Lane 8.4.2-5
+- Latest version of systemtap needs the probes.o file to be built again
+Resolves: #557266
+- Provide script and instructions for building the documentation PDF
+
+* Mon Jan 11 2010 Tom Lane 8.4.2-4
+- Arrange for the postmaster, but not any of its child processes, to be run
+ with oom_adj -17. This compensates for the OOM killer not being smart about
+ accounting for shared memory usage.
+
+* Sat Jan 9 2010 Tom Lane 8.4.2-3
+- Remove the postgresql-python and postgresql-tcl subpackages. These files
+ are now broken out as their own packages (PyGreSQL and tcl-pgtcl,
+ respectively), to reflect the now longstanding split of upstream projects.
+Related: #452306, #452321
+
+* Tue Jan 5 2010 Tom Lane 8.4.2-2
+- Remove static libraries (.a files) from package, per packaging guidelines
+- Change %%define to %%global, per packaging guidelines
+
+* Wed Dec 16 2009 Tom Lane 8.4.2-1
+- Update to PostgreSQL 8.4.2, for various fixes described at
+ http://www.postgresql.org/docs/8.4/static/release-8-4-2.html
+ including two security issues
+Related: #546321
+Related: #547662
+- Use -N not the obsolete -n in useradd call
+Resolves: #495727
+- Clean up specfile to eliminate rpmlint gripes, mainly by removing
+ no-longer-needed provisions for superseding rh-postgresql
+
+* Mon Dec 7 2009 Stepan Kasal - 8.4.1-5
+- rebuild against perl 5.10.1
+
+* Thu Oct 15 2009 Tom Lane 8.4.1-4
+- add sparc/sparc64 to multilib header support
+
+* Mon Sep 21 2009 Tom Lane 8.4.1-3
+- Ensure pgstartup.log gets the right ownership/permissions during initdb
+Resolves: #498959
+
+* Wed Sep 16 2009 Tomas Mraz - 8.4.1-2
+- Use password-auth common PAM configuration instead of system-auth
+
+* Wed Sep 9 2009 Tom Lane 8.4.1-1
+- Update to PostgreSQL 8.4.1, for various fixes described at
+ http://www.postgresql.org/docs/8.4/static/release-8-4-1.html
+ including two security issues
+Related: #522085
+Related: #522092
+
+* Tue Sep 01 2009 Karsten Hopp 8.4.0-3.2
+- bump release and build again with the correct libssl
+
+* Tue Sep 01 2009 Karsten Hopp 8.4.0-3.1
+- disable dtrace on s390x as a workaround until #520469 has been fixed
+
+* Fri Aug 21 2009 Tomas Mraz - 8.4.0-3
+- rebuilt with new openssl
+
+* Thu Aug 20 2009 Tom "spot" Callaway 8.4.0-2
+- update License tag to MIT (PostgreSQL calls it "BSD", but it is MIT)
+- Note: This changes nothing from a license compatibility perspective.
+
+* Mon Aug 17 2009 Tom Lane 8.4.0-1
+- Update to PostgreSQL 8.4.0. See release notes at
+ http://www.postgresql.org/docs/8.4/static/release-8-4.html
+
+* Sun Jul 26 2009 Fedora Release Engineering - 8.3.7-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Sat Mar 21 2009 Tom Lane 8.3.7-1
+- Update to PostgreSQL 8.3.7, for various fixes described at
+ http://www.postgresql.org/docs/8.3/static/release-8-3-7.html
+ notably the fix for CVE-2009-0922
+
+* Tue Mar 10 2009 Tom Lane 8.3.6-4
+- Prevent dependent packages from needing to include sys/sdt.h
+ (unintended side effect of previous patch)
+- Use -O1 on alpha, per report from Oliver Falk; -O2 tickles gcc bugs
+
+* Sun Mar 8 2009 Tom Lane 8.3.6-3
+- Enable tracing via systemtap
+Resolves: #488941
+
+* Thu Feb 26 2009 Fedora Release Engineering - 8.3.6-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Sat Feb 7 2009 Tom Lane 8.3.6-1
+- Update to PostgreSQL 8.3.6, for various fixes described at
+ http://www.postgresql.org/docs/8.3/static/release-8-3-6.html
+
+* Wed Jan 21 2009 Dennis Gilmore 8.3.5-4
+- use -O1 on sparc64
+
+* Sat Jan 17 2009 Tomas Mraz - 8.3.5-3
+- rebuild with new openssl
+
+* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 8.3.5-2
+- Rebuild for Python 2.6
+
+* Sun Nov 2 2008 Tom Lane 8.3.5-1
+- Update to PostgreSQL 8.3.5.
+- Improve display from init script's initdb action, per Michael Schwendt
+
+* Thu Sep 25 2008 Tom Lane 8.3.4-1
+- Update to PostgreSQL 8.3.4.
+
+* Mon Jul 28 2008 Tom Lane 8.3.3-3
+- Fix build failure caused by new default patch fuzz = 0 policy in rawhide.
+
+* Fri Jun 20 2008 Tom Lane 8.3.3-2
+- Install Pgtcl in /usr/lib/tcl$TCL_VERSION, not directly in /usr/lib.
+ Needed because tcl 8.5 no longer puts /usr/lib into its package search path.
+ NOTE: do not back-port this change into branches using pre-8.5 tcl, because
+ /usr/lib/tcl8.4 had been a symlink to /usr/share/tcl8.4, and /usr/share
+ is exactly where we must not put Pgtcl.
+Resolves: #228263
+
+* Wed Jun 11 2008 Tom Lane 8.3.3-1
+- Update to PostgreSQL 8.3.3.
+- Remove postgresql-prefer-ncurses.patch, no longer needed in recent
+ Fedora releases because libtermcap is gone.
+
+* Sat May 17 2008 Tom Lane 8.3.1-5
+- rebuild because of buildsystem hiccup
+
+* Sat May 17 2008 Tom Lane 8.3.1-4
+- Enable LDAP support
+Resolves: #445315
+- Use -Wl,--as-needed to suppress bogus dependencies for libraries that
+ are really only needed by some of the subpackages
+
+* Mon Apr 28 2008 Tom Lane 8.3.1-3
+- Fix build breakage on PPC due to incorrect configure test
+Related: #444317
+
+* Sat Apr 26 2008 Tom Lane 8.3.1-2
+- Clean up cross-subpackage Requires: to ensure that updating any one
+ subpackage brings in the matching versions of others.
+Resolves: #444271
+
+* Tue Mar 25 2008 Tom Lane 8.3.1-1
+- Update to PostgreSQL 8.3.1.
+
+* Tue Mar 18 2008 Tom "spot" Callaway 8.3.0-3
+- add Requires for versioned perl (libperl.so)
+
+* Wed Feb 6 2008 Tom Lane 8.3.0-2
+- Enable the new GSSAPI support in 8.3.0.
+
+* Mon Feb 4 2008 Tom Lane 8.3.0-1
+- Update to PostgreSQL 8.3.0.
+
+* Fri Jan 18 2008 Tom Lane 8.3RC2-1
+- Update to PostgreSQL 8.3RC2 (not waiting for 8.3.0 because Fedora 9 alpha
+ should be 8.3-based not 8.2-based).
+- Update to pgtcl 1.6.2
+
+* Mon Jan 7 2008 Tom Lane 8.2.6-1
+- Update to PostgreSQL 8.2.6 to fix CVE-2007-4769, CVE-2007-4772,
+ CVE-2007-6067, CVE-2007-6600, CVE-2007-6601
+- Make initscript and pam config files be installed unconditionally;
+ seems new buildroots don't necessarily have those directories in place
+
+* Wed Dec 5 2007 Tom Lane 8.2.5-2
+- Rebuild for new openssl
+
+* Thu Sep 20 2007 Tom Lane 8.2.5-1
+- Update to PostgreSQL 8.2.5 and pgtcl 1.6.0
+
+* Tue Sep 4 2007 Tom Lane 8.2.4-6
+- Fix multilib problem for /usr/include/ecpg_config.h (which is new in 8.2.x)
+
+* Sat Aug 25 2007 Tom Lane 8.2.4-5
+- Use nicer solution for tzdata file substitution: upstream discussion
+ concluded that hardwiring the path was better than a symlink after all.
+
+* Wed Aug 22 2007 Tom Lane 8.2.4-4
+- Use tzdata package's data files instead of private copy, so that
+ postgresql-server need not be turned for routine timezone updates
+- Don't remove postgres user/group during RPM uninstall, per Fedora
+ packaging guidelines
+- Seems we need an explicit BuildRequires on gawk now
+- Rebuild to fix Fedora toolchain issues
+
+* Sun Aug 12 2007 Tom Lane 8.2.4-3
+- Recent perl changes in rawhide mean we need a more specific BuildRequires
+
+* Wed Jun 20 2007 Tom Lane 8.2.4-2
+- Fix oversight in postgresql-test makefile: pg_regress isn't a shell script
+ anymore. Per upstream bug 3398.
+
+* Tue Apr 24 2007 Tom Lane 8.2.4-1
+- Update to PostgreSQL 8.2.4 for CVE-2007-2138, data loss bugs
+Resolves: #237682
+
+* Wed Feb 14 2007 Karsten Hopp 8.2.3-2
+- rebuild with tcl-8.4
+
+* Wed Feb 7 2007 Tom Lane 8.2.3-1
+- Update to PostgreSQL 8.2.3 due to regression induced by security fix
+Resolves: #227522
+
+* Sun Feb 4 2007 Tom Lane 8.2.2-1
+- Update to PostgreSQL 8.2.2 to fix CVE-2007-0555, CVE-2007-0556
+Related: #225496
+
+* Fri Jan 12 2007 Tom Lane 8.2.1-2
+- Split -pl subpackage into three new packages to reduce dependencies
+ and track upstream project's packaging.
+
+* Wed Jan 10 2007 Tom Lane 8.2.1-1
+- Update to PostgreSQL 8.2.1
+- Update to pgtcl 1.5.3
+- Be sure we link to libncurses, not libtermcap which is disappearing in Fedora
+
+* Thu Dec 7 2006 Jeremy Katz - 8.2.0-2
+- rebuild for python 2.5
+
+* Mon Dec 4 2006 Tom Lane 8.2.0-1
+- Update to PostgreSQL 8.2.0
+- Update to PyGreSQL 3.8.1
+- Fix chcon arguments in test/regress/Makefile
+Related: #201035
+- Adjust init script to not fool /etc/rc.d/rc
+Resolves: #161470
+- Change init script to not do initdb automatically, but require
+ manual "service postgresql initdb" for safety. Per upstream discussions.
+
+* Wed Jul 12 2006 Jesse Keating - 8.1.4-1.1
+- rebuild
+
+* Mon May 22 2006 Tom Lane 8.1.4-1
+- Update to PostgreSQL 8.1.4 (includes fixes for CVE-2006-2313, CVE-2006-2314;
+ see bug #192173)
+- Update to PyGreSQL 3.8
+- Suppress noise from chcon, per bug #187744
+
+* Mon Mar 27 2006 Tom Lane 8.1.3-2
+- Remove JDBC from this build; we will package it as separate SRPM
+
+* Mon Feb 13 2006 Jesse Keating - 8.1.3-1.1
+- rebump for build order issues during double-long bump
+
+* Mon Feb 13 2006 Tom Lane 8.1.3-1
+- Update to PostgreSQL 8.1.3 (fixes bug #180617, CVE-2006-0553)
+- Update to jdbc driver build 405
+- Modify multilib header hack to not break non-RH arches, per bug #177564
+
+* Tue Feb 07 2006 Jesse Keating - 8.1.2-1.1
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Mon Jan 9 2006 Tom Lane 8.1.2-1
+- Update to PostgreSQL 8.1.2
+- Repair extraneous quote in pgtcl configure script ... odd that bash
+ didn't use to spit up on this.
+
+* Thu Dec 15 2005 Tom Lane 8.1.1-3
+- fix pg_config.h for 64-bit and ppc platforms
+- update Makefile.regress (needs to --load-language=plpgsql)
+
+* Wed Dec 14 2005 Tom Lane 8.1.1-2
+- oops, looks like we want uname -i not uname -m
+
+* Wed Dec 14 2005 Tom Lane 8.1.1-1
+- Update to PostgreSQL 8.1.1
+- Make pg_config.h architecture-independent for multilib installs;
+ put the original pg_config.h into pg_config_$ARCH.h
+
+* Fri Dec 09 2005 Jesse Keating
+- rebuilt
+
+* Sat Nov 12 2005 Tom Lane 8.1.0-4
+- Update included PDF-format manual to 8.1.
+
+* Wed Nov 9 2005 Tom Lane 8.1.0-3
+- Rebuild due to openssl library update.
+
+* Wed Nov 9 2005 Tom Lane 8.1.0-2
+- Rebuild due to openssl library update.
+
+* Mon Nov 7 2005 Tom Lane 8.1.0-1
+- Update to PostgreSQL 8.1.0, PyGreSQL 3.7, and jdbc driver build 404
+- Fix PAM config file (must have account not only auth) (bug #167040)
+- Add BuildPrereq: libxslt-devel (bug #170141)
+- Sync with PGDG SRPM as much as feasible
+
+* Fri Oct 14 2005 Tomas Mraz
+- use include instead of pam_stack in pam config
+
+* Tue Oct 4 2005 Tom Lane 8.0.4-2
+- Add rpath to plperl.so (bug #162198)
+
+* Tue Oct 4 2005 Tom Lane 8.0.4-1
+- Update to PostgreSQL 8.0.4, PyGreSQL 3.6.2, and jdbc driver build 312
+- Adjust pgtcl link command to ensure it binds to correct libpq (bug #166665)
+- Remove obsolete Conflicts: against other python versions (bug #166754)
+- Add /etc/pam.d/postgresql (bug #167040)
+- Include contrib/xml2 in build (bug #167492)
+
+* Tue May 10 2005 Tom Lane 8.0.3-1
+- Update to PostgreSQL 8.0.3 (includes security and data-loss fixes; see
+ bz#156727, CAN-2005-1409, CAN-2005-1410)
+- Update to jdbc driver build 311
+- Recreate postgres user after superseding an rh-postgresql install (bug #151911)
+- Ensure postgresql server is restarted if running during an upgrade
+
+* Thu Apr 14 2005 Florian La Roche 8.0.2-2
+- rebuild for postgresql-tcl
+
+* Tue Apr 12 2005 Tom Lane 8.0.2-1
+- Update to PostgreSQL 8.0.2.
+
+* Fri Mar 11 2005 Tom Lane 8.0.1-5
+- Remove unwanted rpath specification from pgtcl (bz#150649)
+
+* Wed Mar 2 2005 Tom Lane 8.0.1-4
+- Attach Obsoletes: declarations for rh-postgresql to subpackages (bz#144435)
+- Make Requires: and Prereq: package linkages specify release not only
+ version, as per recent mailing list discussion.
+
+* Tue Mar 1 2005 Tomas Mraz 8.0.1-3
+- rebuild with openssl-0.9.7e
+
+* Mon Feb 21 2005 Tom Lane 8.0.1-2
+- Repair improper error message in init script when PGVERSION doesn't match.
+- Arrange for auto update of version embedded in init script.
+
+* Sun Jan 30 2005 Tom Lane 8.0.1-1
+- Update to PostgreSQL 8.0.1.
+- Add versionless symlinks to jar files (bz#145744)
+
+* Wed Jan 19 2005 Tom Lane 8.0.0-1
+- Update to PostgreSQL 8.0.0, PyGreSQL 3.6.1, pgtcl 1.5.2,
+ and jdbc driver build 309.
+- Extensive cleanout of obsolete cruft in patch set.
+- Regression tests are run during RPM build (NOTE: cannot build as root when
+ this is enabled).
+- Postmaster stderr goes someplace useful, not /dev/null (bz#76503, #103767)
+- Make init script return a useful exit status (bz#80782)
+- Move docs' tutorial directory to %%{_libdir}/pgsql/tutorial, since it
+ includes .so files that surely do not belong under /usr/share.
+- Remove useless .sgml files from docs RPM (bz#134450)
+- Put regression tests under /usr/lib64 on 64-bit archs, since .so files
+ are not architecture-independent.
+
+* Wed Jan 12 2005 Tim Waugh 7.4.6-5
+- Rebuilt for new readline.
+
+* Tue Jan 11 2005 Dan Walsh 7.4.6-4
+- Add restorecon to postgresql.init in order to restore database to correct
+- SELinux context.
+
+* Thu Dec 16 2004 Tom Lane 7.4.6-3
+- Update to PyGreSQL 3.6 (to fix bug #142711)
+- Adjust a few file permissions (bug #142431)
+- Assign %%{_libdir}/pgsql to base package instead of -server (bug #74003)
+
+* Mon Nov 15 2004 Tom Lane 7.4.6-2
+- Rebuild so python components play with python 2.4 (bug 139160)
+
+* Sat Oct 23 2004 Tom Lane 7.4.6-1
+- Update to PostgreSQL 7.4.6 (bugs 136947, 136949)
+- Make init script more paranoid about mkdir step of initializing a new
+ database (bugs 136947, 136949)
+
+* Wed Oct 20 2004 Tom Lane 7.4.5-4
+- Remove contrib/oidjoins stuff from installed fileset; it's of no use
+ to ordinary users and has a security issue (bugs 136300, 136301)
+- adjust chkconfig priority (bug 128852)
+
+* Tue Oct 05 2004 Tom Lane 7.4.5-3
+- Solve the stale lockfile problem (bugs 71295, 96981, 134090)
+- Use runuser instead of su for SELinux (bug 134588)
+
+* Mon Aug 30 2004 Tom Lane 7.4.5-2
+- Update to PyGreSQL 3.5.
+
+* Tue Aug 24 2004 Tom Lane 7.4.5-1
+- Update to PostgreSQL 7.4.5.
+- Update JDBC jars to driver build 215.
+- Add Obsoletes: entries for rh-postgresql packages, per bug 129278.
+
+* Sat Jul 10 2004 Tom Lane 7.4.3-3
+- Undo ill-considered chkconfig change that causes server to start
+ immediately upon install. Mea culpa (bug 127552).
+
+* Sat Jul 03 2004 Tom Lane 7.4.3-2
+- Update JDBC jars to driver build 214.
+
+* Wed Jun 23 2004 Tom Lane 7.4.3-1
+- Update to PostgreSQL 7.4.3.
+- Uninstalling server RPM stops postmaster first, per bug 114846.
+- Fix su commands to not assume PG user's shell is sh-like, per bug 124024.
+- Fix permissions on postgresql-python doc files, per bug 124822.
+- Minor postgresql.init improvements.
+
+* Tue Jun 15 2004 Elliot Lee
+- rebuilt
+
+* Wed Mar 10 2004 Tom Lane 7.4.2-1
+- Update to PostgreSQL 7.4.2; sync with community SRPM as much as possible.
+- Support PGOPTS from /etc/sysconfig/pgsql, per bug 111504.
+- Fix permissions on /etc/sysconfig/pgsql, per bug 115278.
+- SELinux patch in init file: always su
+- rebuilt
+
+* Wed Feb 25 2004 Tom Lane
+- Update to PostgreSQL 7.4.1.
+- Rebuilt
+
+* Tue Feb 24 2004 Tom Lane
+- Fix chown syntax in postgresql.init also.
+- Rebuilt
+
+* Mon Feb 23 2004 Tim Waugh
+- Use ':' instead of '.' as separator for chown.
+
+* Fri Feb 13 2004 Elliot Lee
+- rebuilt
+
+* Fri Jan 9 2004 Lamar Owen
+- 7.4.1-1PGDG
+- Merge Sander Steffann's changes up to 7.4-0.5PGDG
+- Proper 7.4.1 JDBC jars this time.
+- Patch for no pl/python from Alvaro
+
+* Fri Dec 05 2003 David Jee 7.4-5
+- Rebuild for Perl 5.8.2.
+
+* Mon Dec 01 2003 David Jee 7.4-4
+- Add PyGreSQL patch for deprecated column pg_type.typprtlen [Bug #111263]
+- Add headers patch which moves ecpg headers to /usr/include/ecpg
+ [Bug #111195]
+
+* Fri Nov 28 2003 David Jee 7.4-3
+- uncomment buildrequires tcl-devel
+
+* Fri Nov 28 2003 David Jee 7.4-2
+- rebuild
+
+* Mon Nov 24 2003 David Jee 7.4-1
+- initial Red Hat build
+- move jars to /usr/share/java
+- fix rpm-multilib patch to use sysconfig
+
+* Fri Nov 21 2003 Lamar Owen
+- 7.4-0.1PGDG
+- Development JDBC jars in addition to the 7.3 jars; will replace the
+- 7.3 jars once 7.4 official jars are released.
+- Changed to use the bzip2 source to save a little size.
+- Removed some commented out portions of the specfile.
+- Removed the 7.3.4 PDF docs. Will replace with 7.4 PDF's once they
+- are ready.
+
+* Tue Nov 18 2003 Kaj J. Niemi 7.4-0.1
+- 7.4
+- Fixed Patch #1 (now rpm-pgsql-7.4.patch)
+- Fixed Patch #2 (now rpm-multilib-7.4.patch):
+- Patch #4 is unnecessary (upstream)
+- Fixed Patch #6 (now postgresql-7.4-src-tutorial.patch)
+- Added Patch #8 (postgresql-7.4-com_err.patch) as com_err()
+ is provided by e2fsprogs and CPPFLAGS gets lost somewhere
+ inside configure (bad macro?)
+- No 7.4 PDF docs available yet (Source #17)
+- PyGreSQL is separated from the upstream distribution but
+ we include it as usual (Source #18)
+- Default to compiling libpq and ECPG as fully thread-safe
+
+- 7.4 Origin. See previous spec files for previous history. Adapted
+- from Red Hat and PGDG's 7.3.4 RPM, directly descended from
+- postgresql-7.3.4-2 as shipped in Fedora Core 1.
|