Error on downloading a 64-bit package on a non-64-bit OS (#265)
Also fix the can_be_installed which was always broken it seems - it returns True for success or a string for error, but didn't check if the output is True. Includes a test, which hacks up emsdk to make it think it's on 32-bit, and verifies the error and message.
This commit is contained in:
10
emsdk
10
emsdk
@@ -1480,12 +1480,16 @@ class Tool(object):
|
|||||||
# If this tool can be installed on this system, this function returns True.
|
# If this tool can be installed on this system, this function returns True.
|
||||||
# Otherwise, this function returns a string that describes the reason why this tool is not available.
|
# Otherwise, this function returns a string that describes the reason why this tool is not available.
|
||||||
def can_be_installed(self):
|
def can_be_installed(self):
|
||||||
|
if hasattr(self, 'bitness'):
|
||||||
|
if self.bitness == 64 and not is_os_64bit():
|
||||||
|
return "this tool is only provided for 64-bit OSes"
|
||||||
|
|
||||||
if self.id == 'vs-tool':
|
if self.id == 'vs-tool':
|
||||||
msbuild_dir = find_msbuild_dir()
|
msbuild_dir = find_msbuild_dir()
|
||||||
if len(msbuild_dir) > 0:
|
if len(msbuild_dir) > 0:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return "Visual Studio 2010 was not found!"
|
return "Visual Studio 2010 was not found"
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -1504,7 +1508,7 @@ class Tool(object):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def install(self):
|
def install(self):
|
||||||
if not self.can_be_installed():
|
if self.can_be_installed() is not True:
|
||||||
print("The tool '" + str(self) + "' is not available due to the reason: " + self.can_be_installed())
|
print("The tool '" + str(self) + "' is not available due to the reason: " + self.can_be_installed())
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -2488,7 +2492,7 @@ def main():
|
|||||||
for tool in t:
|
for tool in t:
|
||||||
if tool.is_old and not arg_old:
|
if tool.is_old and not arg_old:
|
||||||
continue
|
continue
|
||||||
if tool.can_be_installed():
|
if tool.can_be_installed() is True:
|
||||||
installed = '\tINSTALLED' if tool.is_installed() else ''
|
installed = '\tINSTALLED' if tool.is_installed() else ''
|
||||||
else:
|
else:
|
||||||
installed = '\tNot available: ' + tool.can_be_installed()
|
installed = '\tNot available: ' + tool.can_be_installed()
|
||||||
|
|||||||
20
test.py
20
test.py
@@ -1,11 +1,26 @@
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
# Utilities
|
# Utilities
|
||||||
|
|
||||||
def check_call(cmd):
|
def check_call(cmd):
|
||||||
subprocess.check_call(cmd.split(' '))
|
subprocess.check_call(cmd.split(' '))
|
||||||
|
|
||||||
|
def failing_call_with_output(cmd, expected):
|
||||||
|
proc = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE)
|
||||||
|
stdout, stderr = proc.communicate()
|
||||||
|
assert proc.returncode, 'call must have failed'
|
||||||
|
assert expected in stdout, 'call did not have the right output'
|
||||||
|
|
||||||
|
def hack_emsdk(marker, replacement):
|
||||||
|
src = open('emsdk').read()
|
||||||
|
assert marker in src
|
||||||
|
src = src.replace(marker, replacement)
|
||||||
|
name = '__test_emsdk'
|
||||||
|
open(name, 'w').write(src)
|
||||||
|
return name
|
||||||
|
|
||||||
# Set up
|
# Set up
|
||||||
|
|
||||||
open('hello_world.cpp', 'w').write('int main() {}')
|
open('hello_world.cpp', 'w').write('int main() {}')
|
||||||
@@ -57,3 +72,8 @@ check_call('./emsdk activate sdk-tag-1.38.33-64bit')
|
|||||||
|
|
||||||
print('test binaryen source build')
|
print('test binaryen source build')
|
||||||
check_call('./emsdk install --build=Release binaryen-master-64bit')
|
check_call('./emsdk install --build=Release binaryen-master-64bit')
|
||||||
|
|
||||||
|
print('test 32-bit error')
|
||||||
|
|
||||||
|
failing_call_with_output('python %s install latest' % hack_emsdk('not is_os_64bit()', 'True'), 'this tool is only provided for 64-bit OSes')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user