home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.6)
-
- from __future__ import with_statement
- from contextlib import contextmanager
- import commands
- import fnmatch
- import hashlib
- import os.path as os
- import shlex
- import shutil
- import subprocess
- import sys
- pathjoin = os.path.join
- from constants import *
- if sys.platform == 'win32':
- platformName = 'win'
- build_dir = os.path.split(os.path.abspath(__file__))[0]
-
- class buildpaths:
- platform_deps = pathjoin(build_dir, 'msw', 'dependencies')
-
- elif sys.platform == 'darwin':
- platformName = 'mac'
- elif 'linux' in sys.platform:
- platformName = 'gtk'
- else:
- raise AssertionError('Halp! Unknown platform!')
- if sys.platform == 'win32' == 'win':
- platname = 'win32'
- else:
- platname = platformName
- python_version = '26'
-
- try:
- import digsbypaths
- except ImportError:
- path_to_digsby_paths = os.path.normpath(pathjoin(os.path.dirname(os.path.abspath(__file__)), '..', '..'))
- sys.path.append(path_to_digsby_paths)
- import digsbypaths
-
- DEPS_DIR = digsbypaths.get_platlib_dir(DEBUG)
- if not os.path.isdir(DEPS_DIR):
- os.makedirs(DEPS_DIR)
-
- stars = '*' * 80
- if '--quiet' in sys.argv:
-
- def inform(*a, **k):
- pass
-
- else:
-
- def inform(*a, **k):
- if 'banner' in k:
- print '\n%s\n %s\n\n%s\n' % (stars, k['banner'], stars)
- else:
- for arg in a:
- print arg,
-
- print
-
-
- def fatal(msg, return_code = 1):
- print >>sys.stderr, msg
- sys.exit(return_code)
-
-
- class tardep(object):
-
- def __init__(self, url, tar, ext, size, dirname = None, md5 = None, indir = None):
- self.url = url + tar + ext
- self.tar = tar + ext
- self.dirname = None if dirname is not None else tar
- self.size = size
- self.md5 = md5
- self.indir = indir
-
-
- def get(self):
- if not os.path.isdir(self.dirname):
- wget_cached(self.tar, self.size, self.url)
- if self.md5 is not None and md5_file(self.tar, hex = True) != self.md5:
- raise AssertionError('md5 did not match: %r' % self.tar)
- md5_file(self.tar, hex = True) != self.md5
- if self.tar.endswith('.zip'):
- unzip(self.tar)
- else:
- untar(self.tar, indir = self.indir)
- else:
- inform('exists: %s' % self.dirname)
- return self.dirname
-
-
-
- def timed(name = ''):
- time = time
- import time
- before = time()
-
- try:
- yield None
- finally:
- msg = 'took %s secs' % (time() - before)
- if name:
- msg = name + ' ' + msg
-
- inform(msg)
-
-
- timed = contextmanager(timed)
-
- def cd(*path):
- original_cwd = os.getcwd()
-
- try:
- new_cwd = pathjoin(*path)
- os.chdir(new_cwd)
- yield None
- finally:
- os.chdir(original_cwd)
-
-
- cd = contextmanager(cd)
-
- def which(cmd, default = None):
- if platformName == 'win':
- for adir in os.environ['PATH'].split(os.pathsep):
- cmd_path = os.path.join(adir, cmd)
- for ext in [
- ''] + os.environ['PATHEXT'].split(os.pathsep):
- if os.path.exists(cmd_path + ext):
- return cmd_path + ext
-
-
- else:
- return commands.getoutput('which ' + cmd)
- return platformName == 'win'
-
-
- def run(cmd, checkret = True, expect_return_code = 0, capture_stdout = False, env = None, shell = False, executable = None, include_stderr = False):
- inform(cmd)
-
- try:
- if isinstance(cmd, basestring):
- args = shlex.split(cmd.replace('\\', '\\\\'))
- else:
- args = cmd
- if capture_stdout:
- process = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE, env = env, shell = shell)
- else:
- process = subprocess.Popen(args, env = env, shell = shell)
- except OSError:
- print >>sys.stderr, 'Error using Popen: args were %r' % args
- raise
-
- (stdout, stderr) = process.communicate()
- retcode = process.returncode
- if checkret and retcode != expect_return_code:
- print stderr
- print 'Error running %s' % cmd
- sys.exit(retcode)
-
- txt = None if stdout is not None else None
- if txt is not None and include_stderr:
- stdout += stderr
-
- if stdout is not None:
- return stdout.strip()
-
-
- def downloaded(path, size):
- if os.path.exists(path):
- pass
- return os.path.getsize(path) == size
-
- if os.name == 'nt':
-
- def wget(url):
- i = url.rfind('/')
- file = url[i + 1:]
-
- def reporthook(*a):
- print file, a
-
- print url, '->', file
- import urllib
- urllib.urlretrieve(url, file, reporthook)
-
- else:
-
- def wget(url):
- run([
- 'curl',
- '-O',
- url])
-
-
- def unzip(path, verbose = False):
- import zipfile
- makedirs = os.makedirs
- dirname = os.path.dirname
- f = zipfile.ZipFile(path, 'r')
- for info in f.infolist():
- filename = info.filename
-
- try:
- makedirs(dirname(filename))
- except Exception:
- pass
-
- if not filename.endswith('/'):
- open(filename, 'wb').write(f.read(filename))
- continue
-
-
- import tarfile
- makedirs = os.makedirs
- dirname = os.path.dirname
-
- def untar(path, verbose = False, indir = None):
- if sys.platform.startswith('win'):
- print 'untar %s' % path
- fileobj = open(path, 'rb')
-
- try:
- tf = tarfile.open(path, 'r:gz', fileobj = fileobj)
- except:
- fileobj = open(path, 'rb')
- tf = tarfile.open(path, 'r', fileobj = fileobj)
-
- for oInfo in tf:
- if verbose:
- print oInfo.name
-
- if oInfo.isfile():
- strFile = oInfo.name
- if indir is not None:
- strFile = os.path.join(indir, strFile)
-
-
- try:
- makedirs(dirname(strFile))
- except:
- pass
-
- open(strFile, 'wb').write(tf.extractfile(oInfo).read())
- continue
-
- else:
- flags = 'xf'
- if path.endswith('.tar.gz') or path.endswith('.tgz'):
- flags += 'z'
- elif path.endswith('.tar.bz2'):
- flags += 'j'
-
- if verbose:
- flags += 'v'
-
- run([
- 'tar',
- flags,
- path])
-
-
- def wget_cached(filename, size, url):
- if not downloaded(filename, size):
- wget(url)
- else:
- inform('Already downloaded:', filename)
-
-
- def mkdirs(p):
- if not os.path.exists(p):
- inform('making directory %r' % p)
- os.makedirs(p)
-
-
-
- def locate(pattern, root = None):
- if root is None:
- root = os.getcwd()
-
- for path, dirs, files in os.walk(root):
- for filename in (lambda .0: for filename in .0:
- if fnmatch.fnmatch(filename, pattern):
- os.path.abspath(pathjoin(path, filename))continue)(files):
- yield filename
- (None, None)
-
-
-
-
- def filerepl(filename, old, new):
-
- try:
- fin = _[1]
- inbytes = fin.read()
- finally:
- pass
-
- outbytes = inbytes.replace(old, new)
-
- if os.name == 'nt':
-
- def dpy(cmd, platlib = False, addenv = None):
- PYTHON_EXE = os.environ.get('PYTHON_EXE')
- PYTHON_VER = os.environ.get('PYTHON_VER')
- if PYTHON_EXE is None:
-
- try:
- PYTHON_EXE = PYTHON_EXE
- PYTHON_VER = PYTHON_VER
- import build_python
- except ImportError:
- sys.path.append(os.path.abspath(pathjoin(__file__, '../../msw')))
- PYTHON_EXE = PYTHON_EXE
- PYTHON_VER = PYTHON_VER
- import build_python
- except:
- None<EXCEPTION MATCH>ImportError
-
-
- None<EXCEPTION MATCH>ImportError
- env = python_env(platlib, addenv = addenv)
- if PYTHON_VER == '25':
- env.update(DISTUTILS_USE_SDK = '1', MSSdk = '1')
-
- run([
- PYTHON_EXE] + cmd, env = env)
-
- import distutils.msvccompiler as distutils
-
- def list_repl(l, old, new):
- if old in l:
- l.remove(old)
- l.append(new)
-
-
-
- def initialize(self, old_init = distutils.msvccompiler.MSVCCompiler.initialize):
- res = old_init()
- list_repl(self.compile_options, '/GX', '/EHsc')
- list_repl(self.compile_options_debug, '/GX', '/EHsc')
- return res
-
- distutils.msvccompiler.MSVCCompiler.initialize = initialize
- else:
-
- def dpy(cmd, platlib = False):
- run([
- 'python'] + cmd, env = python_env(platlib))
-
-
- def python_env(platlib = False, addenv = None):
- env = dict(os.environ)
- if platlib:
- env['PYTHONPATH'] = os.path.pathsep.join([
- env.get('PYTHONPATH', ''),
- DEPS_DIR])
-
- if addenv is not None:
- env.update(addenv)
-
- return env
-
-
- def copytree_filter(src, dst, symlinks = False, filefilter = None, only_different = False):
- Error = Error
- copy2 = copy2
- copystat = copystat
- import shutil
- if filefilter is None:
-
- filefilter = lambda filename: True
-
- names = os.listdir(src)
- if not os.path.isdir(dst):
- os.makedirs(dst)
-
- errors = []
- for name in names:
- srcname = pathjoin(src, name)
- dstname = pathjoin(dst, name)
-
- try:
- if symlinks and os.path.islink(srcname):
- linkto = os.readlink(srcname)
- os.symlink(linkto, dstname)
- elif os.path.isdir(srcname):
- copytree_filter(srcname, dstname, symlinks, filefilter)
- elif filefilter(srcname):
- copy_func(srcname, dstname)
- continue
- except (IOError, os.error):
- why = None
- errors.append((srcname, dstname, str(why)))
- continue
- except Error:
- err = None
- errors.extend(err.args[0])
- continue
-
- if platformName == 'win':
-
- try:
- copystat(src, dst)
- except WindowsError:
- None<EXCEPTION MATCH>(IOError, os.error)
- None<EXCEPTION MATCH>(IOError, os.error)
- except OSError:
- None<EXCEPTION MATCH>(IOError, os.error)
- why = None<EXCEPTION MATCH>(IOError, os.error)
- None<EXCEPTION MATCH>(IOError, os.error)
- errors.extend((src, dst, str(why)))
- except:
- None<EXCEPTION MATCH>(IOError, os.error)<EXCEPTION MATCH>WindowsError
-
-
-
- None<EXCEPTION MATCH>(IOError, os.error)
-
- try:
- copystat(src, dst)
- except OSError:
- None<EXCEPTION MATCH>(IOError, os.error)
- why = None<EXCEPTION MATCH>(IOError, os.error)
- errors.extend((src, dst, str(why)))
- except:
- None<EXCEPTION MATCH>(IOError, os.error)
-
- if errors:
- raise Error, errors
- errors
-
-
- def _hash_file(hashobj, fileobj, chunksize = 1024):
- read = fileobj.read
- update = hashobj.update
- chunk = read(chunksize)
- while chunk:
- update(chunk)
- chunk = read(chunksize)
-
-
- def md5_file(f, hex = False):
-
- try:
- fobj = _[1]
- md5obj = hashlib.md5()
- _hash_file(md5obj, fobj)
- finally:
- pass
-
- if hex:
- return md5obj.hexdigest()
- return md5obj.digest()
-
-
- def files_different(src, dest):
- isfile = isfile
- pathsplit = split
- getsize = getsize
- isdir = isdir
- import os.path
- srcparent = pathsplit(src)[0]
- destparent = pathsplit(dest)[0]
- if not isdir(srcparent) or not isdir(destparent):
- return True
- if not isfile(src) or not isfile(dest):
- return True
- if getsize(src) != getsize(dest):
- return True
- if md5_file(src) != md5_file(dest):
- return True
- return False
-
-
- def copy_with_prompt(src, dest):
- try_again = True
- while try_again:
-
- try:
- shutil.copy2(src, dest)
- except IOError:
- e = None
- print e
- inp = raw_input('Retry? [Y|n] ')
- if inp and not inp.lower().startswith('y'):
- raise SystemExit(1)
- not inp.lower().startswith('y')
- try_again = True
- continue
-
- try_again = False
-
-
- def copy_different(src, dest, prompt_on_deny = True, destname = None):
- if not os.path.isfile(src):
- raise AssertionError(src + ' not found, cwd is ' + os.getcwd())
- os.path.isfile(src)
- srcname = os.path.split(src)[1]
- if os.path.isdir(dest):
- dest = None(pathjoin, dest if destname is None else destname)
-
- if files_different(src, dest):
- inform('* %s -> %s' % (srcname, dest))
- copy_with_prompt(src, dest)
- else:
- inform('X %s -> %s (skipped)' % (srcname, dest))
-
-