packaging: release out (3.8.2)
[profile/ivi/kernel-adaptation-intel-automotive.git] / packaging / kernel-adaptation-intel-automotive.spec
1 #
2 # Spec written for Tizen Mobile, some bits and pieces originate
3 # from MeeGo/Moblin/Fedora
4 #
5
6 %define upstream_version 3.8.2
7 %define variant adaptation-intel-automotive
8 %define kernel_version %{version}-%{release}
9 %define kernel_full_version %{version}-%{release}-%{variant}
10 %define kernel_arch x86
11
12 Name: kernel-%{variant}
13 Summary: The Linux kernel
14 Group: System Environment/Kernel
15 License: GPLv2
16 URL: http://www.kernel.org/
17 Version: %{upstream_version}
18 Release: 1
19 BuildRequires: module-init-tools
20 BuildRequires: findutils
21 BuildRequires: elfutils-libelf-devel
22 BuildRequires: binutils-devel
23 BuildRequires: which
24 # net-tools provides the 'hostname' utility which kernel build wants
25 BuildRequires: net-tools
26 # The below is required for building perf
27 BuildRequires: flex
28 BuildRequires: bison
29 BuildRequires: elfutils-devel
30 BuildRequires: python-devel
31 ExclusiveArch: %{ix86}
32
33 Provides: kernel = %{version}-%{release}
34 Provides: kernel-uname-r = %{kernel_full_version}
35 Requires(post): /bin/ln
36 Requires(postun): /bin/ln
37 Requires(postun): /bin/sed
38 # We can't let RPM do the dependencies automatic because it'll then pick up
39 # a correct but undesirable perl dependency from the module headers which
40 # isn't required for the kernel proper to function
41 AutoReq: no
42 AutoProv: yes
43
44 Source0: %{name}-%{version}.tar.bz2
45
46
47 %description
48 This package contains the Tizen IVI Linux kernel
49
50
51 %package devel
52 Summary: Development package for building kernel modules to match the %{variant} kernel
53 Group: Development/System
54 Provides: kernel-devel = %{kernel_full_version}
55 Provides: kernel-devel-uname-r = %{kernel_full_version}
56 Requires(post): /usr/bin/find
57 Requires: %{name} = %{version}-%{release}
58 AutoReqProv: no
59
60 %description devel
61 This package provides kernel headers and makefiles sufficient to build modules
62 against the %{variant} kernel package.
63
64
65 %package -n perf
66 Summary: The 'perf' performance counter tool
67 Group: System Environment/Kernel
68 Provides: perf = %{kernel_full_version}
69 Requires: %{name} = %{version}-%{release}
70
71 %description -n perf
72 This package provides the "perf" tool that can be used to monitor performance
73 counter events as well as various kernel internal events.
74
75
76
77 ###
78 ### PREP
79 ###
80 %prep
81 # Unpack the kernel tarbal
82 %setup -q -n %{name}-%{version}
83
84
85
86 ###
87 ### BUILD
88 ###
89 %build
90 # Make sure EXTRAVERSION says what we want it to say
91 sed -i "s/^EXTRAVERSION.*/EXTRAVERSION = -%{release}-%{variant}/" Makefile
92
93 # Build perf
94 make -s -C tools/lib/traceevent ARCH=%{kernel_arch} %{?_smp_mflags}
95 make -s -C tools/perf WERROR=0 ARCH=%{kernel_arch}
96
97 # Build kernel and modules
98 make -s ARCH=%{kernel_arch} ivi_defconfig
99 make -s ARCH=%{kernel_arch} %{?_smp_mflags} bzImage
100 make -s ARCH=%{kernel_arch} %{?_smp_mflags} modules
101
102
103
104 ###
105 ### INSTALL
106 ###
107 %install
108 install -d %{buildroot}/boot
109
110 install -m 644 .config %{buildroot}/boot/config-%{kernel_full_version}
111 install -m 644 System.map %{buildroot}/boot/System.map-%{kernel_full_version}
112 install -m 755 arch/%{kernel_arch}/boot/bzImage %{buildroot}/boot/vmlinuz-%{kernel_full_version}
113 # Dummy initrd, will not be included in the actual package but needed for files
114 touch %{buildroot}/boot/initrd-%{kernel_full_version}.img
115
116 make -s ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{buildroot} modules_install KERNELRELEASE=%{kernel_full_version}
117 make -s ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{buildroot} vdso_install KERNELRELEASE=%{kernel_full_version}
118 rm -rf %{buildroot}/lib/firmware
119
120 # And save the headers/makefiles etc for building modules against
121 #
122 # This all looks scary, but the end result is supposed to be:
123 # * all arch relevant include/ files
124 # * all Makefile/Kconfig files
125 # * all script/ files
126
127 # Remove existing build/source links and create pristine dirs
128 rm %{buildroot}/lib/modules/%{kernel_full_version}/build
129 rm %{buildroot}/lib/modules/%{kernel_full_version}/source
130 install -d %{buildroot}/lib/modules/%{kernel_full_version}/build
131 ln -s build %{buildroot}/lib/modules/%{kernel_full_version}/source
132
133 # First, copy all dirs containing Makefile of Kconfig files
134 cp --parents `find  -type f -name "Makefile*" -o -name "Kconfig*"` %{buildroot}/lib/modules/%{kernel_full_version}/build
135 install Module.symvers %{buildroot}/lib/modules/%{kernel_full_version}/build/
136 install System.map %{buildroot}/lib/modules/%{kernel_full_version}/build/
137
138 # Then, drop all but the needed Makefiles/Kconfig files
139 rm -rf %{buildroot}/lib/modules/%{kernel_full_version}/build/Documentation
140 rm -rf %{buildroot}/lib/modules/%{kernel_full_version}/build/scripts
141 rm -rf %{buildroot}/lib/modules/%{kernel_full_version}/build/include
142
143 # Copy config and scripts
144 install .config %{buildroot}/lib/modules/%{kernel_full_version}/build/
145 cp -a scripts %{buildroot}/lib/modules/%{kernel_full_version}/build
146 if [ -d arch/%{kernel_arch}/scripts ]; then
147     cp -a arch/%{kernel_arch}/scripts %{buildroot}/lib/modules/%{kernel_full_version}/build/arch/%{kernel_arch}/ || :
148 fi
149 if [ -f arch/%{kernel_arch}/*lds ]; then
150     cp -a arch/%{kernel_arch}/*lds %{buildroot}/lib/modules/%{kernel_full_version}/build/arch/%{kernel_arch}/ || :
151 fi
152 rm -f %{buildroot}/lib/modules/%{kernel_full_version}/build/scripts/*.o
153 rm -f %{buildroot}/lib/modules/%{kernel_full_version}/build/scripts/*/*.o
154 cp -a --parents arch/%{kernel_arch}/include %{buildroot}/lib/modules/%{kernel_full_version}/build
155
156 # Copy include files
157 mkdir -p %{buildroot}/lib/modules/%{kernel_full_version}/build/include
158 find include/ -mindepth 1 -maxdepth 1 -type d | xargs -I{} cp -a {} %{buildroot}/lib/modules/%{kernel_full_version}/build/include
159
160 # Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
161 cp %{buildroot}/lib/modules/%{kernel_full_version}/build/.config %{buildroot}/lib/modules/%{kernel_full_version}/build/include/config/auto.conf
162
163 # Save the vmlinux file for kernel debugging into the devel package
164 cp vmlinux %{buildroot}/lib/modules/%{kernel_full_version}
165
166 # Mark modules executable so that strip-to-file can strip them
167 find %{buildroot}/lib/modules/%{kernel_full_version} -name "*.ko" -type f | xargs --no-run-if-empty chmod 755
168
169 # Move the devel headers out of the root file system
170 install -d %{buildroot}/usr/src/kernels
171 mv %{buildroot}/lib/modules/%{kernel_full_version}/build %{buildroot}/usr/src/kernels/%{kernel_full_version}
172
173 ln -sf ../../../usr/src/kernels/%{kernel_full_version} %{buildroot}/lib/modules/%{kernel_full_version}/build
174
175 # Install perf
176 install -d %{buildroot}
177 make -s -C tools/perf DESTDIR=%{buildroot} install
178 install -d  %{buildroot}/usr/bin
179 install -d  %{buildroot}/usr/libexec
180 mv %{buildroot}/bin/* %{buildroot}/usr/bin/
181 mv %{buildroot}/libexec/* %{buildroot}/usr/libexec/
182 rm %{buildroot}/etc/bash_completion.d/perf
183
184
185
186 ###
187 ### CLEAN
188 ###
189
190 %clean
191 rm -rf %{buildroot}
192
193
194
195 ###
196 ### SCRIPTS
197 ###
198
199 %post
200 ln -sf vmlinuz-%{kernel_full_version} /boot/vmlinuz
201
202 %post devel
203 if [ -x /usr/sbin/hardlink ]; then
204         cd /usr/src/kernels/%{kernel_full_version}
205         /usr/bin/find . -type f | while read f; do
206                 hardlink -c /usr/src/kernels/*/$f $f
207         done
208 fi
209
210 %postun
211 if [ $1 -gt 1 ]; then
212         # There is another kernel, change the /boot/vmlinuz symlink to the
213         # previously installed kernel.
214         prev_ver="$(rpm -q --last kernel-%{variant} | sed -e "s/kernel-%{variant}-\([^ ]*\).*/\1/g" | sed -e "/^%{kernel_version}$/d" | sed -n -e "1p")"
215         ln -sf vmlinuz-$prev_ver-%{variant} /boot/vmlinuz
216 else
217         rm /boot/vmlinuz
218 fi
219
220
221
222 ###
223 ### FILES
224 ###
225 %files
226 %defattr(-,root,root)
227 /boot/vmlinuz-%{kernel_full_version}
228 /boot/System.map-%{kernel_full_version}
229 /boot/config-%{kernel_full_version}
230 %dir /lib/modules/%{kernel_full_version}
231 /lib/modules/%{kernel_full_version}/kernel
232 /lib/modules/%{kernel_full_version}/build
233 /lib/modules/%{kernel_full_version}/source
234 /lib/modules/%{kernel_full_version}/vdso
235 /lib/modules/%{kernel_full_version}/modules.*
236 %ghost /boot/initrd-%{kernel_full_version}.img
237
238
239 %files devel
240 %defattr(-,root,root)
241 %verify(not mtime) /usr/src/kernels/%{kernel_full_version}
242 /lib/modules/%{kernel_full_version}/vmlinux
243
244
245 %files -n perf
246 /usr/bin/perf
247 /usr/libexec/perf-core