%global majorname postgresql %global majorversion 17 # By default, patch(1) creates backup files when chunks apply with offsets. # Turn that off to ensure such files don't get included in RPMs. %global _default_patch_flags --no-backup-if-mismatch # https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_of_Additional_RPM_Macros %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) # Don't create note file, added package_note_flags to linker by redhat-rpm-config # will cause issue during extension build because it'll be inherited. %undefine _package_note_file Summary: PostgreSQL client programs Name: %{majorname}%{majorversion} Version: %{majorversion}.5 Release: 1%{?dist} # The PostgreSQL license is very similar to other MIT licenses, but the OSI # recognizes it as an independent license, so we do as well. License: PostgreSQL Url: http://www.postgresql.org/ %global precise_version %version-%release Source0: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2 Source4: Makefile.regress Source9: postgresql.tmpfiles Source11: postgresql-bashprofile Source16: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2.sha256 Patch1: rpm-pgsql.patch Patch2: postgresql-logging.patch Patch5: postgresql-var-run-socket.patch Patch9: postgresql-server-pg_config.patch Patch12: postgresql-no-libecpg.patch BuildRequires: make BuildRequires: libzstd-devel BuildRequires: gcc BuildRequires: glibc-devel bison flex gawk BuildRequires: perl(ExtUtils::Embed), perl(ExtUtils::MakeMaker), perl-FindBin, perl-generators BuildRequires: readline-devel zlib-devel BuildRequires: systemd-devel util-linux BuildRequires: multilib-rpm-config BuildRequires: docbook-style-xsl BuildRequires: openssl-devel BuildRequires: uuid-devel BuildRequires: libselinux-devel BuildRequires: libicu-devel %description 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 -n %{name}-contrib Summary: Extension modules distributed with PostgreSQL Requires: %{name} = %precise_version %description -n %{name}-contrib The postgresql-contrib package contains various extension modules that are included in the PostgreSQL distribution. %prep ( cd "$(dirname "%{SOURCE0}")" sha256sum -c %{SOURCE16} ) %setup -q -n postgresql-%{version} %patch 1 -p1 %patch 2 -p1 %patch 5 -p1 %patch 12 -p1 %patch 9 -p1 # remove .gitignore files to ensure none get into the RPMs (bug #642210) find . -type f -name .gitignore | xargs rm # Create a sysusers.d config file cat >postgresql17.sysusers.conf < postgresql17.tmpfiles.conf < src/tutorial/GNUmakefile make %{?_smp_mflags} -C src/tutorial NO_PGXS=1 all rm -f src/tutorial/GNUmakefile # The object files shouldn't be copied to rpm bz#1187514 rm -f src/tutorial/*.o %install make DESTDIR=$RPM_BUILD_ROOT install # We ship pg_config through libpq-devel #mv $RPM_BUILD_ROOT/%_mandir/man1/pg_{,server_}config.1 #ln -s pg_server_config $RPM_BUILD_ROOT/%_bindir/pg_config #rm $RPM_BUILD_ROOT/%{_libdir}/libpq.a # multilib header hack #for header in \ # %{_includedir}/pgsql/server/pg_config.h \ # %{_includedir}/pgsql/server/pg_config_ext.h #do #%multilib_fix_c_header --file "$header" #done install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial cp -p src/tutorial/* $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir} install -m 0644 %{SOURCE9} $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%{?_localstatedir}/lib/pgsql/data # backups of data go here... install -d -m 700 $RPM_BUILD_ROOT%{?_localstatedir}/lib/pgsql/backups # postgres' .bash_profile install -m 644 %{SOURCE11} $RPM_BUILD_ROOT%{?_localstatedir}/lib/pgsql/.bash_profile rm $RPM_BUILD_ROOT/%{_datadir}/man/man1/ecpg.1 %files %{_bindir}/clusterdb %{_bindir}/createdb %{_bindir}/createuser %{_bindir}/dropdb %{_bindir}/dropuser %{_bindir}/pg_dump %{_bindir}/pg_dumpall %{_bindir}/pg_isready %{_bindir}/pg_restore %{_bindir}/pg_upgrade %{_bindir}/psql %{_bindir}/reindexdb %{_bindir}/vacuumdb %exclude %{_mandir} %{_bindir}/initdb %{_bindir}/pg_basebackup %{_bindir}/pg_controldata %{_bindir}/pg_ctl %{_bindir}/pg_receivewal %{_bindir}/pg_recvlogical %{_bindir}/pg_resetwal %{_bindir}/pg_rewind %{_bindir}/pg_checksums %{_bindir}/pg_verifybackup %{_bindir}/pg_createsubscriber %{_bindir}/postgres %{_bindir}/postgresql-setup %{_bindir}/postgresql-upgrade %dir %{_datadir}/pgsql %{_datadir}/pgsql/*.sample %{_datadir}/pgsql/information_schema.sql %{_datadir}/pgsql/postgres.bki %{_datadir}/pgsql/snowball_create.sql %{_datadir}/pgsql/sql_features.txt %{_datadir}/pgsql/system_constraints.sql %{_datadir}/pgsql/system_functions.sql %{_datadir}/pgsql/system_views.sql %{_datadir}/pgsql/timezonesets/ %{_datadir}/pgsql/tsearch_data/ %dir %{_libdir}/pgsql %{_libdir}/pgsql/*_and_*.so %{_libdir}/pgsql/dict_snowball.so %{_libdir}/pgsql/euc2004_sjis2004.so %{_libdir}/pgsql/libpqwalreceiver.so %{_libdir}/pgsql/pg_prewarm.so %{_libdir}/pgsql/pgoutput.so %{_libdir}/pgsql/plpgsql.so %{_libexecdir}/postgresql-check-db-dir %{_sbindir}/postgresql-new-systemd-unit %{_tmpfilesdir}/postgresql.conf %{_tmpfilesdir}/postgresql17.conf %{_unitdir}/*postgresql*.service %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql %attr(644,postgres,postgres) %config(noreplace) %{?_localstatedir}/lib/pgsql/.bash_profile %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/backups %attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/data %ghost %attr(755,postgres,postgres) %dir %{_rundir}/postgresql %{_sysusersdir}/postgresql17.conf %files -n %{name}-contrib %{_bindir}/oid2name %{_bindir}/pg_amcheck %{_bindir}/pg_archivecleanup %{_bindir}/pg_test_fsync %{_bindir}/pg_test_timing %{_bindir}/pg_waldump %{_bindir}/pg_walsummary %{_bindir}/pg_combinebackup %{_bindir}/pgbench %{_bindir}/vacuumlo