diff options
Diffstat (limited to 'lang/python38/files')
-rw-r--r-- | lang/python38/files/python3.8.ucl.in | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lang/python38/files/python3.8.ucl.in b/lang/python38/files/python3.8.ucl.in new file mode 100644 index 000000000000..a9ebb18f9c27 --- /dev/null +++ b/lang/python38/files/python3.8.ucl.in @@ -0,0 +1,42 @@ +path_glob: "%%PYTHON_SITELIBDIR%%/*" +trigger: { + type: lua + sandbox: false + script: <<EOS +function cleanup(directory) + for _,d in ipairs(pkg.readdir(directory)) do + local full_path = directory .. "/" .. d + local stat = pkg.stat(full_path) + if stat["type"] == "dir" then + if (d ~= "__pycache__") then + cleanup(full_path) + else + for _,bytecode_file in ipairs(pkg.readdir(full_path)) do + local file_origin = string.gsub(bytecode_file, "[.]cpython[-]%%PYTHON_SUFFIX%%[.].*pyc", ".py") + if file_origin then + local origin_path = directory .. "/" .. file_origin + if (not pkg.stat(origin_path)) then + --print(" >=> removed stale bytecode " .. bytecode_file) + os.remove(full_path .. "/" .. bytecode_file) + end + end + end + end + local res = pkg.readdir(full_path) + if #res == 0 then + --print(" >=> removed empty directory " .. full_path ) + os.remove(full_path) + end + end + end +end + +print(">=> Cleaning stale bytecode files...") +cleanup("%%PYTHON_SITELIBDIR%%") + +print(">=> Byte-compiling Python source files...") +pkg.exec({"%%PYTHON_VERSION%%", "-m", "compileall", "-q", "%%PYTHON_SITELIBDIR%%"}) +pkg.exec({"%%PYTHON_VERSION%%", "-O", "-m", "compileall", "-q", "%%PYTHON_SITELIBDIR%%"}) +pkg.exec({"%%PYTHON_VERSION%%", "-OO", "-m", "compileall", "-q", "%%PYTHON_SITELIBDIR%%"}) +EOS +} |