/[pkgs]/devel/kernel/scripts/sort-config
ViewVC logotype

Contents of /devel/kernel/scripts/sort-config

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download)
Wed Aug 19 12:24:33 2009 UTC (3 months ago) by cebbert
Branch: MAIN
CVS Tags: F-12-split, kernel-2_6_31-0_174_rc7_git2_fc12, kernel-2_6_31-0_218_rc9_git2_fc12, kernel-2_6_32-0_24_rc4_git0_fc13, kernel-2_6_31-0_185_rc7_git6_fc12, kernel-2_6_32-0_51_rc7_git2_fc13, kernel-2_6_31-0_219_rc9_git2_fc12, kernel-2_6_31-0_190_rc8_fc12, kernel-2_6_32-0_48_rc7_git1_fc13, kernel-2_6_31-1_fc12, kernel-2_6_32-0_47_rc7_git1_fc13, kernel-2_6_31-0_175_rc7_git2_fc12, kernel-2_6_31-0_177_rc7_git2_fc12, kernel-2_6_32-0_5_rc0_git4_fc13, kernel-2_6_31-0_196_rc8_git2_fc12, kernel-2_6_31-0_198_rc8_git2_fc12, kernel-2_6_31-0_183_rc7_git5_fc12, kernel-2_6_31-0_180_rc7_git4_fc12, kernel-2_6_31-0_167_rc6_git6_fc12, kernel-2_6_31-0_204_rc9_fc12, kernel-2_6_31-0_202_rc8_git2_fc12, kernel-2_6_32-0_33_rc5_git1_fc13, kernel-2_6_32-0_46_rc7_git1_fc13, kernel-2_6_31-0_209_rc9_git1_fc12, kernel-2_6_31-0_213_rc9_git1_fc12, kernel-2_6_31-0_214_rc9_git1_fc12, kernel-2_6_31-0_212_rc9_git1_fc12, kernel-2_6_31-0_203_rc8_git2_fc12, kernel-2_6_32-0_15_rc1_git0_fc13, kernel-2_6_31-2_fc12, kernel-2_6_32-0_14_rc0_git18_fc13, kernel-2_6_32-0_39_rc5_git6_fc13, kernel-2_6_31-0_210_rc9_git1_fc12, kernel-2_6_31-0_199_rc8_git2_fc12, HEAD
Branch point for: kernel-2_6_31-nfs41_rc7, kernel-2_6_31-pnfs_rc7, private-myoung-dom0-branch
Changes since 1.3: +9 -3 lines
show what the input option became in the target
1 #!/bin/bash
2
3 SRC=($(ls config-* 2>/dev/null))
4 TGT=($(ls kernel-*/linux-*.noarch/configs/kernel-2.6.*-*.config \
5 kernel-*/linux-*.noarch/configs/kernel-2.6.*-*-debug.config 2>/dev/null))
6 TGT1=(${TGT[*]#kernel-*/linux-*.noarch/configs/kernel-2.6.*-})
7
8 if [ $# -lt 2 ] ; then
9 echo -e "Usage:\n $(basename $0) [-dfcn] input target\n"
10 echo -e " Sort input config file into the same order as the target\n"
11 echo -e " -d: show raw unsorted output with extra debug text"
12 echo -e " -f: force output to match what is in the target config"
13 echo -e " -c: insert comments about non-matching items"
14 echo -e " -n: do not sort output\n"
15 echo -e " input: source config file" ' [' "${SRC[*]#config-}" ']\n'
16 echo -e " target: output arch name" ' [' "${TGT1[*]%.config}" ']\n'
17 exit 1
18 fi
19
20 while getopts "dfcn" OPTION ; do
21 case $OPTION in
22 d)
23 DEBUG=1
24 ;;
25 f)
26 FORCE=1
27 ;;
28 c)
29 ADDCOMMENT=1
30 ;;
31 n)
32 NOSORT=1
33 ;;
34 \?)
35 exit 2
36 ;;
37 esac
38 done
39
40 if [ "$FORCE" -a "$ADDCOMMENT" ] ; then
41 echo "-f and -c options cannot be used together"
42 exit 2
43 fi
44
45 shift $((OPTIND-1))
46
47 if [ -f xx00 -o -f xx01 -o -f xx99 ] ; then
48 echo "WARNING! Output files named xx?? already exist." >&2
49 read -p "Press <Enter> to erase files, or Ctrl-C to exit..."
50 echo >&2
51 fi
52 rm -f xx00 xx01 xx99
53
54 SRCFILE=config-$1
55 [ ! -f $SRCFILE ] && echo "Input file" $SRCFILE "missing" && exit 2
56
57 TGTFILE=kernel-*/linux-*.noarch/configs/kernel-2.6.*-$2.config
58 [ ! -f $TGTFILE ] && echo "No target file matching" $TGTFILE "exists" && exit 2
59
60 IX=0
61 IN=0
62 declare -a SAVECOMMENT
63
64 cat ${SRCFILE} | while read TEXT ; do
65
66 LINE=
67 COMMENT=
68 [ -z "$TEXT" ] && TEXT='#'
69
70 if [ "${TEXT:0:7}" = "CONFIG_" -o "${TEXT:0:9}" = "# CONFIG_" ] ; then
71
72 LINE=$(grep -n "^$TEXT" $TGTFILE | head -1 | cut -f 1 -d ':')
73 if [ -z "$LINE" ] ; then
74 [ "$DEBUG" ] && echo "nofind ->" "$TEXT"
75
76 # see if option changed in output file
77 OPTNAME=
78 if [ "${TEXT:0:7}" = "CONFIG_" ] ; then
79 OPTNAME=${TEXT%%=*}
80 elif [ "${TEXT:0:9}" = "# CONFIG_" ] ; then
81 OPTNAME=${TEXT%" is not set"}
82 OPTNAME=${OPTNAME#\# }
83 fi
84 if [ "$OPTNAME" ] ; then
85 for FINDTEXT in "^${OPTNAME}=" "^# ${OPTNAME} is not set" ; do
86 if [ -z "$LINE" ] ; then
87 [ "$DEBUG" ] && echo "looking for ->" "$FINDTEXT"
88 LINE=$(grep -n "$FINDTEXT" $TGTFILE | head -1 | cut -f 1 -d ':')
89 if [ "$LINE" ] ; then
90 CHANGED=$(grep "$FINDTEXT" $TGTFILE | head -1)
91 if [ "$FORCE" ] ; then
92 TEXT="$CHANGED"
93 [ "$DEBUG" ] && echo 'forced ->' "$TEXT"
94 else
95 if [ "$ADDCOMMENT" ] ; then
96 if [ ${CHANGED:0:1} = '#' ] ; then
97 NEWOPT="not set"
98 else
99 NEWOPT=${CHANGED#$OPTNAME}
100 fi
101 COMMENT="# -- Next option changed to \"${NEWOPT}\" at target line $LINE --"
102 fi
103 fi
104 fi
105 fi
106 done
107 fi
108
109 fi
110
111 else
112 COMMENT="$TEXT"
113 TEXT=
114 fi
115
116 [ "$DEBUG" -a "$COMMENT" ] && echo "comment ->" "$LINE" "$COMMENT"
117 [ "$DEBUG" -a "$TEXT" ] && echo "text ->" "$LINE" "$TEXT"
118
119 if [ "$TEXT" ] ; then
120
121 # use input line numbers if not sorting
122 [ "$NOSORT" ] && LINE=$IN
123 # make sure it has a line number
124 [ -z "$LINE" ] && LINE=999999
125
126 # print saved comments first
127 if [ $IX -gt 0 ] ; then
128 [ "$DEBUG" ] && echo " ->" $IX "comments were saved"
129 (( IX-- ))
130 for IX in $(seq 0 $IX) ; do
131 echo "$LINE":"${SAVECOMMENT[$IX]}"
132 done
133 unset SAVECOMMENT
134 IX=0
135 fi
136 [ "$COMMENT" ] && echo "$LINE":"$COMMENT"
137 echo "$LINE":"$TEXT"
138
139 else
140
141 # no output yet, save the comment
142 SAVECOMMENT[$IX]="$COMMENT"
143 [ "$DEBUG" ] && echo "savecomment ->" "$LINE" "${SAVECOMMENT[$IX]}"
144 (( IX++ ))
145
146 fi
147
148 ((IN++))
149
150 done > xx99
151
152 if [ "$DEBUG" ] ; then
153 cat xx99
154 else
155
156 cat xx99 | sort -s -t ":" -k 1g | csplit -k -s - /^999999/ 2>/dev/null
157
158 cat xx00 | cut -f 2- -d ':'
159 if [ -s xx01 ] ; then
160 echo
161 echo '# ------------ UNMATCHED OPTIONS ------------'
162 echo
163 cat xx01 | cut -f 2- -d ':'
164 fi
165
166 fi
167
168 rm -f xx00 xx01 xx99

admin@fedoraproject.org
ViewVC Help
Powered by ViewVC 1.1.2