aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2019-10-08 12:30:13 +0100
committerPeter Maydell <peter.maydell@linaro.org>2019-10-08 12:30:13 +0100
commit14d40ab1d55e54a87350d44769152dd7a59a7b42 (patch)
treecb0dc5ef418ae2e7c06c96e7afda20c4b5416e02
parentce701584c53dd819ba000364d07da52a3744d343 (diff)
parent037973bb0d2b1a3c8618ccf41caa4da3666588c3 (diff)
downloadqemu-14d40ab1d55e54a87350d44769152dd7a59a7b42.zip
qemu-14d40ab1d55e54a87350d44769152dd7a59a7b42.tar.gz
qemu-14d40ab1d55e54a87350d44769152dd7a59a7b42.tar.bz2
Merge remote-tracking branch 'remotes/philmd-gitlab/tags/edk2-next-20191007' into staging
Improve scripts relying on the EDK2 submodule, drop Python2 dependency in EDK2 build scripts. # gpg: Signature made Mon 07 Oct 2019 14:31:38 BST # gpg: using RSA key 89C1E78F601EE86C867495CBA2A3FD6EDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (Phil) <philmd@redhat.com>" [marginal] # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 89C1 E78F 601E E86C 8674 95CB A2A3 FD6E DEAD C0DE * remotes/philmd-gitlab/tags/edk2-next-20191007: edk2 build scripts: work around TianoCore#1607 without forcing Python 2 edk2 build scripts: honor external BaseTools flags with uefi-test-tools roms: Add a 'make help' target alias roms/Makefile.edk2: don't pull in submodules when building from tarball make-release: pull in edk2 submodules so we can build it from tarballs Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--roms/Makefile3
-rw-r--r--roms/Makefile.edk27
-rwxr-xr-xroms/edk2-build.sh4
-rw-r--r--roms/edk2-funcs.sh17
-rwxr-xr-xscripts/make-release8
-rw-r--r--tests/uefi-test-tools/Makefile5
-rwxr-xr-xtests/uefi-test-tools/build.sh6
7 files changed, 43 insertions, 7 deletions
diff --git a/roms/Makefile b/roms/Makefile
index 6cf07d3..da4efa4 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -51,7 +51,7 @@ SEABIOS_EXTRAVERSION="-prebuilt.qemu.org"
#
EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom
-default:
+default help:
@echo "nothing is build by default"
@echo "available build targets:"
@echo " bios -- update bios.bin (seabios)"
@@ -141,6 +141,7 @@ build-efi-roms: build-pxe-roms
#
edk2-basetools:
$(MAKE) -C edk2/BaseTools \
+ PYTHON_COMMAND=$${EDK2_PYTHON_COMMAND:-python3} \
EXTRA_OPTFLAGS='$(EDK2_BASETOOLS_OPTFLAGS)' \
EXTRA_LDFLAGS='$(EDK2_BASETOOLS_LDFLAGS)'
diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
index c2f2ff5..33a074d 100644
--- a/roms/Makefile.edk2
+++ b/roms/Makefile.edk2
@@ -46,8 +46,13 @@ all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.bz2) \
# files.
.INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd)
+# Fetch edk2 submodule's submodules. If it is not in a git tree, assume
+# we're building from a tarball and that they've already been fetched by
+# make-release/tarball scripts.
submodules:
- cd edk2 && git submodule update --init --force
+ if test -d edk2/.git; then \
+ cd edk2 && git submodule update --init --force; \
+ fi
# See notes on the ".NOTPARALLEL" target and the "+" indicator in
# "tests/uefi-test-tools/Makefile".
diff --git a/roms/edk2-build.sh b/roms/edk2-build.sh
index 4f46f8a..d5391c7 100755
--- a/roms/edk2-build.sh
+++ b/roms/edk2-build.sh
@@ -27,8 +27,7 @@ shift $num_args
cd edk2
-# Work around <https://bugzilla.tianocore.org/show_bug.cgi?id=1607>.
-export PYTHON_COMMAND=python2
+export PYTHON_COMMAND=${EDK2_PYTHON_COMMAND:-python3}
# Source "edksetup.sh" carefully.
set +e +u +C
@@ -43,6 +42,7 @@ fi
# any), for the edk2 "build" utility.
source ../edk2-funcs.sh
edk2_toolchain=$(qemu_edk2_get_toolchain "$emulation_target")
+MAKEFLAGS=$(qemu_edk2_quirk_tianocore_1607 "$MAKEFLAGS")
edk2_thread_count=$(qemu_edk2_get_thread_count "$MAKEFLAGS")
qemu_edk2_set_cross_env "$emulation_target"
diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
index a9fae7e..3f4485b 100644
--- a/roms/edk2-funcs.sh
+++ b/roms/edk2-funcs.sh
@@ -251,3 +251,20 @@ qemu_edk2_get_thread_count()
printf '1\n'
fi
}
+
+
+# Work around <https://bugzilla.tianocore.org/show_bug.cgi?id=1607> by
+# filtering jobserver-related flags out of MAKEFLAGS. Print the result to the
+# standard output.
+#
+# Parameters:
+# $1: the value of the MAKEFLAGS variable
+qemu_edk2_quirk_tianocore_1607()
+{
+ local makeflags="$1"
+
+ printf %s "$makeflags" \
+ | LC_ALL=C sed --regexp-extended \
+ --expression='s/--jobserver-(auth|fds)=[0-9]+,[0-9]+//' \
+ --expression='s/-j([0-9]+)?//'
+}
diff --git a/scripts/make-release b/scripts/make-release
index b4af9c9..a2a8cda 100755
--- a/scripts/make-release
+++ b/scripts/make-release
@@ -20,6 +20,14 @@ git checkout "v${version}"
git submodule update --init
(cd roms/seabios && git describe --tags --long --dirty > .version)
(cd roms/skiboot && ./make_version.sh > .version)
+# Fetch edk2 submodule's submodules, since it won't have access to them via
+# the tarball later.
+#
+# A more uniform way to handle this sort of situation would be nice, but we
+# don't necessarily have much control over how a submodule handles its
+# submodule dependencies, so we continue to handle these on a case-by-case
+# basis for now.
+(cd roms/edk2 && git submodule update --init)
popd
tar --exclude=.git -cjf ${destination}.tar.bz2 ${destination}
rm -rf ${destination}
diff --git a/tests/uefi-test-tools/Makefile b/tests/uefi-test-tools/Makefile
index 1d78bc1..1dcddcd 100644
--- a/tests/uefi-test-tools/Makefile
+++ b/tests/uefi-test-tools/Makefile
@@ -99,7 +99,10 @@ Build/bios-tables-test.%.efi: build-edk2-tools
+./build.sh $(edk2_dir) BiosTablesTest $* $@
build-edk2-tools:
- $(MAKE) -C $(edk2_dir)/BaseTools
+ $(MAKE) -C $(edk2_dir)/BaseTools \
+ PYTHON_COMMAND=$${EDK2_PYTHON_COMMAND:-python3} \
+ EXTRA_OPTFLAGS='$(EDK2_BASETOOLS_OPTFLAGS)' \
+ EXTRA_LDFLAGS='$(EDK2_BASETOOLS_LDFLAGS)'
clean:
rm -rf Build Conf log
diff --git a/tests/uefi-test-tools/build.sh b/tests/uefi-test-tools/build.sh
index 8aa7935..3b78f30 100755
--- a/tests/uefi-test-tools/build.sh
+++ b/tests/uefi-test-tools/build.sh
@@ -29,8 +29,7 @@ export PACKAGES_PATH=$(realpath -- "$edk2_dir")
export WORKSPACE=$PWD
mkdir -p Conf
-# Work around <https://bugzilla.tianocore.org/show_bug.cgi?id=1607>.
-export PYTHON_COMMAND=python2
+export PYTHON_COMMAND=${EDK2_PYTHON_COMMAND:-python3}
# Source "edksetup.sh" carefully.
set +e +u +C
@@ -46,12 +45,15 @@ fi
source "$edk2_dir/../edk2-funcs.sh"
edk2_arch=$(qemu_edk2_get_arch "$emulation_target")
edk2_toolchain=$(qemu_edk2_get_toolchain "$emulation_target")
+MAKEFLAGS=$(qemu_edk2_quirk_tianocore_1607 "$MAKEFLAGS")
+edk2_thread_count=$(qemu_edk2_get_thread_count "$MAKEFLAGS")
qemu_edk2_set_cross_env "$emulation_target"
# Build the UEFI binary
mkdir -p log
build \
--arch="$edk2_arch" \
+ -n "$edk2_thread_count" \
--buildtarget=DEBUG \
--platform=UefiTestToolsPkg/UefiTestToolsPkg.dsc \
--tagname="$edk2_toolchain" \