[cig-commits] r18025 - cs/buildbot/trunk/buildbot/scripts

brad at geodynamics.org brad at geodynamics.org
Thu Mar 3 12:55:23 PST 2011


Author: brad
Date: 2011-03-03 12:55:23 -0800 (Thu, 03 Mar 2011)
New Revision: 18025

Modified:
   cs/buildbot/trunk/buildbot/scripts/packager.py
Log:
First attempt at revised packaging script.

Modified: cs/buildbot/trunk/buildbot/scripts/packager.py
===================================================================
--- cs/buildbot/trunk/buildbot/scripts/packager.py	2011-03-03 20:20:26 UTC (rev 18024)
+++ cs/buildbot/trunk/buildbot/scripts/packager.py	2011-03-03 20:55:23 UTC (rev 18025)
@@ -8,114 +8,48 @@
 
 class PackingList(object):
     def __init__(self, config, opSys, python):
-        self.stripList = []
-        stripList = self.stripList
+        
+        binDirs = ["bin", "sbin"]
+        libDirs = ["lib", "libexec"]
+        miscDirs = ["conf", "etc", "include", "share"]
+        if platform.machine() == "x86 64":
+            libDirs.append("lib64")
 
-        exe = ""
-        if opSys == "win":
-            exe = ".exe"
-            libglob = "bin/*%s*.dll"
-        elif opSys == "linux":
-            libglob = "lib/lib%s*.so*"
-        elif opSys == "darwin":
-            libglob = "lib/lib%s*.dylib"
-        else:
-            sys.exit("unknown OS: " + opSys)
-        self.exe = exe
+        self.directories = binDirs + libDirs + miscDirs
 
-        self.directories = []
-        for d in config.packaging.directories:
-            self.directories.append(d)
-
         self.programs = []
-        for p in config.packaging.programs:
-            p = "bin/" + p + exe
-            stripList.append(p)
-            self.programs.append(p)
+        for d in binDirs:
+            files = os.listdir(d)
+            for f in files:
+                self.programs.append(d+"/"+f)
+            
+        self.programs = []
+        for d in binDirs:
+            files = os.listdir(d)
+            for f in files:
+                self.programs.append(d+"/"+f)
 
+        self.libraries = []
+        for d in libDirs:
+            files = os.listdir(d)
+            for f in files:
+                self.libraries.append(d+"/"+f)
+
+        self.misc = ["setup.sh"]
+        for d in miscDirs:
+            files = os.listdir(d)
+            for f in files:
+                self.misc.append(d+"/"+f)
+            
+        # Scripts are application specific.
         self.scripts = []
         for s in config.packaging.scripts:
             s = "bin/" + s
             self.scripts.append(s)
 
-        self.libraries = []
-        petsc = None
-        libraries = config.packaging.libraries[:]
-        if opSys == "linux":
-            libraries.extend(["stdc++", "gcc_s", "g2c",
-                              "gfortran", "f77blas", "cblas", "atlas" # x86_64
-                              ])
-        if opSys == "darwin":
-            libraries.extend(["stdc++", "gcc_s", "gfortran"])
-        for l in libraries:
-            if l == "mpi":
-                l = "*mpich"
-                for p in ["mpirun", "mpiexec"]: # mpirun is evil symlink
-                    p = "bin/" + p + exe
-                    self.programs.append(p)
-            elif l == "petsc" or l == "petsc-dev":
-                petsc = l
-                continue
-            if opSys == "win" and l == "*mpich":
-                l = "lib/*mpich*.dll"
-            else:
-                l = libglob % l
-            libs = glob(l)
-            stripList.extend(libs)
-            self.libraries.extend(libs)
-        if petsc:
-            petsc_arch = os.environ['PETSC_ARCH']
-            petsc_arch_dir = "opt/" + petsc + "/" + petsc_arch
-            if isdir(petsc_arch_dir):
-                petsc_libglob = petsc_arch_dir + "/" + libglob
-            else:
-                # PETSc v2.3.3 and earlier
-                petsc_libglob = ("opt/" + petsc + "/" +
-                                 libglob.replace("/", "/" + petsc_arch + "/"))
-            l = petsc_libglob % ""
-            libs = glob(l)
-            stripList.extend(libs)
-            if opSys == "win":
-                # Install DLLs under 'bin'.
-                libs = [(dll, "bin") for dll in libs]
-            self.libraries.extend(libs)
+        self.stripList = []
+        self.stripList.extend(self.libraries)
 
-        self.misc = []
-        for f in config.packaging.files:
-            self.misc.append(f)
-        if opSys == "darwin":
-            # I couldn't get @executable_path working for Python
-            # extension modules; hence, this hack.
-            self.misc.append("setup.sh")
-        elif opSys == "linux":
-            # Brad wants this.  Plus, RPATH doesn't seem to work on some systems.
-            self.misc.append("setup.sh")
-        
-        self.python = []
-        
-        if config.packaging.python:
-            # Unfortunately, this will include all site-packages... oh well.
-            # Note that Windows has its own logic for including Python.
-            self.directories.append("lib/" + python)
-            if opSys == "linux":
-                self.directories.append("include/" + python) # for distutils
-            l = libglob % "python"
-            libs = glob(l)
-            self.libraries.extend(libs)
-
-        else:
-            # A better way to do site-packages.
-            for p in config.packaging.python:
-                p = "lib/" + python + "/site-packages/" + p
-                # Here we use glob expansion b/c eggs make the actual
-                # directory names hard to determine.
-                entries = glob(p)
-                for e in entries:
-                    if isfile(e):
-                        self.misc.append(e)
-                    else:
-                        self.directories.append(e)
-
         cig = [("CIG", "cig", "http://www.geodynamics.org/")]
         self.urls = cig + tupleUp(config.packaging.urls, 3)
 
@@ -132,8 +66,6 @@
     def files(self):
         for f in self.programs:
             yield f
-        for f in self.scripts:
-            yield f
         for f in self.libraries:
             yield f
         for f in self.misc:



More information about the CIG-COMMITS mailing list