annotate sources/toys/miniconfig.sh @ 680:924527b0b454

Fix ppc bios, this is the one from qemu svn 6657.
author Rob Landley <rob@landley.net>
date Mon, 30 Mar 2009 04:50:02 -0500
parents 8de4598dfe46
children 14bd42f4a47e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
194
4bb60ffd0d09 This won't work with dash either.
Rob Landley <rob@landley.net>
parents: 131
diff changeset
1 #!/bin/bash
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
2
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
3 # miniconfig.sh copyright 2005 by Rob Landley <rob@landley.net>
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
4 # Licensed under the GNU General Public License version 2.
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
5
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
6 # Run this in the linux kernel build directory with a starting file, and
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
7 # it creates a file called mini.config with all the redundant lines of that
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
8 # .config removed. The starting file must match what the kernel outputs.
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
9 # If it doesn't, then run "make oldconfig" on it to get one that does.
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
10
198
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
11 export KCONFIG_NOTIMESTAMP=1
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
12
235
c0d9e91f528b Improve error message when $1 not found.
Rob Landley <rob@landley.net>
parents: 199
diff changeset
13 if [ $# -ne 1 ]
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
14 then
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
15 echo "Usage: miniconfig.sh configfile"
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
16 exit 1
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
17 fi
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
18
235
c0d9e91f528b Improve error message when $1 not found.
Rob Landley <rob@landley.net>
parents: 199
diff changeset
19 if [ ! -f "$1" ]
c0d9e91f528b Improve error message when $1 not found.
Rob Landley <rob@landley.net>
parents: 199
diff changeset
20 then
c0d9e91f528b Improve error message when $1 not found.
Rob Landley <rob@landley.net>
parents: 199
diff changeset
21 echo "Couldn't find "'"'"$1"'"'
c0d9e91f528b Improve error message when $1 not found.
Rob Landley <rob@landley.net>
parents: 199
diff changeset
22 exit 1
c0d9e91f528b Improve error message when $1 not found.
Rob Landley <rob@landley.net>
parents: 199
diff changeset
23 fi
c0d9e91f528b Improve error message when $1 not found.
Rob Landley <rob@landley.net>
parents: 199
diff changeset
24
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
25 if [ "$1" == ".config" ]
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
26 then
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
27 echo "It overwrites .config, rename it and try again."
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
28 exit 1
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
29 fi
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
30
131
2916a56bacd1 Move uClibc to miniconfig.
Rob Landley <rob@landley.net>
parents: 85
diff changeset
31 make allnoconfig KCONFIG_ALLCONFIG="$1" > /dev/null
350
9db12e74a380 Fun _new_ breakage: using arch/arm/configs/spitz_defconfig in 2.6.25.4
Rob Landley <rob@landley.net>
parents: 349
diff changeset
32 # Shouldn't need this, but kconfig goes "boing" at times...
9db12e74a380 Fun _new_ breakage: using arch/arm/configs/spitz_defconfig in 2.6.25.4
Rob Landley <rob@landley.net>
parents: 349
diff changeset
33 yes "" | make oldconfig > /dev/null
198
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
34 if ! cmp .config "$1"
131
2916a56bacd1 Move uClibc to miniconfig.
Rob Landley <rob@landley.net>
parents: 85
diff changeset
35 then
198
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
36 echo Sanity test failed, normalizing starting configuration...
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
37 diff -u "$1" .config
131
2916a56bacd1 Move uClibc to miniconfig.
Rob Landley <rob@landley.net>
parents: 85
diff changeset
38 fi
198
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
39 cp .config .big.config
349
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
40
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
41 # Speed heuristic: remove all blank/comment lines
307
e6a201119439 Tweak from Tony Przygienda that triples the speed of miniconfig creation script.
Rob Landley <rob@landley.net>
parents: 235
diff changeset
42 grep -v '^[#$]' .config | grep -v '^$' > mini.config
349
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
43 # This should never fail, but kconfig is so broken it does sometimes.
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
44 make allnoconfig KCONFIG_ALLCONFIG=mini.config > /dev/null
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
45 if ! cmp .config "$1"
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
46 then
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
47 echo Insanity test failed: reversing blank line removal heuristic.
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
48 cp .big.config mini.config
798cdf05aca2 The comment removal heuristic breaks on 2.6.25.4 arch/ppc/configs/luan_defconfig
Rob Landley <rob@landley.net>
parents: 348
diff changeset
49 fi
307
e6a201119439 Tweak from Tony Przygienda that triples the speed of miniconfig creation script.
Rob Landley <rob@landley.net>
parents: 235
diff changeset
50 #cp .config mini.config
131
2916a56bacd1 Move uClibc to miniconfig.
Rob Landley <rob@landley.net>
parents: 85
diff changeset
51
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
52 echo "Calculating mini.config..."
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
53
307
e6a201119439 Tweak from Tony Przygienda that triples the speed of miniconfig creation script.
Rob Landley <rob@landley.net>
parents: 235
diff changeset
54 LENGTH=`cat mini.config | wc -l`
602
8de4598dfe46 Add percent progress indicator to miniconfig creation script.
Rob Landley <rob@landley.net>
parents: 350
diff changeset
55 OLDLENGTH=$LENGTH
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
56
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
57 # Loop through all lines in the file
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
58 I=1
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
59 while true
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
60 do
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
61 if [ $I -gt $LENGTH ]
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
62 then
199
4d55eff218e9 Cosmetic fixes.
Rob Landley <rob@landley.net>
parents: 198
diff changeset
63 break
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
64 fi
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
65 sed -n "${I}!p" mini.config > .config.test
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
66 # Do a config with this file
348
d1e73f644c62 Work around the kernel's allnoconfig trying to go nuts while shrinking
Rob Landley <rob@landley.net>
parents: 307
diff changeset
67 rm .config
d1e73f644c62 Work around the kernel's allnoconfig trying to go nuts while shrinking
Rob Landley <rob@landley.net>
parents: 307
diff changeset
68 make allnoconfig KCONFIG_ALLCONFIG=.config.test | head -n 1000000 > /dev/null
198
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
69 # Compare. Because we normalized at the start, the files should be identical.
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
70 if cmp -s .config .big.config
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
71 then
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
72 mv .config.test mini.config
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
73 LENGTH=$[$LENGTH-1]
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
74 else
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
75 I=$[$I + 1]
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
76 fi
602
8de4598dfe46 Add percent progress indicator to miniconfig creation script.
Rob Landley <rob@landley.net>
parents: 350
diff changeset
77 echo -n -e "\r$[$I-1]/$LENGTH lines $(cat mini.config | wc -c) bytes $[100-((($LENGTH-$I)*100)/$OLDLENGTH)]% "
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
78 done
198
77dfe348925c Teach script to normalize input before converting, to be more flexible.
Rob Landley <rob@landley.net>
parents: 194
diff changeset
79 rm .big.config
85
7c874da5505c Switch config-linux to miniconfig-linux. Adjust the build and config scripts,
Rob Landley <rob@landley.net>
parents:
diff changeset
80 echo