diff options
author | Laura Abbott <labbott@redhat.com> | 2019-10-21 15:27:30 -0400 |
---|---|---|
committer | Laura Abbott <labbott@redhat.com> | 2019-10-29 15:28:51 -0400 |
commit | c68fd73909c5522f3d58a8267c4a0e50b3d88a5a (patch) | |
tree | 064cf785454c1085ea471f49cc0121285a0dd8ed | |
parent | 1d23fdad0ff58ca20761935b5c27ce9590cd7857 (diff) | |
download | kernel-c68fd73909c5522f3d58a8267c4a0e50b3d88a5a.tar.gz kernel-c68fd73909c5522f3d58a8267c4a0e50b3d88a5a.tar.xz kernel-c68fd73909c5522f3d58a8267c4a0e50b3d88a5a.zip |
Add support for building ipaclones
While Fedora doesn't officially support kpatch, there's work
being done to enable kpatch elsewhere. Add the packaging work
but don't actually build anything.
-rw-r--r-- | kernel.spec | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/kernel.spec b/kernel.spec index 47fdd82f2..9ad95794c 100644 --- a/kernel.spec +++ b/kernel.spec @@ -133,6 +133,11 @@ Summary: The Linux kernel # gcov support %define with_gcov %{?_with_gcov: 1} %{?!_with_gcov: 0} +# +# ipa_clone support +%define with_ipaclones %{?_without_ipaclones: 0} %{?!_without_ipaclones: 1} + + # Set debugbuildsenabled to 1 for production (build separate debug kernels) # and 0 for rawhide (all kernels are debug kernels). # See also 'make debug' and 'make release'. @@ -144,6 +149,8 @@ Summary: The Linux kernel %define with_cross_headers 0 # no selftests for now %define with_selftests 0 +# no ipa_clone for now +%define with_ipaclones 0 %endif %if %{with_verbose} @@ -189,6 +196,16 @@ Summary: The Linux kernel %define with_kabidwchk 0 %endif +# kpatch_kcflags are extra compiler flags applied to base kernel +# -fdump-ipa-clones is enabled only for base kernels on selected arches +%if %{with_ipaclones} +%ifarch x86_64 ppc64le +%define kpatch_kcflags -fdump-ipa-clones +%else +%define with_ipaclones 0 +%endif +%endif + %define make_target bzImage %define image_install_path boot @@ -751,6 +768,18 @@ against the %{?2:%{2} }kernel package.\ %{nil} # +# kernel-<variant>-ipaclones-internal package +# +%define kernel_ipaclones_package() \ +%package %{?1:%{1}-}ipaclones-internal\ +Summary: *.ipa-clones files generated by -fdump-ipa-clones for kernel%{?1:-%{1}}\ +Group: System Environment/Kernel\ +AutoReqProv: no\ +%description %{?1:%{1}-}ipaclones-internal\ +This package provides *.ipa-clones files.\ +%{nil} + +# # This macro creates a kernel-<subpackage>-modules-extra package. # %%kernel_modules_extra_package <subpackage> <pretty-name> # @@ -858,6 +887,10 @@ Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. +%if %{with_ipaclones} +%kernel_ipaclones_package +%endif + %prep # do a few sanity-checks for --with *only builds %if %{with_baseonly} @@ -1574,6 +1607,18 @@ BuildKernel() { # build a BLS config for this kernel %{SOURCE43} "$KernelVer" "$RPM_BUILD_ROOT" "%{?variant}" + +%if %{with_ipaclones} + MAXPROCS=$(echo %{?_smp_mflags} | sed -n 's/-j\s*\([0-9]\+\)/\1/p') + if [ -z "$MAXPROCS" ]; then + MAXPROCS=1 + fi + if [ "$Flavour" == "" ]; then + mkdir -p $RPM_BUILD_ROOT/$DevelDir-ipaclones + find . -name '*.ipa-clones' | xargs -i{} -r -n 1 -P $MAXPROCS install -m 644 -D "{}" "$RPM_BUILD_ROOT/$DevelDir-ipaclones/{}" + fi +%endif + } ### @@ -1985,6 +2030,19 @@ fi %kernel_variant_files %{_use_vdso} %{with_debug} debug %kernel_variant_files %{use_vdso} %{with_pae} lpae +%define kernel_variant_ipaclones(k:) \ +%if %{1}\ +%if %{with_ipaclones}\ +%{expand:%%files %{?2:%{2}-}ipaclones-internal}\ +%defattr(-,root,root)\ +%defverify(not mtime)\ +/usr/src/kernels/%{KVERREL}%{?2:+%{2}}-ipaclones\ +%endif\ +%endif\ +%{nil} + +%kernel_variant_ipaclones %{with_up} + # plz don't put in a version string unless you're going to tag # and build. # |