Fix a bug where sdk versions were shown in incorrectly sorted order (1.37.1 < 1.37.10 < 1.37.2)
This commit is contained in:
@@ -21,4 +21,6 @@
|
||||
1.37.7
|
||||
1.37.8
|
||||
1.37.9
|
||||
1.37.10
|
||||
1.37.10
|
||||
1.37.11
|
||||
1.37.12
|
||||
@@ -95,4 +95,5 @@
|
||||
1.37.8
|
||||
1.37.9
|
||||
1.37.10
|
||||
1.37.11
|
||||
1.37.11
|
||||
1.37.12
|
||||
28
emsdk
28
emsdk
@@ -1524,12 +1524,40 @@ def remove_suffix(s, suffix):
|
||||
if s.endswith(suffix): return s[:len(s)-len(suffix)]
|
||||
else: return s
|
||||
|
||||
def try_int(a):
|
||||
try:
|
||||
return int(a)
|
||||
except:
|
||||
return None
|
||||
|
||||
def sort_by_version(a, b):
|
||||
a = re.split('[\\._\\-]', a)
|
||||
b = re.split('[\\._\\-]', b)
|
||||
for i in range(min(len(a), len(b))):
|
||||
a_int = try_int(a[i])
|
||||
b_int = try_int(b[i])
|
||||
if a_int != None and b_int != None:
|
||||
if a_int < b_int:
|
||||
return -1
|
||||
if b_int > a_int:
|
||||
return 1
|
||||
else:
|
||||
if a[i] < b[i]:
|
||||
return -1
|
||||
if b[i] > a[i]:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
# filename should be one of: 'llvm-nightlies-32bit.txt', 'llvm-nightlies-64bit.txt', 'llvm-precompiled-tags-32bit.txt', 'llvm-precompiled-tags-64bit.txt', 'emscripten-nightlies.txt'
|
||||
def load_file_index_list(filename):
|
||||
try:
|
||||
items = open(sdk_path(filename), 'r').read().split('\n')
|
||||
items = map(lambda x: remove_suffix(remove_suffix(remove_prefix(remove_prefix(x, 'emscripten-llvm-e'), 'emscripten-nightly-'), '.tar.gz'), '.zip').strip(), items)
|
||||
items = filter(lambda x: 'latest' not in x and len(x) > 0, items)
|
||||
|
||||
# Sort versions from oldest to newest (the default sort would be lexicographic, i.e. '1.37.1 < 1.37.10 < 1.37.2')
|
||||
items = sorted(items, cmp=sort_by_version)[::-1]
|
||||
|
||||
return items
|
||||
except:
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user