blob: 990c8b655fb82d4db878d2bc89d48aa228fab405 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
#!/bin/bash
ALL_KERNELS="all.kernels"
RPMS=/export/Mandrake/RPMS
ARCH=`uname -m | sed -e 's/i.86/i386/' -e 's/sparc.*/sparc/'`
# move stuff to this new "kernel" directory
if [ ! -d all.kernels ]; then
if [ -d ../all.kernels ]; then
mv ../all.kernels .
rm -rf ../all.modules
else
# make sure "all.kernels" directory exists
mkdir all.kernels
fi
fi
function create_marfile() {
marfile=$1
shift
$GIBASEDIR/mdk-stage1/mar/mar -c $marfile $*
}
function kern_version() {
if echo $1 | grep -q ^2.4; then
version=24
objects="*.o"
else
version=25
objects="*.ko"
fi
}
function create_modules() {
kernel_path=$1
kern=$2
echo "Updating modules in '`pwd`' for kernel '$kern'"
kern_version $kern
find $kernel_path/lib/modules/ -name "$objects" -exec cp -f {} . \;
if [ $version -eq 24 ]; then
/sbin/depmod-24 -F $kernel_path/boot/System.map* -e *.o | perl -pe 's/\\\n//' \
| perl -ne 's/\.o//g; s/[ \t]+/ /g; print if /: /' > modules.dep
else
cp $kernel_path/lib/modules/*/modules.dep .
perl -ni -e 's|/\S+/([^/]+)\.k?o|$1|g; print if /: /' modules.dep
fi
perl -pi -e 's/((plip|ppa|imm): parport)/$1 parport_pc/' modules.dep
/sbin/modinfo-$version -f '%{filename} %{description}\n' $objects | perl -lne 'print "$1\t$2" if /(.*?)\.k?o "(.*)"/' > modules.description
}
function create_modules_mar() {
kern_version $kern
if [ $version -eq 24 ]; then
echo -n "stripping $kern: "
$GIBASEDIR/kernel/strip_modules *.o 2>/dev/null
echo "done"
else
echo "don't strip on 2.6 since it breaks modules"
fi
if [ -z "$MOVE" ]; then
echo -n "packdrake $kern: "
ls $objects | packdrake -b9s "modules.cz" 400000
echo "done"
mv modules.cz ../modules.cz-$kern
fi
for i in $images; do
eval "modules=\$${i}_modules_raw"
modules_with_deps=`perl -I $GIBASEDIR/kernel $GIBASEDIR/kernel/dependencies.pl $version modules.dep $modules`
if [ -n "$MOVE" ]; then modules_with_deps="change_loop.o gzloop.o isofs.o zlib_inflate.o supermount.o $modules_with_deps"; fi
eval "create_marfile ${i}_modules.mar $modules_with_deps"
done
echo
}
[ -e $ALL_KERNELS/.main ] && main=$(cat $ALL_KERNELS/.main)
if [ "$1" = "--move" ]; then
MOVE=1
shift
fi
#- allow specifying a kernel file on commandline (./update_kernel /RPMS/kernel-2.4.22.10mdk-1-1mdk.i586.rpm 2.4.22-10mdk)
if [ -n "$1" ]; then
rpm=$1
[ $rpm = ${rpm#/} ] && rpm=`pwd`/$rpm
elif [ "$ARCH" == "ia64" ] || [ "$ARCH" == "ppc" ]; then
rpm=$RPMS/kernel-[0-9]*.rpm
else
rpm=$RPMS/kernel-BOOT-*.rpm
fi
ver=$(rpm -qp --qf '%{name}' $rpm | perl -pe 's/kernel(-(BOOT))?-((\.?[0-9]+){3})\.(.*)/$3-$5$2/')
if [ -n "$ver" -a ! -e $ALL_KERNELS/$ver ]; then
[ -n "$main" ] && rm -rf $ALL_KERNELS/$main
cd $ALL_KERNELS
rm -rf $ver ; mkdir $ver
cd $ver
if [ "$ARCH" == "ia64" ] || [ "$ARCH" == "ppc" ]; then
rpm2cpio $RPMS/kernel-[0-9]*.rpm | cpio -id
else
rpm2cpio $rpm | cpio -id
fi
find -type f -name "*.o.gz" -o -name "*.ko.gz" | xargs gunzip
cd ../..
for dir in /tftpboot /var/lib/tftpboot; do
rm -f $dir/{vmlinuz,network.rdz,all.rdz}
done
fi
[ -n "$main" -a -e $ALL_KERNELS/$main ] || {
cd $ALL_KERNELS
main=$(echo 2.* | sed 's/.* //')
echo "Choosing $main"
echo $main > .main
cd ..
}
if [ "$ARCH" == "i386" ]; then
for i in $ALL_KERNELS/*/boot/vmlinuz*; do
#disable any existing resolution!!!
/usr/sbin/rdev -v $i 65535 #788 #785
done
fi
GIBASEDIR=`pwd`/..
rm -rf all.modules ; mkdir all.modules
for i in $ALL_KERNELS/*; do
kern=`basename $i`
(
mkdir all.modules/$kern
cd all.modules/$kern
create_modules ../../$i $kern
) || exit 1
done
cp -f all.modules/$main/modules.description .
l=`perl modules.pl images` || exit 1
eval $l
for i in $ALL_KERNELS/*; do
kern=`basename $i`
(
cd all.modules/$kern
if [ "$kern" = "$main" ]; then
create_modules_mar ../../$i $kern
else
echo "$kern ($main)"
create_modules_mar ../../$i $kern 2>/dev/null
fi
) || exit 1
done
./check_mar.pl
|