[OS-BUILD PATCHv3 1/2] redhat: Remove old evaluate_configs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Prarit Bhargava <prarit@xxxxxxxxxx>

redhat: Remove old evaluate_configs

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

Signed-off-by: Prarit Bhargava <prarit@xxxxxxxxxx>

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@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to kernel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux