def _DetectBinaryUrl(self):
platform_system = platform.system()
if platform_system == 'Linux':
linux_dist = platform.dist()
# dist turple is like this
# Ubuntu, 16.04, Xenial
# or Debian, 8.8, ''
# fix for debian
if linux_dist[0].lower() == 'debian':
linux_dist[1] = str(int(linux_dist[1]))
platform_version = float(linux_dist[1])
platform_desc = '%s %s' % (linux_dist[0], platform_version)
elif platform_system == 'Darwin':
v, _, _ = platform.mac_ver()
mac_ver = '.'.join(v.split('.')[:2])
platform_version = float(mac_ver)
platform_desc = 'Mac OS X %s' % mac_ver
elif platform_system == 'Windows':
win_ver, _, _, _ = platform.win32_ver()
platform_version = float(win_ver)
elif platform_system.startswith('MINGW64_NT'):
# use msvc binary temporarily
win_ver = float(platform_system.split('-')[1])
platform_system = 'Windows'
platform_version = float(win_ver)
else:
platform_system = 'Unknown System'
platform_version = 0.0
if not platform_desc:
platform_desc = '%s %f' % (platform_system, platform_version)
log.warn('detected %s' % platform_desc)
download_infos = self._LoadDownloadInfo()
# try to match from a set of download infos
plats = []
for plat in download_infos:
# not trust url outside our mirror site
if not plat['url'].startswith(DOWNLOAD_URL_PREFIX):
continue
if plat['system'] == platform_system:
if platform_system == 'Linux':
if plat['dist'][0].lower() != linux_dist[0].lower():
continue
plat['version'] = float(plat['dist'][1])
elif platform_system == 'Darwin':
plat['version'] = float(plat['mac_ver'])
elif platform_system == 'Windows':
plat['version'] = float(plat['win_ver'])
if platform_version < plat['version']:
continue
plats.append(plat)
if not plats:
return platform_desc, None
plats.sort(key=lambda x : x['version'], reverse=True)
return platform_desc, plats[0]
评论列表
文章目录