Commit Graph
100 Commits
Author SHA1 Message Date
Colin Walters 5bf4b1dabc Merge pull request #2447 from cgwalters/sepolicy-for-commit
repo: Add an API to init `OstreeSePolicy` from commit directly
2021-09-30 17:25:30 -04:00
Colin Walters ddc0d54b78 sepolicy: Add deprecation comment for _get_path()
Came up in review
https://github.com/ostreedev/ostree/pull/2447#issuecomment-931428312
2021-09-30 15:54:48 -04:00
Colin Walters 1b9e3a9375 repo: Add an API to init OstreeSePolicy from commit directly
This is part of `OstreeCommitModifier`, but I'm not using
that in some of the ostree-ext Rust code.

It just makes more sense as a direct policy API, where it should
have been in the first place.  There's already support for
setting a policy object on a commit modifier, so that's all the
old API needs to do now.
2021-09-30 15:54:48 -04:00
Colin Walters 1ed290c7d9 fsck: Print a success message
There's a general Unix philosophy that "silence is golden".
However, when one is explicitly invoking an error check it's nice
to see explicit success.

We already print various statistics, so ending with a happy
note has no extra cost.
2021-09-30 14:09:22 -04:00
Colin Walters bcc0ef7583 tests: Use ostree-ext 0.3.0
This updates to the modern glib 0.14 and paves the way for
some reverse dependency testing by using ostree-ext's code.
2021-09-30 13:38:25 -04:00
Colin Walters 4b61768e3d Merge pull request #2448 from cgwalters/fix-selinux-policy
bin/commit: Fix --tree=tar with --selinux-policy
2021-09-30 13:26:00 -04:00
Colin Walters ab12e380fc bin/commit: Fix --tree=tar with --selinux-policy
The logic for `--selinux-policy` ended up in the `--tree=dir`
path, but there's no reason for that.  Fix the imported
labeling with `--tree=tar`.  Prep for use with containers.

We had this bug because the previous logic was trying to avoid
duplicating the code for generic `--selinux-policy` and
the case of `--selinux-policy-from-base --tree=dir`.

It's a bit more code, but it's cleaner if we dis-entangle them.
2021-09-30 11:44:27 -04:00
Colin Walters e8394c755b Merge pull request #2440 from cgwalters/unit-test-counting
two small unit test patches
2021-09-13 14:19:19 -04:00
Colin Walters bc30806c6e tests: Add new TAP APIs
Having to touch a global test counter when adding tests is
a recipe for conflicts between PRs.

The TAP protocol allows *ending* with the expected number of
tests, so the best way to do this is to have an explicit
API like our `tap_ok` which bumps a counter, then end with `tap_end`.

I ported one test as a demo.
2021-09-10 17:07:42 -04:00
Colin Walters 213b8608ea tests/pull-test: Avoid duplicating test numbers
We do this in other places; avoids touching two numbers when
adding tests.  Let computers do the addition.
2021-09-10 17:07:38 -04:00
Colin Walters 09804f7a09 Merge pull request #2438 from cgwalters/release-2021.4
Release 2021.4
2021-09-09 07:34:59 -04:00
Colin Walters d1a73e1aba configure: post-release version bump 2021-09-08 14:18:11 -04:00
Colin Walters 55090f108d Release 2021.4 2021-09-08 14:00:12 -04:00
Colin Walters ce36e05d38 Merge pull request #2434 from cgwalters/custom-remote
Add support for "custom remotes"
2021-09-08 09:27:26 -04:00
Colin Walters 511c7a13ee Add support for "custom remotes"
This will be helpful for the "ostree native container" work in
https://github.com/ostreedev/ostree-rs-ext/

Basically in order to reuse GPG/signapi verification, we need
to support adding a remote, even though it can't be used via
`ostree pull`.  (At least, not until we merge ostree-rs-ext into ostree, but
 even then I think the principle stands)
2021-09-08 07:42:25 -04:00
Colin Walters 8821ec6e56 upgrade: Stabilize deployment staging
We're waaay overdue for this, it's been the default
in rpm-ostree for years, and solves several important bugs
around not capturing `/etc` while things are running.

Also, `ostree admin upgrade --stage` (should) become idempotent.

Closes: https://github.com/ostreedev/ostree/issues/2389
2021-09-07 16:12:43 -04:00
Colin Walters 55a7e74fee Merge pull request #2428 from lucab/ups/tests-selinux-basic
tests: fix bare mode unprivileged 'make check'
2021-09-07 15:07:59 -04:00
Colin Walters 9f5b636990 tests/basic: Skip --no-xattrs if we have selinux
It cannot work to use `--no-xattrs` when SELinux is enabled
because we get a `security.selinux` attribute on created files
regardless.  So just skip this test if true.

Also add some `ostree fsck`s in here which helped me debug
this.
2021-09-06 07:41:01 +00:00
Colin Walters 3691a23a41 Merge pull request #2340 from cgwalters/sign-verify-api
Add an API to verify a commit signature explicitly
2021-08-31 08:04:21 -04:00
Colin Walters 359435de84 Add an API to verify a commit signature explicitly
We have a bunch of APIs to do GPG verification of a commit,
but that doesn't generalize to signapi.  Further, they
require the caller to check the signature status explicitly
which seems like a trap.

This much higher level API works with both GPG and signapi.
The intention is to use this in things that are doing "external
pulls" like the ostree-ext tar import support.  There we will
get the commitmeta from the tarball and we want to verify it
at the same time we import the commit.
2021-08-30 13:27:38 -04:00
Colin Walters dd506fe2c8 checkout: Also ignore xattrs for union in bare-user-only mode
Followup to PRs related to https://github.com/ostreedev/ostree/issues/2410

Since the test suite now covers this the test was failing on
a Fedora SELinux enabled host where we see `security.selinux`
even if not in the commit.
2021-08-26 17:42:29 -04:00
Colin Walters 77a86ccba3 Merge pull request #2424 from cgwalters/test-nonroot-ci
ci: Run GH action CI build+test as non-root
2021-08-26 17:25:59 -04:00
Colin Walters 87d115706e checkout: Save errno when re-throwing
I was seeing an `EPERM`  here which was confusing.
It turned out the real error was `EEXIST`.

Since we're referring to the original error, but we do a
lot of computation in the middle, we need to save errno.
2021-08-26 15:17:36 -04:00
Colin Walters fdeee165f6 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`.
2021-08-26 14:40:34 -04:00
Colin Walters 3e30e72d33 lib: Change read_commit_detached_metadata to be nullable
Hit this while working on some Rust code.
2021-08-25 21:29:51 -04:00
Colin Walters 28a0792919 Merge pull request #2421 from lucab/ups/auto-txn-fixes
lib: improve transactions auto-cleanup logic
2021-08-25 17:45:28 -04:00
Colin Walters 452611e4a8 Merge pull request #2417 from lucab/ups/diff-repo-ignore-xattrs
lib/diff: ignore xattrs if disabled on either repos
2021-08-23 10:58:36 -04:00
Colin Walters 2f675cf1b1 Merge pull request #2412 from lucab/ups/lib-commit-canonicalize
lib/commit: autofix permissions for bare-user-only
2021-08-20 15:12:21 -04:00
Colin Walters 98f3fe3d8e Merge pull request #2401 from dbnicholson/gpg-key-info
Remote GPG key info
2021-08-20 15:11:11 -04:00
Colin Walters cac4f2133b Merge pull request #2414 from lucab/ups/cli-commit-modifier-autoptr
builtins/commit: move commit modifier to auto-cleanup
2021-08-18 09:10:17 -04:00
Colin Walters 6cd585774f Merge pull request #2411 from lucab/ups/cli-commit-errors
builtins/commit: check for conflicting permissions options
2021-08-18 07:59:12 -04:00
Colin Walters a3ce5df22e Merge pull request #2408 from bgilbert/workflow
workflows: bump lint toolchain; restrict repository access
2021-07-28 20:27:35 -04:00
Colin Walters f216a3c170 Merge pull request #2396 from ostreedev/release-2021.3
Release 2021.3
2021-07-12 13:08:48 -04:00
Colin Walters a8bf003a97 Merge pull request #2394 from lucab/ups/workflow-release
ci/release-build: evaluate package_version from m4 definition
2021-07-09 22:53:43 -04:00
Colin Walters 0e58c32c68 Merge pull request #2392 from bgilbert/no-owners
OWNERS: remove
2021-07-02 17:51:33 -04:00
Colin Walters 0900f0c483 Merge pull request #2387 from jlebon/pr/ostree-remount-rfkill
ostree-remount: Order before systemd-rfkill.*
2021-06-22 14:38:05 -04:00
Colin Walters e4b78a00d6 Merge pull request #2386 from lucab/ups/commit-timestamp-env
lib/commit: respect SOURCE_DATE_EPOCH for commit timestamp
2021-06-22 10:32:34 -04:00
Colin Walters 7ff848f101 Merge pull request #2377 from smcv/libtest-core
libtest-core: Add some improvements from bubblewrap
2021-06-21 10:12:40 -04:00
Colin Walters a8eee7b27f Merge pull request #2380 from dbnicholson/no-systemd-units
Don't fail build when systemd unit path not defined
2021-06-19 17:31:12 -04:00
Colin Walters 73e3ccc401 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.
2021-06-16 09:40:28 -04:00
Colin Walters edf7477ee9 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.
2021-06-10 07:33:17 -04:00
Colin Walters 5523aee082 Merge pull request #2348 from dbnicholson/mt-locking
Improve multi-threaded locking
2021-06-05 11:34:09 -04:00
Colin Walters 0f36d8c221 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
2021-06-05 09:00:21 -06:00
Colin Walters 5b8ce9e614 Merge pull request #2364 from cgwalters/fix-ci-f34
ci: Fix staged-delay to work with newer systemd
2021-05-26 08:58:27 -04:00
Colin Walters 08fc6d92e7 Merge pull request #2365 from dbnicholson/apidoc-permissions
workflow/docs: Give token write permission to push gh-pages
2021-05-25 16:37:07 -04:00
Colin Walters 6664ee4ed4 ci: Fix staged-delay to work with newer systemd
Yeah, we should stop parsing the text; I need to dig at that
at some point.
2021-05-25 16:28:32 -04:00
Colin Walters 27a3af6b1b Merge pull request #2363 from dbnicholson/publish-api-docs
Publish libostree API docs
2021-05-25 15:10:47 -04:00
Colin Walters 6c904c630f Merge pull request #2358 from travier/rename
*: rename master branch to main
2021-05-11 11:45:38 -04:00
Colin Walters 733093461c Merge pull request #2356 from miabbott/usretc
docs: typo fix for /usr/etc
2021-05-03 13:10:09 -04:00
Colin Walters 0f3bccf640 pull: Cleanly error out on unknown schemes
Previous to this we'd trip an assertion `abort()` deep in the curl code if e.g.
a user did `ostree remote add foo htttp://...` etc.

Motivated by considering supporting "external remotes" where code outside
ostree does a pull, but we want to reuse the signing verification infrastructure.
2021-04-27 13:11:18 -04:00
Colin Walters 73a896e62c ci: Fix GH action for rustfmt
Since we now have a toplevel workspace, just use that.
2021-04-27 13:10:07 -04:00
Colin Walters 0fcf4a3f30 Merge pull request #2352 from dbnicholson/skip-summary-cache-envvar
tests: Test without a cache directory by default
2021-04-20 08:57:28 -04:00
Colin Walters 2458df446f Merge pull request #2350 from smcv/trap-err
libtest: On failure, make it clearer what has happened
2021-04-18 08:54:49 -04:00
Colin Walters e4d42be31f Merge pull request #2343 from cgwalters/cargo-workspace
build-sys: Add toplevel workspace Cargo.toml
2021-04-15 19:32:11 -04:00
Colin Walters 09c5578a15 Merge pull request #2346 from cgwalters/release-2021-2
Release 2021.2
2021-04-15 15:40:30 -04:00
Colin Walters 3595414c86 configure: post-release version bump 2021-04-15 13:02:48 -04:00
Colin Walters 6a72674ec6 Release 2021.2 2021-04-15 13:02:48 -04:00
Colin Walters 7310203ce9 tests/inst: Make nondestructive tests runnable as unit tests
Ideally in the future we change more of our unit tests to
support running installed; we've tried this in the past with
https://wiki.gnome.org/Initiatives/GnomeGoals/InstalledTests

I'd like to pick that back up again.  This takes a step
towards that by having our Rust tests.

To make this even easier, add a `tests/run-installed`
which runs the installed tests (uninstalled, confusingly
but conveniently for now).
2021-04-15 12:33:34 -04:00
Colin Walters 46a0911c6d build-sys: Add toplevel workspace Cargo.toml
rust-analyzer is happier with this because it understands
the project structure out of the box.

We aren't actually again adding a dependency on Rust/cargo in the core,
this is only used to make `cargo build` work out of the box to build
the Rust test code.
2021-04-15 12:33:34 -04:00
Colin Walters 9b4bffc454 repo: Ensure we set the size for regfile inline
Need to clean up the internal APIs for this.
2021-04-09 22:29:55 +00:00
Colin Walters 2cc11b7808 tests: More tests for inline writing
I'm hitting a bug, add more tests.
2021-04-09 21:54:44 +00:00
Colin Walters 6f84aff0ae repo: Add ostree_repo_write_regfile
This API is push rather than pull, which makes it much more
suitable to use cases like parsing a tar file from external
code.

Now, we have a large mess in this area internally because
the original file writing code was pull based, but static
deltas hit the same problem of wanting a push API, so I added
this special `OstreeRepoBareContent` just for writing regular
files from a push API.

Eventually...I'd like to deprecate the pull based API,
and rework things so that for regular files the push API
is the default, and then `write_content_object()` would
be split up into archive/bare cases.

In this world the `ostree_repo_write_content()` API would
then need to hackily bridge pull to push and it'd be
less efficient.

Anyways for now due to this bifurcation, this API only
works on non-archive repositories, but that's fine for
now because that's what I want for the `ostree-ext-container`
bits.
2021-04-09 21:54:44 +00:00
Colin Walters fce69cdf70 repo: Add ostree_repo_write_symlink
Continuation of the addition of `ostree_repo_write_regfile_inline()`.
This will be helpful for ostree-rs-ext and importing from tar, it's
quite inefficient and awkward for small files to end up creating
a whole `GInputStream` and `GFileInfo` and etc. for small files.
2021-04-08 21:10:00 +00:00
Colin Walters 9332955b5f Merge pull request #2327 from cgwalters/writing-apis
repo: Add ostree_repo_write_regfile_inline
2021-04-08 17:09:11 -04:00
Colin Walters 84a7ae506b Merge pull request #2333 from dbnicholson/travis-32bit
Add back a travis 32 bit build
2021-04-08 14:23:22 -04:00
Colin Walters 22b2adbb2f Merge pull request #2332 from dbnicholson/ubuntu-ci
travis: Don't ask any debconf questions when installing packages
2021-04-08 12:58:01 -04:00
Colin Walters aff1d269bc travis: Bump Ubuntu versions
xenial is EOL soon, let's bump to the latest LTS and the latest.
2021-04-08 15:36:08 +00:00
Colin Walters 4e2a14eb0c repo: Add ostree_repo_write_regfile_inline
When working on ostree-ext and importing from tar, it's
quite inefficient and awkward for small files to end up creating
a whole `GInputStream` and `GFileInfo` and etc. for small files.

Plus the gtk-rs binding API to map from `impl Read` to Gio
https://docs.rs/gio/0.9.1/gio/struct.ReadInputStream.html
requires that the input stream is `Send` but the Rust `tar` API
isn't.

This is only 1/3 of the problem; we also need similar APIs
to directly create a symlink, and to stream large objects via
a push-based API.
2021-04-08 14:57:33 +00:00
Colin Walters 5d68a99a2f tests: Silence a gcc warning
We can't mix `goto` and `__attribute__((cleanup))`.
2021-04-08 14:45:28 +00:00
Colin Walters dfaf314c42 core: Drop unused error handling from object stream helper
I was going to add some new API and I noticed that this function
never returns an error; presumably at one point it did, but
not anymore.  It simplifies the code flow noticeably
to remove that.
2021-04-07 20:01:07 +00:00
Colin Walters 1d0b704ba1 Merge pull request #2325 from dbnicholson/apidoc-gitignore
API doc gitignore cleanup
2021-04-07 15:50:30 -04:00
Colin Walters a90d59cf2d build-sys: Remove --enable-experimental-api
It was added for the collections bits, but we made that stable.
It's now just cruft and we're very unlikely to reuse the infrastructure
again.

Motivated by a unit test failure when running from a tarball:
https://github.com/ostreedev/ostree/issues/2313
2021-04-07 19:19:05 +00:00
Colin Walters 4d9e6de46b tests/inst: Update tokio, hyper and nix 2021-04-07 18:00:57 +00:00
Colin Walters 2628637a78 tests/inst: Update rpm-ostree client 2021-04-07 18:00:57 +00:00
Colin Walters 642dcd10ef tests/inst: Update ostree crate 2021-04-07 18:00:57 +00:00
Colin Walters 35d4e657e7 tests: Drop openat override
No longer needed.
2021-04-07 18:00:57 +00:00
Colin Walters b5c21defe9 core: Fix lgtm.com warning about always true if (bits > 0)
Since we're not going to change this, let's constant fold the logic
here.
2021-04-07 11:48:35 -04:00
Colin Walters 80e4f27a59 manual-tests: Fix unused variables
lgtm.com harshly makes our JS grade "D" due to these unused
variables.
2021-04-07 11:48:35 -04:00
Colin Walters ac38372f49 build-sys: Include all mkinitcpio bits
It's still so tempting to switch to `git archive` to ship sources.

Closes: https://github.com/ostreedev/ostree/issues/2312
2021-04-06 08:58:59 -04:00
Colin Walters 57270db9a1 repo: Ensure load_variant_if_exists sets NULL value
Spotted by @jlebon - we usually expect callers to zero, but
let's be explicit.
2021-04-03 16:44:39 -04:00
Colin Walters 0c0e58e06c repo: Fix load_variant_if_exists to return a nullable value
Another introspection fix I hit when trying to use this in Rust.
2021-04-03 16:44:39 -04:00
Colin Walters 6d0bb10bf0 cci: Update for buildroot changes
See latest in https://github.com/coreos/fedora-coreos-tracker/blob/master/docs/ci-and-builds.md
2021-03-31 15:11:34 -04:00
Colin Walters cb0fd2bf93 tests/pull-test: Use mv -f in a few cases
For some reason I'm hitting this locally because some files are mode `0`.
Which is clearly a different bug but anyways we don't want to prompt.
2021-03-31 15:11:34 -04:00
Colin Walters 7170cf9efd installdeps: Drop PyYAML
Doesn't exist anymore in f33 and we don't depend on python2 anymore.
2021-03-31 15:11:34 -04:00
Colin Walters ca2ea1455f .lgtm.yml: Add package deps
I was recently looking at systemd's CI and came across this.
AFAICS it's a proprietary analysis but it looks useful.

We still have `clang-analyzer` for example for FOSS analysis.
2021-03-26 17:34:09 +00:00
Colin Walters dafa404606 configure: post-release version bump 2021-03-23 15:23:55 -04:00
Colin Walters e9e4b91120 Release 2021.1 2021-03-23 15:23:55 -04:00
Colin Walters 269ede1015 Merge pull request #2309 from jlebon/pr/prefix-pull
lib/pull: Add some error-prefixing in dirtree scanning
2021-03-22 18:58:39 -04:00
Colin Walters b69a4180b8 tests/inst: Patch to use my PR for openat
Fixes the build.
2021-03-19 21:45:54 +00:00
Colin Walters 61184163ea Drop minimal rust/ library
This was my first experiment with using Rust in this way; I gained
a lot of knowledge from it.  But, we don't really gain
anything from the code as it is today - while it is "bit fiddling"
code, the C code is well tested.

We have a lot of compile-time options, and trimming them will be
helpful.

We've also gotten pushback on hard requiring Rust client side.

Instead, what I'd like to do is hopefully soon create an `ostree-system`
crate that uses the existing `ostree` library and can contain
code drained from the rpm-ostree Rust and used by other projects perhaps.

So the goal here is really more Rust, but we need to focus our
efforts on where it's most valuable.
2021-03-18 21:54:52 +00:00
Colin Walters 9c29141c04 Merge pull request #2298 from KloudJack/remove-grub2-suffix
Add configure option for unsuffixed GRUB2 commands linux/initrd
2021-03-18 17:46:18 -04:00
Colin Walters 407477f191 Merge pull request #2301 from cgwalters/api-require-booted
sysroot: Add _require_booted_deployment() API
2021-03-18 08:46:35 -04:00
Colin Walters 1b28e6041c sysroot: Add _require_booted_deployment() API
This is a common pattern that is replicated both in our code
and in rpm-ostree a lot.  Let's add a canonical API.
2021-03-17 19:55:56 +00:00
Colin Walters 236a5ca9bf Merge pull request #2303 from cgwalters/gh-actions
ci: Add a Github Action for Rust for tests/inst
2021-03-17 15:49:05 -04:00
Colin Walters 26166bb8e3 ci: Add a Github Action for Rust for tests/inst
Let's dip our toes in GH Actions (specifically aiming to migrate
away from Travis).
2021-03-17 19:37:21 +00:00
Colin Walters c52a2ff52e tests/inst: cargo fmt 2021-03-17 18:45:17 +00:00
Colin Walters 92e2bc397b Merge pull request #2302 from cgwalters/tests-inst-clippy
tests/inst: Fix lots of `cargo clippy` warnings
2021-03-17 14:43:10 -04:00
Colin Walters d11dd7a37b tests/inst: Fix lots of cargo clippy warnings
Prep for doing this in CI.
2021-03-17 17:13:52 +00:00
Colin Walters 857587615d Add an API+CLI to inject metadata for bootable OSTree commits
I was doing some rpm-ostree work and I wanted to compare two
OSTree commits to see if the kernel has changed.  I think
this should be a lot more natural.

Add `ostree commit --bootable` which calls into a new generic
library API `ostree_commit_metadata_for_bootable()` that
discovers the kernel version and injects it as an `ostree.linux`
metadata key.  And for extra clarity, add an `ostree.bootable`
key.

It's interesting because the "core" OSTree layer is all about
generic files, but this is adding special APIs around bootable
OSTree commits (as opposed to e.g. flatpak as well as
things like rpm-ostree's pkgcache refs).

Eventually, I'd like to ensure everyone is using this and
hard require this metadata key for the `ostree admin deploy`
flow - mainly to prevent accidents.
2021-03-12 19:01:42 +00:00
Colin Walters 975496d241 deploy: Add subbootversion to journal
To help debug an issue we've seen where `/boot` isn't
in sync with the `/ostree/boot` dir, let's log to the journal
what we're doing.
2021-02-28 14:47:58 +00:00