1 #!/bin/sh 1 #!/bin/sh 2 # 2 # 3 # Output a simple RPM spec file. 3 # Output a simple RPM spec file. 4 # This version assumes a minimum of RPM 4 # This version assumes a minimum of RPM 4.13 5 # 5 # 6 # The only gothic bit here is redefining 6 # The only gothic bit here is redefining install_post to avoid 7 # stripping the symbols from files in th 7 # stripping the symbols from files in the kernel which we want 8 # 8 # 9 # Patched for non-x86 by Opencon (L) 200< 9 # Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net> 10 # 10 # 11 11 12 set -eu !! 12 # how we were called determines which rpms we build and how we build them 13 !! 13 if [ "$1" = prebuilt ]; then 14 output=$1 !! 14 S=DEL 15 !! 15 MAKE="$MAKE -f $srctree/Makefile" 16 mkdir -p "$(dirname "${output}")" << 17 << 18 exec >"${output}" << 19 << 20 if grep -q CONFIG_MODULES=y include/config/aut << 21 echo '%define with_devel %{?_without_devel: 0} << 22 else 16 else 23 echo '%define with_devel 0' !! 17 S= 24 fi << 25 18 26 cat<<EOF !! 19 mkdir -p rpmbuild/SOURCES 27 %define ARCH ${ARCH} !! 20 cp linux.tar.gz rpmbuild/SOURCES 28 %define KERNELRELEASE ${KERNELRELEASE} !! 21 cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config 29 %define pkg_release $("${srctree}/scripts/buil !! 22 "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch 30 EOF << 31 << 32 cat "${srctree}/scripts/package/kernel.spec" << 33 << 34 # collect the user's name and email address fo << 35 if [ "$(command -v git)" ]; then << 36 name=$(git config user.name) || true << 37 email=$(git config user.email) || true << 38 fi 23 fi 39 24 40 if [ ! "${name:+set}" ]; then !! 25 if grep -q CONFIG_MODULES=y include/config/auto.conf; then 41 name=${KBUILD_BUILD_USER:-$(id -nu)} !! 26 M= >> 27 else >> 28 M=DEL 42 fi 29 fi 43 30 44 if [ ! "${email:+set}" ]; then !! 31 if grep -q CONFIG_DRM=y include/config/auto.conf; then 45 buildhost=${KBUILD_BUILD_HOST:-$(hostn !! 32 PROVIDES=kernel-drm 46 builduser=${KBUILD_BUILD_USER:-$(id -n << 47 email="${builduser}@${buildhost}" << 48 fi 33 fi 49 34 50 cat << EOF !! 35 PROVIDES="$PROVIDES kernel-$KERNELRELEASE" 51 !! 36 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 52 %changelog !! 37 EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 53 * $(LC_ALL=C date +'%a %b %d %Y') ${name} <${e !! 38 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 54 - Custom built Linux kernel. !! 39 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" >> 40 >> 41 # We can label the here-doc lines for conditional output to the spec file >> 42 # >> 43 # Labels: >> 44 # $S: this line is enabled only when building source package >> 45 # $M: this line is enabled only when CONFIG_MODULES is enabled >> 46 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF >> 47 Name: kernel >> 48 Summary: The Linux Kernel >> 49 Version: $__KERNELRELEASE >> 50 Release: $(cat .version 2>/dev/null || echo 1) >> 51 License: GPL >> 52 Group: System Environment/Kernel >> 53 Vendor: The Linux Community >> 54 URL: https://www.kernel.org >> 55 $S Source0: linux.tar.gz >> 56 $S Source1: config >> 57 $S Source2: diff.patch >> 58 Provides: $PROVIDES >> 59 $S BuildRequires: bc binutils bison dwarves >> 60 $S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex >> 61 $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync >> 62 >> 63 # $UTS_MACHINE as a fallback of _arch in case >> 64 # /usr/lib/rpm/platform/*/macros was not included. >> 65 %define _arch %{?_arch:$UTS_MACHINE} >> 66 %define __spec_install_post /usr/lib/rpm/brp-compress || : >> 67 %define debug_package %{nil} >> 68 >> 69 %description >> 70 The Linux Kernel, the operating system core itself >> 71 >> 72 %package headers >> 73 Summary: Header files for the Linux kernel for use by glibc >> 74 Group: Development/System >> 75 Obsoletes: kernel-headers >> 76 Provides: kernel-headers = %{version} >> 77 %description headers >> 78 Kernel-headers includes the C header files that specify the interface >> 79 between the Linux kernel and userspace libraries and programs. The >> 80 header files define structures and constants that are needed for >> 81 building most standard programs and are also needed for rebuilding the >> 82 glibc package. >> 83 >> 84 $S$M %package devel >> 85 $S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel >> 86 $S$M Group: System Environment/Kernel >> 87 $S$M AutoReqProv: no >> 88 $S$M %description -n kernel-devel >> 89 $S$M This package provides kernel headers and makefiles sufficient to build modules >> 90 $S$M against the $__KERNELRELEASE kernel package. >> 91 $S$M >> 92 $S %prep >> 93 $S %setup -q -n linux >> 94 $S cp %{SOURCE1} .config >> 95 $S patch -p1 < %{SOURCE2} >> 96 $S >> 97 $S %build >> 98 $S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release} >> 99 $S >> 100 %install >> 101 mkdir -p %{buildroot}/boot >> 102 %ifarch ia64 >> 103 mkdir -p %{buildroot}/boot/efi >> 104 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE >> 105 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ >> 106 %else >> 107 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE >> 108 %endif >> 109 $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install >> 110 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install >> 111 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE >> 112 cp .config %{buildroot}/boot/config-$KERNELRELEASE >> 113 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build >> 114 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source >> 115 $S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE >> 116 $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE >> 117 $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE >> 118 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build >> 119 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source >> 120 >> 121 %clean >> 122 rm -rf %{buildroot} >> 123 >> 124 %post >> 125 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then >> 126 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm >> 127 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm >> 128 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE >> 129 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm >> 130 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm >> 131 fi >> 132 >> 133 %preun >> 134 if [ -x /sbin/new-kernel-pkg ]; then >> 135 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img >> 136 elif [ -x /usr/bin/kernel-install ]; then >> 137 kernel-install remove $KERNELRELEASE >> 138 fi >> 139 >> 140 %postun >> 141 if [ -x /sbin/update-bootloader ]; then >> 142 /sbin/update-bootloader --remove $KERNELRELEASE >> 143 fi >> 144 >> 145 %files >> 146 %defattr (-, root, root) >> 147 $M /lib/modules/$KERNELRELEASE >> 148 $M %exclude /lib/modules/$KERNELRELEASE/build >> 149 $M %exclude /lib/modules/$KERNELRELEASE/source >> 150 /boot/* >> 151 >> 152 %files headers >> 153 %defattr (-, root, root) >> 154 /usr/include >> 155 $S$M >> 156 $S$M %files devel >> 157 $S$M %defattr (-, root, root) >> 158 $S$M /usr/src/kernels/$KERNELRELEASE >> 159 $S$M /lib/modules/$KERNELRELEASE/build >> 160 $S$M /lib/modules/$KERNELRELEASE/source 55 EOF 161 EOF
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.