#!/usr/bin/bash
#/*********************************************************************************
#
#INTEL CORPORATION PROPRIETARY INFORMATION
#This software is supplied under the terms of a license agreement or nondisclosure
#agreement with Intel Corporation and may not be copied or disclosed except in
#accordance with the terms of that agreement
#Copyright(c) 2011-2015 Intel Corporation. All Rights Reserved.
#
#**********************************************************************************/
# Set Bash color
ECHO_PREFIX_INFO="\033[1;32;40mINFO...\033[0;0m"
ECHO_PREFIX_ERROR="\033[1;31;40mError...\033[0;0m"
# Try command for test command result.
function try_command {
"$@"
status=$?
if [ $status -ne 0 ]; then
echo -e $ECHO_PREFIX_ERROR "ERROR with \"$@\", Return status $status."
exit $status
fi
return $status
}
# run rpmbuild by root is very dangerous, forbidden it
if [[ $EUID -eq 0 ]]; then
echo -e $ECHO_PREFIX_ERROR "This script must NOT be run as root!" 1>&2
exit 1
fi
INTEL_MSS_BUILD_ID=39163
if [ "$#" -eq 1 ]; then
INTEL_MSS_RELEASE_NUM=$1
else
INTEL_MSS_RELEASE_NUM=4
fi
INTEL_MSS_RELEASE_ID=MSSr$INTEL_MSS_RELEASE_NUM
INTEL_KERNEL_PATCH_FOLDER=intel-kernel-patches
INTEL_KERNEL_PATCH_TAR_BALL=$INTEL_KERNEL_PATCH_FOLDER.tar.bz2
PATCH_TAR_BALL_PATH=/opt/intel/mediasdk/opensource/patches/kmd/3.10.0
if [ ! -e $PATCH_TAR_BALL_PATH/$INTEL_KERNEL_PATCH_TAR_BALL ]; then
echo -e $ECHO_PREFIX_ERROR "Not installed intel-linux-media-devel rpm package!" 1>&2
exit 1
fi
CENTOS7_KERNEL_VER=3.10.0
CENTOS7_LATEST_KER_BID=229.1.2
CENTOS7_KERNEL_SRC_RPM=kernel-$CENTOS7_KERNEL_VER-$CENTOS7_LATEST_KER_BID.el7.src.rpm
SRC_RPM_WEB_PATH=
Sie müssen registriert sein, um Links zu sehen.
if [ ! -f ./$CENTOS7_KERNEL_SRC_RPM ]; then
try_command wget $SRC_RPM_WEB_PATH/$CENTOS7_KERNEL_SRC_RPM
fi
if [ ! -f ./$CENTOS7_KERNEL_SRC_RPM ]; then
echo -e $ECHO_PREFIX_ERROR "Fail to get $CENTOS7_KERNEL_SRC_RPM, please try download it manually from SRC_RPM_WEB_PATH,put it same folder as this script, then run this script again." 1>&2
exit 1
fi
TIME=$(date "+%Y-%m-%d_%H%M%S")
RPM_BUILD_ROOT=rpmbuild
if [ -d ./$RPM_BUILD_ROOT ]; then
try_command mv $RPM_BUILD_ROOT $RPM_BUILD_ROOT.$TIME
fi
try_command mkdir -p $RPM_BUILD_ROOT/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
try_command cp ./$CENTOS7_KERNEL_SRC_RPM $RPM_BUILD_ROOT/SOURCES/
try_command pushd $RPM_BUILD_ROOT/SOURCES/
# extract stuffs from rpm
try_command rpm2cpio ./$CENTOS7_KERNEL_SRC_RPM | cpio -ivdm
try_command rm -f ./$CENTOS7_KERNEL_SRC_RPM
try_command cp $PATCH_TAR_BALL_PATH/$INTEL_KERNEL_PATCH_TAR_BALL .
try_command tar xjvf $INTEL_KERNEL_PATCH_TAR_BALL
if [ ! -d ./$INTEL_KERNEL_PATCH_FOLDER ]; then
echo -e $ECHO_PREFIX_ERROR "Fail to get intel kernel patches!" 1>&2
fi
# combine intel patches to linux-kernel-test.patch which CentOS supplies for convenience
PATCH_FILES=$(ls ./$INTEL_KERNEL_PATCH_FOLDER | grep -E ^[0-9]+-)
for PATCH_FILE in $PATCH_FILES
do
try_command cat ./$INTEL_KERNEL_PATCH_FOLDER/$PATCH_FILE >> ./linux-kernel-test.patch
done
# copy spec file and will patch the new one for version bump up
MOD_SPEC_FILE=kernel_intel_mod.spec
try_command cp -f kernel.spec $MOD_SPEC_FILE
# update kernel rpm version to avoid overwriting old kernel
try_command sed -i "s#%define specrelease $CENTOS7_LATEST_KER_BID%{?dist}#%define specrelease $CENTOS7_LATEST_KER_BID.$INTEL_MSS_BUILD_ID.$INTEL_MSS_RELEASE_ID%{?dist}#" $MOD_SPEC_FILE
ORIG_SRC_UNTAR_FOLDER=linux-$CENTOS7_KERNEL_VER-$CENTOS7_LATEST_KER_BID.el7
ORIG_SRC_TAR_BALL=$ORIG_SRC_UNTAR_FOLDER.tar.xz
try_command tar xJvf $ORIG_SRC_TAR_BALL
# update module description string
try_command sed -i "s#\"Intel Graphics\"#\"Intel Graphics Media Server Studio 2015 R$INTEL_MSS_RELEASE_NUM.$INTEL_MSS_BUILD_ID\"#" $ORIG_SRC_UNTAR_FOLDER/drivers/gpu/drm/i915/i915_drv.h
try_command rm -f $ORIG_SRC_TAR_BALL
try_command tar cJvf $ORIG_SRC_TAR_BALL $ORIG_SRC_UNTAR_FOLDER
try_command rm -rf $ORIG_SRC_UNTAR_FOLDER
# all preparation finished, start to build binary rpm
try_command rpmbuild -bb $MOD_SPEC_FILE --target=$(uname -m) --with firmware --without debug --without debuginfo --without perf - --without tools --define "_topdir `pwd`/.." --define "_specdir `pwd`"
try_command popd
echo -e $ECHO_PREFIX_INFO "Please find kernel rpm under ./$RPM_BUILD_ROOT/RPMS folder"