| OLD | NEW |
| 1 # Copyright (c) 2011 Google Inc. All rights reserved. | 1 # Copyright (c) 2011 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 to be used by the rest of the webkitpy code base. | 36 to be used by the rest of the webkitpy code base. |
| 37 | 37 |
| 38 Public (static) properties: | 38 Public (static) properties: |
| 39 -- os_name | 39 -- os_name |
| 40 -- os_version | 40 -- os_version |
| 41 | 41 |
| 42 Note that 'future' is returned for os_version if the operating system is | 42 Note that 'future' is returned for os_version if the operating system is |
| 43 newer than one known to the code. | 43 newer than one known to the code. |
| 44 """ | 44 """ |
| 45 | 45 |
| 46 def __init__(self, sys_module, platform_module, executive): | 46 def __init__(self, sys_module, platform_module, filesystem_module, executive
): |
| 47 self._executive = executive | 47 self._executive = executive |
| 48 self._filesystem = filesystem_module |
| 48 self._platform_module = platform_module | 49 self._platform_module = platform_module |
| 49 self.os_name = self._determine_os_name(sys_module.platform) | 50 self.os_name = self._determine_os_name(sys_module.platform) |
| 50 if self.os_name == 'linux': | 51 if self.os_name == 'linux': |
| 51 self.os_version = self._determine_linux_version() | 52 self.os_version = self._determine_linux_version() |
| 52 if self.os_name == 'freebsd': | 53 if self.os_name == 'freebsd': |
| 53 self.os_version = platform_module.release() | 54 self.os_version = platform_module.release() |
| 54 if self.os_name.startswith('mac'): | 55 if self.os_name.startswith('mac'): |
| 55 self.os_version = self._determine_mac_version(platform_module.mac_ve
r()[0]) | 56 self.os_version = self._determine_mac_version(platform_module.mac_ve
r()[0]) |
| 56 if self.os_name.startswith('win'): | 57 if self.os_name.startswith('win'): |
| 57 self.os_version = self._determine_win_version(self._win_version_tupl
e(sys_module)) | 58 self.os_version = self._determine_win_version(self._win_version_tupl
e(sys_module)) |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 else: | 113 else: |
| 113 import fcntl | 114 import fcntl |
| 114 import struct | 115 import struct |
| 115 import termios | 116 import termios |
| 116 packed = fcntl.ioctl(sys.stderr.fileno(), termios.TIOCGWINSZ, '\
0' * 8) | 117 packed = fcntl.ioctl(sys.stderr.fileno(), termios.TIOCGWINSZ, '\
0' * 8) |
| 117 _, columns, _, _ = struct.unpack('HHHH', packed) | 118 _, columns, _, _ = struct.unpack('HHHH', packed) |
| 118 return columns | 119 return columns |
| 119 except: | 120 except: |
| 120 return sys.maxint | 121 return sys.maxint |
| 121 | 122 |
| 123 def linux_distribution(self): |
| 124 if not self.is_linux(): |
| 125 return None |
| 126 |
| 127 if self._filesystem.exists('/etc/redhat-release'): |
| 128 return 'redhat' |
| 129 if self._filesystem.exists('/etc/debian_version'): |
| 130 return 'debian' |
| 131 if self._filesystem.exists('/etc/arch-release'): |
| 132 return 'arch' |
| 133 |
| 134 return 'unknown' |
| 135 |
| 122 def _determine_os_name(self, sys_platform): | 136 def _determine_os_name(self, sys_platform): |
| 123 if sys_platform == 'darwin': | 137 if sys_platform == 'darwin': |
| 124 return 'mac' | 138 return 'mac' |
| 125 if sys_platform.startswith('linux'): | 139 if sys_platform.startswith('linux'): |
| 126 return 'linux' | 140 return 'linux' |
| 127 if sys_platform in ('win32', 'cygwin'): | 141 if sys_platform in ('win32', 'cygwin'): |
| 128 return 'win' | 142 return 'win' |
| 129 if sys_platform.startswith('freebsd'): | 143 if sys_platform.startswith('freebsd'): |
| 130 return 'freebsd' | 144 return 'freebsd' |
| 131 raise AssertionError('unrecognized platform string "%s"' % sys_platform) | 145 raise AssertionError('unrecognized platform string "%s"' % sys_platform) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 161 if hasattr(sys_module, 'getwindowsversion'): | 175 if hasattr(sys_module, 'getwindowsversion'): |
| 162 return sys_module.getwindowsversion() | 176 return sys_module.getwindowsversion() |
| 163 return self._win_version_tuple_from_cmd() | 177 return self._win_version_tuple_from_cmd() |
| 164 | 178 |
| 165 def _win_version_tuple_from_cmd(self): | 179 def _win_version_tuple_from_cmd(self): |
| 166 # Note that this should only ever be called on windows, so this should a
lways work. | 180 # Note that this should only ever be called on windows, so this should a
lways work. |
| 167 ver_output = self._executive.run_command(['cmd', '/c', 'ver'], decode_ou
tput=False) | 181 ver_output = self._executive.run_command(['cmd', '/c', 'ver'], decode_ou
tput=False) |
| 168 match_object = re.search(r'(?P<major>\d+)\.(?P<minor>\d)\.(?P<build>\d+)
', ver_output) | 182 match_object = re.search(r'(?P<major>\d+)\.(?P<minor>\d)\.(?P<build>\d+)
', ver_output) |
| 169 assert match_object, 'cmd returned an unexpected version string: ' + ver
_output | 183 assert match_object, 'cmd returned an unexpected version string: ' + ver
_output |
| 170 return tuple(map(int, match_object.groups())) | 184 return tuple(map(int, match_object.groups())) |
| OLD | NEW |