From ac1672eb83d36d57615b70fda3e907638018f013 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 8 Jul 2023 13:28:01 +0300 Subject: feat: log spec file in a pretty way Sponsored-by: author --- v-i | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/v-i b/v-i index c4772fc..4a922be 100755 --- a/v-i +++ b/v-i @@ -2,6 +2,7 @@ import argparse import glob +import json import logging import os import shutil @@ -455,14 +456,17 @@ class SystemSpec: for key in self._obj: setattr(self, key, self._obj[key]) - del self._obj self._check() def __repr__(self): - return repr( - {key: getattr(self, key) for key in dir(self) if not key.startswith("_")} - ) + return repr(self.as_dict()) + + def as_dict(self): + return {key: self._obj[key] for key in self._obj} + + def as_json(self): + return json.dumps(self.as_dict(), indent=4) def _check(self): try: @@ -514,7 +518,8 @@ def main(): log("v-i starts") system = SystemSpec(args.spec) - log(f"spec: {system!r}") + spec_json = system.as_json() + log(f"formatted spec:\n{spec_json}") cache = args.cache or cache_name(system) log(f"cache: {cache}") -- cgit v1.2.1 From d9bdbb09c08e3a9e516bb6bedd2ce722a5240e85 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 8 Jul 2023 13:33:05 +0300 Subject: feat: log ansible_vars prettily Sponsored-by: author --- v-i | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v-i b/v-i index 4a922be..f2615bc 100755 --- a/v-i +++ b/v-i @@ -531,7 +531,8 @@ def main(): with open(filename) as f: vars_dict = yaml.safe_load(f) ansible_vars.update(vars_dict) - log(f"ansible_vars: {ansible_vars!r}") + ansible_vars_json = json.dumps(ansible_vars, indent=4) + log(f"ansible_vars:\n{ansible_vars_json}") timings.reached("read configuration") clean_up_disks([system.drive] + system.extra_drives) -- cgit v1.2.1 From 005d712d988425c7c5387a8d82ae4d4844ac2243 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 8 Jul 2023 16:44:37 +0300 Subject: fix: discard blocks securely when possible, otherwise insecurely Sponsored-by: author --- v-i | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/v-i b/v-i index f2615bc..a366249 100755 --- a/v-i +++ b/v-i @@ -34,7 +34,15 @@ def error(msg): def run(argv, **kwargs): log(f"RUN: {argv} {kwargs}") - return subprocess.run(argv, **kwargs) + check = False + if "check" in kwargs: + check = True + del kwargs["check"] + p = subprocess.run(argv, **kwargs) + if check and p.returncode != 0: + error(f"Ran command that failed: {argv}\n{p.stderr.decode()}") + sys.exit("command failed") + return p def physical_volumes(): -- cgit v1.2.1 From 2d8dafa56f186ee82a3250d7f0099bfa68298904 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 8 Jul 2023 14:06:41 +0300 Subject: feat: upgrade installer image to bookworm Sponsored-by: author --- installer.vmdb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer.vmdb b/installer.vmdb index f4f7244..da12124 100644 --- a/installer.vmdb +++ b/installer.vmdb @@ -29,7 +29,7 @@ steps: - unpack-rootfs: root - - debootstrap: bullseye + - debootstrap: bookworm mirror: http://deb.debian.org/debian target: root unless: rootfs_unpacked -- cgit v1.2.1 From 810596c1d657655a41b2a18b0c7a710e9d6678c8 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 8 Jul 2023 14:18:55 +0300 Subject: feat: install firmware packages for wifi on installer Sponsored-by: author --- installer-ansible.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/installer-ansible.yml b/installer-ansible.yml index 8e99730..b545e55 100644 --- a/installer-ansible.yml +++ b/installer-ansible.yml @@ -50,6 +50,20 @@ install -d /etc/systemd/system/ssh.service.wants ln -nsf /etc/systemd/system/v-i-config.service /etc/systemd/system/ssh.service.wants/v-i-config.service + - name: "add non-free-firmware (and more) to apt sources, for wifi" + apt_repository: + repo: "deb http://deb.debian.org/debian bookworm contrib non-free non-free-firmware" + + - name: "install wifi firmware" + apt: + name: + - firmware-brcm80211 + - firmware-iwlwifi + - firmware-libertas + - firmware-misc-nonfree + - firmware-realtek + - firmware-ti-connectivity + # Install vmdb2, which actually does the installation to the # target system. -- cgit v1.2.1 From 57ed2ab04d43981959560f3a03828b36a4a35f0a Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 8 Jul 2023 14:51:52 +0300 Subject: feat: install "stable" by default Sponsored-by: author --- v-i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v-i b/v-i index a366249..e25a3dc 100755 --- a/v-i +++ b/v-i @@ -436,7 +436,7 @@ class SystemSpec: "ansible_vars": {}, "ansible_vars_files": [], "luks": "", - "debian_release": "bullseye", + "debian_release": "stable", "root_fstype": "ext4", } with open(filename) as f: -- cgit v1.2.1 From 994647ea63959a1bcff19e58f535dc69c95c69ec Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 8 Jul 2023 16:45:01 +0300 Subject: feat: log prettier when running commands Sponsored-by: author --- v-i | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/v-i b/v-i index e25a3dc..9f34eea 100755 --- a/v-i +++ b/v-i @@ -33,14 +33,25 @@ def error(msg): def run(argv, **kwargs): - log(f"RUN: {argv} {kwargs}") + log(f"RUN: {argv[0]}") + for arg in argv: + log(f"RUN: - {arg!r}") + for key in kwargs: + log(f"RUN: - {key}={kwargs[key]!r}") check = False - if "check" in kwargs: + if kwargs.get("check"): check = True del kwargs["check"] + if "capture_output" not in kwargs: + kwargs["capture_output"] = True p = subprocess.run(argv, **kwargs) if check and p.returncode != 0: - error(f"Ran command that failed: {argv}\n{p.stderr.decode()}") + stdout = indent(p.stdout.decode()) + stderr = indent(p.stderr.decode()) + error(f"Ran command that failed: {argv}") + error(f"Exit code {p.returncode}") + error(f"Stdout:\n{stdout}") + error(f"Stderr:\n{stderr}") sys.exit("command failed") return p -- cgit v1.2.1