Build containers / Compute changes (pull_request) Successful in 2s
Build containers / fedora-remote (44) (pull_request) Successful in 11m9s
Build containers / fedora-cosmic (rawhide) (pull_request) Successful in 12m8s
Build containers / fedora-cosmic (44) (pull_request) Successful in 14m20s
Build containers / fedora-intune (44) (pull_request) Canceled after 10m35s
Build containers / fedora-intune-himmelblau (44) (pull_request) Canceled after 9m41s
Build containers / Prune old releases and tags (pull_request) Skipped
Fixes found by building and inspecting the image: - Select the Intune authselect profile with-altfiles. Without it system users in /usr/lib/passwd (gdm, pipewire, mdatp) do not resolve and the login screen never starts. The build now fails if gdm does not resolve. - Ship /opt as a plain directory (opt-usrlocal: root). Defender installs to /opt/microsoft/mdatp and keeps state in /var/opt/microsoft/mdatp; with the default /opt -> /var/opt symlink those were the same read-only directory. rpm-ostree still relocates /opt content to /usr/lib/opt, so finalize.d/60-opt-links links it back (only for images where /opt is a directory; fedora-cosmic/remote are unaffected). - Run Defender's %post on first boot (mdatp-firstboot.service): in a compose /var is read-only and the machine GUID/state must not be shared. mdatp.service waits for it. New image fedora-intune-himmelblau: the same workstation with Entra ID sign-in through Himmelblau (Community Nightly packages), which joins the device at the first sign-in and enrolls it in Intune (apply_policy) instead of the Microsoft Intune app. Workstation, Edge and Defender manifests move to images/shared so both images use them; build.sh copies images/shared/*.yaml and CI builds both images in one matrix job. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
21 lines
701 B
Bash
Executable File
21 lines
701 B
Bash
Executable File
#!/bin/bash
|
|
# Runs in the target root during `rpm-ostree compose image` (edition 2024
|
|
# finalize.d hook). rpm-ostree relocates RPM content under /opt to
|
|
# /usr/lib/opt. With `opt-usrlocal: root` /opt is a plain directory in the
|
|
# image and nothing links it back, so link each vendor directory. Images on the
|
|
# default (/opt -> /var/opt, linked by tmpfiles.d) are left alone.
|
|
set -euo pipefail
|
|
|
|
root="${PWD}"
|
|
|
|
[[ -d "${root}/usr/lib/opt" ]] || exit 0
|
|
if [[ -L "${root}/opt" || ! -d "${root}/opt" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
for dir in "${root}"/usr/lib/opt/*; do
|
|
name="$(basename "${dir}")"
|
|
ln -sfn "../usr/lib/opt/${name}" "${root}/opt/${name}"
|
|
echo "Linked /opt/${name} -> /usr/lib/opt/${name}"
|
|
done
|