mirror of
https://github.com/pocketpy/pocketpy
synced 2026-02-09 17:10:17 +00:00
add compileall.py
This commit is contained in:
parent
5d3ff2076d
commit
646c6e30da
28
compileall.py
Normal file
28
compileall.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
if len(sys.argv) != 4:
|
||||||
|
print('Usage: python compileall.py <pocketpy_executable> <source_dir> <output_dir>')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
pkpy_exe = sys.argv[1]
|
||||||
|
source_dir = sys.argv[2]
|
||||||
|
output_dir = sys.argv[3]
|
||||||
|
|
||||||
|
def do_compile(src_path, dst_path):
|
||||||
|
cmd = f'{pkpy_exe} --compile "{src_path}" "{dst_path}"'
|
||||||
|
print(src_path)
|
||||||
|
assert os.system(cmd) == 0
|
||||||
|
|
||||||
|
for root, _, files in os.walk(source_dir):
|
||||||
|
for file in files:
|
||||||
|
if not file.endswith('.py'):
|
||||||
|
continue
|
||||||
|
src_path = os.path.join(root, file)
|
||||||
|
dst_path = os.path.join(
|
||||||
|
output_dir,
|
||||||
|
os.path.relpath(root, source_dir),
|
||||||
|
file + 'c'
|
||||||
|
)
|
||||||
|
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
|
||||||
|
do_compile(src_path, dst_path)
|
||||||
@ -121,7 +121,7 @@ void py_sys_setargv(int argc, char** argv) {
|
|||||||
py_GlobalRef sys = py_getmodule("sys");
|
py_GlobalRef sys = py_getmodule("sys");
|
||||||
py_Ref argv_list = py_getdict(sys, py_name("argv"));
|
py_Ref argv_list = py_getdict(sys, py_name("argv"));
|
||||||
py_list_clear(argv_list);
|
py_list_clear(argv_list);
|
||||||
for(int i = 0; i < argc; i++) {
|
for(int i = 1; i < argc; i++) {
|
||||||
py_newstr(py_list_emplace(argv_list), argv[i]);
|
py_newstr(py_list_emplace(argv_list), argv[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,6 +77,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
if(compile) {
|
if(compile) {
|
||||||
bool ok = py_compilefile(arg1, arg2);
|
bool ok = py_compilefile(arg1, arg2);
|
||||||
|
if(!ok) py_printexc();
|
||||||
py_finalize();
|
py_finalize();
|
||||||
return ok ? 0 : 1;
|
return ok ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
assert len(sys.argv) == 2
|
filename = 'tests/801_sys.py'
|
||||||
assert (sys.argv[1] == 'tests/801_sys.py'), sys.argv
|
assert (sys.argv == [filename]), sys.argv
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user