From a3f63f1f95f7a77c4036bd692f7c0a04afe8c7bc Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Tue, 21 Jun 2016 12:03:59 +0200 Subject: [PATCH] packaging: depend on multilib-rpm-config .. to correctly install architecture-dependant header files. Related: rhbz#1286193 Version: 9.5.3-3 --- multilib-fix | 170 ------------------------------------------------ postgresql.spec | 21 +++--- 2 files changed, 13 insertions(+), 178 deletions(-) delete mode 100755 multilib-fix diff --git a/multilib-fix b/multilib-fix deleted file mode 100755 index ff39117..0000000 --- a/multilib-fix +++ /dev/null @@ -1,170 +0,0 @@ -#! /bin/sh - -# Replace the multilib-unclean header file with multilib-clean stub, while the -# original file is moved to unique architecture-specific location. -# -# The solution is taken from Fedora PostgreSQL RPM package. -# -# Pavel Raiskup -# -# This file is to be moved into redhat-rpm-config (or something like this). - -progname=$(basename "$0") - -opt_arch=$(uname -i) -# See rhbz#1242873 for more info. -test "$opt_arch" = ppc64p7 && opt_arch=ppc64 - -opt_destdir= -opt_basename= -opt_buildroot=$(pwd) -opt_verbose=: -opt_additional_suffix= - -# TODO: we could pretty easily implement other then 'cpp-header' stubs, if the -# target file type allows some kind of "transparent" file inclusion. For -# example shell scripts might use '. "${opt_destdir}/${opt_basename}_x86_64.sh'. -print_stub () -{ -cat <' are unchanged. - -To allow us to do incompatible changes in this script, packagers should use this -script only through %ml_fix_c_header wrapping macro. - ---destdir absolute path name where the old header file is stored, e.g. - /some/pat ---basename when you deal with '/some/path/test.h', specify 'test' ---buildroot prefix (directory where we play with installed files, usually - after 'make install DESTDIR=buildroot') ---additional-suffix we usually move 'test.h' to 'test_\$ARCH.h'. However - this file could already exit. With this option the multilib - file will be named 'test_\$ARCH\$SUFFIX.h' ---verbose print some useful information ---help show this help -EOF - - $_h_exit && exit "$1" -} - -verbose () -{ - $opt_verbose && echo "INFO: $progname: $*" -} - -die () -{ - echo >&2 " # $*" - print_help 1 -} - -error () -{ - error_occurred=: - echo >&2 " ! $*" -} - -error_occurred=false - -while test $# -gt 0 -do - _opt=$1 ; shift - case $_opt in - --destdir) - opt_destdir=$1 ; shift || die "$_opt requires argument" - ;; - --basename) - opt_basename=$1 ; shift || die "$_opt require argument" - ;; - --buildroot) - opt_buildroot=$1 ; shift || die "$_opt require argument" - ;; - --arch) - opt_arch=$1 ; shift || die "$_opt require argument" - ;; - --additional-suffix) - opt_additional_suffix=$1 ; shift || die "$_opt require argument" - ;; - --help) - print_help 0 - ;; - *) - error "unexpected '$_opt' program argument" - ;; - esac -done -$error_occurred && print_help 1 - -for i in arch buildroot destdir basename -do - eval "test -z \"\$opt_$i\"" && error "--$i needs to be set" -done -$error_occurred && print_help 1 - -original_file="$opt_buildroot$opt_destdir/$opt_basename".h -multilib_file="$opt_buildroot$opt_destdir/$opt_basename${opt_additional_suffix}_$opt_arch".h - -test -f "$original_file" || die "can't find '$original_file'" - -case $opt_arch in - # we only apply this to known Red Hat multilib arches, per bug #177564 - i386|x86_64|ppc|ppc64|s390|s390x|sparc|sparc64) - ;; - *) - verbose "we don't need multilib haeder hack for '$opt_arch' architecture (no-op)" - exit 0 - ;; -esac - -verbose "moving: '$original_file' to '$multilib_file'" - -mv "$original_file" "$multilib_file" || exit 1 -if print_stub > "$original_file" && chmod 644 "$original_file"; then - : -else - die "can't write into '$original_file'" -fi - -: diff --git a/postgresql.spec b/postgresql.spec index ce49dc2..56c01ff 100644 --- a/postgresql.spec +++ b/postgresql.spec @@ -67,7 +67,7 @@ Summary: PostgreSQL client programs Name: postgresql %global majorversion 9.5 Version: 9.5.3 -Release: 2%{?dist} +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. @@ -94,7 +94,6 @@ Source1: postgresql-%{version}-US.pdf Source2: generate-pdf.sh Source3: ftp://ftp.postgresql.org/pub/source/v%{prevversion}/postgresql-%{prevversion}.tar.bz2 Source4: Makefile.regress -Source5: multilib-fix Source9: postgresql.tmpfiles.d Source10: postgresql.pam Source11: postgresql-bashprofile @@ -121,6 +120,7 @@ BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk help2man BuildRequires: perl(ExtUtils::Embed), perl-devel BuildRequires: readline-devel zlib-devel BuildRequires: systemd-units util-linux +BuildRequires: multilib-rpm-config # postgresql-setup build requires BuildRequires: m4 elinks docbook-utils help2man @@ -687,12 +687,14 @@ install -D -m 644 macros.%{name} \ $RPM_BUILD_ROOT%{macrosdir}/macros.%{name} # multilib header hack; some headers are installed in two places! -%global ml_fix_c_header %{SOURCE5} --buildroot "$RPM_BUILD_ROOT" -for header in pg_config pg_config_ext ecpg_config; do -%ml_fix_c_header --destdir "%{_includedir}" --basename "$header" -done -for header in pg_config pg_config_ext; do -%ml_fix_c_header --destdir "%{_includedir}/pgsql/server" --basename "$header" +for header in \ + %{_includedir}/pg_config.h \ + %{_includedir}/pg_config_ext.h \ + %{_includedir}/ecpg_config.h \ + %{_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 @@ -1213,6 +1215,9 @@ fi %endif %changelog +* Mon Jun 20 2016 Pavel Raiskup - 9.5.3-3 +- use multilib-rpm-config package for multilib hacks + * Sun May 15 2016 Jitka Plesnikova - 9.5.3-2 - Perl 5.24 rebuild