Linux Audio

Check our new training course

Loading...
v3.1
  1#!/bin/sh
  2#
  3#	Output a simple RPM spec file that uses no fancy features requiring
  4#	RPM v4. This is intended to work with any RPM distro.
  5#
  6#	The only gothic bit here is redefining install_post to avoid
  7#	stripping the symbols from files in the kernel which we want
  8#
  9#	Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net>
 10#
 11
 12# how we were called determines which rpms we build and how we build them
 13if [ "$1" = "prebuilt" ]; then
 14	PREBUILT=true
 
 15else
 16	PREBUILT=false
 17fi
 18
 19# starting to output the spec
 20if [ "`grep CONFIG_DRM=y .config | cut -f2 -d\=`" = "y" ]; then
 21	PROVIDES=kernel-drm
 22fi
 23
 24PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
 25__KERNELRELEASE=`echo $KERNELRELEASE | sed -e "s/-/_/g"`
 26
 27echo "Name: kernel"
 28echo "Summary: The Linux Kernel"
 29echo "Version: $__KERNELRELEASE"
 30# we need to determine the NEXT version number so that uname and
 31# rpm -q will agree
 32echo "Release: `. $srctree/scripts/mkversion`"
 33echo "License: GPL"
 34echo "Group: System Environment/Kernel"
 35echo "Vendor: The Linux Community"
 36echo "URL: http://www.kernel.org"
 37
 38if ! $PREBUILT; then
 39echo "Source: kernel-$__KERNELRELEASE.tar.gz"
 40fi
 41
 42echo "BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root"
 43echo "Provides: $PROVIDES"
 44echo "%define __spec_install_post /usr/lib/rpm/brp-compress || :"
 45echo "%define debug_package %{nil}"
 46echo ""
 47echo "%description"
 48echo "The Linux Kernel, the operating system core itself"
 49echo ""
 50echo "%package headers"
 51echo "Summary: Header files for the Linux kernel for use by glibc"
 52echo "Group: Development/System"
 53echo "Obsoletes: kernel-headers"
 54echo "Provides: kernel-headers = %{version}"
 55echo "%description headers"
 56echo "Kernel-headers includes the C header files that specify the interface"
 57echo "between the Linux kernel and userspace libraries and programs.  The"
 58echo "header files define structures and constants that are needed for"
 59echo "building most standard programs and are also needed for rebuilding the"
 60echo "glibc package."
 61echo ""
 62
 63if ! $PREBUILT; then
 64echo "%prep"
 65echo "%setup -q"
 66echo ""
 67fi
 68
 69echo "%build"
 70
 71if ! $PREBUILT; then
 72echo "make clean && make %{?_smp_mflags}"
 73echo ""
 74fi
 75
 76echo "%install"
 77echo "%ifarch ia64"
 78echo 'mkdir -p $RPM_BUILD_ROOT/boot/efi $RPM_BUILD_ROOT/lib/modules'
 79echo 'mkdir -p $RPM_BUILD_ROOT/lib/firmware'
 80echo "%else"
 81echo 'mkdir -p $RPM_BUILD_ROOT/boot $RPM_BUILD_ROOT/lib/modules'
 82echo 'mkdir -p $RPM_BUILD_ROOT/lib/firmware'
 83echo "%endif"
 84
 85echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{?_smp_mflags} KBUILD_SRC= modules_install'
 86echo "%ifarch ia64"
 87echo 'cp $KBUILD_IMAGE $RPM_BUILD_ROOT'"/boot/efi/vmlinuz-$KERNELRELEASE"
 88echo 'ln -s '"efi/vmlinuz-$KERNELRELEASE" '$RPM_BUILD_ROOT'"/boot/"
 89echo "%else"
 90echo "%ifarch ppc64"
 91echo "cp vmlinux arch/powerpc/boot"
 92echo "cp arch/powerpc/boot/"'$KBUILD_IMAGE $RPM_BUILD_ROOT'"/boot/vmlinuz-$KERNELRELEASE"
 93echo "%else"
 94echo 'cp $KBUILD_IMAGE $RPM_BUILD_ROOT'"/boot/vmlinuz-$KERNELRELEASE"
 95echo "%endif"
 96echo "%endif"
 97
 98echo 'make %{?_smp_mflags} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install'
 99echo 'cp System.map $RPM_BUILD_ROOT'"/boot/System.map-$KERNELRELEASE"
100
101echo 'cp .config $RPM_BUILD_ROOT'"/boot/config-$KERNELRELEASE"
102
103echo "%ifnarch ppc64"
104echo 'cp vmlinux vmlinux.orig'
105echo 'bzip2 -9 vmlinux'
106echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2"
107echo 'mv vmlinux.orig vmlinux'
108echo "%endif"
109
110echo ""
111echo "%clean"
112echo 'rm -rf $RPM_BUILD_ROOT'
113echo ""
114echo "%files"
115echo '%defattr (-, root, root)'
116echo "%dir /lib/modules"
117echo "/lib/modules/$KERNELRELEASE"
118echo "/lib/firmware"
119echo "/boot/*"
120echo ""
121echo "%files headers"
122echo '%defattr (-, root, root)'
123echo "/usr/include"
124echo ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v5.9
  1#!/bin/sh
  2#
  3#	Output a simple RPM spec file.
  4#	This version assumes a minimum of RPM 4.0.3.
  5#
  6#	The only gothic bit here is redefining install_post to avoid
  7#	stripping the symbols from files in the kernel which we want
  8#
  9#	Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net>
 10#
 11
 12# how we were called determines which rpms we build and how we build them
 13if [ "$1" = prebuilt ]; then
 14	S=DEL
 15	MAKE="$MAKE -f $srctree/Makefile"
 16else
 17	S=
 18fi
 19
 20if grep -q CONFIG_MODULES=y .config; then
 21	M=
 22else
 23	M=DEL
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 24fi
 25
 26if grep -q CONFIG_DRM=y .config; then
 27	PROVIDES=kernel-drm
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 28fi
 29
 30PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
 31__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
 32EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
 33--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
 34--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
 
 35
 36# We can label the here-doc lines for conditional output to the spec file
 37#
 38# Labels:
 39#  $S: this line is enabled only when building source package
 40#  $M: this line is enabled only when CONFIG_MODULES is enabled
 41sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
 42	Name: kernel
 43	Summary: The Linux Kernel
 44	Version: $__KERNELRELEASE
 45	Release: $(cat .version 2>/dev/null || echo 1)
 46	License: GPL
 47	Group: System Environment/Kernel
 48	Vendor: The Linux Community
 49	URL: https://www.kernel.org
 50$S	Source: kernel-$__KERNELRELEASE.tar.gz
 51	Provides: $PROVIDES
 52	%define __spec_install_post /usr/lib/rpm/brp-compress || :
 53	%define debug_package %{nil}
 54
 55	%description
 56	The Linux Kernel, the operating system core itself
 57
 58	%package headers
 59	Summary: Header files for the Linux kernel for use by glibc
 60	Group: Development/System
 61	Obsoletes: kernel-headers
 62	Provides: kernel-headers = %{version}
 63	%description headers
 64	Kernel-headers includes the C header files that specify the interface
 65	between the Linux kernel and userspace libraries and programs.  The
 66	header files define structures and constants that are needed for
 67	building most standard programs and are also needed for rebuilding the
 68	glibc package.
 69
 70$S$M	%package devel
 71$S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
 72$S$M	Group: System Environment/Kernel
 73$S$M	AutoReqProv: no
 74$S$M	%description -n kernel-devel
 75$S$M	This package provides kernel headers and makefiles sufficient to build modules
 76$S$M	against the $__KERNELRELEASE kernel package.
 77$S$M
 78$S	%prep
 79$S	%setup -q
 80$S
 81$S	%build
 82$S	$MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
 83$S
 84	%install
 85	mkdir -p %{buildroot}/boot
 86	%ifarch ia64
 87	mkdir -p %{buildroot}/boot/efi
 88	cp \$($MAKE image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
 89	ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
 90	%else
 91	cp \$($MAKE image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
 92	%endif
 93$M	$MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
 94	$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
 95	cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
 96	cp .config %{buildroot}/boot/config-$KERNELRELEASE
 97	bzip2 -9 --keep vmlinux
 98	mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2
 99$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
100$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
101$S$M	mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
102$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
103$S$M	cd %{buildroot}/lib/modules/$KERNELRELEASE
104$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
105$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
106
107	%clean
108	rm -rf %{buildroot}
109
110	%post
111	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
112	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
113	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
114	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
115	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
116	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
117	fi
118
119	%preun
120	if [ -x /sbin/new-kernel-pkg ]; then
121	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
122	elif [ -x /usr/bin/kernel-install ]; then
123	kernel-install remove $KERNELRELEASE
124	fi
125
126	%postun
127	if [ -x /sbin/update-bootloader ]; then
128	/sbin/update-bootloader --remove $KERNELRELEASE
129	fi
130
131	%files
132	%defattr (-, root, root)
133$M	/lib/modules/$KERNELRELEASE
134$M	%exclude /lib/modules/$KERNELRELEASE/build
135$M	%exclude /lib/modules/$KERNELRELEASE/source
136	/boot/*
137
138	%files headers
139	%defattr (-, root, root)
140	/usr/include
141$S$M
142$S$M	%files devel
143$S$M	%defattr (-, root, root)
144$S$M	/usr/src/kernels/$KERNELRELEASE
145$S$M	/lib/modules/$KERNELRELEASE/build
146$S$M	/lib/modules/$KERNELRELEASE/source
147EOF