very first 2.5.x suse kernel :)
[opensuse:kernel-source.git] / kernel-source-26.spec
1 #
2 # spec file for package kernel-source (Version 2.4.20.SuSE)
3 #
4 # Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.
5 # This file and all modifications and additions to the pristine
6 # package are under the same license as the package itself.
7 #
8 # Please submit bugfixes or comments via http://www.suse.de/feedback/
9 #
10
11 # neededforbuild  modutils
12 # usedforbuild    aaa_base acl attr bash bind9-utils bison cpio cpp cvs cyrus-sasl db devs diffutils e2fsprogs file filesystem fileutils fillup findutils flex gawk gdbm-devel glibc glibc-devel glibc-locale gpm grep groff gzip kbd less libacl libattr libgcc libstdc++ libxcrypt m4 make man mktemp modutils ncurses ncurses-devel net-tools netcfg pam pam-devel pam-modules patch permissions ps rcs readline sed sendmail sh-utils shadow strace syslogd sysvinit tar texinfo textutils timezone unzip util-linux vim zlib-devel autoconf automake binutils bzip2 cracklib gcc gdbm gettext libtool perl rpm zlib
13
14 Name:         kernel-source-26
15 License:      GPL
16 Provides:     kernel linux
17 BuildRequires: modutils
18 Autoreqprov:  off
19 Summary:      The Linux kernel (the core of the Linux operating system)
20 Group:        Development/Sources
21 Requires:     make c_compiler
22 Version:      2.5.69.SuSE
23 Release:      0
24 %define kernel_version  2.5.69
25 %define lxsubdir        linux-%{kernel_version}
26 Source0:      linux-%{kernel_version}.tar.bz2
27 Source10:     series.conf
28 Source11:     arch-symbols
29 Source12:     guards
30 Source20:     config.tar.bz2
31 Source21:     config.conf
32 Source100:    patches.arch.tar.bz2
33 Source101:    patches.fixes.tar.bz2
34 Source102:    patches.drivers.tar.bz2
35 BuildRoot:    %{_tmppath}/%{name}-%{version}-build
36
37 %description
38 Linux Kernel sources with many Improvements and Fixes.
39
40 Authors:
41 --------
42     Linus Torvalds <torvalds@transmeta.com>
43     
44     see /usr/src/linux/CREDITS for more details.
45
46 %prep
47 ###################################################################
48 # This package builds the SuSE Linux kernel source tree by adding
49 # up the vanillia kernelsource, a lot of patches and kernel
50 # configuration.
51 # The %%prep step unpacks all patches, the SuSE default kernel
52 # configuration and the kernel source itself.  Then the patches to
53 # be applied for this architecture are collected into a common
54 # directory /usr/src/packages/BUILD/patches.
55 # The %%build step applies the patches in the _alphabetical_ order
56 # of their basename.  Patching is done in %%build, because patching
57 # is the real build in this package.
58 # The %%install step copies the patched kernel to $RPM_BUILD_ROOT
59 # and does a test build of the kernel with the SuSE default
60 # configuration for the current architecture, to see if everything
61 # is consistent.
62 ###################################################################
63 # _target_cpu can be set manually with the --target=XXX option to
64 # rpm.  default _target_cpu is $RPM_ARCH
65 # you may use this to test build the package for say s390 on a ia32
66 # host
67 ###################################################################
68
69
70 ###################################################################
71 # determine which symbols to use for controlling the patch/file
72 # selection mechanism.
73 ###################################################################
74
75 PATCH_ARCH=%{_target_cpu}
76 export PATCH_ARCH
77
78 chmod +x %_sourcedir/arch-symbols
79 SYMBOLS="$(%_sourcedir/arch-symbols)"
80 if [ -z "$SYMBOLS" ]; then
81     echo "Unsupported architecture \`$ARCH'" >&2
82     exit 1
83 fi
84 if [ -e %_sourcedir/extra-symbols ]; then
85     SYMBOLS="$SYMBOLS $(cat %_sourcedir/extra-symbols)"
86 fi
87 echo "Architecture symbol(s): $SYMBOLS"
88
89 # Write symbols to %{_builddir}/symbols so that other RPM sections
90 # can use the identical symbols. (Currently not needed!)
91 #echo $SYMBOLS > %{_builddir}/symbols
92
93 ###################################################################
94 # unpack all sources and patches
95 ###################################################################
96
97 # AG: Has the following define an effect?
98 %define _bzip2   bzip2 -dc
99
100 %setup -T -n config             -b 20
101 %setup -T -n patches.arch       -b 100
102 %setup -T -n patches.fixes      -b 101
103 %setup -T -n patches.drivers    -b 102
104
105 # the kernel source tree is unpacked last so that RPM_BUILD_DIR
106 # points to the right path, /usr/src/packages/BUILD/%lxsubdir
107 %setup -q -n %lxsubdir
108
109 ###################################################################
110 # apply the patches needed for this architecture
111 ###################################################################
112
113 chmod +x %_sourcedir/guards
114 for patch in `%_sourcedir/guards $SYMBOLS < %_sourcedir/series.conf`; do
115     if ! patch -s -E -p1 --no-backup-if-mismatch -i ../$patch; then
116         echo "*** Patch $patch failed ***"
117         exit 1
118     fi
119 done
120
121 ###################################################################
122 # install all config files that make sense for that particular
123 # kernel
124 ###################################################################
125
126 for config in `%_sourcedir/guards $SYMBOLS < %_sourcedir/config.conf`; do
127         path=arch/$(dirname $config)/defconfig.$(basename $config)
128         mkdir -p $(dirname $path)
129         if [ "${config/*\//}" = "default" ]; then
130                 cp %_builddir/config/$config $path
131                 cp %_builddir/config/$config ${path%.default}
132         else
133                 cp %_builddir/config/$config $path
134         fi
135 done
136
137
138 %build
139 ###################################################################
140 RPM_TARGET=%{_target_cpu}
141 if [ "$RPM_TARGET" = "i586" -o "$RPM_TARGET" = "i686" ] ; then
142    RPM_TARGET=i386
143 fi
144 export RPM_TARGET
145 ###################################################################
146 %ifnarch ppc
147 rm -fv bk.changes.txt changeset.txt
148 %endif
149 if [ "$RPM_TARGET" != "$HOSTTYPE" ]; then
150  echo "CONFIG_CROSSCOMPILE=y" >> .config
151   yes "" | make ARCH=$RPM_TARGET oldconfig
152 else
153   yes "" | make oldconfig
154 fi
155 ###################################################################
156
157 %install
158 ###################################################################
159 RPM_TARGET=%{_target_cpu}
160 if [ "$RPM_TARGET" = "i586" -o "$RPM_TARGET" = "i686" ] ; then
161    RPM_TARGET=i386
162 fi
163 export RPM_TARGET
164 ###################################################################
165 # set up $RPM_BUILD_ROOT
166 rm -rf $RPM_BUILD_ROOT
167 mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{version}
168 ln -s linux-%{version} $RPM_BUILD_ROOT/usr/src/linux
169 cp -a . $RPM_BUILD_ROOT/usr/src/linux-%{version}
170 ###################################################################
171 # collect the filelist
172 {
173     echo $RPM_BUILD_ROOT/usr/src/linux
174     find $RPM_BUILD_ROOT/usr/src/linux-%{version} \
175          -path $RPM_BUILD_ROOT/usr/src/linux-%{version}/.config \
176          -o -path $RPM_BUILD_ROOT/usr/src/linux-%{version}/Documentation -prune -printf "%%%%doc %%p\n" \
177          -o -type d -printf "%%%%dir %%p\n" -o -print
178     echo $RPM_BUILD_ROOT/usr/src/linux-%{version}/include/linux/version.h
179     if grep -q CONFIG_MODVERSIONS=y .config; then
180         echo "$RPM_BUILD_ROOT/usr/src/linux-%{version}/include/linux/modules/*.ver"
181     fi
182 %ifarch x86_64
183     echo $RPM_BUILD_ROOT/usr/src/linux-%{version}/include/asm/offset.h
184 %endif
185 } |
186 sed -e "s:$RPM_BUILD_ROOT::" > $RPM_BUILD_DIR/%lxsubdir/linux.files
187 ###################################################################
188 # do a test build
189 cd $RPM_BUILD_ROOT/usr/src/linux-%{version}
190 if [ "$RPM_TARGET" != "$HOSTTYPE" ]; then
191  ARG="ARCH=$RPM_TARGET"
192  case $RPM_TARGET in s390*) ARG="$ARG CROSS_COMPILE=$RPM_TARGET-linux-";;esac
193 else 
194  ARG=""
195 fi
196 if [ ! -e %_sourcedir/skip-build ]; then
197 make $ARG dep
198 # ARCHITECTURE DEPENDENT test build
199 %ifarch %ix86 x86_64
200 make $ARG $ARG2 bzImage
201 %endif
202 %ifarch alpha sparc sparc64
203 make $ARG boot
204 %endif
205 %ifarch ia64 ppc ppc64 mips
206 make $ARG vmlinux
207 %endif
208 %ifarch mips64
209 make $ARG vmlinux.64
210 %endif
211 %ifarch s390 s390x
212  let GCCMEM="12*1024*1024"; set -- `sed -n '2{p;q;}' /proc/meminfo`
213  let MEM="$2-55*1024*1024"; let PARALLEL_BY_RAM="$MEM/$GCCMEM"
214  PARALLEL_BY_CPU=$(grep -c ^processor /proc/cpuinfo)
215  PARALLEL=-j$(($PARALLEL_BY_RAM < $PARALLEL_BY_CPU ?
216                $PARALLEL_BY_RAM : $PARALLEL_BY_CPU))
217  make $ARG $PARALLEL image   || { echo ok, restarting; make $ARG image; }
218  make $ARG $PARALLEL modules || { echo ok, restarting; make $ARG modules; }
219  mv /lib/modules/%{kernel_version} /lib/modules/%{kernel_version}.42.42 || :
220  make modules_install INSTALL_MOD_PATH=%buildroot
221 %endif
222 else
223  make $(/bin/pwd)/include/linux/modversions.h
224  make $(/bin/pwd)/include/linux/version.h
225 fi
226
227 %clean
228 if [ -s %_sourcedir/k_smp.tgz ]; then
229         cd %_sourcedir
230         tar xvfz k_smp.tgz
231         ln -s k_smp/* .
232         old /usr/src/linux-%{version} /usr/src/linux
233         cp -a $RPM_BUILD_ROOT/usr/src/linux* /usr/src
234         rpm -bb k_smp.spec
235         cd -
236 fi
237
238 %files -f linux.files
239