| 1481 |
1481 |
|
# `<name>.local`, so publishing is load-bearing.
|
| 1482 |
1482 |
|
#
|
| 1483 |
1483 |
|
# Note this is the group whose weak-dependency carriers are mostly
|
| 1484 |
|
- |
# client-side (cups-libs, pipewire, geoclue2). On `server` those are
|
| 1485 |
|
- |
# gone, so avahi arrives only because this line names it — which is
|
|
1484 |
+ |
# client-side (cups-libs, pipewire, geoclue2). On a headless `server`
|
|
1485 |
+ |
# those are gone, so avahi arrives only because this line names it.
|
|
1486 |
+ |
# geoclue2 is back on a `server` that sets GUI=tauri, since it rides in
|
|
1487 |
+ |
# under GTK and WebKit, measured 2026-09-04 on astra; that changes which
|
|
1488 |
+ |
# carriers exist and not the conclusion, which is that naming avahi is
|
|
1489 |
+ |
# what makes it a decision — which is
|
| 1486 |
1490 |
|
# exactly the profile where the install flow depends on it most.
|
| 1487 |
1491 |
|
#
|
| 1488 |
1492 |
|
# nss-mdns is the half that was missing. It needs no nsswitch edit from
|
| 2633 |
2637 |
|
# is now the single definition, and this runs it.
|
| 2634 |
2638 |
|
#
|
| 2635 |
2639 |
|
# The client half is a separate file because it cannot merely be inert on
|
| 2636 |
|
- |
# `server`: `d /var/lib/geoclue 0755 geoclue geoclue` and the three greetd
|
| 2637 |
|
- |
# lines name users that arrive with packages this profile does not install, and
|
| 2638 |
|
- |
# systemd-tmpfiles fails a line whose user does not resolve. So it is deleted
|
| 2639 |
|
- |
# rather than shipped and ignored, and the `else` proves the deletion happened.
|
|
2640 |
+ |
# `server`: the three greetd lines name a user that arrives with a package this
|
|
2641 |
+ |
# profile does not install, and systemd-tmpfiles fails a line whose user does not
|
|
2642 |
+ |
# resolve. So it is deleted rather than shipped and ignored, and the `else`
|
|
2643 |
+ |
# proves the deletion happened.
|
| 2640 |
2644 |
|
#
|
| 2641 |
2645 |
|
# --dry-run --create on each file is the check that matters, and it is the same
|
| 2642 |
2646 |
|
# one the flatpak rule gets further down: a tmpfiles line with a typo in it is
|
| 2643 |
2647 |
|
# accepted by every build step except the boot it silently does nothing on.
|
|
2648 |
+ |
#
|
|
2649 |
+ |
# THE GEOCLUE HALF KEYS ON THE IMAGE, not on a dial, and that is the whole point
|
|
2650 |
+ |
# of it being separate. geoclue arrives with the GTK and WebKit stack, so it is
|
|
2651 |
+ |
# on every client and also on a server that sets GUI=tauri; its line was in the
|
|
2652 |
+ |
# client file, which a server deletes whole, and the first astra mint failed
|
|
2653 |
+ |
# bootc's var-tmpfiles lint on exactly that path. Keying the fix on `$PROFILE`
|
|
2654 |
+ |
# and `$GUI` would answer today's two reasons and be wrong about the third, so
|
|
2655 |
+ |
# the condition asks the image whether the account exists. A declaration naming a
|
|
2656 |
+ |
# user that is not there fails at boot, and one missing for a user that is there
|
|
2657 |
+ |
# fails the lint, so both directions are asserted rather than one.
|
| 2644 |
2658 |
|
RUN set -eux; \
|
| 2645 |
2659 |
|
greeter=/usr/lib/sysusers.d/50-alloy-greeter.conf; \
|
| 2646 |
2660 |
|
common=/usr/lib/tmpfiles.d/50-alloy-var.conf; \
|
| 2666 |
2680 |
|
&& { echo "profile=server has a greeter account but no greeter" >&2; exit 1; }; \
|
| 2667 |
2681 |
|
echo "greeter: no account on this profile"; \
|
| 2668 |
2682 |
|
fi; \
|
|
2683 |
+ |
geoclue=/usr/lib/tmpfiles.d/50-alloy-var-geoclue.conf; \
|
|
2684 |
+ |
if getent passwd geoclue >/dev/null; then \
|
|
2685 |
+ |
[ -f "$geoclue" ] || { echo "$geoclue did not land and this image has geoclue; /var/lib/geoclue would be undeclared and bootc lint refuses that" >&2; exit 1; }; \
|
|
2686 |
+ |
systemd-tmpfiles --dry-run --create "$geoclue" >/dev/null \
|
|
2687 |
+ |
|| { echo "systemd-tmpfiles rejects $geoclue" >&2; exit 1; }; \
|
|
2688 |
+ |
echo "var: geoclue is installed, so its declaration ships"; \
|
|
2689 |
+ |
else \
|
|
2690 |
+ |
rm -f "$geoclue"; \
|
|
2691 |
+ |
[ ! -e "$geoclue" ] \
|
|
2692 |
+ |
|| { echo "this image has no geoclue account and still carries its /var declaration, whose user systemd-tmpfiles cannot resolve at boot" >&2; exit 1; }; \
|
|
2693 |
+ |
echo "var: no geoclue on this image, so no declaration for it"; \
|
|
2694 |
+ |
fi; \
|
| 2669 |
2695 |
|
echo "var: tmpfiles declarations present and accepted for profile=$PROFILE"
|
| 2670 |
2696 |
|
|
| 2671 |
2697 |
|
# The database's /var, on the same rule as the client half above.
|