Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions src/cmd-supermin-run
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env bash
set -euo pipefail

dn=$(dirname "$0")
# shellcheck source=src/cmdlib.sh
. "${dn}"/cmdlib.sh

print_help() {
echo "Usage: cosa supermin-run [--cache|--snapshot] COMMAND [ARG...]" >&2
}

if [ $# = 0 ]; then
print_help
exit 1
fi

need_cache_dir=0
case "$1" in
--cache)
shift
set -- runvm_with_cache -- "$@"
need_cache_dir=1
;;
--snapshot)
shift
set -- runvm_with_cache_snapshot on -- "$@"
need_cache_dir=1
;;
--*)
echo "unrecognized option: $1"
print_help
exit 1
;;
*)
set -- runvm -- "$@"
;;
esac

# force caller to create tmp/ and possibly cache/ rather than surprisingly
# auto-create them
if [ ! -d tmp ]; then
echo 'Need tmp/ dir for supermin to work' >&2
exit 1
fi
if [ $need_cache_dir = 1 ] && [ ! -d cache ]; then
echo 'Need cache/ dir for caching' >&2
exit 1
fi

workdir=$(pwd)
export workdir

"$@"
1 change: 0 additions & 1 deletion src/supermin-init-prelude.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ for maybe_symlink in "${workdir}"/{src/config,src/yumrepos}; do
fi
done

mkdir -p "${workdir}"/cache
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sometimes I just rm -rf cache/ to blow away things to get a clean slate. I'm guessing something else would create it somewhere else in the stack, but...

could we just move this into the if statement below? if there is a cachedev and somehow the cache dir doesn't exist we'd surely want to create it, right?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, but the cache/ dir must already exist at that point if using a cache qcow2, since the qcow2 is located there, right?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right. but sometimes we don't use the cache qcow and things use the directory anyway?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I feel like whatever/whoever does rm -rf cache/ should ensure to recreate it. E.g. rpm-ostree today will error out trying to cache things there. But not against adding a mkdir -p cache somewhere in cmdlib.sh too.

cachedev=$(blkid -lt LABEL=cosa-cache -o device || true)
if [ -n "${cachedev}" ]; then
mount "${cachedev}" "${workdir}"/cache
Expand Down