On 24/05/2017 18:08, Andrew Jones wrote: > Provide a table mapping errata to minimum kernel versions and > a function that will use the host's kernel version to determine > the values for each errata variable. These errata variables, with > values based on the host kernel, are now provided to all unit > tests by default, if no environ is provided. Errata variables > passed from the run script environment still take precedence. > > Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx> > --- > configure | 11 +++++++++++ > errata.txt | 5 +++++ > scripts/arch-run.bash | 45 +++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 61 insertions(+) > create mode 100644 errata.txt > > diff --git a/configure b/configure > index 64722c9b263b..cde2cfe9db61 100755 > --- a/configure > +++ b/configure > @@ -14,6 +14,7 @@ host=$arch > cross_prefix= > endian="" > pretty_print_stacks=yes > +environ_default=yes > u32_long= > > usage() { > @@ -31,6 +32,9 @@ usage() { > --endian=ENDIAN endianness to compile for (little or big, ppc64 only) > --[enable|disable]-pretty-print-stacks > enable or disable pretty stack printing (enabled by default) > + --[enable|disable]-default-environ > + enable or disable the generation of a default environ when > + no environ is provided by the user (enabled by default) > EOF > exit 1 > } > @@ -73,6 +77,12 @@ while [[ "$1" = -* ]]; do > --disable-pretty-print-stacks) > pretty_print_stacks=no > ;; > + --enable-default-environ) > + environ_default=yes > + ;; > + --disable-default-environ) > + environ_default=no > + ;; > --help) > usage > ;; > @@ -183,5 +193,6 @@ TEST_DIR=$testdir > FIRMWARE=$firmware > ENDIAN=$endian > PRETTY_PRINT_STACKS=$pretty_print_stacks > +ENVIRON_DEFAULT=$environ_default > U32_LONG_FMT=$u32_long > EOF > diff --git a/errata.txt b/errata.txt > new file mode 100644 > index 000000000000..95b66c837c63 > --- /dev/null > +++ b/errata.txt > @@ -0,0 +1,5 @@ > +#---------------:-----------------------:-------------------------------------- > +# commit : minimum kernel : summary > +# 12 hex digits : version : > +#---------------:-----------------------:-------------------------------------- > +#---------------:-----------------------:-------------------------------------- > diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash > index 3ba6354608da..d35a176ef210 100644 > --- a/scripts/arch-run.bash > +++ b/scripts/arch-run.bash > @@ -172,6 +172,8 @@ env_add_errata () > grep -q $errata <(env) && continue > eval export "$line" > done > + elif [ ! -f "$ENV" ]; then > + env_generate_errata > fi > > if grep -q '^ERRATA_' <(env); then > @@ -183,6 +185,49 @@ env_add_errata () > fi > } > > +env_generate_errata () > +{ > + local kernel_version_string=$(uname -r) > + local kernel_version=$(echo "$kernel_version_string" | cut -d. -f1) > + local kernel_patchlevel=$(echo "$kernel_version_string" | cut -d. -f2 | sed 's/[^0-9].*//') > + local kernel_sublevel=$(echo "$kernel_version_string" | cut -d. -f3- | sed 's/[^0-9].*//') > + local line commit minver errata v p s have > + > + [ "$ENVIRON_DEFAULT" != "yes" ] && return > + [ ! -f errata.txt ] && return > + > + for line in $(grep -v '^#' errata.txt | tr -d '[:blank:]' | cut -d: -f1,2); do > + commit=$(echo $line | cut -d: -f1) > + minver=$(echo $line | cut -d: -f2) > + > + errata="ERRATA_$commit" > + grep -q $errata <(env) && continue you can use: test -v $errata && continue > + > + v=$(echo "$minver" | cut -d. -f1) > + p=$(echo "$minver" | cut -d. -f2) > + s=$(echo "$minver" | cut -d. -f3) you can use: IFS=. read v p s <<<$minver Laurent