[packages/hpvsa] package also full ubuntu kernel as altkernel

glen glen at pld-linux.org
Fri Nov 15 10:33:28 CET 2013


commit a762b62bf3cccb8d6447b96d92a6c80c7763fca4
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Fri Nov 15 11:33:10 2013 +0200

    package also full ubuntu kernel as altkernel

 hpvsa.spec | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 169 insertions(+), 19 deletions(-)
---
diff --git a/hpvsa.spec b/hpvsa.spec
index f143108..dd06df1 100644
--- a/hpvsa.spec
+++ b/hpvsa.spec
@@ -1,21 +1,20 @@
 #
 # Conditional build:
 %bcond_without	dist_kernel	# allow non-distribution kernel
-%bcond_without	kernel		# don't build kernel modules
 %bcond_with	verbose		# verbose build (V=1)
 
-%if %{without kernel}
-%undefine	with_dist_kernel
-%endif
-%if "%{_alt_kernel}" != "%{nil}"
-%undefine	with_userspace
-%endif
-
-# binary driver. redefine
-%define	_kernel_ver 3.8.0-33-generic
+%define	basever			3.8.0
+%define	localversion	33-generic
+%define	localver_str	%(echo %{localversion} | tr - _)
+# binary driver. redefine macros
+%define	alt_kernel	ubuntu
+%define	kernel_name kernel%{_alt_kernel}
+%define	kernel_version	%{basever}-%{localver_str}
+%define	kernel_release	%{_kernel_ver}
+%define	_kernel_ver %{basever}-%{localversion}
 %define	_kernel_ver_str %(echo %{_kernel_ver} | tr - _)
 
-%define		rel	0.1
+%define		rel	0.2
 %define		pname	hpvsa
 Summary:	HP storage controller support
 Name:		%{pname}%{_alt_kernel}
@@ -26,16 +25,45 @@ Group:		Base/Kernel
 Source0:	http://ppa.launchpad.net/hp-iss-team/hpvsa-update/ubuntu/pool/main/h/hpvsa/hpvsa_%{version}-0~12~ubuntu13.04.1.tar.gz
 # NoSource0-md5:	1699424136da8b4098c9589f5494e477
 NoSource:	0
+Source1:	http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-%{_kernel_ver}_%{basever}-33.48_amd64.deb
+# Source1-md5:	83b139f34b6c17e2652b6a56b26e39f4
+NoSource:	1
 URL:		https://launchpad.net/~hp-iss-team/+archive/hpvsa-update
-%if %{with kernel}
-%{?with_dist_kernel:BuildRequires:	kernel%{_alt_kernel}-module-build >= 3:2.6.20.2}
 BuildRequires:	rpmbuild(macros) >= 1.379
-%endif
+ExclusiveArch:	%{x8664}
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
+%define		initrd_dir	/boot
+
+# nothing to be placed to debuginfo package
+%define		_enable_debug_packages	0
+
 %description
 Driver for HP Smart Array B120i/B320i SATA RAID controller.
 
+%package -n kernel%{_alt_kernel}
+Summary:	The Linux kernel (the core of the Linux operating system)
+Version:	%{basever}
+Release:	%{localver_str}
+License:	GPL v2
+Group:		Base/Kernel
+Requires(post):	coreutils
+Requires(post):	geninitrd >= 10000-3
+Requires(post):	kmod >= 12-2
+Requires:	/sbin/depmod
+Requires:	coreutils
+Requires:	geninitrd >= 10000-3
+Requires:	kmod >= 12-2
+Suggests:	crda
+Suggests:	dracut
+Suggests:	keyutils
+Suggests:	linux-firmware
+
+%description -n kernel%{_alt_kernel}
+This package contains the Linux kernel that is used to boot and run
+your system. It contains few device drivers for specific hardware.
+Most hardware is instead supported by modules loaded after booting.
+
 %package -n kernel%{_alt_kernel}-scsi-hpvsa
 Summary:	Linux driver for hpvsa
 Summary(pl.UTF-8):	Sterownik dla Linuksa do hpvsa
@@ -61,23 +89,145 @@ Ten pakiet zawiera moduł jądra Linuksa.
 %setup -qc
 mv recipe-*/* .
 
+# kernel itself
+ar xf %{SOURCE1}
+tar xf data.tar.bz2
+
+# hardlink, and pld doesn't use that dir
+rm -r lib/modules/%{_kernel_ver}/initrd
+
 %install
 rm -rf $RPM_BUILD_ROOT
-%if %{with kernel}
-%install_kernel_modules -m hpvsa -d kernel/scsi
-%endif
+install -d $RPM_BUILD_ROOT{/boot,/lib/{modules,firmware}}
+
+# copy base kernel
+cp -a boot/* $RPM_BUILD_ROOT/boot
+cp -a lib/modules/* $RPM_BUILD_ROOT/lib/modules
+cp -a lib/firmware/* $RPM_BUILD_ROOT/lib/firmware
+touch $RPM_BUILD_ROOT%{initrd_dir}/initrd-%{_kernel_ver}.gz
+touch $RPM_BUILD_ROOT%{initrd_dir}/initramfs-%{_kernel_ver}.img
+
+# ghosted depmod files
+for a in \
+	dep{,.bin} \
+	alias{,.bin} \
+	devname \
+	softdep \
+	symbols{,.bin} \
+	builtin.bin \
+; do
+	> $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/modules.$a
+done
+
+install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/kernel/scsi
+cp -p hpvsa.ko $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/kernel/scsi
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+%post	-n kernel%{_alt_kernel}
+[ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
+if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
+%ifarch ia64
+	mv -f /boot/efi/vmlinuz{,.old} 2> /dev/null
+	ln -sf vmlinuz-%{_kernel_ver} /boot/efi/vmlinuz
+%if 0%{?alt_kernel:1}
+	mv -f /boot/efi/vmlinuz%{_alt_kernel}{,.old} 2> /dev/null
+	ln -sf vmlinuz-%{_kernel_ver} /boot/efi/vmlinuz%{_alt_kernel}
+%endif
+%endif
+	mv -f /boot/vmlinuz{,.old} 2> /dev/null
+	mv -f /boot/System.map{,.old} 2> /dev/null
+	ln -sf vmlinuz-%{_kernel_ver} /boot/vmlinuz
+	ln -sf System.map-%{_kernel_ver} /boot/System.map
+%if 0%{?alt_kernel:1}
+	mv -f /boot/vmlinuz%{_alt_kernel}{,.old} 2> /dev/null
+	mv -f /boot/System%{_alt_kernel}.map{,.old} 2> /dev/null
+	ln -sf vmlinuz-%{_kernel_ver} /boot/vmlinuz%{_alt_kernel}
+	ln -sf System.map-%{_kernel_ver} /boot/System.map%{_alt_kernel}
+%endif
+fi
+
+%depmod %{_kernel_ver}
+
+%posttrans	-n kernel%{_alt_kernel}
+# use posttrans to generate initrd after all dependant module packages (-drm, etc) are installed
+[ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
+initrd_file=""
+if [[ "$USE_GENINITRD" != [Nn][Oo] ]]; then
+	/sbin/geninitrd -f --initrdfs=initramfs %{initrd_dir}/initrd-%{_kernel_ver}.gz %{_kernel_ver} || :
+	initrd_file="initrd-%{_kernel_ver}.gz"
+fi
+
+# if dracut is present then generate full-featured initramfs
+if [[ "$USE_DRACUT" != [Nn][Oo] ]] && [ -x /sbin/dracut ]; then
+	/sbin/dracut --force --quiet /boot/initramfs-%{_kernel_ver}.img %{_kernel_ver}
+	[ -n "$initrd_file" ] || initrd_file="initramfs-%{_kernel_ver}.img"
+fi
+
+if [[ "$CREATE_SYMLINKS" != [Nn][Oo] ]]; then
+	mv -f %{initrd_dir}/initrd{,.old} 2> /dev/null
+	if [ -n "$initrd_file" ] ; then
+		ln -sf "$initrd_file" %{initrd_dir}/initrd
+	fi
+%if 0%{?alt_kernel:1}
+	mv -f %{initrd_dir}/initrd%{_alt_kernel}{,.old} 2> /dev/null
+	if [ -n "$initrd_file" ] ; then
+		ln -sf "$initrd_file" %{initrd_dir}/initrd%{_alt_kernel}
+	fi
+%endif
+fi
+
+# update boot loaders when old package files are gone from filesystem
+if [ -x /sbin/update-grub -a -f /etc/sysconfig/grub ]; then
+	if [ "$(. /etc/sysconfig/grub; echo ${UPDATE_GRUB:-no})" = "yes" ]; then
+		/sbin/update-grub >/dev/null
+	fi
+fi
+if [ -x /sbin/new-kernel-pkg ]; then
+	/sbin/new-kernel-pkg --initrdfile=%{initrd_dir}/initrd-%{_kernel_ver}.gz --install %{_kernel_ver} --banner "PLD Linux (%{pld_release})%{?alt_kernel: / %{alt_kernel}}"
+fi
+if [ -x /sbin/rc-boot ]; then
+	/sbin/rc-boot 1>&2 || :
+fi
+if [ -x /sbin/efi-boot-update ]; then
+	/sbin/efi-boot-update --auto || :
+fi
+
 %post	-n kernel%{_alt_kernel}-scsi-hpvsa
 %depmod %{_kernel_ver}
 
 %postun	-n kernel%{_alt_kernel}-scsi-hpvsa
 %depmod %{_kernel_ver}
 
-%if %{with kernel}
+%files -n kernel%{_alt_kernel}
+%defattr(644,root,root,755)
+/boot/System.map-%{_kernel_ver}
+/boot/abi-%{_kernel_ver}
+/boot/config-%{_kernel_ver}
+/boot/vmlinuz-%{_kernel_ver}
+%ghost %{initrd_dir}/initrd-%{_kernel_ver}.gz
+%ghost %{initrd_dir}/initramfs-%{_kernel_ver}.img
+
+/lib/firmware/%{_kernel_ver}
+%dir /lib/modules/%{_kernel_ver}
+/lib/modules/%{_kernel_ver}/kernel
+%exclude /lib/modules/%{_kernel_ver}/kernel/scsi/*.ko*
+
+/lib/modules/%{_kernel_ver}/modules.builtin
+/lib/modules/%{_kernel_ver}/modules.order
+
+# rest modules.* are ghost (regenerated by post depmod -a invocation)
+%ghost /lib/modules/%{_kernel_ver}/modules.alias
+%ghost /lib/modules/%{_kernel_ver}/modules.alias.bin
+%ghost /lib/modules/%{_kernel_ver}/modules.builtin.bin
+%ghost /lib/modules/%{_kernel_ver}/modules.dep
+%ghost /lib/modules/%{_kernel_ver}/modules.dep.bin
+%ghost /lib/modules/%{_kernel_ver}/modules.devname
+%ghost /lib/modules/%{_kernel_ver}/modules.softdep
+%ghost /lib/modules/%{_kernel_ver}/modules.symbols
+%ghost /lib/modules/%{_kernel_ver}/modules.symbols.bin
+
 %files -n kernel%{_alt_kernel}-scsi-hpvsa
 %defattr(644,root,root,755)
 /lib/modules/%{_kernel_ver}/kernel/scsi/*.ko*
-%endif
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/hpvsa.git/commitdiff/a762b62bf3cccb8d6447b96d92a6c80c7763fca4



More information about the pld-cvs-commit mailing list