Mercurial > pygame
annotate msys_installer.py @ 3172:d1b367fc08bc tests-returncode
Use a return code of 1 when the tests fail.
| author | Thomas Kluyver <takowl@gmail.com> |
|---|---|
| date | Wed, 09 Jan 2013 10:13:57 +0000 |
| parents | 23d140b854d2 |
| children |
| rev | line source |
|---|---|
|
2048
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
1 # MSYS installer. |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
2 # |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
3 # Requires: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
4 # httplib2 (http://code.google.com/p/httplib2/) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
5 # 7-Zip 9.15 (http://sourceforge.net/projects/sevenzip/files/) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
6 # |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
7 # Don't forget to add etc/fstab with the MinGW directory path added. |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
8 # |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
9 from __future__ import with_statement |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
10 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
11 import httplib2 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
12 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
13 import sys |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
14 import os |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
15 import _winreg |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
16 import re |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
17 import subprocess |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
18 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
19 # Usual MSYS directory, without drive letter. |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
20 default_msys_subdir = 'msys\\1.0' |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
21 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
22 packages = [ |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
23 'http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/msys-1.0.13-2/msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
24 'http://sourceforge.net/projects/mingw/files/MSYS/libiconv/libiconv-1.13.1-2/libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
25 'http://sourceforge.net/projects/mingw/files/MSYS/gettext/gettext-0.17-2/libintl-0.17-2-msys-dll-8.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
26 'http://sourceforge.net/projects/mingw/files/MSYS/bash/bash-3.1.17-3/bash-3.1.17-3-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
27 'http://sourceforge.net/projects/mingw/files/MSYS/termcap/termcap-0.20050421_1-2/termcap-0.20050421_1-2-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
28 'http://sourceforge.net/projects/mingw/files/MSYS/termcap/termcap-0.20050421_1-2/libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
29 'http://sourceforge.net/projects/mingw/files/MSYS/regex/regex-1.20090805-2/libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
30 'http://sourceforge.net/projects/mingw/files/MSYS/make/make-3.81-3/make-3.81-3-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
31 'http://sourceforge.net/projects/mingw/files/MSYS/sed/sed-4.2.1-2/sed-4.2.1-2-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
32 'http://sourceforge.net/projects/mingw/files/MSYS/grep/grep-2.5.4-2/grep-2.5.4-2-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
33 'http://sourceforge.net/projects/mingw/files/MSYS/gawk/gawk-3.1.7-2/gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
34 'http://sourceforge.net/projects/mingw/files/MSYS/m4/m4-1.4.13-1/m4-1.4.13-1-msys-1.0.11-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
35 'http://sourceforge.net/projects/mingw/files/MSYS/cvs/cvs-1.12.13-2/cvs-1.12.13-2-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
36 'http://sourceforge.net/projects/mingw/files/MSYS/crypt/crypt-1.1_1-3/libcrypt-1.1_1-3-msys-1.0.13-dll-0.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
37 'http://sourceforge.net/projects/mingw/files/MSYS/perl/perl-5.6.1_2-2/perl-5.6.1_2-2-msys-1.0.13-bin.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
38 'http://sourceforge.net/projects/mingw/files/MSYS/zlib/zlib-1.2.3-2/zlib-1.2.3-2-msys-1.0.13-dll.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
39 'http://sourceforge.net/projects/mingw/files/MSYS/gdbm/gdbm-1.8.3-3/libgdbm-1.8.3-3-msys-1.0.13-dll-3.tar.lzma/download', |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
40 'http://sourceforge.net/projects/mingw/files/MSYS/coreutils/coreutils-5.97-3/coreutils-5.97-3-msys-1.0.13-bin.tar.lzma/download', |
|
2051
23d140b854d2
add MSYS packages used to build ffmpeg rev 24219
Lenard Lindstrom <len-l@telus.net>
parents:
2048
diff
changeset
|
41 'http://sourceforge.net/projects/mingw/files/MSYS/coreutils/coreutils-5.97-3/coreutils-5.97-3-msys-1.0.13-ext.tar.lzma/download', |
|
23d140b854d2
add MSYS packages used to build ffmpeg rev 24219
Lenard Lindstrom <len-l@telus.net>
parents:
2048
diff
changeset
|
42 'http://sourceforge.net/projects/mingw/files/MSYS/diffutils/diffutils-2.8.7.20071206cvs-3/diffutils-2.8.7.20071206cvs-3-msys-1.0.13-bin.tar.lzma/download', |
|
2048
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
43 ] |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
44 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
45 def find_7zip_registry(): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
46 """Return the path of the 7-Zip binaries |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
47 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
48 Look up the location of the 7-Zip directory in the registry. |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
49 Raise LookupError if not found. |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
50 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
51 """ |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
52 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
53 subkey = 'SOFTWARE\\7-Zip' |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
54 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
55 try: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
56 key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, subkey) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
57 try: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
58 return _winreg.QueryValueEx(key, 'path')[0].encode() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
59 finally: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
60 key.Close() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
61 except WindowsError: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
62 raise LookupError("7-Zip not found in registry") |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
63 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
64 class PackageLog(object): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
65 log_name = 'retrieved.txt' |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
66 def __init__(self): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
67 try: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
68 log = open(self.log_name, 'r') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
69 except IOError: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
70 self.retrieved = [] |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
71 self.lookup = set() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
72 else: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
73 self.retrieved = [p[0:-1] for p in log if p.strip()] |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
74 self.lookup = set(self.retrieved) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
75 log.close() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
76 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
77 def __enter__(self): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
78 return self |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
79 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
80 def __exit__(self, exc_type, exc_value, traceback): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
81 with open(self.log_name, 'w') as log: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
82 for ln in self.retrieved: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
83 log.write(ln) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
84 log.write('\n') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
85 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
86 def __contains__(self, package): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
87 return package in self.lookup |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
88 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
89 def add(self, package): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
90 self.retrieved.append(package) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
91 self.lookup.add(package) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
92 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
93 encode_file_name_pattern = re.compile(r'%[a-fA-F0-9]{2}') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
94 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
95 def encode_file_name(s): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
96 def encode(match): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
97 return chr(int(match.group(0)[1:], 16)) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
98 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
99 return encode_file_name_pattern.sub(encode, s) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
100 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
101 class PackageInstaller(object): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
102 filename_pattern = re.compile(r'/(?P<name>[^/]+)/download$') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
103 tar_filename_pattern = re.compile(r'(?P<name>.+\.tar)\.[a-z]+$') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
104 have_7zip = False |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
105 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
106 def __init__(self): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
107 self.client = httplib2.Http() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
108 if not self.have_7zip: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
109 os.environ['path'] = os.environ['path'] + ';' + find_7zip_registry() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
110 self.have_7zip = True |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
111 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
112 def retrieve(self, url): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
113 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
114 file_name = encode_file_name(self.filename_pattern.search(url).group('name')) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
115 if file_name is None: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
116 raise ValueError("Internel error: Unable to extract" |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
117 " package file name from URL %s" % |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
118 (url,)) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
119 tar_file_name = self.tar_filename_pattern.match(file_name).group('name') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
120 if tar_file_name is None: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
121 raise ValueError("Internel error: Unable to extract tar file name" |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
122 " from package file name %s" % (tar_file_name,)) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
123 response, content = self.client.request(url, 'GET') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
124 if response.status != 200: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
125 raise IOError("HTTP code %i for URL %s" % (responce.status, url)) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
126 f = open(file_name, 'wb') |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
127 try: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
128 f.write(content) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
129 finally: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
130 f.close() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
131 retcode = subprocess.call(['7z', 'x', file_name, '-aoa']) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
132 if retcode: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
133 raise IOError("7-Zip failed to decompress %s" % (file_name,)) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
134 retcode = subprocess.call(['7z', 'x', tar_file_name, '-aoa']) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
135 if retcode: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
136 raise IOError("7-Zip failed to unpack tar file %s", (tar_file_name,)) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
137 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
138 def install(msys_dir): |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
139 installer = PackageInstaller() |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
140 try: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
141 os.makedirs(msys_dir) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
142 except WindowsError: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
143 pass |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
144 os.chdir(msys_dir) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
145 with PackageLog() as log: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
146 for p in packages: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
147 if p not in log: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
148 print "-", p |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
149 installer.retrieve(p) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
150 log.add(p) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
151 |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
152 if __name__ == '__main__': |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
153 if len(sys.argv )== 2: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
154 msys_dir = sys.argv[1] |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
155 else: |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
156 drive = os.path.splitdrive(os.getcwd())[0] |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
157 msys_dir = drive + os.path.sep + default_msys_subdir |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
158 install(msys_dir) |
|
f8fde800175a
Add temporary MinGW and MSYS installers
Lenard Lindstrom <len-l@telus.net>
parents:
diff
changeset
|
159 |
