Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "toltecmk"
version = "0.5.2"
version = "0.5.3"
authors = [
{ name="Mattéo Delabre", email="git.matteo@delab.re" },
{ name="Eeems", email="eeems@eeems.email" },
Expand Down
2 changes: 1 addition & 1 deletion toltec/hooks/patch_rm2fb.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,5 +82,5 @@ def docker_file_path(file_path: str) -> str:
+ " ".join(docker_file_path(file_path) for file_path in binaries)
)

script += restore_mtime_script(original_mtime)
script += restore_mtime_script(src_dir, MOUNT_SRC, original_mtime)
run_in_container(builder, src_dir, logger, script)
38 changes: 29 additions & 9 deletions toltec/hooks/strip.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

import os
import logging
import random
import string
import shlex
from typing import Callable
import docker
Expand Down Expand Up @@ -60,17 +62,35 @@ def run_in_container(
bash.pipe_logs(_logger, logs)


def restore_mtime_script(original_mtime: dict[str, int]) -> list[str]:
def restore_mtime_script(
src_dir: str, mnt_dir: str, original_mtime: dict[str, int]
) -> list[str]:
"""Restore original mtimes for files after they have been modified"""
script: list[str] = []
if not original_mtime:
return []

script: list[str] = ["import os"]
for file_path, mtime in original_mtime.items():
script.append(
'echo "import os; os.utime('
+ f'\\"{file_path}\\", ns=({mtime}, {mtime})'
+ ')" | python3 -u'
)
script.append(f'os.utime("{file_path}", ns=({mtime}, {mtime}))')

while os.path.exists(
(script_path := os.path.join(src_dir, f".{randomword(10)}.py"))
):
pass

with open(script_path, "w", encoding="utf-8") as f:
_ = f.write("\n".join(script))

docker_path = shlex.quote(
os.path.join(mnt_dir, os.path.relpath(script_path, src_dir))
)
return [f"python3 -u {docker_path}", f"rm {docker_path}"]


return script
def randomword(length: int) -> str:
"""Create a random string"""
letters = string.ascii_lowercase
return "".join(random.choice(letters) for i in range(length))


def register(builder: Builder) -> None:
Expand Down Expand Up @@ -177,5 +197,5 @@ def docker_file_path(file_path: str) -> str:
os.path.relpath(file_path, src_dir),
)

script += restore_mtime_script(original_mtime)
script += restore_mtime_script(src_dir, MOUNT_SRC, original_mtime)
run_in_container(builder, src_dir, logger, script)