From: Prarit Bhargava <pra...@redhat.com>

redhat: Remove old evaluate_configs

Remove the old evaluate_configs.  It will be replaced by a python script.

Signed-off-by: Prarit Bhargava <pra...@redhat.com>

diff --git a/redhat/configs/README.evaluate_configs 
b/redhat/configs/README.evaluate_configs
deleted file mode 100644
index blahblah..blahblah 0
--- a/redhat/configs/README.evaluate_configs
+++ /dev/null
@@ -1,134 +0,0 @@
-evaluate_configs is a tool that can verify the settings of kernel
-CONFIGs in the redhat/configs directory.  The data for evaluate_configs
-is a combination of the redhat/configs files and the priority files.
-
-Introduction to Basic Output
-============================
-
-This command demonstrates how to display information about the
-CONFIG_HEADER_TEST option for RHEL.
-
-[prarit@prarit configs]$ ./evaluate_configs -p priority.rhel -c 
CONFIG_HEADER_TEST
-CONFIG_HEADER_TEST
-legend                         g  ga1  ga2  d  da1  da2
-common-x86_64                  y  -    -    -  X    -
-common-ppc64le                 y  -    X    -  -    X
-common-s390x                   y  -    X    -  -    X
-common-s390x-zfcpdump          y  -    -    X  X    X
-common-aarch64                 y  -    -    -  X    -
-rhel-x86_64                     y  -    -    -  X    -
-rhel-ppc64le                    y  -    X    -  -    X
-rhel-s390x                      y  -    X    -  -    X
-rhel-s390x-zfcpdump             y  -    -    X  X    X
-rhel-aarch64                    y  -    -    -  X    -
-pending-common-x86_64          -  -    -    -  X    -
-pending-common-ppc64le         -  -    X    -  -    X
-pending-common-s390x           -  -    X    -  -    X
-pending-common-s390x-zfcpdump  -  -    -    X  X    X
-pending-common-aarch64         -  -    -    -  X    -
-
-The legend row, shows the subdirectory entries.  These can be mapped
-back to the priority.rhel entries, for example, for x86_64
-
-# x86_64
-x86_64=generic:generic-x86:generic-x86-x86_64
-x86_64-debug=generic:generic-x86:generic-x86-x86_64:debug:debug-x86-x86_64
-
-are combined into one entry for x86_64 where
-
-g maps to "generic"
-ga1 maps to "generic-x86"
-ga2 maps to "generic-x86-x86-64"
-d maps to "debug"
-da1 maps to nothing (more on this below)
-da2 maps to debug-x86-x86_64
-
-The left hand column indicates the directory and config-variant.  For
-example, rhel-s390x-zfcpdump is the s390x-zfcpdump variant and the
-row beside it shows the config settings in the rhel directory.
-
-The data contained in the output can have 5 values:
-
-       y = CONFIG is set to 'y'
-       m = CONFIG is set to 'm'
-       n = CONFIG is set to 'is not set'
-       - = CONFIG file does not exist
-       X = CONFIG file entry is not in priority file
-
-As can be seen above in the CONFIG_HEADER_TEST output, da1 is not present
-in the priority.rhel file and is marked with an 'X'.
-
-Options
-=======
-
-       -c CONFIG
-               Evalulate these specific CONFIGs. This can be a file,
-               or a comma-separated list.  If nothing is specified then
-               all CONFIGs are examined by default.)
-       -d
-               Enable debug
-       -p priority.file
-               Specify a priority.file (no default)
-       -j
-               Evaluate common directory
-       -f
-               Evaluate and fix a priority's CONFIGs
-
-All commands except -j require a -p argument.
-
-Evaluate CONFIGs
-================
-
-The -f option can be used to evaluate all the CONFIGs by executing, for
-example
-
-# evaluate_configs -p priority.rhel -f
-
-or a single CONFIG
-
-# evaluate_configs -p priority.rhel -f -c CONFIG_HEADER_TEST
-
-The Evaluate Output will show a different view than the Basic Output above:
-
-ERROR: (hierarchy) rhel/generic/CONFIG_HEADER_TEST : superseding value has y.
-|CONFIG_HEADER_TEST (rhel-aarch64)
-|g  ga1  ga2  d  da1  da2  g  ga1  ga2  d  da1  da2  g  ga1  ga2  d  da1  da2
-|y  -    -    -  X    -    y  -    -    -  X    -    -  -    -    -  X    -
-| Deleting rhel/generic/CONFIG_HEADER_TEST
-
-This view is the Basic Output's aarch64 data in a single line,  From the
-above output,
-
-common-aarch64                 y  -    -    -  X    -
-rhel-aarch64                    y  -    -    -  X    -
-pending-common-aarch64         -  -    -    -  X    -
-
-The Evaluate output makes it easier to visually see a conflict.   One
-can read the line and if there are two y|m|n separated by one or more - or
-X's in a line, then there is the possibility of a conflict.
-
-If the CONFIG setting is found to be incorrect it it automatically removed
-and a message
-
-| Deleting rhel/generic/CONFIG_HEADER_TEST
-
-will be output.
-
-Evaluate common Directory
-=========================
-
-This function does a 1-to-1 comparison of CONFIG settings in the
-rhel and fedora directories, and checks to see if the CONFIG should be set
-in the common directory.
-
-The output is the same as the Evaluate output.
-
-This functionality uses the priority.common file and can be executed via
-
-evaluate_configs -j
-
-for all CONFIGs, or
-
-evaluate_configs -j -c CONFIG_HEADER_TEST
-
-for a single CONFIG.
diff --git a/redhat/configs/evaluate_configs b/redhat/configs/evaluate_configs
deleted file mode 100755
index blahblah..blahblah 0
--- a/redhat/configs/evaluate_configs
+++ /dev/null
@@ -1,981 +0,0 @@
-#!/usr/bin/bash
-trap '[ -d "$tempdir" ] && rm -rf "$tempdir"' EXIT INT
-
-# TODO: -c takes a comma separated list or file?
-# TODO: allow for user to specify CONFIGS ^^^ ?
-# TODO: move the undo the p setting to map_configs_to_array
-# TODO: Fix ERROR: message so it only shows when the file is being deleted
-
-DEBUG=false
-
-# global definitions
-CONFIG=
-priority_file=
-ORDER=
-cfgvariants=
-toplevels=
-subdirs=
-rows=
-columns=
-configmap=
-cfgs=
-cfgs_base=
-weightorig=
-numorder=
-longheader=
-weightorig=
-weight=
-declare -A toplevel_order
-
-tempdir=$(mktemp -d)
-
-whatcouldgowrong() {
-       echo ""
-       echo "usage: evaluate_configs [-c CONFIG] [-d] [-j] [ -p priority_file] 
[-f]"
-       echo ""
-       echo "      -c CONFIG          Evalulate specific CONFIGs (file or csl)"
-       echo "      -d                 Enable debug"
-       echo "      -p priority.file   Specify a priority.file (no default)"
-       echo "      -j                 Evaluate common directory"
-       echo "      -f                 Evaluate CONFIGs"
-       echo ""
-       echo "examples)"
-       echo ""
-       echo "To show the status of CONFIG_HEADER_TEST in ARK,"
-       echo "  ./evaluate_configs -p priority.rhel -c CONFIG_HEADER_TEST"
-       echo ""
-       echo "To fix all the CONFIGS in Fedora,"
-       echo "  ./evaluate_configs -p priority.fedora -f"
-       echo ""
-       echo "To fix only CONFIG_HEADER_TEST in RHEL,"
-       echo "  ./evaluate_configs -p priority.rhel -c CONFIG_HEADER_TEST -f"
-       echo ""
-       echo "and commit the resulting changes."
-       echo ""
-       echo "To fix the common directory entries,"
-       echo " ./evaluate_configs -j"
-       echo ""
-       exit 1
-}
-
-# Get a list of the config-variants
-get_cfgvariants() { # uses priority_file
-       local configvariant
-       local cfgvariant
-
-       # The priority files have a config-variant, followed by a hierarchy of
-       # directories to examine for that config level.  The directories have
-       # '-' instead of '/'.
-       #
-       # For example,
-       #
-       # ppc64le-debug=generic:generic-powerpc:debug:debug-powerpc
-       #
-
-       while read -r configvariant
-       do
-               # ignore any line with whitespace
-               test -z "$configvariant" && continue
-               # ignore any line beginning with a #
-               [[ "$configvariant" == \#* ]] && continue
-               # ignore any line beginning with ORDER
-               [[ "$configvariant" == ORDER* ]] && continue
-               # ignore any line beginning with EMPTY
-               [[ "$configvariant" == EMPTY* ]] && continue
-
-               # -debug variants must include the base variant
-               # does the priority file contain a debug variant?
-               cfgvariant=$(echo "$configvariant" | cut -d "=" -f 1)
-               if grep -q "$cfgvariant-debug" "$priority_file"; then
-                       # if it does, skip this variant and only use -debug
-                       continue
-               fi
-
-               # if this variant has a -debug, remove the -debug
-               cfgvariant=$(echo "$cfgvariant" | awk -F "-debug" ' { print $1 
} ')
-
-               # output "cfgvariant | configorder"
-               echo "$cfgvariant | $(echo "$configvariant" | cut -d "=" -f 2 | 
tr : " " )"
-       done < $priority_file
-}
-
-# Find top level dirs for each ORDER. These are normally just debug and config.
-get_toplevel_dirs() { # uses cfgvariants
-       local cfg
-       local cfgvariant
-
-       # anything with a dash(-) in it is a subdir
-       echo "$cfgvariants" | while read -r cfgvariant
-       do
-               cfg=$(echo "$cfgvariant" | cut -d "|" -f 2)
-               for i in $cfg
-               do
-                       echo "$i" | grep -v "-"
-               done
-       done | sort -u | tr '\n' ' '
-}
-
-# For each top level count subdirs and find max subdirs for each top level
-get_subdirs() { # uses $cfgvariants and $toplevels
-       local max
-       local LINE
-       local count
-       local toplevel
-
-       for toplevel in $toplevels
-       do
-               max=0
-               count=0
-               OLDIFS=$IFS; IFS=$'\n'; for LINE in $cfgvariants
-               do
-                       LINE=$(echo "$LINE" | cut -d "|" -f 2)
-                       count=0
-                       IFS=$' '; for i in $LINE
-                       do
-                               echo "$i" | grep -q -v $toplevel && continue
-                               count=$(echo "$i" | awk -F "-" '{print NF-1}')
-                               [ "$max" -lt "$count" ] && max="$count"
-                       done
-               done
-               IFS=$OLDIFS
-               echo "$toplevel subdirs $((max + 1))"
-       done
-}
-
-# Walk through cfgvariants and give each toplevel dir an ordering number.
-# This number is later used to insert EMPTY tags at correct place.
-create_toplevel_order() { # uses toplevel_order
-
-while read -r cfgvariant
-do
-       local i
-       local max
-       local order
-       local topname
-
-       LINE=$(echo "$cfgvariant" | cut -d "|" -f 2)
-
-       for i in $LINE; do
-               topname="${i%%-*}"
-               order=${toplevel_order[$topname]}
-               if [ -z "$order" ]; then
-                       max=$(echo "${toplevel_order[@]}" | wc -w)
-                       max=$((max + 1))
-                       toplevel_order[$topname]=$max
-                       $DEBUG && echo "toplevel_order[$topname] = $max"
-               fi
-       done
-done <<< "$cfgvariants"
-}
-
-# For each config-variant, find missing sub-directories and mark them as 
"EMPTY"
-# This is very helpful for stage 3.
-fix_config_variants() { # uses $toplevels, $subdirs, $cfgvariants, 
$toplevel_order
-
-for toplevel in $toplevels
-do
-       local subdircnt
-       local linenum
-       local cfgvariant
-       local LINE
-       local count
-       local oldentry
-       local newentry
-       local found
-       local dashcount
-       local new
-       local topname
-       local new_topname
-
-       subdircnt=$(echo "$subdirs" | grep "$toplevel" | awk -F "subdirs" ' { 
print $2 } ')
-       linenum=0
-       echo "$cfgvariants" | while read -r cfgvariant
-       do
-               linenum=$((linenum + 1))
-               # this seems strange to immediately reset cfgvariant but we
-               # want the value from the file, not the one in memory.  The
-               # value in the file may have been modified by a previous
-               # toplevel.
-               cfgvariant=$(sed "${linenum}q;d" "$tempdir"/cfgvariants)
-
-               LINE=$(echo "$cfgvariant" | cut -d "|" -f 2)
-
-               $DEBUG && echo "LINE=$LINE"
-               # get the actual number of subdirs
-               count=$(for i in $LINE
-               do
-                       echo "$i" | grep -q -v "$toplevel" && continue
-                       echo "$i" | awk -F "-" '{print NF-1}'
-               done | wc -l)
-
-               [ -z "$count" ] && continue
-               $DEBUG && echo "count=$count"
-
-               # if the number of subdirs is the same, then bail
-               [ "$count" -eq "$subdircnt" ] && continue
-
-               $DEBUG && echo "missing entries LINE=$LINE"
-               oldentry=$(for i in $LINE
-               do
-                       echo "$i" | grep -q "$toplevel" && echo "$i" | tr "\n" 
" "
-               done| xargs)
-               $DEBUG && echo "oldentry=|$oldentry|"
-
-               # Find the missing entry
-               found=$(for i in $oldentry
-               do
-                       dashcount=$(echo "$i" | awk -F "-" '{print NF-1}')
-                       dashcount=$((dashcount + 1))
-                       echo $dashcount
-               done | tr "\n" " ")
-               $DEBUG && echo "found=$found"
-
-               # build the missing entry
-               count=1
-               newentry=$(for i in $(seq 1 "$subdircnt")
-               do
-                       if echo "$found" | grep -q "$i"; then
-                               echo "$oldentry" | cut -d " " -f "$count"
-                               count=$((count + 1))
-                       else
-                               echo "${toplevel}-EMPTY$((i - 1))"
-                       fi
-               done | tr "\n" " " | xargs)
-               $DEBUG && echo "newentry=|$newentry|"
-
-               # insert the missing entry
-               if echo "$LINE" | grep -q "$toplevel"; then
-                       new=${cfgvariant//$oldentry/$newentry}
-               else
-                       # Find out toplevel name of new EMPTY entries and use
-                       # toplevel_order to figure out where to insert those.
-                       found=0
-                       new_topname="${newentry%%-*}"
-                       new="$(echo "$cfgvariant" | cut -d "|" -f 1)|"
-                       LINE=$(echo "$cfgvariant" | cut -d "|" -f 2)
-
-                       for i in $LINE; do
-                               topname="${i%%-*}"
-                               if [ $found -eq 1 -o 
${toplevel_order[$topname]} -lt ${toplevel_order[$new_topname]} ]; then
-                                       new="$new $i"
-                               else
-                                       found=1
-                                       new="$new $newentry $i"
-                               fi
-                       done
-                       if [ $found -eq 0 ]; then
-                               new="$new $newentry"
-                       fi
-               fi
-
-               $DEBUG && echo "REPLACED:"
-               $DEBUG && echo "orig=$cfgvariant"
-               $DEBUG && echo " new=$new"
-
-               sed -i "${linenum}s/${cfgvariant}/${new}/" 
"$tempdir"/cfgvariants
-
-               $DEBUG && echo "----------------------------"
-       done
-done
-}
-
-# create a configmap
-get_configmap() { # uses $ORDER and $cfgvariants
-       local configvariant
-       local arch
-       local _configorder
-       local configorder
-       local order
-
-       for order in $ORDER
-       do
-               # jforbes: pending-fedora can be dropped.  It should be empty
-               # most of the time.
-               [ "$order" == "pending-fedora" ] && continue
-
-               echo "$cfgvariants" | while read -r configvariant
-               do
-                       arch=$(echo "$configvariant" | cut -d "|" -f 1)
-                       _configorder=$(echo "$configvariant" | cut -d "|" -f 2 
| tr : " " )
-                       configorder=$(for c in $_configorder
-                       do
-                               echo -n "${order}-${c} "
-                       done; echo "")
-
-                       echo "${order}-$arch | $configorder"
-               done
-       done
-}
-
-# pretty output
-output_pretty_cfgs() { # uses cfgs and configmap, rows, and columns
-       local x
-       local index
-       local _configmap
-
-       index=0
-       for x in $(seq 1 $rows)
-       do
-               [ "$x" == 1 ] && echo "legend" "$1"
-               _configmap=$(echo "$configmap" | sed "${x}q;d" | cut -d "|" -f 
1)
-                       echo "$_configmap ${cfgs[@]:$index:$columns}"
-               index=$((index + columns))
-       done | column -t
-}
-
-# helper function to remove a CONFIG file
-delete_file() {
-       local position
-       local configentry
-
-       position=$1
-       configentry=$2
-       # if the entry doesn't exist, decrease weight by 1
-       weight[$position]=$((weight[$position] - 1))
-       if [ "${weight[$position]}" -le 0 ]; then
-               if [ -e "$configentry" ]; then
-                       $DEBUG && echo "| Deleting $configentry 
${weight[$position]})" || echo "| Deleting $configentry"
-                       rm -f "$configentry"
-               fi
-       else
-               $DEBUG && echo "| Not deleted.  Required by other config 
variants (${weight[$position]})"
-       fi
-}
-
-# find duplicate entries
-fix_broken_arches() { # uses ORDER, crows, columns, and configmap
-       local row
-       local x
-       local y
-       local value
-       local _value
-       local char
-       local position
-       local curr
-
-       # See comment about weight in create_output_header()
-       weight=("${weightorig[@]}")
-
-       # This search is handled differently than
-       # output_pretty_cfgs().  A string is created that
-       # is only for the specific cfg-variant (row * numorder
-       # long).  This string is easier to evaluate.
-       for row in $(seq 0 $((crows - 1)))
-       do
-               # construct the string of values to view
-               value=$(for order in $(seq 0 $((numorder - 1)))
-               do
-                       index=$(((order * (crows * columns)) + (row * columns)))
-                       echo -n "${cfgs[@]:$index:$columns} "
-               done
-               echo "")
-               $DEBUG && echo "row=$row $value"
-
-               # check to see if there is a config setting conflict
-               _value=$(echo "$value" | tr -d " X-")
-               if echo "$_value" | grep -q "yy\|mm\|nn"; then
-                       # go through the value string, ex) y-y-Xm-,
-                       # and find the characters that match the
-                       # previous character.
-                       curr="p"
-                       position=0
-                       # use value here as each character is
-                       # separated by a space
-                       for char in $value
-                       do
-                               index=$(( ((crows * columns) * (position / 
columns)) + (row * columns) + (position % columns) ))
-                               # sed is 1-based so add 1 to x and y
-                               y=$(((index / columns) + 1))
-                               # configmap contains the cfgvariant and a
-                               # pipe (+3), and needs to be 1-based
-                               x=$(((index % columns) + 4))
-                               $DEBUG && echo "($x,$y) $index"
-
-                               configentry="$(echo "$configmap" | sed 
"${y}q;d" | cut -d " " -f "$x" | tr "-" "/")/$CONFIG"
-                               cfgvariant=$(echo "$configmap" | sed "${y}q;d" 
| cut -d " " -f 1)
-
-                               # if this, char, is the same as curr then
-                               # there is a conflict and char needs to
-                               # be changed.
-                               if [ "$char" == "$curr" ]; then
-                                       echo ""
-                                       echo "ERROR: (hierarchy) $configentry : 
superseding value has $curr."
-                                       echo "|$CONFIG ($cfgvariant)"
-                                       printf "|$longheader\n|$value" | column 
-t
-                                       $DEBUG && echo "position=$position | 
$(echo "$value" | cut -d " " -f $((position + 1)) ) | 
weight=${weight[$position]}"
-
-                                       # See comment about weight in
-                                       # create_output_header()
-                                       delete_file "$position" "$configentry"
-                                       break
-                               fi
-                               case "$char" in
-                               '-')
-                                       ;;
-                               'X')
-                                       # See comment about weight in
-                                       # create_output_header()
-                                       delete_file "$position" "$configentry"
-                                       ;;
-                               * )
-                                       curr=$char
-                                       ;;
-                               esac
-                               position=$((position + 1))
-                       done
-               else
-                       # still have to examine this string because it may
-                       # contain "X", which has to be accounted for in
-                       # the weights.
-                       echo "$value" | grep -q "X" || continue
-                       position=0
-                       for char in $value
-                       do
-                               if [ "$char" == 'X' ]; then
-                                       index=$(( ((crows * columns) * 
(position / columns)) + (row * columns) + (position % columns) ))
-                                       # sed is 1-based so add 1 to x and y
-                                       y=$(((index / columns) + 1))
-                                       # configmap contains the cfgvariant and
-                                       # a pipe (+3), and needs to be 1-based
-                                       x=$(((index % columns) + 4))
-                                       $DEBUG && echo "($x,$y) $index"
-
-                                       configentry="$(echo "$configmap" | sed 
"${y}q;d" | cut -d " " -f "$x" | tr "-" "/")/$CONFIG"
-                                       cfgvariant=$(echo "$configmap" | sed 
"${y}q;d" | cut -d " " -f 1)
-                                       # See comment about weight in
-                                       # create_output_header()
-                                       delete_file "$position" "$configentry"
-                               fi
-                               position=$((position + 1))
-                       done
-               fi
-
-       done
-}
-
-# compare the common, fedora, and rhel configs.
-# By default this function uses the priority.common file
-fix_common() { # uses cfgs, CONFIG, and ORDER
-       local index
-       local value
-       local _value
-       local x
-       local y
-       local configentry
-       local _configentry
-       local order
-
-       # the priority.common array is
-       #       common configs
-       #       rhel configs
-       #       fedora configs
-       for index in $(seq 0 $(((crows * columns) - 1)))
-       do
-               # this string is the concatenation of the
-               # common, rhel, and fedora config values
-               value=$(for order in $(seq 0 $((numorder -1)))
-               do
-                       echo -n "${cfgs[$(( (order * crows * columns) + 
index))]}"
-               done
-               echo "")
-
-               # It doesn't matter what common is set to so
-               # trim it off.
-               _value="${value:1}"
-               if echo "$_value" | grep -q "yy\|mm\|nn"; then
-
-                       # set _value to just y|m|n
-                       _value="${_value:1}"
-
-                       # create a long array to see if the change is valid
-                       checkvalue=$(for order in $(seq 0 $((numorder -1)))
-                       do
-                               step=$(( order * crows * columns))
-                               # this seems weird but it rounds off to columns
-                               row=$(( (step + index) / columns * columns))
-                               echo -n "${cfgs[@]:$row:$columns} "
-                       done; echo "")
-
-                       $DEBUG && echo "checkvalue=$checkvalue"
-
-                       IFS=', ' read -r -a checkvalue <<< "$checkvalue"
-                       _index=$((index % columns))
-
-                       for order in $(seq 1 $((numorder -1)))
-                       do
-                               checkvalue[$((( order * columns ) + 
_index))]='-'
-                       done
-                       $DEBUG && echo "updated checkvalue=${checkvalue[@]}"
-
-                       # set the common entry to _value, so that an analysis
-                       # can be run on the other entries
-                       checkvalue[$_index]="$_value"
-
-                       count=0
-                       cfgvalue=${checkvalue[0]}
-                       warning=false
-                       for i in ${checkvalue[@]}
-                       do
-                               echo "$i" | grep -q 'm\|n\|y' && cfgvalue=$i
-                               if [ $count == $_index ]; then
-                                       if [ "$cfgvalue" != "$_value" ]; then
-                                               $DEBUG && echo "$CONFIG 
override will not work."
-                                               warning=true
-                                               break;
-                                       fi
-                                       _index=$((_index + columns))
-                               fi
-                               count=$((count + 1))
-                       done
-
-                       $warning && break
-
-                       echo "$CONFIG found a match where common should be set."
-
-                       # sed is 1-based so add 1 to x and y
-                       y=$(((index / columns) + 1))
-                       # configmap contains the cfgvariant and a
-                       # pipe (+3), and needs to be 1-based
-                       x=$(((index % columns) + 4))
-                       $DEBUG && echo "($x,$y) $index"
-
-                       # remove the existing rhel and fedora configs
-                       configentry="$(echo "$configmap" | sed "${y}q;d" | cut 
-d " " -f "$x" | tr "-" "/")/$CONFIG"
-                       for order in $ORDER
-                       do
-                               [ "$order" == "common" ] && continue
-                               _configentry=${configentry//common/$order}
-                               [ -e "$_configentry" ] && rm -f "$_configentry"
-                       done
-
-                       # create a new common config
-                       echo "$_value" in "$configentry"
-                       case "$_value" in
-                       m)
-                               echo "${CONFIG}=m" > "$configentry"
-                               ;;
-                       y)
-                               echo "${CONFIG}=y" > "$configentry"
-                               ;;
-                       n)
-                               echo "# $CONFIG is not set" > "$configentry"
-                               ;;
-                       esac
-               fi
-       done
-}
-
-# Check that ccolumns is consistent
-debug_cfgvariants() { # uses $cfgvariants and sets crows and ccolumns
-       local LINE
-
-       crows=$(echo "$cfgvariants" | wc -l)
-
-       ccolumns=$(echo "$cfgvariants" | while read -r LINE
-       do
-               LINE=$(echo "$LINE" | cut -d "|" -f 2)
-               echo "$LINE" | wc -w
-       done | sort -u)
-
-       # Error check columns
-       if [ "$(echo "$ccolumns" | wc -l)" != "1" ]; then
-               echo "ERROR in parser.  There were multiple length columns 
found."
-               echo "$ccolumns"
-               exit 1
-       fi
-}
-
-# Create an output header, a fancy long header for fix_broken_arches, and the
-# weights
-create_output_header() { # uses $ORDER, $configmap, and sets output_header
-                        # and weightorig
-
-       local order
-       local dir
-       local convert
-       local f
-       local configline
-
-       # We know that the configmap now contains correct sized entries for
-       # each arch.  The arch doesn't really matter and we just need the
-       # information to make a header.
-       order=$(echo "$ORDER" | cut -d " " -f 1)
-       configline=$(echo "$configmap" | head -1 | cut -d "|" -f 2 | sed 
"s/${order}-//g")
-       for dir in $configline
-       do
-               convert=false
-               if echo "$dir" | grep -q "-"; then
-                       if echo "$dir" | grep -q "EMPTY0"; then
-                               dir=$(echo "$dir" | awk -F "-EMPTY0" ' { print 
$1 } ')
-                               convert=true
-                       fi
-               else
-                       convert=true
-               fi
-
-               ! $convert && continue
-
-               # get the first letter of each word
-               f=$(echo "$dir" | head -c 1)
-               $DEBUG && echo "directory $dir entries will be converted to $f"
-               configline=${configline//$dir/$f}
-       done
-
-       # Go through the configline and convert the directory names into header
-       # names For example,
-       #    generic generic-x86 generic-x86-x86_64 generic-EMPTY3 debug-EMPTY0 
debug-EMPTY1 debug-EMPTY2
-       # will be converted to
-       #    g ga1 ga2 ga3 d da1 da2
-       output_header=$(for dir in $configline
-       do
-               # convert dirs with no dashes to the same thing
-               if ! echo "$dir" | grep -q "-"; then
-                       echo "$dir"
-                       continue
-               fi
-               f=$(echo "$dir" | cut -d "-" -f 1)
-               # convert g-x86 to ga, and g-x86-x86_64 to ga2, etc.
-               if echo "$dir" | grep -q "EMPTY"; then
-                       numempty=$(echo "$dir" | awk -F "EMPTY" ' { print $2 } 
')
-                       if [ "$numempty" -eq 0 ]; then
-                               echo "$f"
-                       else
-                               echo "${f}a${numempty}"
-                       fi
-               else
-                       numdashes=$(echo "$dir"| grep -o "-" | wc -l)
-                       echo "${f}a${numdashes}"
-               fi
-       done | tr "\n" " ")
-
-       # create a weightorig array that contains the weights of change for
-       # each directory.  This is useful for the -f option display
-       for entry in $output_header
-       do
-               if echo "$entry" | grep -q 'a'; then
-                       _weightorig+=(1)
-               else
-                       _weightorig+=("$crows")
-               fi
-       done
-
-       # It is possible (and valid) to have an subdir arch followed by
-       # a debug entry.  The -f checker would have flagged this and
-       # removed the file.  As a solution there is a weight associated
-       # with each entry's CONFIG file.  A debug or generic entry has
-       # a weight equal the number of columns, and the arch entries all
-       # have a weight of one.  The -f tracker subtracts one for each "hit"
-       # and only removes the file if the weight is 1.
-
-       weightorig=""
-       longheader=""
-       for order in $(seq 1 $numorder)
-       do
-               weightorig="${weightorig[@]} ${_weightorig[@]}"
-               longheader="${longheader}${output_header}"
-       done
-       IFS=', ' read -r -a weightorig <<< "$weightorig"
-}
-
-# initialize the array to '-' (undefined) and 'X' (not present/EMPTY)
-init_cfgs() { #uses cfgs, rows, and columns
-       unset cfgs
-       eval "$(eval echo "cfgs[{1..$((rows * columns))}]='-'\;")"
-       # the -'s can be a problem when being parsed by other commands.  I
-       # tried using +, o, ., X, etc. but none of the output was as clear as
-       # a dash.  Initialize the 0th element to an unused letter.  If still
-       # 'p' it can be changed back later on.
-       cfgs[0]=p
-
-       # set EMPTY configs to X
-       for row in $(seq 0 $((rows - 1)))
-       do
-               index=$((row * columns))
-               num=0
-               for entry in $(echo "$cfgvariants" | sed "$(((row % crows) + 
1))q;d" | cut -d "|" -f 2)
-               do
-                       echo "$entry" | grep -q EMPTY && cfgs[$((index + 
num))]='X'
-                       num=$((num + 1))
-               done
-       done
-       cfgs_base=("${cfgs[@]}")
-}
-
-# reset the configs to default
-reset_cfgs() {
-       unset cfgs
-       cfgs=("${cfgs_base[@]}")
-}
-
-# map the CONFIG files to the array
-map_configs_to_array() { #uses CONFIG, configmap, cfgs
-
-       local LINE
-       local contents
-       local _LINE
-       local row
-       local cols
-       local col
-
-       for LINE in $(find ./ -name $CONFIG -printf '%P\n' | awk -F "/$CONFIG" 
' { print $1 } ')
-       # loop through the CONFIG files
-       do
-               $DEBUG && echo "+-------------------"
-               $DEBUG && echo "found: $LINE"
-
-               contents=$(grep "^# $CONFIG is not set\|^$CONFIG=" 
"$LINE"/"$CONFIG")
-               case $contents in
-               "# $CONFIG is not set")
-                       contents=n
-                       ;;
-               "${CONFIG}=y")
-                       contents=y
-                       ;;
-               "${CONFIG}=m")
-                       contents=m
-                       ;;
-               *)
-                       echo "$LINE/$CONFIG has a strange entry ... skipping"
-                       return 1
-                       break;;
-               esac
-
-               $DEBUG && echo "contents=$contents"
-
-               _LINE=$(echo "$LINE" | tr "/" "-")
-               $DEBUG && echo "_LINE=$_LINE"
-               # set each cfg to $contents
-               OLDIFS=$IFS; IFS=$'\n'; for rowandcol in $(echo "$configmap" | 
grep -n " $_LINE ")
-               do
-                       row=$(echo "$rowandcol" | cut -d ":" -f 1)
-                       # grep is 1 based and we need a 0 based number
-                       row=$((row - 1))
-                       cols=$(echo "$rowandcol" | cut -d "|" -f 2)
-                       $DEBUG && echo "row=$row"
-                       $DEBUG && echo "cols=$cols"
-
-                       col=$(echo "$cols" | awk -F "$_LINE" ' { print $1 }' | 
wc -w)
-                       $DEBUG && echo "($col, $row) = $contents"
-                       # convert the (col,row) to an index in the array
-                       $DEBUG && echo "setting element $(($((row * columns)) + 
col)) = $contents"
-                       # set the config
-                       cfgs[$(($((row * columns)) + col))]=$contents
-               done
-               IFS=$OLDIFS
-       done
-
-       # undo the 'p' setting of the initial element
-       # (setting to 'p' done in init_cfgs)
-       [ "${cfgs[0]}" == "p" ] && cfgs[0]="-"
-
-       return 0
-}
-
-generate_finalconfiglist() {
-       awk '
-               /is not set/ {
-                       split ($0, a, "#");
-                       split(a[2], b);
-                       print b[1] ;
-               }
-               /=/ {
-                       split ($0, a, "=");
-                       print a[1];
-               }
-       ' *.config | sort -u >> .finalconfiglist
-}
-
-find_dead_configs() {
-       echo > .finalconfiglist
-       echo > .configlist
-
-       grep -q "rhel" flavors && (cd ..; make rh-configs) && 
generate_finalconfiglist
-       grep -q "fedora" flavors && (cd ..; make fedora-configs) && 
generate_finalconfiglist
-       sort -o .finalconfiglist -u .finalconfiglist
-
-       find ./ -name CONFIG_* | sed 's!.*/!!' | sort -u > .configlist
-
-       echo "These CONFIGS defined in redhat/configs but not the final 
.configs have been deleted:"
-       comm .configlist .finalconfiglist -2 -3 | while read FILENAME
-       do
-               echo $FILENAME
-               find ./ -name $FILENAME | xargs rm -f
-       done
-
-       rm -f .configlist .finalconfiglist
-}
-
-#
-#
-# MAIN
-#
-#
-
-# PROCESS ARGUMENTS
-FINDFIXES=false
-FIXCOMMON=false
-configs=
-while getopts "c:dDfhjp:" opt; do
-       case ${opt} in
-       c )
-               configs=$OPTARG
-               ;;
-       d )
-               DEBUG=true
-               ;;
-       D )
-               find_dead_configs
-               exit 0
-               ;;
-       f )
-               # Find fixes per config-variant
-               FINDFIXES=true
-               ;;
-       h )
-               whatcouldgowrong
-               ;;
-       j )
-               # jforbes mode
-               priority_file=priority.common
-               FIXCOMMON=true
-               ;;
-       p )
-               # Get the high level order from the priority file
-               priority_file=$OPTARG
-               ;;
-       *)
-               whatcouldgowrong
-               ;;
-       esac
-done
-
-$DEBUG && echo "priority_file=$priority_file"
-$DEBUG && echo "configs=$CONFIG"
-$DEBUG && echo "FINDFIXES=$FINDFIXES"
-$DEBUG && echo "FIXCOMMON=$FIXCOMMON"
-
-# Do some simple error checking
-if [ -z "$priority_file" ]; then
-       echo "Specify a priority.* file"
-       whatcouldgowrong
-fi
-
-# if configs is not set then do all CONFIGS
-if [ -z "$configs" ]; then
-       find ./ -name "CONFIG*" -type f -printf "%f\n" | sort -u > 
"$tempdir"/CONFIGS
-       configs=$tempdir/CONFIGS
-fi
-
-# if configs is still not set, then parse the argument provided
-if [ ! -e "$configs" ]; then
-# assume the user is smart enough to specify CONFIGs
-       for config in ${configs//,/ }
-       do
-               # Allow users to specify configs without CONFIG_
-               if ! echo "$config" | grep -q CONFIG; then
-                       config="CONFIG_${config}"
-               fi
-               echo "$config" >> "$tempdir"/CONFIGS
-       done
-       configs=$tempdir/CONFIGS
-else
-       # if the file exists just copy it
-       [ ! -e "$tempdir"/CONFIGS ] && cp "$configs" "$tempdir"/CONFIGS
-fi
-
-ORDER=$(grep "^ORDER" "$priority_file"| cut -d "=" -f 2)
-
-# STEP 1.  Parse the priority file
-
-cfgvariants=$(get_cfgvariants)
-$DEBUG && echo "----------------------------------------"
-$DEBUG && echo "cfgvariants:"
-$DEBUG && echo "$cfgvariants"
-$DEBUG && echo "----------------------------------------"
-toplevels=$(get_toplevel_dirs "$cfgvariants")
-$DEBUG && echo "Top level directories in priority file: $toplevels"
-subdirs=$(get_subdirs)
-$DEBUG && echo "Top-level sub-directories:"
-$DEBUG && echo "$subdirs"
-
-# Create ordering for toplevel dirs
-create_toplevel_order
-
-# Add EMPTY entries for each missing subdirectory level in the config
-# variants
-echo "$cfgvariants" > "$tempdir"/cfgvariants
-fix_config_variants
-$DEBUG && echo ""
-$DEBUG && echo ""
-$DEBUG && echo "Fixed: cfgvariants"
-$DEBUG && cat "$tempdir"/cfgvariants
-
-# Reset cfgvariants to new values with EMPTYs.
-# cfgvariants now contains the config-variant data with EMPTY subdirs.
-cfgvariants=$(cat "$tempdir"/cfgvariants)
-crows=
-ccolumns=
-debug_cfgvariants
-$DEBUG && echo "For the config-variants there are $crows rows and $ccolumns 
columns."
-
-# STEP 2.  Now that we have fixed the list of config variants, create a config
-# map that contains all entries wrt the ORDER specified in the priority file.
-
-numorder=$(echo "$ORDER" | wc -w)
-# jforbes: pending-fedora can be dropped.  It should be empty
-# most of the time.
-echo "$ORDER" | grep -q "pending-fedora" && numorder=$((numorder -1))
-
-# configmap is the list of config-variants used for displaying and analyzing
-# the CONFIGs.
-configmap=$(get_configmap)
-$DEBUG && echo " "
-$DEBUG && echo "The configmap is:"
-$DEBUG && echo "$configmap"
-$DEBUG && echo " "
-
-# STEP 3.  Create an array and header to hold the configmap data.
-
-rows=$(echo "$configmap" | wc -l)
-columns=$(echo "$configmap" | head -1 | cut -d "|" -f 2 | wc -w)
-$DEBUG && echo "There are $rows rows and $columns columns in the configmap."
-
-create_output_header # sets output_header
-$DEBUG && echo "output_header=|$output_header|"
-$DEBUG && echo "longheader=|$longheader|"
-$DEBUG && echo "output_header has weights ${weightorig[@]}"
-
-# create the cfgs array and initialize it to '-' (not found)
-init_cfgs
-
-if $FINDFIXES; then
-       while read -r CONFIG
-       do
-               reset_cfgs
-               map_configs_to_array || continue
-
-               fix_broken_arches "$output_header"
-       done < "$tempdir"/CONFIGS
-       exit
-fi
-
-if $FIXCOMMON; then
-       while read -r CONFIG
-       do
-               reset_cfgs
-               map_configs_to_array || continue
-               fix_common
-       done < "$tempdir"/CONFIGS
-       exit
-fi
-
-# only display the configs
-       while read -r CONFIG
-       do
-               reset_cfgs
-               map_configs_to_array || continue
-               echo ""
-               echo "$CONFIG"
-               output_pretty_cfgs "$output_header"
-       done < "$tempdir"/CONFIGS
-exit

--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/3867

-- 
_______________________________________________
kernel mailing list -- kernel@lists.fedoraproject.org
To unsubscribe send an email to kernel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to