Bug 154154

Summary: pkgorder fails on Opteron server when kernel.ia32e is the only kernel.$arch in the list
Product: Red Hat Enterprise Linux 3 Reporter: James Olin Oden <james.oden>
Component: anacondaAssignee: Anaconda Maintenance Team <anaconda-maint-list>
Status: CLOSED WONTFIX QA Contact: Mike McLean <mikem>
Severity: low Docs Contact:
Priority: medium    
Version: 3.0   
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-04-08 11:11:23 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description James Olin Oden 2005-04-07 21:11:28 UTC
Description of problem:
Basically, I am on an AMD64 system trying to build media that only contains the 
following kernels:
  
   kernel.ia32e
   kernel-smp.x86_64

The goal of course is to have a distro I can use to install on ia32e and AMD 64 
systems but not contain the uniprocessor kernel.  I would like to be able to 
build from either ia32e or AMD 64 build servers.

When I do this pkgorder hurls as was mentioned in the following bug:

   https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=133157

Only, unlike that bug I am on an x86_64 system (just not the x86_64 ia32e 
flavor...could this get any more complicated).  I know exactly where the 
problem is.  Bascily in rhpl.arch.archDifference() it does not understand the 
relatedness of the ia32e architecture to x86_64.  The problem is for the 
purpose of building a distro that has both an ia32e kernel and an x86_64 kernel 
(real AMD 64 kernel) this relationship exists (at build time) but it does not 
at install time. 

At anyrate I patched rhpl.arch with a quick hack I'm unhappy with.  Mainly 
because I don't know how to build in the symantic of build time vs install time.
It works for me, but I think there needs to be a better fix.

Anyway here is the patch:


--- rhpl-0.110.6/src/arch.py.orig       2005-04-07 15:46:53.000000000 -0400
+++ rhpl-0.110.6/src/arch.py    2005-04-07 15:48:37.000000000 -0400
@@ -48,6 +48,11 @@
 def archDifference(myarch, targetarch):
     if myarch == targetarch:
         return 1
+    #
+    # XXX: HACK!  This allows building distro with kernel-smp.x86_64
+    #      and kernel.ia32e but no kernel.x86_64
+    if targetarch == "ia32e" and myarch == "x86_64":
+        return 1
     if arches.has_key(myarch):
         ret = archDifference(arches[myarch], targetarch)
         if ret != 0:
~

Version-Release number of selected component (if applicable):
9.1.4.1

How reproducible:
Very

Steps to Reproduce:
1. Run pkgorder against a list of rpms that contain kernel.ia32e and 
kernel.x86_64 on an Opteron build server.
  
Actual results:
Will explode as in bugzilla 133157.

Expected results:
For it to handle this subtle situation (again, I am not sure what the right way
to do that is).

Additional Info:

Is the ia32e vs x86_64 kernels handeled better in RHEL 4?  Is there any 
documentation (official or otherwise) of RH's stratagy for supporting/dealing 
with the Intel and AMD's similar 64 bit archtitectures?

Thanks...james

Comment 1 Jeremy Katz 2005-04-08 11:11:23 UTC
With RHEL4, they're both in the x86_64 kernel with run-time switching of the few
things that are needed.  For RHEL3, you really need to have kernel.x86_64
present.  Adding this hack is ... short-term and only a hack at best :)