From f6eb90b69ef08fb294b1cae07da6d12d143b11cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Thu, 5 Sep 2013 19:15:32 +0300 Subject: [PATCH] Both Windows and Unix download the same script/text files when updating the SDK, so convert the line endings on the scripts after downloading to local convention to avoid having to host different versions of emsdk itself for different OSes. --- emsdk | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) mode change 100755 => 100644 emsdk diff --git a/emsdk b/emsdk old mode 100755 new mode 100644 index a119531..df51801 --- a/emsdk +++ b/emsdk @@ -35,6 +35,24 @@ def sdk_path(path): return to_unix_path(os.path.join(os.path.dirname(os.path.rea def emsdk_path(): return to_unix_path(os.path.dirname(os.path.realpath(__file__))) +# Modifies the given file in-place to contain '\r\n' line endings. +def file_to_crlf(filename): + text = open(filename, 'r').read() + text = text.replace('\r\n', '\n').replace('\n', '\r\n') + open(filename, 'w').write(text) + +# Modifies the given file in-place to contain '\n' line endings. +def file_to_lf(filename): + text = open(filename, 'r').read() + text = text.replace('\r\n', '\n') + open(filename, 'w').write(text) + +def fix_lineendings(filename): + if WINDOWS: + file_to_crlf(filename) + else: + file_to_lf(filename) + # http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python def mkdir_p(path): if os.path.exists(path): @@ -146,6 +164,10 @@ def download_file(url, dstpath, download_even_if_exists=False): return False return True +def download_text_file(url, dstpath, download_even_if_exists=False): + download_file(url, dstpath, download_even_if_exists) + fix_lineendings(os.path.join(emsdk_path(), os.path.split(url)[1])) + def run_get_output(cmd, cwd=None): process = subprocess.Popen(cmd, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, env=os.environ.copy()) (stdout, stderr) = process.communicate() @@ -544,10 +566,10 @@ def find_latest_sdk(): return sdks[-1] # Newest SDK is always at the end of the list. def update_emsdk(): - download_file(emsdk_master_server + 'emsdk_manifest.json', emsdk_path(), download_even_if_exists=True) + download_text_file(emsdk_master_server + 'emsdk_manifest.json', emsdk_path(), download_even_if_exists=True) if not EMSDK_DEV: - download_file(emsdk_master_server + 'emsdk', emsdk_path(), download_even_if_exists=True) - download_file(emsdk_master_server + 'README.md', emsdk_path(), download_even_if_exists=True) + download_text_file(emsdk_master_server + 'emsdk', emsdk_path(), download_even_if_exists=True) + download_text_file(emsdk_master_server + 'README.md', emsdk_path(), download_even_if_exists=True) print 'Update complete.' def load_sdk_manifest():