Colin Walters [Thu, 26 Aug 2021 21:25:59 +0000 (17:25 -0400)]
Merge pull request #2424 from cgwalters/test-nonroot-ci
ci: Run GH action CI build+test as non-root
Dan Nicholson [Thu, 26 Aug 2021 19:33:23 +0000 (13:33 -0600)]
Merge pull request #2422 from cgwalters/allow-none-detached
lib: Change read_commit_detached_metadata to be nullable
Colin Walters [Thu, 26 Aug 2021 13:53:56 +0000 (09:53 -0400)]
ci: Run main GH action CI build+test as non-root
This is really the standard best practice, matching how
e.g. dpkg/rpm work, as well as most local development
environments (including mine) with e.g. `toolbox`.
Colin Walters [Wed, 25 Aug 2021 19:18:43 +0000 (15:18 -0400)]
lib: Change read_commit_detached_metadata to be nullable
Hit this while working on some Rust code.
Colin Walters [Wed, 25 Aug 2021 21:45:28 +0000 (17:45 -0400)]
Merge pull request #2421 from lucab/ups/auto-txn-fixes
lib: improve transactions auto-cleanup logic
Luca BRUNO [Wed, 25 Aug 2021 12:30:21 +0000 (12:30 +0000)]
lib: improve transactions auto-cleanup logic
This fixes some aspects of OstreeRepoAutoTransaction and re-aligns
it with the logic in flatpak. Specifically:
* link to the underlying repo through refcounting
* bridge internal errors to warning messages
* verify the input pointer type
This is a preparation step before exposing this logic as a public API.
Luca Bruno [Tue, 24 Aug 2021 14:28:39 +0000 (14:28 +0000)]
Merge pull request #2418 from lucab/ups/lib-commit-xattrs
commit: automatically skip xattrs in bare-user-only mode
Luca BRUNO [Mon, 23 Aug 2021 09:46:22 +0000 (09:46 +0000)]
tests: update several bare-user-only checks
Luca BRUNO [Mon, 23 Aug 2021 13:08:44 +0000 (13:08 +0000)]
lib/commit: automatically skip xattrs in bare-user-only mode
Luca BRUNO [Mon, 23 Aug 2021 13:08:53 +0000 (13:08 +0000)]
builtins/commit: set up relevant flags in bare-user-only mode
This detects bare-user-only mode and automatically enables a
commit modifier with relevant flags.
Luca BRUNO [Mon, 23 Aug 2021 13:51:55 +0000 (13:51 +0000)]
lib/diff: automatically skip xattrs in bare-user-only mode
Luca Bruno [Tue, 24 Aug 2021 07:55:59 +0000 (07:55 +0000)]
Merge pull request #2419 from dbnicholson/gpg-list-keys
bin/remote: Rename list-gpg-keys to gpg-list-keys
Dan Nicholson [Mon, 23 Aug 2021 17:09:24 +0000 (11:09 -0600)]
bin/remote: Rename list-gpg-keys to gpg-list-keys
As pointed out in the original review, `gpg-list-keys` fits better
alongside the existing `gpg-import`.
Changes were done with:
```
git grep -l list-gpg-keys | xargs sed -i 's/list-gpg-keys/gpg-list-keys/'
for src in $(git ls-files '*list-gpg-keys*'); do
dst=${src/list-gpg-keys/gpg-list-keys}
git mv "$src" "$dst"
done
```
Colin Walters [Mon, 23 Aug 2021 14:58:36 +0000 (10:58 -0400)]
Merge pull request #2417 from lucab/ups/diff-repo-ignore-xattrs
lib/diff: ignore xattrs if disabled on either repos
Luca BRUNO [Mon, 23 Aug 2021 12:39:02 +0000 (12:39 +0000)]
lib/diff: ignore xattrs if disabled on either repos
This fixes the logic to detect whether xattrs should be automatically
ignored when diffing.
Colin Walters [Fri, 20 Aug 2021 19:12:21 +0000 (15:12 -0400)]
Merge pull request #2412 from lucab/ups/lib-commit-canonicalize
lib/commit: autofix permissions for bare-user-only
Colin Walters [Fri, 20 Aug 2021 19:11:11 +0000 (15:11 -0400)]
Merge pull request #2401 from dbnicholson/gpg-key-info
Remote GPG key info
Luca BRUNO [Fri, 20 Aug 2021 10:58:24 +0000 (10:58 +0000)]
lib/commit: autofix permissions for bare-user-only
This tweaks commit logic to detect bare-user-only repositories and
canonicalize permissions automatically.
Luca Bruno [Thu, 19 Aug 2021 17:00:14 +0000 (17:00 +0000)]
Merge pull request #2415 from lucab/ups/checksum-canonical-perms
lib/checkout: use canonical permissions in bare-user-only mode
Luca BRUNO [Thu, 19 Aug 2021 14:07:19 +0000 (14:07 +0000)]
lib/repo/checkout: use canonical perms in bare-user-only mode
This automatically enables canonical permissions for checkouts in
bare-user-only mode.
Luca BRUNO [Thu, 19 Aug 2021 13:50:21 +0000 (13:50 +0000)]
lib/core/checksum: add flag to use canonical permissions
This adds a new `OSTREE_CHECKSUM_FLAGS_CANONICAL_PERMISSIONS`
checksumming flag, which is needed in bare-user-only mode
to ignore local IDs.
Colin Walters [Wed, 18 Aug 2021 13:10:17 +0000 (09:10 -0400)]
Merge pull request #2414 from lucab/ups/cli-commit-modifier-autoptr
builtins/commit: move commit modifier to auto-cleanup
Colin Walters [Wed, 18 Aug 2021 11:59:12 +0000 (07:59 -0400)]
Merge pull request #2411 from lucab/ups/cli-commit-errors
builtins/commit: check for conflicting permissions options
Luca BRUNO [Wed, 18 Aug 2021 09:06:26 +0000 (09:06 +0000)]
builtins/commit: move commit modifier to auto-cleanup
This reduces the usage of goto cleanup logic by porting the commit
modifier pointer to autoptr.
Luca BRUNO [Tue, 17 Aug 2021 10:30:06 +0000 (10:30 +0000)]
builtins/commit: check for conflicting permissions options
This explicitly checks for commit command options asking for both
non-zero UID/GID and canonical permissions at the same time,
which are incompatible.
Luca Bruno [Wed, 4 Aug 2021 06:13:37 +0000 (06:13 +0000)]
Merge pull request #2409 from jlebon/pr/cov-fixes
A couple of Coverity fixes
Jonathan Lebon [Tue, 3 Aug 2021 20:34:32 +0000 (16:34 -0400)]
ostree/dump: Fix free'ing a static string
Reported-by: Seth Arnold <seth.arnold@canonical.com>
Jonathan Lebon [Tue, 3 Aug 2021 20:34:11 +0000 (16:34 -0400)]
lib/sysroot: Fix error message about creating `/var/lib`
Reported-by: Seth Arnold <seth.arnold@canonical.com>
Jonathan Lebon [Tue, 3 Aug 2021 20:33:28 +0000 (16:33 -0400)]
lib/sign-dummy: Handle incorrect signatures correctly
We need to check all signatures for one which passes, not just fail on
the first one.
Reported-by: Seth Arnold <seth.arnold@canonical.com>
Colin Walters [Thu, 29 Jul 2021 00:27:35 +0000 (20:27 -0400)]
Merge pull request #2408 from bgilbert/workflow
workflows: bump lint toolchain; restrict repository access
Benjamin Gilbert [Wed, 28 Jul 2021 22:32:04 +0000 (18:32 -0400)]
workflows: limit permissions to reading repo contents
Move the existing docs permissions stanza to the top of the workflow for
consistency.
Benjamin Gilbert [Wed, 28 Jul 2021 22:30:33 +0000 (18:30 -0400)]
workflows: bump lint toolchain
Luca Bruno [Wed, 28 Jul 2021 08:26:45 +0000 (08:26 +0000)]
Merge pull request #2406 from liujianqiang-niu/main
fix: Avoid wild pointers
刘建强 [Mon, 26 Jul 2021 01:36:26 +0000 (09:36 +0800)]
fix: Avoid wild pointers
Pointer command is dangerous if there is no assignment.
Log: Avoid wild pointers
Luca Bruno [Mon, 26 Jul 2021 11:52:06 +0000 (11:52 +0000)]
Merge pull request #2407 from smcv/tests-source-date-epoch
tests: Unset SOURCE_DATE_EPOCH
Simon McVittie [Mon, 26 Jul 2021 10:48:45 +0000 (11:48 +0100)]
tests: Unset SOURCE_DATE_EPOCH
Some distributions set this during build in order to have reproducible
builds from the same source code: for example, Debian uses the date
from debian/changelog.
However, some of our tests assume that `ostree commit` will result in
a commit with the current date/time, and SOURCE_DATE_EPOCH breaks that
assumption. Unset it for our build-time tests.
Resolves: https://github.com/ostreedev/ostree/issues/2405
Signed-off-by: Simon McVittie <smcv@collabora.com>
Dan Nicholson [Thu, 15 Jul 2021 23:03:45 +0000 (17:03 -0600)]
fixup! lib/repo: Add ostree_repo_remote_get_gpg_keys()
Dan Nicholson [Thu, 15 Jul 2021 22:25:13 +0000 (16:25 -0600)]
fixup! bin/remote: Add list-gpg-keys subcommand
Dan Nicholson [Thu, 15 Jul 2021 22:24:36 +0000 (16:24 -0600)]
fixup! lib/repo: Add ostree_repo_remote_get_gpg_keys()
Dan Nicholson [Mon, 26 Aug 2019 17:27:54 +0000 (11:27 -0600)]
bin/remote: Include update URLs in list-gpg-keys
Dan Nicholson [Mon, 26 Aug 2019 17:15:25 +0000 (11:15 -0600)]
lib/repo: Include WKD update URLs in GPG key listing
If the key UID contains a valid email address, include the GPG WKD
update URLs in GVariant returned by ostree_repo_remote_get_gpg_keys().
Dan Nicholson [Tue, 27 Aug 2019 16:28:10 +0000 (10:28 -0600)]
libotutil: Add helper for GPG WKD update URLs
Calculate the advanced and direct update URLs for the key discovery
portion[1] of the OpenPGP Web Key Directory specification, and include
the URLs in the key listing in ostree_repo_remote_get_gpg_keys(). These
URLs can be used to locate updated GPG keys for the remote.
1. https://datatracker.ietf.org/doc/html/draft-koch-openpgp-webkey-service#section-3.1
Dan Nicholson [Mon, 26 Aug 2019 16:09:57 +0000 (10:09 -0600)]
libotutil: Import implementation of zbase32 encoding
This will be used to implement the PGP Web Key Directory (WKD) URL
generation. This is a slightly cleaned up implementation[1] taken from
the zbase32 author's original implementation[2]. It provides a single
zbase32_encode API to convert a set of bytes to the zbase32 encoding.
I believe this should be acceptable for inclusion in ostree. The license
in the source files is BSD style while the original repo LICENSE file
claims the Creative Commons CC0 1.0 Universal license, which is public
domain.
1. https://github.com/dbnicholson/libbase32/tree/for-ostree
2. https://github.com/zooko/libbase32
Dan Nicholson [Tue, 13 Aug 2019 16:10:50 +0000 (10:10 -0600)]
bin/remote: Add list-gpg-keys subcommand
This provides a wrapper for the `ostree_repo_remote_get_gpg_keys`
function to show the GPG keys associated with a remote. This is
particularly useful for validating that GPG key updates have been
applied. Tests are added, which checks the
`ostree_repo_remote_get_gpg_keys` API by extension.
Dan Nicholson [Tue, 13 Aug 2019 19:36:00 +0000 (13:36 -0600)]
lib/repo: Add ostree_repo_remote_get_gpg_keys()
This function enumerates the trusted GPG keys for a remote and returns
an array of `GVariant`s describing them. This is useful to see which
keys are collected by ostree for a particular remote. The same
information can be gathered with `gpg`. However, since ostree allows
multiple keyring locations, that's only really useful if you have
knowledge of how ostree collects GPG keyrings.
The format of the variants is documented in
`OSTREE_GPG_KEY_GVARIANT_FORMAT`. This format is primarily a copy of
selected fields within `gpgme_key_t` and its subtypes. The fields are
placed within vardicts rather than using a more efficient tuple of
concrete types. This will allow flexibility if more components of
`gpgme_key_t` are desired in the future.
Dan Nicholson [Wed, 14 Jul 2021 17:04:59 +0000 (11:04 -0600)]
lib/repo: Allow preparing GPG verifier without global keyrings
Currently the verifier decides whether to include the global keyrings
based on whether the specified remote has its own keyring or not. Allow
callers to exclude the global keyrings even when that's not the case.
This will be used in a subsequent commit in order to get the GPG keys
only associated with a remote.
Dan Nicholson [Tue, 13 Aug 2019 16:36:11 +0000 (10:36 -0600)]
lib/repo: Factor out GPG verifier preparation
In order to use the GPG verifier, it needs to be seeded with GPG keys
after instantation. Currently this is only used for verifying data, but
it will also be used for getting a list of trusted GPG keys in a
subsequent commit.
Dan Nicholson [Fri, 26 Jul 2019 15:38:23 +0000 (09:38 -0600)]
lib/repo: Factor out GPG verifier key imports
Currently the verifier only imports all the GPG keys when verifying
data, but it would also be useful for inspecting the trusted keys.
Jonathan Lebon [Wed, 14 Jul 2021 21:11:02 +0000 (17:11 -0400)]
Merge pull request #2398 from bgilbert/statoverride
man: improve statoverride description
Benjamin Gilbert [Wed, 14 Jul 2021 20:07:16 +0000 (16:07 -0400)]
man: improve statoverride description
A statoverride file written in the obvious way will produce incorrect
results for two independent reasons. Document them.
Colin Walters [Mon, 12 Jul 2021 17:08:48 +0000 (13:08 -0400)]
Merge pull request #2396 from ostreedev/release-2021.3
Release 2021.3
Luca BRUNO [Mon, 12 Jul 2021 08:40:14 +0000 (08:40 +0000)]
configure: post-release version bump
Luca BRUNO [Mon, 12 Jul 2021 08:38:38 +0000 (08:38 +0000)]
Release 2021.3
Colin Walters [Sat, 10 Jul 2021 02:53:43 +0000 (22:53 -0400)]
Merge pull request #2394 from lucab/ups/workflow-release
ci/release-build: evaluate package_version from m4 definition
Luca BRUNO [Fri, 9 Jul 2021 16:17:31 +0000 (16:17 +0000)]
ci/release-build: evaluate package_version from m4 definition
This fixes the ci-release-build.sh script to directly source
and evaluate 'package_version' from its m4 definition, without
requiring a fully configured source tree.
Colin Walters [Fri, 2 Jul 2021 21:51:33 +0000 (17:51 -0400)]
Merge pull request #2392 from bgilbert/no-owners
OWNERS: remove
Benjamin Gilbert [Fri, 2 Jul 2021 21:47:33 +0000 (17:47 -0400)]
OWNERS: remove
Prow is not managing merges on this repo.
Colin Walters [Tue, 22 Jun 2021 18:38:05 +0000 (14:38 -0400)]
Merge pull request #2387 from jlebon/pr/ostree-remount-rfkill
ostree-remount: Order before systemd-rfkill.*
Jonathan Lebon [Tue, 22 Jun 2021 18:37:15 +0000 (14:37 -0400)]
Merge pull request #2382 from dbnicholson/gh-tests-configs
Jonathan Lebon [Tue, 22 Jun 2021 15:18:48 +0000 (11:18 -0400)]
ostree-remount: Order before systemd-rfkill.*
The `systemd-rfkill.*` service falls in the category of early things
that need write access to `/var`, so we need to make sure we run before
or it might hit the read-only sysroot.
The long-term fix for this is
https://github.com/ostreedev/ostree/issues/2115.
Closes: https://github.com/coreos/fedora-coreos-tracker/issues/746
Colin Walters [Tue, 22 Jun 2021 14:32:34 +0000 (10:32 -0400)]
Merge pull request #2386 from lucab/ups/commit-timestamp-env
lib/commit: respect SOURCE_DATE_EPOCH for commit timestamp
Luca BRUNO [Tue, 22 Jun 2021 10:42:36 +0000 (10:42 +0000)]
lib/commit: respect SOURCE_DATE_EPOCH for commit timestamp
This tweaks `ostree_repo_write_commit` so that it checks for the
envinroment variable `SOURCE_DATE_EPOCH` as a way to override
the current time, which is used as the commit timestamp.
Ref: https://reproducible-builds.org/docs/source-date-epoch/
Ref: https://reproducible-builds.org/specs/source-date-epoch/
Luca Bruno [Tue, 22 Jun 2021 11:36:51 +0000 (11:36 +0000)]
Merge pull request #2384 from smcv/dedup-report-err
libtest.sh: Remove duplicate ERR trap and report_err()
Simon McVittie [Tue, 22 Jun 2021 09:37:39 +0000 (10:37 +0100)]
libtest.sh: Remove duplicate ERR trap and report_err()
Since #2377 was merged, this is in libtest-core.sh, which is sourced by
libtest.sh.
Signed-off-by: Simon McVittie <smcv@collabora.com>
Dan Nicholson [Mon, 21 Jun 2021 16:56:53 +0000 (10:56 -0600)]
ci: Use Debian and Ubuntu release stage tags
Rather than use the release codename tags, use the release stage tags.
This way the configuration (theoretically) doesn't need to be updated
when new Debian and Ubuntu releases are made.
For Debian stable is used instead of buster and a testing (bullseye)
build is added. For Ubuntu, latest is used instead of focal for the
current LTS and rolling is used instead of groovy for the latest
release. This actually changes the Ubuntu build from groovy to hirsute.
Dan Nicholson [Mon, 21 Jun 2021 17:40:07 +0000 (11:40 -0600)]
ci: Update Debian and Ubuntu build dependencies
This refreshes the build dependencies installed for the GitHub Tests
workflow based on the Build-Depends in the upstream packaging. The
handling is now more explicit about any deviations and any release
differences.
Dan Nicholson [Mon, 21 Jun 2021 19:42:20 +0000 (13:42 -0600)]
ci: Drop special handling of test-suite.log
The automake test harness[1] already dumps the contents of
`test-suite.log` when `VERBOSE=1` is set, so we don't need to add
special handling for it.
1. https://www.gnu.org/software/automake/manual/html_node/Parallel-Test-Harness.html
Dan Nicholson [Mon, 21 Jun 2021 17:55:59 +0000 (11:55 -0600)]
ci: Disable fail-fast in GitHub Tests workflow
Don't cancel all the jobs if one distro config fails. The jobs are
mostly independent, so we do want to let the others continue in case
the failure is isolated to that particular distro configuration.
Dan Nicholson [Mon, 21 Jun 2021 16:46:51 +0000 (10:46 -0600)]
Merge pull request #2379 from dbnicholson/gh-actions-tests
Replace Travis CI with GitHub Actions
Colin Walters [Mon, 21 Jun 2021 14:12:40 +0000 (10:12 -0400)]
Merge pull request #2377 from smcv/libtest-core
libtest-core: Add some improvements from bubblewrap
Colin Walters [Sat, 19 Jun 2021 21:31:12 +0000 (17:31 -0400)]
Merge pull request #2380 from dbnicholson/no-systemd-units
Don't fail build when systemd unit path not defined
Dan Nicholson [Fri, 18 Jun 2021 21:22:39 +0000 (15:22 -0600)]
ci: So long, Travis CI
travis-ci.org stopped running builds on June 15, 2021. Since this
organization is very unlikely to switch to travis-ci.com, just drop the
setup. The new GitHub Actions tests completely replace it.
Dan Nicholson [Fri, 18 Jun 2021 17:33:56 +0000 (11:33 -0600)]
ci: Add GitHub Actions workflow for test suite
This runs the test suite in various distros. The intention is to use
this to replace the Travis CI setup since it often has rate limit
failures.
Each configuration in the matrix runs in a Docker container, installs
system dependencies and then builds and tests ostree. The scripts are
basically copy and paste of the travis ones with some of the lesser used
features pruned out.
Some differences from the travis setup:
* OS details are gathered from `/etc/os-release` instead of being passed
in as environment variables.
* The scripts always assume the user is root and don't try to use
`sudo`.
* The `installcheck` test has been removed since ostree doesn't actually
use that. It could be added to run the installed tests or
`gnome-desktop-testing-runner` could just be called directly.
There should be enough flexibility to run other distros like Fedora,
Arch or Alpine. Another option would be to use the other build scripts
in ci/.
Dan Nicholson [Fri, 18 Jun 2021 17:00:16 +0000 (11:00 -0600)]
ci: Rename GitHub Actions rust workflow metadata file
This workflow is specific to using rust and not just the general test
suite.
Dan Nicholson [Fri, 18 Jun 2021 18:35:41 +0000 (12:35 -0600)]
Don't fail build when systemd unit path not defined
In configure the systemd unit path is optional, but in the code it's
assumed to be defined. Add an `#ifdef` that throws an error when it's
not defined like the handling of `HAVE_LIBMOUNT` below it.
Jonathan Lebon [Fri, 18 Jun 2021 14:27:45 +0000 (10:27 -0400)]
Merge pull request #2366 from pwithnall/freenode
docs: Change IRC channel to libera.chat from freenode
Jonathan Lebon [Fri, 18 Jun 2021 14:25:35 +0000 (10:25 -0400)]
Merge pull request #2375 from cgwalters/generator-remount
Use generator to enable ostree-remount.service and ostree-finalize-staged.path
Simon McVittie [Fri, 18 Jun 2021 09:14:01 +0000 (10:14 +0100)]
libtest-core: Mention bubblewrap as a user of this file
Signed-off-by: Simon McVittie <smcv@collabora.com>
Simon McVittie [Fri, 18 Jun 2021 09:13:36 +0000 (10:13 +0100)]
libtest-core: Update URL of rpm-ostree
Signed-off-by: Simon McVittie <smcv@collabora.com>
Simon McVittie [Sun, 18 Apr 2021 11:45:24 +0000 (12:45 +0100)]
libtest-core: On failure, make it clearer what has happened
If we fail as a result of `set -x`, It's often not completely obvious
which command failed or how. Use a trap on ERR to show the command that
failed, and its exit status.
Signed-off-by: Simon McVittie <smcv@collabora.com>
Alexander Larsson [Tue, 26 Nov 2019 08:25:15 +0000 (09:25 +0100)]
libtest-core: Add assert_files_equal
[Originally from bubblewrap commits
c5c999a7 "tests: test --userns"
and
3e5fe1bf "tests: Better error message if assert_files_equal fails";
separated into this commit by Simon McVittie.]
Colin Walters [Wed, 16 Jun 2021 13:26:24 +0000 (09:26 -0400)]
Use generator to enable ostree-remount.service and ostree-finalize-staged.path
We struggled for a long time with enablement of our "internal units",
trying to follow the philosophy that units should only be enabled
by explicit preset.
See https://bugzilla.redhat.com/show_bug.cgi?id=
1451458
and https://github.com/coreos/rpm-ostree/pull/1482
etc.
And I just saw chat (RH internal on a proprietary system sadly) where
someone hit `ostree-remount.service` not being enabled in CentOS8.
Thinking about this more, I realized we've shipped a systemd generator
for a long time and while its only role until now was to generate `var.mount`,
but by using it to force on our internal units, we don't require
people to deal with presets anymore.
Basically we're inverting things so that "if ostree= is on the kernel
cmdline, then enable our units" and not "enable our units, but have
them use ConditionKernelCmdline=ostree to skip".
Drop the weird gyrations we were doing around `ostree-finalize-staged.path`
too; forking `systemctl start` is just asking for bugs.
So after this, hopefully we won't ever again have to think about
distribution presets and our units.
Dan Nicholson [Tue, 15 Jun 2021 22:16:19 +0000 (16:16 -0600)]
Merge pull request #2374 from gicmo/small_typo
Fix small typo in ostree-sysroot.c
Christian Kellner [Tue, 15 Jun 2021 21:02:10 +0000 (23:02 +0200)]
Fix small typo in ostree-sysroot.c
Jonathan Lebon [Thu, 10 Jun 2021 15:12:30 +0000 (11:12 -0400)]
Merge pull request #2373 from cgwalters/warn-nonempty-var
deploy: Warn if we find content in the deployment's /var
Colin Walters [Wed, 9 Jun 2021 13:44:09 +0000 (09:44 -0400)]
deploy: Warn if we find content in the deployment's /var
This will be ignored, so let's make it very clear
people are doing something wrong. Motivated by a bug
in a build pipeline that injected `/var/lib/rpm` into an ostree
commit which ended up crashing rpm-ostree because it was an empty db
which it wasn't expecting.
It *also* turns out rpm-ostree is incorrectly dumping content in the
deployment `/var` today, which is another bug.
Dan Nicholson [Mon, 7 Jun 2021 21:04:17 +0000 (15:04 -0600)]
Merge pull request #2370 from dbnicholson/auto-lock-no-gslice
repo: Use g_new for OstreeRepoAutoLock
Dan Nicholson [Mon, 7 Jun 2021 19:14:05 +0000 (13:14 -0600)]
repo: Use g_new for OstreeRepoAutoLock
GSlice is effectively deprecated and has little to no advantage over
using the system allocator on Linux.
Colin Walters [Sat, 5 Jun 2021 15:34:09 +0000 (11:34 -0400)]
Merge pull request #2348 from dbnicholson/mt-locking
Improve multi-threaded locking
Dan Nicholson [Thu, 22 Apr 2021 15:10:15 +0000 (09:10 -0600)]
tests: Add single process repo locking tests
The semantics of multiple process locking are covered by
test-concurrency.py, but the semantics of the repository locking from a
single process aren't handled there.
This checks how the repository locking is handled from a single thread
with one OstreeRepo, a single thread with multiple OstreeRepos, and
multiple threads sharing an OstreeRepo.
Dan Nicholson [Mon, 19 Apr 2021 16:03:57 +0000 (10:03 -0600)]
test-concurrency: Lower lock timeout
If there's a locking issue in this test, then it's likely not going to
resolve after a few seconds of serializing access. Lower the default 30
second lock timeout to 5 seconds to prevent the test from hanging
unnecessarily.
Dan Nicholson [Thu, 6 May 2021 22:49:51 +0000 (16:49 -0600)]
repo: Make locking precondition failures fatal
Use `g_error` and `g_assert*` rather than `g_return*` when checking the
locking preconditions so that failures result in the program
terminating. Since this code is protecting filesystem data, we'd rather
crash than delete or corrupt data unexpectedly.
`g_error` is used when the error is due to the caller requesting an
invalid transition like attempting to pop a lock type that hasn't been
taken. It also provides a semi-useful message about what happened.
Dan Nicholson [Fri, 16 Apr 2021 15:55:40 +0000 (09:55 -0600)]
repo: Make locking per-OstreeRepo
Previously each thread maintained its own lock file descriptor
regardless of whether the thread was using the same `OstreeRepo` as
another thread. This was very safe but it made certain multithreaded
procedures difficult. For example, if a main thread took an exclusive
lock and then spawned worker threads, it would deadlock if one of the
worker threads tried to acquire the lock.
This moves the file descriptor from thread local storage to the
`OstreeRepo` structure so that threads using the same `OstreeRepo` can
share the lock. A mutex guards against threads altering the lock state
concurrently.
Fixes: #2344
Dan Nicholson [Wed, 28 Apr 2021 19:25:38 +0000 (13:25 -0600)]
build-sys: Bump required GLib to 2.44
This will allow usage of `GMutexLocker`. This should be available on
many older distros:
* RHEL 7 - 2.56.1
* RHEL 8 - 2.56.4
* Debian 9 stretch (oldstable) - 2.50.3
* Debian 10 buster (stable) - 2.58.3
* Ubuntu 16.04 xenial - 2.48.2
* Ubuntu 18.04 bionic - 2.56.4
Dan Nicholson [Thu, 29 Apr 2021 03:13:15 +0000 (21:13 -0600)]
repo: Require lock type in ostree_repo_lock_pop
This simplifies the lock state management considerably since the
previously pushed type doesn't need to be tracked. Instead, 2 counters
are kept to track how many times each lock type has been pushed. When
the number of exclusive locks drops to 0, the lock transitions back to
shared.
Colin Walters [Thu, 15 Apr 2021 00:43:53 +0000 (20:43 -0400)]
repo: Make locking APIs public
Doing anything even somewhat sophisticated requires this;
turns out our own `ostree prune` CLI wants this, e.g.
https://github.com/ostreedev/ostree/issues/2337
Closes: https://github.com/ostreedev/ostree/issues/2286
Dan Nicholson [Thu, 3 Jun 2021 22:56:07 +0000 (16:56 -0600)]
Merge pull request #2367 from dbnicholson/gpg-2.3.0-expire-test-regression
tests/gpg: Don't assert subkey expiration when only primary expired
Philip Withnall [Wed, 26 May 2021 09:16:01 +0000 (10:16 +0100)]
docs: Change IRC channel to libera.chat from freenode
Freenode appears to be imploding.
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
Dan Nicholson [Fri, 28 May 2021 21:23:54 +0000 (15:23 -0600)]
tests/gpg: Don't assert subkey expiration when only primary expired
In gnupg 2.3.0[1], if a primary key is expired and a subkey does not
have an expiration or its expiration is older than the primary key, the
subkey's expiration will be reported as the primary's. Previously a
subkey without an expiration would not report one regardless of the
primary key's expiration.
This caused a regression in a test setting an expiration on a primary
key. The test was checking that the subkey was not expired by asserting
that there was no `Key expired` line in the signature verification
output. With gnupg 2.3.0+, it will show as expired, causing the test to
fail.
Remove the assertion since it's not consistent across gnupg versions. In
practice we don't care whether the subkey is considered expired or not
as long as the signature verification fails when the primary key is
expired.
1. https://dev.gnupg.org/T3343
Fixes: #2359
Colin Walters [Wed, 26 May 2021 12:58:27 +0000 (08:58 -0400)]
Merge pull request #2364 from cgwalters/fix-ci-f34
ci: Fix staged-delay to work with newer systemd