For the history: 5.10.0-2.0.0.3 (released on 2020-11-06) should be 5.10.0-rc2.0.0.3 5.10.0-1.0.0.2 (released on 2020-10-31) should be 5.10.0-rc1.0.0.2 Signed-off-by: Xie XiuQi <xiexiuqi@huawei.com>
842 lines
27 KiB
RPMSpec
842 lines
27 KiB
RPMSpec
|
|
%define with_signmodules 1
|
|
%define with_kabichk 0
|
|
|
|
%define modsign_cmd %{SOURCE10}
|
|
|
|
%global Arch $(echo %{_host_cpu} | sed -e s/i.86/x86/ -e s/x86_64/x86/ -e s/aarch64.*/arm64/)
|
|
|
|
%global KernelVer %{version}-%{release}.%{_target_cpu}
|
|
|
|
%global upstream_version 5.10
|
|
%global upstream_sublevel 0
|
|
%global devel_release rc2
|
|
%global maintenance_release .0.0
|
|
%global pkg_release .3
|
|
|
|
%define with_debuginfo 1
|
|
%define with_source 1
|
|
|
|
%define with_python2 0
|
|
|
|
Name: kernel
|
|
Version: %{upstream_version}.%{upstream_sublevel}
|
|
Release: %{devel_release}%{?maintenance_release}%{?pkg_release}%{?extra_release}
|
|
Summary: Linux Kernel
|
|
License: GPLv2
|
|
URL: http://www.kernel.org/
|
|
Source0: kernel.tar.gz
|
|
Source10: sign-modules
|
|
Source11: x509.genkey
|
|
Source12: extra_certificates
|
|
|
|
%if 0%{?with_kabichk}
|
|
Source18: check-kabi
|
|
Source20: Module.kabi_aarch64
|
|
%endif
|
|
|
|
Source200: mkgrub-menu-aarch64.sh
|
|
|
|
Source2000: cpupower.service
|
|
Source2001: cpupower.config
|
|
|
|
%if 0%{?with_patch}
|
|
Source9000: apply-patches
|
|
Source9001: guards
|
|
Source9002: series.conf
|
|
Source9998: patches.tar.bz2
|
|
%endif
|
|
|
|
Patch0001: 0001-config-add-openeuler_defconfig.patch
|
|
Patch0002: 0001-x86-config-add-openeuler_defconfig.patch
|
|
|
|
#BuildRequires:
|
|
BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, tar
|
|
BuildRequires: bzip2, xz, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk
|
|
BuildRequires: libcap-devel, libcap-ng-devel, rsync
|
|
BuildRequires: gcc >= 3.4.2, binutils >= 2.12
|
|
BuildRequires: hostname, net-tools, bc
|
|
BuildRequires: xmlto, asciidoc
|
|
BuildRequires: openssl-devel
|
|
BuildRequires: hmaccalc
|
|
BuildRequires: ncurses-devel
|
|
#BuildRequires: pesign >= 0.109-4
|
|
BuildRequires: elfutils-libelf-devel
|
|
BuildRequires: rpm >= 4.14.2
|
|
#BuildRequires: sparse >= 0.4.1
|
|
%if 0%{?with_python2}
|
|
BuildRequires: python-devel
|
|
%endif
|
|
|
|
BuildRequires: elfutils-devel zlib-devel binutils-devel newt-devel perl(ExtUtils::Embed) bison
|
|
BuildRequires: audit-libs-devel
|
|
BuildRequires: pciutils-devel gettext
|
|
BuildRequires: rpm-build, elfutils
|
|
BuildRequires: numactl-devel python3-devel glibc-static python3-docutils
|
|
BuildRequires: perl-generators perl(Carp) libunwind-devel gtk2-devel libbabeltrace-devel java-1.8.0-openjdk
|
|
AutoReq: no
|
|
AutoProv: yes
|
|
|
|
Conflicts: device-mapper-libs < 1.02.63-2 e2fsprogs < 1.37-4 initscripts < 7.23 iptables < 1.3.2-1
|
|
Conflicts: ipw2200-firmware < 2.4 isdn4k-utils < 3.2-32 iwl4965-firmware < 228.57.2 jfsutils < 1.1.7-2
|
|
Conflicts: mdadm < 3.2.1-5 nfs-utils < 1.0.7-12 oprofile < 0.9.1-2 ppp < 2.4.3-3 procps < 3.2.5-6.3
|
|
Conflicts: reiserfs-utils < 3.6.19-2 selinux-policy-targeted < 1.25.3-14 squashfs-tools < 4.0
|
|
Conflicts: udev < 063-6 util-linux < 2.12 wireless-tools < 29-3 xfsprogs < 2.6.13-4
|
|
|
|
Provides: kernel-aarch64 = %{version}-%{release} kernel-drm = 4.3.0 kernel-drm-nouveau = 16 kernel-modeset = 1
|
|
Provides: kernel-uname-r = %{KernelVer} kernel=%{KernelVer}
|
|
|
|
Requires: dracut >= 001-7 grubby >= 8.28-2 initscripts >= 8.11.1-1 linux-firmware >= 20100806-2 module-init-tools >= 3.16-2
|
|
|
|
ExclusiveArch: noarch aarch64 i686 x86_64
|
|
ExclusiveOS: Linux
|
|
|
|
%description
|
|
The Linux Kernel, the operating system core itself.
|
|
|
|
%package devel
|
|
Summary: Development package for building kernel modules to match the %{KernelVer} kernel
|
|
AutoReqProv: no
|
|
Provides: %{name}-headers
|
|
Obsoletes: %{name}-headers
|
|
Provides: glibc-kernheaders
|
|
Provides: kernel-devel-uname-r = %{KernelVer}
|
|
Provides: kernel-devel-aarch64 = %{version}-%{release}
|
|
Requires: perl findutils
|
|
|
|
%description devel
|
|
This package provides kernel headers and makefiles sufficient to build modules
|
|
against the %{KernelVer} kernel package.
|
|
|
|
%package tools
|
|
Summary: Assortment of tools for the Linux kernel
|
|
Provides: %{name}-tools-libs
|
|
Obsoletes: %{name}-tools-libs
|
|
Provides: cpufreq-utils = 1:009-0.6.p1
|
|
Provides: cpufrequtils = 1:009-0.6.p1
|
|
Obsoletes: cpufreq-utils < 1:009-0.6.p1
|
|
Obsoletes: cpufrequtils < 1:009-0.6.p1
|
|
Obsoletes: cpuspeed < 1:1.5-16
|
|
%description tools
|
|
This package contains the tools/ directory from the kernel source
|
|
and the supporting documentation.
|
|
|
|
%package tools-devel
|
|
Summary: Assortment of tools for the Linux kernel
|
|
Requires: kernel-tools = %{version}-%{release}
|
|
Requires: kernel-tools-libs = %{version}-%{release}
|
|
Provides: kernel-tools-libs-devel = %{version}-%{release}
|
|
Obsoletes: kernel-tools-libs-devel
|
|
%description tools-devel
|
|
This package contains the development files for the tools/ directory from
|
|
the kernel source.
|
|
|
|
%package -n perf
|
|
Summary: Performance monitoring for the Linux kernel
|
|
%description -n perf
|
|
This package contains the perf tool, which enables performance monitoring
|
|
of the Linux kernel.
|
|
|
|
%if 0%{?with_python2}
|
|
%package -n python2-perf
|
|
Provides: python-perf = %{version}-%{release}
|
|
Obsoletes: python-perf
|
|
Summary: Python bindings for apps which will manipulate perf events
|
|
|
|
%description -n python2-perf
|
|
A Python module that permits applications written in the Python programming
|
|
language to use the interface to manipulate perf events.
|
|
%endif
|
|
|
|
%package -n python3-perf
|
|
Summary: Python bindings for apps which will manipulate perf events
|
|
%description -n python3-perf
|
|
A Python module that permits applications written in the Python programming
|
|
language to use the interface to manipulate perf events.
|
|
|
|
%package -n bpftool
|
|
Summary: Inspection and simple manipulation of eBPF programs and maps
|
|
%description -n bpftool
|
|
This package contains the bpftool, which allows inspection and simple
|
|
manipulation of eBPF programs and maps.
|
|
|
|
%package source
|
|
Summary: the kernel source
|
|
%description source
|
|
This package contains vaious source files from the kernel.
|
|
|
|
%if 0%{?with_debuginfo}
|
|
%define _debuginfo_template %{nil}
|
|
%define _debuginfo_subpackages 0
|
|
|
|
%define debuginfo_template(n:) \
|
|
%package -n %{-n*}-debuginfo\
|
|
Summary: Debug information for package %{-n*}\
|
|
Group: Development/Debug\
|
|
AutoReq: 0\
|
|
AutoProv: 1\
|
|
%description -n %{-n*}-debuginfo\
|
|
This package provides debug information for package %{-n*}.\
|
|
Debug information is useful when developing applications that use this\
|
|
package or when debugging this package.\
|
|
%{nil}
|
|
|
|
%debuginfo_template -n kernel
|
|
%files -n kernel-debuginfo -f debugfiles.list
|
|
|
|
%debuginfo_template -n bpftool
|
|
%files -n bpftool-debuginfo -f bpftool-debugfiles.list
|
|
%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%{_sbindir}/bpftool.*(\.debug)?|XXX' -o bpftool-debugfiles.list}
|
|
|
|
%debuginfo_template -n kernel-tools
|
|
%files -n kernel-tools-debuginfo -f kernel-tools-debugfiles.list
|
|
%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%{_bindir}/centrino-decode.*(\.debug)?|.*%{_bindir}/powernow-k8-decode.*(\.debug)?|.*%{_bindir}/cpupower.*(\.debug)?|.*%{_libdir}/libcpupower.*|.*%{_libdir}/libcpupower.*|.*%{_bindir}/turbostat.(\.debug)?|.*%{_bindir}/.*gpio.*(\.debug)?|.*%{_bindir}/.*iio.*(\.debug)?|.*%{_bindir}/tmon.*(.debug)?|XXX' -o kernel-tools-debugfiles.list}
|
|
|
|
%debuginfo_template -n perf
|
|
%files -n perf-debuginfo -f perf-debugfiles.list
|
|
%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%{_bindir}/perf.*(\.debug)?|.*%{_libexecdir}/perf-core/.*|.*%{_libdir}/traceevent/.*|XXX' -o perf-debugfiles.list}
|
|
|
|
%if 0%{?with_python2}
|
|
%debuginfo_template -n python2-perf
|
|
%files -n python2-perf-debuginfo -f python2-perf-debugfiles.list
|
|
%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%{python2_sitearch}/perf.*(.debug)?|XXX' -o python2-perf-debugfiles.list}
|
|
%endif
|
|
|
|
%debuginfo_template -n python3-perf
|
|
%files -n python3-perf-debuginfo -f python3-perf-debugfiles.list
|
|
%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%{python3_sitearch}/perf.*(.debug)?|XXX' -o python3-perf-debugfiles.list}
|
|
|
|
%endif
|
|
|
|
%prep
|
|
|
|
%if 0%{?with_patch}
|
|
if [ ! -d kernel-%{version}/vanilla-%{TarballVer} ];then
|
|
%setup -q -n kernel-%{version} -a 9998 -c
|
|
mv linux-%{TarballVer} vanilla-%{TarballVer}
|
|
else
|
|
cd kernel-%{version}
|
|
fi
|
|
cp -rl vanilla-%{TarballVer} linux-%{KernelVer}
|
|
%else
|
|
%setup -q -n kernel-%{version} -c
|
|
if [ -d "kernel" ]; then
|
|
mv kernel linux-%{version}
|
|
cp -rl linux-%{version} linux-%{KernelVer}
|
|
else
|
|
echo "**** ERROR: no kernel source directory ****"
|
|
fi
|
|
%endif
|
|
|
|
cd linux-%{KernelVer}
|
|
|
|
%patch0001 -p1
|
|
%patch0002 -p1
|
|
|
|
%if 0%{?with_patch}
|
|
cp %{SOURCE9000} .
|
|
cp %{SOURCE9001} .
|
|
cp %{SOURCE9002} .
|
|
|
|
if [ ! -d patches ];then
|
|
mv ../patches .
|
|
fi
|
|
|
|
Applypatches()
|
|
{
|
|
set -e
|
|
set -o pipefail
|
|
local SERIESCONF=$1
|
|
local PATCH_DIR=$2
|
|
sed -i '/^#/d' $SERIESCONF
|
|
sed -i '/^[\s]*$/d' $SERIESCONF
|
|
(
|
|
echo "trap 'echo \"*** patch \$_ failed ***\"' ERR"
|
|
echo "set -ex"
|
|
cat $SERIESCONF | \
|
|
sed "s!^!patch -s -F0 -E -p1 --no-backup-if-mismatch -i $PATCH_DIR/!" \
|
|
) | sh
|
|
}
|
|
|
|
Applypatches series.conf %{_builddir}/kernel-%{version}/linux-%{KernelVer}
|
|
%endif
|
|
|
|
touch .scmversion
|
|
|
|
find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
|
|
find . -name .gitignore -exec rm -f {} \; >/dev/null
|
|
|
|
%if 0%{?with_signmodules}
|
|
cp %{SOURCE11} certs/.
|
|
%endif
|
|
|
|
pathfix.py -pni "/usr/bin/python" tools/power/pm-graph/sleepgraph.py tools/power/pm-graph/bootgraph.py tools/perf/scripts/python/exported-sql-viewer.py
|
|
|
|
%if 0%{?with_source}
|
|
# Copy directory backup for kernel-source
|
|
cp -a ../linux-%{KernelVer} ../linux-%{KernelVer}-source
|
|
find ../linux-%{KernelVer}-source -type f -name "\.*" -exec rm -rf {} \; >/dev/null
|
|
%endif
|
|
|
|
cp -a tools/perf tools/python3-perf
|
|
|
|
%build
|
|
cd linux-%{KernelVer}
|
|
|
|
perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{release}.%{_target_cpu}/" Makefile
|
|
|
|
## make linux
|
|
make mrproper %{_smp_mflags}
|
|
|
|
make ARCH=%{Arch} openeuler_defconfig
|
|
make ARCH=%{Arch} olddefconfig
|
|
|
|
TargetImage=$(basename $(make -s image_name))
|
|
|
|
make ARCH=%{Arch} $TargetImage %{?_smp_mflags}
|
|
make ARCH=%{Arch} modules %{?_smp_mflags}
|
|
|
|
%if 0%{?with_kabichk}
|
|
chmod 0755 %{SOURCE18}
|
|
if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu} ]; then
|
|
##%{SOURCE18} -k $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu} -s Module.symvers || exit 1
|
|
echo "**** NOTE: now don't check Kabi. ****"
|
|
else
|
|
echo "**** NOTE: Cannot find reference Module.kabi file. ****"
|
|
fi
|
|
%endif
|
|
|
|
# aarch64 make dtbs
|
|
%ifarch aarch64
|
|
make ARCH=%{Arch} dtbs
|
|
%endif
|
|
|
|
## make tools
|
|
# perf
|
|
%global perf_make \
|
|
make EXTRA_CFLAGS="-Wl,-z,now -g -Wall -fstack-protector-strong -fPIC" EXTRA_PERFLIBS="-fpie -pie" %{?_smp_mflags} -s V=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 prefix=%{_prefix}
|
|
%if 0%{?with_python2}
|
|
%global perf_python2 -C tools/perf PYTHON=%{__python2}
|
|
%global perf_python3 -C tools/python3-perf PYTHON=%{__python3}
|
|
%else
|
|
%global perf_python3 -C tools/perf PYTHON=%{__python3}
|
|
%endif
|
|
|
|
chmod +x tools/perf/check-headers.sh
|
|
# perf
|
|
%if 0%{?with_python2}
|
|
%{perf_make} %{perf_python2} all
|
|
%endif
|
|
|
|
# make sure check-headers.sh is executable
|
|
chmod +x tools/python3-perf/check-headers.sh
|
|
%{perf_make} %{perf_python3} all
|
|
|
|
pushd tools/perf/Documentation/
|
|
make %{?_smp_mflags} man
|
|
popd
|
|
|
|
# bpftool
|
|
pushd tools/bpf/bpftool
|
|
make
|
|
popd
|
|
|
|
# cpupower
|
|
chmod +x tools/power/cpupower/utils/version-gen.sh
|
|
make %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false
|
|
%ifarch %{ix86}
|
|
pushd tools/power/cpupower/debug/i386
|
|
make %{?_smp_mflags} centrino-decode powernow-k8-decode
|
|
popd
|
|
%endif
|
|
%ifarch x86_64
|
|
pushd tools/power/cpupower/debug/x86_64
|
|
make %{?_smp_mflags} centrino-decode powernow-k8-decode
|
|
popd
|
|
%endif
|
|
%ifarch %{ix86} x86_64
|
|
pushd tools/power/x86/x86_energy_perf_policy/
|
|
make
|
|
popd
|
|
pushd tools/power/x86/turbostat
|
|
make
|
|
popd
|
|
%endif
|
|
# thermal
|
|
pushd tools/thermal/tmon/
|
|
make
|
|
popd
|
|
# iio
|
|
pushd tools/iio/
|
|
make
|
|
popd
|
|
# gpio
|
|
pushd tools/gpio/
|
|
make
|
|
popd
|
|
# kvm
|
|
pushd tools/kvm/kvm_stat/
|
|
make %{?_smp_mflags} man
|
|
popd
|
|
|
|
%install
|
|
%if 0%{?with_source}
|
|
%define _python_bytecompile_errors_terminate_build 0
|
|
mkdir -p $RPM_BUILD_ROOT/usr/src/
|
|
mv linux-%{KernelVer}-source $RPM_BUILD_ROOT/usr/src/linux-%{KernelVer}
|
|
cp linux-%{KernelVer}/.config $RPM_BUILD_ROOT/usr/src/linux-%{KernelVer}/
|
|
cp linux-%{KernelVer}/.scmversion $RPM_BUILD_ROOT/usr/src/linux-%{KernelVer}/
|
|
%endif
|
|
|
|
cd linux-%{KernelVer}
|
|
|
|
## install linux
|
|
|
|
# deal with kernel-source, now we don't need kernel-source
|
|
#mkdir $RPM_BUILD_ROOT/usr/src/linux-%{KernelVer}
|
|
#tar cf - --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg --exclude .git --exclude=.tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=.config.old --exclude=.missing-syscalls.d --exclude=patches . | tar xf - -C %{buildroot}/usr/src/linux-%{KernelVer}
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/boot
|
|
dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-%{KernelVer}.img bs=1M count=20
|
|
|
|
install -m 755 $(make -s image_name) $RPM_BUILD_ROOT/boot/vmlinuz-%{KernelVer}
|
|
pushd $RPM_BUILD_ROOT/boot
|
|
sha512hmac ./vmlinuz-%{KernelVer} >./.vmlinuz-%{KernelVer}.hmac
|
|
popd
|
|
|
|
install -m 644 .config $RPM_BUILD_ROOT/boot/config-%{KernelVer}
|
|
install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-%{KernelVer}
|
|
|
|
gzip -c9 < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-%{KernelVer}.gz
|
|
|
|
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
|
|
install -m 755 %{SOURCE200} $RPM_BUILD_ROOT%{_sbindir}/mkgrub-menu-%{devel_release}.sh
|
|
|
|
|
|
%if 0%{?with_debuginfo}
|
|
mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/%{KernelVer}
|
|
cp vmlinux $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/%{KernelVer}
|
|
%endif
|
|
|
|
# deal with module, if not kdump
|
|
make ARCH=%{Arch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=%{KernelVer} mod-fw=
|
|
######## to collect ko to module.filelist about netwoking. block. drm. modesetting ###############
|
|
pushd $RPM_BUILD_ROOT/lib/modules/%{KernelVer}
|
|
find -type f -name "*.ko" >modnames
|
|
|
|
# mark modules executable so that strip-to-file can strip them
|
|
xargs --no-run-if-empty chmod u+x < modnames
|
|
|
|
# Generate a list of modules for block and networking.
|
|
|
|
grep -F /drivers/ modnames | xargs --no-run-if-empty nm -upA |
|
|
sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef
|
|
|
|
collect_modules_list()
|
|
{
|
|
sed -r -n -e "s/^([^ ]+) \\.?($2)\$/\\1/p" drivers.undef |
|
|
LC_ALL=C sort -u > modules.$1
|
|
if [ ! -z "$3" ]; then
|
|
sed -r -e "/^($3)\$/d" -i modules.$1
|
|
fi
|
|
}
|
|
|
|
collect_modules_list networking \
|
|
'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|rt2x00(pci|usb)_probe|register_netdevice'
|
|
collect_modules_list block \
|
|
'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_alloc_queue|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size|ahci_platform_get_resources' 'pktcdvd.ko|dm-mod.ko'
|
|
collect_modules_list drm \
|
|
'drm_open|drm_init'
|
|
collect_modules_list modesetting \
|
|
'drm_crtc_init'
|
|
|
|
# detect missing or incorrect license tags
|
|
rm -f modinfo
|
|
while read i
|
|
do
|
|
echo -n "$i " >> modinfo
|
|
/sbin/modinfo -l $i >> modinfo
|
|
done < modnames
|
|
|
|
grep -E -v \
|
|
'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' \
|
|
modinfo && exit 1
|
|
|
|
rm -f modinfo modnames drivers.undef
|
|
|
|
for i in alias alias.bin builtin.bin ccwmap dep dep.bin ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols symbols.bin usbmap
|
|
do
|
|
rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$i
|
|
done
|
|
popd
|
|
# modsign module ko;need after find-debuginfo,strip
|
|
%define __modsign_install_post \
|
|
if [ "%{with_signmodules}" -eq "1" ];then \
|
|
cp certs/signing_key.pem . \
|
|
cp certs/signing_key.x509 . \
|
|
chmod 0755 %{modsign_cmd} \
|
|
%{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KernelVer} || exit 1 \
|
|
fi \
|
|
%{nil}
|
|
|
|
# deal with header
|
|
make ARCH=%{Arch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr KBUILD_SRC= headers_install
|
|
make ARCH=%{Arch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_check
|
|
find $RPM_BUILD_ROOT/usr/include -name "\.*" -exec rm -rf {} \;
|
|
|
|
# aarch64 dtbs install
|
|
%ifarch aarch64
|
|
mkdir -p $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}
|
|
install -m 644 $(find arch/%{Arch}/boot -name "*.dtb") $RPM_BUILD_ROOT/boot/dtb-%{KernelVer}/
|
|
rm -f $(find arch/$Arch/boot -name "*.dtb")
|
|
%endif
|
|
|
|
# deal with vdso
|
|
make -s ARCH=%{Arch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=%{KernelVer}
|
|
if [ ! -s ldconfig-kernel.conf ]; then
|
|
echo "# Placeholder file, no vDSO hwcap entries used in this kernel." >ldconfig-kernel.conf
|
|
fi
|
|
install -D -m 444 ldconfig-kernel.conf $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-%{KernelVer}.conf
|
|
|
|
# deal with /lib/module/ path- sub path: build source kernel
|
|
rm -f $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build
|
|
rm -f $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/source
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/extra
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/updates
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/weak-updates
|
|
############ to do collect devel file #########
|
|
# 1. Makefile And Kconfig, .config sysmbol
|
|
# 2. scrpits dir
|
|
# 3. .h file
|
|
find -type f \( -name "Makefile*" -o -name "Kconfig*" \) -exec cp --parents {} $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build \;
|
|
for f in Module.symvers System.map Module.markers .config;do
|
|
test -f $f || continue
|
|
cp $f $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build
|
|
done
|
|
|
|
cp -a scripts $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build
|
|
if [ -d arch/%{Arch}/scripts ]; then
|
|
cp -a arch/%{Arch}/scripts $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/arch/%{_arch} || :
|
|
fi
|
|
if [ -f arch/%{Arch}/*lds ]; then
|
|
cp -a arch/%{Arch}/*lds $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/arch/%{_arch}/ || :
|
|
fi
|
|
find $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/scripts/ -name "*.o" -exec rm -rf {} \;
|
|
|
|
if [ -d arch/%{Arch}/include ]; then
|
|
cp -a --parents arch/%{Arch}/include $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/
|
|
fi
|
|
cp -a include $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/include
|
|
|
|
if [ -f arch/%{Arch}/kernel/module.lds ]; then
|
|
cp -a --parents arch/%{Arch}/kernel/module.lds $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/
|
|
fi
|
|
|
|
# module.lds is moved to scripts by commit 596b0474d3d9 in linux 5.10.
|
|
if [ -f scripts/module.lds ]; then
|
|
cp -a --parents scripts/module.lds $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/
|
|
fi
|
|
|
|
%ifarch aarch64
|
|
cp -a --parents arch/arm/include/asm $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/
|
|
%endif
|
|
|
|
# copy objtool for kernel-devel (needed for building external modules)
|
|
if grep -q CONFIG_STACK_VALIDATION=y .config; then
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/tools/objtool
|
|
cp -a tools/objtool/objtool $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/tools/objtool
|
|
fi
|
|
|
|
# Make sure the Makefile and version.h have a matching timestamp so that
|
|
# external modules can be built
|
|
touch -r $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/Makefile $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/include/generated/uapi/linux/version.h
|
|
touch -r $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/.config $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/include/generated/autoconf.h
|
|
# for make prepare
|
|
if [ ! -f $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/include/config/auto.conf ];then
|
|
cp .config $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/include/config/auto.conf
|
|
fi
|
|
|
|
mkdir -p %{buildroot}/usr/src/kernels
|
|
mv $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build $RPM_BUILD_ROOT/usr/src/kernels/%{KernelVer}
|
|
|
|
find $RPM_BUILD_ROOT/usr/src/kernels/%{KernelVer} -name ".*.cmd" -exec rm -f {} \;
|
|
|
|
pushd $RPM_BUILD_ROOT/lib/modules/%{KernelVer}
|
|
ln -sf /usr/src/kernels/%{KernelVer} build
|
|
ln -sf build source
|
|
popd
|
|
|
|
|
|
# deal with doc , now we don't need
|
|
|
|
|
|
# deal with kernel abi whitelists. now we don't need
|
|
|
|
|
|
## install tools
|
|
# perf
|
|
# perf tool binary and supporting scripts/binaries
|
|
%if 0%{?with_python2}
|
|
%{perf_make} %{perf_python2} DESTDIR=%{buildroot} lib=%{_lib} install-bin install-traceevent-plugins
|
|
%else
|
|
%{perf_make} %{perf_python3} DESTDIR=%{buildroot} lib=%{_lib} install-bin install-traceevent-plugins
|
|
%endif
|
|
# remove the 'trace' symlink.
|
|
rm -f %{buildroot}%{_bindir}/trace
|
|
|
|
# remove examples
|
|
rm -rf %{buildroot}/usr/lib/perf/examples
|
|
# remove the stray header file that somehow got packaged in examples
|
|
rm -rf %{buildroot}/usr/lib/perf/include/bpf/
|
|
|
|
# python-perf extension
|
|
%{perf_make} %{perf_python3} DESTDIR=%{buildroot} install-python_ext
|
|
%if 0%{?with_python2}
|
|
%{perf_make} %{perf_python2} DESTDIR=%{buildroot} install-python_ext
|
|
%endif
|
|
|
|
# perf man pages (note: implicit rpm magic compresses them later)
|
|
install -d %{buildroot}/%{_mandir}/man1
|
|
install -pm0644 tools/kvm/kvm_stat/kvm_stat.1 %{buildroot}/%{_mandir}/man1/
|
|
install -pm0644 tools/perf/Documentation/*.1 %{buildroot}/%{_mandir}/man1/
|
|
|
|
# bpftool
|
|
pushd tools/bpf/bpftool
|
|
make DESTDIR=%{buildroot} prefix=%{_prefix} bash_compdir=%{_sysconfdir}/bash_completion.d/ mandir=%{_mandir} install doc-install
|
|
popd
|
|
# cpupower
|
|
make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
|
|
rm -f %{buildroot}%{_libdir}/*.{a,la}
|
|
%find_lang cpupower
|
|
mv cpupower.lang ../
|
|
%ifarch %{ix86}
|
|
pushd tools/power/cpupower/debug/i386
|
|
install -m755 centrino-decode %{buildroot}%{_bindir}/centrino-decode
|
|
install -m755 powernow-k8-decode %{buildroot}%{_bindir}/powernow-k8-decode
|
|
popd
|
|
%endif
|
|
%ifarch x86_64
|
|
pushd tools/power/cpupower/debug/x86_64
|
|
install -m755 centrino-decode %{buildroot}%{_bindir}/centrino-decode
|
|
install -m755 powernow-k8-decode %{buildroot}%{_bindir}/powernow-k8-decode
|
|
popd
|
|
%endif
|
|
chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
|
|
mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
|
|
install -m644 %{SOURCE2000} %{buildroot}%{_unitdir}/cpupower.service
|
|
install -m644 %{SOURCE2001} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
|
|
%ifarch %{ix86} x86_64
|
|
mkdir -p %{buildroot}%{_mandir}/man8
|
|
pushd tools/power/x86/x86_energy_perf_policy
|
|
make DESTDIR=%{buildroot} install
|
|
popd
|
|
pushd tools/power/x86/turbostat
|
|
make DESTDIR=%{buildroot} install
|
|
popd
|
|
%endif
|
|
# thermal
|
|
pushd tools/thermal/tmon
|
|
make INSTALL_ROOT=%{buildroot} install
|
|
popd
|
|
# iio
|
|
pushd tools/iio
|
|
make DESTDIR=%{buildroot} install
|
|
popd
|
|
# gpio
|
|
pushd tools/gpio
|
|
make DESTDIR=%{buildroot} install
|
|
popd
|
|
# kvm
|
|
pushd tools/kvm/kvm_stat
|
|
make INSTALL_ROOT=%{buildroot} install-tools
|
|
popd
|
|
|
|
%define __spec_install_post\
|
|
%{?__debug_package:%{__debug_install_post}}\
|
|
%{__arch_install_post}\
|
|
%{__os_install_post}\
|
|
%{__modsign_install_post}\
|
|
%{nil}
|
|
|
|
%post
|
|
%{_sbindir}/new-kernel-pkg --package kernel --install %{KernelVer} || exit $?
|
|
|
|
%preun
|
|
if [ `uname -i` == "aarch64" ] &&
|
|
[ -f /boot/EFI/grub2/grub.cfg ]; then
|
|
/usr/bin/sh %{_sbindir}/mkgrub-menu-%{devel_release}.sh %{version}-%{devel_release}.aarch64 /boot/EFI/grub2/grub.cfg remove
|
|
fi
|
|
|
|
%postun
|
|
%{_sbindir}/new-kernel-pkg --rminitrd --rmmoddep --remove %{KernelVer} || exit $?
|
|
if [ -x %{_sbindir}/weak-modules ]
|
|
then
|
|
%{_sbindir}/weak-modules --remove-kernel %{KernelVer} || exit $?
|
|
fi
|
|
|
|
# remove empty directory
|
|
if [ -d /lib/modules/%{KernelVer} ] && [ "`ls -A /lib/modules/%{KernelVer}`" = "" ]; then
|
|
rm -rf /lib/modules/%{KernelVer}
|
|
fi
|
|
|
|
%posttrans
|
|
%{_sbindir}/new-kernel-pkg --package kernel --mkinitrd --dracut --depmod --update %{KernelVer} || exit $?
|
|
%{_sbindir}/new-kernel-pkg --package kernel --rpmposttrans %{KernelVer} || exit $?
|
|
if [ `uname -i` == "aarch64" ] &&
|
|
[ -f /boot/EFI/grub2/grub.cfg ]; then
|
|
/usr/bin/sh %{_sbindir}/mkgrub-menu-%{devel_release}.sh %{version}-%{devel_release}.aarch64 /boot/EFI/grub2/grub.cfg update
|
|
fi
|
|
if [ -x %{_sbindir}/weak-modules ]
|
|
then
|
|
%{_sbindir}/weak-modules --add-kernel %{KernelVer} || exit $?
|
|
fi
|
|
%{_sbindir}/new-kernel-pkg --package kernel --mkinitrd --dracut --depmod --update %{KernelVer} || exit $?
|
|
%{_sbindir}/new-kernel-pkg --package kernel --rpmposttrans %{KernelVer} || exit $?
|
|
|
|
%post devel
|
|
if [ -f /etc/sysconfig/kernel ]
|
|
then
|
|
. /etc/sysconfig/kernel || exit $?
|
|
fi
|
|
if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ]
|
|
then
|
|
(cd /usr/src/kernels/%{KernelVer} &&
|
|
/usr/bin/find . -type f | while read f; do
|
|
hardlink -c /usr/src/kernels/*.oe*.*/$f $f
|
|
done)
|
|
fi
|
|
|
|
%post -n kernel-tools
|
|
/sbin/ldconfig
|
|
%systemd_post cpupower.service
|
|
|
|
%preun -n kernel-tools
|
|
%systemd_preun cpupower.service
|
|
|
|
%postun -n kernel-tools
|
|
/sbin/ldconfig
|
|
%systemd_postun cpupower.service
|
|
|
|
%files
|
|
%defattr (-, root, root)
|
|
%doc
|
|
/boot/config-*
|
|
%ifarch aarch64
|
|
/boot/dtb-*
|
|
%endif
|
|
/boot/symvers-*
|
|
/boot/System.map-*
|
|
/boot/vmlinuz-*
|
|
%ghost /boot/initramfs-%{KernelVer}.img
|
|
/boot/.vmlinuz-*.hmac
|
|
/etc/ld.so.conf.d/*
|
|
/lib/modules/%{KernelVer}/
|
|
%exclude /lib/modules/%{KernelVer}/source
|
|
%exclude /lib/modules/%{KernelVer}/build
|
|
%{_sbindir}/mkgrub-menu*.sh
|
|
|
|
%files devel
|
|
%defattr (-, root, root)
|
|
%doc
|
|
/lib/modules/%{KernelVer}/source
|
|
/lib/modules/%{KernelVer}/build
|
|
/usr/src/kernels/%{KernelVer}
|
|
/usr/include/*
|
|
|
|
%files -n perf
|
|
%{_bindir}/perf
|
|
%dir %{_libdir}/traceevent
|
|
%{_libdir}/traceevent/plugins/
|
|
%{_libexecdir}/perf-core
|
|
%{_datadir}/perf-core/
|
|
%{_mandir}/man[1-8]/perf*
|
|
%{_sysconfdir}/bash_completion.d/perf
|
|
%doc linux-%{KernelVer}/tools/perf/Documentation/examples.txt
|
|
%dir %{_datadir}/doc/perf-tip
|
|
%{_datadir}/doc/perf-tip/*
|
|
%license linux-%{KernelVer}/COPYING
|
|
|
|
%if 0%{?with_python2}
|
|
%files -n python2-perf
|
|
%license linux-%{KernelVer}/COPYING
|
|
%{python2_sitearch}/*
|
|
%endif
|
|
|
|
%files -n python3-perf
|
|
%license linux-%{KernelVer}/COPYING
|
|
%{python3_sitearch}/*
|
|
|
|
%files -n kernel-tools -f cpupower.lang
|
|
%{_bindir}/cpupower
|
|
%ifarch %{ix86} x86_64
|
|
%{_bindir}/centrino-decode
|
|
%{_bindir}/powernow-k8-decode
|
|
%endif
|
|
%{_unitdir}/cpupower.service
|
|
%{_datadir}/bash-completion/completions/cpupower
|
|
%{_mandir}/man[1-8]/cpupower*
|
|
%config(noreplace) %{_sysconfdir}/sysconfig/cpupower
|
|
%ifarch %{ix86} x86_64
|
|
%{_bindir}/x86_energy_perf_policy
|
|
%{_mandir}/man8/x86_energy_perf_policy*
|
|
%{_bindir}/turbostat
|
|
%{_mandir}/man8/turbostat*
|
|
%endif
|
|
%{_bindir}/tmon
|
|
%{_bindir}/iio_event_monitor
|
|
%{_bindir}/iio_generic_buffer
|
|
%{_bindir}/lsiio
|
|
%{_bindir}/lsgpio
|
|
%{_bindir}/gpio-hammer
|
|
%{_bindir}/gpio-event-mon
|
|
%{_bindir}/gpio-watch
|
|
%{_mandir}/man1/kvm_stat*
|
|
%{_bindir}/kvm_stat
|
|
%{_libdir}/libcpupower.so.0
|
|
%{_libdir}/libcpupower.so.0.0.1
|
|
%license linux-%{KernelVer}/COPYING
|
|
|
|
%files -n kernel-tools-devel
|
|
%{_libdir}/libcpupower.so
|
|
%{_includedir}/cpufreq.h
|
|
%{_includedir}/cpuidle.h
|
|
|
|
%files -n bpftool
|
|
%{_sbindir}/bpftool
|
|
%{_sysconfdir}/bash_completion.d/bpftool
|
|
%{_mandir}/man8/bpftool-cgroup.8.gz
|
|
%{_mandir}/man8/bpftool-map.8.gz
|
|
%{_mandir}/man8/bpftool-prog.8.gz
|
|
%{_mandir}/man8/bpftool-perf.8.gz
|
|
%{_mandir}/man8/bpftool.8.gz
|
|
%{_mandir}/man8/bpftool-btf.8.gz
|
|
%{_mandir}/man8/bpftool-feature.8.gz
|
|
%{_mandir}/man8/bpftool-gen.8.gz
|
|
%{_mandir}/man8/bpftool-iter.8.gz
|
|
%{_mandir}/man8/bpftool-link.8.gz
|
|
%{_mandir}/man8/bpftool-net.8.gz
|
|
%{_mandir}/man8/bpftool-struct_ops.8.gz
|
|
%{_mandir}/man7/bpf-helpers.7.gz
|
|
%license linux-%{KernelVer}/COPYING
|
|
|
|
%if 0%{?with_source}
|
|
%files source
|
|
%defattr(-,root,root)
|
|
/usr/src/linux-%{KernelVer}/*
|
|
/usr/src/linux-%{KernelVer}/.config
|
|
/usr/src/linux-%{KernelVer}/.scmversion
|
|
%endif
|
|
|
|
%changelog
|
|
* Mon Nov 02 2020 Xie XiuQi <xiexiuqi@huawei.com> - 5.10.0-rc2.0.0.3
|
|
- rebase on top of v5.10-rc2
|
|
- provide /boot/symvers-kernelver.gz even no kabichk
|
|
- fix warning on uninstall kernel rpm
|
|
|
|
* Sat Oct 31 2020 Xie XiuQi <xiexiuqi@huawei.com> - 5.10.0-rc1.0.0.2
|
|
- enable access to .config through /proc/config.gz
|
|
|
|
* Tue Oct 27 2020 Xie XiuQi <xiexiuqi@huawei.com> - 5.10.0-rc1.0.0.1
|
|
- package init based on upstream v5.10-rc1
|