Add a notion of "physical" sysroot, use for remote writing
(Note this PR was reverted in <https://github.com/ostreedev/ostree/pull/902>; this version should be better) Using `${sysroot}` to mean the physical storage root: We don't want to write to `${sysroot}/etc/ostree/remotes.d`, since nothing will read it, and really `${sysroot}` should just have `/ostree` (ideally). Today the Anaconda rpmostree code ends up writing there. Fix this by adding a notion of "physical" sysroot. We determine whether the path is physical by checking for `/sysroot`, which exists in deployment roots (and there shouldn't be a `${sysroot}/sysroot`). In order to unit test this, I added a `--sysroot` argument to `remote add`. However, doing this better would require reworking the command line parsing for the `remote` argument to support specifying `--repo` or `--sysroot`, and I didn't quite want to do that yet in this patch. This second iteration of this patch fixes the bug we hit the first time; embarassingly enough I broke `ostree remote list` finding system remotes. The fix is to have `ostree_repo_open()` figure out whether it's the same as `/ostree/repo` for now. Down the line...we might consider having the `ostree remote` command line itself instatiate an `OstreeSysroot` by default, but this maximizes compatibility; we just have to pay a small cost that `ostree` usage outside of that case like `ostree static-delta` in a releng Jenkins job or whatever will do this `stat()` too. Closes: https://github.com/ostreedev/ostree/issues/892 Closes: #1008 Approved by: mbarnes
This commit is contained in:
1 parent
8b1f1c4428
commit
e0346c1494
13 files changed
+283
-86
No files matched your search
@@ -234,3 +234,18 @@ curr_rev=$(${CMD_PREFIX} ostree rev-parse --repo=sysroot/ostree/repo testos/buil
|
||||
assert_streq ${curr_rev} ${head_rev}
|
||||
|
||||
echo "ok upgrade with and without override-commit"
|
||||
|
||||
deployment=$(${CMD_PREFIX} ostree admin --sysroot=sysroot --print-current-dir)
|
||||
${CMD_PREFIX} ostree --sysroot=sysroot remote add --set=gpg-verify=false remote-test-physical file://$(pwd)/testos-repo
|
||||
assert_not_has_file ${deployment}/etc/ostree/remotes.d/remote-test-physical.conf testos-repo
|
||||
assert_file_has_content sysroot/ostree/repo/config remote-test-physical
|
||||
echo "ok remote add physical sysroot"
|
||||
|
||||
# Now a hack...symlink ${deployment}/sysroot to the sysroot in lieu of a bind
|
||||
# mount which we can't do in unit tests.
|
||||
ln -sr sysroot ${deployment}/sysroot
|
||||
ln -s sysroot/ostree ${deployment}/ostree
|
||||
${CMD_PREFIX} ostree --sysroot=${deployment} remote add --set=gpg-verify=false remote-test-nonphysical file://$(pwd)/testos-repo
|
||||
assert_not_file_has_content sysroot/ostree/repo/config remote-test-nonphysical
|
||||
assert_file_has_content ${deployment}/etc/ostree/remotes.d/remote-test-nonphysical.conf testos-repo
|
||||
echo "ok remote add nonphysical sysroot"
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Test that we didn't regress /etc/ostree/remotes.d handling
|
||||
|
||||
set -xeuo pipefail
|
||||
|
||||
dn=$(dirname $0)
|
||||
. ${dn}/libinsttest.sh
|
||||
|
||||
test_tmpdir=$(prepare_tmpdir)
|
||||
trap _tmpdir_cleanup EXIT
|
||||
|
||||
ostree remote list > remotes.txt
|
||||
if ! test -s remotes.txt; then
|
||||
assert_not_reached "no ostree remotes"
|
||||
fi
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "1..16"
|
||||
echo "1..18"
|
||||
|
||||
. $(dirname $0)/libtest.sh
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "1..16"
|
||||
echo "1..18"
|
||||
|
||||
. $(dirname $0)/libtest.sh
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "1..17"
|
||||
echo "1..19"
|
||||
|
||||
. $(dirname $0)/libtest.sh
|
||||
|
||||
|
||||
Reference in new issue
Block a user