Simon McVittie [Mon, 24 Jan 2022 09:51:23 +0000 (09:51 +0000)]
Use debhelper 11 features instead of dh-exec
Since compat level 11, man pages installed by the upstream build system
can be listed in d/*.manpages and will automatically be excluded under
the nodoc build-profile.
Colin Walters [Tue, 21 Dec 2021 19:24:03 +0000 (14:24 -0500)]
tests: Fix clang-analyzer not seeing through `g_error()`
Basically due to the glib structured logging rework we lost the
`noreturn` attribute on `g_error()`.
This is fixed in glib as of https://gitlab.gnome.org/GNOME/glib/-/commit/f97ff20adf4eb7b952dd83e2c13046fe9e282f50
Luca BRUNO [Tue, 21 Dec 2021 10:16:36 +0000 (10:16 +0000)]
tests/cli-extensions: tweak test logic
This updates the test logic for CLI extensions, actually checking
for functional output from the subcommand.
It also cleans up some environmental leftover.
Luca BRUNO [Mon, 20 Dec 2021 10:00:02 +0000 (10:00 +0000)]
main: add support for CLI extensions via external binaries
This adds some logic to detect and dispatch unknown subcommands to
extensions available in `$PATH`. Additional commands can be
implemented by adding relevant `ostree-$verb` binaries to the system.
As an example, if a `/usr/bin/ostree-extcommand` extension is provided,
the execution of `ostree extcommand --help` will be dispatched to that
as `ostree-extcommand extcommand --help`.
Colin Walters [Fri, 3 Dec 2021 19:35:12 +0000 (14:35 -0500)]
repo: Change locking for summary regeneration to be shared
This is trying to address:
https://pagure.io/fedora-iot/issue/48
Basically we changed rpm-ostree to start doing a shared lock during
commit by default, but this broke because pungi is starting a process
doing a commit for each architecture, and then trying to regenerate
the summary after each one.
This patch is deleting a big comment with a rationale for why
summary regeneration should be exclusive. Point by point:
> This makes sure the commits and deltas don't get
> deleted while generating the summary.
But prune operations require an exclusive lock, which means that
data still can't be deleted when the summary grabs a shared lock.
> It also means we can be sure refs
> won't be created/updated/deleted during the operation, without having to
> add exclusive locks to those operations which would prevent concurrent
> commits from working.
First: The status quo *has* prevented concurrent commits from working!
There is no real locking solution to this problem. What we really
need to do here is regenerate the summary after each commit *or*
when the caller decides to do it and e.g. include deltas at the same
time.
It's OK if multiple threads race to regenerate the summary;
last-one-wins behavior here is totally fine.
Jonathan Lebon [Fri, 19 Nov 2021 15:44:03 +0000 (10:44 -0500)]
app: Only remount /sysroot if needed
We should only try to remount `/sysroot` if we're actually handling the
sysroot repo and the repo isn't writable. We already have public APIs to
check each of those, so let's use them.
Colin Walters [Mon, 25 Oct 2021 07:07:28 +0000 (07:07 +0000)]
prepare-root: Set up sysroot readonly in initramfs
Let's ensure things are right from the start in the initramfs;
this closes off various race conditions. Followup to
https://github.com/ostreedev/ostree/pull/2113/commits/35642259175973617da937f3cab6ce5f13c95077
Luca BRUNO [Mon, 1 Nov 2021 09:09:58 +0000 (09:09 +0000)]
prepare-root: check for read-only sysroot status early on
This moves read-only sysroot checks upfront, so that they are not
intermixed with mount operations.
It has no immediate side-effects, but allow these check to be
independent from the rest of the mounting logic (and future changes
to it).
Luca BRUNO [Tue, 26 Oct 2021 10:12:27 +0000 (10:12 +0000)]
prepare-root: make all mount operations silent
This adds a `MS_SILENT` flag to all `mount(2)` calls, reducing the
amount of kernel logs produced on each boot.
Those messages do not contain actionable details, and in the "mount
plus read-only remount" case they can easily become highly redundant.
Luca BRUNO [Tue, 19 Oct 2021 08:03:09 +0000 (08:03 +0000)]
tests/var-mount: tweak test setup
This reworks the var-mount destructive test in order to properly use
the datadir for the current stateroot instead of a duplicated one.
In turn, it ensures that the resulting `var.mount` after reboot is
correctly pointing to the same location which hosted `/var` on the
previous boot.
Colin Walters [Thu, 14 Oct 2021 14:40:39 +0000 (10:40 -0400)]
ci: Enable -fanalyzer
Followup to https://github.com/ostreedev/ostree/pull/2463
One thing I noticed here is we lost usage of `build-check.sh`
which also invokes `clang`, which doesn't speak `-fanalyzer`
and would be broken by this if we try to enable `build-check.sh`
again. But that can come later.
Colin Walters [Fri, 8 Oct 2021 12:59:52 +0000 (08:59 -0400)]
fetcher/soup: Fix gcc `-fanalyzer` warning
In general, we're probably going to need to change most of our
`g_return_if_fail` to `g_assert`. The analyzer flags that
the function can return `NULL`, but the caller isn't prepared for
this.
Colin Walters [Fri, 8 Oct 2021 12:59:52 +0000 (08:59 -0400)]
sysroot: Fix gcc `-fanalyzer` warning
In general, we're probably going to need to change most of our
`g_return_if_fail` to `g_assert`. The analyzer flags that
the function can return `NULL`, but the caller isn't prepared for
this.
Colin Walters [Fri, 8 Oct 2021 12:59:52 +0000 (08:59 -0400)]
deployment: Fix gcc `-fanalyzer` warning
In general, we're probably going to need to change most of our
`g_return_if_fail` to `g_assert`. The analyzer flags that
the function can return `NULL`, but the caller isn't prepared for
this.
Colin Walters [Fri, 8 Oct 2021 12:59:52 +0000 (08:59 -0400)]
remote: Fix gcc `-fanalyzer` warning
In general, we're probably going to need to change most of our
`g_return_if_fail` to `g_assert`. The analyzer flags that
the function can return `NULL`, but the caller isn't prepared for
this.
Luca BRUNO [Mon, 11 Oct 2021 06:52:25 +0000 (06:52 +0000)]
repo/private: move OstreeRepoAutoTransaction to a boxed type
This defines `OstreeRepoAutoTransaction` as a boxed type, in order
to support auto-generating bindings for it.
That first requires adding internal reference-counting to it, to
allow freely copying/freeing references to a single transaction guard.