We know what are the default the default command line so that we can
compute measurement, so there is not much reason to use
`snapd_extra_cmdline_args`. Always using `snapd_full_cmdline_args`
will allow us to filter part of the default command line.
There is a potential bug when filtering all arguments, `grub.cfg` will
just revert to the all the default. We will need to fix it when we
introduce the filtering.
this should allow to release the global state lock while doing resealing/sealing proper as those are slow operations in fact
* boot: use loadModeenv a bit more consistently and some XXXs
* boot: take a lock around read modeenv/modify(/reaseal) etc
* boot: do not seal without the modeenv associated lock
* boot: do not reseal without the modeenv associated lock
* boot,o/devicestate: introduce Unlocker to unlock global state
have boot.DeviceChange make use of it for a start
* boot: explain a bit more modeenvMu
* overlord: introduce state.Unlocker convenience method
* boot: check that the lock is taken also in bootStateUpdate20.commit
This commit fixes a a bug in master that will prevent
`MarkBootSuccessful` from working. The issue is that on classic+modes
the modeenv no longer contains a `base=` field but the
MarkBootSuccessful code will fail if it is missing. This results
in a system that never marks the boot as successful on classic+modes.
Go 1.19 includes some changes to gofmt which intend to make lists and
heading clearer when rendered (https://go.dev/doc/go1.19). This commit
is the result of running the new gofmt and manually fixing some of it.
This was necessary because the new gofmt assumed lines beginning w/ tabs
to start lists or examples. While this is often true in our codebase,
we occasionally also use tabs to indent the lines after a TODO or FIXME
prefix or in yaml (e.g., excerpts of a snap.yaml). This meant that a lot of the
reformatted comments were broken and had to be fixed manually.
Signed-off-by: Miguel Pires <miguel.pires@canonical.com>
The existing switch looks hard to read for a couple of reasons:
1. The empty case is non obvious for someone coming from other
programming languages, and is influenced by the return value of the
function
2. It's confusing to have a default case that returns the opposite value
of the return value of the function
Rewrite the function to prefer a `switch` with more explicit case, and a
`return` statement that matches the default case (now removed).
* many: introduce IsUndo flag in LinkContext
Some times LinkSnap is called in an undo task when we want to revert
to a previous snap revision. Introduce a flag to make LinkSnap and
boot code aware of when this happen, as some of the logic for snap
installations should not be applied when doing a revert. Specifically,
avoid the "try" logic that applies to kernels and bases: we are
reverting to a known snap that is expected to work, and making the
current snap the fallback provokes failures as we are removing it (and
also probably we are removing it because it has failed).
* tests: check that kernel with failing post-refresh is reverted
Check that a kernel with failing post-refresh hook is reverted
properly. In this case a second reboot to go back to the previous
kernel is needed.
* tests: check that base with failing post-refresh is reverted
Check that a base with failing post-refresh hook is reverted
properly. In this case a second reboot to go back to the previous
base is needed.
* boot,overlord: replace isUndo flags with NextBootContext
Replace isUndo flags with the NextBootContext struct, so we have
further information in the type and we can add flags in the future.
* boot: some style changes as suggested by review
* overlord: SetNextBoot call in maybeUndoRemodelBootChanges as undo type
* boot: add tests for the IsUndoingInstall true case
* overlord: fix remodel test for undos
* boot,overlord: implement the undo install for core16/18
* tests: added method to repack kernel snap also for core16/18
* tests: run revert after boot tests for UC16/18 too
* tests/nested/core/base-revert-after-boot: fix var usage
* tests: consider right channel/snap for uc16 in revert tests
* boot: minor stylistic changes
* boot: add tests for the undoing install case for core16/18
* boot,overlord: rename IsUndoingInstall to BootWithoutTry
* boot: use constant instead of literal for status
This is a purely mechanical change because it touches so many files, the real
interesting parts we need that prompted this will be followups.
Signed-off-by: Ian Johnson <ian.johnson@canonical.com>