Bug 1479486 - Use arch-specific Requires on dleyna-connector-dbus
Use arch-specific Requires on dleyna-connector-dbus
Status: VERIFIED
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: dleyna-server (Show other bugs)
7.4
Unspecified Unspecified
high Severity high
: rc
: ---
Assigned To: Debarshi Ray
Desktop QE
: EasyFix, ZStream
Depends On:
Blocks: 1420851 1499286
  Show dependency treegraph
 
Reported: 2017-08-08 11:50 EDT by Craig Donnelly
Modified: 2017-10-06 11:40 EDT (History)
5 users (show)

See Also:
Fixed In Version: dleyna-server-0.5.0-2.el7
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1499286 (view as bug list)
Environment:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Craig Donnelly 2017-08-08 11:50:14 EDT
Description of problem:

Currently the spec for dleyna-server does not specify an arch for the requires statement of 'dleyna-connector-dbus'.

<snip>
# repoquery --requires dleyna-server.x86_64
dbus
dleyna-connector-dbus
</snip>

If for some reason there is a newer edition of the package available in another repository (or base), the install of packages will fail due to version/dependency mismatches.

A current scenario where this can be seen is from the standpoint of customers installing previous RHEL releases via kickstart with optional enabled.

For instance, kickstarting RHEL 7.3 with optional enabled will pull in the latest dylena-connector-dbus that doesn't match the available release on the kickstart media, and also doesn't match the architecture, as we are unspecific.

Doing a resolve against dlyena-server with 7.3 install media and rhel-7-server-optional-rpms reveals the follwing:

<snip>
# repoquery --requires dleyna-server.x86_64 --resolve
...
dleyna-connector-dbus-0:0.2.0-2.el7.i686
dleyna-connector-dbus-0:0.2.0-1.el7.x86_64
</snip>

We would actually encounter this same issue in the event we shipped a newer version of 'dleyna-connector-dbus.i686' during RHEL 7.4's lifecycle, due to the fact that we do not update install media/ISOs for the releases after GA.

The large occurrence of this issue is noticed when people are installing RHEL Workstation or the @gnome-desktop group.
The trickle down of dependencies will cause us to hit this issue during an install, starting with the addition of the 'totem' package from the group.

Version-Release number of selected component (if applicable):
RHEL 7.4
dleyna-connector-dbus-0:0.2.0-2.el7.i686
dleyna-server

How reproducible:
100%

Steps to Reproduce:
1. Utilize a test system with InstallMedia-7.3 (RHEL 7.3 GA ISO or kickstart tree) and rhel-7-server-optional-rpms (7Server, i.e. 7.4) available.
2. Attempt to install @gnome-desktop, or dleyna-server.x86_64.

Actual results:
Error: Package: dleyna-connector-dbus-0.2.0-2.el7.i686 (rhel-7-server-optional-rpms)
           Requires: libdleyna-core-1.0.so.4
**********************************************************************
yum can be configured to try to resolve such errors by temporarily enabling
disabled repos and searching for missing dependencies.
To enable this functionality please set 'notify_only=0' in /etc/yum/pluginconf.d/search-disabled-repos.conf
**********************************************************************

Error: Package: dleyna-connector-dbus-0.2.0-2.el7.i686 (rhel-7-server-optional-rpms)
           Requires: libdleyna-core-1.0.so.4


Expected results:
Installing dleyna-server.x86_64 should only pull dependencies for dleyna-connecer-dbus.x86_64

dleyna-server.x86_64 should require dleyna-connector-dbus(x86-64)
dleyna-server.i686 should require dleyna-connector-dbus(x86-32)
Comment 3 Debarshi Ray 2017-08-08 13:50:06 EDT
Umm... I don't understand.

dleyna-renderer is a leaf-level package with a binary daemon that links against libdleyna-core-1.0.so.* from dleyna-core.

dleyna-connector-dbus provides a shared object that's meant to be dlopen:ed by libdleyna-core-1.0.so.*. ie. it provides a plugin.

In RHEL 7.4, as part of the larger desktop rebase, dleyna-server and dleyna-core went from 0.4.0-1 to 0.5.0-1. Since dleyna-core's soname got bumped to libdleyna-core-1.0.so.4, dleyna-connector-dbus was rebuilt against it. So it went from 0.2.0-1 to 0.2.0-2.

(In reply to Craig Donnelly from comment #0)
> Actual results:
> Error: Package: dleyna-connector-dbus-0.2.0-2.el7.i686
> (rhel-7-server-optional-rpms)
>            Requires: libdleyna-core-1.0.so.4

Therefore, it looks like yum had access to the new dleyna-connector-dbus-0.2.0-2.el7.i686, but not the dleyna-core-0.5.0-1 ABI that it was built against. It is not clear to me how explicitly specifying the architecture would have helped.

> Error: Package: dleyna-connector-dbus-0.2.0-2.el7.i686
> (rhel-7-server-optional-rpms)
>            Requires: libdleyna-core-1.0.so.4
> 
> 
> Expected results:
> Installing dleyna-server.x86_64 should only pull dependencies for
> dleyna-connecer-dbus.x86_64

Are you saying that trying to install dleyna-server.x86_64 is pulling in dleyna-connector-dbus.i686, not dleyna-connector-dbus.x86_64?
Comment 4 Craig Donnelly 2017-08-08 14:17:43 EDT
Correct.

If we use install media that does not have the latest dleyna-server available, the fact that there is a newer version of the dleyna-connector-dbus will cause it to actually try to pull the latest release, non-arch specific, into the install.

This will fail as the server package doesn't care about the architecture of the connector-dbus package, so you reach this issue because it pulls in to install 32-bit that is un-needed. The 64-bit version of this is in the base repo / install media, meaning we have everything we need up front but yum does its wonders based on the packaging and pulls down the *newest* release, which happens to also be an arch mismatch.

I'm saying that if the server package specified arch, we wouldn't see this issue with this particular package, regardless of version.
Comment 5 Debarshi Ray 2017-10-05 14:06:19 EDT
I have built dleyna-server-0.5.0-2.el7:
https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=14183929
Comment 7 Tomas Pelka 2017-10-06 03:07:13 EDT
Requires:       dleyna-connector-dbus

was replaced by

Requires:       dleyna-connector-dbus%{?_isa}

I believe this is what we want.

Note You need to log in before you can comment on or make changes to this bug.