blob: 893a430f7fc3b0579e8e28d2983f87e0a2aee8fd (
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#!/bin/bash
run_cmd()
{
echo "$*"
eval "$*" || {
echo "ERROR: $*"
exit 1
}
}
build_kernel()
{
set -x
kernel_type=$1
shift
mkdir -p linux
pushd linux >/dev/null
if [ ! -d guest ]; then
run_cmd git clone ${KERNEL_GIT_URL} guest
pushd guest >/dev/null
run_cmd git remote add current ${KERNEL_GIT_URL}
popd
fi
if [ ! -d host ]; then
# use a copy of guest repo as the host repo
run_cmd cp -r guest host
fi
for V in guest host; do
# Check if only a "guest" or "host" or kernel build is requested
if [ "$kernel_type" != "" ]; then
if [ "$kernel_type" != "$V" ]; then
continue
fi
fi
if [ "${V}" = "guest" ]; then
BRANCH="${KERNEL_GUEST_BRANCH}"
else
BRANCH="${KERNEL_HOST_BRANCH}"
fi
# Nuke any previously built packages so they don't end up in new tarballs
# when ./build.sh --package is specified
rm -f linux-*-snp-${V}*
VER="-snp-${V}"
MAKE="make -C ${V} -j $(getconf _NPROCESSORS_ONLN) LOCALVERSION="
run_cmd $MAKE distclean
pushd ${V} >/dev/null
# If ${KERNEL_GIT_URL} is ever changed, 'current' remote will be out
# of date, so always update the remote URL first
run_cmd git remote set-url current ${KERNEL_GIT_URL}
run_cmd git fetch current
run_cmd git checkout current/${BRANCH}
COMMIT=$(git log --format="%h" -1 HEAD)
run_cmd "cp /boot/config-$(uname -r) .config"
run_cmd ./scripts/config --set-str LOCALVERSION "$VER-$COMMIT"
run_cmd ./scripts/config --disable LOCALVERSION_AUTO
run_cmd ./scripts/config --enable DEBUG_INFO
run_cmd ./scripts/config --enable DEBUG_INFO_REDUCED
run_cmd ./scripts/config --enable AMD_MEM_ENCRYPT
run_cmd ./scripts/config --disable AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
run_cmd ./scripts/config --enable KVM_AMD_SEV
run_cmd ./scripts/config --module CRYPTO_DEV_CCP_DD
run_cmd ./scripts/config --disable SYSTEM_TRUSTED_KEYS
run_cmd ./scripts/config --disable SYSTEM_REVOCATION_KEYS
run_cmd ./scripts/config --module SEV_GUEST
run_cmd ./scripts/config --disable IOMMU_DEFAULT_PASSTHROUGH
run_cmd ./scripts/config --disable PREEMPT_COUNT
run_cmd ./scripts/config --disable PREEMPTION
run_cmd ./scripts/config --disable PREEMPT_DYNAMIC
run_cmd ./scripts/config --disable DEBUG_PREEMPT
popd >/dev/null
yes "" | $MAKE olddefconfig
# Build
run_cmd $MAKE >/dev/null
if [ "$ID" = "debian" ] || [ "$ID_LIKE" = "debian" ]; then
run_cmd $MAKE bindeb-pkg
else
run_cmd $MAKE "RPMOPTS='--define \"_rpmdir .\"'" binrpm-pkg
run_cmd mv ${V}/x86_64/*.rpm .
fi
done
popd
}
build_install_ovmf()
{
DEST="$1"
GCC_VERSION=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
GCC_MAJOR=$(echo $GCC_VERSION | awk -F . '{print $1}')
GCC_MINOR=$(echo $GCC_VERSION | awk -F . '{print $2}')
if [ "$GCC_MAJOR" == "4" ]; then
GCCVERS="GCC${GCC_MAJOR}${GCC_MINOR}"
else
GCCVERS="GCC5"
fi
BUILD_CMD="nice build -q --cmd-len=64436 -DDEBUG_ON_SERIAL_PORT=TRUE -n $(getconf _NPROCESSORS_ONLN) ${GCCVERS:+-t $GCCVERS} -a X64 -p OvmfPkg/OvmfPkgX64.dsc"
[ -d ovmf ] || {
run_cmd git clone --single-branch -b ${OVMF_BRANCH} ${OVMF_GIT_URL} ovmf
pushd ovmf >/dev/null
run_cmd git submodule update --init --recursive
popd >/dev/null
}
pushd ovmf >/dev/null
run_cmd make -C BaseTools
. ./edksetup.sh --reconfig
run_cmd $BUILD_CMD
mkdir -p $DEST
run_cmd cp -f Build/OvmfX64/DEBUG_$GCCVERS/FV/OVMF_CODE.fd $DEST
run_cmd cp -f Build/OvmfX64/DEBUG_$GCCVERS/FV/OVMF_VARS.fd $DEST
popd >/dev/null
}
build_install_qemu()
{
DEST="$1"
[ -d qemu ] || run_cmd git clone --single-branch -b ${QEMU_BRANCH} ${QEMU_GIT_URL} qemu
MAKE="make -j $(getconf _NPROCESSORS_ONLN) LOCALVERSION="
pushd qemu >/dev/null
run_cmd ./configure --target-list=x86_64-softmmu --prefix=$DEST
run_cmd $MAKE
run_cmd $MAKE install
popd >/dev/null
}
|