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 9FDACAF66; Thu, 30 Jul 2026 19:20:29 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id CC8FBAEF3; Thu, 30 Jul 2026 19:20:27 +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_PASS,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 Received: from mail-43172.protonmail.ch (mail-43172.protonmail.ch [185.70.43.172]) by atuin.qyliss.net (Postfix) with ESMTPS id 417D3AF5F for ; Thu, 30 Jul 2026 19:20:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=colbyt.com; s=protonmail; t=1785439225; x=1785698425; bh=e8WBsxnAggUdR0UoLZJh3jYs3qWZ3kYeL0/98AhryGo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=nwoITiufUxvXVTF5uw18axCtkBTIqzqaHCcDgWd9wWscJ5y6zdn3tCJiqGd3U8KlE Ag6hP/86EfY5w8wsQUKGnZ+YWbg39zMfir5U+XJibG+yizuM+w/8+1Ryz4T8OMYSVV T5nCzuBIrtiAGyE5XjcUzlramIy7rQ0Ca3hQ6ReLIXakECiGH+N5a95ZrODtTUAb4r 9PlEa10HWhfBzfTXzAlGGxe5+vsUXBsJ31tke+AkpWMTwIEohGD++FZV/QWDeK+pTS PTp4nfEq0iwTmb3pgzt6mQFFD5W+qrHk8iSs4jEqIo0ishG574FnhsGhB8fqWtf3Ym Ue6PSmDTK8Yaw== X-Pm-Submission-Id: 4h9zYh3DyQz2ScQ0 From: colbyt To: devel@spectrum-os.org Subject: Re: Cosmic Progress Date: Thu, 30 Jul 2026 12:20:15 -0700 Message-ID: <20260730192022.1900810-1-colby@colbyt.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <87bjc8qfe6.fsf@alyssa.is> References: <87bjc8qfe6.fsf@alyssa.is> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-ID-Hash: 3G3RDEM56V7NVDBRBHWKHPG62WBISUWZ X-Message-ID-Hash: 3G3RDEM56V7NVDBRBHWKHPG62WBISUWZ X-MailFrom: colby@colbyt.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; 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; emergency; member-moderation CC: Alyssa Ross X-Mailman-Version: 3.3.10 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Following up on the read-only config question from earlier in this thread: you were right — my July 7 message conflated two things. cosmic-config never requires XDG_CONFIG_HOME to be writable. The only write in Config::new is a create_dir_all on $XDG_CONFIG_HOME/cosmic//v, which is a no-op when the directory already exists. With the empty per-component directories pre-seeded on a read-only mount, Config::new succeeds, reads behave identically to a writable setup, and writes fail with a plain Err rather than a panic. The panic we saw was create_dir_all returning EROFS when those directories were *absent*, unwrapped by the caller (cosmic-comp 1.2.0, src/config/mod.rs:172). Verified with a minimal harness against cosmic-config at the libcosmic rev cosmic-comp 1.2.0 pins (0bb006c5) and against current master (dc1cf9f0) — same behavior on both, with the read-only mount both as a bwrap ro-bind (real EROFS) and as chmod 555. Two details from that may be useful for the empty-dir seeding in your cosmic-comp series: 1. Seeding a bare cosmic/ isn't enough — the full cosmic//v path has to exist for every component/version pair the session constructs, or that component's Config::new fails the same way. 2. Config::new_state does the identical create_dir_all under XDG_STATE_HOME, so state directories want the same seeding as config.