about summary refs log tree commit diff
path: root/nixos/modules/image
diff options
context:
space:
mode:
authorVincent Haupert <vincent@yaxi.tech>2023-08-03 10:44:35 +0200
committerVincent Haupert <vincent@yaxi.tech>2023-08-03 11:46:35 +0200
commit5fd478506d4867e52311d63cb56dc5e01c0f46ad (patch)
tree3d06cf7025debbce628392e3edd8a7804e137a8f /nixos/modules/image
parentd85f641287e4f632e9ee3708f0af6d8a41380e36 (diff)
nixos/image: use stable target dir for amended repart definitions
Output the amended repart definitions to a well-known directory in
$TMPDIR instead of using a temporary directory with a random directory
name.

The output file `repart-output.json` also contains the full path to the
repart definition file used to create the partition. As
`amend-repart-definitions.py` uses `tempfile.mkdtemp`, this introduces
an impurity:

```json
{
        "type" : "root-x86-64",
        "label" : "rootfs",
        "uuid" : "f2fa2e49-e443-45d2-a2e2-c3754cab6363",
        "file" : "/build/tmppjo7kv5o/rootfs.conf",
        "node" : "image.raw2",
        "offset" : 135266304,
        "old_size" : 0,
        "raw_size" : 1651101696,
        "old_padding" : 0,
        "raw_padding" : 0,
        "activity" : "create",
}
```

This commit changes the parent directory of the amended repart
definitions to `/build/amended-repart.d/`.
Diffstat (limited to 'nixos/modules/image')
-rw-r--r--nixos/modules/image/amend-repart-definitions.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/nixos/modules/image/amend-repart-definitions.py b/nixos/modules/image/amend-repart-definitions.py
index e50ed6fd39a79..52f10303eb5ea 100644
--- a/nixos/modules/image/amend-repart-definitions.py
+++ b/nixos/modules/image/amend-repart-definitions.py
@@ -15,8 +15,6 @@ files using the same mechanism.
 import json
 import sys
 import shutil
-import os
-import tempfile
 from pathlib import Path
 
 
@@ -92,12 +90,13 @@ def main() -> None:
         print("Partition config is empty.")
         sys.exit(1)
 
-    temp = tempfile.mkdtemp()
-    shutil.copytree(repart_definitions, temp, dirs_exist_ok=True)
+    target_dir = Path("amended-repart.d")
+    target_dir.mkdir()
+    shutil.copytree(repart_definitions, target_dir, dirs_exist_ok=True)
 
     for name, config in partition_config.items():
-        definition = Path(f"{temp}/{name}.conf")
-        os.chmod(definition, 0o644)
+        definition = target_dir.joinpath(f"{name}.conf")
+        definition.chmod(0o644)
 
         contents = config.get("contents")
         add_contents_to_definition(definition, contents)
@@ -106,7 +105,7 @@ def main() -> None:
         strip_nix_store_prefix = config.get("stripStorePaths")
         add_closure_to_definition(definition, closure, strip_nix_store_prefix)
 
-    print(temp)
+    print(target_dir.absolute())
 
 
 if __name__ == "__main__":