Loading...
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 ""
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