Commit | Line | Data |
---|---|---|
805e021f CE |
1 | #!/bin/sh |
2 | # | |
3 | # build all of openafs for all the various kernels installed on this system. | |
4 | # | |
5 | # Written by: Derek Atkins <warlord@MIT.EDU> | |
6 | # | |
7 | # $Revision$ | |
8 | # | |
9 | ||
10 | # Define where the Specfile is located. | |
11 | specdir=/usr/src/redhat/SPECS | |
12 | ||
13 | # Define the rpmbuild options you want to supply. | |
14 | buildopts= | |
15 | ||
16 | ############################################################################ | |
17 | # Figure out the release version | |
18 | [ -f /etc/redhat-release ] && rhrel=`cat /etc/redhat-release` | |
19 | [ -f /etc/SuSE-release ] && rhrel=`head -1 /etc/SuSE-release` | |
20 | ||
21 | if [ `echo $rhrel | grep -c 'Fedora Core'` = 1 ] ; then | |
22 | ostype='fc' | |
23 | osrel=`echo $rhrel | sed -e 's/^.*release \([^ ]*\).*$/\1/' -e 's/\.//g'` | |
24 | elif [ `echo $rhrel | grep -c 'Fedora'` = 1 ] ; then | |
25 | ostype='fc' | |
26 | osrel=`echo $rhrel | sed -e 's/^.*release \([^ ]*\).*$/\1/' -e 's/\.//g'` | |
27 | elif [ `echo $rhrel | grep -c 'Red Hat Enterprise Linux'` = 1 ] ; then | |
28 | ostype='rhel' | |
29 | excludearch=i586 | |
30 | osrel=`echo $rhrel | sed -e 's/^.*release \([^ ]*\).*$/\1/' -e 's/\.//g'` | |
31 | elif [ `echo $rhrel | grep -c 'CentOS'` = 1 ] ; then | |
32 | ostype='rhel' | |
33 | excludearch=i586 | |
34 | osrel=`echo $rhrel | sed -e 's/^.*release \([^ ]*\).*$/\1/' -e 's/\.//g'` | |
35 | elif [ `echo $rhrel | grep -c 'Red Hat Linux'` = 1 ] ; then | |
36 | ostype='rh' | |
37 | osrel=`echo $rhrel | sed -e 's/^.*release \([^ ]*\).*$/\1/' -e 's/\.//g'` | |
38 | elif [ `echo $rhrel | grep -c 'SUSE'` = 1 ] ; then | |
39 | ostype='suse' | |
40 | specdir=/usr/src/packages/SPECS | |
41 | osrel=`grep VERSION /etc/SuSE-release|awk '{print $3}'` | |
42 | else | |
43 | echo "Unknown Linux Release: $rhrel" | |
44 | exit 1 | |
45 | fi | |
46 | osvers="$ostype$osrel" | |
47 | ||
48 | ############################################################################ | |
49 | # Now figure out the kernel version. We assume that the running | |
50 | # kernel version is "close enough" to tell us whether it's a | |
51 | # 2.4 or 2.6 kernel. | |
52 | kvers=`uname -r` | |
53 | kbase=/usr/src/linux- | |
54 | ||
55 | case $kvers in | |
56 | 2.4.*) | |
57 | kv=2.4. | |
58 | ;; | |
59 | 2.6.*) | |
60 | [ -d /usr/src/kernels ] && kbase=/usr/src/kernels/ | |
61 | kv=2.6. | |
62 | ;; | |
63 | *) | |
64 | echo "I don't know how to build for kernel $kvers" | |
65 | exit 1 | |
66 | ;; | |
67 | esac | |
68 | ############################################################################ | |
69 | # Now build the packages and all the kernel modules | |
70 | ||
71 | echo "Building OpenAFS for $osvers" | |
72 | rpmbuild -ba $buildopts --define "osvers $osvers" $specdir/openafs.spec || \ | |
73 | exit 1 | |
74 | ||
75 | kernels=`ls -d ${kbase}${kv}*` | |
76 | ||
77 | for kerndir in $kernels ; do | |
78 | # Ignore symlinks | |
79 | if [ ! -h $kerndir ] ; then | |
80 | vers=`echo $kerndir | sed -e "s^${kbase}^^g" -e 's/-smp/smp/g' \ | |
81 | -e 's/-hugemem/hugemem/g' -e 's/-largesmp/largesmp/g'` | |
82 | if [ $kv = "2.4." ] ; then | |
83 | kvers=$vers | |
84 | case `uname -m` in | |
85 | i386|i486|i586|i686|athlon) archlist="i586 i686 athlon" ;; | |
86 | *) archlist=`uname -m` ;; | |
87 | esac | |
88 | for a in $excludearch ; do | |
89 | archlist=`echo $archlist | sed -e s/$a//` | |
90 | done | |
91 | kend="''" | |
92 | else | |
93 | karch=`echo $vers | sed 's/.*-//'` | |
94 | kvers=`echo $vers | sed s/-$karch//` | |
95 | archlist=$karch | |
96 | kend=-$karch | |
97 | fi | |
98 | ||
99 | for arch in $archlist ; do | |
100 | echo "Building for $kerndir, $kvers, $arch" | |
101 | rpmbuild -bb $buildopts \ | |
102 | --define "osvers $osvers" \ | |
103 | --define "kernvers $kvers" \ | |
104 | --define "ksrcdir $kerndir" \ | |
105 | --define "build_modules 1" \ | |
106 | --target=$arch \ | |
107 | $specdir/openafs.spec || exit 1 | |
108 | done | |
109 | fi | |
110 | done |