Bug 133045

Summary: i386 packages don't get upgraded on x86-64
Product: [Fedora] Fedora Reporter: Nicholas Miell <nmiell>
Component: anacondaAssignee: Paul Nasrat <pnasrat>
Status: CLOSED RAWHIDE QA Contact: Mike McLean <mikem>
Severity: medium Docs Contact:
Priority: medium    
Version: 3CC: hongjiu.lu, katzj, pnasrat, wtogami
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-02-24 04:13:33 EST Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Bug Depends On:    
Bug Blocks: 130887, 133260    
Attachments:
Description Flags
upgrade.log, rpmpkgs, rpmpkgs.1
none
findpackageset
none
Python trace
none
Simple testcase not requiring install none

Description Nicholas Miell 2004-09-21 01:17:33 EDT
After an upgrade from FC2 to FC3t1, for any package with both i386 and
x86-64 versions installed, only the x86-64 version of the package was
upgraded.
Comment 1 Paul Nasrat 2004-09-21 07:01:50 EDT
I wonder if this is the always prefer 64 bit in a transaction.

Quick test, for a biarch package that you care little about (and has
no package requiring it) roll both back to an earlier version (or
update to a later rahwide version if available)

rpm --qf '%{name}-%{version}-%{release}.%{arch}\n' -q testpackage
rpm -Uvh testpackage.i386.rpm testpackage.x86_64.rpm
rpm --qf '%{name}-%{version}-%{release}.%{arch}\n' -q testpackage
Comment 2 Nicholas Miell 2004-09-21 19:42:13 EDT
Unfortunately, the only biarch packages I have installed is glibc, and
that's because grub requires it, and that obviously has things
requiring it. So, no rollbacks/upgrades possible in that scenario.

The reason for this is that I got bit by a bunch of biarch problems
with  FC2 and just removed all i386 packages (except for glibc, which
the x86-64 version of grub requires).

Now that I think about it, I know this also happened with the FC2
versions of anaconda & rpm, which predates the "always prefer Elf64"
changes.

After the FC2 upgrade, I remember that freetype.x86_64 had been
upgraded and but not freetype.i386, and this led me to notice that
none of the other i386 packages had been upgraded as well.

(I rebuild freetype with the TrueType bytecode interpreter enabled,
and the upgrade resulted in the 64-bit apps using ugly fonts while the
32-bit apps still displayed nicely hinted fonts.)

Sorry for the delayed bug report.
Comment 3 Paul Nasrat 2004-09-22 01:50:28 EDT
Please attach /var/log/rpmpkgs /var/log/rpmpkgs.1 and the anaconda
logs /root/upgrade.log.*
Comment 4 Paul Nasrat 2004-09-22 01:51:47 EDT
sorry /root/upgrade.log*
Comment 5 Nicholas Miell 2004-09-22 02:01:12 EDT
Created attachment 104108 [details]
upgrade.log, rpmpkgs, rpmpkgs.1

Here you go. upgrade.log.syslog was empty, so I omitted it.
Comment 6 Paul Nasrat 2004-09-22 03:17:57 EDT
Can not confirm that from the logs started with:

freetype-2.1.7-4.njm.1.x86_64.rpm
freetype-demos-2.1.7-4.njm.1.x86_64.rpm
freetype-devel-2.1.7-4.njm.1.x86_64.rpm
freetype-utils-2.1.7-4.njm.1.x86_64.rpm

update did

Upgrading freetype-2.1.9-1.x86_64.
Upgrading freetype-devel-2.1.9-1.x86_64.
Upgrading freetype-demos-2.1.9-1.x86_64.
Upgrading freetype-utils-2.1.9-1.x86_64.

reporting 

The following packages were available in this version but NOT upgraded:

freetype-2.1.9-1.i386.rpm

Then you rebuilt

freetype-2.1.9-1.njm.1.x86_64.rpm
freetype-demos-2.1.9-1.njm.1.x86_64.rpm
freetype-devel-2.1.9-1.njm.1.x86_64.rpm
freetype-utils-2.1.9-1.njm.1.x86_64.rpm
freetype-2.1.7-4.njm.1.x86_64.rpm

Are you 100% positive you had freetype.i386 installed?
Comment 7 Nicholas Miell 2004-09-22 04:29:06 EDT
I did when I upgraded from FC1 to FC2. Since then, I removed all i386
packages except glibc and libgcc.

(All that rambling about freetype was me remembering that I had this
exact same problem with the FC1 to FC2 upgrade, prior to the "always
prefer Elf64" changes to RPM.)
Comment 8 Paul Nasrat 2004-09-22 04:44:35 EDT
I'm just trying to clarify the bug details to a specific case, you state:

Upgrade from FC2 to FC3T2 - any i386 package not upgraded.

Pre upgrade (rpm:

glibc-devel-2.3.3-27.i386.rpm
libgcc-3.3.3-7.i386.rpm

upgrade log:

Upgrading glibc-devel-2.3.3-53.x86_64.
but says not doing this glibc-devel-2.3.3-53.i386.rpm

Post upgrade (rpmpkgs):

glibc-devel-2.3.3-54.i386.rpm
glibc-devel-2.3.3-54.x86_64.rpm

Did you install glibc-devel.i386 manually after the upgrade?
Comment 9 Nicholas Miell 2004-09-22 04:50:20 EDT
Yes, I manually updated glibc.i386, glibc-devel.i386, and libgcc.i386.
Comment 10 Jeremy Katz 2004-09-27 15:26:47 EDT
*** Bug 133820 has been marked as a duplicate of this bug. ***
Comment 11 Paul Nasrat 2004-09-29 04:30:45 EDT
I've created a fix for this on HEAD and will be out on next anaconda
roll - if you are available to test let me know here or better on
irc.freenode.net #fedora-bugweek nick: nasrat and I can supply an
updated python file for you to test.
Comment 12 H.J. Lu 2004-09-29 11:58:22 EDT
Could you please attach the fix here? I can give it a try on ia64 and
x86-64.
Comment 13 Paul Nasrat 2004-09-29 12:34:46 EDT
Created attachment 104520 [details]
findpackageset

Assuming you are doing exploded nfs tree - create RHupdates/ at top of the
rawhide/fc3tX tree and put the attached python file in. eg:

.
|-- Fedora
|   |-- RPMS
|   `-- base
|-- RHupdates
|-- images


More details about updates are available in
/usr/share/anaconda-.../install-methods.txt (where ... is anaconda version).
Comment 14 H.J. Lu 2004-09-29 19:42:50 EDT
Created attachment 104555 [details]
Python trace

I need this patch

--- findpackageset.py.rhel4	2004-09-29 12:02:03.000000000 -0700
+++ findpackageset.py	2004-09-29 16:21:49.426650553 -0700
@@ -94,6 +94,8 @@ def findpackageset(hdrlist, dbPath='/'):
  
     hdlist = availDict.values()
      
+    ts = rpm.TransactionSet(dbPath)
+
     # loop through packages and find ones which are a newer
     # version than what we have
     for ( name, arch ) in instDict.keys():

to avoid the crash on RHEL 4 b1. But now I got this Python crash
Comment 15 Paul Nasrat 2004-09-30 02:10:26 EDT
Thanks for catching that.  I overy entusiastically refactored it out
whilst still using it in obsolete handling. Fix in anaconda 10.0.3.8-1

The trace seems unrelated to this bug in particular - if it's
reproducible without the RHupdates on latest rawhide please file a
seperate bug.

I'll try and reproduce locally here.

Comment 16 Paul Nasrat 2004-09-30 07:45:43 EDT
Created attachment 104579 [details]
Simple testcase not requiring install

A simple test case that you can run with anaconda installed from rawhide today
(10.0.3.8-1)

It supports using a hdlist or generating one from a dir  of rpms on the fly

test-findpackageset.py --hdlist ./hdlist
Comment 17 H.J. Lu 2004-09-30 19:41:31 EDT
The modified findpackageset.py works for me on x86-64. I
created a new boot.iso with the modified initrd.img which
has findpackageset.py under /tmp/updates. I used the new
boot.iso with the original RHEL 4 beta 1 ISOs.
Comment 18 Paul Nasrat 2004-10-05 08:27:16 EDT
Inspected twaugh's upgrade logs and rpm -qa before/after:

snippet:

Upgrading howl-libs-0.9.6-6.i386.
Upgrading howl-libs-0.9.6-6.x86_64.
Upgrading ORBit2-2.12.0-3.i386.
Upgrading ORBit2-2.12.0-3.x86_64.
Upgrading libbonobo-2.8.0-2.i386.
Upgrading libbonobo-2.8.0-2.x86_64.
...

biarch seems happy.