commit:     9a7bfa8fb85e81b801c72a22d9b7b5c07f11eef2
Author:     Matt Jolly <kangie <AT> gentoo <DOT> org>
AuthorDate: Sat May 24 01:49:55 2025 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Oct  3 21:34:12 2025 +0000
URL:        https://gitweb.gentoo.org/proj/releng.git/commit/?id=9a7bfa8f

specs: add stage4w-*-23 (WSL) for amd64 and arm64

This commit adds a stage4w (WSL) spec, based on the stage3d spec.

This spec includes D3D12 (DirectX) video support, necessating a
rebuild of media-libs/mesa and sys-apps/gentoo-wsl-config which
includes necessary configuration files and scripts along with
QoL enhancements to streamline the Gentoo on WSL experience.

Based on user feedbock:

- both openrc and systemd images are available
- password requirements have been relaxed

Bug: https://bugs.gentoo.org/956334
Signed-off-by: Matt Jolly <kangie <AT> gentoo.org>
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 releases/scripts/wsl.sh                      | 59 ++++++++++++++++++++++++++++
 releases/specs/amd64/stage4w-openrc-23.spec  | 22 +++++++++++
 releases/specs/amd64/stage4w-systemd-23.spec | 22 +++++++++++
 releases/specs/arm64/stage4w-openrc-23.spec  | 22 +++++++++++
 releases/specs/arm64/stage4w-systemd-23.spec | 22 +++++++++++
 5 files changed, 147 insertions(+)

diff --git a/releases/scripts/wsl.sh b/releases/scripts/wsl.sh
new file mode 100644
index 00000000..3dcced31
--- /dev/null
+++ b/releases/scripts/wsl.sh
@@ -0,0 +1,59 @@
+mask_systemd_units() {
+       local known_bad_units=(
+               NetworkManager.service
+               systemd-networkd.service
+               systemd-networkd.socket
+               systemd-resolved.service
+               systemd-tmpfiles-clean.service
+               systemd-tmpfiles-clean.timer
+               systemd-tmpfiles-setup-dev-early.service
+               systemd-tmpfiles-setup-dev.service
+               systemd-tmpfiles-setup.service
+               tmp.mount
+       )
+       for unit in "${known_bad_units[@]}"; do
+               # Mask the unit to prevent it from starting automatically
+               # We also do this when the OOBE script runs (in case the user 
does a DIY install from stage3)
+               # but systemd will start when the container starts, so the 
earlier the better
+               systemctl mask "$unit" >/dev/null 2>&1 || true
+       done
+}
+
+if command -v systemctl >/dev/null 2>&1; then
+       mask_systemd_units
+elif command -v rc-service >/dev/null 2>&1; then
+       rc-update delete systemd-tmpfiles-setup boot
+       rc-uptade delete systemd-tmpfiles-setup-dev sysinit
+fi
+
+if ! grep -Fqx 'WSLPATH=${PATH}' /etc/profile; then
+       # Insert our block before the first line matching the anchor
+       tmp=$(mktemp)
+       awk 'BEGIN{done=0}
+               $0 ~ /^# Load environment settings from profile.env/ && !done {
+                       print "# 961809: WSL: store any injected Windows PATH 
components"
+                       print "if [[ -f /proc/sys/fs/binfmt_misc/WSLInterop && 
-n \"$PATH\" ]]; then"
+                       print "\tWSLPATH=${PATH}"
+                       print "fi"
+                       print ""
+                       done=1
+               }
+               { print }' /etc/profile > "$tmp" && cat "$tmp" > /etc/profile
+       rm -f "$tmp"
+fi
+
+if ! grep -Fqx 'if [[ -v WSLPATH ]]; then' /etc/profile; then
+       tmp=$(mktemp)
+       awk 'BEGIN{done=0}
+               $0 ~ /^# You should override/ && !done {
+                       print "# 961809: suffix WSLPATH to PATH if we stored it"
+                       print "if [[ -v WSLPATH ]]; then"
+                       print "\texport PATH=${PATH}:${WSLPATH}"
+                       print "\tunset WSLPATH"
+                       print "fi"
+                       print ""
+                       done=1
+               }
+               { print }' /etc/profile > "$tmp" && cat "$tmp" > /etc/profile
+       rm -f "$tmp"
+fi

diff --git a/releases/specs/amd64/stage4w-openrc-23.spec 
b/releases/specs/amd64/stage4w-openrc-23.spec
new file mode 100644
index 00000000..c9d27bb4
--- /dev/null
+++ b/releases/specs/amd64/stage4w-openrc-23.spec
@@ -0,0 +1,22 @@
+subarch: amd64
+target: stage4
+version_stamp: wsl-openrc-@TIMESTAMP@
+rel_type: 23.0-default
+profile: default/linux/amd64/23.0/desktop
+snapshot_treeish: @TREEISH@
+source_subpath: 23.0-default/stage3-amd64-desktop-openrc-@[email protected]
+compression_mode: pixz
+portage_confdir: @REPO_DIR@/releases/portage/stages
+portage_prefix: releng
+binrepo_path: amd64/binpackages/23.0/x86-64
+
+stage4/use:
+       -passwdqc
+       video_cards_d3d12
+
+stage4/packages:
+       media-libs/mesa
+       sys-apps/gentoo-wsl-config
+       sys-auth/pambase
+
+stage4/fsscript: @REPO_DIR@/releases/scripts/wsl.sh

diff --git a/releases/specs/amd64/stage4w-systemd-23.spec 
b/releases/specs/amd64/stage4w-systemd-23.spec
new file mode 100644
index 00000000..4d6aee39
--- /dev/null
+++ b/releases/specs/amd64/stage4w-systemd-23.spec
@@ -0,0 +1,22 @@
+subarch: amd64
+target: stage4
+version_stamp: wsl-systemd-@TIMESTAMP@
+rel_type: 23.0-default
+profile: default/linux/amd64/23.0/desktop/systemd
+snapshot_treeish: @TREEISH@
+source_subpath: 23.0-default/stage3-amd64-desktop-systemd-@[email protected]
+compression_mode: pixz
+portage_confdir: @REPO_DIR@/releases/portage/stages
+portage_prefix: releng
+binrepo_path: amd64/binpackages/23.0/x86-64
+
+stage4/use:
+       -passwdqc
+       video_cards_d3d12
+
+stage4/packages:
+       media-libs/mesa
+       sys-apps/gentoo-wsl-config
+       sys-auth/pambase
+
+stage4/fsscript: @REPO_DIR@/releases/scripts/wsl.sh

diff --git a/releases/specs/arm64/stage4w-openrc-23.spec 
b/releases/specs/arm64/stage4w-openrc-23.spec
new file mode 100644
index 00000000..3ac4f898
--- /dev/null
+++ b/releases/specs/arm64/stage4w-openrc-23.spec
@@ -0,0 +1,22 @@
+subarch: arm64
+target: stage4
+version_stamp: wsl-openrc-@TIMESTAMP@
+rel_type: 23.0-default
+profile: default/linux/arm64/23.0/desktop
+snapshot_treeish: @TREEISH@
+source_subpath: 23.0-default/stage3-arm64-desktop-openrc-@[email protected]
+compression_mode: pixz
+portage_confdir: @REPO_DIR@/releases/portage/stages
+portage_prefix: releng
+binrepo_path: arm64/binpackages/23.0/arm64
+
+stage4/use:
+       -passwdqc
+       video_cards_d3d12
+
+stage4/packages:
+       media-libs/mesa
+       sys-apps/gentoo-wsl-config
+       sys-auth/pambase
+
+stage4/fsscript: @REPO_DIR@/releases/scripts/wsl.sh

diff --git a/releases/specs/arm64/stage4w-systemd-23.spec 
b/releases/specs/arm64/stage4w-systemd-23.spec
new file mode 100644
index 00000000..bfb8ffbc
--- /dev/null
+++ b/releases/specs/arm64/stage4w-systemd-23.spec
@@ -0,0 +1,22 @@
+subarch: arm64
+target: stage4
+version_stamp: wsl-systemd-@TIMESTAMP@
+rel_type: 23.0-default
+profile: default/linux/arm64/23.0/desktop/systemd
+snapshot_treeish: @TREEISH@
+source_subpath: 23.0-default/stage3-arm64-desktop-systemd-@[email protected]
+compression_mode: pixz
+portage_confdir: @REPO_DIR@/releases/portage/stages
+portage_prefix: releng
+binrepo_path: arm64/binpackages/23.0/arm64
+
+stage4/use:
+       -passwdqc
+       video_cards_d3d12
+
+stage4/packages:
+       media-libs/mesa
+       sys-apps/gentoo-wsl-config
+       sys-auth/pambase
+
+stage4/fsscript: @REPO_DIR@/releases/scripts/wsl.sh

Reply via email to