From 3ed5681d78934bee90434bb8be0a15b79ce16a56 Mon Sep 17 00:00:00 2001 From: Nathaniel van Diepen Date: Wed, 29 Oct 2025 22:50:16 -0600 Subject: [PATCH 1/3] Fix too many arguments when strip is called --- toltec/hooks/patch_rm2fb.py | 3 ++- toltec/hooks/strip.py | 38 ++++++++++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/toltec/hooks/patch_rm2fb.py b/toltec/hooks/patch_rm2fb.py index 81c6e4c..4821547 100644 --- a/toltec/hooks/patch_rm2fb.py +++ b/toltec/hooks/patch_rm2fb.py @@ -21,6 +21,7 @@ restore_mtime_script, run_in_container, MOUNT_SRC, + randomword, ) logger = logging.getLogger(__name__) @@ -82,5 +83,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) diff --git a/toltec/hooks/strip.py b/toltec/hooks/strip.py index dca1dd3..5adccdf 100644 --- a/toltec/hooks/strip.py +++ b/toltec/hooks/strip.py @@ -8,7 +8,10 @@ import os import logging +import random +import string import shlex +import atexit from typing import Callable import docker from elftools.elf.elffile import ELFFile, ELFError @@ -60,17 +63,34 @@ 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") 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: + letters = string.ascii_lowercase + return "".join(random.choice(letters) for i in range(length)) def register(builder: Builder) -> None: @@ -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) From 530a2ad563057b5fd2ebb6ac232c4d3b5df3bc7c Mon Sep 17 00:00:00 2001 From: Nathaniel van Diepen Date: Wed, 29 Oct 2025 22:50:41 -0600 Subject: [PATCH 2/3] Bump version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4b05c38..7e93eab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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" }, From c07d27a60fa8b253c92fcb85169158a430209b1f Mon Sep 17 00:00:00 2001 From: Nathaniel van Diepen Date: Wed, 29 Oct 2025 22:53:42 -0600 Subject: [PATCH 3/3] Fix lint --- toltec/hooks/patch_rm2fb.py | 1 - toltec/hooks/strip.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/toltec/hooks/patch_rm2fb.py b/toltec/hooks/patch_rm2fb.py index 4821547..484a1d0 100644 --- a/toltec/hooks/patch_rm2fb.py +++ b/toltec/hooks/patch_rm2fb.py @@ -21,7 +21,6 @@ restore_mtime_script, run_in_container, MOUNT_SRC, - randomword, ) logger = logging.getLogger(__name__) diff --git a/toltec/hooks/strip.py b/toltec/hooks/strip.py index 5adccdf..e582670 100644 --- a/toltec/hooks/strip.py +++ b/toltec/hooks/strip.py @@ -11,7 +11,6 @@ import random import string import shlex -import atexit from typing import Callable import docker from elftools.elf.elffile import ELFFile, ELFError @@ -79,7 +78,7 @@ def restore_mtime_script( ): pass - with open(script_path, "w") as f: + with open(script_path, "w", encoding="utf-8") as f: _ = f.write("\n".join(script)) docker_path = shlex.quote( @@ -89,6 +88,7 @@ def restore_mtime_script( def randomword(length: int) -> str: + """Create a random string""" letters = string.ascii_lowercase return "".join(random.choice(letters) for i in range(length))