[yum-cvs] yum/rpmUtils arch.py,1.13,1.13.4.1

Jeremy Katz katzj at linux.duke.edu
Wed Jan 3 18:13:46 UTC 2007


Update of /home/groups/yum/cvs/yum/rpmUtils
In directory login1.linux.duke.edu:/tmp/cvs-serv19842/rpmUtils

Modified Files:
      Tag: yum-3_0_X
	arch.py 
Log Message:
sparc support from spot (rh#220953)


Index: arch.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/rpmUtils/arch.py,v
retrieving revision 1.13
retrieving revision 1.13.4.1
diff -u -r1.13 -r1.13.4.1
--- arch.py	23 Oct 2005 16:03:42 -0000	1.13
+++ arch.py	3 Jan 2007 18:13:44 -0000	1.13.4.1
@@ -5,7 +5,8 @@
 
 # dict mapping arch -> ( multicompat, best personality, biarch personality )
 multilibArches = { "x86_64":  ( "athlon", "x86_64", "athlon" ),
-                   "sparc64": ( "sparc", "sparc", "sparc64" ),
+		   "sparc64v": ( "sparc", "sparcv9v", "sparc64v" ),
+                   "sparc64": ( "sparc", "sparcv9", "sparc64" ),
                    "ppc64":   ( "ppc", "ppc", "ppc64" ),
                    "s390x":   ( "s390", "s390x", "s390" ),
                    "ia64":    ( "i686", "ia64", "i686" )
@@ -38,7 +39,10 @@
     "s390": "noarch",
     
     # sparc
+    "sparc64v": "sparc64",
+    "sparc64v": "sparcv9v",
     "sparc64": "sparcv9",
+    "sparcv9v": "sparcv9",
     "sparcv9": "sparcv8",
     "sparcv8": "sparc",
     "sparc": "noarch",
@@ -125,6 +129,11 @@
     while arches.has_key(thisarch):
         thisarch = arches[thisarch]
         archlist.append(thisarch)
+
+    # hack hack hack
+    # sparc64v is also sparc64 compat
+    if archlist[0] == "sparc64v":
+	archlist.insert(1,"sparc64")
     
     return archlist
     
@@ -170,6 +179,29 @@
         return "ppc64iseries"
     return arch
 
+def getCanonSPARCArch(arch):
+    # Deal with sun4v, sun4u, sun4m cases
+    f = open("/proc/cpuinfo", "r")
+    lines = f.readlines()
+    f.close()
+    for line in lines:
+	if line.startswith("type"):
+	    SPARCtype = line.split(':')[1]
+	    break
+    if SPARCtype.find("sun4v") != -1:
+	if arch.startswith("sparc64"):
+	    return "sparc64v"
+	else:
+	    return "sparcv9v"
+    if SPARCtype.find("sun4u") != -1:
+	if arch.startswith("sparc64"):
+	    return "sparc64"
+	else:
+	    return "sparcv9"
+    if SPARCtype.find("sun4m") != -1:
+	return "sparcv8"
+    return arch
+
 def getCanonX86_64Arch(arch):
     if arch != "x86_64":
         return arch
@@ -209,6 +241,8 @@
 
     if arch.startswith("ppc"):
         return getCanonPPCArch(arch)
+    if arch.startswith("sparc"):
+	return getCanonSPARCArch(arch)
     if arch == "x86_64":
         return getCanonX86_64Arch(arch)
 
@@ -228,7 +262,7 @@
 def getBestArch():
     arch = canonArch
 
-    if arch == "sparc64":
+    if arch.startswith("sparc64"):
         arch = "sparc"
 
     if arch.startswith("ppc64"):
@@ -247,7 +281,7 @@
     if not arches.has_key(myarch): # this is dumb, but <shrug>
         return myarch
 
-    if myarch == "sparc64":
+    if myarch.startswith("sparc64"):
         return "sparc"
     elif myarch.startswith("ppc64"):
         return "ppc"




More information about the Yum-cvs-commits mailing list