Bug 1741033

Summary: pkgconfig provides without an SCL prefix
Product: Red Hat Software Collections Reporter: Honza Horak <hhorak>
Component: postgresqlAssignee: Patrik Novotný <panovotn>
Status: CLOSED DUPLICATE QA Contact: RHEL CS Apps Subsystem QE <rhel-cs-apps-subsystem-qe>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rh-postgresql12CC: databases-maint, lzachar, panovotn, pkubat, praiskup
Target Milestone: betaKeywords: Patch
Target Release: 3.4   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-10-25 10:58:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Honza Horak 2019-08-14 06:16:15 UTC
Description of problem:
The devel package provides some symbols that are not having the SCL name, so when some package requires those, RPM can be happy with the SCL package, while the files (pkgconfig) will not be found in the PATH.

Version-Release number of selected component (if applicable):
rh-postgresql12-postgresql-devel-12.0-0.beta2.el7

How reproducible:
always

Steps to Reproduce:
1. rpm -qPp rh-postgresql12-postgresql-devel-12.0-0.beta2.el7.x86_64.rpm | grep -v postgresql12

Actual results:
pkgconfig(libecpg) = 12beta2
pkgconfig(libecpg_compat) = 12beta2
pkgconfig(libpgtypes) = 12beta2
pkgconfig(libpq) = 12beta2

Expected results:
<empty>

Additional info:

This patch should make the trick and remove the auto provides generated from files in the pkgconfig directory:

diff --git a/postgresql.spec b/postgresql.spec
index 21b66ae..2a9f62a 100644
--- a/postgresql.spec
+++ b/postgresql.spec
@@ -186,7 +186,7 @@ BuildRequires: libicu-devel
 # - RHEL7 lib* plugins
 # - https://bugzilla.redhat.com/1464368 elsewhere
 # Filtering: https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
-%global __provides_exclude_from %{_libdir}/pgsql
+%global __provides_exclude_from ^(%{_libdir}/pgsql|%{_libdir}/pkgconfig)
 
 %description
 PostgreSQL is an advanced Object-Relational database management system (DBMS).

Comment 3 Honza Horak 2019-10-23 10:19:43 UTC
(In reply to Honza Horak from comment #0)
> diff --git a/postgresql.spec b/postgresql.spec
> index 21b66ae..2a9f62a 100644
> --- a/postgresql.spec
> +++ b/postgresql.spec
> @@ -186,7 +186,7 @@ BuildRequires: libicu-devel
>  # - RHEL7 lib* plugins
>  # - https://bugzilla.redhat.com/1464368 elsewhere
>  # Filtering:
> https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
> -%global __provides_exclude_from %{_libdir}/pgsql
> +%global __provides_exclude_from ^(%{_libdir}/pgsql|%{_libdir}/pkgconfig)
>  
>  %description
>  PostgreSQL is an advanced Object-Relational database management system
> (DBMS).

This is actually not good enough fix, because except the Provides, we also have Requires in the rh-postgresql12-postgresql-devel package. That results in the rh-postgresql10-postgresql-devel to be installed to satisfy the filtered provides:


# yum install rh-postgresql12-postgresql-devel
Loaded plugins: product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

global name 'warnOrGiveUsageMessage' is not defined
Resolving Dependencies
--> Running transaction check
---> Package rh-postgresql12-postgresql-devel.x86_64 0:12.0-1.el7 will be installed
--> Processing Dependency: rh-postgresql12-postgresql-libs(x86-64) = 12.0-1.el7 for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: libicu-devel for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: pkgconfig(libecpg) for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: pkgconfig(libpgtypes) for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: pkgconfig(libpq) for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: rh-postgresql12-runtime for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: libecpg.so.rh-postgresql12-6()(64bit) for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: libecpg_compat.so.rh-postgresql12-3()(64bit) for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: libpgtypes.so.rh-postgresql12-3()(64bit) for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Processing Dependency: libpq.so.rh-postgresql12-5()(64bit) for package: rh-postgresql12-postgresql-devel-12.0-1.el7.x86_64
--> Running transaction check
---> Package libicu-devel.x86_64 0:50.1.2-15.el7 will be installed
--> Processing Dependency: libicu = 50.1.2-15.el7 for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libicudata.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libicui18n.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libicuio.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libicule.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libiculx.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libicutest.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libicutu.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
--> Processing Dependency: libicuuc.so.50()(64bit) for package: libicu-devel-50.1.2-15.el7.x86_64
---> Package rh-postgresql10-postgresql-devel.x86_64 0:10.6-1.el7 will be installed
--> Processing Dependency: rh-postgresql10-postgresql-libs(x86-64) = 10.6-1.el7 for package: rh-postgresql10-postgresql-devel-10.6-1.el7.x86_64
--> Processing Dependency: rh-postgresql10-runtime for package: rh-postgresql10-postgresql-devel-10.6-1.el7.x86_64
--> Processing Dependency: libecpg.so.rh-postgresql10-6()(64bit) for package: rh-postgresql10-postgresql-devel-10.6-1.el7.x86_64
--> Processing Dependency: libecpg_compat.so.rh-postgresql10-3()(64bit) for package: rh-postgresql10-postgresql-devel-10.6-1.el7.x86_64
--> Processing Dependency: libpgtypes.so.rh-postgresql10-3()(64bit) for package: rh-postgresql10-postgresql-devel-10.6-1.el7.x86_64
--> Processing Dependency: libpq.so.rh-postgresql10-5()(64bit) for package: rh-postgresql10-postgresql-devel-10.6-1.el7.x86_64
---> Package rh-postgresql12-postgresql-libs.x86_64 0:12.0-1.el7 will be installed
---> Package rh-postgresql12-runtime.x86_64 0:3.4-1.el7 will be installed
--> Processing Dependency: scl-utils for package: rh-postgresql12-runtime-3.4-1.el7.x86_64
--> Running transaction check
---> Package libicu.x86_64 0:50.1.2-15.el7 will be installed
---> Package rh-postgresql10-postgresql-libs.x86_64 0:10.6-1.el7 will be installed
---> Package rh-postgresql10-runtime.x86_64 0:3.1-1.el7 will be installed
---> Package scl-utils.x86_64 0:20130529-19.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================
 Package                          Arch   Version           Repository     Size
===============================================================================
Installing:
 rh-postgresql12-postgresql-devel x86_64 12.0-1.el7        rhscl-build-7 1.4 M
Installing for dependencies:
 libicu                           x86_64 50.1.2-15.el7     rhscl-build-7 6.9 M
 libicu-devel                     x86_64 50.1.2-15.el7     rhscl-build-7 701 k
 rh-postgresql10-postgresql-devel x86_64 10.6-1.el7        rhscl-build-7 1.3 M
 rh-postgresql10-postgresql-libs  x86_64 10.6-1.el7        rhscl-build-7 289 k
 rh-postgresql10-runtime          x86_64 3.1-1.el7         rhscl-build-7 1.2 M
 rh-postgresql12-postgresql-libs  x86_64 12.0-1.el7        rhscl-build-7 307 k
 rh-postgresql12-runtime          x86_64 3.4-1.el7         rhscl-build-7 1.2 M
 scl-utils                        x86_64 20130529-19.el7   rhscl-build-7  23 k

Transaction Summary
===============================================================================
Install  1 Package (+8 Dependent packages)


So, I guess we should filter out the Requires as well, same as we filter Provides.

Patrik, please, take a look at this for the GA build, it doesn't seem to be important enough for Beta respin.