summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* builtin: use GCancellable and GError everywhereLuca BRUNO2022-01-211-56/+62
| | | | | | This reworks `ostree ls` top-level logic so that cancellation tokens and error details are plumbed through all codepaths. It also gets rid of all previous goto jumps.
* Merge pull request #2521 from cgwalters/syncfs-only-logLuca Bruno2022-01-201-1/+4
|\ | | | | deploy: Also log to journal if we time out global sync()
| * deploy: Also log to journal if we time out global sync()Colin Walters2022-01-201-1/+4
|/ | | | | | | | | | We do implicitly have this data because we log timings via structured metadata in a later journal entry, but it's quite common to lose the structured metadata because a lot of tooling just grabs the default syslog-compatible text from `journalctl`. Let's be louder when we hit this case as a general rule too; I think most people shipping ostree systems want to see if it's happening.
* Merge pull request #2520 from lucab/ups/builtin-commit-reject-empty-metadataColin Walters2022-01-204-11/+32
|\ | | | | lib/commit: reject empty metadata keys
| * lib/commit: reject empty metadata keysLuca BRUNO2022-01-203-5/+30
| | | | | | | | | | This adds one more check to the metadata validation logic in order to reject empty metadata keys.
| * lib/commit: always validate metadataLuca BRUNO2022-01-191-6/+2
|/ | | | | This tweaks commit logic in order to always validate metadata, including on commits where the expected checksum is already known.
* Merge pull request #2519 from cgwalters/syncfs-onlyColin Walters2022-01-183-1/+78
|\ | | | | deploy: Add a 5s max timeout on global filesystem `sync()`
| * deploy: Add a 5s max timeout on global filesystem `sync()`Colin Walters2022-01-183-1/+78
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=2003532 Basically there's a systemd bug where it's losing the `_netdev` aspect of Ceph filesystem mounts. This means the network is taken down before Ceph is unmounted. In turn, our invocation of `sync()` blocks on Ceph, which won't succeed. And this in turn manifests as a failure to transition to the new deployment. I initially did this patch to just rip out the global `sync()`. I am pretty sure we don't need it anymore. We've been doing individual `syncfs()` on `/sysroot` and `/boot` for a while now, and those are the only filesystems we should be touching. But *proving* that is a whole other thing of course. To be conservative, let's instead just add a timeout of 5s on our invocation of `sync()`. It doesn't return any information on success/error anyways. To allow testing without the `sync()` invocation, we also support a new `OSTREE_SYSROOT_OPT_SKIP_SYNC=1` environment variable. For staged deployments, this needs to be injected via e.g. systemd unit overrides into `ostree-finalize-staged.service`. Implementing this is a bit hairy - we need to spawn a thread. I debated blocking in arecursive mainloop, but I think `g_cond_wait_until()` is also fine here.
* Merge pull request #2517 from dbnicholson/ubuntu-seccompColin Walters2022-01-131-0/+20
|\ | | | | github: Workaround glib/seccomp issue on Ubuntu impish
| * github: Workaround glib/seccomp issue on Ubuntu impishDan Nicholson2022-01-121-0/+20
|/ | | | | | | | | | | | | | | | The ubuntu-latest VMs are currently based on 20.04 (focal). In focal, libseccomp2 doesn't know about the close_range syscall[1], but g_spawn_sync in impish tries to use close_range since it's defined in glibc. That causes libseccomp2 to return EPERM as it does for any unknown syscalls. g_spawn_sync carries on silently instead of falling back to other means of setting CLOEXEC on open FDs. Eventually it causes some tests to hang since once side of a pipe is never closed. Remove this when libseccomp2 in focal is updated or glib in impish handles the EPERM better. 1. https://bugs.launchpad.net/ubuntu/+source/libseccomp/+bug/1944436 Fixes: #2495
* Merge pull request #2516 from cgwalters/define-ostree-bootedJonathan Lebon2022-01-124-5/+13
|\
| * sysroot: Add a public `#define OSTREE_PATH_BOOTED`Colin Walters2022-01-124-5/+13
| | | | | | | | | | This is public API. Motivated by https://github.com/coreos/rpm-ostree/pull/3325/files#diff-56528694f6f3213d6fb88d872f77291412dceec263b57166519843b13eca9a4dR30
* | Merge pull request #2514 from lucab/ups/drop-setenvColin Walters2022-01-121-4/+0
|\ \ | | | | | | libostree/sepolicy: get rid of a g_setenv() call
| * | libostree/sepolicy: get rid of a g_setenv() callLuca BRUNO2022-01-111-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes a 'g_setenv()' call, which could potentially be unsafe in a multi-thread context. The current libselinux codebase does not seem to check for `LIBSELINUX_DISABLE_PCRE_PRECOMPILED`, so I think this has no effects nowadays. Additionally, I could not find any reference to it in libselinux git history, so I'm not sure if it ever played any role at all. My current understanding is that this is coming from version incompatibilities between an older libselinux in the build environment and a newer policy (with precompiled regexs) in the target. But from the ML discussion I found, I think it eventually got solved in a different way, possibly by avoiding the policy binary caches. Refs: * https://www.spinics.net/lists/selinux/msg14822.html * https://github.com/ostreedev/ostree/pull/2513#discussion_r781042884
* | | Merge pull request #2515 from cgwalters/cliwrap-libJoseph Marrero Corchado2022-01-115-2/+45
|\ \ \ | |/ / |/| / | |/ main: Also support CLI extensions in `/usr/libexec/libostree/ext`
| * main: Also support CLI extensions in `/usr/libexec/libostree/ext`Colin Walters2022-01-115-2/+45
|/ | | | | | | | | | | | | In fixing https://github.com/coreos/rpm-ostree/pull/3323 I felt that it was a bit ugly we're installing `/usr/bin/ostree-container`. It's kind of an implementation detail. We want users to use `ostree container`. Let's support values outside of $PATH too. For example, this also ensures that TAB completion for `ost` expands to `ostree ` with a space.
* Merge pull request #2513 from lucab/ups/setenv-errorLuca Bruno2022-01-106-6/+17
|\ | | | | ostree: check g_setenv return value
| * ostree: check g_setenv return valueLuca BRUNO2022-01-106-6/+17
|/ | | | | This adds proper return-value checks on g_setenv calls. It fixes a static analysis warning highlighted by Coverity.
* Merge pull request #2512 from lucab/ups/variant-builder-error-memleakLuca Bruno2022-01-101-4/+4
|\ | | | | libotutil: avoid leaking builder memory on error
| * libotutil: avoid leaking builder memory on errorLuca BRUNO2022-01-101-4/+4
|/ | | | | | | | | This swaps the order of a couple of input sanity checks, in order to fix a minor memory leak due to an early-return on the error path. Memory for the result is now allocated only after input has been sanity-checked. It fixes a static analysis warning highlighted by Coverity.
* Merge pull request #2509 from ostreedev/release-2022.1Luca Bruno2022-01-051-2/+2
|\ | | | | Release 2022.1
| * configure: post-release version bumprelease-2022.1Luca BRUNO2022-01-051-2/+2
| |
| * Release 2022.1v2022.1Luca BRUNO2022-01-051-3/+3
|/
* Merge pull request #2506 from lucab/ups/dependabot-configDan Nicholson2022-01-041-0/+7
|\ | | | | github: add dependabot config
| * github: add dependabot configLuca BRUNO2022-01-041-0/+7
|/ | | | | This adds a configuration file for dependabot, taking care of automatic updates for all git submodules.
* Merge pull request #2376 from smcv/fuse3Luca Bruno2022-01-044-6/+81
|\ | | | | rofiles-fuse: Build using FUSE 3 if possible, falling back to FUSE 2
| * rofiles-fuse: Build using FUSE 3 if possible, falling back to FUSE 2Simon McVittie2022-01-044-6/+81
|/ | | | | | | | This adds build-time configuration logic to automatically detect and switch between libfuse 2.x and 3.x. Signed-off-by: Simon McVittie <smcv@collabora.com> Co-authored-by: Luca BRUNO <luca.bruno@coreos.com>
* Merge pull request #2505 from lucab/ups/bsdiff-error-throwColin Walters2022-01-031-1/+1
|\ | | | | lib/static-delta: throw a proper error on bspatch failure
| * lib/static-delta: throw a proper error on bspatch failureLuca BRUNO2022-01-031-1/+1
| | | | | | | | | | This makes sure that a populated GError is returned when bsdiff patching fails. The human-friendly label also helps in debugging.
* | Merge pull request #2504 from lucab/ups/bsdiff-CVE-2014-9862Colin Walters2022-01-031-0/+0
|\ \ | |/ |/| bsdiff: bump submodule, pick up fix for CVE-2014-9862
| * bsdiff: bump submodule, pick up fix for CVE-2014-9862Luca BRUNO2022-01-031-0/+0
|/ | | | | | | | | This updates the bsdiff submodule to latest upstream revision, in order to pick up additional bound checks for CVE-2014-9862. Update submodule: bsdiff Ref: * https://www.x41-dsec.de/lab/advisories/x41-2020-006-bspatch/
* Merge pull request #2503 from lucab/ups/libostree-content-writer-headerColin Walters2022-01-032-0/+2
|\ | | | | lib: use ostree-content-writer header
| * lib: use ostree-content-writer headerLuca BRUNO2022-01-032-0/+2
|/ | | | | | This installs and exposes the content of `ostree-content-writer.h`, so that library consumers can properly reference symbols defined in that header.
* Merge pull request #2502 from cgwalters/analyzerDan Nicholson2021-12-212-49/+4
|\ | | | | two minor clang-analyzer fixes
| * tests: Fix clang-analyzer not seeing through `g_error()`Colin Walters2021-12-211-4/+4
| | | | | | | | | | | | | | | | 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 But we might as well just throw an error here.
| * soup-uri: Fix clang-analyzer warning by dropping dead codeColin Walters2021-12-211-45/+0
|/ | | | | | | | Fixes `Argument with 'nonnull' attribute passed null` by making the code not exist at all anymore. In upstream libsoup this code is gone too; it uses `GUri` from glib which we probably could now too, but one thing at a time.
* Merge pull request #2501 from lucab/ups/test-cli-extensions-tweakLuca Bruno2021-12-211-2/+6
|\ | | | | tests/cli-extensions: tweak test logic
| * tests/cli-extensions: tweak test logicLuca BRUNO2021-12-211-2/+6
|/ | | | | | This updates the test logic for CLI extensions, actually checking for functional output from the subcommand. It also cleans up some environmental leftover.
* Merge pull request #2500 from lucab/ups/cli-extensionsColin Walters2021-12-205-16/+140
|\ | | | | main: add support for CLI extensions via external binaries
| * main: add support for CLI extensions via external binariesLuca BRUNO2021-12-205-16/+140
|/ | | | | | | | | | 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`.
* Merge pull request #2498 from lucab/ups/test-assert-stringsColin Walters2021-12-101-2/+4
|\ | | | | tests: assert mandatory values are present
| * tests: assert mandatory values are presentLuca BRUNO2021-12-101-2/+4
|/ | | | | This adds a couple of string assertions to make sure that the test run is sane.
* Merge pull request #2496 from lucab/ups/repo-assertsColin Walters2021-12-071-4/+9
|\ | | | | lib/repo: fix problematic invariant checks
| * lib/repo: do no return a NULL on failureLuca BRUNO2021-12-071-2/+4
| | | | | | | | | | | | This turns an existing check into an assert. The previously returned NULL may result in confusing callers, as none of them is checking for that.
| * lib/repo: do no return an arbitrary mode on failureLuca BRUNO2021-12-071-1/+2
| | | | | | | | | | This turns the existing check into an assert. Otherwise, the previous code may return an arbitrary repo mode (bare) on failure.
| * lib/repo: assert that writable state and error agreeLuca BRUNO2021-12-071-1/+3
| | | | | | | | | | This adds an assertion to check that writable stable and error are in sync. The subsequent logic uses them interchangeably.
* | Merge pull request #2494 from jmarrero/fsf-addressColin Walters2021-12-07435-1306/+436
|\ \ | |/ |/| Update FSF license notices to use URL instead of address
| * Update FSF license notices to use URL instead of addressJoseph Marrero2021-12-07435-1306/+436
| |
* | Merge pull request #2493 from cgwalters/summary-lock-sharedColin Walters2021-12-061-8/+2
|\ \ | |/ |/| repo: Change locking for summary regeneration to be shared
| * repo: Change locking for summary regeneration to be sharedColin Walters2021-12-031-8/+2
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.