Drop the --cxl= option and unconditionally enable cxl=on the QEMU machine type whenever the host architecture supports it (x86_64 and aarch64). The flag was only added for testing parity with mkosi's CXL= setting and there is no reason to leave it as an opt-in toggle: with no pxb-cxl device or cxl-fmw window attached, enabling it on the machine only reserves a small MMIO region and emits an empty CEDT, so the cost is negligible while removing one knob users would otherwise have to flip explicitly to exercise the CXL code paths in QEMU.
83 lines
3.1 KiB
Bash
83 lines
3.1 KiB
Bash
# shellcheck shell=bash
|
|
# systemd-vmspawn(1) completion -*- shell-script -*-
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
#
|
|
# This file is part of systemd.
|
|
#
|
|
# systemd is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Lesser General Public License as published by
|
|
# the Free Software Foundation; either version 2.1 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# systemd is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public License
|
|
# along with systemd; If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
__contains_word() {
|
|
local w word=$1; shift
|
|
for w in "$@"; do
|
|
[[ $w = "$word" ]] && return
|
|
done
|
|
}
|
|
|
|
_systemd_vmspawn() {
|
|
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} words cword
|
|
local i verb comps
|
|
|
|
local -A OPTS=(
|
|
[STANDALONE]='-h --help --version -q --quiet --no-pager -n --network-tap --network-user-mode --user --system -x --ephemeral'
|
|
[PATH]='-D --directory -i --image --linux --initrd --extra-drive --forward-journal --efi-nvram-template'
|
|
[BOOL]='--kvm --vsock --tpm --discard-disk --pass-ssh-key'
|
|
[TRISTATE]='--register --secure-boot'
|
|
[FIRMWARE]='--firmware'
|
|
[FIRMWARE_FEATURES]='--firmware-features'
|
|
[BIND]='--bind --bind-ro'
|
|
[SSH_KEY]='--ssh-key'
|
|
[CONSOLE]='--console'
|
|
[ARG]='--cpus --ram --vsock-cid -M --machine --uuid --private-users --background --set-credential --load-credential'
|
|
[IMAGE_FORMAT]='--image-format'
|
|
[IMAGE_DISK_TYPE]='--image-disk-type'
|
|
)
|
|
|
|
_init_completion || return
|
|
|
|
if __contains_word "$prev" ${OPTS[BOOL]}; then
|
|
comps='yes no'
|
|
elif __contains_word "$prev" ${OPTS[TRISTATE]}; then
|
|
comps='yes no auto'
|
|
elif __contains_word "$prev" ${OPTS[PATH]}; then
|
|
compopt -o nospace -o filenames
|
|
comps=$(compgen -f -- "$cur" )
|
|
elif __contains_word "$prev" ${OPTS[FIRMWARE]}; then
|
|
compopt -o nospace -o filenames
|
|
comps="list describe $(compgen -f -- "$cur" )"
|
|
elif __contains_word "$prev" ${OPTS[FIRMWARE_FEATURES]}; then
|
|
comps='list'
|
|
elif __contains_word "$prev" ${OPTS[BIND]}; then
|
|
compopt -o nospace -o filenames
|
|
comps=$(compgen -f -- "${cur}" )
|
|
elif __contains_word "$prev" ${OPTS[SSH_KEY]}; then
|
|
comps='dsa ecdsa ecdsa-sk ed25519 ed25519-sk rsa'
|
|
elif __contains_word "$prev" ${OPTS[CONSOLE]}; then
|
|
comps='interactive native gui read-only headless'
|
|
elif __contains_word "$prev" ${OPTS[IMAGE_FORMAT]}; then
|
|
comps='raw qcow2'
|
|
elif __contains_word "$prev" ${OPTS[IMAGE_DISK_TYPE]}; then
|
|
comps='virtio-blk virtio-scsi nvme'
|
|
elif __contains_word "$prev" ${OPTS[ARG]}; then
|
|
comps=''
|
|
else
|
|
COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
|
|
return 0
|
|
fi
|
|
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
|
|
return 0
|
|
|
|
}
|
|
|
|
complete -F _systemd_vmspawn systemd-vmspawn
|