From ba7387ebf925ebc733d3f843501b61cd89590a17 Mon Sep 17 00:00:00 2001 From: Santosh Shilimkar Date: Wed, 3 Dec 2014 14:44:26 -0800 Subject: [PATCH] uek-rpm: build: Add rpm build environment for ol6/ol7 Mostly imported from UEK3 uek-rpm environment with UEK4 related updates and bug fixes. Orabug: 20892775 Orabug: 21102340 Orabug: 20687425 Signed-off-by: Santosh Shilimkar --- uek-rpm/ol6/check-kabi | 141 ++ uek-rpm/ol6/debuginfo-g1.diff | 42 + uek-rpm/ol6/extrakeys.pub | Bin 0 -> 571 bytes uek-rpm/ol6/find-provides | 44 + uek-rpm/ol6/genkey | 7 + uek-rpm/ol6/kabi_whitelist_x86_64 | 1498 ++++++++++++++ uek-rpm/ol6/kabitool | 103 + uek-rpm/ol6/kernel-uek.spec | 1766 +++++++++++++++++ uek-rpm/ol6/ksplice_signing_key.x509 | Bin 0 -> 1496 bytes uek-rpm/ol6/mod-sign.sh | 29 + uek-rpm/ol6/perf | 12 + uek-rpm/ol6/update-el | 1 + uek-rpm/ol6/update-el-ol6 | 1 + uek-rpm/ol6/x509.genkey | 16 + uek-rpm/ol6/x86_energy_perf_policy | 12 + uek-rpm/ol7/check-kabi | 141 ++ .../ol7/debuginfo-g1-minusr-old-elfutils.diff | 58 + uek-rpm/ol7/debuginfo-g1.diff | 44 + uek-rpm/ol7/extrakeys.pub | Bin 0 -> 571 bytes uek-rpm/ol7/find-provides | 44 + uek-rpm/ol7/genkey | 7 + uek-rpm/ol7/kabi_whitelist_x86_64 | 1497 ++++++++++++++ uek-rpm/ol7/kabitool | 103 + uek-rpm/ol7/kernel-uek.spec | 1753 ++++++++++++++++ uek-rpm/ol7/ksplice_signing_key.x509 | Bin 0 -> 1496 bytes uek-rpm/ol7/mod-sign.sh | 29 + uek-rpm/ol7/perf | 12 + uek-rpm/ol7/secureboot.cer | 22 + uek-rpm/ol7/securebootca.cer | 24 + uek-rpm/ol7/update-el | 1 + uek-rpm/ol7/update-el-ol7 | 1 + uek-rpm/ol7/x509.genkey | 16 + uek-rpm/ol7/x86_energy_perf_policy | 12 + 33 files changed, 7436 insertions(+) create mode 100755 uek-rpm/ol6/check-kabi create mode 100644 uek-rpm/ol6/debuginfo-g1.diff create mode 100644 uek-rpm/ol6/extrakeys.pub create mode 100755 uek-rpm/ol6/find-provides create mode 100644 uek-rpm/ol6/genkey create mode 100644 uek-rpm/ol6/kabi_whitelist_x86_64 create mode 100755 uek-rpm/ol6/kabitool create mode 100644 uek-rpm/ol6/kernel-uek.spec create mode 100644 uek-rpm/ol6/ksplice_signing_key.x509 create mode 100755 uek-rpm/ol6/mod-sign.sh create mode 100644 uek-rpm/ol6/perf create mode 100644 uek-rpm/ol6/update-el create mode 100644 uek-rpm/ol6/update-el-ol6 create mode 100644 uek-rpm/ol6/x509.genkey create mode 100644 uek-rpm/ol6/x86_energy_perf_policy create mode 100755 uek-rpm/ol7/check-kabi create mode 100644 uek-rpm/ol7/debuginfo-g1-minusr-old-elfutils.diff create mode 100644 uek-rpm/ol7/debuginfo-g1.diff create mode 100644 uek-rpm/ol7/extrakeys.pub create mode 100755 uek-rpm/ol7/find-provides create mode 100644 uek-rpm/ol7/genkey create mode 100644 uek-rpm/ol7/kabi_whitelist_x86_64 create mode 100755 uek-rpm/ol7/kabitool create mode 100644 uek-rpm/ol7/kernel-uek.spec create mode 100644 uek-rpm/ol7/ksplice_signing_key.x509 create mode 100755 uek-rpm/ol7/mod-sign.sh create mode 100644 uek-rpm/ol7/perf create mode 100644 uek-rpm/ol7/secureboot.cer create mode 100644 uek-rpm/ol7/securebootca.cer create mode 100644 uek-rpm/ol7/update-el create mode 100644 uek-rpm/ol7/update-el-ol7 create mode 100644 uek-rpm/ol7/x509.genkey create mode 100644 uek-rpm/ol7/x86_energy_perf_policy diff --git a/uek-rpm/ol6/check-kabi b/uek-rpm/ol6/check-kabi new file mode 100755 index 000000000000..e2fbb2b59988 --- /dev/null +++ b/uek-rpm/ol6/check-kabi @@ -0,0 +1,141 @@ +#!/usr/bin/python +# +# check-kabi - Red Hat kABI reference checking tool +# +# We use this script to check against reference Module.kabi files. +# +# Author: Jon Masters +# Copyright (C) 2007-2009 Red Hat, Inc. +# +# This software may be freely redistributed under the terms of the GNU +# General Public License (GPL). + +# Changelog: +# +# 2009/08/15 - Updated for use in RHEL6. +# 2007/06/13 - Initial rewrite in python by Jon Masters. + +__author__ = "Jon Masters " +__version__ = "2.0" +__date__ = "2009/08/15" +__copyright__ = "Copyright (C) 2007-2009 Red Hat, Inc" +__license__ = "GPL" + +import getopt +import os +import re +import sha +import string +import sys + +true = 1 +false = 0 + +def load_symvers(symvers,filename): + """Load a Module.symvers file.""" + + symvers_file = open(filename,"r") + + while true: + in_line = symvers_file.readline() + if in_line == "": + break + if in_line == "\n": + continue + checksum,symbol,directory,type = string.split(in_line) + + symvers[symbol] = in_line[0:-1] + +def load_kabi(kabi,filename): + """Load a Module.kabi file.""" + + kabi_file = open(filename,"r") + + while true: + in_line = kabi_file.readline() + if in_line == "": + break + if in_line == "\n": + continue + checksum,symbol,directory,type = string.split(in_line) + + kabi[symbol] = in_line[0:-1] + +def check_kabi(symvers,kabi): + """Check Module.kabi and Module.symvers files.""" + + fail=0 + warn=0 + changed_symbols=[] + moved_symbols=[] + + for symbol in kabi: + abi_hash,abi_sym,abi_dir,abi_type = string.split(kabi[symbol]) + if symvers.has_key(symbol): + sym_hash,sym_sym,sym_dir,sym_type = string.split(symvers[symbol]) + if abi_hash != sym_hash: + fail=1 + changed_symbols.append(symbol) + + if abi_dir != sym_dir: + warn=1 + moved_symbols.append(symbol) + + if fail: + print "*** ERROR - ABI BREAKAGE WAS DETECTED ***" + print "" + print "The following symbols have been changed (this will cause an ABI breakage):" + print "" + for symbol in changed_symbols: + print symbol + print "" + + if warn: + print "*** WARNING - ABI SYMBOLS MOVED ***" + print "" + print "The following symbols moved (typically caused by moving a symbol from being" + print "provided by the kernel vmlinux out to a loadable module):" + print "" + for symbol in moved_symbols: + print symbol + print "" + + if fail: + sys.exit(1) + else: + sys.exit(0) + +def usage(): + print """ +check-kabi: check Module.kabi and Module.symvers files. + + check-kabi [ -k Module.kabi ] [ -s Module.symvers ] + +""" + +if __name__ == "__main__": + + symvers_file = "" + kabi_file = "" + + opts, args = getopt.getopt(sys.argv[1:], 'hk:s:') + + for o, v in opts: + if o == "-s": + symvers_file = v + if o == "-h": + usage() + sys.exit(0) + if o == "-k": + kabi_file = v + + if (symvers_file == "") or (kabi_file == ""): + usage() + sys.exit(1) + + symvers={} + kabi={} + + load_symvers(symvers,symvers_file) + load_kabi(kabi,kabi_file) + check_kabi(symvers,kabi) diff --git a/uek-rpm/ol6/debuginfo-g1.diff b/uek-rpm/ol6/debuginfo-g1.diff new file mode 100644 index 000000000000..619814d95550 --- /dev/null +++ b/uek-rpm/ol6/debuginfo-g1.diff @@ -0,0 +1,42 @@ +--- find-debuginfo.sh.orig 2012-09-12 20:42:13.106294407 +0100 ++++ find-debuginfo.sh 2012-09-12 20:49:52.496863002 +0100 +@@ -36,6 +38,9 @@ + --strict-build-id) + strict=true + ;; ++ -g1) ++ strip_g=full ++ ;; + -g) + strip_g=true + ;; +@@ -88,11 +93,25 @@ + + strip_to_debug() + { +- local g= +- $strip_g && case "$(file -bi "$2")" in +- application/x-sharedlib*) g=-g ;; ++ local use_objcopy=false ++ case "$strip_g" in ++ true) case "$(file -bi "$2")" in ++ application/x-sharedlib*) use_objcopy=true ;; ++ esac;; ++ full) use_objcopy=true;; + esac +- eu-strip --remove-comment $g -f "$1" "$2" || exit ++ # Note: eu-strip fails to remove debugging info in files containing ++ # debugging relocations at present. objcopy works fine, so use that. ++ # (This does mean that .comment sections don't get stripped, but this ++ # seems an insignificant problem for now. When elfutils is fixed this ++ # hack can be removed.) ++ if $use_objcopy; then ++ objcopy --only-keep-debug "$2" "$1" || exit ++ objcopy --strip-debug "$2" "$2.tmp" || exit ++ mv -f "$2.tmp" "$2" || exit ++ else ++ eu-strip --remove-comment -f "$1" "$2" || exit ++ fi + chmod 444 "$1" || exit + } + diff --git a/uek-rpm/ol6/extrakeys.pub b/uek-rpm/ol6/extrakeys.pub new file mode 100644 index 0000000000000000000000000000000000000000..c1be439a1eefe8a9b94bb5f930ffb5764a2497c6 GIT binary patch literal 571 zcmV-B0>u590ipy?PLtsg1OS)U@P^GUE)chFVC;EB*B723YnQDbEPZJ<{V#jJfGBm_ zHe*OK3oNSm{KO3q1B-jj(+uhV>Dr_Z4Q!zkn5{(1pXVgD4Q-R1OI#MR(rTK`VMikQw}t-ia4&mzJG$VvHLHd? z(7zXJ(q_wXTj>8OmO z=HX{Y2}l$AG$Un`v@lO{VPkA%AVFEFej4V=f>lOJ#CyWo#f#Z)A0BWgt^& zXKrb3XCO;uc`1lu1QQVg03rnfPfnBJ0viJc3ke7Z0|EvW2m%QT3j`Jd0|5da0Rk6* z0162ZY;PRofFPKufSdrIWHLfqO?ChSxPf1+kX3t1<;19_0G~qa{XX5 +# Copyright (C) 2009 Red Hat, Inc. +# +# This software may be freely redistributed under the terms of the GNU +# General Public License (GPL). + +# Changelog: +# +# 2009/08/01 - New version based on kABI dep plan for RHEL6. +# + +__author__ = "Jon Masters " +__version__ = "$Revisions: 2.0 $" +__date__ = "$Date: 2010/09/01 04:58:18 $" +__copyright__ = "Copyright (C) 2009 Red Hat, Inc" +__license__ = "GPL" + +import getopt +import os +import re +import sha +import string +import sys + +true = 1 +false = 0 + +def load_symbols(filename): + """Load the kernel exported symbols from Module.symvers.""" + + ksyms = open(filename,"r") + + symbols={} + + while true: + line = ksyms.readline() + if line == "": + break; + if line == "\n": + continue + checksum,symbol,path,license = string.split(line) + + symbols[symbol] = dict(checksum=checksum, + path=path, + license=license) + + return symbols + +def output_deps(depsfile,symbols): + + deps_file = open(depsfile,"w") + + for symbol in sorted(symbols.keys()): + deps_file.write("kernel("+symbol+") = " + + symbols[symbol]['checksum'] + "\n") + +def usage(): + print """ +kabitool: process Module.symvers into useful exported kABI dependencies + + kabitool [-k kernel] [-s symbols ] + + -o The file to output sorted dependencies to + + -s The Module.symvers file to import from + +""" + +if __name__ == "__main__": + + symdeps_file = "" + symvers_file = "" + + opts, args = getopt.getopt(sys.argv[1:], 'ho:s:') + + for o, v in opts: + if o == "-h": + usage() + sys.exit(0) + if o == "-o": + symdeps_file = v + if o == "-s": + symvers_file = v + + if (symdeps_file == ""): + symdeps_file = "Module.symdeps" + + if (symvers_file == ""): + symvers_file = "Module.symvers" + + if not (os.path.isfile(symvers_file)): + print "cannot read Module.symvers file" + usage() + exit(1) + + symbols = load_symbols(symvers_file) + output_deps(symdeps_file, symbols) diff --git a/uek-rpm/ol6/kernel-uek.spec b/uek-rpm/ol6/kernel-uek.spec new file mode 100644 index 000000000000..22b1c5495f07 --- /dev/null +++ b/uek-rpm/ol6/kernel-uek.spec @@ -0,0 +1,1766 @@ +%define kernel_git_commit 74c661676446c010ea6f46dab7231d98761d66a5 +%global __spec_install_pre %{___build_pre} + +# Errors in specfile are causing builds to fail. Adding workarounds. +%define _unpackaged_files_terminate_build 0 +%define _missing_doc_files_terminate_build 0 + +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. +%define released_kernel 1 +# Versions of various parts + +# 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" +# +# % define buildid .local + +%define distro_build 0 +%define signmodules 1 + +# base_sublevel is the kernel version we're starting with and patching +# on top of -- for example, 2.6.22-rc7-git1 starts with a 2.6.21 base, +# which yields a base_sublevel of 21. +%define base_sublevel 0 + +## If this is a released kernel ## +%if 0%{?released_kernel} + +# Do we have a -stable update to apply? +%define stable_update 0 +# 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 4.1.%{base_sublevel}%{?stablerev} + +## 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 4.1.%{upstream_sublevel} +%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 in your rpmbuild command or force values +# to 0 in here to disable them. +# +# standard kernel +%define with_up 1 +# kernel-smp (only valid for ppc 32-bit, sparc64) +%define with_smp 1 +# kernel-kdump +%define with_kdump 0 +# kernel-debug +%define with_debug 1 +# kernel-doc +%define with_doc 1 +# kernel-headers +%define with_headers 0 +# dtrace +%define with_dtrace 0 +# kernel-firmware +%define with_firmware 0 +# 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} + +# 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 + +# Control whether we perform a compat. check against published ABI. +%ifarch sparc64 +%define with_kabichk 0 +%define fancy_debuginfo 0 +%else +%define with_kabichk 0 +%define fancy_debuginfo 0 +%endif + +# Control whether we build the hmac for fips mode. +%define with_fips %{?_without_fips: 0} %{?!_without_fips: 1} + +%if %{fancy_debuginfo} +BuildRequires: rpm-build >= 4.4.2.1-4 +%define debuginfo_args --strict-build-id +%endif + +# 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} + +# should we do C=1 builds with sparse +%define with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 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? +# (well, almost none, we need nonintconfig for build purposes). Default to 0 (off). +%define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0} + +# 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} +%endif +%define pkg_release 1%{?dist}uek%{?buildid} + +%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 1%{?dist}uek%{?buildid} + +%endif + +# The kernel tarball/base version +#%define kversion 4.1 +%define kversion 4.1.%{base_sublevel} + +%define make_target bzImage + +%define hdrarch %_target_cpu +%define asmarch %_target_cpu + +%if 0%{!?nopatches:1} +%define nopatches 0 +%endif + +%if %{with_vanilla} +%define nopatches 1 +%endif + +%define with_bootwrapper 0 + +%define pkg_release 1%{?dist}uek%{?buildid} + +%define KVERREL %{rpmversion}-%{pkg_release}.%{_target_cpu} + +%if !%{debugbuildsenabled} +%define with_debug 0 +%endif + +%if !%{with_debuginfo} +%define _enable_debug_packages 0 +%endif +%define debuginfodir /usr/lib/debug + +%define with_pae 0 + +# if requested, only build base kernel +%if %{with_baseonly} +%define with_smp 0 +%define with_kdump 0 +%define with_debug 0 +%endif + +# if requested, only build smp kernel +%if %{with_smponly} +%define with_up 0 +%define with_kdump 0 +%define with_debug 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 +%endif + +# Overrides for generic default options + +# only ppc need separate smp kernels +%ifnarch ppc alphaev56 +%define with_smp 0 +%endif + +# only build kernel-kdump on ppc64 +# (no relocatable kernel support upstream yet) +#FIXME: Temporarily disabled to speed up builds. +#ifnarch ppc64 +%define with_kdump 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 + +# no need to build headers again for these arches, +# they can just use i586 and ppc64 headers +%ifarch ppc64iseries +%define with_headers 0 +%endif + +# don't build noarch kernels or headers (duh) +%ifarch noarch +%define with_up 0 +%define with_headers 0 +%define with_paravirt 0 +%define with_paravirt_debug 0 +%define all_arch_configs kernel-%{version}-*.config +%define with_firmware %{?_without_firmware: 0} %{?!_without_firmware: 1} +%endif + +# bootwrapper is only on ppc +%ifnarch ppc ppc64 +%define with_bootwrapper 0 +%endif + +# sparse blows up on ppc64 alpha and sparc64 +%ifarch ppc64 ppc alpha sparc64 +%define with_sparse 0 +%endif + +# Only x86_64 does dtrace +%ifarch x86_64 +%define with_dtrace 1 +%endif + +# Per-arch tweaks + +%ifarch %{all_x86} +%define asmarch x86 +%define hdrarch i386 +%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 +%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 +%endif + +%ifarch sparc +# We only build sparc headers since we dont support sparc32 hardware +%endif + +%ifarch sparc64 +%define asmarch sparc +%define all_arch_configs kernel-%{version}-sparc64*.config +%define make_target image +%define kernel_image arch/sparc/boot/image +%define image_install_path boot +%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 ia64 +%define all_arch_configs kernel-%{version}-ia64*.config +%define image_install_path boot/efi/EFI/redhat +%define make_target compressed +%define kernel_image vmlinux.gz +%endif + +%ifarch alpha alphaev56 +%define all_arch_configs kernel-%{version}-alpha*.config +%define image_install_path boot +%define make_target vmlinux +%define kernel_image vmlinux +%endif + +%ifarch %{arm} +%define all_arch_configs kernel-%{version}-arm*.config +%define image_install_path boot +%define hdrarch arm +%define make_target vmlinux +%define kernel_image vmlinux +%endif + +%if %{nopatches} +# XXX temporary until last vdso patches are upstream +%define vdso_arches ppc ppc64 +%endif + +%define oldconfig_target oldnoconfig + +# 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 don't build a kernel on i386; we only do kernel-headers there, +# and we no longer build for 31bit S390. Same for 32bit sparc and arm. +##%define nobuildarches i386 s390 sparc %{arm} +%define nobuildarches s390 sparc %{arm} + +%ifarch %nobuildarches +%define with_up 0 +%define with_smp 0 +%define with_pae 0 +%define with_kdump 0 +%define with_debuginfo 0 +%define _enable_debug_packages 0 +%define with_paravirt 0 +%define with_paravirt_debug 0 +%endif + +%define with_pae_debug 0 +%if %{with_pae} +%define with_pae_debug %{with_debug} +%endif + +# +# Three sets of minimum package version requirements in the form of Conflicts: +# to versions below the minimum +# + +# +# First the general kernel 2.6 required versions as per +# Documentation/Changes +# +%define kernel_dot_org_conflicts ppp < 2.4.3-3, isdn4k-utils < 3.2-32, nfs-utils < 1.0.7-12, e2fsprogs < 1.37-4, util-linux < 2.12, jfsutils < 1.1.7-2, reiserfs-utils < 3.6.19-2, xfsprogs < 2.6.13-4, procps < 3.2.5-6.3, oprofile < 0.9.1-2 + +# +# Then a series of requirements that are distribution specific, either +# because we add patches for something, or the older versions have +# problems with the newer kernel or lack certain things that make +# integration in the distro harder than needed. +# +##%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, iwl4965-firmware < 228.57.2, selinux-policy-targeted < 1.25.3-14, squashfs-tools < 4.0, wireless-tools < 29-3 +%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, selinux-policy-targeted < 1.25.3-14, device-mapper-multipath < 0.4.9-64, dracut < 004-303.0.3 + +# +# The ld.so.conf.d file we install uses syntax older ldconfig's don't grok. +# +%define kernel_xen_conflicts glibc < 2.3.5-1, xen < 3.0.1 + +# upto and including kernel 2.4.9 rpms, the 4Gb+ kernel was called kernel-enterprise +# now that the smp kernel offers this capability, obsolete the old kernel +%define kernel_smp_obsoletes kernel-enterprise < 2.4.10 +%define kernel_PAE_obsoletes kernel-smp < 2.6.17, kernel-xen <= 2.6.27-0.2.rc0.git6.fc10 +%define kernel_PAE_provides kernel-xen = %{rpmversion}-%{pkg_release} + +%ifarch x86_64 +%define kernel_obsoletes kernel-xen <= 2.6.27-0.2.rc0.git6.fc10 +%define kernel_provides kernel%{?variant}-xen = %{rpmversion}-%{pkg_release} +%endif + +# We moved the drm include files into kernel-headers, make sure there's +# a recent enough libdrm-devel on the system that doesn't have those. +%define kernel_headers_conflicts libdrm-devel < 2.4.0-0.15 + +# +# Packages that need to be installed before the kernel is, because the %post +# scripts use them. +# +%define kernel_prereq fileutils, module-init-tools, initscripts >= 8.11.1-1, kernel-firmware = %{rpmversion}-%{pkg_release}, /sbin/new-kernel-pkg, ql23xx-firmware +%define initrd_prereq dracut-kernel >= 004-242.0.3 + +# +# This macro does requires, provides, conflicts, obsoletes for a kernel package. +# %%kernel_reqprovconf +# It uses any kernel__conflicts and kernel__obsoletes +# macros defined above. +# +%define kernel_reqprovconf \ +Provides: kernel%{?variant} = %{rpmversion}-%{pkg_release}\ +Provides: kernel%{?variant}-%{_target_cpu} = %{rpmversion}-%{pkg_release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-drm = 4.3.0\ +Provides: kernel%{?variant}-drm-nouveau = 12\ +Provides: kernel%{?variant}-modeset = 1\ +Provides: kernel%{?variant}-uname-r = %{KVERREL}%{?1:.%{1}}\ +Provides: oracleasm = 2.0.5\ +%ifnarch sparc64\ +Provides: x86_energy_perf_policy = %{KVERREL}%{?1:.%{1}}\ +%endif\ +Provides: perf = %{KVERREL}%{?1:.%{1}}\ +#Provides: libperf.a = %{KVERREL}%{?1:.%{1}}\ +%ifarch sparc64\ +Provides: kernel = %{rpmversion}-%{pkg_release}\ +%endif\ +Requires(pre): %{kernel_prereq}\ +Requires(pre): %{initrd_prereq}\ +Requires(post): /sbin/new-kernel-pkg\ +Requires(preun): /sbin/new-kernel-pkg\ +Conflicts: %{kernel_dot_org_conflicts}\ +Conflicts: %{package_conflicts}\ +%{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} + +%define variant %{?build_variant:%{build_variant}}%{!?build_variant:-uek} +Name: kernel%{?variant} +Group: System Environment/Kernel +License: GPLv2 +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 paravirt paravirt-debug ppc ppc64 ia64 sparc sparc64 s390x alpha alphaev56 %{arm} +ExclusiveOS: Linux + +%kernel_reqprovconf +%ifarch x86_64 +Obsoletes: kernel-smp +%endif + + +# +# List the packages used during the kernel build +# +BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar +BuildRequires: bzip2, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk +BuildRequires: gcc >= 3.4.2, binutils >= 2.12 +BuildRequires: net-tools +BuildRequires: elfutils-libelf-devel +BuildRequires: python, python-devel +BuildRequires: flex >= 2.5.19, bison >= 2.3 +BuildRequires: pkgconfig +BuildRequires: glib2-devel +BuildRequires: elfutils-devel +BuildRequires: bc +%if %{with_doc} +BuildRequires: xmlto +%endif +%if %{with_sparse} +BuildRequires: sparse >= 0.4.1 +%endif +%if %{signmodules} +BuildRequires: openssl +BuildRequires: gnupg +#BuildRequires: pesign >= 0.10-4 +%endif +%if %{with_fips} +BuildRequires: hmaccalc +%endif +%if %{with_dtrace} +BuildRequires: libdtrace-ctf-devel >= 0.5.0 +%endif +BuildConflicts: rhbuildsys(DiskFree) < 500Mb + +Source0: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-%{kversion}.tar.bz2 + +%if %{signmodules} +Source10: x509.genkey +%endif + +Source13: mod-sign.sh +%define modsign_cmd %{SOURCE13} + +Source14: find-provides +Source16: perf +Source17: kabitool +Source18: check-kabi +Source19: extrakeys.pub +Source20: x86_energy_perf_policy + +Source1000: config-x86_64 +Source1001: config-x86_64-debug +#Source1004: config-sparc +#Source1005: config-sparc-debug + +#Source26: Module.kabi_x86_64 + +Source201: kabi_whitelist_x86_64 +Source202: ksplice_signing_key.x509 + +#Source300: debuginfo-g1.diff +#Source301: debuginfo-g1-minusr-old-elfutils.diff + +Source300: debuginfo-g1.diff + +# 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-2.6.%{base_sublevel}.%{stable_base}.bz2 +Patch00: %{stable_patch_00} +%endif +%if 0%{?stable_rc} +%define stable_patch_01 patch-2.6.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.bz2 +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-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2 +%if 0%{?gitrev} +Patch01: patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2 +%endif +%else +# pre-{base_sublevel+1}-rc1 case +%if 0%{?gitrev} +Patch00: patch-2.6.%{base_sublevel}-git%{gitrev}.bz2 +%endif +%endif +%endif + +%if !%{nopatches} +# revert patches place holder +%endif + + +BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root + +# Override find_provides to use a script that provides "kernel(symbol) = hash". +# Pass path of the RPM temp dir containing kabideps to find-provides script. +%global _use_internal_dependency_generator 0 +%define __find_provides %_sourcedir/find-provides %{_tmppath} +%define __find_requires /usr/lib/rpm/redhat/find-requires kernel + +%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 +Obsoletes: kernel-doc +Provides: kernel-doc +%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 +Obsoletes: kernel-headers +Provides: kernel-headers +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 firmware +Summary: Firmware files used by the Linux kernel +Group: Development/System +# This is... complicated. +# Look at the WHENCE file. +License: GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted +%if "x%{?variant}" != "x" +Provides: kernel-firmware = %{rpmversion}-%{pkg_release} +%endif +%ifarch sparc64 +Provides: kernel-firmware = %{rpmversion}-%{pkg_release} +%endif +%description firmware +Kernel firmware includes firmware files required for some devices to +operate. + +%package bootwrapper +Summary: Boot wrapper files for generating combined kernel + initrd images +Group: Development/System +Requires: gzip +%description bootwrapper +Kernel-bootwrapper contains the wrapper code which makes bootable "zImage" +files combining both kernel and initial ramdisk. + +%package debuginfo-common +Summary: Kernel source files used by %{name}-debuginfo packages +Group: Development/Debug +Provides: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release} +%description debuginfo-common +This package is required by %{name}-debuginfo subpackages. +It provides the kernel source files common to all builds. + + +# +# This macro creates a kernel--debuginfo package. +# %%kernel_debuginfo_package +# +%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--devel package. +# %%kernel_devel_package +# +%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%{?variant}%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\ +Provides: kernel%{?variant}-xen-devel = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-devel-%{_target_cpu} = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-devel = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-devel-uname-r = %{KVERREL}%{?1:.%{1}}\ +%ifarch sparc64\ +Provides: kernel-devel = %{version}-%{release}%{?1:.%{1}}\ +%endif\ +AutoReqProv: no\ +Requires(pre): /usr/bin/find\ +Requires: elfutils-libelf >= 0.158\ +Requires: elfutils-libs >= 0.158\ +%if %{with_dtrace}\ +Requires: libdtrace-ctf >= 0.5.0\ +%endif\ +%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- and its -devel and -debuginfo too. +# %%define variant_summary The Linux kernel compiled for +# %%kernel_variant_package [-n ] +# +%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*}}}\ +%{expand:%%kernel_debuginfo_package %1}\ +%{nil} + + +# First the auxiliary packages of the main kernel package. +%kernel_devel_package +%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. + + +%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. + + +%define variant_summary The Linux kernel compiled with extra debugging enabled for PAE capable machines +%kernel_variant_package PAEdebug +Obsoletes: kernel-PAE-debug +%description PAEdebug +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. + + +%define variant_summary A minimal Linux kernel compiled for crash dumps +%kernel_variant_package kdump +%description kdump +This package includes a kdump version of the Linux kernel. It is +required only on machines which will use the kexec-based kernel crash dump +mechanism. + + +%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 + +patch_command='patch -p1 -F1 -s' +ApplyPatch() +{ + local patch=$1 + shift + if [ ! -f $RPM_SOURCE_DIR/$patch ]; then + exit 1; + fi + if ! egrep "^Patch[0-9]+: $patch\$" %{_specdir}/%{name}*.spec ; then + [ "${patch:0:10}" != "patch-2.6." ] && echo "Patch $patch not listed in specfile" && exit 1; + fi + case "$patch" in + *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; + *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; + *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;; + esac +} + +test_config_file() +{ + TestConfig=$1 + Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1` + if [ `make ARCH=$Arch listnewconfig 2>/dev/null | grep -c CONFIG` -ne 0 ]; then + echo "Following config options are unconfigured" + make ARCH=$Arch listnewconfig 2> /dev/null + echo "WARNING: Kernel version and config file missmatch" + echo "WARNING: This options will be unset by default in config file" + 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 2.6.%{base_sublevel} +# non-released_kernel case +%else +%if 0%{?rcrev} +%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev} +%if 0%{?gitrev} +%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev} +%endif +%else +# pre-{base_sublevel+1}-rc1 case +%if 0%{?gitrev} +%define vanillaversion 2.6.%{base_sublevel}-git%{gitrev} +%endif +%endif +%endif + +# We can share hardlinked source trees by putting a list of +# directory names of the CVS checkouts that we want to share +# with in .shared-srctree. (Full pathnames are required.) +[ -f .shared-srctree ] && sharedirs=$(cat .shared-srctree) + +if [ ! -d kernel-%{kversion}/vanilla-%{vanillaversion} ]; then + + if [ -d kernel-%{kversion}/vanilla-%{kversion} ]; then + + cd kernel-%{kversion} + + # Any vanilla-* directories other than the base one are stale. + for dir in vanilla-*; do + [ "$dir" = vanilla-%{kversion} ] || rm -rf $dir & + done + + else + + # Ok, first time we do a make prep. + rm -f pax_global_header + for sharedir in $sharedirs ; do + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then + break + fi + done + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then +%setup -q -n kernel-%{kversion} -c -T + cp -rl $sharedir/kernel-%{kversion}/vanilla-%{kversion} . + else +%setup -q -n kernel-%{kversion} -c + mv linux-%{kversion} vanilla-%{kversion} + fi + + fi + +%if "%{kversion}" != "%{vanillaversion}" + + for sharedir in $sharedirs ; do + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then + break + fi + done + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then + + cp -rl $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} . + + else + + 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-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2 +%if 0%{?gitrev} + ApplyPatch patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2 +%endif +%else +# pre-{base_sublevel+1}-rc1 case +%if 0%{?gitrev} + ApplyPatch patch-2.6.%{base_sublevel}-git%{gitrev}.bz2 +%endif +%endif + + cd .. + + fi + +%endif + +else + # We already have a vanilla dir. + cd kernel-%{kversion} +fi + +if [ -d linux-%{kversion}.%{_target_cpu} ]; 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 linux-%{kversion}.%{_target_cpu} deleteme.%{_target_cpu} + rm -rf deleteme.%{_target_cpu} & +fi + +cp -rl vanilla-%{vanillaversion} linux-%{kversion}-%{release} +cd linux-%{kversion}-%{release} + +# released_kernel with possible stable updates +%if 0%{?stable_base} +ApplyPatch %{stable_patch_00} +%endif +%if 0%{?stable_rc} +ApplyPatch %{stable_patch_01} +%endif + +# Copy the RPM find-debuginfo.sh into the buildroot and patch it +# to support -g1. (This is a patch of *RPM*, not of the kernel, +# so it is not governed by nopatches.) +cp %{_rpmconfigdir}/find-debuginfo.sh %{_builddir} +patch %{_builddir}/find-debuginfo.sh %{SOURCE300} +chmod +x %{_builddir}/find-debuginfo.sh + +# only deal with configs if we are going to build for the arch +# %ifnarch %nobuildarches + +mkdir -p configs +%ifarch x86_64 + cp %{SOURCE1001} configs/config-debug + cp %{SOURCE1000} configs/config +%endif #ifarch x86_64 + +%ifarch i686 + cp %{SOURCE1003} configs/config-debug + cp %{SOURCE1002} configs/config +%endif #ifarch i686 + +%ifarch sparc64 + cp %{SOURCE1005} configs/config-debug + cp %{SOURCE1004} configs/config +%endif #ifarch sparc + +cp %{SOURCE202} ksplice_signing_key.x509 + +# get rid of unwanted files resulting from patch fuzz +find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null + +### +### build +### +%build + +%if %{with_sparse} +%define sparse_mflags C=1 +%endif + +%if %{fancy_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 $@ > $@.id"' +%endif + +cp_vmlinux() +{ + eu-strip --remove-comment -o "$2" "$1" +} + +BuildKernel() { + MakeTarget=$1 + KernelImage=$2 + Flavour=$3 + 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}${Flavour:+.${Flavour}} + + # 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}${Flavour:+.${Flavour}} + echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}... + + # make sure EXTRAVERSION says what we want it to say + perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?stablerev}-%{release}.%{_target_cpu}${Flavour:+.${Flavour}}/" Makefile + #perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{base_sublevel}/" Makefile + + make -s mrproper + + %if %{signmodules} + cp %{SOURCE10} . + chmod +x scripts/sign-file + %endif + + if [ "$Flavour" == "debug" ]; then + cp configs/config-debug .config + else + cp configs/config .config + fi + + Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1` + echo USING ARCH=$Arch + make -s ARCH=$Arch %{oldconfig_target} > /dev/null + make -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags} + make -s ARCH=$Arch V=1 %{?_smp_mflags} modules %{?sparse_mflags} || exit 1 + + # 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 + touch $RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img + 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 [ -x /usr/bin/pesign -a "x86_64" == "x86_64" ]; then + # if [ -e /var/run/pesign/socket ]; then + # /usr/bin/pesign-client -t "OpenSC Card (Fedora Signer)" \ + # -c "/CN=Fedora Secure Boot Signer" \ + # -i $KernelImage -o vmlinuz.signed -s + # else + # /usr/bin/pesign -c "Oracle" \ + # -i $KernelImage -o vmlinuz.signed -s + # fi + # else + # if [ -n "$KernelImage" -a -n "vmlinuz.signed" ]; then + # mv $KernelImage vmlinuz.signed + # elif [ -n "$KernelImage" -a -n "" ]; then + # touch + # fi + # 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 + +%if %{with_fips} + # 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; +%endif + + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer + # Override $(mod-fw) because we don't want it to install any firmware + # We'll do that ourselves with 'make firmware_install' + make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer mod-fw= + # check if the modules are being signed + +%ifarch %{vdso_arches} + make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer + if grep '^CONFIG_XEN=y$' .config >/dev/null; then + echo > ldconfig-kernel.conf "\ +# This directive teaches ldconfig to search in nosegneg subdirectories +# and cache the DSOs there with extra bit 0 set in their hwcap match +# fields. In Xen guest kernels, the vDSO tells the dynamic linker to +# search in nosegneg subdirectories and to match this extra hwcap bit +# in the ld.so.cache file. +hwcap 0 nosegneg" + fi + 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 +%ifarch %{vdso_arches} sparc64 +%ifnarch noarch +# build tools/perf: + if [ -d tools/perf ]; then + cd tools/perf + make all +# and install it: +# mkdir -p $RPM_BUILD_ROOT/usr/bin/$KernelVer/ + mkdir -p $RPM_BUILD_ROOT/usr/libexec/ + install -m 755 perf $RPM_BUILD_ROOT/usr/libexec/perf.$KernelVer + #install -m 755 libperf.a $RPM_BUILD_ROOT/lib/modules/$KernelVer/bin/%{_target_cpu}/libperf.a + cd ../.. + fi +%endif +%ifarch x86_64 %{all_x86} +# build tools/power/x86/x86_energy_perf_policy: + if [ -d tools/power/x86/x86_energy_perf_policy ]; then + cd tools/power/x86/x86_energy_perf_policy + make +# and install it: + mkdir -p $RPM_BUILD_ROOT/usr/libexec/ + install -m 755 x86_energy_perf_policy $RPM_BUILD_ROOT/usr/libexec/x86_energy_perf_policy.$KernelVer + cd ../../../../ + fi +%endif +%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 + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/weak-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 + + # create the kABI metadata for use in packaging + echo "**** GENERATING kernel ABI metadata ****" + gzip -c9 < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.gz + chmod 0755 %_sourcedir/kabitool + if [ -e $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour ]; then + cp $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/kabi_whitelist + fi + rm -f %{_tmppath}/kernel-$KernelVer-kabideps + %_sourcedir/kabitool -s Module.symvers -o %{_tmppath}/kernel-$KernelVer-kabideps + +%if %{with_kabichk} + echo "**** kABI checking is enabled in kernel SPEC file. ****" + chmod 0755 $RPM_SOURCE_DIR/check-kabi + if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour ]; then + cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/Module.kabi + $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1 + rm $RPM_BUILD_ROOT/Module.kabi # for now, don't keep it around. + else + echo "**** NOTE: Cannot find reference Module.kabi file. ****" + fi +%endif + + # 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 + 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 + cp -a --parents Kbuild $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + cp -a --parents kernel/bounds.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + cp -a --parents arch/%{asmarch}/kernel/asm-offsets.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ +%ifnarch %{sparc} + cp -a --parents arch/%{asmarch}/kernel/asm-offsets_64.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ +%endif + cp -a --parents security/selinux/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + cd include + cp -a acpi asm-generic clocksource config crypto drm dt-bindings generated keys kvm linux math-emu media memory misc net pcmcia ras rdma rxrpc scsi soc sound target trace uapi video xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + asmdir=../arch/%{asmarch}/include/asm + cp -a $asmdir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/ + cd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + ln -s $asmdir asm + cd - + # 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 + cd .. + +%if %{fancy_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 +%endif + + # + # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm + # +%if %{with_debuginfo} + 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. + + fgrep /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 + } + + collect_modules_list networking \ + 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|register_netdevice' + collect_modules_list block \ + 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size' + 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#$RPM_BUILD_ROOT/lib/modules/$KernelVer/} " >> modinfo + /sbin/modinfo -l $i >> modinfo + done < modnames + + egrep -v \ + 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' \ + modinfo && exit 1 + + rm -f modinfo modnames + +%if %{signmodules} + # Save off the .tmp_versions/ directory. We'll use it in the + # __debug_install_post macro below to sign the right things + # Also save the signing keys so we actually sign the modules with the + # right key. + cp -r .tmp_versions .tmp_versions.sign${Flavour:+.${Flavour}} + cp signing_key.priv signing_key.priv.sign${Flavour:+.${Flavour}} + cp signing_key.x509 signing_key.x509.sign${Flavour:+.${Flavour}} +%endif + + # remove files that will be auto generated by depmod at rpm -i time + for i in alias ccwmap dep ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols usbmap + do + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$i + done + + # 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 + ln -sf ../../..$DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build +} + +### +# DO it... +### + +# prepare directories +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/boot + +cd linux-%{version}-%{release} + +%if %{with_debug} +%if %{with_up} +BuildKernel %make_target %kernel_image debug +%endif +%if %{with_pae} +BuildKernel %make_target %kernel_image PAEdebug +%endif +%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 + +%if %{with_kdump} +BuildKernel vmlinux vmlinux kdump vmlinux +%endif + +%if %{with_doc} +# Make the HTML and man pages. +make -j1 htmldocs mandocs || %{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 + +%define dgst $((grep '^CONFIG_MODULE_SIG_SHA512=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha512\"$' .config >/dev/null && echo sha512) || (grep '^CONFIG_MODULE_SIG_SHA256=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha256\"$' .config >/dev/null && echo sha256)) + +%define __modsign_install_post \ + if [ "%{signmodules}" == "1" ]; then \ + if [ "%{with_pae}" != "0" ]; then \ + mv signing_key.priv.sign.PAE signing_key.priv \ + mv signing_key.x509.sign.PAE signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAE/ %{dgst} \ + fi \ + if [ "%{with_debug}" != "0" ]; then \ + mv signing_key.priv.sign.debug signing_key.priv \ + mv signing_key.x509.sign.debug signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.debug/ %{dgst} \ + fi \ + if [ "%{with_pae_debug}" != "0" ]; then \ + mv signing_key.priv.sign.PAEdebug signing_key.priv \ + mv signing_key.x509.sign.PAEdebug signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAEdebug/ %{dgst} \ + fi \ + if [ "%{with_up}" != "0" ]; then \ + mv signing_key.priv.sign signing_key.priv \ + mv signing_key.x509.sign signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ %{dgst} \ + fi \ + fi \ +%{nil} + +### +### Special hacks for debuginfo subpackages. +### + +# This macro is used by %%install, so we must redefine it before that. +# TEMPORARY HACK: use the debuginfo in the build tree, passing it -g1 so as +# to strip out only debugging sections. +%define debug_package %{nil} + +%if %{with_debuginfo} + +%define __debug_install_post \ + %{_builddir}/find-debuginfo.sh %{debuginfo_args} -g1 %{_builddir}/%{?buildsubdir}\ +%{nil} + +%ifnarch noarch +%global __debug_package 1 +%files debuginfo-common +%defattr(-,root,root) +%dir /usr/src/debug +/usr/src/debug/kernel-%{version}/linux-%{kversion}-%{release} +%dir %{debuginfodir} +%dir %{debuginfodir}/%{image_install_path} +%dir %{debuginfodir}/lib +%dir %{debuginfodir}/lib/modules +%dir %{debuginfodir}/usr/src/kernels +%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-%{version}-%{release} + +%if %{with_doc} +docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{rpmversion} +man9dir=$RPM_BUILD_ROOT%{_datadir}/man/man9 + +# copy the source over +mkdir -p $docdir +tar -f - --exclude=man --exclude='.*' -c Documentation | tar xf - -C $docdir + +# Install man pages for the kernel API. +mkdir -p $man9dir +find Documentation/DocBook/man -name '*.9.gz' -print0 | +xargs -0 --no-run-if-empty %{__install} -m 444 -t $man9dir $m +ls $man9dir | grep -q '' || > $man9dir/BROKEN +%endif + +%ifnarch noarch +# perf shell wrapper +mkdir -p $RPM_BUILD_ROOT/usr/sbin/ +cp $RPM_SOURCE_DIR/perf $RPM_BUILD_ROOT/usr/sbin/perf +chmod 0755 $RPM_BUILD_ROOT/usr/sbin/perf +%endif + +%ifarch x86_64 %{all_x86} +# x86_energy_perf_policy shell wrapper +mkdir -p $RPM_BUILD_ROOT/usr/sbin/ +cp $RPM_SOURCE_DIR/x86_energy_perf_policy $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy +chmod 0755 $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy +%endif + + +%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 + +# glibc provides scsi headers for itself, for now +rm -rf $RPM_BUILD_ROOT/usr/include/scsi +rm -f $RPM_BUILD_ROOT/usr/include/asm*/atomic.h +rm -f $RPM_BUILD_ROOT/usr/include/asm*/io.h +rm -f $RPM_BUILD_ROOT/usr/include/asm*/irq.h + +# these are provided by drm-devel +rm -rf $RPM_BUILD_ROOT/usr/include/drm +%endif + +%if %{with_firmware} +mkdir -p $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} +make INSTALL_FW_PATH=$RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} firmware_install +%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 +### + +# +# This macro defines a %%post script for a kernel*-devel package. +# %%kernel_devel_post [] +# +%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/%{kversion}-%{release}.%{_arch}%{?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 %%posttrans script for a kernel package. +# %%kernel_variant_posttrans [] +# More text can follow to go at the end of this variant's %%post. +# +%define kernel_variant_posttrans() \ +%{expand:%%posttrans %{?1}}\ +/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --mkinitrd --dracut --depmod --update %{KVERREL}%{?1:.%{1}} || exit $?\ +/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --rpmposttrans %{KVERREL}%{?1:.%{1}} || exit $?\ +if [ -x /sbin/weak-modules ]\ +then\ + /sbin/weak-modules --add-kernel %{KVERREL}%{?1:.%{1}} || exit $?\ +fi\ +%{nil} + +# +# This macro defines a %%post script for a kernel package and its devel package. +# %%kernel_variant_post [-v ] [-r ] +# More text can follow to go at the end of this variant's %%post. +# +%define kernel_variant_post(uv:r:) \ +%{expand:%%kernel_devel_post %{!-u:%{?-v*}}}\ +%{expand:%%kernel_variant_posttrans %{!-u:%{?-v*}}}\ +%{expand:%%post %{!-u:%{?-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}\ +if grep --silent '^hwcap 0 nosegneg$' /etc/ld.so.conf.d/kernel-*.conf 2> /dev/null; then\ + sed -i '/^hwcap 0 nosegneg$/ s/0/1/' /etc/ld.so.conf.d/kernel-*.conf\ +fi\ +/sbin/new-kernel-pkg --package kernel%{?-v:-%{-v*}} --install %{KVERREL}%{!-u:%{?-v:.%{-v*}}} || exit $?\ +ln -sf /lib/firmware/%{rpmversion}-%{pkg_release} /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \ +%{nil} + +# +# This macro defines a %%preun script for a kernel package. +# %%kernel_variant_preun +# +%define kernel_variant_preun() \ +%{expand:%%preun %{?1}}\ +/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}%{?1:.%{1}} || exit $?\ +if [ -x /sbin/weak-modules ]\ +then\ + /sbin/weak-modules --remove-kernel %{KVERREL}%{?1:.%{1}} || exit $?\ + rm -f /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \ +fi\ +%{nil} + +# +# This macro defines a %%pre script for a kernel package. +# %%kernel_variant_pre +# +%define kernel_variant_pre() \ +%{expand:%%pre %{?1}}\ +message="Change references of /dev/hd in /etc/fstab to disk label"\ +if [ -f /etc/fstab ]\ +then\ +awk '($2=="/boot")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\ +bdretval=$?\ +awk '($2=="/")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\ +rdretval=$?\ +awk '($2=="/boot")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\ +blretval=$?\ +awk '($2=="/")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\ +rlretval=$?\ +if [ $bdretval == 0 ] || [ $rdretval == 0 ]\ +then\ +echo -e $message\ +exit 1\ +elif [ $blretval == 0 ] && [ $rlretval == 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +elif [ $blretval == 0 ] && [ $rdretval != 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +elif [ $bdretval != 0 ] && [ $rlretval == 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +elif [ $bdretval != 0 ] && [ $rdretval != 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +fi\ +fi\ +%{nil} + +%kernel_variant_pre +%kernel_variant_preun +%ifarch x86_64 +%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs) +%else +%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs) +%endif + +%kernel_variant_pre smp +%kernel_variant_preun smp +%kernel_variant_post -v smp + +%kernel_variant_pre PAE +%kernel_variant_preun PAE +%kernel_variant_post -v PAE -r (kernel|kernel-smp|kernel-xen) + +%kernel_variant_pre debug +%kernel_variant_preun debug +%kernel_variant_post -v debug + +%kernel_variant_post -v PAEdebug -r (kernel|kernel-smp|kernel-xen) +%kernel_variant_preun PAEdebug +%kernel_variant_pre PAEdebug + +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_firmware} +%files firmware +%defattr(-,root,root) +/lib/firmware/* +%doc linux-%{version}-%{release}/firmware/WHENCE +%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} +%{_datadir}/man/man9/* +%endif + +# 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] +# +%define kernel_variant_files(k:) \ +%if %{1}\ +%{expand:%%files %{?2}}\ +%defattr(-,root,root)\ +/%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\ +%if %{with_fips} \ +/%{image_install_path}/.vmlinuz-%{KVERREL}%{?2:.%{2}}.hmac \ +%endif \ +/boot/System.map-%{KVERREL}%{?2:.%{2}}\ +/boot/symvers-%{KVERREL}%{?2:.%{2}}.gz\ +/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}}/extra\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/updates\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/weak-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.*\ +/usr/libexec/perf.%{KVERREL}%{?2:.%{2}}\ +/usr/sbin/perf\ +%ifnarch sparc64\ +/usr/libexec/x86_energy_perf_policy.%{KVERREL}%{?2:.%{2}}\ +/usr/sbin/x86_energy_perf_policy\ +%endif\ +%ghost /boot/initramfs-%{KVERREL}%{?2:.%{2}}.img\ +%{expand:%%files %{?2:%{2}-}devel}\ +%defattr(-,root,root)\ +%dir /usr/src/kernels\ +%verify(not mtime) /usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +%if %{with_debuginfo}\ +%ifnarch noarch\ +%if %{fancy_debuginfo}\ +%{expand:%%files -f debuginfo%{?2}.list %{?2:%{2}-}debuginfo}\ +%else\ +%{expand:%%files %{?2:%{2}-}debuginfo}\ +%endif\ +%defattr(-,root,root)\ +%if !%{fancy_debuginfo}\ +%if "%{elf_image_install_path}" != ""\ +%{debuginfodir}/%{elf_image_install_path}/*-%{KVERREL}%{?2:.%{2}}.debug\ +%endif\ +%{debuginfodir}/lib/modules/%{KVERREL}%{?2:.%{2}}\ +%{debuginfodir}/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +# % {debuginfodir}/usr/bin/%{KVERREL}%{?2:.%{2}}\ +%endif\ +%endif\ +%endif\ +%endif\ +%{nil} + + +%kernel_variant_files %{with_up} +%kernel_variant_files %{with_smp} smp +%if %{with_up} +%kernel_variant_files %{with_debug} debug +%endif +%kernel_variant_files %{with_pae} PAE +%kernel_variant_files %{with_pae_debug} PAEdebug +%kernel_variant_files -k vmlinux %{with_kdump} kdump + +%changelog diff --git a/uek-rpm/ol6/ksplice_signing_key.x509 b/uek-rpm/ol6/ksplice_signing_key.x509 new file mode 100644 index 0000000000000000000000000000000000000000..ed0c391117c4bdbea32e4818237950e3a852cb53 GIT binary patch literal 1496 zcmXqLV!dL}#Jpz#GZP~d6DPxijss_E`FBk=;AP{~YV&CO&dbQi&B|ay>4U_g8P}-?Y~H%J0^r z?|CxRqTNd-IUJoagYU-Y{igdl6`drx)$d$CyEcP64R zPV-i!%q5{sftUaPKH=&uq&RtVTJw&hj7f~Kg)cu;?Qf8bc6xDIC(tqJQc~~2V!q5{ zn%eSP#aWk~b~<);dYQlFblpei%bm`LzT!4}sKGq>9HSPK53{v)#{sLXEz4We)bA+f z{QGjf(%!7EEc~!nb;dqjh1?}&&#GjC54tU%)F&9{@SXMA_TSLYtx zv}A>5*pADu4U^=q%x}H-iR)F_h9D)!XoVtm=IrGmUo+2CyFZ;|CaoJM6Xn~!%6`EO zCF5O9cUTwC^V$7g{7Un7CT2zk#>KG)(FQzh%%QTvjEw(Tm<$*UxIsLA78YhE_67r4 z5QmRNj75Z#k#FDEkoe_Cy_533N<1jvy78TlfjmfBnMJ}ttO2_M)V#_JN_PqB|IfF6 zKcIVRW6G&_GxHvv?#lYKW&LAOB?~QX#y4Ef3i72+3->+~m9ReO_TtXQwMKf~bDK=w z9*)gm2s%42Mcjb#%!D8O=OzS~xn+m8&OWrP`a=8x(chC?5+zIx>N}k7dCvL${;kB? zxe*@8vzUdi>nS@6w{A>}dZ6CMu>OVK*LSB11pe(j^x?tGvi5?voY!poUMPGwQ!Fo> zkZ-+p*QwJp_shKw?OJ&><2Tc{r&{*~RXHrbho$=6cdm@D>{{Ns=J;Rd(tkn)Cxv}J z{&CynTc4l5eQ`tX_56Tl9^z>ZFTd~beS!ae^Tb6LZH~C8`|q1?newOAaW+z`UztVyy_~IbP2Au| z;6qo{JGItjCoPvS&G0$7aYn=OUj6nkhqLU><`1vBzPKhOm6K?1wUd48zh2K>4g0m0 z-95g3S<#Cfo%K?DD@wx!PFQ>q?OWZrSKq75v|spstL_?!Jf>?0=LFUBKfAVY>eHhy zRd4CdT6}7g@KmeS)&DPEV(+>Ck!?%IT)~w^YaG{Z=CXL1`>5P!qv{jwvec52_^J-m zkmm4jN^1>2{t=yX(ffT~`=vHzgM)E<9~oX*v*nF&O0kFSwJl0VD?-09yK~Dr9QV4l T?~a&2 "Sorry, your kernel ($kverrel) doesn't support perf." + +exit $rc diff --git a/uek-rpm/ol6/update-el b/uek-rpm/ol6/update-el new file mode 100644 index 000000000000..4074fe202741 --- /dev/null +++ b/uek-rpm/ol6/update-el @@ -0,0 +1 @@ +6.6 diff --git a/uek-rpm/ol6/update-el-ol6 b/uek-rpm/ol6/update-el-ol6 new file mode 100644 index 000000000000..c596943a9f06 --- /dev/null +++ b/uek-rpm/ol6/update-el-ol6 @@ -0,0 +1 @@ +6.4 diff --git a/uek-rpm/ol6/x509.genkey b/uek-rpm/ol6/x509.genkey new file mode 100644 index 000000000000..fbcf6f30e692 --- /dev/null +++ b/uek-rpm/ol6/x509.genkey @@ -0,0 +1,16 @@ +[ req ] +default_bits = 4096 +distinguished_name = req_distinguished_name +prompt = no +x509_extensions = myexts + +[ req_distinguished_name ] +O = Oracle America, Inc.,c=US +CN = Oracle CA Server +emailAddress = support@oracle.com + +[ myexts ] +basicConstraints=critical,CA:FALSE +keyUsage=digitalSignature +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid diff --git a/uek-rpm/ol6/x86_energy_perf_policy b/uek-rpm/ol6/x86_energy_perf_policy new file mode 100644 index 000000000000..9cd3c4c5a464 --- /dev/null +++ b/uek-rpm/ol6/x86_energy_perf_policy @@ -0,0 +1,12 @@ +#!/bin/sh + +# In pathological situations, this will print some error about uname. +kverrel="`uname -r`" || exit + +exec "/usr/libexec/x86_energy_perf_policy.$kverrel" ${1+"$@"} +rc=$? + +# We're still here, so the exec failed. +echo >&2 "Sorry, your kernel ($kverrel) doesn't support x86_energy_perf_policy." + +exit $rc diff --git a/uek-rpm/ol7/check-kabi b/uek-rpm/ol7/check-kabi new file mode 100755 index 000000000000..e2fbb2b59988 --- /dev/null +++ b/uek-rpm/ol7/check-kabi @@ -0,0 +1,141 @@ +#!/usr/bin/python +# +# check-kabi - Red Hat kABI reference checking tool +# +# We use this script to check against reference Module.kabi files. +# +# Author: Jon Masters +# Copyright (C) 2007-2009 Red Hat, Inc. +# +# This software may be freely redistributed under the terms of the GNU +# General Public License (GPL). + +# Changelog: +# +# 2009/08/15 - Updated for use in RHEL6. +# 2007/06/13 - Initial rewrite in python by Jon Masters. + +__author__ = "Jon Masters " +__version__ = "2.0" +__date__ = "2009/08/15" +__copyright__ = "Copyright (C) 2007-2009 Red Hat, Inc" +__license__ = "GPL" + +import getopt +import os +import re +import sha +import string +import sys + +true = 1 +false = 0 + +def load_symvers(symvers,filename): + """Load a Module.symvers file.""" + + symvers_file = open(filename,"r") + + while true: + in_line = symvers_file.readline() + if in_line == "": + break + if in_line == "\n": + continue + checksum,symbol,directory,type = string.split(in_line) + + symvers[symbol] = in_line[0:-1] + +def load_kabi(kabi,filename): + """Load a Module.kabi file.""" + + kabi_file = open(filename,"r") + + while true: + in_line = kabi_file.readline() + if in_line == "": + break + if in_line == "\n": + continue + checksum,symbol,directory,type = string.split(in_line) + + kabi[symbol] = in_line[0:-1] + +def check_kabi(symvers,kabi): + """Check Module.kabi and Module.symvers files.""" + + fail=0 + warn=0 + changed_symbols=[] + moved_symbols=[] + + for symbol in kabi: + abi_hash,abi_sym,abi_dir,abi_type = string.split(kabi[symbol]) + if symvers.has_key(symbol): + sym_hash,sym_sym,sym_dir,sym_type = string.split(symvers[symbol]) + if abi_hash != sym_hash: + fail=1 + changed_symbols.append(symbol) + + if abi_dir != sym_dir: + warn=1 + moved_symbols.append(symbol) + + if fail: + print "*** ERROR - ABI BREAKAGE WAS DETECTED ***" + print "" + print "The following symbols have been changed (this will cause an ABI breakage):" + print "" + for symbol in changed_symbols: + print symbol + print "" + + if warn: + print "*** WARNING - ABI SYMBOLS MOVED ***" + print "" + print "The following symbols moved (typically caused by moving a symbol from being" + print "provided by the kernel vmlinux out to a loadable module):" + print "" + for symbol in moved_symbols: + print symbol + print "" + + if fail: + sys.exit(1) + else: + sys.exit(0) + +def usage(): + print """ +check-kabi: check Module.kabi and Module.symvers files. + + check-kabi [ -k Module.kabi ] [ -s Module.symvers ] + +""" + +if __name__ == "__main__": + + symvers_file = "" + kabi_file = "" + + opts, args = getopt.getopt(sys.argv[1:], 'hk:s:') + + for o, v in opts: + if o == "-s": + symvers_file = v + if o == "-h": + usage() + sys.exit(0) + if o == "-k": + kabi_file = v + + if (symvers_file == "") or (kabi_file == ""): + usage() + sys.exit(1) + + symvers={} + kabi={} + + load_symvers(symvers,symvers_file) + load_kabi(kabi,kabi_file) + check_kabi(symvers,kabi) diff --git a/uek-rpm/ol7/debuginfo-g1-minusr-old-elfutils.diff b/uek-rpm/ol7/debuginfo-g1-minusr-old-elfutils.diff new file mode 100644 index 000000000000..312608182bcf --- /dev/null +++ b/uek-rpm/ol7/debuginfo-g1-minusr-old-elfutils.diff @@ -0,0 +1,58 @@ +--- find-debuginfo.sh.orig 2012-09-12 20:42:13.106294407 +0100 ++++ find-debuginfo.sh 2012-09-12 20:49:52.496863002 +0100 +@@ -2,12 +2,14 @@ + #find-debuginfo.sh - automagically generate debug info and file list + #for inclusion in an rpm spec file. + # +-# Usage: find-debuginfo.sh [--strict-build-id] [-g] ++# Usage: find-debuginfo.sh [--strict-build-id] [-g|-g1] + # [-o debugfiles.list] + # [[-l filelist]... [-p 'pattern'] -o debuginfo.list] + # [builddir] + # + # The -g flag says to use strip -g instead of full strip on DSOs. ++# The -g1 flag says to use strip -g instead of full strip on ++# everything, DSO or not. + # The --strict-build-id flag says to exit with failure status if + # any ELF binary processed fails to contain a build-id note. + # +@@ -36,6 +38,9 @@ + --strict-build-id) + strict=true + ;; ++ -g1) ++ strip_g=full ++ ;; + -g) + strip_g=true + ;; +@@ -88,11 +93,25 @@ + + strip_to_debug() + { +- local g= +- $strip_g && case "$(file -bi "$2")" in +- application/x-sharedlib*) g=-g ;; ++ local use_objcopy=false ++ case "$strip_g" in ++ true) case "$(file -bi "$2")" in ++ application/x-sharedlib*) use_objcopy=true ;; ++ esac;; ++ full) use_objcopy=true;; + esac +- eu-strip --remove-comment $g -f "$1" "$2" || exit ++ # Note: eu-strip fails to remove debugging info in files containing ++ # debugging relocations at present. objcopy works fine, so use that. ++ # (This does mean that .comment sections don't get stripped, but this ++ # seems an insignificant problem for now. When elfutils is fixed this ++ # hack can be removed.) ++ if $use_objcopy; then ++ objcopy --only-keep-debug "$2" "$1" || exit ++ objcopy --strip-debug "$2" "$2.tmp" || exit ++ mv -f "$2.tmp" "$2" || exit ++ else ++ eu-strip --remove-comment -f "$1" "$2" || exit ++ fi + chmod 444 "$1" || exit + } + diff --git a/uek-rpm/ol7/debuginfo-g1.diff b/uek-rpm/ol7/debuginfo-g1.diff new file mode 100644 index 000000000000..942bc5313fbc --- /dev/null +++ b/uek-rpm/ol7/debuginfo-g1.diff @@ -0,0 +1,44 @@ +--- find-debuginfo.sh.orig 2014-03-04 19:27:49.318782137 -0700 ++++ find-debuginfo.sh 2014-03-05 17:09:21.364094567 -0700 +@@ -65,6 +67,9 @@ + dwz_max_die_limit=$2 + shift + ;; ++ -g1) ++ strip_g=full ++ ;; + -g) + strip_g=true + ;; +@@ -125,13 +130,27 @@ + + strip_to_debug() + { +- local g= ++ local use_objcopy=false + local r= + $strip_r && r=--reloc-debug-sections +- $strip_g && case "$(file -bi "$2")" in +- application/x-sharedlib*) g=-g ;; ++ case "$strip_g" in ++ true) case "$(file -bi "$2")" in ++ application/x-sharedlib*) use_objcopy=true ;; ++ esac;; ++ full) use_objcopy=true;; + esac +- eu-strip --remove-comment $r $g -f "$1" "$2" || exit ++ # Note: eu-strip fails to remove debugging info in files containing ++ # debugging relocations at present. objcopy works fine, so use that. ++ # (This does mean that .comment sections don't get stripped, but this ++ # seems an insignificant problem for now. When elfutils is fixed this ++ # hack can be removed.) ++ if $use_objcopy; then ++ objcopy --only-keep-debug "$2" "$1" || exit ++ objcopy --strip-debug "$2" "$2.tmp" || exit ++ mv -f "$2.tmp" "$2" || exit ++ else ++ eu-strip --remove-comment $r -f "$1" "$2" || exit ++ fi + chmod 444 "$1" || exit + } + diff --git a/uek-rpm/ol7/extrakeys.pub b/uek-rpm/ol7/extrakeys.pub new file mode 100644 index 0000000000000000000000000000000000000000..c1be439a1eefe8a9b94bb5f930ffb5764a2497c6 GIT binary patch literal 571 zcmV-B0>u590ipy?PLtsg1OS)U@P^GUE)chFVC;EB*B723YnQDbEPZJ<{V#jJfGBm_ zHe*OK3oNSm{KO3q1B-jj(+uhV>Dr_Z4Q!zkn5{(1pXVgD4Q-R1OI#MR(rTK`VMikQw}t-ia4&mzJG$VvHLHd? z(7zXJ(q_wXTj>8OmO z=HX{Y2}l$AG$Un`v@lO{VPkA%AVFEFej4V=f>lOJ#CyWo#f#Z)A0BWgt^& zXKrb3XCO;uc`1lu1QQVg03rnfPfnBJ0viJc3ke7Z0|EvW2m%QT3j`Jd0|5da0Rk6* z0162ZY;PRofFPKufSdrIWHLfqO?ChSxPf1+kX3t1<;19_0G~qa{XX5 +# Copyright (C) 2009 Red Hat, Inc. +# +# This software may be freely redistributed under the terms of the GNU +# General Public License (GPL). + +# Changelog: +# +# 2009/08/01 - New version based on kABI dep plan for RHEL6. +# + +__author__ = "Jon Masters " +__version__ = "$Revisions: 2.0 $" +__date__ = "$Date: 2010/09/01 04:58:18 $" +__copyright__ = "Copyright (C) 2009 Red Hat, Inc" +__license__ = "GPL" + +import getopt +import os +import re +import sha +import string +import sys + +true = 1 +false = 0 + +def load_symbols(filename): + """Load the kernel exported symbols from Module.symvers.""" + + ksyms = open(filename,"r") + + symbols={} + + while true: + line = ksyms.readline() + if line == "": + break; + if line == "\n": + continue + checksum,symbol,path,license = string.split(line) + + symbols[symbol] = dict(checksum=checksum, + path=path, + license=license) + + return symbols + +def output_deps(depsfile,symbols): + + deps_file = open(depsfile,"w") + + for symbol in sorted(symbols.keys()): + deps_file.write("kernel("+symbol+") = " + + symbols[symbol]['checksum'] + "\n") + +def usage(): + print """ +kabitool: process Module.symvers into useful exported kABI dependencies + + kabitool [-k kernel] [-s symbols ] + + -o The file to output sorted dependencies to + + -s The Module.symvers file to import from + +""" + +if __name__ == "__main__": + + symdeps_file = "" + symvers_file = "" + + opts, args = getopt.getopt(sys.argv[1:], 'ho:s:') + + for o, v in opts: + if o == "-h": + usage() + sys.exit(0) + if o == "-o": + symdeps_file = v + if o == "-s": + symvers_file = v + + if (symdeps_file == ""): + symdeps_file = "Module.symdeps" + + if (symvers_file == ""): + symvers_file = "Module.symvers" + + if not (os.path.isfile(symvers_file)): + print "cannot read Module.symvers file" + usage() + exit(1) + + symbols = load_symbols(symvers_file) + output_deps(symdeps_file, symbols) diff --git a/uek-rpm/ol7/kernel-uek.spec b/uek-rpm/ol7/kernel-uek.spec new file mode 100644 index 000000000000..00a3bab567be --- /dev/null +++ b/uek-rpm/ol7/kernel-uek.spec @@ -0,0 +1,1753 @@ +%define kernel_git_commit 74c661676446c010ea6f46dab7231d98761d66a5 +%global __spec_install_pre %{___build_pre} + +# Errors in specfile are causing builds to fail. Adding workarounds. +%define _unpackaged_files_terminate_build 0 +%define _missing_doc_files_terminate_build 0 + +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. +%define released_kernel 1 +# Versions of various parts + +# 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" +# +# % define buildid .local + +%define distro_build 0 +%define signmodules 1 + +# base_sublevel is the kernel version we're starting with and patching +# on top of -- for example, 2.6.22-rc7-git1 starts with a 2.6.21 base, +# which yields a base_sublevel of 21. +%define base_sublevel 0 + +## If this is a released kernel ## +%if 0%{?released_kernel} + +# Do we have a -stable update to apply? +%define stable_update 0 +# 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 4.1.%{base_sublevel}%{?stablerev} + +## 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 4.1.%{upstream_sublevel} +%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 in your rpmbuild command or force values +# to 0 in here to disable them. +# +# standard kernel +%define with_up 1 +# kernel-smp (only valid for ppc 32-bit, sparc64) +%define with_smp 1 +# kernel-kdump +%define with_kdump 0 +# kernel-debug +%define with_debug 1 +# kernel-doc +%define with_doc 1 +# kernel-headers +%define with_headers 0 +# dtrace +%define with_dtrace 0 +# kernel-firmware +%define with_firmware 0 +# 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} + +# 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 + +# Control whether we perform a compat. check against published ABI. +%ifarch sparc64 +%define with_kabichk 0 +%define fancy_debuginfo 0 +%else +%define with_kabichk 0 +%define fancy_debuginfo 0 +%endif + +# Control whether we build the hmac for fips mode. +%define with_fips %{?_without_fips: 0} %{?!_without_fips: 1} + +%if %{fancy_debuginfo} +BuildRequires: rpm-build >= 4.4.2.1-4 +%define debuginfo_args --strict-build-id +%endif + +# 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} + +# should we do C=1 builds with sparse +%define with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 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? +# (well, almost none, we need nonintconfig for build purposes). Default to 0 (off). +%define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0} + +# 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} +%endif +%define pkg_release 1%{?dist}uek%{?buildid} + +%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 1%{?dist}uek%{?buildid} + +%endif + +# The kernel tarball/base version +#%define kversion 4.1 +%define kversion 4.1.%{base_sublevel} + +%define make_target bzImage + +%define hdrarch %_target_cpu +%define asmarch %_target_cpu + +%if 0%{!?nopatches:1} +%define nopatches 0 +%endif + +%if %{with_vanilla} +%define nopatches 1 +%endif + +%define with_bootwrapper 0 + +%define pkg_release 1%{?dist}uek%{?buildid} + +%define KVERREL %{rpmversion}-%{pkg_release}.%{_target_cpu} + +%if !%{debugbuildsenabled} +%define with_debug 0 +%endif + +%if !%{with_debuginfo} +%define _enable_debug_packages 0 +%endif +%define debuginfodir /usr/lib/debug + +%define with_pae 0 + +# if requested, only build base kernel +%if %{with_baseonly} +%define with_smp 0 +%define with_kdump 0 +%define with_debug 0 +%endif + +# if requested, only build smp kernel +%if %{with_smponly} +%define with_up 0 +%define with_kdump 0 +%define with_debug 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 +%endif + +# Overrides for generic default options + +# only ppc need separate smp kernels +%ifnarch ppc alphaev56 +%define with_smp 0 +%endif + +# only build kernel-kdump on ppc64 +# (no relocatable kernel support upstream yet) +#FIXME: Temporarily disabled to speed up builds. +#ifnarch ppc64 +%define with_kdump 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 + +# no need to build headers again for these arches, +# they can just use i586 and ppc64 headers +%ifarch ppc64iseries +%define with_headers 0 +%endif + +# don't build noarch kernels or headers (duh) +%ifarch noarch +%define with_up 0 +%define with_headers 0 +%define with_paravirt 0 +%define with_paravirt_debug 0 +%define all_arch_configs kernel-%{version}-*.config +%define with_firmware %{?_without_firmware: 0} %{?!_without_firmware: 1} +%endif + +# bootwrapper is only on ppc +%ifnarch ppc ppc64 +%define with_bootwrapper 0 +%endif + +# sparse blows up on ppc64 alpha and sparc64 +%ifarch ppc64 ppc alpha sparc64 +%define with_sparse 0 +%endif + +# Only x86_64 does dtrace +%ifarch x86_64 +%define with_dtrace 1 +%endif + +# Per-arch tweaks + +%ifarch %{all_x86} +%define asmarch x86 +%define hdrarch i386 +%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 +%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 +%endif + +%ifarch sparc +# We only build sparc headers since we dont support sparc32 hardware +%endif + +%ifarch sparc64 +%define asmarch sparc +%define all_arch_configs kernel-%{version}-sparc64*.config +%define make_target image +%define kernel_image arch/sparc/boot/image +%define image_install_path boot +%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 ia64 +%define all_arch_configs kernel-%{version}-ia64*.config +%define image_install_path boot/efi/EFI/redhat +%define make_target compressed +%define kernel_image vmlinux.gz +%endif + +%ifarch alpha alphaev56 +%define all_arch_configs kernel-%{version}-alpha*.config +%define image_install_path boot +%define make_target vmlinux +%define kernel_image vmlinux +%endif + +%ifarch %{arm} +%define all_arch_configs kernel-%{version}-arm*.config +%define image_install_path boot +%define hdrarch arm +%define make_target vmlinux +%define kernel_image vmlinux +%endif + +%if %{nopatches} +# XXX temporary until last vdso patches are upstream +%define vdso_arches ppc ppc64 +%endif + +%define oldconfig_target oldnoconfig + +# 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 don't build a kernel on i386; we only do kernel-headers there, +# and we no longer build for 31bit S390. Same for 32bit sparc and arm. +##%define nobuildarches i386 s390 sparc %{arm} +%define nobuildarches s390 sparc %{arm} + +%ifarch %nobuildarches +%define with_up 0 +%define with_smp 0 +%define with_pae 0 +%define with_kdump 0 +%define with_debuginfo 0 +%define _enable_debug_packages 0 +%define with_paravirt 0 +%define with_paravirt_debug 0 +%endif + +%define with_pae_debug 0 +%if %{with_pae} +%define with_pae_debug %{with_debug} +%endif + +# +# Three sets of minimum package version requirements in the form of Conflicts: +# to versions below the minimum +# + +# +# First the general kernel 2.6 required versions as per +# Documentation/Changes +# +%define kernel_dot_org_conflicts ppp < 2.4.3-3, isdn4k-utils < 3.2-32, nfs-utils < 1.0.7-12, e2fsprogs < 1.37-4, util-linux < 2.12, jfsutils < 1.1.7-2, reiserfs-utils < 3.6.19-2, xfsprogs < 2.6.13-4, procps < 3.2.5-6.3, oprofile < 0.9.1-2 + +# +# Then a series of requirements that are distribution specific, either +# because we add patches for something, or the older versions have +# problems with the newer kernel or lack certain things that make +# integration in the distro harder than needed. +# +##%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, iwl4965-firmware < 228.57.2, selinux-policy-targeted < 1.25.3-14, squashfs-tools < 4.0, wireless-tools < 29-3 +%define package_conflicts initscripts < 7.23, udev < 063-6, iptables < 1.3.2-1, ipw2200-firmware < 2.4, selinux-policy-targeted < 1.25.3-14, device-mapper-multipath < 0.4.9-64, dracut < 004-303.0.3 + +# +# The ld.so.conf.d file we install uses syntax older ldconfig's don't grok. +# +%define kernel_xen_conflicts glibc < 2.3.5-1, xen < 3.0.1 + +# upto and including kernel 2.4.9 rpms, the 4Gb+ kernel was called kernel-enterprise +# now that the smp kernel offers this capability, obsolete the old kernel +%define kernel_smp_obsoletes kernel-enterprise < 2.4.10 +%define kernel_PAE_obsoletes kernel-smp < 2.6.17, kernel-xen <= 2.6.27-0.2.rc0.git6.fc10 +%define kernel_PAE_provides kernel-xen = %{rpmversion}-%{pkg_release} + +%ifarch x86_64 +%define kernel_obsoletes kernel-xen <= 2.6.27-0.2.rc0.git6.fc10 +%define kernel_provides kernel%{?variant}-xen = %{rpmversion}-%{pkg_release} +%endif + +# We moved the drm include files into kernel-headers, make sure there's +# a recent enough libdrm-devel on the system that doesn't have those. +%define kernel_headers_conflicts libdrm-devel < 2.4.0-0.15 + +# +# Packages that need to be installed before the kernel is, because the %post +# scripts use them. +# +%define kernel_prereq fileutils, module-init-tools, initscripts >= 8.11.1-1, kernel-firmware = %{rpmversion}-%{pkg_release}, /sbin/new-kernel-pkg +%define initrd_prereq dracut-kernel >= 004-242.0.3 + +# +# This macro does requires, provides, conflicts, obsoletes for a kernel package. +# %%kernel_reqprovconf +# It uses any kernel__conflicts and kernel__obsoletes +# macros defined above. +# +%define kernel_reqprovconf \ +Provides: kernel%{?variant} = %{rpmversion}-%{pkg_release}\ +Provides: kernel%{?variant}-%{_target_cpu} = %{rpmversion}-%{pkg_release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-drm = 4.3.0\ +Provides: kernel%{?variant}-drm-nouveau = 12\ +Provides: kernel%{?variant}-modeset = 1\ +Provides: kernel%{?variant}-uname-r = %{KVERREL}%{?1:.%{1}}\ +Provides: oracleasm = 2.0.5\ +%ifnarch sparc64\ +Provides: x86_energy_perf_policy = %{KVERREL}%{?1:.%{1}}\ +%endif\ +Provides: perf = %{KVERREL}%{?1:.%{1}}\ +#Provides: libperf.a = %{KVERREL}%{?1:.%{1}}\ +%ifarch sparc64\ +Provides: kernel = %{rpmversion}-%{pkg_release}\ +%endif\ +Requires(pre): %{kernel_prereq}\ +Requires(pre): %{initrd_prereq}\ +Requires(post): /sbin/new-kernel-pkg\ +Requires(preun): /sbin/new-kernel-pkg\ +Conflicts: %{kernel_dot_org_conflicts}\ +Conflicts: %{package_conflicts}\ +%{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} + +%define variant %{?build_variant:%{build_variant}}%{!?build_variant:-uek} +Name: kernel%{?variant} +Group: System Environment/Kernel +License: GPLv2 +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 paravirt paravirt-debug ppc ppc64 ia64 sparc sparc64 s390x alpha alphaev56 %{arm} +ExclusiveOS: Linux + +%kernel_reqprovconf +%ifarch x86_64 +Obsoletes: kernel-smp +%endif + + +# +# List the packages used during the kernel build +# +BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar +BuildRequires: bzip2, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk +BuildRequires: gcc >= 3.4.2, binutils >= 2.12 +BuildRequires: net-tools +BuildRequires: elfutils-libelf-devel +BuildRequires: python, python-devel +BuildRequires: flex >= 2.5.19, bison >= 2.3 +BuildRequires: pkgconfig +BuildRequires: glib2-devel +BuildRequires: elfutils-devel +BuildRequires: bc +%if %{with_doc} +BuildRequires: xmlto +%endif +%if %{with_sparse} +BuildRequires: sparse >= 0.4.1 +%endif +%if %{signmodules} +BuildRequires: openssl +BuildRequires: gnupg +BuildRequires: pesign >= 0.10-4 +%endif +%if %{with_fips} +BuildRequires: hmaccalc +%endif +%if %{with_dtrace} +BuildRequires: libdtrace-ctf-devel >= 0.5.0 +%endif +BuildConflicts: rhbuildsys(DiskFree) < 500Mb + +Source0: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-%{kversion}.tar.bz2 + +%if %{signmodules} +Source10: x509.genkey +%endif + +Source13: mod-sign.sh +%define modsign_cmd %{SOURCE13} + +Source14: find-provides +Source16: perf +Source17: kabitool +Source18: check-kabi +Source19: extrakeys.pub +Source20: x86_energy_perf_policy +Source21: securebootca.cer +Source22: secureboot.cer + +Source1000: config-x86_64 +Source1001: config-x86_64-debug +#Source1004: config-sparc +#Source1005: config-sparc-debug + +#Source26: Module.kabi_x86_64 + +Source201: kabi_whitelist_x86_64 +Source202: ksplice_signing_key.x509 + +Source300: debuginfo-g1.diff +Source301: debuginfo-g1-minusr-old-elfutils.diff + +# 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-2.6.%{base_sublevel}.%{stable_base}.bz2 +Patch00: %{stable_patch_00} +%endif +%if 0%{?stable_rc} +%define stable_patch_01 patch-2.6.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.bz2 +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-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2 +%if 0%{?gitrev} +Patch01: patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2 +%endif +%else +# pre-{base_sublevel+1}-rc1 case +%if 0%{?gitrev} +Patch00: patch-2.6.%{base_sublevel}-git%{gitrev}.bz2 +%endif +%endif +%endif + +%if !%{nopatches} +# revert patches place holder +%endif + + +BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root + +# Override find_provides to use a script that provides "kernel(symbol) = hash". +# Pass path of the RPM temp dir containing kabideps to find-provides script. +%global _use_internal_dependency_generator 0 +%define __find_provides %_sourcedir/find-provides %{_tmppath} +%define __find_requires /usr/lib/rpm/redhat/find-requires kernel + +%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 +Obsoletes: kernel-doc +Provides: kernel-doc +%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 +Obsoletes: kernel-headers +Provides: kernel-headers +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 firmware +Summary: Firmware files used by the Linux kernel +Group: Development/System +# This is... complicated. +# Look at the WHENCE file. +License: GPL+ and GPLv2+ and MIT and Redistributable, no modification permitted +%if "x%{?variant}" != "x" +Provides: kernel-firmware = %{rpmversion}-%{pkg_release} +%endif +%ifarch sparc64 +Provides: kernel-firmware = %{rpmversion}-%{pkg_release} +%endif +%description firmware +Kernel firmware includes firmware files required for some devices to +operate. + +%package bootwrapper +Summary: Boot wrapper files for generating combined kernel + initrd images +Group: Development/System +Requires: gzip +%description bootwrapper +Kernel-bootwrapper contains the wrapper code which makes bootable "zImage" +files combining both kernel and initial ramdisk. + +%package debuginfo-common +Summary: Kernel source files used by %{name}-debuginfo packages +Group: Development/Debug +Provides: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release} +%description debuginfo-common +This package is required by %{name}-debuginfo subpackages. +It provides the kernel source files common to all builds. + + +# +# This macro creates a kernel--debuginfo package. +# %%kernel_debuginfo_package +# +%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--devel package. +# %%kernel_devel_package +# +%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%{?variant}%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\ +Provides: kernel%{?variant}-xen-devel = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-devel-%{_target_cpu} = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-devel = %{version}-%{release}%{?1:.%{1}}\ +Provides: kernel%{?variant}-devel-uname-r = %{KVERREL}%{?1:.%{1}}\ +%ifarch sparc64\ +Provides: kernel-devel = %{version}-%{release}%{?1:.%{1}}\ +%endif\ +AutoReqProv: no\ +Requires(pre): /usr/bin/find\ +Requires: elfutils-libelf >= 0.160\ +Requires: elfutils-libs >= 0.160\ +%if %{with_dtrace}\ +Requires: libdtrace-ctf >= 0.5.0\ +%endif\ +%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- and its -devel and -debuginfo too. +# %%define variant_summary The Linux kernel compiled for +# %%kernel_variant_package [-n ] +# +%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*}}}\ +%{expand:%%kernel_debuginfo_package %1}\ +%{nil} + + +# First the auxiliary packages of the main kernel package. +%kernel_devel_package +%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. + + +%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. + + +%define variant_summary The Linux kernel compiled with extra debugging enabled for PAE capable machines +%kernel_variant_package PAEdebug +Obsoletes: kernel-PAE-debug +%description PAEdebug +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. + + +%define variant_summary A minimal Linux kernel compiled for crash dumps +%kernel_variant_package kdump +%description kdump +This package includes a kdump version of the Linux kernel. It is +required only on machines which will use the kexec-based kernel crash dump +mechanism. + + +%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 + +patch_command='patch -p1 -F1 -s' +ApplyPatch() +{ + local patch=$1 + shift + if [ ! -f $RPM_SOURCE_DIR/$patch ]; then + exit 1; + fi + if ! egrep "^Patch[0-9]+: $patch\$" %{_specdir}/%{name}*.spec ; then + [ "${patch:0:10}" != "patch-2.6." ] && echo "Patch $patch not listed in specfile" && exit 1; + fi + case "$patch" in + *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; + *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; + *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;; + esac +} + +test_config_file() +{ + TestConfig=$1 + Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1` + if [ `make ARCH=$Arch listnewconfig 2>/dev/null | grep -c CONFIG` -ne 0 ]; then + echo "Following config options are unconfigured" + make ARCH=$Arch listnewconfig 2> /dev/null + echo "WARNING: Kernel version and config file missmatch" + echo "WARNING: This options will be unset by default in config file" + 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 2.6.%{base_sublevel} +# non-released_kernel case +%else +%if 0%{?rcrev} +%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev} +%if 0%{?gitrev} +%define vanillaversion 2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev} +%endif +%else +# pre-{base_sublevel+1}-rc1 case +%if 0%{?gitrev} +%define vanillaversion 2.6.%{base_sublevel}-git%{gitrev} +%endif +%endif +%endif + +# We can share hardlinked source trees by putting a list of +# directory names of the CVS checkouts that we want to share +# with in .shared-srctree. (Full pathnames are required.) +[ -f .shared-srctree ] && sharedirs=$(cat .shared-srctree) + +if [ ! -d kernel-%{kversion}/vanilla-%{vanillaversion} ]; then + + if [ -d kernel-%{kversion}/vanilla-%{kversion} ]; then + + cd kernel-%{kversion} + + # Any vanilla-* directories other than the base one are stale. + for dir in vanilla-*; do + [ "$dir" = vanilla-%{kversion} ] || rm -rf $dir & + done + + else + + # Ok, first time we do a make prep. + rm -f pax_global_header + for sharedir in $sharedirs ; do + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then + break + fi + done + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{kversion} ]] ; then +%setup -q -n kernel-%{kversion} -c -T + cp -rl $sharedir/kernel-%{kversion}/vanilla-%{kversion} . + else +%setup -q -n kernel-%{kversion} -c + mv linux-%{kversion} vanilla-%{kversion} + fi + + fi + +%if "%{kversion}" != "%{vanillaversion}" + + for sharedir in $sharedirs ; do + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then + break + fi + done + if [[ ! -z $sharedir && -d $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} ]] ; then + + cp -rl $sharedir/kernel-%{kversion}/vanilla-%{vanillaversion} . + + else + + 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-2.6.%{upstream_sublevel}-rc%{rcrev}.bz2 +%if 0%{?gitrev} + ApplyPatch patch-2.6.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2 +%endif +%else +# pre-{base_sublevel+1}-rc1 case +%if 0%{?gitrev} + ApplyPatch patch-2.6.%{base_sublevel}-git%{gitrev}.bz2 +%endif +%endif + + cd .. + + fi + +%endif + +else + # We already have a vanilla dir. + cd kernel-%{kversion} +fi + +if [ -d linux-%{kversion}.%{_target_cpu} ]; 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 linux-%{kversion}.%{_target_cpu} deleteme.%{_target_cpu} + rm -rf deleteme.%{_target_cpu} & +fi + +cp -rl vanilla-%{vanillaversion} linux-%{kversion}-%{release} +cd linux-%{kversion}-%{release} + +# released_kernel with possible stable updates +%if 0%{?stable_base} +ApplyPatch %{stable_patch_00} +%endif +%if 0%{?stable_rc} +ApplyPatch %{stable_patch_01} +%endif + +# Copy the RPM find-debuginfo.sh into the buildroot and patch it +# to support -g1. (This is a patch of *RPM*, not of the kernel, +# so it is not governed by nopatches.) +cp %{_rpmconfigdir}/find-debuginfo.sh %{_builddir} +patch %{_builddir}/find-debuginfo.sh %{SOURCE300} || \ + { mv -f %{_builddir}/find-debuginfo.sh.orig %{_builddir}/find-debuginfo.sh && \ + patch %{_builddir}/find-debuginfo.sh %{SOURCE301}; } +chmod +x %{_builddir}/find-debuginfo.sh + +# only deal with configs if we are going to build for the arch +# %ifnarch %nobuildarches + +mkdir -p configs +%ifarch x86_64 + cp %{SOURCE1001} configs/config-debug + cp %{SOURCE1000} configs/config +%endif #ifarch x86_64 + +%ifarch i686 + cp %{SOURCE1003} configs/config-debug + cp %{SOURCE1002} configs/config +%endif #ifarch i686 + +%ifarch sparc64 + cp %{SOURCE1005} configs/config-debug + cp %{SOURCE1004} configs/config +%endif #ifarch sparc + +cp %{SOURCE202} ksplice_signing_key.x509 + +# get rid of unwanted files resulting from patch fuzz +find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null + +### +### build +### +%build + +%if %{with_sparse} +%define sparse_mflags C=1 +%endif + +%if %{fancy_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 $@ > $@.id"' +%endif + +cp_vmlinux() +{ + eu-strip --remove-comment -o "$2" "$1" +} + +BuildKernel() { + MakeTarget=$1 + KernelImage=$2 + Flavour=$3 + 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}${Flavour:+.${Flavour}} + + # 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}${Flavour:+.${Flavour}} + echo BUILDING A KERNEL FOR ${Flavour} %{_target_cpu}... + + # make sure EXTRAVERSION says what we want it to say + perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?stablerev}-%{release}.%{_target_cpu}${Flavour:+.${Flavour}}/" Makefile + #perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{base_sublevel}/" Makefile + + make -s mrproper + + %if %{signmodules} + cp %{SOURCE10} . + chmod +x scripts/sign-file + %endif + + if [ "$Flavour" == "debug" ]; then + cp configs/config-debug .config + else + cp configs/config .config + fi + + Arch=`head -n 3 .config |grep -e "Linux.*Kernel" |cut -d '/' -f 2 | cut -d ' ' -f 1` + echo USING ARCH=$Arch + make -s ARCH=$Arch %{oldconfig_target} > /dev/null + make -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags} + make -s ARCH=$Arch V=1 %{?_smp_mflags} modules %{?sparse_mflags} || exit 1 + + # 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 + touch $RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img + 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} + %ifarch x86_64 + # Sign the image if we're using EFI + %pesign -s -i $KernelImage -o $KernelImage.signed -a %{SOURCE21} -c %{SOURCE22} -n oraclesecureboot + mv $KernelImage.signed $KernelImage + %endif + %endif + $CopyKernel $KernelImage \ + $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer + chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer + +%if %{with_fips} + # 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; +%endif + + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer + # Override $(mod-fw) because we don't want it to install any firmware + # We'll do that ourselves with 'make firmware_install' + make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer mod-fw= + # check if the modules are being signed + +%ifarch %{vdso_arches} + make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer + if grep '^CONFIG_XEN=y$' .config >/dev/null; then + echo > ldconfig-kernel.conf "\ +# This directive teaches ldconfig to search in nosegneg subdirectories +# and cache the DSOs there with extra bit 0 set in their hwcap match +# fields. In Xen guest kernels, the vDSO tells the dynamic linker to +# search in nosegneg subdirectories and to match this extra hwcap bit +# in the ld.so.cache file. +hwcap 0 nosegneg" + fi + 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 +%ifarch %{vdso_arches} sparc64 +%ifnarch noarch +# build tools/perf: + if [ -d tools/perf ]; then + cd tools/perf + make all +# and install it: +# mkdir -p $RPM_BUILD_ROOT/usr/bin/$KernelVer/ + mkdir -p $RPM_BUILD_ROOT/usr/libexec/ + install -m 755 perf $RPM_BUILD_ROOT/usr/libexec/perf.$KernelVer + #install -m 755 libperf.a $RPM_BUILD_ROOT/lib/modules/$KernelVer/bin/%{_target_cpu}/libperf.a + cd ../.. + fi +%endif +%ifarch x86_64 %{all_x86} +# build tools/power/x86/x86_energy_perf_policy: + if [ -d tools/power/x86/x86_energy_perf_policy ]; then + cd tools/power/x86/x86_energy_perf_policy + make +# and install it: + mkdir -p $RPM_BUILD_ROOT/usr/libexec/ + install -m 755 x86_energy_perf_policy $RPM_BUILD_ROOT/usr/libexec/x86_energy_perf_policy.$KernelVer + cd ../../../../ + fi +%endif +%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 + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/weak-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 + + # create the kABI metadata for use in packaging + echo "**** GENERATING kernel ABI metadata ****" + gzip -c9 < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.gz + chmod 0755 %_sourcedir/kabitool + if [ -e $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour ]; then + cp $RPM_SOURCE_DIR/kabi_whitelist_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/kabi_whitelist + fi + rm -f %{_tmppath}/kernel-$KernelVer-kabideps + %_sourcedir/kabitool -s Module.symvers -o %{_tmppath}/kernel-$KernelVer-kabideps + +%if %{with_kabichk} + echo "**** kABI checking is enabled in kernel SPEC file. ****" + chmod 0755 $RPM_SOURCE_DIR/check-kabi + if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour ]; then + cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Flavour $RPM_BUILD_ROOT/Module.kabi + $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1 + rm $RPM_BUILD_ROOT/Module.kabi # for now, don't keep it around. + else + echo "**** NOTE: Cannot find reference Module.kabi file. ****" + fi +%endif + + # 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 + 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 + cp -a --parents Kbuild $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + cp -a --parents kernel/bounds.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + cp -a --parents arch/%{asmarch}/kernel/asm-offsets.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ +%ifnarch %{sparc} + cp -a --parents arch/%{asmarch}/kernel/asm-offsets_64.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ +%endif + cp -a --parents security/selinux/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + + mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + cd include + cp -a acpi asm-generic clocksource config crypto drm dt-bindings generated keys kvm linux math-emu media memory misc net pcmcia ras rdma rxrpc scsi soc sound target trace uapi video xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + asmdir=../arch/%{asmarch}/include/asm + cp -a $asmdir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/ + cd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include + ln -s $asmdir asm + cd - + # 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 + cd .. + +%if %{fancy_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 +%endif + + # + # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm + # +%if %{with_debuginfo} + 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. + + fgrep /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 + } + + collect_modules_list networking \ + 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|register_netdevice' + collect_modules_list block \ + 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size' + 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#$RPM_BUILD_ROOT/lib/modules/$KernelVer/} " >> modinfo + /sbin/modinfo -l $i >> modinfo + done < modnames + + egrep -v \ + 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' \ + modinfo && exit 1 + + rm -f modinfo modnames + +%if %{signmodules} + # Save off the .tmp_versions/ directory. We'll use it in the + # __debug_install_post macro below to sign the right things + # Also save the signing keys so we actually sign the modules with the + # right key. + cp -r .tmp_versions .tmp_versions.sign${Flavour:+.${Flavour}} + cp signing_key.priv signing_key.priv.sign${Flavour:+.${Flavour}} + cp signing_key.x509 signing_key.x509.sign${Flavour:+.${Flavour}} +%endif + + # remove files that will be auto generated by depmod at rpm -i time + for i in alias ccwmap dep ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols usbmap + do + rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$i + done + + # 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 + ln -sf $DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build +} + +### +# DO it... +### + +# prepare directories +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/boot + +cd linux-%{version}-%{release} + +%if %{with_debug} +%if %{with_up} +BuildKernel %make_target %kernel_image debug +%endif +%if %{with_pae} +BuildKernel %make_target %kernel_image PAEdebug +%endif +%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 + +%if %{with_kdump} +BuildKernel vmlinux vmlinux kdump vmlinux +%endif + +%if %{with_doc} +# Make the HTML and man pages. +make -j1 htmldocs mandocs || %{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 + +%define dgst $((grep '^CONFIG_MODULE_SIG_SHA512=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha512\"$' .config >/dev/null && echo sha512) || (grep '^CONFIG_MODULE_SIG_SHA256=y$' .config >/dev/null && grep '^CONFIG_MODULE_SIG_HASH=\"sha256\"$' .config >/dev/null && echo sha256)) + +%define __modsign_install_post \ + if [ "%{signmodules}" == "1" ]; then \ + if [ "%{with_pae}" != "0" ]; then \ + mv signing_key.priv.sign.PAE signing_key.priv \ + mv signing_key.x509.sign.PAE signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAE/ %{dgst} \ + fi \ + if [ "%{with_debug}" != "0" ]; then \ + mv signing_key.priv.sign.debug signing_key.priv \ + mv signing_key.x509.sign.debug signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.debug/ %{dgst} \ + fi \ + if [ "%{with_pae_debug}" != "0" ]; then \ + mv signing_key.priv.sign.PAEdebug signing_key.priv \ + mv signing_key.x509.sign.PAEdebug signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}.PAEdebug/ %{dgst} \ + fi \ + if [ "%{with_up}" != "0" ]; then \ + mv signing_key.priv.sign signing_key.priv \ + mv signing_key.x509.sign signing_key.x509 \ + %{modsign_cmd} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ %{dgst} \ + fi \ + fi \ +%{nil} + +### +### Special hacks for debuginfo subpackages. +### + +# This macro is used by %%install, so we must redefine it before that. +# TEMPORARY HACK: use the debuginfo in the build tree, passing it -g1 so as +# to strip out only debugging sections. +%define debug_package %{nil} + +%if %{with_debuginfo} + +%define __debug_install_post \ + %{_builddir}/find-debuginfo.sh %{debuginfo_args} -g1 %{_builddir}/%{?buildsubdir}\ +%{nil} + +%ifnarch noarch +%global __debug_package 1 +%files debuginfo-common +%defattr(-,root,root) +%dir /usr/src/debug +/usr/src/debug/kernel-%{version}/linux-%{kversion}-%{release} +%dir %{debuginfodir} +%dir %{debuginfodir}/%{image_install_path} +%dir %{debuginfodir}/lib +%dir %{debuginfodir}/lib/modules +%dir %{debuginfodir}/usr/src/kernels +%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-%{version}-%{release} + +%if %{with_doc} +docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{rpmversion} +man9dir=$RPM_BUILD_ROOT%{_datadir}/man/man9 + +# copy the source over +mkdir -p $docdir +tar -f - --exclude=man --exclude='.*' -c Documentation | tar xf - -C $docdir + +# Install man pages for the kernel API. +mkdir -p $man9dir +find Documentation/DocBook/man -name '*.9.gz' -print0 | +xargs -0 --no-run-if-empty %{__install} -m 444 -t $man9dir $m +ls $man9dir | grep -q '' || > $man9dir/BROKEN +%endif + +%ifnarch noarch +# perf shell wrapper +mkdir -p $RPM_BUILD_ROOT/usr/sbin/ +cp $RPM_SOURCE_DIR/perf $RPM_BUILD_ROOT/usr/sbin/perf +chmod 0755 $RPM_BUILD_ROOT/usr/sbin/perf +%endif + +%ifarch x86_64 %{all_x86} +# x86_energy_perf_policy shell wrapper +mkdir -p $RPM_BUILD_ROOT/usr/sbin/ +cp $RPM_SOURCE_DIR/x86_energy_perf_policy $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy +chmod 0755 $RPM_BUILD_ROOT/usr/sbin/x86_energy_perf_policy +%endif + + +%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 + +# glibc provides scsi headers for itself, for now +rm -rf $RPM_BUILD_ROOT/usr/include/scsi +rm -f $RPM_BUILD_ROOT/usr/include/asm*/atomic.h +rm -f $RPM_BUILD_ROOT/usr/include/asm*/io.h +rm -f $RPM_BUILD_ROOT/usr/include/asm*/irq.h + +# these are provided by drm-devel +rm -rf $RPM_BUILD_ROOT/usr/include/drm +%endif + +%if %{with_firmware} +mkdir -p $RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} +make INSTALL_FW_PATH=$RPM_BUILD_ROOT/lib/firmware/%{rpmversion}-%{pkg_release} firmware_install +%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 +### + +# +# This macro defines a %%post script for a kernel*-devel package. +# %%kernel_devel_post [] +# +%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/%{kversion}-%{release}.%{_arch}%{?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 %%posttrans script for a kernel package. +# %%kernel_variant_posttrans [] +# More text can follow to go at the end of this variant's %%post. +# +%define kernel_variant_posttrans() \ +%{expand:%%posttrans %{?1}}\ +/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --mkinitrd --dracut --depmod --update %{KVERREL}%{?1:.%{1}} || exit $?\ +/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} --rpmposttrans %{KVERREL}%{?1:.%{1}} || exit $?\ +if [ -x /sbin/weak-modules ]\ +then\ + /sbin/weak-modules --add-kernel %{KVERREL}%{?1:.%{1}} || exit $?\ +fi\ +%{nil} + +# +# This macro defines a %%post script for a kernel package and its devel package. +# %%kernel_variant_post [-v ] [-r ] +# More text can follow to go at the end of this variant's %%post. +# +%define kernel_variant_post(uv:r:) \ +%{expand:%%kernel_devel_post %{!-u:%{?-v*}}}\ +%{expand:%%kernel_variant_posttrans %{!-u:%{?-v*}}}\ +%{expand:%%post %{!-u:%{?-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}\ +if grep --silent '^hwcap 0 nosegneg$' /etc/ld.so.conf.d/kernel-*.conf 2> /dev/null; then\ + sed -i '/^hwcap 0 nosegneg$/ s/0/1/' /etc/ld.so.conf.d/kernel-*.conf\ +fi\ +/sbin/new-kernel-pkg --package kernel%{?-v:-%{-v*}} --install %{KVERREL}%{!-u:%{?-v:.%{-v*}}} || exit $?\ +ln -sf /lib/firmware/%{rpmversion}-%{pkg_release} /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \ +%{nil} + +# +# This macro defines a %%preun script for a kernel package. +# %%kernel_variant_preun +# +%define kernel_variant_preun() \ +%{expand:%%preun %{?1}}\ +/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}%{?1:.%{1}} || exit $?\ +if [ -x /sbin/weak-modules ]\ +then\ + /sbin/weak-modules --remove-kernel %{KVERREL}%{?1:.%{1}} || exit $?\ + rm -f /lib/firmware/%{rpmversion}-%{pkg_release}.%{_target_cpu} \ +fi\ +%{nil} + +# +# This macro defines a %%pre script for a kernel package. +# %%kernel_variant_pre +# +%define kernel_variant_pre() \ +%{expand:%%pre %{?1}}\ +message="Change references of /dev/hd in /etc/fstab to disk label"\ +if [ -f /etc/fstab ]\ +then\ +awk '($2=="/boot")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\ +bdretval=$?\ +awk '($2=="/")&&/^\\/dev\\/hd/{print $1}' /etc/fstab | egrep -q "^/dev/hd"\ +rdretval=$?\ +awk '($2=="/boot")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\ +blretval=$?\ +awk '($2=="/")&&/^LABEL=/{print $1}' /etc/fstab | egrep -q "^LABEL="\ +rlretval=$?\ +if [ $bdretval == 0 ] || [ $rdretval == 0 ]\ +then\ +echo -e $message\ +exit 1\ +elif [ $blretval == 0 ] && [ $rlretval == 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +elif [ $blretval == 0 ] && [ $rdretval != 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +elif [ $bdretval != 0 ] && [ $rlretval == 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +elif [ $bdretval != 0 ] && [ $rdretval != 0 ]\ +then\ +grep -v "^#" /etc/fstab | egrep -q "/dev/hd"\ +if [ $? == 0 ]\ +then\ +echo -e $message\ +fi\ +fi\ +fi\ +%{nil} + +%kernel_variant_pre +%kernel_variant_preun +%ifarch x86_64 +%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs) +%else +%kernel_variant_post -u -v uek -r (kernel%{variant}|kernel%{variant}-debug|kernel-ovs) +%endif + +%kernel_variant_pre smp +%kernel_variant_preun smp +%kernel_variant_post -v smp + +%kernel_variant_pre PAE +%kernel_variant_preun PAE +%kernel_variant_post -v PAE -r (kernel|kernel-smp|kernel-xen) + +%kernel_variant_pre debug +%kernel_variant_preun debug +%kernel_variant_post -v debug + +%kernel_variant_post -v PAEdebug -r (kernel|kernel-smp|kernel-xen) +%kernel_variant_preun PAEdebug +%kernel_variant_pre PAEdebug + +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_firmware} +%files firmware +%defattr(-,root,root) +/lib/firmware/* +%doc linux-%{version}-%{release}/firmware/WHENCE +%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} +%{_datadir}/man/man9/* +%endif + +# 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] +# +%define kernel_variant_files(k:) \ +%if %{1}\ +%{expand:%%files %{?2}}\ +%defattr(-,root,root)\ +/%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\ +%if %{with_fips} \ +/%{image_install_path}/.vmlinuz-%{KVERREL}%{?2:.%{2}}.hmac \ +%endif \ +/boot/System.map-%{KVERREL}%{?2:.%{2}}\ +/boot/symvers-%{KVERREL}%{?2:.%{2}}.gz\ +/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}}/extra\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/updates\ +/lib/modules/%{KVERREL}%{?2:.%{2}}/weak-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.*\ +/usr/libexec/perf.%{KVERREL}%{?2:.%{2}}\ +/usr/sbin/perf\ +%ifnarch sparc64\ +/usr/libexec/x86_energy_perf_policy.%{KVERREL}%{?2:.%{2}}\ +/usr/sbin/x86_energy_perf_policy\ +%endif\ +%ghost /boot/initramfs-%{KVERREL}%{?2:.%{2}}.img\ +%{expand:%%files %{?2:%{2}-}devel}\ +%defattr(-,root,root)\ +%dir /usr/src/kernels\ +%verify(not mtime) /usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +%if %{with_debuginfo}\ +%ifnarch noarch\ +%if %{fancy_debuginfo}\ +%{expand:%%files -f debuginfo%{?2}.list %{?2:%{2}-}debuginfo}\ +%else\ +%{expand:%%files %{?2:%{2}-}debuginfo}\ +%endif\ +%defattr(-,root,root)\ +%if !%{fancy_debuginfo}\ +%if "%{elf_image_install_path}" != ""\ +%{debuginfodir}/%{elf_image_install_path}/*-%{KVERREL}%{?2:.%{2}}.debug\ +%endif\ +%{debuginfodir}/lib/modules/%{KVERREL}%{?2:.%{2}}\ +%{debuginfodir}/usr/src/kernels/%{KVERREL}%{?2:.%{2}}\ +# % {debuginfodir}/usr/bin/%{KVERREL}%{?2:.%{2}}\ +%endif\ +%endif\ +%endif\ +%endif\ +%{nil} + + +%kernel_variant_files %{with_up} +%kernel_variant_files %{with_smp} smp +%if %{with_up} +%kernel_variant_files %{with_debug} debug +%endif +%kernel_variant_files %{with_pae} PAE +%kernel_variant_files %{with_pae_debug} PAEdebug +%kernel_variant_files -k vmlinux %{with_kdump} kdump + +%changelog diff --git a/uek-rpm/ol7/ksplice_signing_key.x509 b/uek-rpm/ol7/ksplice_signing_key.x509 new file mode 100644 index 0000000000000000000000000000000000000000..ed0c391117c4bdbea32e4818237950e3a852cb53 GIT binary patch literal 1496 zcmXqLV!dL}#Jpz#GZP~d6DPxijss_E`FBk=;AP{~YV&CO&dbQi&B|ay>4U_g8P}-?Y~H%J0^r z?|CxRqTNd-IUJoagYU-Y{igdl6`drx)$d$CyEcP64R zPV-i!%q5{sftUaPKH=&uq&RtVTJw&hj7f~Kg)cu;?Qf8bc6xDIC(tqJQc~~2V!q5{ zn%eSP#aWk~b~<);dYQlFblpei%bm`LzT!4}sKGq>9HSPK53{v)#{sLXEz4We)bA+f z{QGjf(%!7EEc~!nb;dqjh1?}&&#GjC54tU%)F&9{@SXMA_TSLYtx zv}A>5*pADu4U^=q%x}H-iR)F_h9D)!XoVtm=IrGmUo+2CyFZ;|CaoJM6Xn~!%6`EO zCF5O9cUTwC^V$7g{7Un7CT2zk#>KG)(FQzh%%QTvjEw(Tm<$*UxIsLA78YhE_67r4 z5QmRNj75Z#k#FDEkoe_Cy_533N<1jvy78TlfjmfBnMJ}ttO2_M)V#_JN_PqB|IfF6 zKcIVRW6G&_GxHvv?#lYKW&LAOB?~QX#y4Ef3i72+3->+~m9ReO_TtXQwMKf~bDK=w z9*)gm2s%42Mcjb#%!D8O=OzS~xn+m8&OWrP`a=8x(chC?5+zIx>N}k7dCvL${;kB? zxe*@8vzUdi>nS@6w{A>}dZ6CMu>OVK*LSB11pe(j^x?tGvi5?voY!poUMPGwQ!Fo> zkZ-+p*QwJp_shKw?OJ&><2Tc{r&{*~RXHrbho$=6cdm@D>{{Ns=J;Rd(tkn)Cxv}J z{&CynTc4l5eQ`tX_56Tl9^z>ZFTd~beS!ae^Tb6LZH~C8`|q1?newOAaW+z`UztVyy_~IbP2Au| z;6qo{JGItjCoPvS&G0$7aYn=OUj6nkhqLU><`1vBzPKhOm6K?1wUd48zh2K>4g0m0 z-95g3S<#Cfo%K?DD@wx!PFQ>q?OWZrSKq75v|spstL_?!Jf>?0=LFUBKfAVY>eHhy zRd4CdT6}7g@KmeS)&DPEV(+>Ck!?%IT)~w^YaG{Z=CXL1`>5P!qv{jwvec52_^J-m zkmm4jN^1>2{t=yX(ffT~`=vHzgM)E<9~oX*v*nF&O0kFSwJl0VD?-09yK~Dr9QV4l T?~a&2 "Sorry, your kernel ($kverrel) doesn't support perf." + +exit $rc diff --git a/uek-rpm/ol7/secureboot.cer b/uek-rpm/ol7/secureboot.cer new file mode 100644 index 000000000000..07741a92da67 --- /dev/null +++ b/uek-rpm/ol7/secureboot.cer @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDmzCCAoMCAQEwDQYJKoZIhvcNAQELBQAwgY4xCzAJBgNVBAYTAlVTMRMwEQYD +VQQIDApDYWxpZm9ybmlhMRcwFQYDVQQHDA5SZWR3b29kIFNob3JlczEbMBkGA1UE +CgwST3JhY2xlIENvcnBvcmF0aW9uMRUwEwYDVQQLDAxPcmFjbGUgTGludXgxHTAb +BgNVBAMMFE9yYWNsZSBMaW51eCBUZXN0IENBMB4XDTE0MDcwOTIzNTAzN1oXDTE2 +MDcwODIzNTAzN1owgZcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh +MRcwFQYDVQQHDA5SZWR3b29kIFNob3JlczEbMBkGA1UECgwST3JhY2xlIENvcnBv +cmF0aW9uMRUwEwYDVQQLDAxPcmFjbGUgTGludXgxJjAkBgNVBAMMHU9yYWNsZSBM +aW51eCBUZXN0IENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAt6ApcdbkIjGOynChsPJ1R0X56mse4Nrx3x/UBCYLMUFzy3xoAghPpg9P +oy1L7pTndq/AG5/4AfPc9PMpd/5fsTHVQpEd7KPWhVKqxDqEl3Hwqq7o3eA0jm08 +EzY+4XPDR1w95WLmyUdg66dfQopZXiOfqtEaMM1cm5uPJj+aSOlCi34aBMqetQvE ++3gALEeQWhL4vDpQV800dC9oHj/mDBtrAfZCJRriAla2nT60B+EnCXJJkWqvQzFK +7C7hSCQAC0enJY9IrIBKFFzYl4Wnh1Ib+E6v4XUzlP6Sbo6YpZv+ZlE/qB68qAV8 +lI1Ws4sXFxRwDmGb6L+4kcTTeTC9CwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAv +gz/A3KCTMrXc7iWyxeqOmC+Y2O1uW3vVqQTfRjg7QoeTr3esz3dnQmPGEmRjNNhs +G5+ayM2i9hXzdZiOPauN/TChmzebAkIp7L+6OQ5OFSaI/VRquo9REg71C+qxBgaq +9HrbRcTSmqnutl4yviUtxkSn8M/9QurwUM+G8AMXbTcRzLEKIzgh4dO1JgnumlPj +xq1yRbltfgqV7jRIsp0Od05A0SkNjBqgiCyCXx+4k01J0ULYDCBubkO6wPO7pLMZ +i4tFe4F6rZYTt7c3YO4cep+03BGHf/DhtWLaSNninXzMmXzzYkDirgJo+yKZ4p/S +CMkkkj4XPvp+rpVBSVwM +-----END CERTIFICATE----- diff --git a/uek-rpm/ol7/securebootca.cer b/uek-rpm/ol7/securebootca.cer new file mode 100644 index 000000000000..50afd4411be5 --- /dev/null +++ b/uek-rpm/ol7/securebootca.cer @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIJAPX+4S5CjpxUMA0GCSqGSIb3DQEBCwUAMIGOMQswCQYD +VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEXMBUGA1UEBwwOUmVkd29vZCBT +aG9yZXMxGzAZBgNVBAoMEk9yYWNsZSBDb3Jwb3JhdGlvbjEVMBMGA1UECwwMT3Jh +Y2xlIExpbnV4MR0wGwYDVQQDDBRPcmFjbGUgTGludXggVGVzdCBDQTAeFw0xNDA3 +MDkyMzQ4MDRaFw0xNjA3MDgyMzQ4MDRaMIGOMQswCQYDVQQGEwJVUzETMBEGA1UE +CAwKQ2FsaWZvcm5pYTEXMBUGA1UEBwwOUmVkd29vZCBTaG9yZXMxGzAZBgNVBAoM +Ek9yYWNsZSBDb3Jwb3JhdGlvbjEVMBMGA1UECwwMT3JhY2xlIExpbnV4MR0wGwYD +VQQDDBRPcmFjbGUgTGludXggVGVzdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANRDM0CmbyKR2t6/L237SDk0b9RXaYnm0ISXYTWFLwsAC7ho9p9s +mcgwLbqRSwSIgeabtnR7dV/cuttF+zX3p8DsL8cRqvtyQfEx0RIKAKdoSPmegCAe +dD20guafNbAyJyLL82aVbwCcO03HrRdaNYinpBpJ6YQqK2RuZDB9+RJbn9fOl/V6 +3vyjfo6zLtvEIJKFqFpbgfOkSMW/WSVQiBsPSFdGYMzWgL1ve2mNVMJC7cFGYGi1 +QQIEjWxhU5qJSt4MgN4Z6FKvbXuNuA0V0Zf98vVtvnDYMzgdZPAh2dIpSmOKPMRK +HhL1+H+bGN8D994B6Hr+qSbRWcMPQCEBjrcCAwEAAaNQME4wHQYDVR0OBBYEFOdy +f8p/1DSV07XM2TXRqO4eK7B3MB8GA1UdIwQYMBaAFOdyf8p/1DSV07XM2TXRqO4e +K7B3MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEcwzk/jmsbM6EEe +eqKwhEejAqUvJlLlU/jHBaI3BGs1KijWXYvSTlf9/LG1BjaIvPRXHILHUmV5USvA +wOgtwx02/6Uvw1BFxbPQrpT4EtEy5Mv0HCV8Bld8cFuT2YeTBNyzlkKL3eAoU8Ub +l8j9Z4Xy0QLWMc/6iWueKmhZcJJ84jO3MYIh8k7bMys3rKllPe7M/H0hZxNpHgCM +Xd6x64psNzDVa2awrQnnF2jIA55b6h0NwoK2YwK7z0gwG0BCgJvU0OE/ypTbhcdk +4uH6HUYIYmUqaziN36MY7gp9M7JG+/Xh1WJd0btzDLdSvz2j4oD4sSQHaRwoZ0Bg +A2IE8vw= +-----END CERTIFICATE----- diff --git a/uek-rpm/ol7/update-el b/uek-rpm/ol7/update-el new file mode 100644 index 000000000000..0f0fefae5ac9 --- /dev/null +++ b/uek-rpm/ol7/update-el @@ -0,0 +1 @@ +7.1 diff --git a/uek-rpm/ol7/update-el-ol7 b/uek-rpm/ol7/update-el-ol7 new file mode 100644 index 000000000000..4fedf1d20e15 --- /dev/null +++ b/uek-rpm/ol7/update-el-ol7 @@ -0,0 +1 @@ +7.0 diff --git a/uek-rpm/ol7/x509.genkey b/uek-rpm/ol7/x509.genkey new file mode 100644 index 000000000000..fbcf6f30e692 --- /dev/null +++ b/uek-rpm/ol7/x509.genkey @@ -0,0 +1,16 @@ +[ req ] +default_bits = 4096 +distinguished_name = req_distinguished_name +prompt = no +x509_extensions = myexts + +[ req_distinguished_name ] +O = Oracle America, Inc.,c=US +CN = Oracle CA Server +emailAddress = support@oracle.com + +[ myexts ] +basicConstraints=critical,CA:FALSE +keyUsage=digitalSignature +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid diff --git a/uek-rpm/ol7/x86_energy_perf_policy b/uek-rpm/ol7/x86_energy_perf_policy new file mode 100644 index 000000000000..9cd3c4c5a464 --- /dev/null +++ b/uek-rpm/ol7/x86_energy_perf_policy @@ -0,0 +1,12 @@ +#!/bin/sh + +# In pathological situations, this will print some error about uname. +kverrel="`uname -r`" || exit + +exec "/usr/libexec/x86_energy_perf_policy.$kverrel" ${1+"$@"} +rc=$? + +# We're still here, so the exec failed. +echo >&2 "Sorry, your kernel ($kverrel) doesn't support x86_energy_perf_policy." + +exit $rc -- 2.49.0