aboutsummaryrefslogtreecommitdiff
path: root/tools/file_packager.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/file_packager.py')
-rw-r--r--tools/file_packager.py30
1 files changed, 21 insertions, 9 deletions
diff --git a/tools/file_packager.py b/tools/file_packager.py
index b4512938..4f24af28 100644
--- a/tools/file_packager.py
+++ b/tools/file_packager.py
@@ -62,7 +62,11 @@ for arg in sys.argv[1:]:
Compression.js_name = arg
in_compress = 0
-code = ''
+code = '''
+function assert(check, msg) {
+ if (!check) throw msg;
+}
+'''
if has_preloaded:
code += '''
@@ -97,6 +101,14 @@ for file_ in data_files:
file_['name'] = file_['name'].replace(os.path.sep, '/')
file_['net_name'] = file_['name']
+# remove duplicates (can occur naively, for example preload dir/, preload dir/subdir/)
+seen = {}
+def was_seen(name):
+ if seen.get(name): return True
+ seen[name] = 1
+ return False
+data_files = filter(lambda file_: not was_seen(file_['name']), data_files)
+
data_target = sys.argv[1]
# Set up folders
@@ -167,7 +179,7 @@ for file_ in data_files:
ctx.drawImage(img, 0, 0);
Module["preloadedImages"]['%(filename)s'] = canvas;
URLObject.revokeObjectURL(url);
- removeRunDependency();
+ Module['removeRunDependency']();
};
img.onerror = function(event) {
console.log('Image %(filename)s could not be decoded');
@@ -186,14 +198,14 @@ for file_ in data_files:
audio['oncanplaythrough'] = null;
Module["preloadedAudios"]['%(filename)s'] = audio;
if (!audio.removedDependency) {
- removeRunDependency();
+ Module['removeRunDependency']();
audio.removedDependency = true;
}
};
audio.onerror = function(event) {
if (!audio.removedDependency) {
console.log('Audio %(filename)s could not be decoded or timed out trying to decode');
- removeRunDependency();
+ Module['removeRunDependency']();
audio.removedDependency = true;
}
};
@@ -201,11 +213,11 @@ for file_ in data_files:
audio.src = url;
} else {
Module["preloadedAudios"]['%(filename)s'] = new Audio(); // empty shim
- removeRunDependency();
+ Module['removeRunDependency']();
}
''' % { 'filename': filename, 'mimetype': AUDIO_MIMETYPES[suffix(filename)] }
else:
- finish = 'removeRunDependency();\n'
+ finish = "Module['removeRunDependency']();\n"
code += '''
var %(varname)s = new %(request)s();
@@ -218,7 +230,7 @@ for file_ in data_files:
Module['FS_createDataFile']('/%(dirname)s', '%(basename)s', byteArray, true, true);
%(finish)s
};
- addRunDependency();
+ Module['addRunDependency']();
%(varname)s.send(null);
''' % {
'request': 'DataRequest', # In the past we also supported XHRs here
@@ -242,7 +254,7 @@ if has_preloaded:
curr.response = byteArray.subarray(%d,%d);
curr.onload();
''' % (file_['name'], file_['data_start'], file_['data_end'])
- use_data += ' removeRunDependency();\n'
+ use_data += " Module['removeRunDependency']();\n"
if Compression.on:
use_data = '''
@@ -263,7 +275,7 @@ if has_preloaded:
var curr;
%s
};
- addRunDependency();
+ Module['addRunDependency']();
dataFile.send(null);
if (Module['setStatus']) Module['setStatus']('Downloading...');
''' % (Compression.compressed_name(data_target) if Compression.on else data_target, use_data)