3 %bcond_without dist_kernel # allow non-distribution kernel
4 %bcond_without kernel # don't build kernel package
5 %bcond_with verbose # verbose build (V=1)
9 %define debrel %{basedebrel}.57
10 %define localversion %{basedebrel}-generic
11 %define localver_str %(echo %{localversion} | tr - _)
13 # binary driver. redefine macros
14 %define alt_kernel ubuntu
15 %define kernel_name kernel%{_alt_kernel}
16 %define kernel_version %{basever}-%{localver_str}
17 %define _kernel_ver %{_kernel_ver}
18 %define _kernel_basever %{basever}-%{basedebrel}
19 %define _kernel_ver %{basever}-%{localversion}
20 %define _kernel_ver_str %(echo %{_kernel_ver} | tr - _)
22 # lynx -dump http://archive.ubuntu.com/ubuntu/pool/main/l/linux/ | grep 3.13.0-95 | grep -vE 'i386|diff|dsc|\.udeb|lowlatency|doc|source'
26 Summary: HP storage controller support
27 Name: %{pname}%{_alt_kernel}
30 License: HP Proprietary
32 Source0: http://ppa.launchpad.net/hp-iss-team/hp-storage/ubuntu/pool/main/h/hpvsa/%{pname}_%{version}-115-3.13ubuntu2.tar.gz
33 # NoSource0-md5: 7c6ee33ed10baf0ca61c3fa7353aad4e
35 Source1: http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-%{_kernel_ver}_%{basever}-%{debrel}_amd64.deb
36 # NoSource1-md5: 51f5f700d35c4c05a6d195195a9d9ff1
38 Source2: http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-%{_kernel_ver}_%{basever}-%{debrel}_amd64.deb
39 # NoSource2-md5: fe9dd9951ad3b1b8de3d650bb33d4e8f
41 Source3: http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-%{_kernel_ver}_%{basever}-%{debrel}_amd64.deb
42 # NoSource3-md5: b83bd34df0107b8b208904be64ad3def
44 Source4: http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-%{_kernel_basever}_%{basever}-%{debrel}_all.deb
45 # NoSource4-md5: 18fa458ad9dc6d2414f8f373f91ed45c
47 URL: https://launchpad.net/~hp-iss-team/+archive/ubuntu/hp-storage
48 BuildRequires: rpmbuild(macros) >= 1.379
49 BuildRequires: tar >= 1:1.22
51 ExclusiveArch: %{x8664}
52 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
54 %define initrd_dir /boot
55 # define this to '-%{basever}' for longterm branch
56 %define versuffix %{nil}
58 %define _kernelbasesrcdir /usr/src/linux-headers%{versuffix}-%{basever}-%{basedebrel}
59 %define _kernelsrcdir /usr/src/linux-headers%{versuffix}-%{basever}-%{localversion}
61 # nothing to be placed to debuginfo package
62 %define _enable_debug_packages 0
65 Driver for HP Smart Array B120i/B320i SATA RAID controller.
67 %package -n kernel%{_alt_kernel}
68 Summary: The Linux kernel (the core of the Linux operating system)
70 Release: %{localver_str}
74 Requires(post): coreutils
75 Requires(post): geninitrd >= 10000-3
76 Requires(post): kmod >= 12-2
77 Requires: /sbin/depmod
79 Requires: geninitrd >= 10000-3
80 Requires: kmod >= 12-2
84 Suggests: linux-firmware
87 %description -n kernel%{_alt_kernel}
88 This package contains the Linux kernel that is used to boot and run
89 your system. It contains few device drivers for specific hardware.
90 Most hardware is instead supported by modules loaded after booting.
92 %package -n kernel%{_alt_kernel}-headers
93 Summary: Header files for the Linux kernel
94 Summary(de.UTF-8): Header Dateien für den Linux-Kernel
95 Summary(pl.UTF-8): Pliki nagłówkowe jądra Linuksa
97 Release: %{localver_str}
99 Group: Development/Building
102 %description -n kernel%{_alt_kernel}-headers
103 These are the C header files for the Linux kernel, which define
104 structures and constants that are needed when rebuilding the kernel or
105 building kernel modules.
107 %description -n kernel%{_alt_kernel}-headers -l de.UTF-8
108 Dies sind die C Header Dateien für den Linux-Kernel, die definierte
109 Strukturen und Konstante beinhalten, die beim rekompilieren des
110 Kernels oder bei Kernel Modul kompilationen gebraucht werden.
112 %description -n kernel%{_alt_kernel}-headers -l pl.UTF-8
113 Pakiet zawiera pliki nagłówkowe jądra, niezbędne do rekompilacji jądra
114 oraz budowania modułów jądra.
116 %package -n kernel%{_alt_kernel}-module-build
117 Summary: Development files for building kernel modules
118 Summary(de.UTF-8): Development Dateien die beim Kernel Modul kompilationen gebraucht werden
119 Summary(pl.UTF-8): Pliki służące do budowania modułów jądra
121 Release: %{localver_str}
123 Group: Development/Building
124 Requires: kernel%{_alt_kernel}-headers = %{epoch}:%{basever}-%{localver_str}
126 Conflicts: rpmbuild(macros) < 1.652
129 %description -n kernel%{_alt_kernel}-module-build
130 Development files from kernel source tree needed to build Linux kernel
131 modules from external packages.
133 %description -n kernel%{_alt_kernel}-module-build -l de.UTF-8
134 Development Dateien des Linux-Kernels die beim kompilieren externer
135 Kernel Module gebraucht werden.
137 %description -n kernel%{_alt_kernel}-module-build -l pl.UTF-8
138 Pliki ze drzewa źródeł jądra potrzebne do budowania modułów jądra
139 Linuksa z zewnętrznych pakietów.
141 %package -n kernel%{_alt_kernel}-scsi-hpvsa
142 Summary: Linux driver for hpvsa
143 Summary(pl.UTF-8): Sterownik dla Linuksa do hpvsa
145 Release: %{rel}@%{_kernel_ver_str}
148 Requires(post,postun): /sbin/depmod
149 %if %{with dist_kernel}
150 %requires_releq_kernel
151 Requires(postun): %releq_kernel
154 %description -n kernel%{_alt_kernel}-scsi-hpvsa
155 Driver for HP Smart Array B120i/B320i SATA RAID controller.
157 This package contains Linux module.
159 %description -n kernel%{_alt_kernel}-scsi-hpvsa -l pl.UTF-8
160 Sterownik dla Linuksa do hpvsa.
162 Ten pakiet zawiera moduł jądra Linuksa.
171 tar xf data.tar.bz2 && rm data.tar.bz2
174 tar xf data.tar.bz2 && rm data.tar.bz2
177 tar xf data.tar.xz && rm data.tar.xz
180 tar xf data.tar.xz && rm data.tar.xz
182 # hardlink, and pld doesn't use that dir
183 rm -rv lib/modules/%{_kernel_ver}/initrd
187 v=$(modinfo -F vermagic ./hpvsa.ko | awk '{print $1}')
189 test "$v" = "%{basever}-%{localversion}"
192 rm -rf $RPM_BUILD_ROOT
193 install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/kernel/scsi
194 cp -p hpvsa.ko $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/kernel/scsi
197 install -d $RPM_BUILD_ROOT{/boot,/lib/{modules,firmware}}
199 cp -a boot/* $RPM_BUILD_ROOT/boot
200 cp -a lib/modules/* $RPM_BUILD_ROOT/lib/modules
201 cp -a lib/firmware/* $RPM_BUILD_ROOT/lib/firmware
202 touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{_kernel_ver}.gz
203 touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{_kernel_ver}.img
205 # ghosted depmod files
214 > $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/modules.$a
217 # rpm obeys filelinkto checks for ghosted symlinks, convert to files
218 rm -f $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/{build,source}
219 touch $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/{build,source}
222 install -d $RPM_BUILD_ROOT%{_usrsrc}
223 cp -a usr/src/* $RPM_BUILD_ROOT%{_usrsrc}
226 ln -s compiler-gcc4.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/compiler-gcc5.h
228 # version.h location changed in 3.7, but a lot of external modules don't know about it
229 # add a compatibility symlink
230 ln -s ../generated/uapi/linux/version.h $RPM_BUILD_ROOT%{_kernelsrcdir}/include/linux/version.h
234 rm -rf $RPM_BUILD_ROOT
236 %post -n kernel%{_alt_kernel}
237 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
238 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
240 mv -f /boot/efi/vmlinuz{,.old} 2> /dev/null
241 ln -sf vmlinuz-%{_kernel_ver} /boot/efi/vmlinuz
242 %if 0%{?alt_kernel:1}
243 mv -f /boot/efi/vmlinuz%{_alt_kernel}{,.old} 2> /dev/null
244 ln -sf vmlinuz-%{_kernel_ver} /boot/efi/vmlinuz%{_alt_kernel}
247 mv -f /boot/vmlinuz{,.old} 2> /dev/null
248 mv -f /boot/System.map{,.old} 2> /dev/null
249 ln -sf vmlinuz-%{_kernel_ver} /boot/vmlinuz
250 ln -sf System.map-%{_kernel_ver} /boot/System.map
251 %if 0%{?alt_kernel:1}
252 mv -f /boot/vmlinuz%{_alt_kernel}{,.old} 2> /dev/null
253 mv -f /boot/System%{_alt_kernel}.map{,.old} 2> /dev/null
254 ln -sf vmlinuz-%{_kernel_ver} /boot/vmlinuz%{_alt_kernel}
255 ln -sf System.map-%{_kernel_ver} /boot/System.map%{_alt_kernel}
259 %depmod %{_kernel_ver}
261 %posttrans -n kernel%{_alt_kernel}
262 # use posttrans to generate initrd after all dependant module packages (-drm, etc) are installed
263 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
265 if [[ "$USE_GENINITRD" != [Nn][Oo] ]]; then
266 /sbin/geninitrd -f --initrdfs=initramfs %{initrd_dir}/initrd-%{_kernel_ver}.gz %{_kernel_ver} || :
267 initrd_file="initrd-%{_kernel_ver}.gz"
270 # if dracut is present then generate full-featured initramfs
271 if [[ "$USE_DRACUT" != [Nn][Oo] ]] && [ -x /sbin/dracut ]; then
272 /sbin/dracut --force --quiet /boot/initramfs-%{_kernel_ver}.img %{_kernel_ver}
273 [ -n "$initrd_file" ] || initrd_file="initramfs-%{_kernel_ver}.img"
276 if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
277 mv -f %{initrd_dir}/initrd{,.old} 2> /dev/null
278 if [ -n "$initrd_file" ] ; then
279 ln -sf "$initrd_file" %{initrd_dir}/initrd
281 %if 0%{?alt_kernel:1}
282 mv -f %{initrd_dir}/initrd%{_alt_kernel}{,.old} 2> /dev/null
283 if [ -n "$initrd_file" ] ; then
284 ln -sf "$initrd_file" %{initrd_dir}/initrd%{_alt_kernel}
289 # update boot loaders when old package files are gone from filesystem
290 if [ -x /sbin/update-grub -a -f /etc/sysconfig/grub ]; then
291 if [ "$(. /etc/sysconfig/grub; echo ${UPDATE_GRUB:-no})" = "yes" ]; then
292 /sbin/update-grub >/dev/null
295 if [ -x /sbin/new-kernel-pkg ]; then
296 /sbin/new-kernel-pkg --initrdfile=%{initrd_dir}/initrd-%{_kernel_ver}.gz --install %{_kernel_ver} --banner "PLD Linux (%{pld_release})%{?alt_kernel: / %{alt_kernel}}"
298 if [ -x /sbin/rc-boot ]; then
299 /sbin/rc-boot 1>&2 || :
301 if [ -x /sbin/efi-boot-update ]; then
302 /sbin/efi-boot-update --auto || :
305 %post -n kernel%{_alt_kernel}-headers
306 ln -snf %{basename:%{_kernelsrcdir}} %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
308 %postun -n kernel%{_alt_kernel}-headers
309 if [ "$1" = "0" ]; then
310 if [ -L %{_prefix}/src/linux%{versuffix}%{_alt_kernel} ]; then
311 if [ "$(readlink %{_prefix}/src/linux%{versuffix}%{_alt_kernel})" = "linux%{versuffix}%{_alt_kernel}-%{version}" ]; then
312 rm -f %{_prefix}/src/linux%{versuffix}%{_alt_kernel}
317 %triggerin -n kernel%{_alt_kernel}-module-build -- kernel%{_alt_kernel} = %{version}-%{release}
318 ln -sfn %{_kernelsrcdir} /lib/modules/%{_kernel_ver}/build
319 ln -sfn %{_kernelsrcdir} /lib/modules/%{_kernel_ver}/source
321 %triggerun -n kernel%{_alt_kernel}-module-build -- kernel%{_alt_kernel} = %{version}-%{release}
322 if [ "$1" = 0 ]; then
323 rm -f /lib/modules/%{_kernel_ver}/{build,source}
326 %post -n kernel%{_alt_kernel}-scsi-hpvsa
327 %depmod %{_kernel_ver}
329 %postun -n kernel%{_alt_kernel}-scsi-hpvsa
330 %depmod %{_kernel_ver}
333 %files -n kernel%{_alt_kernel}
334 %defattr(644,root,root,755)
335 /boot/System.map-%{_kernel_ver}
336 /boot/abi-%{_kernel_ver}
337 /boot/config-%{_kernel_ver}
338 /boot/vmlinuz-%{_kernel_ver}
339 %ghost %{initrd_dir}/initrd-%{_kernel_ver}.gz
340 %ghost %{initrd_dir}/initramfs-%{_kernel_ver}.img
342 /lib/firmware/%{_kernel_ver}
343 %dir /lib/modules/%{_kernel_ver}
344 /lib/modules/%{_kernel_ver}/kernel
345 /lib/modules/%{_kernel_ver}/vdso
346 %exclude /lib/modules/%{_kernel_ver}/kernel/scsi/*.ko*
348 /lib/modules/%{_kernel_ver}/modules.builtin
349 /lib/modules/%{_kernel_ver}/modules.order
351 # rest modules.* are ghost (regenerated by post depmod -a invocation)
352 %ghost /lib/modules/%{_kernel_ver}/modules.alias
353 %ghost /lib/modules/%{_kernel_ver}/modules.alias.bin
354 %ghost /lib/modules/%{_kernel_ver}/modules.builtin.bin
355 %ghost /lib/modules/%{_kernel_ver}/modules.dep
356 %ghost /lib/modules/%{_kernel_ver}/modules.dep.bin
357 %ghost /lib/modules/%{_kernel_ver}/modules.devname
358 %ghost /lib/modules/%{_kernel_ver}/modules.softdep
359 %ghost /lib/modules/%{_kernel_ver}/modules.symbols
360 %ghost /lib/modules/%{_kernel_ver}/modules.symbols.bin
362 # symlinks pointing to kernelsrcdir
363 %ghost /lib/modules/%{_kernel_ver}/build
364 %ghost /lib/modules/%{_kernel_ver}/source
366 %files -n kernel%{_alt_kernel}-headers
367 %defattr(644,root,root,755)
368 %defattr(-,root,root,-)
371 %files -n kernel%{_alt_kernel}-module-build
372 %defattr(644,root,root,755)
373 %defattr(-,root,root,-)
377 %files -n kernel%{_alt_kernel}-scsi-hpvsa
378 %defattr(644,root,root,755)
379 /lib/modules/%{_kernel_ver}/kernel/scsi/*.ko*