summaryrefslogtreecommitdiffstats
path: root/nixos/modules/system/etc/build-composefs-dump.py
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/system/etc/build-composefs-dump.py')
-rw-r--r--nixos/modules/system/etc/build-composefs-dump.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/nixos/modules/system/etc/build-composefs-dump.py b/nixos/modules/system/etc/build-composefs-dump.py
index 923d40008b63..bf4ec791ecf7 100644
--- a/nixos/modules/system/etc/build-composefs-dump.py
+++ b/nixos/modules/system/etc/build-composefs-dump.py
@@ -58,7 +58,7 @@ class ComposefsPath:
):
if path is None:
path = attrs["target"]
- self.path = "/" + path
+ self.path = path
self.size = size
self.filetype = filetype
self.mode = mode
@@ -83,8 +83,12 @@ class ComposefsPath:
return " ".join(line_list)
-def eprint(*args, **kwargs) -> None:
- print(args, **kwargs, file=sys.stderr)
+def eprint(*args: Any, **kwargs: Any) -> None:
+ print(*args, **kwargs, file=sys.stderr)
+
+
+def normalize_path(path: str) -> str:
+ return str("/" + os.path.normpath(path).lstrip("/"))
def leading_directories(path: str) -> list[str]:
@@ -145,6 +149,10 @@ def main() -> None:
paths: dict[str, ComposefsPath] = {}
for attrs in config:
+ # Normalize the target path to work around issues in how targets are
+ # declared in `environment.etc`.
+ attrs["target"] = normalize_path(attrs["target"])
+
target = attrs["target"]
source = attrs["source"]
mode = attrs["mode"]