aboutsummaryrefslogtreecommitdiffstats
path: root/build.sh
blob: 2a4bd6a5041689e19bc97db9c5a08929622b71cd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/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 --single-branch -b ${KERNEL_COMMIT} ${KERNEL_GIT_URL} ${BUILD_DIR}/kernel"
	cd ${BUILD_DIR}/kernel
}

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 --single-branch -b ${QEMU_COMMIT} ${QEMU_GIT_URL} ${BUILD_DIR}/qemu"
	cd ${BUILD_DIR}/qemu
}

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