From a98f98c5a07714e787fc65f6bb1a2d3360339d70 Mon Sep 17 00:00:00 2001 From: Nick Owens Date: Wed, 13 Apr 2016 16:09:47 -0700 Subject: [PATCH] sys-firmware: copy edk2-ovmf into edk2-armvirt --- .../sys-firmware/edk2-armvirt/Manifest | 2 + .../edk2-armvirt/edk2-ovmf-18219.ebuild | 1 + .../edk2-armvirt/edk2-ovmf-99999.ebuild | 88 +++++++++++++++++++ .../edk2-armvirt/files/edk2-nopie.patch | 35 ++++++++ .../sys-firmware/edk2-armvirt/metadata.xml | 4 + 5 files changed, 130 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/Manifest create mode 120000 sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-18219.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-99999.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/files/edk2-nopie.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/metadata.xml diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/Manifest b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/Manifest new file mode 100644 index 0000000000..8a08d01865 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/Manifest @@ -0,0 +1,2 @@ +DIST edk2-18219.tar.xz 18537400 SHA256 fc5b5eae45f62993390f141af1f632045eb9e7c0ee009a15788d081f5e37b703 SHA512 8f9ec10b23940f2176576c3c2767407f3de2562a46c177912ed551d63b4049948a91cb757aa3a968ddeb8ccaff138b8fc171789bd150ea3496ff25c6dda923c5 WHIRLPOOL 4c5eb8628a4558e4e7ab41ded5877676eb4d3b51e4ba4869fd451e727f6503dbb8fd71667db75935c44f490048e882bd1d983890d80e239c913748d747e5d41b +DIST openssl-1.0.2d.tar.gz 5295447 SHA256 671c36487785628a703374c652ad2cebea45fa920ae5681515df25d9f2c9a8c8 SHA512 68a051e92aaed0e7a8b218c185427c534c32f30f50c45f5d2c1f5b7a26d1416e83863d2953c77486acde3b636a148f39faf48246d28a207607ec069f62b13d75 WHIRLPOOL e3d8f0784903c8d6aa05ada7b8b410517c99157a3c2f4ac34c8a9d80c77408bd6ff9e820ded47f6223ccac4a77413174aa625303166ec28fdbf8374a7d4659ec diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-18219.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-18219.ebuild new file mode 120000 index 0000000000..4e3f249350 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-18219.ebuild @@ -0,0 +1 @@ +edk2-ovmf-99999.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-99999.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-99999.ebuild new file mode 100644 index 0000000000..ffd46c74df --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/edk2-ovmf-99999.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +inherit eutils multiprocessing toolchain-funcs + +DESCRIPTION="EDK II Open Source UEFI Firmware" +HOMEPAGE="http://tianocore.sourceforge.net" + +LICENSE="BSD-2" +SLOT="0" +IUSE="debug +qemu +secure-boot" + +if [[ ${PV} == 99999 ]]; then + inherit subversion + ESVN_REPO_URI="https://svn.code.sf.net/p/edk2/code/trunk/edk2" + KEYWORDS="-* ~amd64" +else + MY_P="edk2-${PV}" + S="${WORKDIR}/${MY_P}" + SRC_URI="http://storage.core-os.net/mirror/snapshots/${MY_P}.tar.xz" + KEYWORDS="-* amd64" +fi + +OPENSSL_PV="1.0.2d" +OPENSSL_P="openssl-${OPENSSL_PV}" +SRC_URI+=" mirror://openssl/source/${OPENSSL_P}.tar.gz" + +DEPEND=">=dev-lang/nasm-2.0.7 + sys-power/iasl" +RDEPEND="qemu? ( app-emulation/qemu )" + +src_prepare() { + # This build system is impressively complicated, needless to say + # it does things that get confused by PIE being enabled by default. + # Add -nopie to a few strategic places... :) + if gcc-specs-pie; then + epatch "${FILESDIR}/edk2-nopie.patch" + fi + + if use secure-boot; then + local openssllib="${S}/CryptoPkg/Library/OpensslLib" + mv "${WORKDIR}/${OPENSSL_P}" "${openssllib}" || die + cd "${openssllib}/${OPENSSL_P}" + epatch "${openssllib}/EDKII_${OPENSSL_P}.patch" + cd "${openssllib}" + sh -e ./Install.sh || die + cd "${S}" + fi +} + +src_configure() { + ./edksetup.sh || die + + TARGET_NAME=$(usex debug DEBUG RELEASE) + TARGET_TOOLS="GCC$(gcc-version | tr -d .)" + case $ARCH in + amd64) TARGET_ARCH=X64 ;; + #x86) TARGET_ARCH=IA32 ;; + *) die "Unsupported $ARCH" ;; + esac +} + +src_compile() { + emake ARCH=${TARGET_ARCH} -C BaseTools -j1 + + ./OvmfPkg/build.sh \ + -a "${TARGET_ARCH}" \ + -b "${TARGET_NAME}" \ + -t "${TARGET_TOOLS}" \ + -n $(makeopts_jobs) \ + -D SECURE_BOOT_ENABLE=$(usex secure-boot TRUE FALSE) \ + -D FD_SIZE_2MB \ + || die "OvmfPkg/build.sh failed" +} + +src_install() { + local fv="Build/OvmfX64/${TARGET_NAME}_${TARGET_TOOLS}/FV" + insinto /usr/share/${PN} + doins "${fv}"/OVMF{,_CODE,_VARS}.fd + dosym OVMF.fd /usr/share/${PN}/bios.bin + + if use qemu; then + dosym ../${PN}/OVMF.fd /usr/share/qemu/efi-bios.bin + fi +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/files/edk2-nopie.patch b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/files/edk2-nopie.patch new file mode 100644 index 0000000000..991b9490d2 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/files/edk2-nopie.patch @@ -0,0 +1,35 @@ +diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template +index 859fbe1..3731150 100644 +--- a/BaseTools/Conf/tools_def.template ++++ b/BaseTools/Conf/tools_def.template +@@ -3807,7 +3807,7 @@ NOOPT_DDK3790xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF + DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_NAME).debug + RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG = + +-DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h ++DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -nopie + DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe + DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe + DEFINE GCC_IPF_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency +@@ -3838,7 +3838,7 @@ DEFINE GCC_IPF_RC_FLAGS = -I binary -O elf64-ia64-little -B ia64 + DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii + DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii + +-DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings ++DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -nopie + DEFINE GCC44_IA32_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m32 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables + DEFINE GCC44_X64_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -DNO_BUILTIN_VA_FUNCS -mno-red-zone -Wno-address -mcmodel=large -fno-asynchronous-unwind-tables + DEFINE GCC44_IA32_X64_DLINK_COMMON = -nostdlib -n -q --gc-sections -z common-page-size=0x20 +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile +index 09d2bff..f3ca05d 100644 +--- a/BaseTools/Source/C/Makefiles/header.makefile ++++ b/BaseTools/Source/C/Makefiles/header.makefile +@@ -51,7 +51,7 @@ CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-de + else + CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -nostdlib -c -g + endif +-LFLAGS = ++LFLAGS = -nopie + + ifeq ($(ARCH), IA32) + # diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/metadata.xml b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/metadata.xml new file mode 100644 index 0000000000..097975e3ad --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/edk2-armvirt/metadata.xml @@ -0,0 +1,4 @@ + + + +