xref: /openbmc/linux/scripts/package/mkspec (revision 0b7f12f5)
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
148c5d4b64SMasahiro Yamada	S=DEL
151da177e4SLinus Torvaldselse
168c5d4b64SMasahiro Yamada	S=
171da177e4SLinus Torvaldsfi
181da177e4SLinus Torvalds
190b7f12f5SMasahiro Yamadaif grep -q CONFIG_MODULES=y .config; then
200b7f12f5SMasahiro Yamada	M=
210b7f12f5SMasahiro Yamadaelse
220b7f12f5SMasahiro Yamada	M=DEL
230b7f12f5SMasahiro Yamadafi
240b7f12f5SMasahiro Yamada
255289c322SMasahiro Yamadaif grep -q CONFIG_DRM=y .config; then
261da177e4SLinus Torvalds	PROVIDES=kernel-drm
271da177e4SLinus Torvaldsfi
281da177e4SLinus Torvalds
291da177e4SLinus TorvaldsPROVIDES="$PROVIDES kernel-$KERNELRELEASE"
305289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
315289c322SMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
325289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
335289c322SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d"
341da177e4SLinus Torvalds
358c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
368c5d4b64SMasahiro Yamada#
378c5d4b64SMasahiro Yamada# Labels:
388c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
390b7f12f5SMasahiro Yamada#  $M: this line is enabled only when CONFIG_MODULES is enabled
408c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
418c5d4b64SMasahiro Yamada	Name: kernel
428c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
438c5d4b64SMasahiro Yamada	Version: $__KERNELRELEASE
448c5d4b64SMasahiro Yamada	Release: $(cat .version 2>/dev/null || echo 1)
458c5d4b64SMasahiro Yamada	License: GPL
468c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
478c5d4b64SMasahiro Yamada	Vendor: The Linux Community
488c5d4b64SMasahiro Yamada	URL: http://www.kernel.org
498c5d4b64SMasahiro Yamada$S	Source: kernel-$__KERNELRELEASE.tar.gz
508c5d4b64SMasahiro Yamada	Provides: $PROVIDES
518c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
528c5d4b64SMasahiro Yamada	%define debug_package %{nil}
531da177e4SLinus Torvalds
548c5d4b64SMasahiro Yamada	%description
558c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
568c5d4b64SMasahiro Yamada
578c5d4b64SMasahiro Yamada	%package headers
588c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
598c5d4b64SMasahiro Yamada	Group: Development/System
608c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
618c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
628c5d4b64SMasahiro Yamada	%description headers
638c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
648c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
658c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
668c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
678c5d4b64SMasahiro Yamada	glibc package.
688c5d4b64SMasahiro Yamada
690b7f12f5SMasahiro Yamada$S$M	%package devel
700b7f12f5SMasahiro Yamada$S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
710b7f12f5SMasahiro Yamada$S$M	Group: System Environment/Kernel
720b7f12f5SMasahiro Yamada$S$M	AutoReqProv: no
730b7f12f5SMasahiro Yamada$S$M	%description -n kernel-devel
740b7f12f5SMasahiro Yamada$S$M	This package provides kernel headers and makefiles sufficient to build modules
750b7f12f5SMasahiro Yamada$S$M	against the $__KERNELRELEASE kernel package.
760b7f12f5SMasahiro Yamada$S$M
778c5d4b64SMasahiro Yamada$S	%prep
788c5d4b64SMasahiro Yamada$S	%setup -q
798c5d4b64SMasahiro Yamada$S
808c5d4b64SMasahiro Yamada$S	%build
818c5d4b64SMasahiro Yamada$S	make %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
828c5d4b64SMasahiro Yamada$S
838c5d4b64SMasahiro Yamada	%install
848c5d4b64SMasahiro Yamada	mkdir -p \$RPM_BUILD_ROOT/boot
858c5d4b64SMasahiro Yamada	%ifarch ia64
868c5d4b64SMasahiro Yamada	mkdir -p \$RPM_BUILD_ROOT/boot/efi
878c5d4b64SMasahiro Yamada	cp \$(make image_name) \$RPM_BUILD_ROOT/boot/efi/vmlinuz-$KERNELRELEASE
888c5d4b64SMasahiro Yamada	ln -s efi/vmlinuz-$KERNELRELEASE \$RPM_BUILD_ROOT/boot/
898c5d4b64SMasahiro Yamada	%else
908c5d4b64SMasahiro Yamada	cp \$(make image_name) \$RPM_BUILD_ROOT/boot/vmlinuz-$KERNELRELEASE
918c5d4b64SMasahiro Yamada	%endif
920b7f12f5SMasahiro Yamada$M	make %{?_smp_mflags} INSTALL_MOD_PATH=\$RPM_BUILD_ROOT KBUILD_SRC= modules_install
938c5d4b64SMasahiro Yamada	make %{?_smp_mflags} INSTALL_HDR_PATH=\$RPM_BUILD_ROOT/usr KBUILD_SRC= headers_install
948c5d4b64SMasahiro Yamada	cp System.map \$RPM_BUILD_ROOT/boot/System.map-$KERNELRELEASE
958c5d4b64SMasahiro Yamada	cp .config \$RPM_BUILD_ROOT/boot/config-$KERNELRELEASE
968c5d4b64SMasahiro Yamada	bzip2 -9 --keep vmlinux
978c5d4b64SMasahiro Yamada	mv vmlinux.bz2 \$RPM_BUILD_ROOT/boot/vmlinux-$KERNELRELEASE.bz2
980b7f12f5SMasahiro Yamada$S$M	rm -f \$RPM_BUILD_ROOT/lib/modules/$KERNELRELEASE/build
990b7f12f5SMasahiro Yamada$S$M	rm -f \$RPM_BUILD_ROOT/lib/modules/$KERNELRELEASE/source
1000b7f12f5SMasahiro Yamada$S$M	mkdir -p \$RPM_BUILD_ROOT/usr/src/kernels/$KERNELRELEASE
1010b7f12f5SMasahiro Yamada$S$M	tar cf - . $EXCLUDES | tar xf - -C \$RPM_BUILD_ROOT/usr/src/kernels/$KERNELRELEASE
1020b7f12f5SMasahiro Yamada$S$M	cd \$RPM_BUILD_ROOT/lib/modules/$KERNELRELEASE
1030b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
1040b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
1058c5d4b64SMasahiro Yamada
1068c5d4b64SMasahiro Yamada	%clean
1078c5d4b64SMasahiro Yamada	rm -rf \$RPM_BUILD_ROOT
1088c5d4b64SMasahiro Yamada
1098c5d4b64SMasahiro Yamada	%post
1108c5d4b64SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
1118c5d4b64SMasahiro Yamada	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
1128c5d4b64SMasahiro Yamada	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
1138c5d4b64SMasahiro Yamada	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
1148c5d4b64SMasahiro Yamada	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1158c5d4b64SMasahiro Yamada	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1161da177e4SLinus Torvalds	fi
1171da177e4SLinus Torvalds
1188c5d4b64SMasahiro Yamada	%preun
1198c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
1208c5d4b64SMasahiro Yamada	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
1211da177e4SLinus Torvalds	fi
1221da177e4SLinus Torvalds
1238c5d4b64SMasahiro Yamada	%postun
1248c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
1258c5d4b64SMasahiro Yamada	/sbin/update-bootloader --remove $KERNELRELEASE
126b9a54424SJérôme Glisse	fi
1272174d292SMike Marciniszyn
1288c5d4b64SMasahiro Yamada	%files
1298c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1300b7f12f5SMasahiro Yamada$M	/lib/modules/$KERNELRELEASE
1310b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/build
1320b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/source
1338c5d4b64SMasahiro Yamada	/boot/*
1348c5d4b64SMasahiro Yamada
1358c5d4b64SMasahiro Yamada	%files headers
1368c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1378c5d4b64SMasahiro Yamada	/usr/include
1380b7f12f5SMasahiro Yamada$S$M
1390b7f12f5SMasahiro Yamada$S$M	%files devel
1400b7f12f5SMasahiro Yamada$S$M	%defattr (-, root, root)
1410b7f12f5SMasahiro Yamada$S$M	/usr/src/kernels/$KERNELRELEASE
1420b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/build
1430b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/source
1448c5d4b64SMasahiro YamadaEOF
145