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 c905b55a66949cbcd3052c47214141674e52d409..ad7c09933c69ad2058d4b0dcc366733ba988c28b 100644 (file)
 
 # 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 zipfile
 
+
 # extension stripping
 def strip_extension(filename):
-       extensions = ['.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe']
+    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
 
-       for ext in extensions:
-               if filename.endswith(ext):
-                       filename = filename[:-len(ext)]
-
-       return filename
 
 # extract platform from package name
 def get_platform(filename):
-       # name is blender-version-platform.extension. we want to get the
-       # platform out, but there may be some variations, so we fiddle a
-       # bit to handle current and hopefully future names
-       filename = strip_extension(filename)
-       filename = strip_extension(filename)
+    # name is blender-version-platform.extension. we want to get the
+    # platform out, but there may be some variations, so we fiddle a
+    # bit to handle current and hopefully future names
+    filename = strip_extension(filename)
+    filename = strip_extension(filename)
+
+    tokens = filename.split("-")
+    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:
+                if platform in token.lower():
+                    found = True
+                    break
 
-       tokens = filename.split("-")
-       platforms = ['osx', 'mac', 'bsd', 'windows', 'linux', 'source', 'irix', 'solaris']
-       platform_tokens = []
-       found = False
+        if found:
+            platform_tokens += [token]
 
-       for i, token in enumerate(tokens):
-               if not found:
-                       for platform in platforms:
-                               if token.lower().find(platform) != -1:
-                                       found = True
+    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")
-       sys.exit(1)
+    sys.stderr.write("Not enough arguments, expecting file to unpack\n")
+    sys.exit(1)
 
 filename = sys.argv[1]
 
 # open zip file
 if not os.path.exists(filename):
-       sys.stderr.write("File " + filename + " not found.\n")
-       sys.exit(1)
+    sys.stderr.write("File %r not found.\n" % filename)
+    sys.exit(1)
 
 try:
-       z = zipfile.ZipFile(filename, "r")
+    z = zipfile.ZipFile(filename, "r")
 except Exception, ex:
-       sys.stderr.write('Failed to open zip file: ' + str(ex) + '\n')
-       sys.exit(1)
+    sys.stderr.write('Failed to open zip file: %s\n' % str(ex))
+    sys.exit(1)
 
 if len(z.namelist()) != 1:
-       sys.stderr.write("Expected on file in " + filename + ".")
-       sys.exit(1)
+    sys.stderr.write("Expected one file in %r." % filename)
+    sys.exit(1)
 
 package = z.namelist()[0]
 packagename = os.path.basename(package)
 
-# detect platform
+# detect platform and branch
 platform = get_platform(packagename)
+branch = get_branch(packagename)
 
 if platform == '':
-       sys.stderr.write('Failed to detect platform from package: ' + packagename + '\n')
-       sys.exit(1)
+    sys.stderr.write('Failed to detect platform ' +
+        'from package: %r\n' % packagename)
+    sys.exit(1)
 
 # extract
-dir = 'public_html/latest_builds'
+directory = 'public_html/download'
 
 try:
-       zf = z.open(package)
-       f = file(os.path.join(dir, packagename), "wb")
+    zf = z.open(package)
+    f = file(os.path.join(directory, packagename), "wb")
 
-       shutil.copyfileobj(zf, f)
+    shutil.copyfileobj(zf, f)
 
-       zf.close()
-       z.close()
+    zf.close()
+    z.close()
+
+    os.remove(filename)
 except Exception, ex:
-       sys.stderr.write('Failed to unzip package: ' + str(ex) + '\n')
-       sys.exit(1)
+    sys.stderr.write('Failed to unzip package: %s\n' % str(ex))
+    sys.exit(1)
 
-# remove other files from the same platform
+# remove other files from the same platform and branch
 try:
-       for f in os.listdir(dir):
-               if f.lower().find(platform.lower()) != -1:
-                       if f != packagename:
-                               os.remove(os.path.join(dir, f))
+    for f in os.listdir(directory):
+        if get_platform(f) == platform and get_branch(f) == branch:
+            if f != packagename:
+                os.remove(os.path.join(directory, f))
 except Exception, ex:
-       sys.stderr.write('Failed to remove old packages: ' + str(ex) + '\n')
-       sys.exit(1)
-
+    sys.stderr.write('Failed to remove old packages: %s\n' % str(ex))
+    sys.exit(1)