Bug 1232315

Summary: File conflict with libertas-sd8787-firmware
Product: Red Hat Enterprise Linux 7 Reporter: Vadim Rutkovsky <vrutkovs>
Component: linux-firmwareAssignee: Rafael Aquini <aquini>
Status: CLOSED ERRATA QA Contact: Rachel Sibley <rasibley>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.2CC: emcnabb, oliver, vrutkovs
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: linux-firmware-20150727-41.git75cc3ef.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-19 10:17:48 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 Vadim Rutkovsky 2015-06-16 13:19:42 UTC
Description of problem:
Transaction error occurs on updating linux-firmware package

Version-Release number of selected component (if applicable):
linux-firmware-20150612-37.git3161bfa.el7.noarch

How reproducible:
Always

Steps to Reproduce:
1. Run 'yum update' for latest nightly

Actual results:
Transaction check error:
  file /usr/lib/firmware/mrvl/sd8787_uapsta.bin from install of linux-firmware-20150612-37.git3161bfa.el7.noarch conflicts with file from package libertas-sd8787-firmware-20140213-0.3.git4164c23.el7.noarch

Expected results:
No errors occur

Additional info:

Comment 2 Oliver Ilian 2015-07-13 15:03:46 UTC
seeing the same with a newer version of linux-firmware:

Transaction check error: file /usr/lib/firmware/mrvl/sd8787_uapsta.bin from install of linux-firmware-20150612-38.git3161bfa.el7.noarch conflicts with file from package libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7_0.noarch

going from RHEL 7.1 to RHEL 7.2 latest

Comment 4 Oliver Ilian 2015-07-20 08:37:34 UTC
Rafael, is this what you are looking for:

rpm -qpl libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7_0.noarch.rpm 

/usr/lib/firmware/mrvl
/usr/lib/firmware/mrvl/sd8787_uapsta.bin
/usr/share/doc/libertas-sd8787-firmware-20140804
/usr/share/doc/libertas-sd8787-firmware-20140804/LICENCE.Marvell
/usr/share/doc/libertas-sd8787-firmware-20140804/WHENCE

Comment 5 Rafael Aquini 2015-07-21 20:53:58 UTC
(In reply to Oliver Haessler from comment #4)
> Rafael, is this what you are looking for:
> 
> rpm -qpl libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7_0.noarch.rpm 
> 
> /usr/lib/firmware/mrvl
> /usr/lib/firmware/mrvl/sd8787_uapsta.bin
> /usr/share/doc/libertas-sd8787-firmware-20140804
> /usr/share/doc/libertas-sd8787-firmware-20140804/LICENCE.Marvell
> /usr/share/doc/libertas-sd8787-firmware-20140804/WHENCE


After a closer look, this smells to me like a 3rd party RPM trying to own files it should not own. For the sake of better clarifications before taking any further action, here goes a couple more questions:


a) Who provides libertas-sd8787-firmware RPM? 

b) How/why it wasn't conflicting with the older linux-firmware releases, as that marvel blobs were already there?
  -- on 7.1 RHEL box:
   # rpm -q linux-firmware 
   linux-firmware-20140911-0.1.git365e80c.el7.noarch
   # rpm -ql linux-firmware | grep mrvl
   /usr/lib/firmware/mrvl
   /usr/lib/firmware/mrvl/pcie8897_uapsta.bin
   /usr/lib/firmware/mrvl/sd8787_uapsta.bin
   /usr/lib/firmware/mrvl/sd8797_uapsta.bin
   /usr/lib/firmware/mrvl/sd8897_uapsta.bin
   /usr/lib/firmware/mrvl/usb8797_uapsta.bin


c) the same in (d) is valid for Fedora linux-firmware variant RPM, so is it really desirable that we prevent any/all these Marvel blobs from being shipped with RHEL's variant of linux-firmware RPM because a 3rd party RPM will take care of shipping them?

Comment 6 Oliver Ilian 2015-08-06 08:46:38 UTC
a) If i try to reinstall the rpm i get:

========================================================================================================================================================
 Package                           Arch            Version                                   Repository                                            Size
========================================================================================================================================================
Reinstalling:
 libertas-sd8787-firmware          noarch          20140804-0.1.git6bce2b0.el7_0             internal-it-stage-rhel-x86_64-workstation-7          311 k

Transaction Summary
========================================================================================================================================================

So it is part of the standard RHEL 7 isntall and not a 3rd party RPM



b) you are right.. i have no idea why it was not a problem in RHEL 7.x (previous to 7.2): I also see:

[root@ohaessle ~]# rpm -ql linux-firmware | grep mrvl
/usr/lib/firmware/mrvl
/usr/lib/firmware/mrvl/pcie8897_uapsta.bin
/usr/lib/firmware/mrvl/sd8787_uapsta.bin
/usr/lib/firmware/mrvl/sd8797_uapsta.bin
/usr/lib/firmware/mrvl/sd8897_uapsta.bin
/usr/lib/firmware/mrvl/usb8797_uapsta.bin

[root@ohaessle ~]# rpm -ql libertas-sd8787-firmware | grep mrvl
/usr/lib/firmware/mrvl
/usr/lib/firmware/mrvl/sd8787_uapsta.bin

Comment 7 Rafael Aquini 2015-08-06 13:30:05 UTC
The repository internal-it-stage-rhel-x86_64-workstation-7 is not part of our official distro compose, AFAICS.

Who provides libertas-sd8787-firmware RPM is still a pertinent question, as it clearly is the one to blame here as it is attempting to own a file that belongs to another RPM (linux-firmware) already installed in the system -- and whoever who does maintain this libertas-sd8787-firmware RPM is the right person to get this conflict fixed.

What I think probably have happened is that this package is a new addition to your internal repository for this release. Your repository might have a particular RPM to package the "libertas" blobs (from upstream linux-firmware/libertas directory) which we strip-off our RHEL variant linux-firmware rpm package. The libertas-sd8787-firmware rpm might be a new sub-package to that libertas one. If that's the case, then libertas-sd8787-firmware rpm is not required, as the blob it is attempting to package is already shipped on linux-firmware RPM.

-- Rafael

Comment 8 Oliver Ilian 2015-08-06 14:04:18 UTC
Hi Rafael

the repository internal-it-stage-rhel-x86_64-workstation-7 is for internal usage and is a sync with the RHEL upstream channel.

looking at https://brewweb.devel.redhat.com/buildinfo?buildID=374373,

libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7_0.noarch.rpm
was/is provided by
linux-firmware-20140804-0.1.git6bce2b0.el7_0

Comment 9 Rafael Aquini 2015-08-06 16:26:15 UTC
Thanks for the feedback Oliver!

I think I figured what's happening. libertas-*-firmware was removed from linux-firmware RPM package -- See Bug 1016595. 

However, the sd8787_uapsta.bin blob in the old libertas-sd8787-firmware ended up re-inserted into linux-firmware package file list because there was no need to remove it accordingly to the aforementioned BZ. So, as far as I reading all this, what was missed while fixing bug 1016595 was to declare libertas-*-firmware sub-packages obsolete in linux-firmware.

Would you mind testing this linux-firmware build, to check if it does resolve the problem? https://brewweb.devel.redhat.com/taskinfo?taskID=9654862

As soon as I hear a positive feedback from you, I'll push it as the new update into linux-firmare errata.


P.S.: These libertas-*-firmware present on internal-it-stage-rhel-x86_64-workstation-7 are stale and should not be there anymore.

-- Rafael

Comment 10 Oliver Ilian 2015-08-11 13:10:51 UTC
I tried to download https://brewweb.devel.redhat.com/taskinfo?taskID=9654861 but the rpm is no longer there. Any idea?

Also we do a direct sync with upstream channel, so it must be in there too.

Comment 11 Rafael Aquini 2015-08-11 14:00:42 UTC
(In reply to Oliver Haessler from comment #10)
> I tried to download https://brewweb.devel.redhat.com/taskinfo?taskID=9654861
> but the rpm is no longer there. Any idea?
> 
> Also we do a direct sync with upstream channel, so it must be in there too.

That was a scratch build for testing. Brew swept it out after a couple of days.

I re-submit the scratch build: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=9671300

As soon as I hear a positive feedback from you, I'll push it as the new update into linux-firmare errata (to make it the official one).

-- Rafael

Comment 12 Oliver Ilian 2015-08-11 15:27:21 UTC
The Package does not solve the problem:

Transaction check error:
  file /usr/lib/firmware/mrvl/sd8787_uapsta.bin from install of linux-firmware-20150727-41.git75cc3ef.el7.noarch conflicts with file from package libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7_0.noarch

Comment 13 Rafael Aquini 2015-08-12 13:25:53 UTC
(In reply to Oliver Haessler from comment #12)
> The Package does not solve the problem:
> 
> Transaction check error:
>   file /usr/lib/firmware/mrvl/sd8787_uapsta.bin from install of
> linux-firmware-20150727-41.git75cc3ef.el7.noarch conflicts with file from
> package libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7_0.noarch

Sorry! Would you mind re-testing with this new scratch build?

  http://brewweb.devel.redhat.com/brew/taskinfo?taskID=9679418

I think the problem was in the way I declared libertas-*-firmware as Obsolete, in the rpm spec. Let's see if now it works OK.

-- Rafael

Comment 14 Oliver Ilian 2015-08-12 14:18:54 UTC
Would not mind at all. And it works:

Installing:
 linux-firmware                   noarch                   20150727-41.git75cc3ef.el7                   /linux-firmware-20150727-41.git75cc3ef.el7.noarch                    63 M
     replacing  libertas-sd8686-firmware.noarch 20140804-0.1.git6bce2b0.el7_0
     replacing  libertas-sd8787-firmware.noarch 20140804-0.1.git6bce2b0.el7_0
     replacing  libertas-usb8388-firmware.noarch 2:20140804-0.1.git6bce2b0.el7_0

and it installs.

Comment 15 Rafael Aquini 2015-08-12 16:21:21 UTC
(In reply to Oliver Haessler from comment #14)
> Would not mind at all. And it works:
> 
[...]
> and it installs.

Thanks a lot for your help here. I'll wrap up the official build for this fix ASAP. Soon it'll be available for your internal repo too.

-- Rafael

Comment 18 Rachel Sibley 2015-08-17 16:33:33 UTC
ALL TESTES PASSED

Environment:
=================================
~]# rpm -q linux-firmware
linux-firmware-20140804-0.1.git6bce2b0.el7.noarch

~]# rpm -q libertas-sd8787-firmware
libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7.noarch

~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)

~]# uname -r
3.10.0-229.el7.x86_64


Before:
=================================
~]# yum update linux-firmware-20150612-37.git3161bfa.el7.noarch.rpm
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
linux-firmware-20150612-37.git3161bfa.el7.noarch.rpm                                                                                                 |  20 MB  00:00:00     
Examining /var/tmp/yum-root-fJ8zoe/linux-firmware-20150612-37.git3161bfa.el7.noarch.rpm: linux-firmware-20150612-37.git3161bfa.el7.noarch
Marking /var/tmp/yum-root-fJ8zoe/linux-firmware-20150612-37.git3161bfa.el7.noarch.rpm as an update to linux-firmware-20140804-0.1.git6bce2b0.el7.noarch
Resolving Dependencies
--> Running transaction check
---> Package linux-firmware.noarch 0:20140804-0.1.git6bce2b0.el7 will be updated
---> Package linux-firmware.noarch 0:20150612-37.git3161bfa.el7 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================
 Package                        Arch                   Version                                      Repository                                                         Size
============================================================================================================================================================================
Updating:
 linux-firmware                 noarch                 20150612-37.git3161bfa.el7                   /linux-firmware-20150612-37.git3161bfa.el7.noarch                  54 M

Transaction Summary
============================================================================================================================================================================
Upgrade  1 Package

Total size: 54 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test


Transaction check error:
  file /usr/lib/firmware/mrvl/sd8787_uapsta.bin from install of linux-firmware-20150612-37.git3161bfa.el7.noarch conflicts with file from package libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7.noarch  <------

Error Summary
-------------

After:
=================================
~]# yum update linux-firmware-20150727-41.git75cc3ef.el7.noarch.rpm
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
linux-firmware-20150727-41.git75cc3ef.el7.noarch.rpm                                                                                                 |  23 MB  00:00:00     
Examining /var/tmp/yum-root-fJ8zoe/linux-firmware-20150727-41.git75cc3ef.el7.noarch.rpm: linux-firmware-20150727-41.git75cc3ef.el7.noarch
Marking /var/tmp/yum-root-fJ8zoe/linux-firmware-20150727-41.git75cc3ef.el7.noarch.rpm as an update to linux-firmware-20140804-0.1.git6bce2b0.el7.noarch
Resolving Dependencies
--> Running transaction check
---> Package libertas-sd8787-firmware.noarch 0:20140804-0.1.git6bce2b0.el7 will be obsoleted
---> Package linux-firmware.noarch 0:20140804-0.1.git6bce2b0.el7 will be updated
---> Package linux-firmware.noarch 0:20150727-41.git75cc3ef.el7 will be obsoleting
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================
 Package                        Arch                   Version                                      Repository                                                         Size
============================================================================================================================================================================
Installing:
 linux-firmware                 noarch                 20150727-41.git75cc3ef.el7                   /linux-firmware-20150727-41.git75cc3ef.el7.noarch                  63 M
     replacing  libertas-sd8787-firmware.noarch 20140804-0.1.git6bce2b0.el7

Transaction Summary
============================================================================================================================================================================
Install  1 Package

Total size: 63 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : linux-firmware-20150727-41.git75cc3ef.el7.noarch                                                                                                         1/3 
  Erasing    : libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7.noarch                                                                                              2/3 
  Cleanup    : linux-firmware-20140804-0.1.git6bce2b0.el7.noarch                                                                                                        3/3 
  Verifying  : linux-firmware-20150727-41.git75cc3ef.el7.noarch                                                                                                         1/3 
  Verifying  : linux-firmware-20140804-0.1.git6bce2b0.el7.noarch                                                                                                        2/3 
  Verifying  : libertas-sd8787-firmware-20140804-0.1.git6bce2b0.el7.noarch                                                                                              3/3 

Installed:
  linux-firmware.noarch 0:20150727-41.git75cc3ef.el7                                                                                                                        

Replaced:
  libertas-sd8787-firmware.noarch 0:20140804-0.1.git6bce2b0.el7                                                                                                             

Complete!

~]# rpm -q linux-firmware
linux-firmware-20150727-41.git75cc3ef.el7.noarch

Comment 19 errata-xmlrpc 2015-11-19 10:17:48 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2015-2123.html