854 lines
27 KiB
RPMSpec
854 lines
27 KiB
RPMSpec
|
|
|
|
%define with_signmodules 1
|
|
|
|
%define with_kabichk 1
|
|
|
|
%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 TarballVer 4.19.13
|
|
|
|
%global KernelVer %{version}-%{release}.%{_target_cpu}
|
|
|
|
%global hulkrelease vhulk1907.1.0
|
|
|
|
%define with_patch 0
|
|
|
|
%define debuginfodir /usr/lib/debug
|
|
|
|
%define with_debuginfo 1
|
|
|
|
%define with_source 1
|
|
|
|
Name: kernel
|
|
Version: 4.19.90
|
|
Release: %{hulkrelease}.0012
|
|
Summary: Linux Kernel
|
|
License: GPLv2
|
|
URL: http://www.kernel.org/
|
|
%if 0%{?with_patch}
|
|
Source0: linux-%{TarballVer}.tar.gz
|
|
%else
|
|
Source0: linux-%{version}.tar.gz
|
|
%endif
|
|
Source1: Makefile.common
|
|
Source10: sign-modules
|
|
Source11: x509.genkey
|
|
Source12: extra_certificates
|
|
Source15: merge.pl
|
|
|
|
%if 0%{?with_kabichk}
|
|
Source18: check-kabi
|
|
Source20: Module.kabi_aarch64
|
|
%endif
|
|
|
|
Source30: Makefile.config
|
|
Source50: config-debug
|
|
Source51: config-nodebug
|
|
Source52: config-arm64
|
|
Source53: config-generic
|
|
Source55: config-local
|
|
Source59: config-arm-generic
|
|
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
|
|
|
|
#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: 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: sparse >= 0.4.1
|
|
BuildRequires: elfutils-devel zlib-devel binutils-devel newt-devel python-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.
|
|
|
|
%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.
|
|
|
|
%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 kernel-debugfiles.list -f debugfiles.list
|
|
%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*/%{KernelVer}/.*|.*/vmlinux|XXX' -o kernel-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}
|
|
|
|
|
|
%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}
|
|
|
|
%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
|
|
cp -rl linux-%{version} linux-%{KernelVer}
|
|
%endif
|
|
|
|
cd linux-%{KernelVer}
|
|
cp $RPM_SOURCE_DIR/config-* .
|
|
cp %{SOURCE15} .
|
|
cp %{SOURCE30} .
|
|
|
|
%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
|
|
|
|
make -f Makefile.config VERSION=%{version} configs
|
|
|
|
%if !0%{?debugbuildsenabled}
|
|
rm -f kernel-%{version}-*debug.config
|
|
%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
|
|
|
|
%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} euleros_defconfig
|
|
make ARCH=%{Arch} oldnoconfig
|
|
|
|
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_BUILD_ROOT/Module.kabi_%{_target_cpu} -s Module.symvers || exit 1
|
|
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}
|
|
%global perf_python2 -C tools/perf PYTHON=%{__python2}
|
|
%global perf_python3 -C tools/python3-perf PYTHON=%{__python3}
|
|
# perf
|
|
chmod +x tools/perf/check-headers.sh
|
|
%{perf_make} %{perf_python2} all
|
|
|
|
# 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}
|
|
|
|
%if 0%{?with_kabichk}
|
|
gzip -c9 < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-%{KernelVer}.gz
|
|
%endif
|
|
|
|
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
|
|
install -m 755 %{SOURCE200} $RPM_BUILD_ROOT%{_sbindir}/mkgrub-menu-%{hulkrelease}.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
|
|
|
|
%ifarch aarch64
|
|
# Needed for systemtap
|
|
cp -a --parents arch/arm64/kernel/module.lds $RPM_BUILD_ROOT/lib/modules/%{KernelVer}/build/
|
|
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
|
|
%{perf_make} %{perf_python2} DESTDIR=%{buildroot} lib=%{_lib} install-bin install-traceevent-plugins
|
|
# remove the 'trace' symlink.
|
|
rm -f %{buildroot}%{_bindir}/trace
|
|
# remove the perf-tips
|
|
rm -rf %{buildroot}%{_docdir}/perf-tip
|
|
|
|
# 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
|
|
%{perf_make} %{perf_python2} DESTDIR=%{buildroot} install-python_ext
|
|
|
|
# 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
|
|
rm -rf /lib/modules/%{KernelVer}/EulerOS
|
|
if [ `uname -i` == "aarch64" ] &&
|
|
[ -f /boot/EFI/grub2/grub.cfg ]; then
|
|
/usr/bin/sh %{_sbindir}/mkgrub-menu-%{hulkrelease}.sh %{version}-%{hulkrelease}.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
|
|
if [ "`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-%{hulkrelease}.sh %{version}-%{hulkrelease}.aarch64 /boot/EFI/grub2/grub.cfg update
|
|
fi
|
|
if [ ! -d "/lib/modules/EulerOS" ];then
|
|
mkdir -p /lib/modules/EulerOS
|
|
fi
|
|
if [ -e "/lib/modules/%{KernelVer}/EulerOS" ]; then
|
|
rm -rf "/lib/modules/%{KernelVer}/EulerOS"
|
|
fi
|
|
ln -sf /lib/modules/EulerOS /lib/modules/%{KernelVer}/EulerOS
|
|
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 $?
|
|
|
|
|
|
%postun 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/*.fc*.*/$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
|
|
%if 0%{?with_kabichk}
|
|
/boot/symvers-*
|
|
%endif
|
|
/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
|
|
%license linux-%{KernelVer}/COPYING
|
|
|
|
%files -n python2-perf
|
|
%license linux-%{KernelVer}/COPYING
|
|
%{python2_sitearch}/*
|
|
|
|
%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
|
|
%{_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
|
|
%{_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}/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 Dec 23 2019 caomeng <caomeng5@huawei.com> - 4.19.90-vhulk1907.1.0.0012
|
|
- change version
|
|
|
|
* Mon Dec 23 2019 luochunsheng <luochunsheng@huawei.com> - 4.19.36-vhulk1907.1.0.0011
|
|
- fix mkgrub-menu-*.sh path
|
|
- SMMU supports bypass of configured PCI devices by cmdline smmu.bypassdev
|
|
|
|
* Mon Dec 23 2019 chenmaodong<chenmaodong@huawei.com> - 4.19.36-vhulk1907.1.0.0010
|
|
- drm/radeon: Fix potential buffer overflow in ci_dpm.c
|
|
|
|
* Mon Dec 23 2019 wuxu<wuxu.wu@huawei.com> - 4.19.36-vhulk1907.1.0.0009
|
|
- add security compile noexecstack option for vdso
|
|
|
|
* Mon Dec 23 2019 caomeng<caomeng5@huawei.com> - 4.19.36-vhulk1907.1.0.0008
|
|
- rebase hulk patches
|
|
|
|
* Fri Dec 20 2019 yeyunfeng<yeyunfeng@huawei.com> - 4.19.36-vhulk1907.1.0.0007
|
|
- perf/smmuv3: fix possible sleep in preempt context
|
|
- crypto: user - prevent operating on larval algorithms
|
|
|
|
* Thu Dec 19 2019 luochunsheng <luochunsheng@huawei.com> - 4.19.36-vhulk1907.1.0.0006
|
|
- update release to satisfy upgrade
|
|
|
|
* Wed Nov 27 2019 lihongjiang <lihongjiang6@huawei.com> - 4.19.36-vhulk1907.1.0.h005
|
|
- change page size from 4K to 64K
|
|
|
|
* Thu Nov 21 2019 caomeng <caomeng5@huawei.com> - 4.19.36-vhulk1907.1.0.h004
|
|
- fix problem about x86 compile: change signing_key.pem to certs/signing_key.pem
|
|
- in file arch/x86/configs/euleros_defconfig
|
|
|
|
* Mon Nov 4 2019 caomeng <caomeng5@huawei.com> - 4.19.36-vhulk1907.1.0.h003
|
|
- Add buildrequires ncurlses-devel
|
|
|
|
* Fri Oct 25 2019 luochunsheng <luochunsheng@huawei.com> - 4.19.36-vhulk1907.1.0.h002
|
|
- Add vmlinx to debuginfo package and add kernel-source package
|
|
|
|
* Wed Sep 04 2019 openEuler Buildteam <buildteam@openeuler.org> - 4.19.36-vhulk1907.1.0.h001
|
|
- Package init
|