On 13/06/2017 10:12, Andrew Jones wrote: > On Thu, Jun 08, 2017 at 12:43:20PM +0200, Laurent Vivier wrote: >> On 06/06/2017 20:22, 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 | 46 ++++++++++++++++++++++++++++++++++++++++++++++ >>> 3 files changed, 62 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 09072ee46366..b4aa67f3c94c 100644 >>> --- a/scripts/arch-run.bash >>> +++ b/scripts/arch-run.bash >>> @@ -172,6 +172,8 @@ env_add_errata () >>> test -v $errata && continue >>> eval export "$line" >>> done >>> + elif [ ! -f "$ENV" ]; then >>> + env_generate_errata >>> fi >>> >>> if grep -q '^ERRATA_' <(env); then >>> @@ -183,6 +185,50 @@ env_add_errata () >>> fi >>> } >>> >>> +env_generate_errata () >>> +{ >>> + local kernel_version_string=$(uname -r) >>> + local kernel_version kernel_patchlevel kernel_sublevel >>> + local line commit minver errata v p s have >>> + >>> + IFS=. read kernel_version kernel_patchlevel kernel_sublevel <<<$kernel_version_string >>> + kernel_sublevel=${kernel_sublevel%%[!0-9]*} >> >> I don't understand the pattern. >> >> BASH(1) >> >> ${parameter%%word} >> The word is expanded to produce a pattern just as in pathname >> expansion >> >> Pathname Expansion >> >> * Matches any string >> [...] Matches any one of the enclosed characters >> If the first character following the [ is a ! or a ^ then >> any character not enclosed is matched >> >> So you need only "${kernel_sublevel%%-*}" > > This assumes the kernel's EXTRAVERSION starts with a '-', which is likely > a safe assumption, but the pattern I used ensures any non-digit will be > dropped, which is safer, because kernel_sublevel gets used in arithmetic > expressions. ok, thanks. Reviewed-by: Laurent Vivier <lvivier@xxxxxxxxxx> Laurent