kernel.spec 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # _arch is undefined if /usr/lib/rpm/platform/*/macros was not included.
  2. %{!?_arch: %define _arch dummy}
  3. %{!?make: %define make make}
  4. %define makeflags %{?_smp_mflags} ARCH=%{ARCH}
  5. %define __spec_install_post /usr/lib/rpm/brp-compress || :
  6. %define debug_package %{nil}
  7. Name: kernel
  8. Summary: The Linux Kernel
  9. Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
  10. Release: %{pkg_release}
  11. License: GPL
  12. Group: System Environment/Kernel
  13. Vendor: The Linux Community
  14. URL: https://www.kernel.org
  15. Source0: linux.tar.gz
  16. Source1: config
  17. Source2: diff.patch
  18. Provides: kernel-%{KERNELRELEASE}
  19. BuildRequires: bc binutils bison dwarves
  20. BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
  21. BuildRequires: gcc make openssl openssl-devel perl python3 rsync
  22. %description
  23. The Linux Kernel, the operating system core itself
  24. %package headers
  25. Summary: Header files for the Linux kernel for use by glibc
  26. Group: Development/System
  27. Obsoletes: kernel-headers < %{version}
  28. Provides: kernel-headers = %{version}
  29. %description headers
  30. Kernel-headers includes the C header files that specify the interface
  31. between the Linux kernel and userspace libraries and programs. The
  32. header files define structures and constants that are needed for
  33. building most standard programs and are also needed for rebuilding the
  34. glibc package.
  35. %if %{with_devel}
  36. %package devel
  37. Summary: Development package for building kernel modules to match the %{version} kernel
  38. Group: System Environment/Kernel
  39. AutoReqProv: no
  40. %description -n kernel-devel
  41. This package provides kernel headers and makefiles sufficient to build modules
  42. against the %{version} kernel package.
  43. %endif
  44. %prep
  45. %setup -q -n linux
  46. cp %{SOURCE1} .config
  47. patch -p1 < %{SOURCE2}
  48. %build
  49. %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
  50. %install
  51. mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE}
  52. cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz
  53. # DEPMOD=true makes depmod no-op. We do not package depmod-generated files.
  54. %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} DEPMOD=true modules_install
  55. %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
  56. cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE}
  57. cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config
  58. if %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='test -d ${srctree}/arch/${SRCARCH}/boot/dts' 2>/dev/null; then
  59. %{make} %{makeflags} INSTALL_DTBS_PATH=%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb dtbs_install
  60. fi
  61. ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
  62. %if %{with_devel}
  63. %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
  64. %endif
  65. {
  66. echo "/lib/modules/%{KERNELRELEASE}"
  67. for x in alias alias.bin builtin.alias.bin builtin.bin dep dep.bin \
  68. devname softdep symbols symbols.bin weakdep; do
  69. echo "%ghost /lib/modules/%{KERNELRELEASE}/modules.${x}"
  70. done
  71. for x in System.map config vmlinuz; do
  72. echo "%ghost /boot/${x}-%{KERNELRELEASE}"
  73. done
  74. if [ -d "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" ];then
  75. find "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" -printf "%%%ghost /boot/dtb-%{KERNELRELEASE}/%%P\n"
  76. fi
  77. echo "%exclude /lib/modules/%{KERNELRELEASE}/build"
  78. } > %{buildroot}/kernel.list
  79. %clean
  80. rm -rf %{buildroot}
  81. %post
  82. if [ -x /usr/bin/kernel-install ]; then
  83. /usr/bin/kernel-install add %{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}/vmlinuz
  84. fi
  85. for file in vmlinuz System.map config; do
  86. if ! cmp --silent "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"; then
  87. cp "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"
  88. fi
  89. done
  90. if [ -d "/lib/modules/%{KERNELRELEASE}/dtb" ] && \
  91. ! diff -rq "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}" >/dev/null 2>&1; then
  92. rm -rf "/boot/dtb-%{KERNELRELEASE}"
  93. cp -r "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}"
  94. fi
  95. if [ ! -e "/lib/modules/%{KERNELRELEASE}/modules.dep" ]; then
  96. /usr/sbin/depmod %{KERNELRELEASE}
  97. fi
  98. %preun
  99. if [ -x /usr/bin/kernel-install ]; then
  100. kernel-install remove %{KERNELRELEASE}
  101. fi
  102. %files -f %{buildroot}/kernel.list
  103. %defattr (-, root, root)
  104. %exclude /kernel.list
  105. %files headers
  106. %defattr (-, root, root)
  107. /usr/include
  108. %if %{with_devel}
  109. %files devel
  110. %defattr (-, root, root)
  111. /usr/src/kernels/%{KERNELRELEASE}
  112. /lib/modules/%{KERNELRELEASE}/build
  113. %endif