patches and low-level development discussion
 help / color / mirror / code / Atom feed
From: Alyssa Ross <hi@alyssa.is>
To: colby@colbyt.com
Cc: devel@spectrum-os.org
Subject: Re: [PATCH 8/8] vm-lib: allow app VMs to name closure roots
Date: Fri, 03 Jul 2026 16:02:44 +0200	[thread overview]
Message-ID: <87zf08kw6z.fsf@alyssa.is> (raw)
In-Reply-To: <mXvOrkhU5fJB0f-TmDAX5b0BP2EnErXOJ3Hx6ESSpHnTFzCY8N7Bvw3GeDt1Nk1iEF-fyzzM6ESnEA3QrwnTqd-hWSlW52LvwDh-iiQoKwY=@colbyt.com>

[-- Attachment #1: Type: text/plain, Size: 3079 bytes --]

colby@colbyt.com writes:

> “Miss files” was imprecise.
>
>   The issue I hit was not a store path depending on something outside its closure. It was that `run` can be an executable subpath from `lib.getExe`, e.g.
>
>     /nix/store/...-firefox-.../bin/firefox
>
> and `writeClosure`/`exportReferencesGraph` wants store paths, not arbitrary subpaths. In that case the graph root should be the package output path (`/nix/store/...-firefox-...`) while `fs/run` should still point at the executable.

My understanding is that writeClosure and exportReferencesGraph are
supposed to be fine with being given subpaths of store paths, and will
just treat it as if they were given the root of the store path.  A
couple of years ago this stopped working, but it was treated as a bug
and my PR restoring the previous behaviour was accepted:

https://github.com/NixOS/nix/pull/10549

You're not using a very old version of Nix that doesn't have that fix,
are you?

> So the intent of `runClosure` is to decouple “what should be executed” from “which store path(s) should seed the image closure.” For the current app VMs,
>   `run = lib.getExe firefox` / `lib.getExe foot`, while `runClosure = [ firefox ]` keeps the closure root as a store output.
>
> The current patches were pragmatic unblockers for the Asahi/nix-portable build environment where I was running with `--option sandbox false`. The failures I saw, especially the Python bootstrap `usr/` output shape, GnuTLS probing `/usr/bin/socat`, the mypy test observing the unsandboxed build root, and the libfyaml `.pc` `none required` tokens, are better treated as Nixpkgs issues or temporary overlay workarounds for this pin.
>
>   I’ll try to split them mentally that way:
>   - keep only the Spectrum-specific build/runtime changes in the Spectrum series;
>   - either upstream the package fixes to Nixpkgs or carry them as clearly marked temporary pin workarounds;
>
> I'll also try to get the builder onto sandboxed builds so I stop finding the uncommon unsandboxed-only failures first.
>
> Thanks for your patience.

That sounds right to me.  We try to make sure changes are upstreamed as
far as possible — maximum benefit for all users of the upstream project,
and shares maintenance beyond just Spectrum's limited capacity.

Thanks again for all your enthusiasm and effort!

>
> On Thursday, July 2nd, 2026 at 7:27 AM, Alyssa Ross <hi@alyssa.is> wrote:
>
>> colbyt <colby@colbyt.com> writes:
>> 
>> > make-vm copies the closure of the run path into the image.
>> >
>> > For app VMs that use lib.getExe, that can miss files from the package
>> > output that owns the executable. Allow callers to pass explicit closure
>> > roots, and use the package derivations for the foot and Firefox app VMs.
>> >
>> > Signed-off-by: colbyt <colby@colbyt.com>
>> 
>> Can you give an example of something it misses?  If a store path depends
>> on paths not in its closure, that's likely a packaging bug (outside of
>> specific exceptions like /run/opengl-driver).
>> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

  reply	other threads:[~2026-07-03 14:02 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-26 18:55 [PATCH 0/8] refresh nixpkgs for Linux 7.1 colbyt
2026-06-26 18:55 ` [PATCH 1/8] pkgs: fix aarch64-musl builds with current nixpkgs colbyt
2026-07-02 12:18   ` Alyssa Ross
2026-06-26 18:55 ` [PATCH 2/8] lib: update nixpkgs colbyt
2026-06-26 18:55 ` [PATCH 3/8] pkgs/skaware: vendor backported patches colbyt
2026-07-02 11:53   ` Alyssa Ross
2026-06-26 18:55 ` [PATCH 4/8] pkgs/gtk3: skip integrated Wayland backport colbyt
2026-07-02 12:19   ` Alyssa Ross
2026-06-26 18:55 ` [PATCH 5/8] pkgs/skaware: skip integrated backports colbyt
2026-06-26 18:55 ` [PATCH 6/8] pkgs/cloud-hypervisor: update GPU patchset to v52 colbyt
2026-06-26 18:55 ` [PATCH 7/8] pkgs/libfyaml: fix pkg-config libs colbyt
2026-06-26 18:55 ` [PATCH 8/8] vm-lib: allow app VMs to name closure roots colbyt
2026-07-02 13:38   ` Alyssa Ross
2026-07-02 23:40     ` colby
2026-07-03 14:02       ` Alyssa Ross [this message]
2026-06-26 18:55 ` [PATCH optional] linux: use 6.18 for generic images colbyt
2026-07-02 13:42   ` Alyssa Ross
2026-07-02 23:20     ` colby
2026-07-02 12:03 ` [PATCH 0/8] refresh nixpkgs for Linux 7.1 Alyssa Ross

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87zf08kw6z.fsf@alyssa.is \
    --to=hi@alyssa.is \
    --cc=colby@colbyt.com \
    --cc=devel@spectrum-os.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://spectrum-os.org/git/crosvm
	https://spectrum-os.org/git/doc
	https://spectrum-os.org/git/mktuntap
	https://spectrum-os.org/git/nixpkgs
	https://spectrum-os.org/git/spectrum
	https://spectrum-os.org/git/ucspi-vsock
	https://spectrum-os.org/git/www

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).