summaryrefslogtreecommitdiff
path: root/lang/python38/files/python3.8.ucl.in
diff options
context:
space:
mode:
Diffstat (limited to 'lang/python38/files/python3.8.ucl.in')
-rw-r--r--lang/python38/files/python3.8.ucl.in42
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
+}