diff options
Diffstat (limited to 'build.sh')
| -rwxr-xr-x | build.sh | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..6e6ea34 --- /dev/null +++ b/build.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +. ./stable-commits + +BUILD_DIR=`pwd`/src +OUTPUT_DIR=`pwd`/output +NUM_OF_CORES=`grep -c ^processor /proc/cpuinfo` + +run_cmd() +{ + echo "$*" + + $* + if [ $? -ne 0 ]; then + echo "ERROR: $*" + exit 1 + fi +} + +fetch_kernel() +{ + run_cmd "mkdir -p ${BUILD_DIR}/kernel" + run_cmd "git clone ${KERNEL_GIT_URL} ${BUILD_DIR}/kernel" + cd ${BUILD_DIR}/kernel + run_cmd "git branch build ${KERNEL_COMMIT}" + run_cmd "git checkout build" +} + +build_kernel() +{ + if [ ! -d $BUILD_DIR/kernel ]; then + fetch_kernel + fi + cd $BUILD_DIR/kernel + cp /boot/config-$(uname -r) .config + sed -ie s/CONFIG_LOCALVERSION.*/CONFIG_LOCALVERSION=\"\"/g .config + ./scripts/config --enable CONFIG_AMD_MEM_ENCRYPT + ./scripts/config --enable CONFIG_CRYPTO_DEV_CCP + ./scripts/config --enable CONFIG_CRYPTO_DEV_SP_PSP + ./scripts/config --enable CONFIG_CRYPTO_DEV_PSP_SEV + ./scripts/config --disable CONFIG_DEBUG_INFO + ./scripts/config --module CRYPTO_DEV_CCP_DD + ./scripts/config --disable CONFIG_LOCALVERSION_AUTO + yes "" | make olddefconfig + run_cmd "make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-sev" +} + +fetch_ovmf() +{ + run_cmd "mkdir -p ${BUILD_DIR}/edk2" + run_cmd "git clone ${EDK2_GIT_URL} ${BUILD_DIR}/edk2" + cd ${BUILD_DIR}/edk2 +} + +build_ovmf() +{ + if [ ! -d $BUILD_DIR/edk2 ]; then + fetch_ovmf + fi + cd $BUILD_DIR/edk2 + run_cmd "make -C BaseTools" + . ./edksetup.sh + run_cmd "nice build --cmd-len=64436 \ + -DDEBUG_ON_SERIAL_PORT=TRUE \ + -n $(getconf _NPROCESSORS_ONLN) \ + -a X64 \ + -a IA32 \ + -t GCC5 \ + -p OvmfPkg/OvmfPkgIa32X64.dsc" + run_cmd "mkdir -p $OUTPUT_DIR/qemu-output/share/qemu" + run_cmd "cp Build/Ovmf3264/DEBUG_GCC5/FV/OVMF_CODE.fd $OUTPUT_DIR/qemu-output/share/qemu" + run_cmd "cp Build/Ovmf3264/DEBUG_GCC5/FV/OVMF_VARS.fd $OUTPUT_DIR/qemu-output/" +} + +fetch_qemu() +{ + run_cmd "mkdir -p ${BUILD_DIR}/qemu" + run_cmd "git clone ${QEMU_GIT_URL} ${BUILD_DIR}/qemu" + cd ${BUILD_DIR}/qemu + run_cmd "git branch build ${QEMU_COMMIT}" + run_cmd "git checkout build" +} + +build_qemu() +{ + if [ ! -d $BUILD_DIR/qemu ]; then + fetch_qemu + fi + cd $BUILD_DIR/qemu + run_cmd "./configure --target-list=x86_64-softmmu \ + --prefix=$OUTPUT_DIR/qemu-output" + run_cmd "make -j$(getconf _NPROCESSORS_ONLN)" + run_cmd "make -j$(getconf _NPROCESSORS_ONLN) install" +} + +finalize_output() +{ + run_cmd "mkdir -p $OUTPUT_DIR/kernel" + run_cmd "mv $BUILD_DIR/linux-* $OUTPUT_DIR/kernel" + run_cmd "cp $BUILD_DIR/../launch-qemu.sh $OUTPUT_DIR/qemu-output" +} + +dep_install () +{ + # install the build dependencies + run_cmd "sudo apt-get -y install git build-essential zlib1g-dev libglib2.0-dev libpixman-1-dev uuid-dev nasm bison acpica-tools libncurses5-dev libssl-dev fakeroot dpkg-dev" +} + +dep_install +build_kernel +build_qemu +build_ovmf +finalize_output |
