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 0302C7114; Tue, 30 Sep 2025 09:24:30 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id 96560708B; Tue, 30 Sep 2025 09:24:26 +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.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DMARC_MISSING,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 Received: from fhigh-b1-smtp.messagingengine.com (fhigh-b1-smtp.messagingengine.com [202.12.124.152]) by atuin.qyliss.net (Postfix) with ESMTPS id 0A950707D for ; Tue, 30 Sep 2025 09:24:23 +0000 (UTC) Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.stl.internal (Postfix) with ESMTP id 84B4B7A014F; Tue, 30 Sep 2025 05:24:21 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-02.internal (MEProxy); Tue, 30 Sep 2025 05:24:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alyssa.is; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1759224261; x= 1759310661; bh=19RQZdH3nhK3DiNyM0wSw/Nj4fvHLRRi+T4bGSBm4Z0=; b=L vHCeeYnkvQjfp3enpqWgOOSdDcgEqMHoNJnPS3VErLm4KIT8cIZXCHCZvaaHtar3 L36aXoQinmTjaasj9zoG/aFUFs8pTy/cK41ieIzdm8kWQTE9EdyY1RujG1lQ9MnY B537piIGoOJSPk0rpcndwiMgFXX3Xlce6HIp599tGvIFy1NAzqJKRTQpWLQ0uhqS WCaBekaROwMWlKUD+1FhH77g3bLf9i66GEIuMHAG+48z5YbE4bVrH+wv7anuDHc9 zAuXcHSZsM+3Vd7YHsR9MnWNoiSIWSCwOioMzolKXx1aqkeRvbxOd2/WdebWmfA2 FjYuJ9VbJvRyAdrlY2qZQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; t=1759224261; x=1759310661; bh=1 9RQZdH3nhK3DiNyM0wSw/Nj4fvHLRRi+T4bGSBm4Z0=; b=QyL36iY7CxBagmO7S qQgiOk6JYw7lqoAHfNvwqbbYt1bl8tFbiTPYaul/Yp9k6c+Ul3JNbzTudnCYND8D HfJIkgartOx37syYC8aaOjNrObb1xCj8eIhMT82f6+BRkkFF+8rlReF3xDQnxM8Y xrxBYOAAj5g6vmgyBMmVPcRI8GTeExCD2FQTrUlO3slXd0o1aaWaXyQEHOl45Z6R PV9dTelFbiIbC2Uz7kyqG7lEDr9hmQJjPbaSNTHBwPNZtpzrNj11/F8cgGXYAvOX 4JwVMKiGT3Oj0VsGb5dvmUsZ0Ye0dgdK/KgGXL+z5nXYZ3S/dqRfpWQ5FqfD/3bM Gi1+Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdektdehtdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpeetlhihshhsrgcu tfhoshhsuceohhhisegrlhihshhsrgdrihhsqeenucggtffrrghtthgvrhhnpeethfegie ffffelteduueeltdelueethfeuteevieetuefggeefuddvlefgtdefvdenucffohhmrghi nhepshhpvggtthhruhhmqdhoshdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurf grrhgrmhepmhgrihhlfhhrohhmpehhihesrghlhihsshgrrdhishdpnhgspghrtghpthht ohepvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepuggvmhhiohgsvghnohhurh esghhmrghilhdrtghomhdprhgtphhtthhopeguvghvvghlsehsphgvtghtrhhumhdqohhs rdhorhhg X-ME-Proxy: Feedback-ID: i12284293:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 30 Sep 2025 05:24:20 -0400 (EDT) Received: by mbp.qyliss.net (Postfix, from userid 1000) id 0C1FC5CA47E7; Tue, 30 Sep 2025 11:24:19 +0200 (CEST) From: Alyssa Ross To: devel@spectrum-os.org Subject: [PATCH 1/2] scripts/make-erofs.sh: run chmod less Date: Tue, 30 Sep 2025 11:19:09 +0200 Message-ID: <20250930092249.571803-2-hi@alyssa.is> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250930092249.571803-1-hi@alyssa.is> References: <20250930092249.571803-1-hi@alyssa.is> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: UFGA57UNEWH4PGJHNGBDEUU44VL3NZVA X-Message-ID-Hash: UFGA57UNEWH4PGJHNGBDEUU44VL3NZVA X-MailFrom: hi@alyssa.is 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 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: The common case here is that we don't have to change any permissions, so rewrite it so that (assuming [ is a shell builtin) we don't need to run any additional programs unless we actually need to make a permissions change. I also find this a bit more readable than the previous awk version, and we no longer need to ignore errors from chmod. Link: https://spectrum-os.org/lists/archives/spectrum-devel/87plbj4w9q.fsf@alyssa.is Signed-off-by: Alyssa Ross --- scripts/make-erofs.sh | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/scripts/make-erofs.sh b/scripts/make-erofs.sh index be65de8..551ae4a 100755 --- a/scripts/make-erofs.sh +++ b/scripts/make-erofs.sh @@ -1,6 +1,6 @@ #!/bin/sh -eu # -# SPDX-FileCopyrightText: 2023-2024 Alyssa Ross +# SPDX-FileCopyrightText: 2023-2025 Alyssa Ross # SPDX-FileCopyrightText: 2025 Demi Marie Obenour # SPDX-License-Identifier: EUPL-1.2+ # @@ -39,15 +39,28 @@ while read -r arg1; do (*) parent=.;; esac - awk -v parent="$parent" -v root="$root" 'BEGIN { - n = split(parent, components, "/") - for (i = 1; i <= n; i++) { - printf "%s/", root - for (j = 1; j <= i; j++) - printf "%s/", components[j] - print - } - }' | xargs -rd '\n' chmod +w -- 2>/dev/null || : + # Ensure any existing directories we want to write into are writable. + ( + set -- + while :; do + abs="$root/$parent" + if [ -e "$abs" ] && ! [ -w "$abs" ]; then + set -- "$abs" "$@" + fi + + # shellcheck disable=SC2030 # shadowed on purpose + case "$parent" in + */*) parent="${parent%/*}" ;; + *) break ;; + esac + done + + if [ "$#" -ne 0 ]; then + chmod +w -- "$@" + fi + ) + + # shellcheck disable=SC2031 # shadowed in subshell on purpose mkdir -p -- "$root/$parent" cp -RT -- "$arg1" "$root/$arg2" -- 2.51.0