Bug 1251037

Summary: repoclosure doesn't find undefined %epoch broken dep
Product: [Fedora] Fedora Reporter: Michael Schwendt <bugs.michael>
Component: createrepoAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED EOL QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 22CC: admiller, lmacken, packaging-team-maint, tim.lauridsen
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-07-19 17:23:39 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 Michael Schwendt 2015-08-06 12:55:31 UTC
As a followup to my thread on devel@ and test@ list with the subject "Undefined %epoch problem (Re: rawhide report: 20150730 changes)", Yum utils repoclosure has been confirmed as being the culprit, since it is still the tool that mash's spam-o-matic script relies on.

(!) Important: There is a fixed "blktap" build in updates-testing, so the problem is only reproducible as long as that fix is not pushed into "updates". In that case, it will be necessary to create a dummy broken package to include an undefined %epoch macro in a dependency again.

So, watch this (Fedora 22 x86_64):

# repoclosure 

Yum-utils package has been deprecated, use dnf instead.
See 'man yum2dnf' for more information.


Reading in repository metadata - please wait....
Checking Dependencies
Repos looked at: 3
   adobe-linux-x86_64
   fedora
   updates
Num Packages in Repos: 53025


Compare with:

# dnf install blktap-devel -y
Last metadata expiration check performed 0:21:15 ago on Thu Aug  6 14:33:51 2015.
Dependencies resolved.
===============================================================================================================================================
 Package                           Arch                        Version                                       Repository                   Size
===============================================================================================================================================
Installing:
 blktap                            x86_64                      3.0.0-2.fc22.git0.9.2                         fedora                      243 k
 blktap-devel                      x86_64                      3.0.0-2.fc22.git0.9.2                         fedora                       21 k

Transaction Summary
===============================================================================================================================================
Install  2 Packages

Total download size: 263 k
Installed size: 773 k
Downloading Packages:
(1/2): blktap-devel-3.0.0-2.fc22.git0.9.2.x86_64.rpm                                                           233 kB/s |  21 kB     00:00    
(2/2): blktap-3.0.0-2.fc22.git0.9.2.x86_64.rpm                                                                 970 kB/s | 243 kB     00:00    
-----------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                          157 kB/s | 263 kB     00:01     
Running transaction check
Error: transaction check vs depsolve:
blktap(x86-64) = %{epoch}:3.0.0-2.fc22.git0.9.2 is needed by blktap-devel-3.0.0-2.fc22.git0.9.2.x86_64
To diagnose the problem, try running: 'rpm -Va --nofiles --nodigest'.
You probably have corrupted RPMDB, running 'rpm --rebuilddb' might fix the issue.
The downloaded packages were saved in cache till the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'

Comment 1 Michael Schwendt 2015-08-06 13:05:43 UTC
Yum backend is affected, too:

# rpm -qf /usr/bin/yum-deprecated 
yum-3.4.3-505.fc22.noarch


# yum-deprecated install blktap-devel
Yum command has been deprecated, use dnf instead.
See 'man dnf' and 'man yum2dnf' for more information.

Resolving Dependencies
--> Running transaction check
---> Package blktap-devel.x86_64 0:3.0.0-2.fc22.git0.9.2 will be installed
--> Processing Dependency: blktap(x86-64) = 3.0.0-2.fc22.git0.9.2 for package: blktap-devel-3.0.0-2.fc22.git0.9.2.x86_64
--> Processing Dependency: libvhd.so.0()(64bit) for package: blktap-devel-3.0.0-2.fc22.git0.9.2.x86_64
--> Processing Dependency: libblktapctl.so.0()(64bit) for package: blktap-devel-3.0.0-2.fc22.git0.9.2.x86_64
--> Running transaction check
---> Package blktap.x86_64 0:3.0.0-2.fc22.git0.9.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package                     Arch                  Version                                Repository             Size
======================================================================================================================
Installing:
 blktap-devel                x86_64                3.0.0-2.fc22.git0.9.2                  fedora                 21 k
Installing for dependencies:
 blktap                      x86_64                3.0.0-2.fc22.git0.9.2                  fedora                243 k

Transaction Summary
======================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 263 k
Installed size: 773 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): blktap-3.0.0-2.fc22.git0.9.2.x86_64.rpm                                                 | 243 kB  00:00:00     
(2/2): blktap-devel-3.0.0-2.fc22.git0.9.2.x86_64.rpm                                           |  21 kB  00:00:00     
----------------------------------------------------------------------------------------------------------------------
Total                                                                                 793 kB/s | 263 kB  00:00:00     
Running transaction check
ERROR with transaction check vs depsolve:
blktap(x86-64) = %{epoch}:3.0.0-2.fc22.git0.9.2 is needed by blktap-devel-3.0.0-2.fc22.git0.9.2.x86_64
 You could try running: rpm -Va --nofiles --nodigest
Your transaction was saved, rerun it with:
 yum load-transaction /tmp/yum_save_tx.2015-08-06.15-03.s10MCj.yumtx

Comment 2 Michael Schwendt 2015-08-06 16:46:04 UTC
Followup to devel@ list. It's createrepo (and createrepo_c) that only understand numbers as Epochs due to relying on strtol() as parser. Any non-number, such as an undefined macro or a typo, results in a default Epoch 0 in the repodata.

Comment 3 Fedora End Of Life 2016-07-19 17:23:39 UTC
Fedora 22 changed to end-of-life (EOL) status on 2016-07-19. Fedora 22 is
no longer maintained, which means that it will not receive any further
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version. If you
are unable to reopen this bug, please file a new report against the
current release. If you experience problems, please add a comment to this
bug.

Thank you for reporting this bug and we are sorry it could not be fixed.