* [PATCH kvm-unit-tests] arch-run: Add reserved variables to the default environ
@ 2020-04-04 17:22 Andrew Jones
2020-04-04 17:54 ` Andrew Jones
0 siblings, 1 reply; 2+ messages in thread
From: Andrew Jones @ 2020-04-04 17:22 UTC (permalink / raw)
To: kvm; +Cc: lvivier, thuth, david, frankja, pbonzini
Add the already reserved (see README) variables to the default
environ. To do so neatly we rework the environ creation a bit too.
mkstandalone also learns to honor config.mak as to whether or not
to make environs, and we allow the $ERRATATXT file to be selected
at configure time.
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
configure | 12 +++-
scripts/arch-run.bash | 120 ++++++++++++++++++++++++----------------
scripts/mkstandalone.sh | 4 +-
3 files changed, 86 insertions(+), 50 deletions(-)
diff --git a/configure b/configure
index 579765165fdf..5e858899987c 100755
--- a/configure
+++ b/configure
@@ -17,6 +17,7 @@ environ_default=yes
u32_long=
vmm="qemu"
errata_force=0
+erratatxt="errata.txt"
usage() {
cat <<-EOF
@@ -37,6 +38,7 @@ usage() {
--[enable|disable]-default-environ
enable or disable the generation of a default environ when
no environ is provided by the user (enabled by default)
+ --erratatxt=FILE specify a file to use instead of errata.txt
EOF
exit 1
}
@@ -85,6 +87,9 @@ while [[ "$1" = -* ]]; do
--disable-default-environ)
environ_default=no
;;
+ --erratatxt)
+ erratatxt="$arg"
+ ;;
--help)
usage
;;
@@ -94,6 +99,11 @@ while [[ "$1" = -* ]]; do
esac
done
+if [ ! -f $erratatxt ]; then
+ echo "erratatxt: $erratatxt does not exist or is not a regular file"
+ exit 1
+fi
+
arch_name=$arch
[ "$arch" = "aarch64" ] && arch="arm64"
[ "$arch_name" = "arm64" ] && arch_name="aarch64"
@@ -194,7 +204,7 @@ FIRMWARE=$firmware
ENDIAN=$endian
PRETTY_PRINT_STACKS=$pretty_print_stacks
ENVIRON_DEFAULT=$environ_default
-ERRATATXT=errata.txt
+ERRATATXT=$erratatxt
U32_LONG_FMT=$u32_long
EOF
diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
index da1a9d7871e5..12bd62399a14 100644
--- a/scripts/arch-run.bash
+++ b/scripts/arch-run.bash
@@ -29,8 +29,8 @@ run_qemu ()
local stdout errors ret sig
echo -n "$@"
- initrd_create &&
- echo -n " #"
+ initrd_create
+ [ "$ENVIRON_DEFAULT" = "yes" ] && echo -n " #"
echo " $INITRD"
# stdout to {stdout}, stderr to $errors and stderr
@@ -195,60 +195,86 @@ search_qemu_binary ()
initrd_create ()
{
- local ret
-
- env_add_errata
- ret=$?
+ if [ "$ENVIRON_DEFAULT" = "yes" ]; then
+ trap_exit_push 'rm -f $KVM_UNIT_TESTS_ENV; [ "$KVM_UNIT_TESTS_ENV_OLD" ] && export KVM_UNIT_TESTS_ENV="$KVM_UNIT_TESTS_ENV_OLD" || unset KVM_UNIT_TESTS_ENV; unset KVM_UNIT_TESTS_ENV_OLD'
+ [ -f "$KVM_UNIT_TESTS_ENV" ] && export KVM_UNIT_TESTS_ENV_OLD="$KVM_UNIT_TESTS_ENV"
+ export KVM_UNIT_TESTS_ENV=$(mktemp)
+ env_params
+ env_file
+ env_errata
+ fi
unset INITRD
[ -f "$KVM_UNIT_TESTS_ENV" ] && INITRD="-initrd $KVM_UNIT_TESTS_ENV"
+}
+
+env_add_params ()
+{
+ local p
+
+ for p in "$@"; do
+ if eval test -v $p; then
+ eval export "$p"
+ else
+ eval export "$p="
+ fi
+ grep "^$p=" <(env) >>$KVM_UNIT_TESTS_ENV
+ done
+}
- return $ret
+env_params ()
+{
+ local qemu have_qemu
+ local t1 t2 t3 rest
+
+ qemu=$(search_qemu_binary) && have_qemu=1
+
+ if [ "$have_qemu" ]; then
+ if [ -n "$ACCEL" ] || [ -n "$QEMU_ACCEL" ]; then
+ [ -n "$ACCEL" ] && QEMU_ACCEL=$ACCEL
+ fi
+ QEMU_VERSION_STRING="$($qemu -h | head -1)"
+ IFS='[ .]' read -r t1 t2 t3 QEMU_MAJOR QEMU_MINOR QEMU_MICRO rest <<<"$QEMU_VERSION_STRING"
+ fi
+ env_add_params QEMU_ACCEL QEMU_VERSION_STRING QEMU_MAJOR QEMU_MINOR QEMU_MICRO
+
+ KERNEL_VERSION_STRING=$(uname -r)
+ IFS=. read -r KERNEL_VERSION KERNEL_PATCHLEVEL rest <<<"$KERNEL_VERSION_STRING"
+ IFS=- read -r KERNEL_SUBLEVEL KERNEL_EXTRAVERSION <<<"$rest"
+ KERNEL_SUBLEVEL=${KERNEL_SUBLEVEL%%[!0-9]*}
+ KERNEL_EXTRAVERSION=${KERNEL_EXTRAVERSION%%[!0-9]*}
+ ! [[ $KERNEL_SUBLEVEL =~ ^[0-9]+$ ]] && unset $KERNEL_SUBLEVEL
+ ! [[ $KERNEL_EXTRAVERSION =~ ^[0-9]+$ ]] && unset $KERNEL_EXTRAVERSION
+ env_add_params KERNEL_VERSION_STRING KERNEL_VERSION KERNEL_PATCHLEVEL KERNEL_SUBLEVEL KERNEL_EXTRAVERSION
}
-env_add_errata ()
+env_file ()
{
- local line errata ret=1
+ local line var
+
+ [ ! -f "$KVM_UNIT_TESTS_ENV_OLD" ] && return
- if [ -f "$KVM_UNIT_TESTS_ENV" ] && grep -q '^ERRATA_' <(env); then
- for line in $(grep '^ERRATA_' "$KVM_UNIT_TESTS_ENV"); do
- errata=${line%%=*}
- [ -n "${!errata}" ] && continue
+ for line in $(grep -E '^[[:blank:]]*[[:alpha:]_][[:alnum:]_]*=' "$KVM_UNIT_TESTS_ENV_OLD"); do
+ var=${line%%=*}
+ if ! grep -q "^$var=" $KVM_UNIT_TESTS_ENV; then
eval export "$line"
- done
- elif [ ! -f "$KVM_UNIT_TESTS_ENV" ]; then
+ grep "^$var=" <(env) >>$KVM_UNIT_TESTS_ENV
+ fi
+ done
+}
+
+env_errata ()
+{
+ if [ -f "$ERRATATXT" ]; then
env_generate_errata
fi
-
- if grep -q '^ERRATA_' <(env); then
- export KVM_UNIT_TESTS_ENV_OLD="$KVM_UNIT_TESTS_ENV"
- export KVM_UNIT_TESTS_ENV=$(mktemp)
- trap_exit_push 'rm -f $KVM_UNIT_TESTS_ENV; [ "$KVM_UNIT_TESTS_ENV_OLD" ] && export KVM_UNIT_TESTS_ENV="$KVM_UNIT_TESTS_ENV_OLD" || unset KVM_UNIT_TESTS_ENV; unset KVM_UNIT_TESTS_ENV_OLD'
- [ -f "$KVM_UNIT_TESTS_ENV_OLD" ] && grep -v '^ERRATA_' "$KVM_UNIT_TESTS_ENV_OLD" > $KVM_UNIT_TESTS_ENV
- grep '^ERRATA_' <(env) >> $KVM_UNIT_TESTS_ENV
- ret=0
- fi
-
- return $ret
+ sort <(env | grep '^ERRATA_') <(grep '^ERRATA_' $KVM_UNIT_TESTS_ENV) | uniq -u >>$KVM_UNIT_TESTS_ENV
}
env_generate_errata ()
{
- local kernel_version_string=$(uname -r)
- local kernel_version kernel_patchlevel kernel_sublevel kernel_extraversion
local line commit minver errata rest v p s x have
- IFS=. read -r kernel_version kernel_patchlevel rest <<<"$kernel_version_string"
- IFS=- read -r kernel_sublevel kernel_extraversion <<<"$rest"
- kernel_sublevel=${kernel_sublevel%%[!0-9]*}
- kernel_extraversion=${kernel_extraversion%%[!0-9]*}
-
- ! [[ $kernel_sublevel =~ ^[0-9]+$ ]] && unset $kernel_sublevel
- ! [[ $kernel_extraversion =~ ^[0-9]+$ ]] && unset $kernel_extraversion
-
- [ "$ENVIRON_DEFAULT" != "yes" ] && return
- [ ! -f "$ERRATATXT" ] && return
-
for line in $(grep -v '^#' "$ERRATATXT" | tr -d '[:blank:]' | cut -d: -f1,2); do
commit=${line%:*}
minver=${line#*:}
@@ -269,16 +295,16 @@ env_generate_errata ()
! [[ $s =~ ^[0-9]+$ ]] && unset $s
! [[ $x =~ ^[0-9]+$ ]] && unset $x
- if (( $kernel_version > $v ||
- ($kernel_version == $v && $kernel_patchlevel > $p) )); then
+ if (( $KERNEL_VERSION > $v ||
+ ($KERNEL_VERSION == $v && $KERNEL_PATCHLEVEL > $p) )); then
have=y
- elif (( $kernel_version == $v && $kernel_patchlevel == $p )); then
- if [ "$kernel_sublevel" ] && [ "$s" ]; then
- if (( $kernel_sublevel > $s )); then
+ elif (( $KERNEL_VERSION == $v && $KERNEL_PATCHLEVEL == $p )); then
+ if [ "$KERNEL_SUBLEVEL" ] && [ "$s" ]; then
+ if (( $KERNEL_SUBLEVEL > $s )); then
have=y
- elif (( $kernel_sublevel == $s )); then
- if [ "$kernel_extraversion" ] && [ "$x" ]; then
- if (( $kernel_extraversion >= $x )); then
+ elif (( $KERNEL_SUBLEVEL == $s )); then
+ if [ "$KERNEL_EXTRAVERSION" ] && [ "$x" ]; then
+ if (( $KERNEL_EXTRAVERSION >= $x )); then
have=y
else
have=n
diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
index c1ecb7f99cdc..96158b015e78 100755
--- a/scripts/mkstandalone.sh
+++ b/scripts/mkstandalone.sh
@@ -36,7 +36,7 @@ generate_test ()
echo "#!/usr/bin/env bash"
echo "export STANDALONE=yes"
- echo "export ENVIRON_DEFAULT=yes"
+ echo "export ENVIRON_DEFAULT=$ENVIRON_DEFAULT"
echo "export HOST=\$(uname -m | sed -e 's/i.86/i386/;s/arm.*/arm/;s/ppc64.*/ppc64/')"
echo "export PRETTY_PRINT_STACKS=no"
@@ -59,7 +59,7 @@ generate_test ()
echo 'export FIRMWARE'
fi
- if [ "$ERRATATXT" ]; then
+ if [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ]; then
temp_file ERRATATXT "$ERRATATXT"
echo 'export ERRATATXT'
fi
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH kvm-unit-tests] arch-run: Add reserved variables to the default environ
2020-04-04 17:22 [PATCH kvm-unit-tests] arch-run: Add reserved variables to the default environ Andrew Jones
@ 2020-04-04 17:54 ` Andrew Jones
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Jones @ 2020-04-04 17:54 UTC (permalink / raw)
To: kvm; +Cc: lvivier, thuth, david, frankja, pbonzini
On Sat, Apr 04, 2020 at 07:22:35PM +0200, Andrew Jones wrote:
...
> diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
> index c1ecb7f99cdc..96158b015e78 100755
> --- a/scripts/mkstandalone.sh
> +++ b/scripts/mkstandalone.sh
> @@ -36,7 +36,7 @@ generate_test ()
>
> echo "#!/usr/bin/env bash"
> echo "export STANDALONE=yes"
> - echo "export ENVIRON_DEFAULT=yes"
> + echo "export ENVIRON_DEFAULT=$ENVIRON_DEFAULT"
> echo "export HOST=\$(uname -m | sed -e 's/i.86/i386/;s/arm.*/arm/;s/ppc64.*/ppc64/')"
> echo "export PRETTY_PRINT_STACKS=no"
>
> @@ -59,7 +59,7 @@ generate_test ()
> echo 'export FIRMWARE'
> fi
>
> - if [ "$ERRATATXT" ]; then
> + if [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ]; then
^ I should have added a -f here while touching it
I'll send a v2 with it after reviewers have a chance to look
> temp_file ERRATATXT "$ERRATATXT"
> echo 'export ERRATATXT'
> fi
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-04-04 17:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-04 17:22 [PATCH kvm-unit-tests] arch-run: Add reserved variables to the default environ Andrew Jones
2020-04-04 17:54 ` Andrew Jones
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).