On 11/28/25 16:14, Alyssa Ross wrote: > Demi Marie Obenour writes: > >> On 11/28/25 08:22, Alyssa Ross wrote: >>> We want non-minimally-sized partitions to leave space for updates. >>> All such partitions will also be labelled, so we can just add another >>> optional field at the end. >>> >>> Since we don't parse partition specifications in sh, we can't keep a >>> running total any more, so instead we just go through the table at the >>> end and add up all the sizes, taking advantage of our knowledge that >>> the size will always be the last thing in each line in our tables. >>> >>> Signed-off-by: Alyssa Ross >>> Message-ID: <20251127174054.2056835-2-hi@alyssa.is> >>> --- >>> v2: fix conflicts after applying Demi's optimization, and avoid awk >>> to sum partition sizes, taking inspiration from the same. >>> v1: https://spectrum-os.org/lists/archives/spectrum-devel/20251127174054.2056835-2-hi@alyssa.is/ >>> >>> scripts/make-gpt.sh | 30 ++++++++++++++++++------------ >>> scripts/sfdisk-field.awk | 22 +++++++++++++++++----- >>> 2 files changed, 35 insertions(+), 17 deletions(-) >>> >>> diff --git a/scripts/make-gpt.sh b/scripts/make-gpt.sh >>> index 3cae441..cb19868 100755 >>> --- a/scripts/make-gpt.sh >>> +++ b/scripts/make-gpt.sh >>> @@ -1,10 +1,10 @@ >>> #!/bin/sh -eu >>> # >>> -# SPDX-FileCopyrightText: 2021-2023 Alyssa Ross >>> +# SPDX-FileCopyrightText: 2021-2023, 2025 Alyssa Ross >>> # SPDX-FileCopyrightText: 2022 Unikie >>> # SPDX-License-Identifier: EUPL-1.2+ >>> # >>> -# usage: make-gpt.sh GPT_PATH PATH:PARTTYPE[:PARTUUID[:PARTLABEL]]... >>> +# usage: make-gpt.sh GPT_PATH PATH:PARTTYPE[:PARTUUID[:PARTLABEL[:PARTMiB]]]... >>> >>> ONE_MiB=1048576 >>> >>> @@ -33,21 +33,27 @@ scriptsDir="$(dirname "$0")" >>> out="$1" >>> shift >>> >>> -nl=' >>> -' >>> -table="label: gpt" >>> +table=$(for partition; do >>> + awk -f "$scriptsDir/sfdisk-field.awk" \ >>> + -v partition="$partition" \ >>> + -v size="$(sizeMiB "${partition%%:*}")" >>> +done) >> >> $(sizeMiB) should be moved into a separate command. Shellcheck can >> catch this if you enable SC2312. > > Good catch, thanks. Feel free to suggest other optional shellcheck > things we should enable. (Although I've just noticed > release/checks/shellcheck.nix doesn't seem to be reading the > .shellcheckrc file properly so don't use that for testing.) I'll look later. >>> # Keep 1MiB free at the start, and 1MiB free at the end. >>> -gptBytes=$((ONE_MiB * 2)) >>> -for partition; do >>> - sizeMiB="$(sizeMiB "${partition%%:*}")" >>> - table="$table${nl}size=${sizeMiB}MiB,$(awk -f "$scriptsDir/sfdisk-field.awk" -v partition="$partition")" >>> - gptBytes="$((gptBytes + sizeMiB * ONE_MiB))" >>> -done >>> +gptMiB=2 >>> +while read -r partition; do >>> + # Here we rely on sfdisk-field.awk always putting size last. >>> + : $((gptMiB += ${partition##*=})) >>> +done <>> +$table >>> +EOF >> >> Nit: should ${partition##*=} be in double quotes? > > I tried changing it, but it is apparently an "arithmetic syntax error" > to use double quotes here. I'd use a separate variable then. -- Sincerely, Demi Marie Obenour (she/her/hers)