Skip to content

fix: skip s6-svwait in stage3 when there is no service - #38

Merged
amannocci merged 2 commits into
mainfrom
fix/stage3-svwait-no-services
Oct 22, 2026
Merged

amannocci merged 2 commits into
mainfrom
fix/stage3-svwait-no-services

Conversation

@amannocci

@amannocci amannocci commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

What is the change being made?

  • stage3 globs the services with elglob -0, so a scandir without services expands to nothing instead of the pattern itself.
  • Each service is waited for in parallel (forx -p, one s6-svwait -D per service), still bounded by IGNITY_SERVICES_GRACETIME. Without services there is nothing to wait for.
  • Tests: shutdown without services (test_boot.py) and with services (test_services.py) leaves no s6-svwait error.
  • CI: astral-sh/setup-uv and peter-evans/create-pull-request are replaced by their techcode-io/github-actions proxies (setup-uv/v1, create-pull-request/v1), as already done for setup-github-bot. The setup-uv proxy pins uv to 0.13.5 by default.

Why is the change being made?

Downstream images without user services print on every shutdown:

s6-svwait: fatal: unable to subscribe to events for /run/ignity/services-state/*: No such file or directory

Without -0, elglob keeps a pattern that matches nothing (.s6-svscan is skipped as a dotfile), and s6-svwait got the literal *. The bug was hidden until #34: the old eltest -f check never ran the wait.

astral-sh/setup-uv and peter-evans/create-pull-request are restricted actions: the proxies are the allowed way to use them.

How has this been tested?

  • By hand with podman, on an image built from source (debian:bookworm-slim):
    • no services: the error is gone, and the CMD exit code is kept (sh -c 'exit 3' gives 3);
    • with the services fixture: clean shutdown, exit code kept.
  • Not run yet: uv run poe test, including the two new tests. The proxies are covered by this PR's CI run, but dependabot-plus-plus.yml only runs weekly or by hand (workflow_dispatch).

How has this been documented?

No documentation change: the behaviour matches what is already documented.

Related Issues

None.

elglob without -0 kept the unmatched pattern, so s6-svwait got the literal
/run/ignity/services-state/* and failed on every shutdown without services.
Each service is now waited for in parallel, within the same grace time.
astral-sh/setup-uv and peter-evans/create-pull-request are restricted, use the
techcode-io/github-actions proxies instead, as for setup-github-bot.
@amannocci
amannocci merged commit ae97d5d into main Oct 22, 2026
12 of 17 checks passed
@amannocci amannocci self-assigned this Oct 22, 2026
@amannocci
amannocci deleted the fix/stage3-svwait-no-services branch October 22, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant