Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # We have to override the new %%install behavior because, well... the kernel is special.
- %global __spec_install_pre %{___build_pre}
- Summary: The Linux kernel
- # For a stable, released kernel, released_kernel should be 1. For rawhide
- # and/or a kernel built from an rc or git snapshot, released_kernel should
- # be 0.
- %global released_kernel 1
- # Sign modules on x86. Make sure the config files match this setting if more
- # architectures are added.
- %ifarch %{ix86} x86_64
- %global signmodules 1
- %else
- %global signmodules 0
- %endif
- # Save original buildid for later if it's defined
- %if 0%{?buildid:1}
- %global orig_buildid %{buildid}
- %undefine buildid
- %endif
- ###################################################################
- # Polite request for people who spin their own kernel rpms:
- # please modify the "buildid" define in a way that identifies
- # that the kernel isn't the stock distribution kernel, for example,
- # by setting the define to ".local" or ".bz123456". This will be
- # appended to the full kernel version.
- #
- # (Uncomment the '#' and both spaces below to set the buildid.)
- #
- %define buildid .cust_edition
- ###################################################################
- # The buildid can also be specified on the rpmbuild command line
- # by adding --define="buildid .whatever". If both the specfile and
- # the environment define a buildid they will be concatenated together.
- %if 0%{?orig_buildid:1}
- %if 0%{?buildid:1}
- %global srpm_buildid %{buildid}
- %define buildid %{srpm_buildid}%{orig_buildid}
- %else
- %define buildid %{orig_buildid}
- %endif
- %endif
- # baserelease defines which build revision of this kernel version we're
- # building. We used to call this fedora_build, but the magical name
- # baserelease is matched by the rpmdev-bumpspec tool, which you should use.
- #
- # We used to have some extra magic weirdness to bump this automatically,
- # but now we don't. Just use: rpmdev-bumpspec -c 'comment for changelog'
- # When changing base_sublevel below or going from rc to a final kernel,
- # reset this by hand to 1 (or to 0 and then use rpmdev-bumpspec).
- # scripts/rebase.sh should be made to do that for you, actually.
- #
- # NOTE: baserelease must be > 0 or bad things will happen if you switch
- # to a released kernel (released version will be < rc version)
- #
- # For non-released -rc kernels, this will be appended after the rcX and
- # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
- #
- %global baserelease 301
- %global fedora_build %{baserelease}
- # base_sublevel is the kernel version we're starting with and patching
- # on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
- # which yields a base_sublevel of 0.
- %define base_sublevel 11
- ## If this is a released kernel ##
- %if 0%{?released_kernel}
- # Do we have a -stable update to apply?
- %define stable_update 10
- # Is it a -stable RC?
- %define stable_rc 0
- # Set rpm version accordingly
- %if 0%{?stable_update}
- %define stablerev %{stable_update}
- %define stable_base %{stable_update}
- %if 0%{?stable_rc}
- # stable RCs are incremental patches, so we need the previous stable patch
- %define stable_base %(echo $((%{stable_update} - 1)))
- %endif
- %endif
- %define rpmversion 3.%{base_sublevel}.%{stable_update}
- ## The not-released-kernel case ##
- %else
- # The next upstream release sublevel (base_sublevel+1)
- %define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
- # The rc snapshot level
- %define rcrev 0
- # The git snapshot level
- %define gitrev 0
- # Set rpm version accordingly
- %define rpmversion 3.%{upstream_sublevel}.0
- %endif
- # Nb: The above rcrev and gitrev values automagically define Patch00 and Patch01 below.
- # What parts do we want to build? We must build at least one kernel.
- # These are the kernels that are built IF the architecture allows it.
- # All should default to 1 (enabled) and be flipped to 0 (disabled)
- # by later arch-specific checks.
- # The following build options are enabled by default.
- # Use either --without <opt> in your rpmbuild command or force values
- # to 0 in here to disable them.
- #
- # standard kernel
- %define with_up %{?_without_up: 0} %{?!_without_up: 1}
- # kernel-smp (only valid for ppc 32-bit)
- %define with_smp %{?_without_smp: 0} %{?!_without_smp: 1}
- # kernel PAE (only valid for i686 (PAE) and ARM (lpae))
- %define with_pae %{?_without_pae: 0} %{?!_without_pae: 1}
- # kernel-debug
- %define with_debug %{?_without_debug: 0} %{?!_without_debug: 1}
- # kernel-doc
- %define with_doc %{?_without_doc: 0} %{?!_without_doc: 1}
- # kernel-headers
- %define with_headers %{?_without_headers: 0} %{?!_without_headers: 1}
- # kernel-modules-extra
- %define with_extra %{?_without_extra: 0} %{?!_without_extra: 1}
- # perf
- %define with_perf %{?_without_perf: 0} %{?!_without_perf: 1}
- # tools
- %define with_tools %{?_without_tools: 0} %{?!_without_tools: 1}
- # kernel-debuginfo
- %define with_debuginfo %{?_without_debuginfo: 0} %{?!_without_debuginfo: 1}
- # kernel-bootwrapper (for creating zImages from kernel + initrd)
- %define with_bootwrapper %{?_without_bootwrapper: 0} %{?!_without_bootwrapper: 1}
- # Want to build a the vsdo directories installed
- %define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1}
- #
- # Additional options for user-friendly one-off kernel building:
- #
- # Only build the base kernel (--with baseonly):
- %define with_baseonly %{?_with_baseonly: 1} %{?!_with_baseonly: 0}
- # Only build the smp kernel (--with smponly):
- %define with_smponly %{?_with_smponly: 1} %{?!_with_smponly: 0}
- # Only build the pae kernel (--with paeonly):
- %define with_paeonly %{?_with_paeonly: 1} %{?!_with_paeonly: 0}
- # Only build the debug kernel (--with dbgonly):
- %define with_dbgonly %{?_with_dbgonly: 1} %{?!_with_dbgonly: 0}
- #
- # should we do C=1 builds with sparse
- %define with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 0}
- #
- # Cross compile requested?
- %define with_cross %{?_with_cross: 1} %{?!_with_cross: 0}
- #
- # build a release kernel on rawhide
- %define with_release %{?_with_release: 1} %{?!_with_release: 0}
- # 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'.
- %define debugbuildsenabled 1
- # Want to build a vanilla kernel build without any non-upstream patches?
- %define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0}
- # Build the kernel-doc package, but don't fail the build if it botches.
- # Here "true" means "continue" and "false" means "fail the build".
- %if 0%{?released_kernel}
- %define doc_build_fail false
- %else
- %define doc_build_fail true
- %endif
- %define rawhide_skip_docs 0
- %if 0%{?rawhide_skip_docs}
- %define with_doc 0
- %define doc_build_fail true
- %endif
- # pkg_release is what we'll fill in for the rpm Release: field
- %if 0%{?released_kernel}
- %if 0%{?stable_rc}
- %define stable_rctag .rc%{stable_rc}
- %define pkg_release 0%{stable_rctag}.%{fedora_build}%{?buildid}%{?dist}
- %else
- %define pkg_release %{fedora_build}%{?buildid}%{?dist}
- %endif
- %else
- # non-released_kernel
- %if 0%{?rcrev}
- %define rctag .rc%rcrev
- %else
- %define rctag .rc0
- %endif
- %if 0%{?gitrev}
- %define gittag .git%gitrev
- %else
- %define gittag .git0
- %endif
- %define pkg_release 0%{?rctag}%{?gittag}.%{fedora_build}%{?buildid}%{?dist}
- %endif
- # The kernel tarball/base version
- %define kversion 3.%{base_sublevel}
- %define make_target bzImage
- %define KVERREL %{version}-%{release}.%{_target_cpu}
- %define hdrarch %_target_cpu
- %define asmarch %_target_cpu
- %if 0%{!?nopatches:1}
- %define nopatches 0
- %endif
- %if %{with_vanilla}
- %define nopatches 1
- %endif
- %if %{nopatches}
- %define with_bootwrapper 0
- %define variant -vanilla
- %else
- %define variant_fedora -fedora
- %endif
- %define using_upstream_branch 0
- %if 0%{?upstream_branch:1}
- %define stable_update 0
- %define using_upstream_branch 1
- %define variant -%{upstream_branch}%{?variant_fedora}
- %define pkg_release 0.%{fedora_build}%{upstream_branch_tag}%{?buildid}%{?dist}
- %endif
- %if !%{debugbuildsenabled}
- %define with_debug 0
- %endif
- %if !%{with_debuginfo}
- %define _enable_debug_packages 0
- %endif
- %define debuginfodir /usr/lib/debug
- # kernel PAE is only built on i686 and ARMv7.
- %ifnarch i686 armv7hl
- %define with_pae 0
- %endif
- # if requested, only build base kernel
- %if %{with_baseonly}
- %define with_smp 0
- %define with_pae 0
- %define with_debug 0
- %endif
- # if requested, only build smp kernel
- %if %{with_smponly}
- %define with_up 0
- %define with_pae 0
- %define with_debug 0
- %endif
- # if requested, only build pae kernel
- %if %{with_paeonly}
- %define with_up 0
- %define with_smp 0
- %define with_debug 0
- %endif
- # if requested, only build debug kernel
- %if %{with_dbgonly}
- %if %{debugbuildsenabled}
- %define with_up 0
- %define with_pae 0
- %endif
- %define with_smp 0
- %define with_pae 0
- %define with_tools 0
- %define with_perf 0
- %endif
- %define all_x86 i386 i686
- %if %{with_vdso_install}
- # These arches install vdso/ directories.
- %define vdso_arches %{all_x86} x86_64 ppc ppc64 ppc64p7 s390 s390x aarch64
- %endif
- # Overrides for generic default options
- # only ppc needs a separate smp kernel
- %ifnarch ppc
- %define with_smp 0
- %endif
- # don't do debug builds on anything but i686 and x86_64
- %ifnarch i686 x86_64
- %define with_debug 0
- %endif
- # only package docs noarch
- %ifnarch noarch
- %define with_doc 0
- %endif
- # don't build noarch kernels or headers (duh)
- %ifarch noarch
- %define with_up 0
- %define with_headers 0
- %define with_tools 0
- %define with_perf 0
- %define all_arch_configs kernel-%{version}-*.config
- %endif
- # bootwrapper is only on ppc
- %ifnarch ppc ppc64 ppc64p7
- %define with_bootwrapper 0
- %endif
- # sparse blows up on ppc64 and sparc64
- %ifarch ppc64 ppc ppc64p7
- %define with_sparse 0
- %endif
- # Per-arch tweaks
- %ifarch %{all_x86}
- %define asmarch x86
- %define hdrarch i386
- %define pae PAE
- %define all_arch_configs kernel-%{version}-i?86*.config
- %define image_install_path boot
- %define kernel_image arch/x86/boot/bzImage
- %endif
- %ifarch x86_64
- %define asmarch x86
- %define all_arch_configs kernel-%{version}-x86_64*.config
- %define image_install_path boot
- %define kernel_image arch/x86/boot/bzImage
- %endif
- %ifarch ppc64 ppc64p7
- %define asmarch powerpc
- %define hdrarch powerpc
- %define all_arch_configs kernel-%{version}-ppc64*.config
- %define image_install_path boot
- %define make_target vmlinux
- %define kernel_image vmlinux
- %define kernel_image_elf 1
- %endif
- %ifarch s390x
- %define asmarch s390
- %define hdrarch s390
- %define all_arch_configs kernel-%{version}-s390x.config
- %define image_install_path boot
- %define make_target image
- %define kernel_image arch/s390/boot/image
- %define with_tools 0
- %endif
- %ifarch ppc
- %define asmarch powerpc
- %define hdrarch powerpc
- %define all_arch_configs kernel-%{version}-ppc{-,.}*config
- %define image_install_path boot
- %define make_target vmlinux
- %define kernel_image vmlinux
- %define kernel_image_elf 1
- %endif
- %ifarch %{arm}
- %define all_arch_configs kernel-%{version}-arm*.config
- %define image_install_path boot
- %define asmarch arm
- %define hdrarch arm
- %define pae lpae
- %define make_target bzImage
- %define kernel_image arch/arm/boot/zImage
- # http://lists.infradead.org/pipermail/linux-arm-kernel/2012-March/091404.html
- %define kernel_mflags KALLSYMS_EXTRA_PASS=1
- # we only build headers/perf/tools on the base arm arches
- # just like we used to only build them on i386 for x86
- %ifnarch armv7hl
- %define with_headers 0
- %define with_perf 0
- %define with_tools 0
- %endif
- %endif
- %ifarch aarch64
- %define all_arch_configs kernel-%{version}-arm64.config
- %define asmarch arm64
- %define hdrarch arm64
- %define make_target Image.gz
- %define kernel_image arch/arm64/boot/Image.gz
- %define image_install_path boot
- %endif
- # Should make listnewconfig fail if there's config options
- # printed out?
- %if %{nopatches}%{using_upstream_branch}
- %define listnewconfig_fail 0
- %else
- %define listnewconfig_fail 1
- %endif
- # To temporarily exclude an architecture from being built, add it to
- # %%nobuildarches. Do _NOT_ use the ExclusiveArch: line, because if we
- # don't build kernel-headers then the new build system will no longer let
- # us use the previous build of that package -- it'll just be completely AWOL.
- # Which is a BadThing(tm).
- # We only build kernel-headers on the following...
- %define nobuildarches i386 s390
- %ifarch %nobuildarches
- %define with_up 0
- %define with_smp 0
- %define with_pae 0
- %define with_debuginfo 0
- %define with_perf 0
- %define with_tools 0
- %define _enable_debug_packages 0
- %endif
- %define with_pae_debug 0
- %if %{with_pae}
- %define with_pae_debug %{with_debug}
- %endif
- # Architectures we build tools/cpupower on
- %define cpupowerarchs %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm} aarch64
- #
- # Packages that need to be installed before the kernel is, because the %%post
- # scripts use them.
- #
- %define kernel_prereq fileutils, systemd >= 203-2
- %define initrd_prereq dracut >= 027
- #
- # This macro does requires, provides, conflicts, obsoletes for a kernel package.
- # %%kernel_reqprovconf <subpackage>
- # It uses any kernel_<subpackage>_conflicts and kernel_<subpackage>_obsoletes
- # macros defined above.
- #
- %define kernel_reqprovconf \
- Provides: kernel = %{rpmversion}-%{pkg_release}\
- Provides: kernel-%{_target_cpu} = %{rpmversion}-%{pkg_release}%{?1:+%{1}}\
- Provides: kernel-drm = 4.3.0\
- Provides: kernel-drm-nouveau = 16\
- Provides: kernel-modeset = 1\
- Provides: kernel-uname-r = %{KVERREL}%{?1:+%{1}}\
- Provides: kernel-highbank\
- Provides: kernel-highbank-uname-r = %{KVERREL}%{?1:+%{1}}\
- Provides: kernel-omap\
- Provides: kernel-omap-uname-r = %{KVERREL}%{?1:+%{1}}\
- Provides: kernel-tegra\
- Provides: kernel-tegra-uname-r = %{KVERREL}%{?1:+%{1}}\
- Requires(pre): %{kernel_prereq}\
- Requires(pre): %{initrd_prereq}\
- Requires(pre): linux-firmware >= 20130724-29.git31f6b30\
- Requires(preun): systemd >= 200\
- %{expand:%%{?kernel%{?1:_%{1}}_conflicts:Conflicts: %%{kernel%{?1:_%{1}}_conflicts}}}\
- %{expand:%%{?kernel%{?1:_%{1}}_obsoletes:Obsoletes: %%{kernel%{?1:_%{1}}_obsoletes}}}\
- %{expand:%%{?kernel%{?1:_%{1}}_provides:Provides: %%{kernel%{?1:_%{1}}_provides}}}\
- # We can't let RPM do the dependencies automatic because it'll then pick up\
- # a correct but undesirable perl dependency from the module headers which\
- # isn't required for the kernel proper to function\
- AutoReq: no\
- AutoProv: yes\
- %{nil}
- Name: kernel%{?variant}
- Group: System Environment/Kernel
- License: GPLv2 and Redistributable, no modification permitted
- URL: http://www.kernel.org/
- Version: %{rpmversion}
- Release: %{pkg_release}
- # DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD.
- # SET %%nobuildarches (ABOVE) INSTEAD
- ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ppc64p7 s390 s390x %{arm} aarch64
- ExclusiveOS: Linux
- %kernel_reqprovconf
- #
- # List the packages used during the kernel build
- #
- BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar
- BuildRequires: bzip2, xz, findutils, gzip, m4, perl, perl-Carp, make >= 3.78, diffutils, gawk
- BuildRequires: gcc >= 3.4.2, binutils >= 2.12, redhat-rpm-config, hmaccalc
- BuildRequires: net-tools, hostname, bc
- BuildRequires: xmlto, asciidoc
- %if %{with_sparse}
- BuildRequires: sparse >= 0.4.1
- %endif
- %if %{with_perf}
- BuildRequires: elfutils-devel zlib-devel binutils-devel newt-devel python-devel perl(ExtUtils::Embed) bison
- BuildRequires: audit-libs-devel
- %endif
- %if %{with_tools}
- BuildRequires: pciutils-devel gettext
- %endif
- BuildConflicts: rhbuildsys(DiskFree) < 500Mb
- %if %{with_debuginfo}
- # Fancy new debuginfo generation introduced in Fedora 8/RHEL 6.
- # The -r flag to find-debuginfo.sh invokes eu-strip --reloc-debug-sections
- # which reduces the number of relocations in kernel module .ko.debug files and
- # was introduced with rpm 4.9 and elfutils 0.153.
- BuildRequires: rpm-build >= 4.9.0-1, elfutils >= elfutils-0.153-1
- %define debuginfo_args --strict-build-id -r
- %endif
- %if %{signmodules}
- BuildRequires: openssl
- BuildRequires: pesign >= 0.10-4
- %endif
- %if %{with_cross}
- BuildRequires: binutils-%{_build_arch}-linux-gnu, gcc-%{_build_arch}-linux-gnu
- %define cross_opts CROSS_COMPILE=%{_build_arch}-linux-gnu-
- %endif
- Source0: ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-%{kversion}.tar.xz
- Source11: x509.genkey
- Source15: merge.pl
- Source16: mod-extra.list
- Source17: mod-extra.sh
- Source18: mod-sign.sh
- %define modsign_cmd %{SOURCE18}
- Source19: Makefile.release
- Source20: Makefile.config
- Source21: config-debug
- Source22: config-nodebug
- Source23: config-generic
- Source30: config-x86-generic
- Source31: config-i686-PAE
- Source32: config-x86-32-generic
- Source40: config-x86_64-generic
- Source50: config-powerpc-generic
- Source51: config-powerpc32-generic
- Source52: config-powerpc32-smp
- Source53: config-powerpc64
- Source54: config-powerpc64p7
- Source70: config-s390x
- Source100: config-arm-generic
- # Unified ARM kernels
- Source101: config-armv7-generic
- Source102: config-armv7
- Source103: config-armv7-lpae
- Source110: config-arm64
- # This file is intentionally left empty in the stock kernel. Its a nicety
- # added for those wanting to do custom rebuilds with altered config opts.
- Source1000: config-local
- # Sources for kernel-tools
- Source2000: cpupower.service
- Source2001: cpupower.config
- # Here should be only the patches up to the upstream canonical Linus tree.
- # For a stable release kernel
- %if 0%{?stable_update}
- %if 0%{?stable_base}
- %define stable_patch_00 patch-3.%{base_sublevel}.%{stable_base}.xz
- Patch00: %{stable_patch_00}
- %endif
- %if 0%{?stable_rc}
- %define stable_patch_01 patch-3.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.xz
- Patch01: %{stable_patch_01}
- %endif
- # non-released_kernel case
- # These are automagically defined by the rcrev and gitrev values set up
- # near the top of this spec file.
- %else
- %if 0%{?rcrev}
- Patch00: patch-3.%{upstream_sublevel}-rc%{rcrev}.xz
- %if 0%{?gitrev}
- Patch01: patch-3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.xz
- %endif
- %else
- # pre-{base_sublevel+1}-rc1 case
- %if 0%{?gitrev}
- Patch00: patch-3.%{base_sublevel}-git%{gitrev}.xz
- %endif
- %endif
- %endif
- %if %{using_upstream_branch}
- ### BRANCH PATCH ###
- %endif
- # we also need compile fixes for -vanilla
- Patch04: compile-fixes.patch
- # build tweak for build ID magic, even for -vanilla
- Patch05: makefile-after_link.patch
- %if !%{nopatches}
- # revert upstream patches we get via other methods
- Patch09: upstream-reverts.patch
- # Git trees.
- # Standalone patches
- #drop with next rebase
- Patch100: taint-vbox.patch
- #drop with next rebase
- Patch110: vmbugon-warnon.patch
- #drop with next rebase
- Patch201: debug-bad-pte-modules.patch
- Patch390: defaults-acpi-video.patch
- Patch396: acpi-sony-nonvs-blacklist.patch
- Patch450: input-kill-stupid-messages.patch
- Patch452: no-pcspkr-modalias.patch
- Patch460: serial-460800.patch
- Patch470: die-floppy-die.patch
- Patch510: silence-noise.patch
- Patch530: silence-fbcon-logo.patch
- Patch800: crash-driver.patch
- # crypto/
- # keys
- Patch900: keys-expand-keyring.patch
- Patch901: keys-krb-support.patch
- Patch902: keys-x509-improv.patch
- Patch903: keys-fixes.patch
- # secure boot
- Patch1000: secure-modules.patch
- Patch1001: modsign-uefi.patch
- Patch1002: sb-hibernate.patch
- Patch1003: sysrq-secure-boot.patch
- # virt + ksm patches
- # DRM
- # nouveau + drm fixes
- # intel drm is all merged upstream
- Patch1824: drm-intel-next.patch
- Patch1825: drm-i915-dp-stfu.patch
- Patch1826: drm-i915-hush-check-crtc-state.patch
- # Quiet boot fixes
- # silence the ACPI blacklist code
- Patch2802: silence-acpi-blacklist.patch
- # media patches
- Patch2899: v4l-dvb-fixes.patch
- Patch2900: v4l-dvb-update.patch
- Patch2901: v4l-dvb-experimental.patch
- # fs fixes
- # NFSv4
- # patches headed upstream
- Patch10000: fs-proc-devtree-remove_proc_entry.patch
- Patch12016: disable-i8042-check-on-apple-mac.patch
- Patch14000: hibernate-freeze-filesystems.patch
- Patch14010: lis3-improve-handling-of-null-rate.patch
- Patch15000: nowatchdog-on-virt.patch
- # ARM64
- # ARM
- # lpae
- Patch21001: arm-lpae-ax88796.patch
- Patch21004: arm-sound-soc-samsung-dma-avoid-another-64bit-division.patch
- Patch21005: arm-exynos-mp.patch
- Patch21006: arm-highbank-for-3.12.patch
- # ARM omap
- Patch21010: arm-omap-load-tfp410.patch
- # ARM tegra
- Patch21020: arm-tegra-usb-no-reset-linux33.patch
- # ARM wandboard
- Patch21030: arm-wandboard-quad.patch
- # https://git.kernel.org/cgit/linux/kernel/git/broonie/sound.git/patch/?id=3f1a91aa25579ba5e7268a47a73d2a83e4802c62
- # AM33xx
- Patch21100: am335x-bone.patch
- #rhbz 754518
- Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
- # https://fedoraproject.org/wiki/Features/Checkpoint_Restore
- Patch21242: criu-no-expert.patch
- #rhbz 892811
- Patch21247: ath9k_rx_dma_stop_check.patch
- Patch22000: weird-root-dentry-name-debug.patch
- #rhbz 927469
- Patch23006: fix-child-thread-introspection.patch
- Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch
- #rhbz 977040
- Patch25056: iwl3945-better-skb-management-in-rx-path.patch
- Patch25057: iwl4965-better-skb-management-in-rx-path.patch
- #rhbz 963715
- Patch25077: media-cx23885-Fix-TeVii-S471-regression-since-introduction-of-ts2020.patch
- #rhbz 985522
- Patch25107: ntp-Make-periodic-RTC-update-more-reliable.patch
- #rhbz 971893
- Patch25109: bonding-driver-alb-learning.patch
- #rhbz 902012
- Patch25114: elevator-Fix-a-race-in-elevator-switching-and-md.patch
- Patch25115: elevator-acquire-q-sysfs_lock-in-elevator_change.patch
- #rhbz 974072
- Patch25117: rt2800-add-support-for-rf3070.patch
- #rhbz 1015989
- Patch25122: netfilter-nf_conntrack-use-RCU-safe-kfree-for-conntr.patch
- #rhbz 982153
- Patch25123: iommu-Remove-stack-trace-from-broken-irq-remapping-warning.patch
- #rhbz 998732
- Patch25125: vfio-iommu-Fixed-interaction-of-VFIO_IOMMU_MAP_DMA.patch
- #rhbz 896695
- Patch25126: 0001-iwlwifi-don-t-WARN-on-host-commands-sent-when-firmwa.patch
- Patch25127: 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
- #rhbz 993744
- Patch25128: dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
- #rhbz 1000439
- Patch25129: cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
- #rhbz 1010679
- Patch25130: fix-radeon-sound.patch
- Patch25149: drm-radeon-24hz-audio-fixes.patch
- #rhbz 984696
- Patch25132: rt2800usb-slow-down-TX-status-polling.patch
- #rhbz 1023413
- Patch25135: alps-Support-for-Dell-XT2-model.patch
- #rhbz 1011621
- Patch25137: cifs-Allow-LANMAN-auth-for-unencapsulated-auth-methods.patch
- #rhbz 1025769
- Patch25142: iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
- Patch25143: drm-qxl-backport-fixes-for-Fedora.patch
- Patch25160: drm-qxl-fix-memory-leak-in-release-list-handling.patch
- Patch25144: Input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch
- #CVE-2013-4563 rhbz 1030015 1030017
- Patch25145: ipv6-fix-headroom-calculation-in-udp6_ufo_fragment.patch
- #rhbz 1015905
- Patch25146: 0001-ip6_output-fragment-outgoing-reassembled-skb-properl.patch
- Patch25147: 0002-netfilter-push-reasm-skb-through-instead-of-original.patch
- #rhbz 1011362
- Patch25148: alx-Reset-phy-speed-after-resume.patch
- #rhbz 1031086
- Patch25150: slab_common-Do-not-check-for-duplicate-slab-names.patch
- #rhbz 967652
- Patch25151: KVM-x86-fix-emulation-of-movzbl-bpl-eax.patch
- # Fix 15sec NFS mount delay
- Patch25152: sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
- Patch25153: sunrpc-replace-gssd_running-with-more-reliable-check.patch
- Patch25154: nfs-check-gssd-running-before-krb5i-auth.patch
- #CVE-2013-6382 rhbz 1033603 1034670
- Patch25157: xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
- #rhbz 1022733
- Patch25158: via-velocity-fix-netif_receive_skb-use-in-irq-disable.patch
- #rhbz 998342
- Patch25159: usbnet-fix-status-interrupt-urb-handling.patch
- #CVE-2013-6405 rhbz 1035875 1035887
- Patch25161: inet-prevent-leakage-of-uninitialized-memory-to-user.patch
- Patch25162: inet-fix-addr_len-msg_namelen-assignment-in-recv_error-and-rxpmtu-functions.patch
- #rhbz 958826
- Patch25164: dell-laptop.patch
- # END OF PATCH DEFINITIONS
- %endif
- BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
- %description
- The kernel package contains the Linux kernel (vmlinuz), the core of any
- Linux operating system. The kernel handles the basic functions
- of the operating system: memory allocation, process allocation, device
- input and output, etc.
- %package doc
- Summary: Various documentation bits found in the kernel source
- Group: Documentation
- %description doc
- This package contains documentation files from the kernel
- source. Various bits of information about the Linux kernel and the
- device drivers shipped with it are documented in these files.
- You'll want to install this package if you need a reference to the
- options that can be passed to Linux kernel modules at load time.
- %package headers
- Summary: Header files for the Linux kernel for use by glibc
- Group: Development/System
- Obsoletes: glibc-kernheaders < 3.0-46
- Provides: glibc-kernheaders = 3.0-46
- %description headers
- Kernel-headers includes the C header files that specify the interface
- between the Linux kernel and userspace libraries and programs. The
- header files define structures and constants that are needed for
- building most standard programs and are also needed for rebuilding the
- glibc package.
- %package bootwrapper
- Summary: Boot wrapper files for generating combined kernel + initrd images
- Group: Development/System
- Requires: gzip binutils
- %description bootwrapper
- Kernel-bootwrapper contains the wrapper code which makes bootable "zImage"
- files combining both kernel and initial ramdisk.
- %package debuginfo-common-%{_target_cpu}
- Summary: Kernel source files used by %{name}-debuginfo packages
- Group: Development/Debug
- %description debuginfo-common-%{_target_cpu}
- This package is required by %{name}-debuginfo subpackages.
- It provides the kernel source files common to all builds.
- %if %{with_perf}
- %package -n perf
- Summary: Performance monitoring for the Linux kernel
- Group: Development/System
- License: GPLv2
- %description -n perf
- This package contains the perf tool, which enables performance monitoring
- of the Linux kernel.
- %package -n perf-debuginfo
- Summary: Debug information for package perf
- Group: Development/Debug
- Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}
- AutoReqProv: no
- %description -n perf-debuginfo
- This package provides debug information for the perf package.
- # Note that this pattern only works right to match the .build-id
- # symlinks because of the trailing nonmatching alternation and
- # the leading .*, because of find-debuginfo.sh's buggy handling
- # of matching the pattern against the symlinks file.
- %{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{_bindir}/perf(\.debug)?|.*%%{_libexecdir}/perf-core/.*|XXX' -o perf-debuginfo.list}
- %package -n python-perf
- Summary: Python bindings for apps which will manipulate perf events
- Group: Development/Libraries
- %description -n python-perf
- The python-perf package contains a module that permits applications
- written in the Python programming language to use the interface
- to manipulate perf events.
- %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
- %package -n python-perf-debuginfo
- Summary: Debug information for package perf python bindings
- Group: Development/Debug
- Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}
- AutoReqProv: no
- %description -n python-perf-debuginfo
- This package provides debug information for the perf python bindings.
- # the python_sitearch macro should already be defined from above
- %{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{python_sitearch}/perf.so(\.debug)?|XXX' -o python-perf-debuginfo.list}
- %endif # with_perf
- %if %{with_tools}
- %package -n kernel-tools
- Summary: Assortment of tools for the Linux kernel
- Group: Development/System
- License: GPLv2
- Provides: cpupowerutils = 1:009-0.6.p1
- Obsoletes: cpupowerutils < 1:009-0.6.p1
- 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
- Requires: kernel-tools-libs = %{version}-%{release}
- %description -n kernel-tools
- This package contains the tools/ directory from the kernel source
- and the supporting documentation.
- %package -n kernel-tools-libs
- Summary: Libraries for the kernels-tools
- Group: Development/System
- License: GPLv2
- %description -n kernel-tools-libs
- This package contains the libraries built from the tools/ directory
- from the kernel source.
- %package -n kernel-tools-libs-devel
- Summary: Assortment of tools for the Linux kernel
- Group: Development/System
- License: GPLv2
- Requires: kernel-tools = %{version}-%{release}
- Provides: cpupowerutils-devel = 1:009-0.6.p1
- Obsoletes: cpupowerutils-devel < 1:009-0.6.p1
- Requires: kernel-tools-libs = %{version}-%{release}
- Provides: kernel-tools-devel
- %description -n kernel-tools-libs-devel
- This package contains the development files for the tools/ directory from
- the kernel source.
- %package -n kernel-tools-debuginfo
- Summary: Debug information for package kernel-tools
- Group: Development/Debug
- Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}
- AutoReqProv: no
- %description -n kernel-tools-debuginfo
- This package provides debug information for package kernel-tools.
- # Note that this pattern only works right to match the .build-id
- # symlinks because of the trailing nonmatching alternation and
- # the leading .*, because of find-debuginfo.sh's buggy handling
- # of matching the pattern against the symlinks file.
- %{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{_bindir}/centrino-decode(\.debug)?|.*%%{_bindir}/powernow-k8-decode(\.debug)?|.*%%{_bindir}/cpupower(\.debug)?|.*%%{_libdir}/libcpupower.*|.*%%{_bindir}/turbostat(\.debug)?|.*%%{_bindir}/x86_energy_perf_policy(\.debug)?|XXX' -o kernel-tools-debuginfo.list}
- %endif # with_tools
- #
- # This macro creates a kernel-<subpackage>-debuginfo package.
- # %%kernel_debuginfo_package <subpackage>
- #
- %define kernel_debuginfo_package() \
- %package %{?1:%{1}-}debuginfo\
- Summary: Debug information for package %{name}%{?1:-%{1}}\
- Group: Development/Debug\
- Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release}\
- Provides: %{name}%{?1:-%{1}}-debuginfo-%{_target_cpu} = %{version}-%{release}\
- AutoReqProv: no\
- %description -n %{name}%{?1:-%{1}}-debuginfo\
- This package provides debug information for package %{name}%{?1:-%{1}}.\
- This is required to use SystemTap with %{name}%{?1:-%{1}}-%{KVERREL}.\
- %{expand:%%global debuginfo_args %{?debuginfo_args} -p '/.*/%%{KVERREL}%{?1:[+]%{1}}/.*|/.*%%{KVERREL}%{?1:\+%{1}}(\.debug)?' -o debuginfo%{?1}.list}\
- %{nil}
- #
- # This macro creates a kernel-<subpackage>-devel package.
- # %%kernel_devel_package <subpackage> <pretty-name>
- #
- %define kernel_devel_package() \
- %package %{?1:%{1}-}devel\
- Summary: Development package for building kernel modules to match the %{?2:%{2} }kernel\
- Group: System Environment/Kernel\
- Provides: kernel%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\
- Provides: kernel-devel-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
- Provides: kernel-devel = %{version}-%{release}%{?1:+%{1}}\
- Provides: kernel-devel-uname-r = %{KVERREL}%{?1:+%{1}}\
- AutoReqProv: no\
- Requires(pre): /usr/bin/find\
- Requires: perl\
- %description -n kernel%{?variant}%{?1:-%{1}}-devel\
- This package provides kernel headers and makefiles sufficient to build modules\
- against the %{?2:%{2} }kernel package.\
- %{nil}
- #
- # This macro creates a kernel-<subpackage>-modules-extra package.
- # %%kernel_modules_extra_package <subpackage> <pretty-name>
- #
- %define kernel_modules_extra_package() \
- %package %{?1:%{1}-}modules-extra\
- Summary: Extra kernel modules to match the %{?2:%{2} }kernel\
- Group: System Environment/Kernel\
- Provides: kernel%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{version}-%{release}\
- Provides: kernel-modules-extra-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
- Provides: kernel-modules-extra = %{version}-%{release}%{?1:+%{1}}\
- Provides: installonlypkg(kernel-module)\
- Provides: kernel-modules-extra-uname-r = %{KVERREL}%{?1:+%{1}}\
- Requires: kernel-uname-r = %{KVERREL}%{?1:+%{1}}\
- AutoReqProv: no\
- %description -n kernel%{?variant}%{?1:-%{1}}-modules-extra\
- This package provides less commonly used kernel modules for the %{?2:%{2} }kernel package.\
- %{nil}
- #
- # This macro creates a kernel-<subpackage> and its -devel and -debuginfo too.
- # %%define variant_summary The Linux kernel compiled for <configuration>
- # %%kernel_variant_package [-n <pretty-name>] <subpackage>
- #
- %define kernel_variant_package(n:) \
- %package %1\
- Summary: %{variant_summary}\
- Group: System Environment/Kernel\
- %kernel_reqprovconf\
- %{expand:%%kernel_devel_package %1 %{!?-n:%1}%{?-n:%{-n*}}}\
- %if %{with_extra}\
- %{expand:%%kernel_modules_extra_package %1 %{!?-n:%1}%{?-n:%{-n*}}}\
- %endif\
- %{expand:%%kernel_debuginfo_package %1}\
- %{nil}
- # First the auxiliary packages of the main kernel package.
- %kernel_devel_package
- %if %{with_extra}
- %kernel_modules_extra_package
- %endif
- %kernel_debuginfo_package
- # Now, each variant package.
- %define variant_summary The Linux kernel compiled for SMP machines
- %kernel_variant_package -n SMP smp
- %description smp
- This package includes a SMP version of the Linux kernel. It is
- required only on machines with two or more CPUs as well as machines with
- hyperthreading technology.
- Install the kernel-smp package if your machine uses two or more CPUs.
- %ifnarch armv7hl
- %define variant_summary The Linux kernel compiled for PAE capable machines
- %kernel_variant_package %{pae}
- %description %{pae}
- This package includes a version of the Linux kernel with support for up to
- 64GB of high memory. It requires a CPU with Physical Address Extensions (PAE).
- The non-PAE kernel can only address up to 4GB of memory.
- Install the kernel-PAE package if your machine has more than 4GB of memory.
- %else
- %define variant_summary The Linux kernel compiled for Cortex-A15
- %kernel_variant_package %{pae}
- %description %{pae}
- This package includes a version of the Linux kernel with support for
- Cortex-A15 devices with LPAE and HW virtualisation support
- %endif
- %define variant_summary The Linux kernel compiled with extra debugging enabled for PAE capable machines
- %kernel_variant_package %{pae}debug
- Obsoletes: kernel-PAE-debug
- %description %{pae}debug
- This package includes a version of the Linux kernel with support for up to
- 64GB of high memory. It requires a CPU with Physical Address Extensions (PAE).
- The non-PAE kernel can only address up to 4GB of memory.
- Install the kernel-PAE package if your machine has more than 4GB of memory.
- This variant of the kernel has numerous debugging options enabled.
- It should only be installed when trying to gather additional information
- on kernel bugs, as some of these options impact performance noticably.
- %define variant_summary The Linux kernel compiled with extra debugging enabled
- %kernel_variant_package debug
- %description debug
- The kernel package contains the Linux kernel (vmlinuz), the core of any
- Linux operating system. The kernel handles the basic functions
- of the operating system: memory allocation, process allocation, device
- input and output, etc.
- This variant of the kernel has numerous debugging options enabled.
- It should only be installed when trying to gather additional information
- on kernel bugs, as some of these options impact performance noticably.
- %prep
- # do a few sanity-checks for --with *only builds
- %if %{with_baseonly}
- %if !%{with_up}%{with_pae}
- echo "Cannot build --with baseonly, up build is disabled"
- exit 1
- %endif
- %endif
- %if %{with_smponly}
- %if !%{with_smp}
- echo "Cannot build --with smponly, smp build is disabled"
- exit 1
- %endif
- %endif
- %if "%{baserelease}" == "0"
- echo "baserelease must be greater than zero"
- exit 1
- %endif
- # more sanity checking; do it quietly
- if [ "%{patches}" != "%%{patches}" ] ; then
- for patch in %{patches} ; do
- if [ ! -f $patch ] ; then
- echo "ERROR: Patch ${patch##/*/} listed in specfile but is missing"
- exit 1
- fi
- done
- fi 2>/dev/null
- patch_command='patch -p1 -F1 -s'
- ApplyPatch()
- {
- local patch=$1
- shift
- if [ ! -f $RPM_SOURCE_DIR/$patch ]; then
- exit 1
- fi
- %if !%{using_upstream_branch}
- if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME%%%%%{?variant}}.spec ; then
- if [ "${patch:0:8}" != "patch-3." ] ; then
- echo "ERROR: Patch $patch not listed as a source patch in specfile"
- exit 1
- fi
- fi 2>/dev/null
- %endif
- case "$patch" in
- *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
- *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
- *.xz) unxz < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
- *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;;
- esac
- }
- # don't apply patch if it's empty
- ApplyOptionalPatch()
- {
- local patch=$1
- shift
- if [ ! -f $RPM_SOURCE_DIR/$patch ]; then
- exit 1
- fi
- local C=$(wc -l $RPM_SOURCE_DIR/$patch | awk '{print $1}')
- if [ "$C" -gt 9 ]; then
- ApplyPatch $patch ${1+"$@"}
- fi
- }
- # First we unpack the kernel tarball.
- # If this isn't the first make prep, we use links to the existing clean tarball
- # which speeds things up quite a bit.
- # Update to latest upstream.
- %if 0%{?released_kernel}
- %define vanillaversion 3.%{base_sublevel}
- # non-released_kernel case
- %else
- %if 0%{?rcrev}
- %define vanillaversion 3.%{upstream_sublevel}-rc%{rcrev}
- %if 0%{?gitrev}
- %define vanillaversion 3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}
- %endif
- %else
- # pre-{base_sublevel+1}-rc1 case
- %if 0%{?gitrev}
- %define vanillaversion 3.%{base_sublevel}-git%{gitrev}
- %else
- %define vanillaversion 3.%{base_sublevel}
- %endif
- %endif
- %endif
- # %%{vanillaversion} : the full version name, e.g. 2.6.35-rc6-git3
- # %%{kversion} : the base version, e.g. 2.6.34
- # Use kernel-%%{kversion}%%{?dist} as the top-level directory name
- # so we can prep different trees within a single git directory.
- # Build a list of the other top-level kernel tree directories.
- # This will be used to hardlink identical vanilla subdirs.
- sharedirs=$(find "$PWD" -maxdepth 1 -type d -name 'kernel-3.*' \
- | grep -x -v "$PWD"/kernel-%{kversion}%{?dist}) ||:
- # Delete all old stale trees.
- if [ -d kernel-%{kversion}%{?dist} ]; then
- cd kernel-%{kversion}%{?dist}
- for i in linux-*
- do
- if [ -d $i ]; then
- # Just in case we ctrl-c'd a prep already
- rm -rf deleteme.%{_target_cpu}
- # Move away the stale away, and delete in background.
- mv $i deleteme-$i
- rm -rf deleteme* &
- fi
- done
- cd ..
- fi
- # Generate new tree
- if [ ! -d kernel-%{kversion}%{?dist}/vanilla-%{vanillaversion} ]; then
- if [ -d kernel-%{kversion}%{?dist}/vanilla-%{kversion} ]; then
- # The base vanilla version already exists.
- cd kernel-%{kversion}%{?dist}
- # Any vanilla-* directories other than the base one are stale.
- for dir in vanilla-*; do
- [ "$dir" = vanilla-%{kversion} ] || rm -rf $dir &
- done
- else
- rm -f pax_global_header
- # Look for an identical base vanilla dir that can be hardlinked.
- for sharedir in $sharedirs ; do
- if [[ ! -z $sharedir && -d $sharedir/vanilla-%{kversion} ]] ; then
- break
- fi
- done
- if [[ ! -z $sharedir && -d $sharedir/vanilla-%{kversion} ]] ; then
- %setup -q -n kernel-%{kversion}%{?dist} -c -T
- cp -rl $sharedir/vanilla-%{kversion} .
- else
- %setup -q -n kernel-%{kversion}%{?dist} -c
- mv linux-%{kversion} vanilla-%{kversion}
- fi
- fi
- %if "%{kversion}" != "%{vanillaversion}"
- for sharedir in $sharedirs ; do
- if [[ ! -z $sharedir && -d $sharedir/vanilla-%{vanillaversion} ]] ; then
- break
- fi
- done
- if [[ ! -z $sharedir && -d $sharedir/vanilla-%{vanillaversion} ]] ; then
- cp -rl $sharedir/vanilla-%{vanillaversion} .
- else
- # Need to apply patches to the base vanilla version.
- cp -rl vanilla-%{kversion} vanilla-%{vanillaversion}
- cd vanilla-%{vanillaversion}
- # Update vanilla to the latest upstream.
- # (non-released_kernel case only)
- %if 0%{?rcrev}
- ApplyPatch patch-3.%{upstream_sublevel}-rc%{rcrev}.xz
- %if 0%{?gitrev}
- ApplyPatch patch-3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.xz
- %endif
- %else
- # pre-{base_sublevel+1}-rc1 case
- %if 0%{?gitrev}
- ApplyPatch patch-3.%{base_sublevel}-git%{gitrev}.xz
- %endif
- %endif
- cd ..
- fi
- %endif
- else
- # We already have all vanilla dirs, just change to the top-level directory.
- cd kernel-%{kversion}%{?dist}
- fi
- # Now build the fedora kernel tree.
- cp -rl vanilla-%{vanillaversion} linux-%{KVERREL}
- cd linux-%{KVERREL}
- # released_kernel with possible stable updates
- %if 0%{?stable_base}
- ApplyPatch %{stable_patch_00}
- %endif
- %if 0%{?stable_rc}
- ApplyPatch %{stable_patch_01}
- %endif
- %if %{using_upstream_branch}
- ### BRANCH APPLY ###
- %endif
- # Drop some necessary files from the source dir into the buildroot
- cp $RPM_SOURCE_DIR/config-* .
- cp %{SOURCE15} .
- %if !%{debugbuildsenabled}
- %if %{with_release}
- # The normal build is a really debug build and the user has explicitly requested
- # a release kernel. Change the config files into non-debug versions.
- make -f %{SOURCE19} config-release
- %endif
- %endif
- # Dynamically generate kernel .config files from config-* files
- make -f %{SOURCE20} VERSION=%{version} configs
- # Merge in any user-provided local config option changes
- for i in kernel-%{version}-*.config
- do
- mv $i $i.tmp
- ./merge.pl %{SOURCE1000} $i.tmp > $i
- rm $i.tmp
- done
- ApplyPatch makefile-after_link.patch
- #
- # misc small stuff to make things compile
- #
- ApplyOptionalPatch compile-fixes.patch
- %if !%{nopatches}
- # revert patches from upstream that conflict or that we get via other means
- ApplyOptionalPatch upstream-reverts.patch -R
- #drop with next rebase
- ApplyPatch taint-vbox.patch
- #drop with next rebase
- ApplyPatch vmbugon-warnon.patch
- #drop with next rebase
- ApplyPatch debug-bad-pte-modules.patch
- # Architecture patches
- # x86(-64)
- # ARM64
- #
- # ARM
- #
- ApplyPatch arm-lpae-ax88796.patch
- ApplyPatch arm-sound-soc-samsung-dma-avoid-another-64bit-division.patch
- ApplyPatch arm-exynos-mp.patch
- ApplyPatch arm-highbank-for-3.12.patch
- ApplyPatch arm-omap-load-tfp410.patch
- ApplyPatch arm-tegra-usb-no-reset-linux33.patch
- ApplyPatch arm-wandboard-quad.patch
- # Fix OMAP and AM33xx (BeagleBone)
- ApplyPatch am335x-bone.patch
- #
- # bugfixes to drivers and filesystems
- #
- # ext4
- # xfs
- # btrfs
- # eCryptfs
- # NFSv4
- # USB
- # WMI
- # ACPI
- ApplyPatch defaults-acpi-video.patch
- ApplyPatch acpi-sony-nonvs-blacklist.patch
- #
- # PCI
- #
- #
- # SCSI Bits.
- #
- # ACPI
- # ALSA
- # Networking
- # Misc fixes
- # The input layer spews crap no-one cares about.
- ApplyPatch input-kill-stupid-messages.patch
- # stop floppy.ko from autoloading during udev...
- ApplyPatch die-floppy-die.patch
- ApplyPatch no-pcspkr-modalias.patch
- # Allow to use 480600 baud on 16C950 UARTs
- ApplyPatch serial-460800.patch
- # Silence some useless messages that still get printed with 'quiet'
- ApplyPatch silence-noise.patch
- # Make fbcon not show the penguins with 'quiet'
- ApplyPatch silence-fbcon-logo.patch
- # Changes to upstream defaults.
- # /dev/crash driver.
- ApplyPatch crash-driver.patch
- # crypto/
- # keys
- ApplyPatch keys-expand-keyring.patch
- ApplyPatch keys-krb-support.patch
- ApplyPatch keys-x509-improv.patch
- ApplyPatch keys-fixes.patch
- # secure boot
- ApplyPatch secure-modules.patch
- ApplyPatch modsign-uefi.patch
- ApplyPatch sb-hibernate.patch
- ApplyPatch sysrq-secure-boot.patch
- # Assorted Virt Fixes
- # DRM core
- # Nouveau DRM
- # Intel DRM
- ApplyOptionalPatch drm-intel-next.patch
- ApplyPatch drm-i915-dp-stfu.patch
- ApplyPatch drm-i915-hush-check-crtc-state.patch
- # Radeon DRM
- # silence the ACPI blacklist code
- ApplyPatch silence-acpi-blacklist.patch
- # V4L/DVB updates/fixes/experimental drivers
- # apply if non-empty
- ApplyOptionalPatch v4l-dvb-fixes.patch
- ApplyOptionalPatch v4l-dvb-update.patch
- ApplyOptionalPatch v4l-dvb-experimental.patch
- # Patches headed upstream
- ApplyPatch fs-proc-devtree-remove_proc_entry.patch
- ApplyPatch disable-i8042-check-on-apple-mac.patch
- # FIXME: REBASE
- #ApplyPatch hibernate-freeze-filesystems.patch
- ApplyPatch lis3-improve-handling-of-null-rate.patch
- # Disable watchdog on virtual machines.
- ApplyPatch nowatchdog-on-virt.patch
- #rhbz 754518
- ApplyPatch scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
- ApplyPatch weird-root-dentry-name-debug.patch
- # https://fedoraproject.org/wiki/Features/Checkpoint_Restore
- ApplyPatch criu-no-expert.patch
- #rhbz 892811
- ApplyPatch ath9k_rx_dma_stop_check.patch
- #rhbz 927469
- ApplyPatch fix-child-thread-introspection.patch
- ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch
- #rhbz 977040
- ApplyPatch iwl3945-better-skb-management-in-rx-path.patch
- ApplyPatch iwl4965-better-skb-management-in-rx-path.patch
- #rhbz 963715
- ApplyPatch media-cx23885-Fix-TeVii-S471-regression-since-introduction-of-ts2020.patch
- #rhbz 985522
- ApplyPatch ntp-Make-periodic-RTC-update-more-reliable.patch
- #rhbz 971893
- ApplyPatch bonding-driver-alb-learning.patch
- #rhbz 902012
- ApplyPatch elevator-Fix-a-race-in-elevator-switching-and-md.patch
- ApplyPatch elevator-acquire-q-sysfs_lock-in-elevator_change.patch
- #rhbz 974072
- ApplyPatch rt2800-add-support-for-rf3070.patch
- #rhbz 1015989
- ApplyPatch netfilter-nf_conntrack-use-RCU-safe-kfree-for-conntr.patch
- #rhbz 982153
- ApplyPatch iommu-Remove-stack-trace-from-broken-irq-remapping-warning.patch
- #rhbz 998732
- ApplyPatch vfio-iommu-Fixed-interaction-of-VFIO_IOMMU_MAP_DMA.patch
- #rhbz 896695
- ApplyPatch 0001-iwlwifi-don-t-WARN-on-host-commands-sent-when-firmwa.patch
- ApplyPatch 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
- #rhbz 993744
- ApplyPatch dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
- #rhbz 1000439
- ApplyPatch cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
- #rhbz 1010679
- ApplyPatch fix-radeon-sound.patch
- ApplyPatch drm-radeon-24hz-audio-fixes.patch
- #rhbz 984696
- ApplyPatch rt2800usb-slow-down-TX-status-polling.patch
- #rhbz 1023413
- ApplyPatch alps-Support-for-Dell-XT2-model.patch
- #rhbz 1011621
- ApplyPatch cifs-Allow-LANMAN-auth-for-unencapsulated-auth-methods.patch
- #rhbz 1025769
- ApplyPatch iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
- ApplyPatch drm-qxl-backport-fixes-for-Fedora.patch
- ApplyPatch drm-qxl-fix-memory-leak-in-release-list-handling.patch
- ApplyPatch Input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch
- #CVE-2013-4563 rhbz 1030015 1030017
- ApplyPatch ipv6-fix-headroom-calculation-in-udp6_ufo_fragment.patch
- #rhbz 1015905
- ApplyPatch 0001-ip6_output-fragment-outgoing-reassembled-skb-properl.patch
- ApplyPatch 0002-netfilter-push-reasm-skb-through-instead-of-original.patch
- #rhbz 1011362
- ApplyPatch alx-Reset-phy-speed-after-resume.patch
- #rhbz 1031086
- ApplyPatch slab_common-Do-not-check-for-duplicate-slab-names.patch
- #rhbz 967652
- ApplyPatch KVM-x86-fix-emulation-of-movzbl-bpl-eax.patch
- # Fix 15sec NFS mount delay
- ApplyPatch sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
- ApplyPatch sunrpc-replace-gssd_running-with-more-reliable-check.patch
- ApplyPatch nfs-check-gssd-running-before-krb5i-auth.patch
- #CVE-2013-6382 rhbz 1033603 1034670
- ApplyPatch xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
- #rhbz 1022733
- ApplyPatch via-velocity-fix-netif_receive_skb-use-in-irq-disable.patch
- #rhbz 998342
- ApplyPatch usbnet-fix-status-interrupt-urb-handling.patch
- #CVE-2013-6405 rhbz 1035875 1035887
- ApplyPatch inet-prevent-leakage-of-uninitialized-memory-to-user.patch
- ApplyPatch inet-fix-addr_len-msg_namelen-assignment-in-recv_error-and-rxpmtu-functions.patch
- #rhbz 958826
- ApplyPatch dell-laptop.patch
- # END OF PATCH APPLICATIONS
- %endif
- # Any further pre-build tree manipulations happen here.
- chmod +x scripts/checkpatch.pl
- # This Prevents scripts/setlocalversion from mucking with our version numbers.
- touch .scmversion
- # only deal with configs if we are going to build for the arch
- %ifnarch %nobuildarches
- mkdir configs
- %if !%{debugbuildsenabled}
- rm -f kernel-%{version}-*debug.config
- %endif
- %define make make %{?cross_opts}
- # now run oldconfig over all the config files
- for i in *.config
- do
- mv $i .config
- Arch=`head -1 .config | cut -b 3-`
- make ARCH=$Arch listnewconfig | grep -E '^CONFIG_' >.newoptions || true
- %if %{listnewconfig_fail}
- if [ -s .newoptions ]; then
- cat .newoptions
- exit 1
- fi
- %endif
- rm -f .newoptions
- make ARCH=$Arch oldnoconfig
- echo "# $Arch" > configs/$i
- cat .config >> configs/$i
- done
- # end of kernel config
- %endif
- # get rid of unwanted files resulting from patch fuzz
- find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
- # remove unnecessary SCM files
- find . -name .gitignore -exec rm -f {} \; >/dev/null
- cd ..
- ###
- ### build
- ###
- %build
- %if %{with_sparse}
- %define sparse_mflags C=1
- %endif
- %if %{with_debuginfo}
- # This override tweaks the kernel makefiles so that we run debugedit on an
- # object before embedding it. When we later run find-debuginfo.sh, it will
- # run debugedit again. The edits it does change the build ID bits embedded
- # in the stripped object, but repeating debugedit is a no-op. We do it
- # beforehand to get the proper final build ID bits into the embedded image.
- # This affects the vDSO images in vmlinux, and the vmlinux image in bzImage.
- export AFTER_LINK=\
- 'sh -xc "/usr/lib/rpm/debugedit -b $$RPM_BUILD_DIR -d /usr/src/debug \
- -i $@ > [email protected]"'
- %endif
- cp_vmlinux()
- {
- eu-strip --remove-comment -o "$2" "$1"
- }
- BuildKernel() {
- MakeTarget=$1
- KernelImage=$2
- Flavour=$3
- Flav=${Flavour:++${Flavour}}
- InstallName=${4:-vmlinuz}
- # Pick the right config file for the kernel we're building
- Config=kernel-%{version}-%{_target_cpu}${Flavour:+-${Flavour}}.config
- DevelDir=/usr/src/kernels/%{KVERREL}${Flav}
- # When the bootable image is just the ELF kernel, strip it.
- # We already copy the unstripped file into the debuginfo package.
- if [ "$KernelImage" = vmlinux ]; then
- CopyKernel=cp_vmlinux
- else
- CopyKernel=cp
- fi
- KernelVer=%{version}-%{release}.%{_target_cpu}${Flav}
- echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}...
- %if 0%{?stable_update}
- # make sure SUBLEVEL is incremented on a stable release. Sigh 3.x.
- perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{?stablerev}/" Makefile
- %endif
- # make sure EXTRAVERSION says what we want it to say
- perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{release}.%{_target_cpu}${Flav}/" Makefile
- # if pre-rc1 devel kernel, must fix up PATCHLEVEL for our versioning scheme
- %if !0%{?rcrev}
- %if 0%{?gitrev}
- perl -p -i -e 's/^PATCHLEVEL.*/PATCHLEVEL = %{upstream_sublevel}/' Makefile
- %endif
- %endif
- # and now to start the build process
- make -s mrproper
- cp configs/$Config .config
- %if %{signmodules}
- cp %{SOURCE11} .
- %endif
- chmod +x scripts/sign-file
- Arch=`head -1 .config | cut -b 3-`
- echo USING ARCH=$Arch
- make -s ARCH=$Arch oldnoconfig >/dev/null
- %{make} -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags} %{?kernel_mflags}
- %{make} -s ARCH=$Arch V=1 %{?_smp_mflags} modules %{?sparse_mflags} || exit 1
- %ifarch %{arm} aarch64
- %{make} -s ARCH=$Arch V=1 dtbs
- mkdir -p $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer
- install -m 644 arch/$Arch/boot/dts/*.dtb $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer/
- rm -f arch/$Arch/boot/dts/*.dtb
- %endif
- # Start installing the results
- %if %{with_debuginfo}
- mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/boot
- mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/%{image_install_path}
- %endif
- mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
- install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
- install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
- # We estimate the size of the initramfs because rpm needs to take this size
- # into consideration when performing disk space calculations. (See bz #530778)
- dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img bs=1M count=20
- if [ -f arch/$Arch/boot/zImage.stub ]; then
- cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
- fi
- %if %{signmodules}
- # Sign the image if we're using EFI
- %pesign -s -i $KernelImage -o vmlinuz.signed
- if [ ! -s vmlinuz.signed ]; then
- echo "pesigning failed"
- exit 1
- fi
- mv vmlinuz.signed $KernelImage
- %endif
- $CopyKernel $KernelImage \
- $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
- chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
- # hmac sign the kernel for FIPS
- echo "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac"
- ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
- sha512hmac $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer | sed -e "s,$RPM_BUILD_ROOT,," > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac;
- mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer
- # Override $(mod-fw) because we don't want it to install any firmware
- # we'll get it from the linux-firmware package and we don't want conflicts
- %{make} -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer mod-fw=
- %ifarch %{vdso_arches}
- %{make} -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer
- if [ ! -s ldconfig-kernel.conf ]; then
- echo > ldconfig-kernel.conf "\
- # Placeholder file, no vDSO hwcap entries used in this kernel."
- fi
- %{__install} -D -m 444 ldconfig-kernel.conf \
- $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-$KernelVer.conf
- %endif
- # And save the headers/makefiles etc for building modules against
- #
- # This all looks scary, but the end result is supposed to be:
- # * all arch relevant include/ files
- # * all Makefile/Kconfig files
- # * all script/ files
- 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
- (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source)
- # dirs for additional modules per module-init-tools, kbuild/modules.txt
- mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/extra
- mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates
- # first copy everything
- cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
- cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
- cp System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
- if [ -s Module.markers ]; then
- cp Module.markers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
- fi
- # then drop all but the needed Makefiles/Kconfig files
- rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Documentation
- rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts
- rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
- cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
- 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
- rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*.o
- rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*/*.o
- %ifarch ppc ppc64 ppc64p7
- cp -a --parents arch/powerpc/lib/crtsavres.[So] $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
- %endif
- if [ -d arch/%{asmarch}/include ]; then
- cp -a --parents arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
- fi
- # include the machine specific headers for ARM variants, if available.
- %ifarch %{arm}
- if [ -d arch/%{asmarch}/mach-${Flavour}/include ]; then
- cp -a --parents arch/%{asmarch}/mach-${Flavour}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
- fi
- %endif
- cp -a include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
- # 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
- # Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
- cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf
- %if %{with_debuginfo}
- if test -s vmlinux.id; then
- cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id
- else
- echo >&2 "*** ERROR *** no vmlinux build ID! ***"
- exit 1
- fi
- #
- # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
- #
- mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer
- cp vmlinux $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer
- %endif
- find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >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 > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1
- if [ ! -z "$3" ]; then
- sed -r -e "/^($3)\$/d" -i $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1
- fi
- }
- collect_modules_list networking \
- 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|rt(l_|2x00)(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' '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
- ( find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name '*.ko' | xargs /sbin/modinfo -l | \
- grep -E -v 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' ) && exit 1
- # remove files that will be auto generated by depmod at rpm -i time
- pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/
- rm -f modules.{alias*,builtin.bin,dep*,*map,symbols*,devname,softdep}
- popd
- %if %{with_extra}
- # Call the modules-extra script to move things around
- %{SOURCE17} $RPM_BUILD_ROOT/lib/modules/$KernelVer %{SOURCE16}
- %endif
- %if %{signmodules}
- # Save the signing keys so we can sign the modules in __modsign_install_post
- cp signing_key.priv signing_key.priv.sign${Flav}
- cp signing_key.x509 signing_key.x509.sign${Flav}
- %endif
- # Move the devel headers out of the root file system
- mkdir -p $RPM_BUILD_ROOT/usr/src/kernels
- mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir
- # This is going to create a broken link during the build, but we don't use
- # it after this point. We need the link to actually point to something
- # when kernel-devel is installed, and a relative link doesn't work across
- # the F17 UsrMove feature.
- ln -sf $DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
- # prune junk from kernel-devel
- find $RPM_BUILD_ROOT/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
- }
- ###
- # DO it...
- ###
- # prepare directories
- rm -rf $RPM_BUILD_ROOT
- mkdir -p $RPM_BUILD_ROOT/boot
- mkdir -p $RPM_BUILD_ROOT%{_libexecdir}
- cd linux-%{KVERREL}
- %if %{with_debug}
- BuildKernel %make_target %kernel_image debug
- %endif
- %if %{with_pae_debug}
- BuildKernel %make_target %kernel_image %{pae}debug
- %endif
- %if %{with_pae}
- BuildKernel %make_target %kernel_image %{pae}
- %endif
- %if %{with_up}
- BuildKernel %make_target %kernel_image
- %endif
- %if %{with_smp}
- BuildKernel %make_target %kernel_image smp
- %endif
- %global perf_make \
- make -s %{?cross_opts} %{?_smp_mflags} -C tools/perf V=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 prefix=%{_prefix}
- %if %{with_perf}
- # perf
- %{perf_make} all
- %{perf_make} man || %{doc_build_fail}
- %endif
- %if %{with_tools}
- %ifarch %{cpupowerarchs}
- # cpupower
- # make sure version-gen.sh is executable.
- 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 #turbostat/x86_energy_perf_policy
- %endif
- %endif
- %if %{with_doc}
- # Make the HTML pages.
- make htmldocs || %{doc_build_fail}
- # sometimes non-world-readable files sneak into the kernel source tree
- chmod -R a=rX Documentation
- find Documentation -type d | xargs chmod u+w
- %endif
- # In the modsign case, we do 3 things. 1) We check the "flavour" and hard
- # code the value in the following invocations. This is somewhat sub-optimal
- # but we're doing this inside of an RPM macro and it isn't as easy as it
- # could be because of that. 2) We restore the .tmp_versions/ directory from
- # the one we saved off in BuildKernel above. This is to make sure we're
- # signing the modules we actually built/installed in that flavour. 3) We
- # grab the arch and invoke mod-sign.sh command to actually sign the modules.
- #
- # We have to do all of those things _after_ find-debuginfo runs, otherwise
- # that will strip the signature off of the modules.
- %define __modsign_install_post \
- if [ "%{signmodules}" -eq "1" ]; then \
- if [ "%{with_pae}" -ne "0" ]; then \
- %{modsign_cmd} signing_key.priv.sign+%{pae} signing_key.x509.sign+%{pae} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+%{pae}/ \
- fi \
- if [ "%{with_debug}" -ne "0" ]; then \
- %{modsign_cmd} signing_key.priv.sign+debug signing_key.x509.sign+debug $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+debug/ \
- fi \
- if [ "%{with_pae_debug}" -ne "0" ]; then \
- %{modsign_cmd} signing_key.priv.sign+%{pae}debug signing_key.x509.sign+%{pae}debug $RPM_BUILD_ROOT/lib/modules/%{KVERREL}+%{pae}debug/ \
- fi \
- if [ "%{with_up}" -ne "0" ]; then \
- %{modsign_cmd} signing_key.priv.sign signing_key.x509.sign $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ \
- fi \
- fi \
- %{nil}
- ###
- ### Special hacks for debuginfo subpackages.
- ###
- # This macro is used by %%install, so we must redefine it before that.
- %define debug_package %{nil}
- %if %{with_debuginfo}
- %define __debug_install_post \
- /usr/lib/rpm/find-debuginfo.sh %{debuginfo_args} %{_builddir}/%{?buildsubdir}\
- %{nil}
- %ifnarch noarch
- %global __debug_package 1
- %files -f debugfiles.list debuginfo-common-%{_target_cpu}
- %defattr(-,root,root)
- %endif
- %endif
- #
- # Disgusting hack alert! We need to ensure we sign modules *after* all
- # invocations of strip occur, which is in __debug_install_post if
- # find-debuginfo.sh runs, and __os_install_post if not.
- #
- %define __spec_install_post \
- %{?__debug_package:%{__debug_install_post}}\
- %{__arch_install_post}\
- %{__os_install_post}\
- %{__modsign_install_post}
- ###
- ### install
- ###
- %install
- cd linux-%{KVERREL}
- %if %{with_doc}
- docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{rpmversion}
- # copy the source over
- mkdir -p $docdir
- tar -h -f - --exclude=man --exclude='.*' -c Documentation | tar xf - -C $docdir
- %endif # with_doc
- # We have to do the headers install before the tools install because the
- # kernel headers_install will remove any header files in /usr/include that
- # it doesn't install itself.
- %if %{with_headers}
- # Install kernel headers
- make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install
- # Do headers_check but don't die if it fails.
- make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_check \
- > hdrwarnings.txt || :
- if grep -q exist hdrwarnings.txt; then
- sed s:^$RPM_BUILD_ROOT/usr/include/:: hdrwarnings.txt
- # Temporarily cause a build failure if header inconsistencies.
- # exit 1
- fi
- find $RPM_BUILD_ROOT/usr/include \
- \( -name .install -o -name .check -o \
- -name ..install.cmd -o -name ..check.cmd \) | xargs rm -f
- %endif
- %if %{with_perf}
- # perf tool binary and supporting scripts/binaries
- %{perf_make} DESTDIR=$RPM_BUILD_ROOT install
- # python-perf extension
- %{perf_make} DESTDIR=$RPM_BUILD_ROOT install-python_ext
- # perf man pages (note: implicit rpm magic compresses them later)
- %{perf_make} DESTDIR=$RPM_BUILD_ROOT install-man || %{doc_build_fail}
- %endif
- %if %{with_tools}
- %ifarch %{cpupowerarchs}
- %{make} -C tools/power/cpupower DESTDIR=$RPM_BUILD_ROOT 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
- %endif
- %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 #turbostat/x86_energy_perf_policy
- %endif
- %if %{with_bootwrapper}
- make DESTDIR=$RPM_BUILD_ROOT bootwrapper_install WRAPPER_OBJDIR=%{_libdir}/kernel-wrapper WRAPPER_DTSDIR=%{_libdir}/kernel-wrapper/dts
- %endif
- ###
- ### clean
- ###
- %clean
- rm -rf $RPM_BUILD_ROOT
- ###
- ### scripts
- ###
- %if %{with_tools}
- %post -n kernel-tools
- /sbin/ldconfig
- %postun -n kernel-tools
- /sbin/ldconfig
- %endif
- #
- # This macro defines a %%post script for a kernel*-devel package.
- # %%kernel_devel_post [<subpackage>]
- #
- %define kernel_devel_post() \
- %{expand:%%post %{?1:%{1}-}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/%{KVERREL}%{?1:+%{1}} &&\
- /usr/bin/find . -type f | while read f; do\
- hardlink -c /usr/src/kernels/*.fc*.*/$f $f\
- done)\
- fi\
- %{nil}
- #
- # This macro defines a %%post script for a kernel*-modules-extra package.
- # %%kernel_modules_extra_post [<subpackage>]
- #
- %define kernel_modules_extra_post() \
- %{expand:%%post %{?1:%{1}-}modules-extra}\
- /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\
- %{nil}
- # This macro defines a %%posttrans script for a kernel package.
- # %%kernel_variant_posttrans [<subpackage>]
- # More text can follow to go at the end of this variant's %%post.
- #
- %define kernel_variant_posttrans() \
- %{expand:%%posttrans %{?1}}\
- /bin/kernel-install add %{KVERREL}%{?1:+%{1}} /%{image_install_path}/vmlinuz-%{KVERREL}%{?1:+%{1}} || exit $?\
- %{nil}
- #
- # This macro defines a %%post script for a kernel package and its devel package.
- # %%kernel_variant_post [-v <subpackage>] [-r <replace>]
- # More text can follow to go at the end of this variant's %%post.
- #
- %define kernel_variant_post(v:r:) \
- %{expand:%%kernel_devel_post %{?-v*}}\
- %if %{with_extra}\
- %{expand:%%kernel_modules_extra_post %{?-v*}}\
- %endif\
- %{expand:%%kernel_variant_posttrans %{?-v*}}\
- %{expand:%%post %{?-v*}}\
- %{-r:\
- if [ `uname -i` == "x86_64" -o `uname -i` == "i386" ] &&\
- [ -f /etc/sysconfig/kernel ]; then\
- /bin/sed -r -i -e 's/^DEFAULTKERNEL=%{-r*}$/DEFAULTKERNEL=kernel%{?-v:-%{-v*}}/' /etc/sysconfig/kernel || exit $?\
- fi}\
- %{nil}
- #
- # This macro defines a %%preun script for a kernel package.
- # %%kernel_variant_preun <subpackage>
- #
- %define kernel_variant_preun() \
- %{expand:%%preun %{?1}}\
- /bin/kernel-install remove %{KVERREL}%{?1:+%{1}} /%{image_install_path}/vmlinuz-%{KVERREL}%{?1:+%{1}} || exit $?\
- %{nil}
- %kernel_variant_preun
- %kernel_variant_post -r kernel-smp
- %kernel_variant_preun smp
- %kernel_variant_post -v smp
- %kernel_variant_preun %{pae}
- %kernel_variant_post -v %{pae} -r (kernel|kernel-smp)
- %kernel_variant_post -v %{pae}debug -r (kernel|kernel-smp)
- %kernel_variant_preun %{pae}debug
- %kernel_variant_preun debug
- %kernel_variant_post -v debug
- if [ -x /sbin/ldconfig ]
- then
- /sbin/ldconfig -X || exit $?
- fi
- ###
- ### file lists
- ###
- %if %{with_headers}
- %files headers
- %defattr(-,root,root)
- /usr/include/*
- %endif
- %if %{with_bootwrapper}
- %files bootwrapper
- %defattr(-,root,root)
- /usr/sbin/*
- %{_libdir}/kernel-wrapper
- %endif
- # only some architecture builds need kernel-doc
- %if %{with_doc}
- %files doc
- %defattr(-,root,root)
- %{_datadir}/doc/kernel-doc-%{rpmversion}/Documentation/*
- %dir %{_datadir}/doc/kernel-doc-%{rpmversion}/Documentation
- %dir %{_datadir}/doc/kernel-doc-%{rpmversion}
- %endif
- %if %{with_perf}
- %files -n perf
- %defattr(-,root,root)
- %{_bindir}/perf
- %dir %{_libexecdir}/perf-core
- %{_libexecdir}/perf-core/*
- %{_mandir}/man[1-8]/perf*
- %{_sysconfdir}/bash_completion.d/perf
- %doc linux-%{KVERREL}/tools/perf/Documentation/examples.txt
- %files -n python-perf
- %defattr(-,root,root)
- %{python_sitearch}
- %if %{with_debuginfo}
- %files -f perf-debuginfo.list -n perf-debuginfo
- %defattr(-,root,root)
- %files -f python-perf-debuginfo.list -n python-perf-debuginfo
- %defattr(-,root,root)
- %endif
- %endif # with_perf
- %if %{with_tools}
- %files -n kernel-tools -f cpupower.lang
- %defattr(-,root,root)
- %ifarch %{cpupowerarchs}
- %{_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
- %endif
- %if %{with_debuginfo}
- %files -f kernel-tools-debuginfo.list -n kernel-tools-debuginfo
- %defattr(-,root,root)
- %endif
- %ifarch %{cpupowerarchs}
- %files -n kernel-tools-libs
- %{_libdir}/libcpupower.so.0
- %{_libdir}/libcpupower.so.0.0.0
- %files -n kernel-tools-libs-devel
- %{_libdir}/libcpupower.so
- %{_includedir}/cpufreq.h
- %endif
- %endif # with_perf
- # This is %%{image_install_path} on an arch where that includes ELF files,
- # or empty otherwise.
- %define elf_image_install_path %{?kernel_image_elf:%{image_install_path}}
- #
- # This macro defines the %%files sections for a kernel package
- # and its devel and debuginfo packages.
- # %%kernel_variant_files [-k vmlinux] <condition> <subpackage>
- #
- %define kernel_variant_files(k:) \
- %if %{1}\
- %{expand:%%files %{?2}}\
- %defattr(-,root,root)\
- /%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:+%{2}}\
- /%{image_install_path}/.vmlinuz-%{KVERREL}%{?2:+%{2}}.hmac \
- %ifarch %{arm} aarch64\
- /%{image_install_path}/dtb-%{KVERREL}%{?2:+%{2}} \
- %endif\
- %attr(600,root,root) /boot/System.map-%{KVERREL}%{?2:+%{2}}\
- /boot/config-%{KVERREL}%{?2:+%{2}}\
- %dir /lib/modules/%{KVERREL}%{?2:+%{2}}\
- /lib/modules/%{KVERREL}%{?2:+%{2}}/kernel\
- /lib/modules/%{KVERREL}%{?2:+%{2}}/build\
- /lib/modules/%{KVERREL}%{?2:+%{2}}/source\
- /lib/modules/%{KVERREL}%{?2:+%{2}}/updates\
- %ifarch %{vdso_arches}\
- /lib/modules/%{KVERREL}%{?2:+%{2}}/vdso\
- /etc/ld.so.conf.d/kernel-%{KVERREL}%{?2:+%{2}}.conf\
- %endif\
- /lib/modules/%{KVERREL}%{?2:+%{2}}/modules.*\
- %ghost /boot/initramfs-%{KVERREL}%{?2:+%{2}}.img\
- %{expand:%%files %{?2:%{2}-}devel}\
- %defattr(-,root,root)\
- /usr/src/kernels/%{KVERREL}%{?2:+%{2}}\
- %if %{with_extra}\
- %{expand:%%files %{?2:%{2}-}modules-extra}\
- %endif\
- %defattr(-,root,root)\
- /lib/modules/%{KVERREL}%{?2:+%{2}}/extra\
- %if %{with_debuginfo}\
- %ifnarch noarch\
- %{expand:%%files -f debuginfo%{?2}.list %{?2:%{2}-}debuginfo}\
- %defattr(-,root,root)\
- %endif\
- %endif\
- %endif\
- %{nil}
- %kernel_variant_files %{with_up}
- %kernel_variant_files %{with_smp} smp
- %kernel_variant_files %{with_debug} debug
- %kernel_variant_files %{with_pae} %{pae}
- %kernel_variant_files %{with_pae_debug} %{pae}debug
- # plz don't put in a version string unless you're going to tag
- # and build.
- # ___________________________________________________________
- # / This branch is for Fedora 20. You probably want to commit \
- # \ to the F-19 branch instead, or in addition to this one. /
- # -----------------------------------------------------------
- # \ ^__^
- # \ (@@)\_______
- # (__)\ )\/\
- # ||----w |
- # || ||
- %changelog
Advertisement
Add Comment
Please, Sign In to add comment