b3f6f25637
This is prep for running inside (unprivileged) Kube containers as they exist today: https://github.com/projectatomic/rpm-ostree/issues/1329 Sadly FUSE today uses a suid binary that ends up wanting CAP_SYS_ADMIN. I think there's some work on FUSE-in-containers but I'm not sure of the current status. What rofiles-fuse here is doing here is protecting is the hardlinked repo imports. But if `--cachedir` isn't specified, that repository gets thrown away anyways. So there's no real value to using FUSE here. Also since nothing is cached, disable the devino cache. We also make use of --force-copy-zerosized that just landed in libostree: https://github.com/ostreedev/ostree/pull/1752 Down the line ideally we gain the capability to detect if either unprivileged overlayfs/FUSE are available. Then if `--cachedir` is specified we can make things work. Closes: #1591 Approved by: jlebon
60 lines
2.0 KiB
Bash
Executable File
60 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -xeuo pipefail
|
|
|
|
dn=$(cd $(dirname $0) && pwd)
|
|
. ${dn}/libcomposetest.sh
|
|
|
|
prepare_compose_test "basic-unified"
|
|
# Test metadata json with objects, arrays, numbers
|
|
cat > metadata.json <<EOF
|
|
{
|
|
"exampleos.gitrepo": {
|
|
"rev": "97ec21c614689e533d294cdae464df607b526ab9",
|
|
"src": "https://gitlab.com/exampleos/custom-atomic-host"
|
|
},
|
|
"exampleos.tests": ["smoketested", "e2e"]
|
|
}
|
|
EOF
|
|
runcompose --ex-unified-core --add-metadata-from-json metadata.json
|
|
|
|
. ${dn}/libbasic-test.sh
|
|
basic_test
|
|
|
|
# This one is done by postprocessing /var
|
|
ostree --repo=${repobuild} cat ${treeref} /usr/lib/tmpfiles.d/pkg-filesystem.conf > autovar.txt
|
|
# Picked this one at random as an example of something that won't likely be
|
|
# converted to tmpfiles.d upstream. But if it is, we can change this test.
|
|
assert_file_has_content_literal autovar.txt 'd /var/cache 0755 root root - -'
|
|
ostree --repo=${repobuild} cat ${treeref} /usr/lib/tmpfiles.d/pkg-chrony.conf > autovar.txt
|
|
# And this one has a non-root uid
|
|
assert_file_has_content_literal autovar.txt 'd /var/log/chrony 0755 chrony chrony - -'
|
|
# see rpmostree-importer.c
|
|
if ostree --repo=${repobuild} cat ${treeref} /usr/lib/tmpfiles.d/pkg-rpm.conf > rpm.txt 2>/dev/null; then
|
|
assert_not_file_has_content rpm.txt 'd /var/lib/rpm'
|
|
fi
|
|
echo "ok autovar"
|
|
|
|
# And verify we're not hardlinking zero-sized files since this path isn't using
|
|
# rofiles-fuse
|
|
co=${repobuild}/tmp/usr-etc
|
|
ostree --repo=${repobuild} checkout -UHz --subpath=/usr/etc ${treeref} ${co}
|
|
# Verify the files exist and are zero-sized
|
|
for f in ${co}/sub{u,g}id; do
|
|
test -f "$f"
|
|
test '!' -s "$f"
|
|
done
|
|
if files_are_hardlinked ${co}/sub{u,g}id; then
|
|
fatal "Hardlinked zero-sized files without cachedir"
|
|
fi
|
|
rm ${co} -rf
|
|
echo "ok no cachedir zero-sized hardlinks"
|
|
|
|
# And redo it to trigger relabeling
|
|
origrev=$(ostree --repo=${repobuild} rev-parse ${treeref})
|
|
runcompose --force-nocache --ex-unified-core
|
|
newrev=$(ostree --repo=${repobuild} rev-parse ${treeref})
|
|
assert_not_streq "${origrev}" "${newrev}"
|
|
|
|
echo "ok rerun"
|