From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atuin.qyliss.net (localhost [IPv6:::1]) by atuin.qyliss.net (Postfix) with ESMTP id EADA61B5C0; Wed, 19 Nov 2025 08:21:24 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id E6A5F1B559; Wed, 19 Nov 2025 08:21:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on atuin.qyliss.net X-Spam-Level: X-Spam-Status: No, score=-0.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DMARC_PASS,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 Received: from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com [IPv6:2607:f8b0:4864:20::112d]) by atuin.qyliss.net (Postfix) with ESMTPS id BB4911B4DC for ; Wed, 19 Nov 2025 08:21:14 +0000 (UTC) Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-786a85a68c6so66403697b3.3 for ; Wed, 19 Nov 2025 00:21:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763540473; x=1764145273; darn=spectrum-os.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=wXdlzIISQqyuisCyU+1t4f4q+1Ygy9634VRqEhLPNmQ=; b=V2CG7VjdL/AGH7u2G4qKZKZDwPDnwevrVdjg3gJf6HyYaYL5e5WzTBuHvD9jPlme9F W3SqJawCizZr/bqHkYXo6VEOpvBOKusFIPbR+VNeUep7uypG6URVPV1vBET7DI41w3Sk xJWDeo6NaXgFPNpDKu8hREBmBNduucjfVtdehBHVfQwVfAQlOSq6o5zg40tNEF2FAYZL 0oIlM+Tm0VQR48xAmvTyCNq3YF57MGgFkpoD7HA3DCRG9s/pD7f8zCQ7IWHy4LgSOKx3 /kVqfb64zfc0hSx7bm9JWmkYHtcNC9WjrEQoPXGHl2YZGO0GMfmOKAQF4qe6GzeI8uAT 6kNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763540473; x=1764145273; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wXdlzIISQqyuisCyU+1t4f4q+1Ygy9634VRqEhLPNmQ=; b=e4zFwnRxvBC9yRbw5Tq4WX5p9nGIS2rEglQA47SspM1QOqJaW/SZjWm0htTpPc5V3z jq0RpImfkPpFNm9STxo5ENXvaK2dEaptTXxTKANOCyOnEtrgnBrItt4OmEK1iuUEEslx D4sOhRJnTtN1j9F80uZdeA25s4aTwIJqT8u8gDkInMc8bPsf2qTbdp4VsVV1SOdTMOEt jYxsJrYvon8Im4K3//C4cnv1vsQLH3KZup2zbqlUiqpNzfU+sfiAAj+SBYukB2XXSveR a94BjjCPfYstcP3ldXL9ui5jIm5uZYPYVN20PuzlhY4vmjThxKMTuBlCsNsTAEMyhIlS n40w== X-Gm-Message-State: AOJu0YytDZzUSyz+io2RZvS+JEFo4UVWHLw2Hw8rNl+YYAhh/HPKe2N0 5teBF/fxi9E3GNfDKRHdYrTviwTy/4fjt+XFm2Ez4Fp0LUFdkaTPGntCMx+PPQ== X-Gm-Gg: ASbGncslbube66VvFjNlkyR2KudqDrW2cLJyQ8rdvMeHueACAS1EpXmjLC6OmMnaPjF 4AU0ujS+6+a2VU6CLkQfYnH7FeeYSnxM8hZaKaUm9a2bHsNpltGg501PsUXwGcyRMbjju2wz72y Ep2RVkuF65Bgfd2bBHbyfYtTRd6jT6Uz0EaYRAzXquk9Nd0+byaJlNBEoVBRPLCeBsmudZEN9RK 0qUmRgcvf3GCbOT+3Yu7Hybkc3O0MWgV5HcaOw7gnUmQTMVBzCullzYGNmHVlpSlc52QhOtkx9u VT6iN7Phvy8RtT0uVDsueb+yk9lNIRMFGVi3IAVEAjK7MItWbKP3fiuF+MUWRdjRE+ZbHgsZJ5O AKUKah70lK8UQ7/r1oa079lYdgpBq4Q+w6M6UeqZDScJajC8DVKZplPTlItzNejvJAs5wsLUHu8 7uJxWXiljnZ6VvlK415qAUbN5U/1Bk+ZX7i4GgJ6yje/0rApnbgZ8xbHh3AGeIPF1nZJWeQ2Ldz 2neEMVqRzWkPBotJk0jmA/b0EYF4Z+eVZ5dqtTqA6wfKQ== X-Google-Smtp-Source: AGHT+IEkkgg79BCfZZUKkm5ZUMGXcApZdw1u7YjVn3WPo7t4/UvFs+Wn1j4gdJLOT9FGfdsSTacAwg== X-Received: by 2002:a05:690c:8d07:b0:787:d1e7:e75b with SMTP id 00721157ae682-78929f6193cmr151362577b3.64.1763540472633; Wed, 19 Nov 2025 00:21:12 -0800 (PST) Received: from localhost.localdomain (h96-60-249-169.cncrtn.broadband.dynamic.tds.net. [96.60.249.169]) by smtp.gmail.com with UTF8SMTPSA id 00721157ae682-78821e76af5sm60720757b3.27.2025.11.19.00.21.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 00:21:12 -0800 (PST) From: Demi Marie Obenour Date: Wed, 19 Nov 2025 03:18:27 -0500 Subject: [PATCH v3 04/14] scripts: port make-gpt.sh to bash MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20251119-updates-v3-4-b88a99915509@gmail.com> References: <20251119-updates-v3-0-b88a99915509@gmail.com> In-Reply-To: <20251119-updates-v3-0-b88a99915509@gmail.com> To: Spectrum OS Development X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1763540303; l=6254; i=demiobenour@gmail.com; s=20250729; h=from:subject:message-id; bh=wNyuB7eHNXWPtSnk0EAspBHIjI8v29PFha+VRxB5eYg=; b=SPy8F1HAjuswr2toCC3XRNUNJnXybTHVyJ4WQ6XgOLX4z+7OjlRmqwhG42QmycRwS8FWTbQ3H en/i3JnOZK3B09sGCV3tlSw/jEHGa5Az7+H8QHA4GFUNWAsqvaOfNv3 X-Developer-Key: i=demiobenour@gmail.com; a=ed25519; pk=X57Q4/YQDj9t4SBeKaDwvXYKB6quZJVx/DE2Ly2out0= Message-ID-Hash: 7T62NAVSI7DKJQHRPPXVZI2RJMDYXKR3 X-Message-ID-Hash: 7T62NAVSI7DKJQHRPPXVZI2RJMDYXKR3 X-MailFrom: demiobenour@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-devel.spectrum-os.org-0; header-match-devel.spectrum-os.org-1; header-match-devel.spectrum-os.org-2; header-match-devel.spectrum-os.org-3; header-match-devel.spectrum-os.org-4; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Demi Marie Obenour , Alyssa Ross X-Mailman-Version: 3.3.9 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Also add some error checks and use Bash features. No other functional change intended. Signed-off-by: Demi Marie Obenour --- Changes since v2: - Do not use wrapper script. - Make script non-executable. - Invoke script as 'bash FILE' to work around /usr/bin/env not working during a Nix build. --- host/initramfs/Makefile | 4 ++-- host/rootfs/Makefile | 2 +- img/app/Makefile | 2 +- release/live/Makefile | 4 ++-- scripts/make-gpt.sh | 20 ++++++++++---------- vm/sys/net/Makefile | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/host/initramfs/Makefile b/host/initramfs/Makefile index 13bb548d6146684a25dab1e31228c0b9a4ca8db7..fd8cbb6c3e775ed27d0a524bf167cb4d3940d799 100644 --- a/host/initramfs/Makefile +++ b/host/initramfs/Makefile @@ -36,7 +36,7 @@ build/mountpoints: find build/mountpoints -mindepth 1 -exec touch -d @0 {} ';' build/live.img: ../../scripts/format-uuid.sh ../../scripts/make-gpt.sh ../../scripts/sfdisk-field.awk $(ROOT_FS_IMAGES) - ../../scripts/make-gpt.sh $@.tmp \ + bash ../../scripts/make-gpt.sh $@.tmp \ $(ROOT_FS_VERITY):verity:$$(../../scripts/format-uuid.sh "$$(dd if=$(ROOT_FS_VERITY_ROOTHASH) bs=32 skip=1 count=1 status=none)") \ $(ROOT_FS):root:$$(../../scripts/format-uuid.sh "$$(head -c 32 $(ROOT_FS_VERITY_ROOTHASH))") mv $@.tmp $@ @@ -45,7 +45,7 @@ build/loop.tar: build/live.img $(TAR) -cf $@ build/live.img build/loop.img: ../../scripts/make-gpt.sh ../../scripts/sfdisk-field.awk build/loop.ext4 - ../../scripts/make-gpt.sh $@.tmp \ + bash ../../scripts/make-gpt.sh $@.tmp \ build/loop.ext4:56a3bbc3-aefa-43d9-a64d-7b3fd59bbc4e mv $@.tmp $@ diff --git a/host/rootfs/Makefile b/host/rootfs/Makefile index 4c14d3acfa8f7ffd276fdfb684d08bf58fd80a15..533471c58591d305f386157e04e9e48da7259fd5 100644 --- a/host/rootfs/Makefile +++ b/host/rootfs/Makefile @@ -96,7 +96,7 @@ clean: .PHONY: clean build/live.img: ../../scripts/format-uuid.sh ../../scripts/make-gpt.sh ../../scripts/sfdisk-field.awk $(ROOT_FS_DIR)/verity-timestamp $(ROOT_FS) - ../../scripts/make-gpt.sh $@.tmp \ + bash ../../scripts/make-gpt.sh $@.tmp \ $(ROOT_FS)/rootfs.verity.superblock:verity:$$(../../scripts/format-uuid.sh "$$(dd if=$(ROOT_FS_VERITY_ROOTHASH) bs=32 skip=1 count=1 status=none)") \ $(ROOT_FS)/rootfs:root:$$(../../scripts/format-uuid.sh "$$(head -c 32 $(ROOT_FS_VERITY_ROOTHASH)") mv $@.tmp $@ diff --git a/img/app/Makefile b/img/app/Makefile index 48eba871339d314479f730101246ace3fa39e2db..f16c2df1b90bbec6750f2980da4dbaf49c9cb0ea 100644 --- a/img/app/Makefile +++ b/img/app/Makefile @@ -26,7 +26,7 @@ $(imgdir)/appvm/vmlinux: $(KERNEL) $(imgdir)/appvm/blk/root.img: ../../scripts/make-gpt.sh ../../scripts/sfdisk-field.awk build/rootfs.erofs mkdir -p $$(dirname $@) - ../../scripts/make-gpt.sh $@.tmp \ + bash ../../scripts/make-gpt.sh $@.tmp \ build/rootfs.erofs:root:5460386f-2203-4911-8694-91400125c604:root mv $@.tmp $@ diff --git a/release/live/Makefile b/release/live/Makefile index d61248e94599adc5229d0ad38d54b9f649d66ca1..4dbac28a90dc6f64a253961c33c597220d0e85cf 100644 --- a/release/live/Makefile +++ b/release/live/Makefile @@ -9,8 +9,8 @@ DTBS ?= build/empty dest = build/live.img -$(dest): ../../scripts/format-uuid.sh ../../scripts/make-gpt.sh ../../scripts/sfdisk-field.awk build/boot.fat $(ROOT_FS_IMAGES) - ../../scripts/make-gpt.sh $@.tmp \ +$(dest): ../../scripts/format-uuid.sh ../../scripts/make-gpt.bash ../../scripts/make-gpt.sh ../../scripts/sfdisk-field.awk build/boot.fat $(ROOT_FS_IMAGES) + bash ../../scripts/make-gpt.sh $@.tmp \ build/boot.fat:c12a7328-f81f-11d2-ba4b-00a0c93ec93b \ $(ROOT_FS_VERITY):verity:$$(../../scripts/format-uuid.sh "$$(dd if=$(ROOT_FS_VERITY_ROOTHASH) bs=32 skip=1 count=1 status=none)") \ $(ROOT_FS):root:$$(../../scripts/format-uuid.sh "$$(head -c 32 $(ROOT_FS_VERITY_ROOTHASH))") diff --git a/scripts/make-gpt.sh b/scripts/make-gpt.sh old mode 100755 new mode 100644 index 96f0d2c8494c093558c0e32e7e920b569bb078ef..0ae3d0005e5ae7d6214270fedb2fafb0a7064cf5 --- a/scripts/make-gpt.sh +++ b/scripts/make-gpt.sh @@ -1,11 +1,11 @@ -#!/bin/sh -eu -# +#!/usr/bin/env -S bash -- # SPDX-FileCopyrightText: 2021-2023 Alyssa Ross # SPDX-FileCopyrightText: 2022 Unikie # SPDX-License-Identifier: EUPL-1.2+ # -# usage: make-gpt.sh GPT_PATH PATH:PARTTYPE[:PARTUUID[:PARTLABEL]]... +# usage: bash make-gpt.sh GPT_PATH PATH:PARTTYPE[:PARTUUID[:PARTLABEL]]... +set -xeuo pipefail ONE_MiB=1048576 # Prints the number of 1MiB blocks required to store the file named @@ -40,16 +40,15 @@ scriptsDir="$(dirname "$0")" out="$1" shift -nl=' -' table="label: gpt" # Keep 1MiB free at the start, and 1MiB free at the end. gptBytes=$((ONE_MiB * 2)) for partition; do - sizeMiB="$(sizeMiB "$(partitionPath "$partition")")" - table="$table${nl}size=${sizeMiB}MiB,$(awk -f "$scriptsDir/sfdisk-field.awk" -v partition="$partition")" - gptBytes="$((gptBytes + sizeMiB * ONE_MiB))" + partitionPath=$(partitionPath "$partition") + sizeMiB=$(sizeMiB "$partitionPath") + table+=$'\n'"size=${sizeMiB}MiB,$(awk -f "$scriptsDir/sfdisk-field.awk" -v partition="$partition")" + gptBytes=$((gptBytes + sizeMiB * ONE_MiB)) done rm -f "$out" @@ -60,6 +59,7 @@ EOF n=0 for partition; do - fillPartition "$out" "$n" "$(partitionPath "$partition")" - n="$((n + 1))" + partitionPath=$(partitionPath "$partition") + fillPartition "$out" "$n" "$partitionPath" + n=$((n + 1)) done diff --git a/vm/sys/net/Makefile b/vm/sys/net/Makefile index d71c2325eff3bae921f33c61f799846d35e401c2..e403d697d90c0021a7a8d1dbc1553cfbda74a117 100644 --- a/vm/sys/net/Makefile +++ b/vm/sys/net/Makefile @@ -25,7 +25,7 @@ $(vmdir)/netvm/vmlinux: $(KERNEL) $(vmdir)/netvm/blk/root.img: ../../../scripts/make-gpt.sh ../../../scripts/sfdisk-field.awk build/rootfs.erofs mkdir -p $$(dirname $@) - ../../../scripts/make-gpt.sh $@.tmp \ + bash ../../../scripts/make-gpt.sh $@.tmp \ build/rootfs.erofs:root:ea21da27-0391-48da-9235-9d2ab2ca7844:root mv $@.tmp $@ -- 2.52.0