xref: /linux/scripts/package/mkspec (revision 8c5d4b648b46b3f5b721b9aff021c9f639d42c35)
11da177e4SLinus Torvalds#!/bin/sh
21da177e4SLinus Torvalds#
32174d292SMike Marciniszyn#	Output a simple RPM spec file.
42174d292SMike Marciniszyn#	This version assumes a minimum of RPM 4.0.3.
51da177e4SLinus Torvalds#
61da177e4SLinus Torvalds#	The only gothic bit here is redefining install_post to avoid
71da177e4SLinus Torvalds#	stripping the symbols from files in the kernel which we want
81da177e4SLinus Torvalds#
91da177e4SLinus Torvalds#	Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net>
101da177e4SLinus Torvalds#
111da177e4SLinus Torvalds
121da177e4SLinus Torvalds# how we were called determines which rpms we build and how we build them
135289c322SMasahiro Yamadaif [ "$1" = prebuilt ]; then
14*8c5d4b64SMasahiro Yamada	S=DEL
151da177e4SLinus Torvaldselse
16*8c5d4b64SMasahiro Yamada	S=
171da177e4SLinus Torvaldsfi
181da177e4SLinus Torvalds
195289c322SMasahiro Yamadaif grep -q CONFIG_DRM=y .config; then
201da177e4SLinus Torvalds	PROVIDES=kernel-drm
211da177e4SLinus Torvaldsfi
221da177e4SLinus Torvalds
231da177e4SLinus TorvaldsPROVIDES="$PROVIDES kernel-$KERNELRELEASE"
245289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
255289c322SMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
265289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
275289c322SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d"
281da177e4SLinus Torvalds
29*8c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
30*8c5d4b64SMasahiro Yamada#
31*8c5d4b64SMasahiro Yamada# Labels:
32*8c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
33*8c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
34*8c5d4b64SMasahiro Yamada	Name: kernel
35*8c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
36*8c5d4b64SMasahiro Yamada	Version: $__KERNELRELEASE
37*8c5d4b64SMasahiro Yamada	Release: $(cat .version 2>/dev/null || echo 1)
38*8c5d4b64SMasahiro Yamada	License: GPL
39*8c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
40*8c5d4b64SMasahiro Yamada	Vendor: The Linux Community
41*8c5d4b64SMasahiro Yamada	URL: http://www.kernel.org
42*8c5d4b64SMasahiro Yamada$S	Source: kernel-$__KERNELRELEASE.tar.gz
43*8c5d4b64SMasahiro Yamada	Provides: $PROVIDES
44*8c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
45*8c5d4b64SMasahiro Yamada	%define debug_package %{nil}
461da177e4SLinus Torvalds
47*8c5d4b64SMasahiro Yamada	%description
48*8c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
49*8c5d4b64SMasahiro Yamada
50*8c5d4b64SMasahiro Yamada	%package headers
51*8c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
52*8c5d4b64SMasahiro Yamada	Group: Development/System
53*8c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
54*8c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
55*8c5d4b64SMasahiro Yamada	%description headers
56*8c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
57*8c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
58*8c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
59*8c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
60*8c5d4b64SMasahiro Yamada	glibc package.
61*8c5d4b64SMasahiro Yamada
62*8c5d4b64SMasahiro Yamada$S	%package devel
63*8c5d4b64SMasahiro Yamada$S	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
64*8c5d4b64SMasahiro Yamada$S	Group: System Environment/Kernel
65*8c5d4b64SMasahiro Yamada$S	AutoReqProv: no
66*8c5d4b64SMasahiro Yamada$S	%description -n kernel-devel
67*8c5d4b64SMasahiro Yamada$S	This package provides kernel headers and makefiles sufficient to build modules
68*8c5d4b64SMasahiro Yamada$S	against the $__KERNELRELEASE kernel package.
69*8c5d4b64SMasahiro Yamada$S
70*8c5d4b64SMasahiro Yamada$S	%prep
71*8c5d4b64SMasahiro Yamada$S	%setup -q
72*8c5d4b64SMasahiro Yamada$S
73*8c5d4b64SMasahiro Yamada$S	%build
74*8c5d4b64SMasahiro Yamada$S	make %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
75*8c5d4b64SMasahiro Yamada$S
76*8c5d4b64SMasahiro Yamada	%install
77*8c5d4b64SMasahiro Yamada	mkdir -p \$RPM_BUILD_ROOT/boot
78*8c5d4b64SMasahiro Yamada	%ifarch ia64
79*8c5d4b64SMasahiro Yamada	mkdir -p \$RPM_BUILD_ROOT/boot/efi
80*8c5d4b64SMasahiro Yamada	cp \$(make image_name) \$RPM_BUILD_ROOT/boot/efi/vmlinuz-$KERNELRELEASE
81*8c5d4b64SMasahiro Yamada	ln -s efi/vmlinuz-$KERNELRELEASE \$RPM_BUILD_ROOT/boot/
82*8c5d4b64SMasahiro Yamada	%else
83*8c5d4b64SMasahiro Yamada	cp \$(make image_name) \$RPM_BUILD_ROOT/boot/vmlinuz-$KERNELRELEASE
84*8c5d4b64SMasahiro Yamada	%endif
85*8c5d4b64SMasahiro Yamada	make %{?_smp_mflags} INSTALL_MOD_PATH=\$RPM_BUILD_ROOT KBUILD_SRC= modules_install
86*8c5d4b64SMasahiro Yamada	make %{?_smp_mflags} INSTALL_HDR_PATH=\$RPM_BUILD_ROOT/usr KBUILD_SRC= headers_install
87*8c5d4b64SMasahiro Yamada	cp System.map \$RPM_BUILD_ROOT/boot/System.map-$KERNELRELEASE
88*8c5d4b64SMasahiro Yamada	cp .config \$RPM_BUILD_ROOT/boot/config-$KERNELRELEASE
89*8c5d4b64SMasahiro Yamada	bzip2 -9 --keep vmlinux
90*8c5d4b64SMasahiro Yamada	mv vmlinux.bz2 \$RPM_BUILD_ROOT/boot/vmlinux-$KERNELRELEASE.bz2
91*8c5d4b64SMasahiro Yamada$S	rm -f \$RPM_BUILD_ROOT/lib/modules/$KERNELRELEASE/build
92*8c5d4b64SMasahiro Yamada$S	rm -f \$RPM_BUILD_ROOT/lib/modules/$KERNELRELEASE/source
93*8c5d4b64SMasahiro Yamada$S	mkdir -p \$RPM_BUILD_ROOT/usr/src/kernels/$KERNELRELEASE
94*8c5d4b64SMasahiro Yamada$S	tar cf - . $EXCLUDES | tar xf - -C \$RPM_BUILD_ROOT/usr/src/kernels/$KERNELRELEASE
95*8c5d4b64SMasahiro Yamada$S	cd \$RPM_BUILD_ROOT/lib/modules/$KERNELRELEASE
96*8c5d4b64SMasahiro Yamada$S	ln -sf /usr/src/kernels/$KERNELRELEASE build
97*8c5d4b64SMasahiro Yamada$S	ln -sf /usr/src/kernels/$KERNELRELEASE source
98*8c5d4b64SMasahiro Yamada
99*8c5d4b64SMasahiro Yamada	%clean
100*8c5d4b64SMasahiro Yamada	rm -rf \$RPM_BUILD_ROOT
101*8c5d4b64SMasahiro Yamada
102*8c5d4b64SMasahiro Yamada	%post
103*8c5d4b64SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
104*8c5d4b64SMasahiro Yamada	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
105*8c5d4b64SMasahiro Yamada	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
106*8c5d4b64SMasahiro Yamada	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
107*8c5d4b64SMasahiro Yamada	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
108*8c5d4b64SMasahiro Yamada	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1091da177e4SLinus Torvalds	fi
1101da177e4SLinus Torvalds
111*8c5d4b64SMasahiro Yamada	%preun
112*8c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
113*8c5d4b64SMasahiro Yamada	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
1141da177e4SLinus Torvalds	fi
1151da177e4SLinus Torvalds
116*8c5d4b64SMasahiro Yamada	%postun
117*8c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
118*8c5d4b64SMasahiro Yamada	/sbin/update-bootloader --remove $KERNELRELEASE
119b9a54424SJérôme Glisse	fi
1202174d292SMike Marciniszyn
121*8c5d4b64SMasahiro Yamada	%files
122*8c5d4b64SMasahiro Yamada	%defattr (-, root, root)
123*8c5d4b64SMasahiro Yamada	/lib/modules/$KERNELRELEASE
124*8c5d4b64SMasahiro Yamada	%exclude /lib/modules/$KERNELRELEASE/build
125*8c5d4b64SMasahiro Yamada	%exclude /lib/modules/$KERNELRELEASE/source
126*8c5d4b64SMasahiro Yamada	/boot/*
127*8c5d4b64SMasahiro Yamada
128*8c5d4b64SMasahiro Yamada	%files headers
129*8c5d4b64SMasahiro Yamada	%defattr (-, root, root)
130*8c5d4b64SMasahiro Yamada	/usr/include
131*8c5d4b64SMasahiro Yamada$S
132*8c5d4b64SMasahiro Yamada$S	%files devel
133*8c5d4b64SMasahiro Yamada$S	%defattr (-, root, root)
134*8c5d4b64SMasahiro Yamada$S	/usr/src/kernels/$KERNELRELEASE
135*8c5d4b64SMasahiro Yamada$S	/lib/modules/$KERNELRELEASE/build
136*8c5d4b64SMasahiro Yamada$S	/lib/modules/$KERNELRELEASE/source
137*8c5d4b64SMasahiro YamadaEOF
138