BGE: Adding two new functions to bge.render to allow users to change the anisotropic...
[blender-staging.git] / build_files / buildbot / master_unpack.py
index 8580fd3d6d629bebbd2d92127b9ca6a6a194631c..ad7c09933c69ad2058d4b0dcc366733ba988c28b 100644 (file)
@@ -19,6 +19,8 @@
 # Runs on Buildbot master, to unpack incoming unload.zip into latest
 # builds directory and remove older builds.
 
 # Runs on Buildbot master, to unpack incoming unload.zip into latest
 # builds directory and remove older builds.
 
+# <pep8 compliant>
+
 import os
 import shutil
 import sys
 import os
 import shutil
 import sys
@@ -27,13 +29,12 @@ import zipfile
 
 # extension stripping
 def strip_extension(filename):
 
 # extension stripping
 def strip_extension(filename):
-    extensions = ['.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe']
-
-    for ext in extensions:
-        if filename.endswith(ext):
-            filename = filename[:-len(ext)]
-
-    return filename
+    extensions = '.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe'
+    filename_noext, ext = os.path.splitext(filename)
+    if ext in extensions:
+        return strip_extension(filename_noext)  # may have .tar.bz2
+    else:
+        return filename
 
 
 # extract platform from package name
 
 
 # extract platform from package name
@@ -45,21 +46,40 @@ def get_platform(filename):
     filename = strip_extension(filename)
 
     tokens = filename.split("-")
     filename = strip_extension(filename)
 
     tokens = filename.split("-")
-    platforms = ['osx', 'mac', 'bsd', 'windows', 'linux', 'source', 'irix', 'solaris']
+    platforms = ('osx', 'mac', 'bsd',
+                 'win', 'linux', 'source',
+                 'irix', 'solaris')
     platform_tokens = []
     found = False
 
     for i, token in enumerate(tokens):
         if not found:
             for platform in platforms:
     platform_tokens = []
     found = False
 
     for i, token in enumerate(tokens):
         if not found:
             for platform in platforms:
-                if token.lower().find(platform) != -1:
+                if platform in token.lower():
                     found = True
                     found = True
+                    break
 
         if found:
             platform_tokens += [token]
 
     return '-'.join(platform_tokens)
 
 
         if found:
             platform_tokens += [token]
 
     return '-'.join(platform_tokens)
 
+
+def get_branch(filename):
+    tokens = filename.split("-")
+    branch = ""
+
+    for token in tokens:
+        if branch == "":
+            branch = token
+        else:
+            branch = branch + "-" + token
+
+        if token == "blender":
+            return branch
+
+    return ""
+
 # get filename
 if len(sys.argv) < 2:
     sys.stderr.write("Not enough arguments, expecting file to unpack\n")
 # get filename
 if len(sys.argv) < 2:
     sys.stderr.write("Not enough arguments, expecting file to unpack\n")
@@ -69,50 +89,54 @@ filename = sys.argv[1]
 
 # open zip file
 if not os.path.exists(filename):
 
 # open zip file
 if not os.path.exists(filename):
-    sys.stderr.write("File " + filename + " not found.\n")
+    sys.stderr.write("File %r not found.\n" % filename)
     sys.exit(1)
 
 try:
     z = zipfile.ZipFile(filename, "r")
 except Exception, ex:
     sys.exit(1)
 
 try:
     z = zipfile.ZipFile(filename, "r")
 except Exception, ex:
-    sys.stderr.write('Failed to open zip file: ' + str(ex) + '\n')
+    sys.stderr.write('Failed to open zip file: %s\n' % str(ex))
     sys.exit(1)
 
 if len(z.namelist()) != 1:
     sys.exit(1)
 
 if len(z.namelist()) != 1:
-    sys.stderr.write("Expected on file in " + filename + ".")
+    sys.stderr.write("Expected one file in %r." % filename)
     sys.exit(1)
 
 package = z.namelist()[0]
 packagename = os.path.basename(package)
 
     sys.exit(1)
 
 package = z.namelist()[0]
 packagename = os.path.basename(package)
 
-# detect platform
+# detect platform and branch
 platform = get_platform(packagename)
 platform = get_platform(packagename)
+branch = get_branch(packagename)
 
 if platform == '':
 
 if platform == '':
-    sys.stderr.write('Failed to detect platform from package: ' + packagename + '\n')
+    sys.stderr.write('Failed to detect platform ' +
+        'from package: %r\n' % packagename)
     sys.exit(1)
 
 # extract
     sys.exit(1)
 
 # extract
-dir = 'public_html/latest_builds'
+directory = 'public_html/download'
 
 try:
     zf = z.open(package)
 
 try:
     zf = z.open(package)
-    f = file(os.path.join(dir, packagename), "wb")
+    f = file(os.path.join(directory, packagename), "wb")
 
     shutil.copyfileobj(zf, f)
 
     zf.close()
     z.close()
 
     shutil.copyfileobj(zf, f)
 
     zf.close()
     z.close()
+
+    os.remove(filename)
 except Exception, ex:
 except Exception, ex:
-    sys.stderr.write('Failed to unzip package: ' + str(ex) + '\n')
+    sys.stderr.write('Failed to unzip package: %s\n' % str(ex))
     sys.exit(1)
 
     sys.exit(1)
 
-# remove other files from the same platform
+# remove other files from the same platform and branch
 try:
 try:
-    for f in os.listdir(dir):
-        if f.lower().find(platform.lower()) != -1:
+    for f in os.listdir(directory):
+        if get_platform(f) == platform and get_branch(f) == branch:
             if f != packagename:
             if f != packagename:
-                os.remove(os.path.join(dir, f))
+                os.remove(os.path.join(directory, f))
 except Exception, ex:
 except Exception, ex:
-    sys.stderr.write('Failed to remove old packages: ' + str(ex) + '\n')
+    sys.stderr.write('Failed to remove old packages: %s\n' % str(ex))
     sys.exit(1)
     sys.exit(1)