Add symbol -any to each subpackage to ensure conflict with othere postgresql streams.

Symbol postgresql is now used only for setting the default version
of postgresql in the repository. The majorname cant be
used for such usecase due to different behavior of dnf install and dnf
builddep
More about it:
https://github.com/rpm-software-management/dnf5/issues/620
Related: 2255013
This commit is contained in:
Filip Janus 2024-01-03 16:01:16 +01:00
parent 346ba9791a
commit 1fe2f9b4da

View File

@ -48,7 +48,7 @@
Summary: PostgreSQL client programs Summary: PostgreSQL client programs
Name: %{majorname}%{majorversion} Name: %{majorname}%{majorversion}
Version: %{majorversion}.1 Version: %{majorversion}.1
Release: 1%{?dist} Release: 2%{?dist}
# The PostgreSQL license is very similar to other MIT licenses, but the OSI # The PostgreSQL license is very similar to other MIT licenses, but the OSI
# recognizes it as an independent license, so we do as well. # recognizes it as an independent license, so we do as well.
@ -182,17 +182,18 @@ BuildRequires: libicu-devel
Obsoletes: postgresql%{majorversion}%{?1:-%{1}}\ Obsoletes: postgresql%{majorversion}%{?1:-%{1}}\
} }
%else %else
%define obsoletes_postgresqlXX_if_default() %{expand:\ %define obsoletes_postgresqlXX_if_default() %{nil}
Provides: %{majorname}%{?1:-%{1}} = %precise_version\
Provides: %{majorname}%{?1:-%{1}}%{?_isa} = %precise_version\
}
%endif %endif
%define conflict_with_other_streams() %{expand:\
Provides: %{majorname}%{?1:-%{1}}-any\
Conflicts: %{majorname}%{?1:-%{1}}-any\
}
Provides: %{pkgname} = %precise_version Provides: %{pkgname} = %precise_version
Provides: %{pkgname}%{?_isa} = %precise_version Provides: %{pkgname}%{?_isa} = %precise_version
Conflicts: %{majorname}
%conflict_with_other_streams
%obsoletes_postgresqlXX_if_default %obsoletes_postgresqlXX_if_default
# https://bugzilla.redhat.com/1464368 # https://bugzilla.redhat.com/1464368
@ -227,9 +228,9 @@ Requires(post): glibc
Requires(postun): glibc Requires(postun): glibc
Provides: %{pkgname}-private-libs = %precise_version Provides: %{pkgname}-private-libs = %precise_version
Provides: %{pkgname}-private-libs%{?_isa} = %precise_version Provides: %{pkgname}-private-libs%{?_isa} = %precise_version
Conflicts: %{majorname}-private-libs
%obsoletes_postgresqlXX_if_default private-libs %obsoletes_postgresqlXX_if_default private-libs
%conflict_with_other_streams private-libs
%description -n %{pkgname}-private-libs %description -n %{pkgname}-private-libs
The postgresql-private-libs package provides the shared libraries for this The postgresql-private-libs package provides the shared libraries for this
@ -246,9 +247,9 @@ Requires: %{pkgname}-private-libs%{?_isa} = %precise_version
Conflicts: libpq-devel Conflicts: libpq-devel
Provides: %{pkgname}-devel = %precise_version Provides: %{pkgname}-devel = %precise_version
Provides: %{pkgname}-devel%{?_isa} = %precise_version Provides: %{pkgname}-devel%{?_isa} = %precise_version
Conflicts: %{majorname}-devel
%obsoletes_postgresqlXX_if_default private-devel %obsoletes_postgresqlXX_if_default private-devel
%conflict_with_other_streams private-devel
%description -n %{pkgname}-private-devel %description -n %{pkgname}-private-devel
The postgresql-private-devel package contains the header files and libraries The postgresql-private-devel package contains the header files and libraries
@ -282,10 +283,9 @@ Provides: %{pkgname}-server = %precise_version
Provides: %{pkgname}-server%{?_isa} = %precise_version Provides: %{pkgname}-server%{?_isa} = %precise_version
# Provide symbol regardless version. This symbol is present in every single # Provide symbol regardless version. This symbol is present in every single
# postgresql stream # postgresql stream
Provides: %{majorname}-server-any
Conflicts: %{majorname}-server
%obsoletes_postgresqlXX_if_default server %obsoletes_postgresqlXX_if_default server
%conflict_with_other_streams server
%description -n %{pkgname}-server %description -n %{pkgname}-server
PostgreSQL is an advanced Object-Relational database management system (DBMS). PostgreSQL is an advanced Object-Relational database management system (DBMS).
@ -299,9 +299,9 @@ Summary: Extra documentation for PostgreSQL
Requires: %{pkgname}%{?_isa} = %precise_version Requires: %{pkgname}%{?_isa} = %precise_version
Provides: %{pkgname}-doc = %precise_version Provides: %{pkgname}-doc = %precise_version
Provides: %{pkgname}-docs = %precise_version Provides: %{pkgname}-docs = %precise_version
Conflicts: %{majorname}-docs
%obsoletes_postgresqlXX_if_default docs %obsoletes_postgresqlXX_if_default docs
%conflict_with_other_streams docs
%description -n %{pkgname}-docs %description -n %{pkgname}-docs
The postgresql-docs package contains some additional documentation for The postgresql-docs package contains some additional documentation for
@ -314,9 +314,9 @@ Summary: Extension modules distributed with PostgreSQL
Requires: %{pkgname}%{?_isa} = %precise_version Requires: %{pkgname}%{?_isa} = %precise_version
Provides: %{pkgname}-contrib = %precise_version Provides: %{pkgname}-contrib = %precise_version
Provides: %{pkgname}-contrib%{?_isa} = %precise_version Provides: %{pkgname}-contrib%{?_isa} = %precise_version
Conflicts: %{majorname}-contrib
%obsoletes_postgresqlXX_if_default contrib %obsoletes_postgresqlXX_if_default contrib
%conflict_with_other_streams contrib
%description -n %{pkgname}-contrib %description -n %{pkgname}-contrib
The postgresql-contrib package contains various extension modules that are The postgresql-contrib package contains various extension modules that are
@ -344,9 +344,9 @@ Requires: %{pkgname}-private-devel
%endif %endif
Provides: %{pkgname}-server-devel = %precise_version Provides: %{pkgname}-server-devel = %precise_version
Provides: %{pkgname}-server-devel%{?_isa} = %precise_version Provides: %{pkgname}-server-devel%{?_isa} = %precise_version
Conflicts: %{majorname}-server-devel
%obsoletes_postgresqlXX_if_default server-devel %obsoletes_postgresqlXX_if_default server-devel
%conflict_with_other_streams server-devel
%description -n %{pkgname}-server-devel %description -n %{pkgname}-server-devel
The postgresql-server-devel package contains the header files and configuration The postgresql-server-devel package contains the header files and configuration
@ -357,13 +357,11 @@ Summary: Convenience RPM macros for build-time testing against PostgreSQL server
Requires: %{pkgname}-server = %precise_version Requires: %{pkgname}-server = %precise_version
BuildArch: noarch BuildArch: noarch
Provides: %{pkgname}-test-rpm-macros = %precise_version Provides: %{pkgname}-test-rpm-macros = %precise_version
Conflicts: %{majorname}-test-rpm-macros
%if %?postgresql_default %if %?postgresql_default
Obsoletes: postgresql%{majorversion}-test-rpm-macros Obsoletes: postgresql%{majorversion}-test-rpm-macros
%else
Provides: %{majorname}%-test-rpm-macros = %precise_version
%endif %endif
%conflict_with_other_streams test-rpm-macros
%description -n %{pkgname}-test-rpm-macros %description -n %{pkgname}-test-rpm-macros
This package is meant to be added as BuildRequires: dependency of other packages This package is meant to be added as BuildRequires: dependency of other packages
@ -375,9 +373,9 @@ Summary: Statically linked PostgreSQL libraries
Requires: %{pkgname}-server-devel%{?_isa} = %precise_version Requires: %{pkgname}-server-devel%{?_isa} = %precise_version
Provides: %{pkgname}-static = %precise_version Provides: %{pkgname}-static = %precise_version
Provides: %{pkgname}-static%{?_isa} = %precise_version Provides: %{pkgname}-static%{?_isa} = %precise_version
Conflicts: %{majorname}-static
%obsoletes_postgresqlXX_if_default static %obsoletes_postgresqlXX_if_default static
%conflict_with_other_streams static
%description -n %{pkgname}-static %description -n %{pkgname}-static
Statically linked PostgreSQL libraries that do not have dynamically linked Statically linked PostgreSQL libraries that do not have dynamically linked
@ -391,9 +389,9 @@ Requires: %{pkgname}-server%{?_isa} = %precise_version
Provides: bundled(postgresql-server) = %prevversion Provides: bundled(postgresql-server) = %prevversion
Provides: %{pkgname}-upgrade = %precise_version Provides: %{pkgname}-upgrade = %precise_version
Provides: %{pkgname}-upgrade%{?_isa} = %precise_version Provides: %{pkgname}-upgrade%{?_isa} = %precise_version
Conflicts: %{majorname}-upgrade
%obsoletes_postgresqlXX_if_default upgrade %obsoletes_postgresqlXX_if_default upgrade
%conflict_with_other_streams upgrade
%description -n %{pkgname}-upgrade %description -n %{pkgname}-upgrade
The postgresql-upgrade package contains the pg_upgrade utility and supporting The postgresql-upgrade package contains the pg_upgrade utility and supporting
@ -406,9 +404,9 @@ Summary: Support for build of extensions required for upgrade process
Requires: %{pkgname}-upgrade%{?_isa} = %precise_version Requires: %{pkgname}-upgrade%{?_isa} = %precise_version
Provides: %{pkgname}-upgrade-devel = %precise_version Provides: %{pkgname}-upgrade-devel = %precise_version
Provides: %{pkgname}-upgrade-devel%{?_isa} = %precise_version Provides: %{pkgname}-upgrade-devel%{?_isa} = %precise_version
Conflicts: %{majorname}-upgrade-devel
%obsoletes_postgresqlXX_if_default upgrade-devel %obsoletes_postgresqlXX_if_default upgrade-devel
%conflict_with_other_streams upgrade-devel
%description -n %{pkgname}-upgrade-devel %description -n %{pkgname}-upgrade-devel
The postgresql-devel package contains the header files and libraries The postgresql-devel package contains the header files and libraries
@ -428,9 +426,9 @@ BuildRequires: perl(Data::Dumper)
%endif %endif
Provides: %{pkgname}-plperl = %precise_version Provides: %{pkgname}-plperl = %precise_version
Provides: %{pkgname}-plperl%{?_isa} = %precise_version Provides: %{pkgname}-plperl%{?_isa} = %precise_version
Conflicts: %{majorname}-plperl
%obsoletes_postgresqlXX_if_default plperl %obsoletes_postgresqlXX_if_default plperl
%conflict_with_other_streams plperl
%description -n %{pkgname}-plperl %description -n %{pkgname}-plperl
The postgresql-plperl package contains the PL/Perl procedural language, The postgresql-plperl package contains the PL/Perl procedural language,
@ -445,9 +443,9 @@ Summary: The Python3 procedural language for PostgreSQL
Requires: %{pkgname}-server%{?_isa} = %precise_version Requires: %{pkgname}-server%{?_isa} = %precise_version
Provides: %{pkgname}-plpython3 = %precise_version Provides: %{pkgname}-plpython3 = %precise_version
Provides: %{pkgname}-plpython3%{?_isa} = %precise_version Provides: %{pkgname}-plpython3%{?_isa} = %precise_version
Conflicts: %{majorname}-plpython3
%obsoletes_postgresqlXX_if_default python3 %obsoletes_postgresqlXX_if_default python3
%conflict_with_other_streams python3
%description -n %{pkgname}-plpython3 %description -n %{pkgname}-plpython3
The postgresql-plpython3 package contains the PL/Python3 procedural language, The postgresql-plpython3 package contains the PL/Python3 procedural language,
@ -462,9 +460,9 @@ Summary: The Tcl procedural language for PostgreSQL
Requires: %{pkgname}-server%{?_isa} = %precise_version Requires: %{pkgname}-server%{?_isa} = %precise_version
Provides: %{pkgname}-pltcl = %precise_version Provides: %{pkgname}-pltcl = %precise_version
Provides: %{pkgname}-pltcl%{?_isa} = %precise_version Provides: %{pkgname}-pltcl%{?_isa} = %precise_version
Conflicts: %{majorname}-pltcl
%obsoletes_postgresqlXX_if_default pltcl %obsoletes_postgresqlXX_if_default pltcl
%conflict_with_other_streams plctl
%description -n %{pkgname}-pltcl %description -n %{pkgname}-pltcl
The postgresql-pltcl package contains the PL/Tcl procedural language, The postgresql-pltcl package contains the PL/Tcl procedural language,
@ -481,9 +479,9 @@ Requires: %{pkgname}-server-devel%{?_isa} = %precise_version
Requires: %{pkgname}-contrib%{?_isa} = %precise_version Requires: %{pkgname}-contrib%{?_isa} = %precise_version
Provides: %{pkgname}-test = %precise_version Provides: %{pkgname}-test = %precise_version
Provides: %{pkgname}-test%{?_isa} = %precise_version Provides: %{pkgname}-test%{?_isa} = %precise_version
Conflicts: %{majorname}-test
%obsoletes_postgresqlXX_if_default test %obsoletes_postgresqlXX_if_default test
%conflict_with_other_streams test
%description -n %{pkgname}-test %description -n %{pkgname}-test
The postgresql-test package contains files needed for various tests for the The postgresql-test package contains files needed for various tests for the
@ -503,11 +501,11 @@ Requires: llvm => 5.0
Provides: postgresql-llvmjit >= %{version}-%{release} Provides: postgresql-llvmjit >= %{version}-%{release}
Provides: %{pkgname}-llvmjit = %precise_version Provides: %{pkgname}-llvmjit = %precise_version
Provides: %{pkgname}-llvmjit%{?_isa} = %precise_version Provides: %{pkgname}-llvmjit%{?_isa} = %precise_version
Conflicts: %{majorname}-llvmjit
BuildRequires: llvm-devel >= 5.0 clang-devel >= 5.0 BuildRequires: llvm-devel >= 5.0 clang-devel >= 5.0
%obsoletes_postgresqlXX_if_default llvmjit %obsoletes_postgresqlXX_if_default llvmjit
%conflict_with_other_streams llvmjit
%description -n %{pkgname}-llvmjit %description -n %{pkgname}-llvmjit
The postgresql-llvmjit package contains support for The postgresql-llvmjit package contains support for
@ -1349,6 +1347,13 @@ make -C postgresql-setup-%{setup_version} check
%changelog %changelog
* Fri Jan 5 2024 Filip Janus <fjanus@redhat.com> - 16.1-2
- Add symbol any to ensure conflict with othere postgresql streams
- sympol postgresql is now used only for setting the default version
of postgresql in the repository
- It was done due to dnf feature. more about it:
https://github.com/rpm-software-management/dnf5/issues/620
* Mon Nov 27 2023 Filip Janus <fjanus@redhat.com> - 16.1-1 * Mon Nov 27 2023 Filip Janus <fjanus@redhat.com> - 16.1-1
- Update to 16.1 - Update to 16.1
- Initial import of demodularized version - Initial import of demodularized version