Merge and reformat boards.cfg and MAINTAINERS
Put all informations about targets, including state (active or orphan) and maintainers, in boards.cfg; remove MAINTAINERS; adjust the build system accordingly. Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
This commit is contained in:
parent
7bcee5f7ee
commit
27af930e9a
1412
MAINTAINERS
1412
MAINTAINERS
File diff suppressed because it is too large
Load Diff
51
MAKEALL
51
MAKEALL
|
@ -106,9 +106,9 @@ while true ; do
|
||||||
-s|--soc)
|
-s|--soc)
|
||||||
# echo "Option SoC: argument \`$2'"
|
# echo "Option SoC: argument \`$2'"
|
||||||
if [ "$opt_s" ] ; then
|
if [ "$opt_s" ] ; then
|
||||||
opt_s="${opt_s%)} || \$6 == \"$2\" || \$6 ~ /$2/)"
|
opt_s="${opt_s%)} || \$4 == \"$2\" || \$4 ~ /$2/)"
|
||||||
else
|
else
|
||||||
opt_s="(\$6 == \"$2\" || \$6 ~ /$2/)"
|
opt_s="(\$4 == \"$2\" || \$4 ~ /$2/)"
|
||||||
fi
|
fi
|
||||||
SELECTED='y'
|
SELECTED='y'
|
||||||
shift 2 ;;
|
shift 2 ;;
|
||||||
|
@ -160,7 +160,7 @@ FILTER="\$1 !~ /^#/"
|
||||||
[ "$opt_v" ] && FILTER="${FILTER} && $opt_v"
|
[ "$opt_v" ] && FILTER="${FILTER} && $opt_v"
|
||||||
|
|
||||||
if [ "$SELECTED" ] ; then
|
if [ "$SELECTED" ] ; then
|
||||||
SELECTED=$(awk '('"$FILTER"') { print $1 }' boards.cfg)
|
SELECTED=$(awk '('"$FILTER"') { print $7 }' boards.cfg)
|
||||||
|
|
||||||
# Make sure some boards from boards.cfg are actually found
|
# Make sure some boards from boards.cfg are actually found
|
||||||
if [ -z "$SELECTED" ] ; then
|
if [ -z "$SELECTED" ] ; then
|
||||||
|
@ -232,12 +232,12 @@ boards_by_field()
|
||||||
-v field="$1" \
|
-v field="$1" \
|
||||||
-v select="$2" \
|
-v select="$2" \
|
||||||
-F "$FS" \
|
-F "$FS" \
|
||||||
'($1 !~ /^#/ && $field == select) { print $1 }' \
|
'($1 !~ /^#/ && $field == select) { print $7 }' \
|
||||||
boards.cfg
|
boards.cfg
|
||||||
}
|
}
|
||||||
boards_by_arch() { boards_by_field 2 "$@" ; }
|
boards_by_arch() { boards_by_field 2 "$@" ; }
|
||||||
boards_by_cpu() { boards_by_field 3 "$@" "[: \t]+" ; }
|
boards_by_cpu() { boards_by_field 3 "$@" "[: \t]+" ; }
|
||||||
boards_by_soc() { boards_by_field 6 "$@" ; }
|
boards_by_soc() { boards_by_field 4 "$@" ; }
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
## MPC5xx Systems
|
## MPC5xx Systems
|
||||||
|
@ -519,56 +519,53 @@ get_target_location() {
|
||||||
local vendor=""
|
local vendor=""
|
||||||
|
|
||||||
# Automatic mode
|
# Automatic mode
|
||||||
local line=`egrep -i "^[[:space:]]*${target}[[:space:]]" boards.cfg`
|
local line=`awk -F '\ +' '\$7 == "'"$target"'" { print \$0 }' boards.cfg`
|
||||||
|
|
||||||
if [ -z "${line}" ] ; then echo "" ; return ; fi
|
if [ -z "${line}" ] ; then echo "" ; return ; fi
|
||||||
|
|
||||||
set ${line}
|
set ${line}
|
||||||
|
|
||||||
# add default board name if needed
|
CONFIG_NAME="${7%_config}"
|
||||||
[ $# = 3 ] && set ${line} ${1}
|
|
||||||
|
|
||||||
CONFIG_NAME="${1%_config}"
|
[ "${BOARD_NAME}" ] || BOARD_NAME="${7%_config}"
|
||||||
|
|
||||||
[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}"
|
if [ $# -gt 5 ]; then
|
||||||
|
if [ "$6" = "-" ] ; then
|
||||||
if [ "$4" = "-" ] ; then
|
board=${BOARD_NAME}
|
||||||
board=${BOARD_NAME}
|
else
|
||||||
else
|
board="$6"
|
||||||
board="$4"
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
|
[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
|
||||||
[ $# -gt 6 ] && [ "$7" != "-" ] && {
|
[ $# -gt 6 ] && [ "$8" != "-" ] && {
|
||||||
tmp="${7%:*}"
|
tmp="${8%:*}"
|
||||||
if [ "$tmp" ] ; then
|
if [ "$tmp" ] ; then
|
||||||
CONFIG_NAME="$tmp"
|
CONFIG_NAME="$tmp"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Assign board directory to BOARDIR variable
|
# Assign board directory to BOARDIR variable
|
||||||
if [ -z "${vendor}" ] ; then
|
if [ "${vendor}" == "-" ] ; then
|
||||||
BOARDDIR=${board}
|
BOARDDIR=${board}
|
||||||
else
|
else
|
||||||
BOARDDIR=${vendor}/${board}
|
BOARDDIR=${vendor}/${board}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "${CONFIG_NAME}:${BOARDDIR}"
|
echo "${CONFIG_NAME}:${BOARDDIR}:${BOARD_NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
get_target_maintainers() {
|
get_target_maintainers() {
|
||||||
local name=`echo $1 | cut -d : -f 1`
|
local name=`echo $1 | cut -d : -f 3`
|
||||||
|
|
||||||
if ! grep -qsi "[[:blank:]]${name}[[:blank:]]" MAINTAINERS ; then
|
local line=`awk -F '\ +' '\$7 == "'"$target"'" { print \$0 }' boards.cfg`
|
||||||
|
if [ -z "${line}" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
return ;
|
return ;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local line=`tac MAINTAINERS | grep -ni "[[:blank:]]${name}[[:blank:]]" | cut -d : -f 1`
|
local mails=`echo ${line} | cut -d ' ' -f 9- | sed -e 's/[^<]*<//' -e 's/>.*</ /' -e 's/>[^>]*$//'`
|
||||||
local mail=`tac MAINTAINERS | tail -n +${line} | \
|
[ "$mails" == "-" ] && mails=""
|
||||||
sed -n ":start /.*@.*/ { b mail } ; n ; b start ; :mail /.*@.*/ { p ; n ; b mail } ; q" | \
|
echo "$mails"
|
||||||
sed "s/^.*<//;s/>.*$//"`
|
|
||||||
echo "$mail"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get_target_arch() {
|
get_target_arch() {
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -838,7 +838,7 @@ unconfig:
|
||||||
|
|
||||||
sinclude $(obj).boards.depend
|
sinclude $(obj).boards.depend
|
||||||
$(obj).boards.depend: boards.cfg
|
$(obj).boards.depend: boards.cfg
|
||||||
@awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@
|
@awk '(NF && $$1 !~ /^#/) { print $$7 ": " $$7 "_config; $$(MAKE) -d" }' $< > $@
|
||||||
|
|
||||||
#
|
#
|
||||||
# Functions to generate common board directory names
|
# Functions to generate common board directory names
|
||||||
|
|
6
README
6
README
|
@ -35,7 +35,7 @@ Makefile have been tested to some extent and can be considered
|
||||||
"working". In fact, many of them are used in production systems.
|
"working". In fact, many of them are used in production systems.
|
||||||
|
|
||||||
In case of problems see the CHANGELOG and CREDITS files to find out
|
In case of problems see the CHANGELOG and CREDITS files to find out
|
||||||
who contributed the specific port. The MAINTAINERS file lists board
|
who contributed the specific port. The boards.cfg file lists board
|
||||||
maintainers.
|
maintainers.
|
||||||
|
|
||||||
Note: There is no CHANGELOG file in the actual U-Boot source tree;
|
Note: There is no CHANGELOG file in the actual U-Boot source tree;
|
||||||
|
@ -5833,8 +5833,8 @@ it:
|
||||||
|
|
||||||
* For major contributions, your entry to the CREDITS file
|
* For major contributions, your entry to the CREDITS file
|
||||||
|
|
||||||
* When you add support for a new board, don't forget to add this
|
* When you add support for a new board, don't forget to add a
|
||||||
board to the MAINTAINERS file, too.
|
maintainer e-mail address to the boards.cfg file, too.
|
||||||
|
|
||||||
* If your patch adds new configuration options, don't forget to
|
* If your patch adds new configuration options, don't forget to
|
||||||
document these in the README file.
|
document these in the README file.
|
||||||
|
|
2345
boards.cfg
2345
boards.cfg
File diff suppressed because it is too large
Load Diff
31
mkconfig
31
mkconfig
|
@ -23,10 +23,11 @@ options=""
|
||||||
|
|
||||||
if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then
|
if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then
|
||||||
# Automatic mode
|
# Automatic mode
|
||||||
line=`egrep -i "^[[:space:]]*${2}[[:space:]]" boards.cfg` || {
|
line=`awk '($0 !~ /^#/ && $7 ~ /^'"$2"'$/) { print $1, $2, $3, $4, $5, $6, $7, $8 }' boards.cfg`
|
||||||
|
if [ -z "$line" ] ; then
|
||||||
echo "make: *** No rule to make target \`$2_config'. Stop." >&2
|
echo "make: *** No rule to make target \`$2_config'. Stop." >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
fi
|
||||||
|
|
||||||
set ${line}
|
set ${line}
|
||||||
# add default board name if needed
|
# add default board name if needed
|
||||||
|
@ -37,44 +38,44 @@ while [ $# -gt 0 ] ; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--) shift ; break ;;
|
--) shift ; break ;;
|
||||||
-a) shift ; APPEND=yes ;;
|
-a) shift ; APPEND=yes ;;
|
||||||
-n) shift ; BOARD_NAME="${1%_config}" ; shift ;;
|
-n) shift ; BOARD_NAME="${7%_config}" ; shift ;;
|
||||||
-t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;
|
-t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;
|
||||||
*) break ;;
|
*) break ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
[ $# -lt 4 ] && exit 1
|
[ $# -lt 7 ] && exit 1
|
||||||
[ $# -gt 7 ] && exit 1
|
[ $# -gt 8 ] && exit 1
|
||||||
|
|
||||||
# Strip all options and/or _config suffixes
|
# Strip all options and/or _config suffixes
|
||||||
CONFIG_NAME="${1%_config}"
|
CONFIG_NAME="${7%_config}"
|
||||||
|
|
||||||
[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}"
|
[ "${BOARD_NAME}" ] || BOARD_NAME="${7%_config}"
|
||||||
|
|
||||||
arch="$2"
|
arch="$2"
|
||||||
cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $1}'`
|
cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $1}'`
|
||||||
spl_cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $2}'`
|
spl_cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $2}'`
|
||||||
if [ "$4" = "-" ] ; then
|
if [ "$6" = "-" ] ; then
|
||||||
board=${BOARD_NAME}
|
board=${BOARD_NAME}
|
||||||
else
|
else
|
||||||
board="$4"
|
board="$6"
|
||||||
fi
|
fi
|
||||||
[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
|
[ "$5" != "-" ] && vendor="$5"
|
||||||
[ $# -gt 5 ] && [ "$6" != "-" ] && soc="$6"
|
[ "$4" != "-" ] && soc="$4"
|
||||||
[ $# -gt 6 ] && [ "$7" != "-" ] && {
|
[ $# -gt 7 ] && [ "$8" != "-" ] && {
|
||||||
# check if we have a board config name in the options field
|
# check if we have a board config name in the options field
|
||||||
# the options field mave have a board config name and a list
|
# the options field mave have a board config name and a list
|
||||||
# of options, both separated by a colon (':'); the options are
|
# of options, both separated by a colon (':'); the options are
|
||||||
# separated by commas (',').
|
# separated by commas (',').
|
||||||
#
|
#
|
||||||
# Check for board name
|
# Check for board name
|
||||||
tmp="${7%:*}"
|
tmp="${8%:*}"
|
||||||
if [ "$tmp" ] ; then
|
if [ "$tmp" ] ; then
|
||||||
CONFIG_NAME="$tmp"
|
CONFIG_NAME="$tmp"
|
||||||
fi
|
fi
|
||||||
# Check if we only have a colon...
|
# Check if we only have a colon...
|
||||||
if [ "${tmp}" != "$7" ] ; then
|
if [ "${tmp}" != "$8" ] ; then
|
||||||
options=${7#*:}
|
options=${8#*:}
|
||||||
TARGETS="`echo ${options} | sed 's:,: :g'` ${TARGETS}"
|
TARGETS="`echo ${options} | sed 's:,: :g'` ${TARGETS}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ class Boards:
|
||||||
for upto in range(len(fields)):
|
for upto in range(len(fields)):
|
||||||
if fields[upto] == '-':
|
if fields[upto] == '-':
|
||||||
fields[upto] = ''
|
fields[upto] = ''
|
||||||
while len(fields) < 7:
|
while len(fields) < 9:
|
||||||
fields.append('')
|
fields.append('')
|
||||||
|
|
||||||
board = Board(*fields)
|
board = Board(*fields)
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
#! /usr/bin/python
|
||||||
|
########################################################################
|
||||||
|
#
|
||||||
|
# reorder and reformat a file in columns
|
||||||
|
#
|
||||||
|
# this utility takes lines from its standard input and reproduces them,
|
||||||
|
# partially reordered and reformatted, on its standard output.
|
||||||
|
#
|
||||||
|
# It has the same effect as a 'sort | column -t', with the exception
|
||||||
|
# that empty lines, as well as lines which start with a '#' sign, are
|
||||||
|
# not affected, i.e. they keep their position and formatting, and act
|
||||||
|
# as separators, i.e. the parts before and after them are each sorted
|
||||||
|
# separately (but overall field widths are computed across the whole
|
||||||
|
# input).
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# -i:
|
||||||
|
# --ignore-case:
|
||||||
|
# Do not consider case when sorting.
|
||||||
|
# -d:
|
||||||
|
# --default:
|
||||||
|
# What to chage empty fields to.
|
||||||
|
# -s <N>:
|
||||||
|
# --split=<N>:
|
||||||
|
# Treat only the first N whitespace sequences as separators.
|
||||||
|
# line content after the Nth separator will count as only one
|
||||||
|
# field even if it contains whitespace.
|
||||||
|
# Example : '-s 2' causes input 'a b c d e' to be split into
|
||||||
|
# three fields, 'a', 'b', and 'c d e'.
|
||||||
|
#
|
||||||
|
# boards.cfg requires -ids 6.
|
||||||
|
#
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
import sys, getopt, locale
|
||||||
|
|
||||||
|
# ensure we sort using the C locale.
|
||||||
|
|
||||||
|
locale.setlocale(locale.LC_ALL, 'C')
|
||||||
|
|
||||||
|
# check options
|
||||||
|
|
||||||
|
maxsplit = 0
|
||||||
|
ignore_case = 0
|
||||||
|
default_field =''
|
||||||
|
|
||||||
|
try:
|
||||||
|
opts, args = getopt.getopt(sys.argv[1:], "id:s:",
|
||||||
|
["ignore-case","default","split="])
|
||||||
|
except getopt.GetoptError as err:
|
||||||
|
print str(err) # will print something like "option -a not recognized"
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
for o, a in opts:
|
||||||
|
if o in ("-s", "--split"):
|
||||||
|
maxsplit = eval(a)
|
||||||
|
elif o in ("-i", "--ignore-case"):
|
||||||
|
ignore_case = 1
|
||||||
|
elif o in ("-d", "--default"):
|
||||||
|
default_field = a
|
||||||
|
else:
|
||||||
|
assert False, "unhandled option"
|
||||||
|
|
||||||
|
# collect all lines from standard input and, for the ones which must be
|
||||||
|
# reformatted and sorted, count their fields and compute each field's
|
||||||
|
# maximum size
|
||||||
|
|
||||||
|
input_lines = []
|
||||||
|
field_width = []
|
||||||
|
|
||||||
|
for line in sys.stdin:
|
||||||
|
# remove final end of line
|
||||||
|
input_line = line.strip('\n')
|
||||||
|
if (len(input_line)>0) and (input_line[0] != '#'):
|
||||||
|
# sortable line: split into fields
|
||||||
|
fields = input_line.split(None,maxsplit)
|
||||||
|
# if there are new fields, top up field_widths
|
||||||
|
for f in range(len(field_width), len(fields)):
|
||||||
|
field_width.append(0)
|
||||||
|
# compute the maximum witdh of each field
|
||||||
|
for f in range(len(fields)):
|
||||||
|
field_width[f] = max(field_width[f],len(fields[f]))
|
||||||
|
# collect the line for next stage
|
||||||
|
input_lines.append(input_line)
|
||||||
|
|
||||||
|
# run through collected input lines, collect the ones which must be
|
||||||
|
# reformatted and sorted, and whenever a non-reformattable, non-sortable
|
||||||
|
# line is met, sort the collected lines before it and append them to the
|
||||||
|
# output lines, then add the non-sortable line too.
|
||||||
|
|
||||||
|
output_lines = []
|
||||||
|
sortable_lines = []
|
||||||
|
for input_line in input_lines:
|
||||||
|
if (len(input_line)>0) and (input_line[0] != '#'):
|
||||||
|
# this line should be reformatted and sorted
|
||||||
|
input_fields = input_line.split(None,maxsplit)
|
||||||
|
output_fields = [];
|
||||||
|
# reformat each field to this field's column width
|
||||||
|
for f in range(len(input_fields)):
|
||||||
|
output_field = input_fields[f];
|
||||||
|
output_fields.append(output_field.ljust(field_width[f]))
|
||||||
|
# any missing field is set to default if it exists
|
||||||
|
if default_field != '':
|
||||||
|
for f in range(len(input_fields),len(field_width)):
|
||||||
|
output_fields.append(default_field.ljust(field_width[f]))
|
||||||
|
# join fields using two spaces, like column -t would
|
||||||
|
output_line = ' '.join(output_fields);
|
||||||
|
# collect line for later
|
||||||
|
sortable_lines.append(output_line)
|
||||||
|
else:
|
||||||
|
# this line is non-sortable
|
||||||
|
# sort collected sortable lines
|
||||||
|
if ignore_case!=0:
|
||||||
|
sortable_lines.sort(key=lambda x: str.lower(locale.strxfrm(x)))
|
||||||
|
else:
|
||||||
|
sortable_lines.sort(key=lambda x: locale.strxfrm(x))
|
||||||
|
# append sortable lines to the final output
|
||||||
|
output_lines.extend(sortable_lines)
|
||||||
|
sortable_lines = []
|
||||||
|
# append non-sortable line to the final output
|
||||||
|
output_lines.append(input_line)
|
||||||
|
# maybe we had sortable lines pending, so append them to the final output
|
||||||
|
if ignore_case!=0:
|
||||||
|
sortable_lines.sort(key=lambda x: str.lower(locale.strxfrm(x)))
|
||||||
|
else:
|
||||||
|
sortable_lines.sort(key=lambda x: locale.strxfrm(x))
|
||||||
|
output_lines.extend(sortable_lines)
|
||||||
|
|
||||||
|
# run through output lines and print them, except rightmost whitespace
|
||||||
|
|
||||||
|
for output_line in output_lines:
|
||||||
|
print output_line.rstrip()
|
Loading…
Reference in New Issue