# TODO:
# - python 3 and python 2 subpackages?
# - consider dns_sd/Bonjour support (--with-bonjour)
+# - --enable-dtrace (is it systemtap-compatible?)
# - think about pg_upgrade integration (sysconfig variable to allow upgrade from 8.3+ without dump/restore?)
# create postgresqlM.N packages with parts of old pgsql required by pg_upgrade
# - test init script (db initialization)
#
%define beta %{nil}
-%define mver 9.2
+%define mver 9.4
Summary: PostgreSQL Data Base Management System
Summary(de.UTF-8): PostgreSQL Datenbankverwaltungssystem
Summary(uk.UTF-8): PostgreSQL - система керування базами даних
Summary(zh_CN.UTF-8): PostgreSQL 客户端程序和库文件
Name: postgresql
-Version: %{mver}.2
+Version: %{mver}.4
Release: 1
License: BSD
Group: Applications/Databases
Source0: ftp://ftp.postgresql.org/pub/source/v%{version}/%{name}-%{version}.tar.bz2
-# Source0-md5: 1cc388988e69bf75c6b55d59070100f6
+# Source0-md5: 1fe952c44ed26d7e6a335cf991a9c1c6
Source1: %{name}.init
Source2: pgsql-Database-HOWTO-html.tar.gz
# Source2-md5: 5b656ddf1db41965761f85204a14398e
Source3: %{name}.sysconfig
-Source5: %{name}.upstart
-Source6: %{name}-instance.upstart
+Source4: %{name}@.service
+Source5: %{name}.service
+Source6: %{name}.target
Patch0: %{name}-conf.patch
Patch1: %{name}-absolute_dbpaths.patch
Patch2: %{name}-ecpg-includedir.patch
Patch3: %{name}-ac_version.patch
Patch4: %{name}-disable_horology_test.patch
Patch5: %{name}-heimdal.patch
+Patch6: %{name}-ossp_uuid.patch
URL: http://www.postgresql.org/
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: docbook-dtd42-xml
BuildRequires: docbook-style-xsl
BuildRequires: flex >= 2.5.31
-BuildRequires: gettext-devel
+BuildRequires: gettext-tools
+BuildRequires: gnome-doc-tools
%{?with_kerberos5:BuildRequires: heimdal-devel}
-%{?with_selinux:BuildRequires: libselinux-devel >= 2.0.99}
+%{?with_selinux:BuildRequires: libselinux-devel >= 2.1.10}
BuildRequires: libtool
-BuildRequires: libxml2-devel >= 2.6.23
+BuildRequires: libxml2-devel >= 1:2.6.23
BuildRequires: libxslt-devel
BuildRequires: libxslt-progs
BuildRequires: ncurses-devel >= 5.0
BuildRequires: python-modules >= 1:2.3
%endif
BuildRequires: readline-devel >= 4.2
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: rpmbuild(macros) >= 1.671
%{?with_tcl:BuildRequires: tcl-devel >= 8.4.3}
%{?with_tests:BuildRequires: tzdata}
BuildRequires: zlib-devel
Requires(pre): /usr/sbin/useradd
Requires(triggerpostun): /bin/id
Requires(triggerpostun): /usr/sbin/usermod
-Requires: %{name}-clients = %{version}-%{release}
+Requires: %{name}-clients >= %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: rc-scripts >= 0.4.3.0
+Requires: systemd-units >= 38
Requires: tzdata
Obsoletes: postgresql-module-plpgsql
Obsoletes: postgresql-module-tsearch2
%define _ulibdir /usr/lib
# omitted contribs:
-# dummy_seclabel, pg_test_fsync, spi and test_parser - examples/tests
+# dummy_seclabel, pg_test_fsync, pg_test_timing, spi, test_parser, worker_spi - examples/tests
# tsearch2 - old module for compatibility only
-%define contrib_modules adminpack auth_delay auto_explain btree_gin btree_gist chkpass citext cube dblink dict_int dict_xsyn earthdistance file_fdw fuzzystrmatch hstore intagg intarray isn lo ltree oid2name pageinspect passwordcheck pg_archivecleanup pg_buffercache pg_freespacemap pg_standby pg_stat_statements pg_trgm pg_upgrade pg_upgrade_support pgbench pgcrypto pgrowlocks pgstattuple seg %{?with_selinux:sepgsql} sslinfo tablefunc unaccent uuid-ossp vacuumlo xml2
+%define contrib_modules adminpack auth_delay auto_explain btree_gin btree_gist chkpass citext cube dblink dict_int dict_xsyn earthdistance file_fdw fuzzystrmatch hstore intagg intarray isn lo ltree oid2name pageinspect passwordcheck pg_archivecleanup pg_buffercache pg_freespacemap pg_prewarm pg_standby pg_stat_statements pg_trgm pg_upgrade pg_upgrade_support pg_xlogdump pgbench pgcrypto pgrowlocks pgstattuple postgres_fdw seg %{?with_selinux:sepgsql} sslinfo tablefunc tcn unaccent uuid-ossp vacuumlo xml2
%description
PostgreSQL Data Base Management System (formerly known as Postgres,
PostgreSQL працює на Solaris, SunOS, HPUX, AIX, Linux, Irix, FreeBSD
та більшості інших різновидів Unix.
-%package upstart
-Summary: Upstart job description for PostgreSQL server
-Summary(pl.UTF-8): Opis zadania Upstart dla serwera PostgreSQL
-Group: Daemons
-Requires: %{name} = %{version}-%{release}
-Requires: upstart >= 0.6
-Conflicts: syslog-ng < 3.2.4-1
-
-%description upstart
-Upstart job description for PostgreSQL.
-
-%description upstart -l pl.UTF-8
-Opis zadania Upstart dla PostgreSQL.
-
%package devel
Summary: PostgreSQL development header files and libraries
Summary(de.UTF-8): PostgreSQL-Entwicklungs-Header-Dateien und Libraries
Summary(pl.UTF-8): Zewnętrzny moduł bezpieczeństwa PostgreSQL-a wykorzystujący SELinuksa
Group: Applications/Databases
Requires: %{name} = %{version}-%{release}
-Requires: libselinux >= 2.0.99
+Requires: libselinux >= 2.1.10
%description module-sepgsql
PostgreSQL external security provider using SELinux.
Summary(pl.UTF-8): Funkcje do obsługi XML-a dla PostgreSQL-a
Group: Applications/Databases
Requires: %{name} = %{version}-%{release}
+Requires: libxml2 >= 1:2.6.23
%description module-xml2
Module with XML functions provides both XPath querying and XSLT
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
# force rebuild of bison/flex files
find src -name \*.l -o -name \*.y | xargs touch
%build
%{__aclocal} -I config
%{__autoconf}
+%{__autoheader}
%configure \
CFLAGS="%{rpmcflags} -DNEED_REENTRANT_FUNCS `uuid-config --cflags`" \
--disable-rpath \
--enable-nls \
--enable-thread-safety \
%{?with_kerberos5:--with-gssapi} \
- %{?with_kerberos5:--with-krb5} \
%{?with_ldap:--with-ldap} \
--with-openssl \
--with-pam \
%{?with_python:--with-python} \
%{?with_selinux:--with-selinux} \
%{?with_tcl:--with-tcl --with-tclconfig=%{_ulibdir}} \
- --with-ossp-uuid \
+ --with-uuid=ossp
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{rc.d/init.d,sysconfig,init/%{name}}} \
+install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{rc.d/init.d,sysconfig}} \
$RPM_BUILD_ROOT{/var/{lib/pgsql,log},%{_pgsqldir}} \
$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
$RPM_BUILD_ROOT%{_mandir} \
+ $RPM_BUILD_ROOT{%{systemdunitdir},/etc/systemd/system/%{name}.target.requires} \
$RPM_BUILD_ROOT/home/services/postgres
install src/tutorial/*.sql $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql
install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/postgresql
-install %{SOURCE5} $RPM_BUILD_ROOT/etc/init/%{name}.conf
-install %{SOURCE6} $RPM_BUILD_ROOT/etc/init/%{name}/instance.conf
+install %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}@.service
+install %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.service
+install %{SOURCE6} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.target
install -d howto
tar zxf %{SOURCE2} -C howto
install src/pl/plperl/ppport.h $RPM_BUILD_ROOT%{_includedir}/postgresql/server/
+# unpackaged contribs
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{pg_test_fsync,pg_test_timing}.1
+
# package it...? nah, why bother.
%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/doc/postgresql/html
foundold=0
for pgdir in $PG_DB_CLUSTERS; do
if [ -f $pgdir/PG_VERSION ]; then
- if [ $(cat $pgdir/PG_VERSION) != '9.2' ]; then
+ if [ $(cat $pgdir/PG_VERSION) != '9.3' ]; then
echo "Found database(s) in older, incompatible format in cluster $pgdir."
foundold=1
fi
%post
/sbin/chkconfig --add postgresql
%service postgresql restart "postgresql server"
+if [ "$1" -eq "1" ]; then
+ PG_DB_CLUSTERS=""
+ [ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql
+ export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
+ for pgdir in $PG_DB_CLUSTERS; do
+ instance="$(echo "$pgdir" | sed -e 's/^\///;s/-/\\x2d/g;s/@/\\x40/g;s/\//-/g')"
+ /bin/systemctl --quiet enable "postgresql@$instance.service" || :
+ done
+fi
+%systemd_post postgresql.service
%preun
if [ "$1" = "0" ]; then
%service postgresql stop
/sbin/chkconfig --del postgresql
+
+ PG_DB_CLUSTERS=""
+ [ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql
+ export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
+ for pgdir in $PG_DB_CLUSTERS; do
+ instance="$(echo "$pgdir" | sed -e 's/^\///;s/-/\\x2d/g;s/@/\\x40/g;s/\//-/g')"
+ /bin/systemctl --quiet disable "postgresql@$instance.service" || :
+ done
fi
+%systemd_preun postgresql.service
-%post upstart
-%upstart_post postgresql
+%postun
+%systemd_reload
-%postun upstart
-%upstart_postun postgresql
+%triggerpostun -- %{name} < 9.3.3-2
+PG_DB_CLUSTERS=""
+[ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql
+for pgdir in $PG_DB_CLUSTERS; do
+ instance="$(echo "$pgdir" | sed -e 's/^\///;s/-/\\x2d/g;s/@/\\x40/g;s/\//-/g')"
+ /bin/systemctl --quiet enable "postgresql@$instance.service" || :
+done
+%systemd_trigger postgresql.service
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%doc COPYRIGHT README HISTORY doc/{bug.template,KNOWN_BUGS,MISSING_FEATURES,TODO}
%attr(754,root,root) /etc/rc.d/init.d/postgresql
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/postgresql
+%{systemdunitdir}/%{name}.service
+%{systemdunitdir}/%{name}@.service
+%{systemdunitdir}/%{name}.target
+%dir /etc/systemd/system/%{name}.target.requires
%attr(755,root,root) %{_bindir}/initdb
%attr(755,root,root) %{_bindir}/pg_basebackup
%attr(755,root,root) %{_bindir}/pg_ctl
%attr(755,root,root) %{_bindir}/pg_resetxlog
%attr(755,root,root) %{_bindir}/pg_receivexlog
+%attr(755,root,root) %{_bindir}/pg_recvlogical
%attr(755,root,root) %{_bindir}/pg_upgrade
%attr(755,root,root) %{_bindir}/postgres
%attr(755,root,root) %{_bindir}/postmaster
%{_mandir}/man1/pg_controldata.1*
%{_mandir}/man1/pg_ctl.1*
%{_mandir}/man1/pg_resetxlog.1*
+%{_mandir}/man1/pg_receivexlog.1*
+%{_mandir}/man1/pg_recvlogical.1*
%{_mandir}/man1/postgres.1*
%{_mandir}/man1/postmaster.1*
-%{_mandir}/man1/oid2name.1.gz
-%{_mandir}/man1/pg_archivecleanup.1.gz
-%{_mandir}/man1/pg_receivexlog.1.gz
-%{_mandir}/man1/pg_standby.1.gz
-%{_mandir}/man1/pg_test_fsync.1.gz
-%{_mandir}/man1/pg_test_timing.1.gz
-%{_mandir}/man1/pgbench.1.gz
-%{_mandir}/man1/vacuumlo.1.gz
-
-
-%if "%{pld_release}" != "ti"
-%files upstart
-%defattr(644,root,root,755)
-%config(noreplace) %verify(not md5 mtime size) /etc/init/postgresql.conf
-%dir /etc/init/postgresql
-%config(noreplace) %verify(not md5 mtime size) /etc/init/postgresql/instance.conf
-%endif
%files doc
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libecpg_compat.so
%attr(755,root,root) %{_libdir}/libpgtypes.so
%{_includedir}/ecpg*
+%{_pkgconfigdir}/libecpg.pc
+%{_pkgconfigdir}/libecpg_compat.pc
+%{_pkgconfigdir}/libpgtypes.pc
%files devel -f pg_config-%{mver}.lang
%defattr(644,root,root,755)
%{_includedir}/libpq-events.h
%{_includedir}/libpq-fe.h
%{_includedir}/pg_config.h
+%{_includedir}/pg_config_ext.h
%{_includedir}/pg_config_manual.h
%{_includedir}/pg_config_os.h
%{_includedir}/postgres_ext.h
%{_includedir}/postgresql/internal/pqexpbuffer.h
%{_includedir}/postgresql/internal/libpq
%{_includedir}/libpq
+%{_pkgconfigdir}/libpq.pc
%{_mandir}/man1/pg_config.1*
%files backend-devel
%{_libdir}/libecpg.a
%{_libdir}/libecpg_compat.a
%{_libdir}/libpq.a
+%{_libdir}/libpgcommon.a
%{_libdir}/libpgtypes.a
%{_libdir}/libpgport.a
%attr(755,root,root) %{_bindir}/dropuser
%attr(755,root,root) %{_bindir}/pg_dump
%attr(755,root,root) %{_bindir}/pg_dumpall
+%attr(755,root,root) %{_bindir}/pg_isready
%attr(755,root,root) %{_bindir}/pg_restore
%attr(755,root,root) %{_bindir}/psql
%attr(755,root,root) %{_bindir}/reindexdb
%{_mandir}/man1/dropuser.1*
%{_mandir}/man1/pg_dump.1*
%{_mandir}/man1/pg_dumpall.1*
+%{_mandir}/man1/pg_isready.1*
%{_mandir}/man1/pg_restore.1*
%{_mandir}/man1/pg_upgrade.1.gz
%{_mandir}/man1/psql.1*
%{_pgsqldir}/pgcrypto--*.sql
%{_pgsqldir}/pgcrypto.control
+%if %{with selinux}
%files module-sepgsql
%defattr(644,root,root,755)
%attr(755,root,root) %{_pgmoduledir}/sepgsql.so
%{_pgsqldir}/sepgsql.sql
+%endif
%files module-tablefunc
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/oid2name
%attr(755,root,root) %{_bindir}/pg_archivecleanup
%attr(755,root,root) %{_bindir}/pg_standby
+%attr(755,root,root) %{_bindir}/pg_xlogdump
%attr(755,root,root) %{_bindir}/pgbench
%attr(755,root,root) %{_bindir}/vacuumlo
%attr(755,root,root) %{_pgmoduledir}/_int.so
%attr(755,root,root) %{_pgmoduledir}/passwordcheck.so
%attr(755,root,root) %{_pgmoduledir}/pg_buffercache.so
%attr(755,root,root) %{_pgmoduledir}/pg_freespacemap.so
+%attr(755,root,root) %{_pgmoduledir}/pg_prewarm.so
%attr(755,root,root) %{_pgmoduledir}/pg_stat_statements.so
%attr(755,root,root) %{_pgmoduledir}/pgrowlocks.so
%attr(755,root,root) %{_pgmoduledir}/pgstattuple.so
+%attr(755,root,root) %{_pgmoduledir}/postgres_fdw.so
%attr(755,root,root) %{_pgmoduledir}/seg.so
%attr(755,root,root) %{_pgmoduledir}/sslinfo.so
+%attr(755,root,root) %{_pgmoduledir}/tcn.so
%attr(755,root,root) %{_pgmoduledir}/unaccent.so
%attr(755,root,root) %{_pgmoduledir}/uuid-ossp.so
%{_pgsqldir}/adminpack--*.sql
%{_pgsqldir}/pg_buffercache.control
%{_pgsqldir}/pg_freespacemap--*.sql
%{_pgsqldir}/pg_freespacemap.control
+%{_pgsqldir}/pg_prewarm--*.sql
+%{_pgsqldir}/pg_prewarm.control
%{_pgsqldir}/pg_stat_statements--*.sql
%{_pgsqldir}/pg_stat_statements.control
%{_pgsqldir}/pgrowlocks--*.sql
%{_pgsqldir}/pgrowlocks.control
%{_pgsqldir}/pgstattuple--*.sql
%{_pgsqldir}/pgstattuple.control
+%{_pgsqldir}/postgres_fdw--*.sql
+%{_pgsqldir}/postgres_fdw.control
%{_pgsqldir}/seg--*.sql
%{_pgsqldir}/seg.control
%{_pgsqldir}/sslinfo--*.sql
%{_pgsqldir}/sslinfo.control
+%{_pgsqldir}/tcn--*.sql
+%{_pgsqldir}/tcn.control
%{_pgsqldir}/unaccent--*.sql
%{_pgsqldir}/unaccent.control
%{_pgsqldir}/uuid-ossp--*.sql
%{_pgsqldir}/uuid-ossp.control
-
+%{_mandir}/man1/oid2name.1*
+%{_mandir}/man1/pg_archivecleanup.1*
+%{_mandir}/man1/pg_standby.1*
+%{_mandir}/man1/pg_xlogdump.1*
+%{_mandir}/man1/pgbench.1*
+%{_mandir}/man1/vacuumlo.1*