# vim:expandtab:shiftwidth=4:softtabstop=4:tabstop=4: source ${LBUILD_DIR}/lbuild-rhel # increment this if you have made a change that should force a new kernel # to build built BUILD_GEN+=".0" SPEC_NAME="kernel.spec" DEVEL_PATH_ARCH_DELIMETER="." USE_KABI=false # force local definition of %dist into ~/.rpmmacros # to avoid verbose extended strings like ".el7.centos" # in kernel version and rpm names # RMAC=$HOME/.rpmmacros grep '^%dist' $RMAC &> /dev/null || echo '%dist .el7' >> $RMAC # We modify the RHEL7 kmodtool script, because it expects # the kernel source to be in the correct packaged RHEL location. # lbuild does not put the source in correct packaged RHEL location. RHEL_KMODTOOL=/usr/lib/rpm/redhat/kmodtool LBUILD_KMODTOOL="${LBUILD_DIR}/rhel7/kmodtool" cp $RHEL_KMODTOOL $LBUILD_KMODTOOL pushd ${LBUILD_DIR}/rhel7 patch -p1 < kmodtool.patch chmod 755 kmodtool popd # Next we replace %kernel_module_package with one that is nearly # identical, but calls lbuild's modified kmodtool script. # We need to cleanout the previous entry sed -i "/^%kernel_module_package/,/^)}$/d" $RMAC sed -e "s|REPLACE_ME|$LBUILD_KMODTOOL|" \ ${LBUILD_DIR}/rhel7/rpmmacros.template > ${LBUILD_DIR}/rhel7/rpmmacros cat ${LBUILD_DIR}/rhel7/rpmmacros >> $RMAC patch_spec() { local buildid="$1" # the el7 .spec file requires patch names to begin with "patch-3." # so rename the lustre patch from lbuild to one the .spec will like mv $TOPDIR/SOURCES/linux-${lnxmaj}-lustre.patch \ $TOPDIR/SOURCES/patch-${lnxmaj}-lustre.patch # edit the SPEC with our changes patch_spec_common "$buildid" sed -i -e '/^# empty final patch to facilitate testing of kernel patches/i\ # adds Lustre patches\ Patch99995: patch-%{version}-lustre.patch' \ -e '/^ApplyOptionalPatch linux-kernel-test.patch/i\ \ # lustre patch\ ApplyOptionalPatch patch-%{version}-lustre.patch\ ' \ -e '/rm -f include\/generated\/kernel.cross/i\ # lustre kernel config.\ if [ -f %{_topdir}/lustre/lustre/kernel_patches/kernel_configs/kernel-%{version}-3.10-rhel7-%{_target_cpu}.config ]; then\ echo "# $Arch" > configs/kernel-%{version}-%{_target_cpu}.config\ cat %{_topdir}/lustre/lustre/kernel_patches/kernel_configs/kernel-%{version}-3.10-rhel7-%{_target_cpu}.config >> configs/kernel-%{version}-%{_target_cpu}.config\ fi'\ -e '/^# Dynamically generate kernel/a echo "CONFIG_BH_LRU_SIZE=16" >> config-generic'\ -e '/^%define listnewconfig_fail 1/s/1/0/'\ SPECS/$SPEC_NAME 2>&1 || \ fatal 1 "Error while editing SPECS/$SPEC_NAME" return 0 } unpack_linux_devel_rpm-rhel7() { local callers_rpm="$1" unpack_linux_devel_rpm-rhel "$callers_rpm" return 0 } get_rpmbuildopts() { if $KERNEL_LUSTRE_NAMING; then echo -e "--define \"variant -lustre\" \c" fi echo "--with firmware" return 0 } find_linux_rpm-rhel7() { local prefix="$1" local wanted_kernel="$2" local pathtorpms=${3:-"$KERNELRPMSBASE/$lnxmaj/$DISTROMAJ/$TARGET_ARCH"} find_linux_rpm-rhel "$prefix" "$wanted_kernel" "$pathtorpms" } kernel_srpm_location() { echo "http://vault.centos.org/centos/7/updates/Source/SPackages/" } cleanup_rpmmacros() { sed -i "/^%kernel_module_package/,/^)}$/d" $RMAC } apply_kmod_requires_conflicts() { # until we have achieved full kABI compatibility we need to # restrict the kernel range that can be used to the kernel # version from the RHEL minor release # this is supposed to be done for kmods automatically but # RHBZ#1467319 seems to be getting in the way local kver=$(find_linux_release) local linuxversion=${kver%%-*} local linuxrelease=${kver##*-} local kabiminor=${linuxrelease%%.*} echo "Requires: kernel < $linuxversion-$((kabiminor+1)), kernel >= $linuxversion-$((kabiminor))" >> rpm/kmp-lustre.preamble if $PATCHLESS; then # don't allow the patched kernel to be considered as a valid kernel # for the patchless client echo "Conflicts: kernel-lustre" >> rpm/kmp-lustre.preamble fi }