patches and low-level development discussion
 help / color / mirror / code / Atom feed
From: Alyssa Ross <hi@alyssa.is>
To: Demi Marie Obenour <demiobenour@gmail.com>
Cc: Spectrum OS Development <devel@spectrum-os.org>
Subject: Re: [PATCH v4 00/14] System updates based on systemd-sysupdate
Date: Tue, 25 Nov 2025 13:22:06 +0100	[thread overview]
Message-ID: <87ms4awbdd.fsf@alyssa.is> (raw)
In-Reply-To: <20251121-updates-v4-0-d4561c42776e@gmail.com>

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

Demi Marie Obenour <demiobenour@gmail.com> writes:

> This implements updates via systemd-sysupdate.  See individual commit
> messages for details.
>
> There are major changes to the image build process.
>
> Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
> ---
> Changes in v4:
> - Fix build errors in intermediate patches.
> - Apply suggestions from code review.
> - Link to v3: https://spectrum-os.org/lists/archives/spectrum-devel/20251119-updates-v3-0-b88a99915509@gmail.com
>
> Changes in v3:
> - See individual commits for details.  There are too many to mention
>   here.
> - Link to v2: https://spectrum-os.org/lists/archives/spectrum-devel/20251112-updates-v2-0-88d96bf81b79@gmail.com
>
> Changes in v2:
> - updates-dir-check:
>   - Do not check that there is a SHA256SUMS or SHA256SUMS.gpg file in the
>     update directory.  systemd-sysupdate will fail if it cannot find a
>     manifest or its signature.
>   - Follow symlinks in opening the directory.  The path is from a
>     trusted source and will always point to a BTRFS snapshot, never a
>     symlink.  The only exception is the last component, which is still
>     checked to not be a symlink.
> - VM:
>   - Link SHA256SUMS.sha256.asc to SHA256SUMS.gpg.  Recent
>     systemd-sysupdate seems to use the former name.
>   - Get update URL from host.
>   - Use an execline script instead of a shell script.
> - Update script:
>   - Unmount shared directory if already mounted.  This avoids errors
>     when mounting it again.
>   - Delete old snapshot if present.
>   - Provide the VM information with a different directory layout.
>   - Do not bind-mount the information passed into the VM into the shared
>     VM folder.  Instead rely on this folder being read-only to the
>     guest.  This is enforced by a read-only bind mount in virtiofs's
>     mount namespace.
> - Testing:
>   - Lots of manual update testing.
>   - Disable the test for the live image as it doesn't work anymore.
> - Nix:
>   - Move validation to a separate low-priority patch.
> - Documentation:
>   - Document that updating the system is now possible.
> - Installer:
>   - Remove the "Try Spectrum" button.
>
> - Link to v1: https://spectrum-os.org/lists/archives/spectrum-devel/20251029-updates-v1-0-401c1be2a11b@gmail.com
>
> ---
> Demi Marie Obenour (14):
>       host/rootfs: Install all programs from util-linuxMinimal
>       host/rootfs: Install systemd-pull
>       tools: Add directory checker for updates
>       scripts: port make-gpt.sh to bash
>       scripts/make-gpt.sh: Allow specifying partition size
>       Support generating multiple partition UUIDs
>       scripts: Use shell expansion to get partition path
>       release: Compress installation images and remove live image
>       Use OS version to set partition labels and UKI name
>       Add B partitions to installation images
>       release: Create directory with system update
>       Support updates via systemd-sysupdate
>       Documentation: Update support
>       Validate configuration parameters
>
>  Documentation/development/build-configuration.adoc |  13 ++
>  Documentation/installation/getting-spectrum.adoc   |  56 +++++++--
>  Documentation/installation/index.adoc              |   4 +-
>  Documentation/using-spectrum/index.adoc            |   2 +
>  Documentation/using-spectrum/updates.adoc          |  30 +++++
>  host/efi.nix                                       |   2 +-
>  host/initramfs/Makefile                            |  18 +--
>  host/initramfs/etc/probe                           |  20 ---
>  host/initramfs/shell.nix                           |   2 +
>  host/rootfs/Makefile                               |  27 ++++-
>  host/rootfs/busybox-config                         | 134 +++++++++++++++++++++
>  host/rootfs/busybox-config.license                 |   4 +
>  host/rootfs/default.nix                            |  92 +++++++++-----
>  host/rootfs/file-list.mk                           |   7 ++
>  host/rootfs/image/etc/fstab                        |   1 +
>  .../image/etc/sysupdate.d/50-verity.transfer       |  20 +++
>  host/rootfs/image/etc/sysupdate.d/60-root.transfer |  20 +++
>  .../image/etc/sysupdate.d/70-kernel.transfer       |  20 +++
>  .../image/etc/vm-sysupdate.d/50-verity.transfer    |  18 +++
>  .../image/etc/vm-sysupdate.d/60-root.transfer      |  18 +++
>  .../image/etc/vm-sysupdate.d/70-kernel.transfer    |  18 +++
>  host/rootfs/image/usr/bin/spectrum-update          |  83 +++++++++++++
>  host/rootfs/os-release.in                          |  15 +++
>  host/rootfs/shell.nix                              |   2 +
>  img/app/Makefile                                   |   2 +-
>  lib/config.default.nix                             |   4 +
>  lib/config.nix                                     |  15 ++-
>  lib/fake-update-signing-key.gpg                    |   3 +
>  release.nix                                        |   2 +
>  release/checks/integration/meson.build             |   2 +-
>  release/checks/integration/try.c                   |  29 -----
>  release/combined/eosimages.nix                     |  19 ++-
>  release/combined/grub.cfg.in                       |   5 -
>  release/live/Makefile                              |  15 ++-
>  release/live/default.nix                           |   5 +-
>  release/live/shell.nix                             |   3 +-
>  release/update.nix                                 |  33 +++++
>  scripts/format-uuid.awk                            |  35 ++++++
>  scripts/format-uuid.sh                             |  19 ---
>  scripts/make-gpt.sh                                |  30 ++---
>  tools/default.nix                                  |   1 +
>  tools/meson.build                                  |   4 +
>  tools/updates-dir-check.c                          | 134 +++++++++++++++++++++
>  vm/app/systemd-sysupdate/default.nix               |  57 +++++++++
>  vm/app/systemd-sysupdate/escape-url.awk            |  31 +++++
>  .../systemd-sysupdate/populate-transfer-directory  |  26 ++++
>  vm/sys/net/Makefile                                |   2 +-
>  47 files changed, 928 insertions(+), 174 deletions(-)
> ---
> base-commit: e89924f5613539e4dcd9d485a82f976c817b34c1
> change-id: 20250928-updates-92e99849e231
> prerequisite-patch-id: c518b0e42e0c87755ef725ace8e961cdfb862285
> prerequisite-patch-id: 0ed2b2073c0ab6d422aa642fd238b15428c6f7d1

I'm finding this series quite difficult to review, because information I
need to review isn't presented when I need it; I have to go and find it.

"scripts: port make-gpt.sh to bash" doesn't include its motivation.  I
assume that's coming later, but now I have to go through potentially 9
more patches to find out what that is, and keep this patch in my head to
make sure I remember to go back to it once I find out what that is.

In "scripts/make-gpt.sh: Allow specifying partition size" I see bash
features being used to strip a "MiB" suffix off the end of a size, so
maybe that's it?  But I already asked why we need to do that in my
review of v2[1], and didn't get a response, so I'm still in the dark…

As I'm going through these patches, I'm encountering a lot of merge
conflicts.  Usually when I'm reviewing a series I apply it on top of its
base commit so I don't have to worry about conflicts — they're a lot
easier to fix all at once in a rebase once I've reviewed all the patches
and am immediately familiar with what they do — but the base commit in
this series does not exist in the upstream repository, so I can't do
that.  After solving enough conflicts I realise that it must be because
this series depends on your other one to separate out verity data, which
I now recall you saying would be needed for updates, so I'll go and
review that one now, and then come back here when I'm done.

All this is just to say that as a patch submitter, there's a lot that
can be done relatively cheaply to save a lot of inference on the part of
the reviewer.  It might be helpful to go through your cover letter and
patches one by one in order before submission, and imagine being a
reviewer who has not read the whole series in its current version, and
has probably forgotten the intricacies of previous versions — what
information will help them understand what's happening?  If I could just
review patches one by one without having to jump back and forth, I think
it could go so much faster.  I'd be able to stop between any two patches
as well, so I wouldn't need to wait until I have enough uninterrupted
time to go through the whole thing at once.  Like this it's a bit of a
slog, because I'm spending a lot of time trying to remember or even
guess what's going on, rather than being told.

[1]: https://spectrum-os.org/lists/archives/spectrum-devel/87ikfdapmx.fsf@alyssa.is

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

  parent reply	other threads:[~2025-11-25 12:23 UTC|newest]

Thread overview: 177+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-29 10:12 [PATCH 0/7] System updates based on systemd-sysupdate Demi Marie Obenour
2025-10-29 10:12 ` [PATCH 1/7] host/rootfs: Use full util-linux and systemd Demi Marie Obenour
2025-10-29 11:36   ` Alyssa Ross
2025-11-01  3:25     ` Demi Marie Obenour
2025-11-01 12:13       ` Alyssa Ross
2025-11-06  9:15         ` Demi Marie Obenour
2025-10-29 10:12 ` [PATCH 2/7] release/combined: Compress installation image Demi Marie Obenour
2025-10-29 11:50   ` Alyssa Ross
2025-10-29 16:51     ` Alyssa Ross
2025-11-01 22:15       ` Demi Marie Obenour
2025-11-02  0:18         ` Demi Marie Obenour
2025-11-02 12:05           ` Alyssa Ross
2025-11-02 14:42             ` Alyssa Ross
2025-11-02 19:38             ` Demi Marie Obenour
2025-10-29 10:12 ` [PATCH 3/7] tools: Add directory checker for updates Demi Marie Obenour
2025-10-29 12:01   ` Alyssa Ross
2025-10-31 20:31     ` Demi Marie Obenour
2025-11-01 12:17       ` Alyssa Ross
2025-11-01 14:09         ` Alyssa Ross
2025-11-01 18:36         ` Demi Marie Obenour
2025-11-02 12:18           ` Alyssa Ross
2025-11-02 12:43             ` Alyssa Ross
2025-11-02 19:34               ` Demi Marie Obenour
2025-11-04 15:26                 ` Alyssa Ross
2025-11-02 19:21             ` Demi Marie Obenour
2025-11-04 15:27               ` Alyssa Ross
2025-11-04 22:56                 ` Demi Marie Obenour
2025-11-06 10:15                   ` Alyssa Ross
2025-10-29 10:12 ` [PATCH 4/7] Adjust partition layout to support updates Demi Marie Obenour
2025-10-29 15:49   ` Alyssa Ross
2025-10-29 10:12 ` [PATCH 5/7] release: add install step Demi Marie Obenour
2025-10-29 12:20   ` Alyssa Ross
2025-10-29 10:12 ` [PATCH 6/7] Factor out dm-verity build rules Demi Marie Obenour
2025-10-29 12:22   ` Alyssa Ross
2025-10-31  6:39     ` Demi Marie Obenour
2025-10-29 10:12 ` [PATCH 7/7] Support updates via systemd-sysupdate Demi Marie Obenour
2025-10-29 15:48   ` Alyssa Ross
2025-11-12 22:14 ` [PATCH v2 0/8] System updates based on systemd-sysupdate Demi Marie Obenour
2025-11-12 22:14   ` [PATCH v2 1/8] host/rootfs: Install all programs from util-linuxMinimal Demi Marie Obenour
2025-11-13 12:35     ` Alyssa Ross
2025-11-12 22:14   ` [PATCH v2 2/8] host/rootfs: Install systemd-pull Demi Marie Obenour
2025-11-13 15:22     ` Alyssa Ross
2025-11-13 23:46       ` Demi Marie Obenour
2025-11-14 11:59         ` Alyssa Ross
2025-11-12 22:14   ` [PATCH v2 3/8] tools: Add directory checker for updates Demi Marie Obenour
2025-11-13 13:21     ` Alyssa Ross
2025-11-13 17:53       ` Demi Marie Obenour
2025-11-13 18:01         ` Alyssa Ross
2025-11-13 18:03           ` Demi Marie Obenour
2025-11-14 13:08             ` Alyssa Ross
2025-11-14 18:37               ` Demi Marie Obenour
2025-11-15 15:20                 ` Alyssa Ross
2025-11-12 22:14   ` [PATCH v2 4/8] Adjust partition layout to support updates Demi Marie Obenour
2025-11-13 16:00     ` Alyssa Ross
2025-11-12 22:14   ` [PATCH v2 5/8] release: Create directory with system update Demi Marie Obenour
2025-11-13 16:04     ` Alyssa Ross
2025-11-13 18:23       ` Demi Marie Obenour
2025-11-13 19:09         ` Alyssa Ross
2025-11-12 22:15   ` [PATCH v2 6/8] Support updates via systemd-sysupdate Demi Marie Obenour
2025-11-13 16:44     ` Alyssa Ross
2025-11-13 20:25       ` Demi Marie Obenour
2025-11-14 12:14         ` Alyssa Ross
2025-11-14 23:16           ` Demi Marie Obenour
2025-11-20 14:56             ` Alyssa Ross
2025-11-20 19:42               ` Demi Marie Obenour
2025-11-12 22:15   ` [PATCH v2 7/8] Documentation: Update support Demi Marie Obenour
2025-11-13 16:49     ` Alyssa Ross
2025-11-13 22:24       ` Demi Marie Obenour
2025-11-14 12:16         ` Alyssa Ross
2025-11-12 22:15   ` [PATCH v2 8/8] lib/config.nix: Validate configuration parameters Demi Marie Obenour
2025-11-13 17:16     ` Alyssa Ross
2025-11-19  8:18   ` [PATCH v3 00/14] System updates based on systemd-sysupdate Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 01/14] host/rootfs: Install all programs from util-linuxMinimal Demi Marie Obenour
2025-11-19 14:14       ` Alyssa Ross
2025-11-20  0:12         ` Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 02/14] host/rootfs: Install systemd-pull Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 03/14] tools: Add directory checker for updates Demi Marie Obenour
2025-11-19 14:45       ` Alyssa Ross
2025-11-19 23:58         ` Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 04/14] scripts: port make-gpt.sh to bash Demi Marie Obenour
2025-11-20 10:28       ` Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 05/14] scripts/make-gpt.sh: Allow specifying partition size Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 06/14] Support generating multiple partition UUIDs Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 07/14] scripts: Use shell expansion to get partition path Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 08/14] Use OS version to set partition labels and UKI name Demi Marie Obenour
2025-11-20 12:11       ` Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 09/14] release: Compress installation images and remove live image Demi Marie Obenour
2025-11-20 12:14       ` Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 10/14] Add B partitions to installation images Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 11/14] release: Create directory with system update Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 12/14] Support updates via systemd-sysupdate Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 13/14] Documentation: Update support Demi Marie Obenour
2025-11-19  8:18     ` [PATCH v3 14/14] Validate configuration parameters Demi Marie Obenour
2025-11-22  1:23     ` [PATCH v4 00/14] System updates based on systemd-sysupdate Demi Marie Obenour
2025-11-22  1:23       ` [PATCH v4 01/14] host/rootfs: Install all programs from util-linuxMinimal Demi Marie Obenour
2025-11-25 11:56         ` Alyssa Ross
2025-11-22  1:23       ` [PATCH v4 02/14] host/rootfs: Install systemd-pull Demi Marie Obenour
2025-11-25  7:36         ` Alyssa Ross
2025-11-22  1:23       ` [PATCH v4 03/14] tools: Add directory checker for updates Demi Marie Obenour
2025-11-22  1:23       ` [PATCH v4 04/14] scripts: port make-gpt.sh to bash Demi Marie Obenour
2025-11-22  1:23       ` [PATCH v4 05/14] scripts/make-gpt.sh: Allow specifying partition size Demi Marie Obenour
2025-11-22  1:23       ` [PATCH v4 06/14] Support generating multiple partition UUIDs Demi Marie Obenour
2025-11-25 13:02         ` Alyssa Ross
2025-11-26 18:26           ` Demi Marie Obenour
2025-11-22  1:23       ` [PATCH v4 07/14] scripts: Use shell expansion to get partition path Demi Marie Obenour
2025-11-22  1:23       ` [PATCH v4 08/14] release: Compress installation images and remove live image Demi Marie Obenour
2025-11-25 13:19         ` Alyssa Ross
2025-11-25 22:38           ` Demi Marie Obenour
2025-11-28 11:09             ` Alyssa Ross
2025-11-28 19:45               ` Demi Marie Obenour
2025-11-22  1:23       ` [PATCH v4 09/14] Use OS version to set partition labels and UKI name Demi Marie Obenour
2025-11-25 14:11         ` Alyssa Ross
2025-11-22  1:23       ` [PATCH v4 10/14] Add B partitions to installation images Demi Marie Obenour
2025-11-25 16:31         ` Alyssa Ross
2025-11-22  1:23       ` [PATCH v4 11/14] release: Create directory with system update Demi Marie Obenour
2025-11-25 16:50         ` Alyssa Ross
2025-11-22  1:23       ` [PATCH v4 12/14] Support updates via systemd-sysupdate Demi Marie Obenour
2025-11-25 17:54         ` Alyssa Ross
2025-11-22  1:23       ` [PATCH v4 13/14] Documentation: Update support Demi Marie Obenour
2025-11-25 18:00         ` Alyssa Ross
2025-11-22  1:23       ` [PATCH v4 14/14] Validate configuration parameters Demi Marie Obenour
2025-11-25 18:06         ` Alyssa Ross
2025-11-25 12:22       ` Alyssa Ross [this message]
2025-11-26 19:40       ` [PATCH v5 00/13] System updates based on systemd-sysupdate Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 01/13] tools: Add directory checker for updates Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 02/13] scripts: port make-gpt.sh to bash Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 03/13] scripts/make-gpt.sh: Allow specifying partition size Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 04/13] Port scripts/format-uuid.sh to awk Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 05/13] Use set and a command substitution to set UUID variables Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 06/13] scripts: Use shell expansion to get partition path Demi Marie Obenour
2025-11-28 11:20           ` Alyssa Ross
2025-11-26 19:40         ` [PATCH v5 07/13] release: Compress installation images and remove live image Demi Marie Obenour
2025-11-28 11:21           ` Alyssa Ross
2025-11-26 19:40         ` [PATCH v5 08/13] Use OS version to set partition labels and UKI name Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 09/13] Add B partitions to installation images Demi Marie Obenour
2025-11-28 11:23           ` Alyssa Ross
2025-11-26 19:40         ` [PATCH v5 10/13] release: Create directory with system update Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 11/13] Support updates via systemd-sysupdate Demi Marie Obenour
2025-11-28 13:47           ` Alyssa Ross
2025-11-28 20:27             ` Demi Marie Obenour
2025-11-28 20:41               ` Alyssa Ross
2025-11-28 20:44                 ` Demi Marie Obenour
2025-11-28 21:08                   ` Alyssa Ross
2025-11-28 21:28                     ` Demi Marie Obenour
2025-11-28 21:30                       ` Alyssa Ross
2025-11-26 19:40         ` [PATCH v5 12/13] Documentation: Update support Demi Marie Obenour
2025-11-26 19:40         ` [PATCH v5 13/13] Validate configuration parameters Demi Marie Obenour
2025-11-29  9:49         ` [PATCH v6 0/8] System updates based on systemd-sysupdate Demi Marie Obenour
2025-11-29  9:49           ` [PATCH v6 1/8] tools: Add directory checker for updates Demi Marie Obenour
2025-11-29 11:16             ` Alyssa Ross
2025-11-29  9:49           ` [PATCH v6 2/8] release: Compress installation images and remove live image Demi Marie Obenour
2025-11-29 11:16             ` Alyssa Ross
2025-11-29  9:50           ` [PATCH v6 3/8] Use OS version to set partition labels and UKI name Demi Marie Obenour
2025-11-29 11:16             ` Alyssa Ross
2025-11-29  9:50           ` [PATCH v6 4/8] Add B partitions to installation images Demi Marie Obenour
2025-11-29 11:16             ` Alyssa Ross
2025-11-29  9:50           ` [PATCH v6 5/8] release: Create directory with system update Demi Marie Obenour
2025-11-29 11:16             ` Alyssa Ross
2025-11-29  9:50           ` [PATCH v6 6/8] Support updates via systemd-sysupdate Demi Marie Obenour
2025-11-29 11:16             ` Alyssa Ross
2025-11-29  9:50           ` [PATCH v6 7/8] Documentation: Update support Demi Marie Obenour
2025-11-30 21:46             ` Alyssa Ross
2025-11-29  9:50           ` [PATCH v6 8/8] Validate configuration parameters Demi Marie Obenour
2025-11-26 19:33     ` [PATCH v4 00/13] System updates based on systemd-sysupdate Demi Marie Obenour
2025-11-26 19:33       ` [PATCH v4 01/13] tools: Add directory checker for updates Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 02/13] scripts: port make-gpt.sh to bash Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 03/13] scripts/make-gpt.sh: Allow specifying partition size Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 04/13] Port scripts/format-uuid.sh to awk Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 05/13] Use set and a command substitution to set UUID variables Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 06/13] scripts: Use shell expansion to get partition path Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 07/13] release: Compress installation images and remove live image Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 08/13] Use OS version to set partition labels and UKI name Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 09/13] Add B partitions to installation images Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 10/13] release: Create directory with system update Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 11/13] Support updates via systemd-sysupdate Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 12/13] Documentation: Update support Demi Marie Obenour
2025-11-26 19:34       ` [PATCH v4 13/13] Validate configuration parameters Demi Marie Obenour

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=87ms4awbdd.fsf@alyssa.is \
    --to=hi@alyssa.is \
    --cc=demiobenour@gmail.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).