Luca BRUNO [Fri, 11 Nov 2022 14:05:56 +0000 (14:05 +0000)]
copr: only use libostree tags
This adds a tag filter to the logic which emits version labels for
COPR build, so that it avoids mistakenly picking up tags belonging
to the Rust bindings.
Colin Walters [Mon, 31 Oct 2022 13:00:28 +0000 (09:00 -0400)]
Remove readdir-rand
This was only there to reproduce a bug we hit long ago
with bootloader file ordering. We're extremely unlikely
to reintroduce such a bug, and it's not worth carrying around
this code.
Simon McVittie [Fri, 28 Oct 2022 11:21:29 +0000 (12:21 +0100)]
readdir-rand: Copy full size of struct dirent
As noted in readdir(3), in the presence of long filenames it is
possible for a directory entry to be larger than `sizeof (struct dirent)`.
Copy the full length instead.
Signed-off-by: Simon McVittie <smcv@collabora.com>
Luca BRUNO [Fri, 21 Oct 2022 08:43:22 +0000 (08:43 +0000)]
lib/sign-ed25519: convert invariant checks to assertions
This converts several invariant checks to asserts. Most of the
functions in this file were already using assertions, so this aligns
the remaining few outliers to the rest.
Jonathan Lebon [Tue, 25 Oct 2022 13:58:01 +0000 (09:58 -0400)]
ci: bump cosaPod memory requirement to 5Gi
We're hitting memory limits when running the reprovisioning tests. We
should investigate why we need 1Gi of overhead, but for now to get
unblocked let's just bump it.
Luca BRUNO [Tue, 11 Oct 2022 08:50:10 +0000 (08:50 +0000)]
lib/static-delta: document and check parameters format
This enhances the logic handling GVariant parameters within
`ostree_repo_static_delta_generate()`.
Several of those entries are expected to be zero-terminated values,
and this implicit assumption has been observed to be an hidden trap
in languages where strings and arrays may not carry a terminator value
(e.g. Rust).
In order to improve the situation, this makes the documentation more
explicit and actively tries to catch invalid input parameters.
Miguel Angel Ajo [Mon, 19 Sep 2022 15:15:24 +0000 (17:15 +0200)]
Support overlayfs whiteouts on checkout
Introduces an intermediate format for overlayfs storage, where
.wh-ostree. prefixed files will be converted into char 0:0
whiteout devices used by overlayfs to mark deletions across layers.
The CI scripts now uses a volume for the scratch directories
previously in /var/tmp otherwise we cannot create whiteout
devices into an overlayfs mounted filesystem.
Luca BRUNO [Fri, 9 Sep 2022 13:20:43 +0000 (13:20 +0000)]
lib/sign: convert invariant checks to assertions
This converts several invariant checks to asserts. Most of the
functions in this file were already using assertions, so this aligns
the remaining few outliers to the rest.
Luca BRUNO [Thu, 8 Sep 2022 13:53:05 +0000 (13:53 +0000)]
otutil: add error handling to variant builders
This enhances a bunch of helpers related to GVariant building, in
order to properly handle errors and avoid some potential cases of
unexpected NULL results.
Luca BRUNO [Wed, 7 Sep 2022 12:33:37 +0000 (12:33 +0000)]
lib/mtree: drop redundant name checks
This drops several NULL checks against filename input argument.
Those checks are both redundant (as filename validation already
checks for that) and dangerous (as they return early without
setting an error value).
If `/boot` is an automount, then the unit will be stopped as soon as the
automount expires. That's would defeat the purpose of using systemd to
delay finalizing the deployment until shutdown. This is not uncommon as
`systemd-gpt-auto-generator` will create an automount unit for `/boot`
when it's the EFI System Partition and there's no fstab entry.
To ensure that systemd doesn't stop the service early when the `/boot`
automount expires, introduce a new unit that holds `/boot` open until
it's sent `SIGTERM`. This uses a new `--hold` option for
`finalize-staged` that loads but doesn't lock the sysroot. A separate
unit is used since we want the process to remain active throughout the
finalization run in `ExecStop`. That wouldn't work if it was specified
in `ExecStart` in the same unit since it would be killed before the
`ExecStop` action was run.
Dan Nicholson [Tue, 30 Aug 2022 14:38:36 +0000 (08:38 -0600)]
main: Factor out sysroot loading
It can be useful to parse the options and initialize the sysroot without
actually loading it until later. Factor out the sysroot loading to a new
`ostree_admin_sysroot_load` and add a new
`OSTREE_ADMIN_BUILTIN_FLAG_NO_LOAD` flag to accommodate this.
Huijing Hei [Fri, 19 Aug 2022 03:31:46 +0000 (11:31 +0800)]
Fix `ostree admin kargs edit-in-place` assertion when deployments
are pending
This is to support pending deployments instead of rasing assertion.
For example:
```
$ sudo rpm-ostree kargs --append=foo=bar
$ sudo ostree admin kargs edit-in-place --append-if-missing=foobar
```
After reboot we get both `foo=bar foobar`.
Sam James [Tue, 23 Aug 2022 22:37:06 +0000 (23:37 +0100)]
buildutil/glibtests.m4: fix bashism
configure scripts need to be runnable with a POSIX-compliant /bin/sh.
On many (but not all!) systems, /bin/sh is provided by Bash, so errors
like this aren't spotted. Notably Debian defaults to /bin/sh provided
by dash which doesn't tolerate such bashisms as '=='.
This retains compatibility with bash.
Fixes configure warnings/errors like:
```
checking whether to build static libraries... no
./configure: 14795: test: unexpected operator
```
Colin Walters [Mon, 22 Aug 2022 19:59:33 +0000 (15:59 -0400)]
ci: Also drop seccomp on debian testing
I didn't deep dive into debugging this but I'm pretty sure it's
https://gitlab.gnome.org/GNOME/glib/-/issues/2580
which is us having an older Docker in the middle here.
Colin Walters [Tue, 16 Aug 2022 21:27:46 +0000 (17:27 -0400)]
cli/rev-parse: Add `--single` option
In the current "ostree native container" flow, we're inserting
a commit object into the repo but with no refs.
We have hacks in a few places to find the commit digest via e.g.
`find repo/objects -name *.commit` but that's a horrible hack.
Add `ostree rev-parse --single` which will print the single commit,
and error out if there is not exactly one commit.
Co-authored-by: Jonathan Lebon <jonathan@jlebon.com>
Commit 540e60c3 introduced _ostree_repo_auto_transaction_new(), a
private constructor to OstreeRepoAutoTransaction, by factoring out
some code from _ostree_repo_auto_transaction_start(). This factored
code increased the refcount of the 'repo' variable.
Subsequent commit 71304e854c made ostree_repo_prepare_transaction()
use ths newly introduced constructor. However, in this function, the
happy path assumed no ref was taken, and therefore did not unref it.
Commit 71304e854c didn't add the corresponding unref either.
This leaks a reference to OstreeRepo when calling
ostree_repo_prepare_transaction().
Plug this leak by using g_clear_object() to clear the repo field
of OstreeRepoAutoTransaction, instead of simply setting it to NULL.