Merge pull request #256 from flatcar-linux/dongsu/qemu-6.1.0

sys-firmware: update edk2-ovmf, ipxe, seabios, sgabios
This commit is contained in:
Dongsu Park 2021-12-06 09:22:54 +01:00 committed by GitHub
commit f9781e8bba
25 changed files with 643 additions and 183 deletions

View File

@ -0,0 +1,4 @@
- edk2-ovmf [202105](https://github.com/tianocore/edk2/releases/tag/edk2-stable202105)
- ipxe [1.21.1](https://github.com/ipxe/ipxe/releases/tag/v1.21.1)
- seabios [1.14.0](https://seabios.org/Releases#SeaBIOS_1.14.0)
- sgabios [0.1_pre10](https://git.qemu.org/?p=sgabios.git;a=tree;h=a85446adb0e0)

View File

@ -1,3 +1,8 @@
DIST edk2-ovmf-201905-bin.tar.xz 3017256 BLAKE2B 6a106f111a363f1c2de33c4e7eba48183da6047654512939c286c6d0369e3b4c7705c271e61fa95299ba2b629022be7b5ef665ff096d41373583f5409b5c32fb SHA512 4a174dc1d64769a93de3bf5f9d787e278bfab57e2317699d722aa772e64e8867b3998b7feee58d5e4c66adc79ba9c5023dae2ce786159db7a740b86cf35d923d
DIST edk2-ovmf-201905-bundled.tar.xz 3538508 BLAKE2B a1766180c84ee83987f50fdb6a6c9891dfb983ff78c98f7bc38635ffe484ebf29d4286ff97d7747080e28a655ff14b5939d4505d75ebe6655ecacc7f9d405469 SHA512 be3d8ef1ffb1ddce64883d9ef8dc598c7026d23d2e33c33949d28de81513b6a7f04f840ccb3d42664e918c6603487fbe594261c327921f3250c3998218572774
DIST edk2-ovmf-201905.tar.gz 14551747 BLAKE2B 6fb3385445fd01c0dea26295a68de2691524e55c96d8a0e85aab1385a9abddc47c13ce3236b952c1299514e542ad0fa4bc9550cc4527945c05109d227a698293 SHA512 91188923f7d1ab83c0d6abf7ec6d59f357d0341a617ad6a3ae05f3d0e041dff43f62b014b0c5fc5d15e16d8f1c279c581a5cd64b31e3d52b340d7ef90adb50f1
DIST brotli-666c3280cc11dc433c303d79a83d4ffbdd12cc8d.tar.gz 23855739 BLAKE2B 7406ec5b29ac66afbcd7c1376bb3208f298d19b6592b2869c52173aa64947d58bd443f9a61c67deaf046be910a0e31c0b843e5508e97e0e1f5e7bce100d86904 SHA512 df8e90562c4fd7f0e787949df6bc4f5a165b39bd333f442d27874fe65640fbba268f9350d7113e6761a5acceb66d78e75f1a296e5a89b94574edf28109cdc812
DIST edk2-ovmf-202008-bin.tar.xz 3486024 BLAKE2B 8283db554ad7024e3a55b62ed0a560ed9f729d728f1dee3806814b1eb8d89dabc4fd70433f7f77656b65d9af7919d036074a53a95190a1aa8b65ab7d73495ffc SHA512 d0c8b249a7a2124e8bb63a4358466e86a3a837e76586565dd4762351998d8561374eabb8a1303dbf71ac269c15552d9e8cff71d65bc6fe8a3a81fb4fb032e0d8
DIST edk2-ovmf-202008-qemu-firmware.tar.xz 680 BLAKE2B 176f8e94a3f605acc72850634cbf155619490f5998125521a392a8e9c7d2b78841b841f0cb5ea860f14645b124cf1921256bbe46960efbe3401805d89bbfbed6 SHA512 b72f248ab4d49503c3e8e686e22beb77f0e48d2c6c9523f389f20504e0c30fa11fa0fcb5607d7d5bb1ba2433894fa458864c5761335e39de4b2a40b01203f043
DIST edk2-ovmf-202008.tar.gz 13172590 BLAKE2B 10acf77d0e70e21ca425ea41c0062f8cebe2cc607b93a2a253bcd87cea1546e791776a34d43fbf4f1040f4fc32e3ee413d44873d0f00b9e523816519cfed634e SHA512 c32340104f27b9b85f79e934cc9eeb739d47b01e13975c88f39b053e9bc5a1ecfe579ab3b63fc7747cc328e104b337b53d41deb4470c3f20dbbd5552173a4666
DIST edk2-ovmf-202105-qemu-firmware.tar.xz 672 BLAKE2B e87845a84c83f65db836fd054c81a4f3062d5e0fcc51aa0ecf9c2d23c8741f218d38ef737d140f5935ce8d9c34508e5f3b9f54bf9c547a391fa63cdc2ecf1233 SHA512 6100502f26db26e407dacce57c96b1abfd372bcb31767a068332afa09ac435a092fd2a73db27670d27c6e927c26e88315346bbac70578571108434b9683bd00c
DIST edk2-ovmf-202105-r1-bin.tar.xz 2633188 BLAKE2B 93b4bd1c75da69406b5d27ac32d8b7c63dc8248bcd5d54832e520a4b009be4b7f215eb7d489ecb7cb16d31e02452dfa06b8fa709f37c44e59b4ff70a550076c7 SHA512 356c2110abce43da9c0654324e222cbbab7085e3aa23d1ba4c98011e4d4992a37d61fa45394305b748d119dba12f65d7c7d630b9f8038065ba4672d758c702be
DIST edk2-ovmf-202105.tar.gz 13702868 BLAKE2B 3ec01d467562380ca2fd3bd807d2f6c55e4637c1afd71533f8f5b22cc634dc4c8cb63dab921677f8b315d17b3c9d0b6b00a0e2f3f8da61107033e9e81bf5a64d SHA512 c263345cbb243c63985f974a61f37c577a139d6a7099d2b8c9e1a553e5ebf16de12fb711b72624081c6bf637f8084bbf71731ab99e5747d81da460388ac25791
DIST openssl-e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72.tar.gz 9981169 BLAKE2B 33aac7364cdd45fec5654ab6caef84e1a829464380419c8a6bb311055c5a01c0aaff6e046a7c541a87e908fa9d26bae652f5be901461d03df36f2522f9c34b0c SHA512 db2087c04f0b428b3f4e1c8b3ac53cce69e0fd331ed2b86ba00facafd1685864d73f71c13eee48f4fe0af2bddad848f84a2b8ed2a17fabdf7fa2ed7d9eb39371

View File

@ -1,12 +1,12 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_REQ_USE="sqlite"
PYTHON_COMPAT=( python{3_6,3_7} )
PYTHON_COMPAT=( python3_{7,8,9} )
inherit eutils python-any-r1 readme.gentoo-r1
inherit python-any-r1 readme.gentoo-r1
DESCRIPTION="UEFI firmware for 64-bit x86 virtual machines"
HOMEPAGE="https://github.com/tianocore/edk2"
@ -26,17 +26,23 @@ if [[ ${PV} == "999999" ]] ; then
${NON_BINARY_DEPEND}
"
else
BUNDLED_OPENSSL_SUBMODULE_SHA="e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72"
BUNDLED_BROTLI_SUBMODULE_SHA="666c3280cc11dc433c303d79a83d4ffbdd12cc8d"
# Binary versions taken from fedora:
# http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/s/
# edk2-ovmf-20190501stable-2.fc31.noarch.rpm
# http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/e/
# edk2-ovmf-20200801stable-1.fc34.noarch.rpm
# TODO: talk with tamiko about unbundling
SRC_URI="
!binary? (
https://github.com/tianocore/edk2/archive/edk2-stable${PV}.tar.gz -> ${P}.tar.gz
https://dev.gentoo.org/~tamiko/distfiles/${P}-bundled.tar.xz
https://github.com/openssl/openssl/archive/${BUNDLED_OPENSSL_SUBMODULE_SHA}.tar.gz -> openssl-${BUNDLED_OPENSSL_SUBMODULE_SHA}.tar.gz
https://github.com/google/brotli/archive/${BUNDLED_BROTLI_SUBMODULE_SHA}.tar.gz -> brotli-${BUNDLED_BROTLI_SUBMODULE_SHA}.tar.gz
)
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-bin.tar.xz )
"
KEYWORDS="amd64 ~arm64 ~ppc ~ppc64 x86"
binary? ( https://dev.gentoo.org/~mva/distfiles/${P}-bin.tar.xz )
https://dev.gentoo.org/~mva/distfiles/${P}-qemu-firmware.tar.xz
"
KEYWORDS="amd64 arm64 ~ppc ppc64 x86"
IUSE="+binary"
REQUIRED_USE+="
!amd64? ( binary )
@ -96,9 +102,21 @@ pkg_setup() {
}
src_prepare() {
if [[ ${PV} != "999999" ]] && use binary; then
eapply_user
return
if ! use binary; then
sed -i -r \
-e "/function SetupPython3/,/\}/{s,\\\$\(whereis python3\),${EPYTHON},g}" \
"${S}"/edksetup.sh || die "Fixing for correct Python3 support failed"
fi
if [[ ${PV} != "999999" ]]; then
if use binary; then
eapply_user
return
else
# Bundled submodules
cp -rl "${WORKDIR}/openssl-${BUNDLED_OPENSSL_SUBMODULE_SHA}"/* "CryptoPkg/Library/OpensslLib/openssl/"
cp -rl "${WORKDIR}/brotli-${BUNDLED_BROTLI_SUBMODULE_SHA}"/* "BaseTools/Source/C/BrotliCompress/brotli/"
cp -rl "${WORKDIR}/brotli-${BUNDLED_BROTLI_SUBMODULE_SHA}"/* "MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/"
fi
fi
default
}
@ -157,6 +175,9 @@ src_install() {
insinto /usr/share/${PN}
doins ovmf/*
insinto /usr/share/qemu/firmware
doins qemu/*
readme.gentoo_create_doc
}

View File

@ -1,49 +1,63 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_REQ_USE="sqlite"
PYTHON_COMPAT=( python{3_6,3_7} )
PYTHON_COMPAT=( python3_{8,9,10} )
inherit eutils python-any-r1 readme.gentoo-r1
inherit python-any-r1 readme.gentoo-r1
DESCRIPTION="UEFI firmware for 64-bit x86 virtual machines"
HOMEPAGE="https://github.com/tianocore/edk2"
BUNDLED_OPENSSL_SUBMODULE_SHA="e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72"
BUNDLED_BROTLI_SUBMODULE_SHA="666c3280cc11dc433c303d79a83d4ffbdd12cc8d"
# TODO: talk with tamiko about unbundling (mva)
# TODO: the binary 202105 package currently lacks the preseeded
# OVMF_VARS.secboot.fd file (that we typically get from fedora)
SRC_URI="
!binary? (
https://github.com/tianocore/edk2/archive/edk2-stable${PV}.tar.gz -> ${P}.tar.gz
https://github.com/openssl/openssl/archive/${BUNDLED_OPENSSL_SUBMODULE_SHA}.tar.gz -> openssl-${BUNDLED_OPENSSL_SUBMODULE_SHA}.tar.gz
https://github.com/google/brotli/archive/${BUNDLED_BROTLI_SUBMODULE_SHA}.tar.gz -> brotli-${BUNDLED_BROTLI_SUBMODULE_SHA}.tar.gz
)
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${PF}-bin.tar.xz )
https://dev.gentoo.org/~tamiko/distfiles/${P}-qemu-firmware.tar.xz
"
LICENSE="BSD-2 MIT"
SLOT="0"
KEYWORDS="amd64 arm64 ~ppc ppc64 x86"
IUSE="+binary"
REQUIRED_USE+="
!amd64? ( binary )
"
NON_BINARY_DEPEND="
app-emulation/qemu
>=dev-lang/nasm-2.0.7
>=sys-power/iasl-20160729
${PYTHON_DEPS}
"
DEPEND=""
RDEPEND=""
if [[ ${PV} == "999999" ]] ; then
inherit git-r3
EGIT_REPO_URI="https://github.com/tianocore/edk2"
DEPEND+="
${NON_BINARY_DEPEND}
"
else
SRC_URI=""
KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86"
IUSE="+binary"
REQUIRED_USE+="
!amd64? ( binary )
"
DEPEND+="
!binary? (
amd64? (
${NON_BINARY_DEPEND}
)
)"
PATCHES=(
)
fi
LICENSE="BSD-2 MIT"
SLOT="0"
DEPEND+="
!binary? (
amd64? (
${NON_BINARY_DEPEND}
)
)"
RDEPEND=""
PATCHES=(
"${FILESDIR}/${PN}-202105-werror.patch"
)
S="${WORKDIR}/edk2-edk2-stable${PV}"
DISABLE_AUTOFORMATTING=true
DOC_CONTENTS="This package contains the tianocore edk2 UEFI firmware for 64-bit x86
@ -72,24 +86,27 @@ In order to use the firmware you can run qemu the following way
$ qemu-system-x86_64 \
-drive file=/usr/share/edk2-ovmf/OVMF.fd,if=pflash,format=raw,unit=0,readonly=on \
...
You can register the firmware for use in libvirt by adding to /etc/libvirt/qemu.conf:
nvram = [
\"/usr/share/edk2-ovmf/OVMF_CODE.fd:/usr/share/edk2-ovmf/OVMF_VARS.fd\"
\"/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd:/usr/share/edk2-ovmf/OVMF_VARS.fd\"
]"
..."
pkg_setup() {
[[ ${PV} != "999999" ]] && use binary || python-any-r1_pkg_setup
}
src_prepare() {
if [[ ${PV} != "999999" ]] && use binary; then
if use binary; then
eapply_user
return
else
# Bundled submodules
cp -rl "${WORKDIR}/openssl-${BUNDLED_OPENSSL_SUBMODULE_SHA}"/* "CryptoPkg/Library/OpensslLib/openssl/"
cp -rl "${WORKDIR}/brotli-${BUNDLED_BROTLI_SUBMODULE_SHA}"/* "BaseTools/Source/C/BrotliCompress/brotli/"
cp -rl "${WORKDIR}/brotli-${BUNDLED_BROTLI_SUBMODULE_SHA}"/* "MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/"
sed -i -r \
-e "/function SetupPython3/,/\}/{s,\\\$\(whereis python3\),${EPYTHON},g}" \
"${S}"/edksetup.sh || die "Fixing for correct Python3 support failed"
default
fi
default
}
src_compile() {
@ -100,6 +117,8 @@ src_compile() {
BUILD_FLAGS="-D TLS_ENABLE \
-D HTTP_BOOT_ENABLE \
-D NETWORK_IP6_ENABLE \
-D TPM_ENABLE \
-D TPM2_ENABLE -D TPM2_CONFIG_ENABLE \
-D FD_SIZE_2MB"
SECUREBOOT_BUILD_FLAGS="${BUILD_FLAGS} \
@ -146,6 +165,9 @@ src_install() {
insinto /usr/share/${PN}
doins ovmf/*
insinto /usr/share/qemu/firmware
doins qemu/*
readme.gentoo_create_doc
}

View File

@ -0,0 +1,38 @@
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 498696e..8a360f4 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -1863,7 +1863,7 @@ NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_N
*_*_*_DTCPP_PATH = DEF(DTCPP_BIN)
*_*_*_DTC_PATH = DEF(DTC_BIN)
-DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common
+DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Wno-array-bounds -include AutoGen.h -fno-common
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_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft -fno-pic -fno-pie
diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile
index 0df728f..49f9706 100644
--- a/BaseTools/Source/C/Makefiles/header.makefile
+++ b/BaseTools/Source/C/Makefiles/header.makefile
@@ -82,17 +82,17 @@ BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS)
ifeq ($(DARWIN),Darwin)
# assume clang or clang compatible flags on OS X
-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
+BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall \
-Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g
else
ifeq ($(CXX), llvm)
BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
--fno-delete-null-pointer-checks -Wall -Werror \
+-fno-delete-null-pointer-checks -Wall \
-Wno-deprecated-declarations -Wno-self-assign \
-Wno-unused-result -nostdlib -g
else
BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
--fno-delete-null-pointer-checks -Wall -Werror \
+-fno-delete-null-pointer-checks -Wall \
-Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \
-Wno-unused-result -nostdlib -g
endif

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>tamiko@gentoo.org</email>

View File

@ -2,3 +2,5 @@ DIST ipxe-1.0.0_p20180211-546dd51-bin.tar.xz 1748228 BLAKE2B 5ed2ce71c7dbc41d5cb
DIST ipxe-1.0.0_p20180211-546dd51.tar.bz2 2954305 BLAKE2B 8232b1afe017ff5d0389534e4efea3209ea0330d66e4d3d429abf81da66639b19488911d85bf2da200ff8cb0d49c5dda438074c4538303335419ea080ef80a16 SHA512 45d7f80f15a1c5ff1daa31b132065d38013a51127795ad81308b468940a455edcb40cde7601475039a7c977d732817203bbc627c642d3d10146a480da603f1dd
DIST ipxe-1.0.0_p20190728-a4f8c6e-bin.tar.xz 1839688 BLAKE2B b28772b928690646e1b0cb1c27ef56e2cb1c0637a43c6174dea7c8ca401d8c8819938fa358a0bed5d57b8cf992b8c2060b52e32a970ef813f1cf705fb0805beb SHA512 1e5838b8c530257dc544f6e25f80e6e223480917db393ca3ff8c577f07e60180e18f2eed4e71f7b1965157d6e7001f65e224d3c8b56a98f84739e2504ca38985
DIST ipxe-1.0.0_p20190728-a4f8c6e.tar.bz2 2985776 BLAKE2B 5a85505404978d51f80e30332f6eb0417d6d97eb9b3bc05eec5ad649c446c7d17dc841f8cd34a1b29c31dc6f5cf08baa69191de9c8dd4bcdb098c5d7f13a7824 SHA512 3af0da9058b39966bfd8f9d7dfe518ae7b26e18f58d1a3fa2cba8922ec3c50775b82dd9f23bf51be3ca3f69b705f92bcf80988a1817b30f7ab1826a4b159c5a6
DIST ipxe-1.21.1-bin.tar.xz 1860424 BLAKE2B 9d621c92be1058389758f885a02b601169d645335bba366a18d16326a7616345e44eb0cd5007d32ac034e7e3c8f8eecd90ade3346e34ca0df899622321f38017 SHA512 85afacfb70e562a935380b7d14ab7328e418478a6f6124eaec7cd0fefb9ba13b8a3f04833fab7b724ceb4c94897a7be2c67faa8be59373719a972ad51e6a5ab3
DIST ipxe-1.21.1.tar.gz 3934045 BLAKE2B 03871b5f89c6228a9082bb89c7b102d85e5f3afcd5fe0d93762e220fe162c9c3037a9918f30251fd103835d949335f99109a12559f560a5b686e65a7c24c6501 SHA512 47400975110ed4ab95835aa1b7c8d5a6917c19c5713c6ab88bc0741a3adcd62245a9c4251d1f46fffc45289c6b18bf893f86dbc3b67d3189c41b7f198367ecaa

View File

@ -1,15 +1,15 @@
# Copyright 1999-2018 Gentoo Foundation
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
inherit toolchain-funcs eutils savedconfig
inherit toolchain-funcs savedconfig
GIT_REV="546dd51de8459d4d09958891f426fa2c73ff090d"
GIT_SHORT=${GIT_REV:0:7}
DESCRIPTION="Open source network boot (PXE) firmware"
HOMEPAGE="http://ipxe.org/"
HOMEPAGE="https://ipxe.org/"
SRC_URI="
!binary? ( https://git.ipxe.org/ipxe.git/snapshot/${GIT_REV}.tar.bz2 -> ${P}-${GIT_SHORT}.tar.bz2 )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-${GIT_SHORT}-bin.tar.xz )"
@ -25,8 +25,8 @@ SOURCE_DEPEND="app-arch/xz-utils
dev-lang/perl
sys-libs/zlib
iso? (
app-cdr/cdrtools
sys-boot/syslinux
virtual/cdrtools
)"
DEPEND="
!binary? (

View File

@ -1,22 +1,22 @@
# Copyright 1999-2019 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
inherit toolchain-funcs eutils savedconfig
inherit toolchain-funcs savedconfig
GIT_REV="a4f8c6e31f6c62522cfc633bbbffa81b22f9d6f3"
GIT_SHORT=${GIT_REV:0:7}
DESCRIPTION="Open source network boot (PXE) firmware"
HOMEPAGE="http://ipxe.org/"
HOMEPAGE="https://ipxe.org/"
SRC_URI="
!binary? ( https://git.ipxe.org/ipxe.git/snapshot/${GIT_REV}.tar.bz2 -> ${P}-${GIT_SHORT}.tar.bz2 )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-${GIT_SHORT}-bin.tar.xz )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 x86"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~mips ~ppc ppc64 x86"
IUSE="+binary efi ipv6 iso lkrn +qemu undi usb vmware"
REQUIRED_USE="!amd64? ( !x86? ( binary ) )"
@ -25,8 +25,8 @@ SOURCE_DEPEND="app-arch/xz-utils
dev-lang/perl
sys-libs/zlib
iso? (
app-cdr/cdrtools
sys-boot/syslinux
virtual/cdrtools
)"
DEPEND="
!binary? (

View File

@ -0,0 +1,117 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit savedconfig toolchain-funcs
DESCRIPTION="Open source network boot (PXE) firmware"
HOMEPAGE="https://ipxe.org/"
SRC_URI="
!binary? ( https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-bin.tar.xz )"
S="${WORKDIR}/${P}/src"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~mips ~ppc ppc64 x86"
IUSE="+binary efi ipv6 iso lkrn +qemu undi usb vmware"
REQUIRED_USE="!amd64? ( !x86? ( binary ) )"
SOURCE_DEPEND="
app-arch/xz-utils
dev-lang/perl
iso? (
app-cdr/cdrtools
sys-boot/syslinux
)"
BDEPEND="
!binary? (
amd64? ( ${SOURCE_DEPEND} )
x86? ( ${SOURCE_DEPEND} )
)"
src_configure() {
use binary && return
cat > config/local/general.h <<-EOF || die
#undef BANNER_TIMEOUT
#define BANNER_TIMEOUT 0
EOF
if use ipv6; then
cat >> config/local/general.h <<-EOF || die
#define NET_PROTO_IPV6
EOF
fi
if use vmware; then
cat >> config/local/general.h <<-EOF || die
#define VMWARE_SETTINGS
#define CONSOLE_VMWARE
EOF
fi
restore_config config/local/general.h
tc-ld-disable-gold
}
ipxemake() {
# Q='' makes the build verbose since that's what everyone loves now
emake Q='' \
CC="$(tc-getCC)" \
LD="$(tc-getLD)" \
AS="$(tc-getAS)" \
AR="$(tc-getAR)" \
NM="$(tc-getNM)" \
OBJCOPY="$(tc-getOBJCOPY)" \
RANLIB="$(tc-getRANLIB)" \
OBJDUMP="$(tc-getOBJDUMP)" \
HOST_CC="$(tc-getBUILD_CC)" \
"$@"
}
src_compile() {
use binary && return
export NO_WERROR=1
if use qemu; then
ipxemake bin/808610de.rom # pxe-e1000.rom (old)
ipxemake bin/8086100e.rom # pxe-e1000.rom
ipxemake bin/80861209.rom # pxe-eepro100.rom
ipxemake bin/10500940.rom # pxe-ne2k_pci.rom
ipxemake bin/10222000.rom # pxe-pcnet.rom
ipxemake bin/10ec8139.rom # pxe-rtl8139.rom
ipxemake bin/1af41000.rom # pxe-virtio.rom
fi
if use vmware; then
ipxemake bin/8086100f.mrom # e1000
ipxemake bin/808610d3.mrom # e1000e
ipxemake bin/10222000.mrom # vlance
ipxemake bin/15ad07b0.rom # vmxnet3
fi
use efi && ipxemake PLATFORM=efi BIN=bin-efi bin-efi/ipxe.efi
use iso && ipxemake bin/ipxe.iso
use undi && ipxemake bin/undionly.kpxe
use usb && ipxemake bin/ipxe.usb
use lkrn && ipxemake bin/ipxe.lkrn
}
src_install() {
insinto /usr/share/ipxe/
if use qemu || use vmware; then
doins bin/*.rom
fi
use vmware && doins bin/*.mrom
use efi && doins bin-efi/*.efi
use iso && doins bin/*.iso
use undi && doins bin/*.kpxe
use usb && doins bin/*.usb
use lkrn && doins bin/*.lkrn
save_config config/local/general.h
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>tamiko@gentoo.org</email>

View File

@ -1,6 +1,5 @@
DIST seabios-1.10.2-bin.tar.xz 121172 BLAKE2B 9d4ff624b638773e59bbf6674fb8630bd815d75af1a81db4de7f9740c37485330e6d054448f2301a97455ff0d3190d988ce0348eac78bd978982b6ce5146e4f6 SHA512 a46ce389b8b0fe7182a3dc2954fab7e0ef27ac65823e3785c247ccf77c37eaa746d94f74a4a29a221aa16ab508cf07ec8d399aa612d5c0184b48bce24c663b69
DIST seabios-1.10.2.tar.gz 589283 BLAKE2B 08fdbecf7fb06629db472adb05a780249dbf0e0a44d04dcced5480d631c133f74ecd04b04486db3bb817b8e119e783c4b09c3ade15b9a6cc956537e9f7204514 SHA512 ea8396fe247a3bd16b43ab775cf8e23f139673b94e83f450cadb094cc8117ca7e9ef518162d965209d5ab091c96f70ec5cc8ec8d15b638e06c4c8f7a0e1609dc
DIST seabios-1.11.0-bin.tar.xz 158552 BLAKE2B 44c42b9eea70a090ad51296949fe79e5360b569bae791fe84f447061f8dbcdb6b601501e2cc1607b62308f3118087386d15ba32c8495202f62f9f9a1e3cf27c3 SHA512 03a1523dc99dbf6e353e7844a4f12020d88bf8d5cbfd187007663ab1b02447b02694f27ee93aa46a18a5ab161f13b1ffe62f2d0f678cd86975a3d53295a6eb1e
DIST seabios-1.11.0.tar.gz 607746 BLAKE2B 9f688be6b8f7c0fcbd72b59ac649a9c763fdd9e2971a4d85636c9972efc0ad42082a1622a8c41156ad1e2063907349c2e02cff9aeb444844dc445b5f7d6062bb SHA512 cae79c720bfbba3321777bbc6d5bde432fe56e2ba8f1be8acfebbde0bd453a58e889f5fa24db6055dca0a3a56d35b907761723ea35ef248c5f812129d0a27b77
DIST seabios-1.12.0-bin.tar.xz 162492 BLAKE2B 9a5a349226ed7efbed328493dc057e232203b251677a23f1f09c133743ff0ca6b05270c9d27460be1d8897888fe23ff7bdfa122023fa8ddb23af03d5b9b6f8dd SHA512 f7a0395d621245093bb9a278d95ecc3d4e8d23f620058cd4fddaf885c8b86256f6258f3fd8173c1d24c03306f44d180e768bf8005ee123bc4b699b9f0ca371be
DIST seabios-1.12.0.tar.gz 613542 BLAKE2B f145c2db716996bfa9e5c014086ccfaa8ae96ebc158f34303b122b7bf209408c567665d8691364df8d8e886f63e0e72a3f3cd319dfa86ef581023201b5d94e53 SHA512 e52c5363e5bb37b5286e55545aa06bd126218f9d0e3a06ac2e189de68fe3de3256c11ca1bb13357a9c384d7e3af6284083ff3aa587688b5de04ef11b97bdfa27
DIST seabios-1.14.0-bin.tar.xz 170160 BLAKE2B 1ab471ce0c6e27633ec42a66e3069496be84de713baab5de4f297821bd0da26404f7f70abc82e223ec5aa317a878889ae92b019988c72d24f77e7dcc5865f916 SHA512 7964e9bb7dff4fd6593f5d6d64efc4b1460750461b86635dbe5255d2086d619f51711d7a35e4dc20e556f705091c0950afabeddcd2e8876f05ce14f9ca73ed71
DIST seabios-1.14.0-r2-bin.tar.xz 132256 BLAKE2B 7d38949de254d6e3699d463a66c363156aa36bfe16c18bea48c55a61bdc423184175fd5427d3246a78d9c6335e61e5baa982f67e7406c5525e405b4383530d41 SHA512 5ce0e407b97e878842fbd7ad2f9e8a65f2565a5aa43d08e01cff024352780f55f8669958c58d20770db7f90e87cc52c860af831cefe3846227e7b45cd9dc33ee
DIST seabios-1.14.0.tar.gz 628985 BLAKE2B cc1126925dab1551a655680d20d06ebf28c12c386500d1ee4df9e1a99403b4c5bc6a66c2cc5ef58b4c3d6d7226f35007506a6a1855c2cf2742469dcb7aba05bb SHA512 215c42f59425f8abd062be7b11fc0e39c977cee5001a2381551b0f851ac337d0dd53c065267e6dee0e710ffd700fa635f9007b89da8dfce0f47122c984ee8146

View File

@ -0,0 +1,9 @@
--- a/vgasrc/vgalayout.lds.S
+++ b/vgasrc/vgalayout.lds.S
@@ -19,5 +19,5 @@ SECTIONS
// Discard regular data sections to force a link error if
// 16bit code attempts to access data not marked with VAR16.
- /DISCARD/ : { *(.text*) *(.rodata*) *(.data*) *(.bss*) *(COMMON) }
+ /DISCARD/ : { *(.text*) *(.rodata*) *(.data*) *(.bss*) *(COMMON) *(.note.gnu.property) }
}

View File

@ -1,5 +1,5 @@
# for qemu machine types 1.7 + older
# need to turn off features (xhci,uas) to make it fit into 128k
# need to turn off features (xhci,uas,achi,nvme,acpi_parse) to make it fit into 128k
CONFIG_QEMU=y
CONFIG_ROM_SIZE=128
CONFIG_BOOTSPLASH=n
@ -10,3 +10,7 @@ CONFIG_USB_UAS=n
CONFIG_SDCARD=n
CONFIG_TCGBIOS=n
CONFIG_MPT_SCSI=n
CONFIG_ACPI_PARSE=n
CONFIG_NVME=n
CONFIG_AHCI=n
CONFIG_THREADS=n

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>tamiko@gentoo.org</email>

View File

@ -1,11 +1,11 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
EAPI="7"
PYTHON_COMPAT=( python3_6 )
PYTHON_COMPAT=( python3_{7..9} )
inherit eutils toolchain-funcs python-any-r1
inherit toolchain-funcs python-any-r1
# SeaBIOS maintainers sometimes don't release stable tarballs or stable
# binaries to generate the stable tarball the following is necessary:
@ -20,8 +20,8 @@ else
# Binary versions taken from fedora:
# http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/s/
# seabios-bin-1.10.2-1.fc27.noarch.rpm
# seavgabios-bin-1.10.2-1.fc27.noarch.rpm
# seabios-bin-1.12.1-2.fc31.noarch.rpm
# seavgabios-bin-1.12.1-2.fc31.noarch.rpm
SRC_URI="
!binary? ( https://code.coreboot.org/p/seabios/downloads/get/${P}.tar.gz )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-bin.tar.xz )"

View File

@ -1,11 +1,11 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
PYTHON_COMPAT=( python3_6 )
PYTHON_COMPAT=( python3_{7..9} )
inherit eutils toolchain-funcs python-any-r1
inherit toolchain-funcs python-any-r1
# SeaBIOS maintainers sometimes don't release stable tarballs or stable
# binaries to generate the stable tarball the following is necessary:
@ -16,7 +16,7 @@ if [[ ${PV} == *9999* || -n "${EGIT_COMMIT}" ]] ; then
EGIT_REPO_URI="git://git.seabios.org/seabios.git"
inherit git-r3
else
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc x86"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 ~sparc x86"
# Binary versions taken from fedora:
# http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/s/

View File

@ -1,11 +1,11 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
EAPI="7"
PYTHON_COMPAT=( python3_6 )
PYTHON_COMPAT=( python3_{7..9} )
inherit eutils toolchain-funcs python-any-r1
inherit toolchain-funcs python-any-r1
# SeaBIOS maintainers sometimes don't release stable tarballs or stable
# binaries to generate the stable tarball the following is necessary:
@ -16,14 +16,10 @@ if [[ ${PV} == *9999* || -n "${EGIT_COMMIT}" ]] ; then
EGIT_REPO_URI="git://git.seabios.org/seabios.git"
inherit git-r3
else
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc x86"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
# Binary versions taken from fedora:
# http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/s/
# seabios-bin-1.10.2-1.fc27.noarch.rpm
# seavgabios-bin-1.10.2-1.fc27.noarch.rpm
SRC_URI="
!binary? ( https://code.coreboot.org/p/seabios/downloads/get/${P}.tar.gz )
!binary? ( https://www.seabios.org/downloads/${P}.tar.gz )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-bin.tar.xz )"
fi
@ -34,20 +30,36 @@ LICENSE="LGPL-3 GPL-3"
SLOT="0"
IUSE="+binary debug +seavgabios"
REQUIRED_USE="debug? ( !binary )
!amd64? ( !x86? ( binary ) )"
REQUIRED_USE="debug? ( !binary )"
# The amd64/x86 check is needed to workaround #570892.
SOURCE_DEPEND="
>=sys-power/iasl-20060912
${PYTHON_DEPS}"
DEPEND="
!binary? (
amd64? ( ${SOURCE_DEPEND} )
x86? ( ${SOURCE_DEPEND} )
${SOURCE_DEPEND}
)"
RDEPEND=""
choose_target_chost() {
if [[ -n "${CC}" ]]; then
${CC} -dumpmachine
return
fi
if use amd64 || use x86; then
# Use the native compiler
echo "${CHOST}"
return
fi
local i
for i in x86_64 i686 i586 i486 i386 ; do
i=${i}-pc-linux-gnu
type -P ${i}-gcc > /dev/null && echo ${i} && return
done
}
pkg_pretend() {
if ! use binary; then
ewarn "You have decided to compile your own SeaBIOS. This is not"
@ -58,6 +70,14 @@ pkg_pretend() {
ewarn "you will not receive any support if you have compiled your"
ewarn "own SeaBIOS. Virtual machines subtly fail based on changes"
ewarn "in SeaBIOS."
if [[ -z "$(choose_target_chost)" ]]; then
elog
eerror "Before you can compile ${PN}[-binary], you need to install a x86 cross-compiler"
eerror "Run the following commands:"
eerror " emerge crossdev"
eerror " crossdev --stable -t x86_64-pc-linux-gnu"
die "cross-compiler is needed"
fi
fi
}
@ -72,6 +92,17 @@ src_unpack() {
mkdir -p "${S}"
}
src_prepare() {
default
if ! use binary; then
eapply "${FILESDIR}"/${PN}-1.14.0-binutils-2.36.patch
fi
# Ensure precompiled iasl files are never used
find "${WORKDIR}" -name '*.hex' -delete || die
}
src_configure() {
use binary && return
@ -86,12 +117,15 @@ src_configure() {
_emake() {
LANG=C \
emake V=1 \
CPP="$(tc-getPROG CPP cpp)" \
CC="$(tc-getCC)" \
LD="$(tc-getLD)" \
AR="$(tc-getAR)" \
AS="$(tc-getAS)" \
OBJCOPY="$(tc-getOBJCOPY)" \
RANLIB="$(tc-getRANLIB)" \
OBJDUMP="$(tc-getOBJDUMP)" \
STRIP="$(tc-getSTRIP)" \
HOST_CC="$(tc-getBUILD_CC)" \
VERSION="Gentoo/${EGIT_COMMIT:-${PVR}}" \
"$@"
@ -100,12 +134,13 @@ _emake() {
src_compile() {
use binary && return
for t in 128k 256k ; do
cp "${FILESDIR}/seabios/config.seabios-${t}" .config || die
_emake oldnoconfig
_emake out/bios.bin
mv out/bios.bin ../bios-${t}.bin || die
done
local TARGET_CHOST=$(choose_target_chost)
cp "${FILESDIR}/seabios/config.seabios-256k" .config || die
_emake oldnoconfig
CHOST="${TARGET_CHOST}" _emake iasl
CHOST="${TARGET_CHOST}" _emake out/bios.bin
mv out/bios.bin ../bios-256k.bin || die
if use seavgabios ; then
local config t targets=(
@ -117,20 +152,17 @@ src_compile() {
vmware
)
for t in "${targets[@]}" ; do
emake clean distclean
_emake clean distclean
cp "${FILESDIR}/seavgabios/config.vga-${t}" .config || die
_emake oldnoconfig
_emake out/vgabios.bin
CHOST="${TARGET_CHOST}" _emake out/vgabios.bin
cp out/vgabios.bin ../vgabios-${t}.bin || die
done
fi
}
src_install() {
insinto /usr/share/seabios
use binary && doins ../bios.bin
use !binary && newins ../bios-128k.bin bios.bin
doins ../bios-256k.bin
if use seavgabios ; then

View File

@ -0,0 +1,183 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
PYTHON_COMPAT=( python3_{7..9} )
inherit toolchain-funcs python-any-r1
# SeaBIOS maintainers sometimes don't release stable tarballs or stable
# binaries to generate the stable tarball the following is necessary:
# git clone git://git.seabios.org/seabios.git && cd seabios
# git archive --output seabios-${PV}.tar.gz --prefix seabios-${PV}/ rel-${PV}
# To generate binary tarball you can run the following from fork tree:
# cd .../seabios-1.14.0-r2/image/usr/share
# $ tar cJf seabios-1.14.0-r2-bin.tar.xz *.bin
if [[ ${PV} == *9999* || -n "${EGIT_COMMIT}" ]] ; then
EGIT_REPO_URI="git://git.seabios.org/seabios.git"
inherit git-r3
else
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 ~sparc x86"
SRC_URI="
!binary? ( https://www.seabios.org/downloads/${P}.tar.gz )
binary? ( https://dev.gentoo.org/~sam/distfiles/${P}-r2-bin.tar.xz )"
fi
DESCRIPTION="Open Source implementation of a 16-bit x86 BIOS"
HOMEPAGE="https://www.seabios.org/"
LICENSE="LGPL-3 GPL-3"
SLOT="0"
IUSE="+binary debug +seavgabios"
REQUIRED_USE="debug? ( !binary )"
SOURCE_DEPEND="
>=sys-power/iasl-20060912
${PYTHON_DEPS}"
DEPEND="
!binary? (
${SOURCE_DEPEND}
)"
RDEPEND=""
choose_target_chost() {
if [[ -n "${CC}" ]]; then
${CC} -dumpmachine
return
fi
if use amd64 || use x86; then
# Use the native compiler
echo "${CHOST}"
return
fi
local i
for i in x86_64 i686 i586 i486 i386 ; do
i=${i}-pc-linux-gnu
type -P ${i}-gcc > /dev/null && echo ${i} && return
done
}
pkg_pretend() {
if ! use binary; then
ewarn "You have decided to compile your own SeaBIOS. This is not"
ewarn "supported by upstream unless you use their recommended"
ewarn "toolchain (which you are not)."
elog
ewarn "If you are intending to use this build with QEMU, realize"
ewarn "you will not receive any support if you have compiled your"
ewarn "own SeaBIOS. Virtual machines subtly fail based on changes"
ewarn "in SeaBIOS."
if [[ -z "$(choose_target_chost)" ]]; then
elog
eerror "Before you can compile ${PN}[-binary], you need to install a x86 cross-compiler"
eerror "Run the following commands:"
eerror " emerge crossdev"
eerror " crossdev --stable -t x86_64-pc-linux-gnu"
die "cross-compiler is needed"
fi
fi
}
pkg_setup() {
use binary || python-any-r1_pkg_setup
}
src_unpack() {
default
# This simplifies the logic between binary & source builds.
mkdir -p "${S}"
}
src_prepare() {
default
if ! use binary; then
eapply "${FILESDIR}"/${PN}-1.14.0-binutils-2.36.patch
fi
# Ensure precompiled iasl files are never used
find "${WORKDIR}" -name '*.hex' -delete || die
}
src_configure() {
use binary && return
tc-ld-disable-gold #438058
if use debug ; then
echo "CONFIG_DEBUG_LEVEL=8" >.config
fi
_emake config
}
_emake() {
LANG=C \
emake V=1 \
CPP="$(tc-getPROG CPP cpp)" \
CC="$(tc-getCC)" \
LD="$(tc-getLD)" \
AR="$(tc-getAR)" \
AS="$(tc-getAS)" \
OBJCOPY="$(tc-getOBJCOPY)" \
RANLIB="$(tc-getRANLIB)" \
OBJDUMP="$(tc-getOBJDUMP)" \
STRIP="$(tc-getSTRIP)" \
HOST_CC="$(tc-getBUILD_CC)" \
VERSION="Gentoo/${EGIT_COMMIT:-${PVR}}" \
"$@"
}
src_compile() {
use binary && return
local TARGET_CHOST=$(choose_target_chost)
cp "${FILESDIR}/seabios/config.seabios-128k" .config || die
_emake oldnoconfig
CHOST="${TARGET_CHOST}" _emake iasl
CHOST="${TARGET_CHOST}" _emake out/bios.bin
mv out/bios.bin ../bios.bin || die
cp "${FILESDIR}/seabios/config.seabios-256k" .config || die
_emake oldnoconfig
CHOST="${TARGET_CHOST}" _emake iasl
CHOST="${TARGET_CHOST}" _emake out/bios.bin
mv out/bios.bin ../bios-256k.bin || die
if use seavgabios ; then
local config t targets=(
cirrus
isavga
qxl
stdvga
virtio
vmware
)
for t in "${targets[@]}" ; do
_emake clean distclean
cp "${FILESDIR}/seavgabios/config.vga-${t}" .config || die
_emake oldnoconfig
CHOST="${TARGET_CHOST}" _emake out/vgabios.bin
cp out/vgabios.bin ../vgabios-${t}.bin || die
done
fi
}
src_install() {
insinto /usr/share/seabios
doins ../bios.bin
doins ../bios-256k.bin
if use seavgabios ; then
insinto /usr/share/seavgabios
doins ../vgabios*.bin
fi
}

View File

@ -1,11 +1,11 @@
# Copyright 1999-2020 Gentoo Authors
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
EAPI="7"
PYTHON_COMPAT=( python3_6 )
PYTHON_COMPAT=( python3_{7..9} )
inherit eutils toolchain-funcs python-any-r1
inherit toolchain-funcs python-any-r1
# SeaBIOS maintainers sometimes don't release stable tarballs or stable
# binaries to generate the stable tarball the following is necessary:
@ -16,14 +16,10 @@ if [[ ${PV} == *9999* || -n "${EGIT_COMMIT}" ]] ; then
EGIT_REPO_URI="git://git.seabios.org/seabios.git"
inherit git-r3
else
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc x86"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 ~sparc x86"
# Binary versions taken from fedora:
# http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/s/
# seabios-bin-1.10.2-1.fc27.noarch.rpm
# seavgabios-bin-1.10.2-1.fc27.noarch.rpm
SRC_URI="
!binary? ( https://code.coreboot.org/p/seabios/downloads/get/${P}.tar.gz )
!binary? ( https://www.seabios.org/downloads/${P}.tar.gz )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-bin.tar.xz )"
fi
@ -34,20 +30,36 @@ LICENSE="LGPL-3 GPL-3"
SLOT="0"
IUSE="+binary debug +seavgabios"
REQUIRED_USE="debug? ( !binary )
!amd64? ( !x86? ( binary ) )"
REQUIRED_USE="debug? ( !binary )"
# The amd64/x86 check is needed to workaround #570892.
SOURCE_DEPEND="
>=sys-power/iasl-20060912
${PYTHON_DEPS}"
DEPEND="
!binary? (
amd64? ( ${SOURCE_DEPEND} )
x86? ( ${SOURCE_DEPEND} )
${SOURCE_DEPEND}
)"
RDEPEND=""
choose_target_chost() {
if [[ -n "${CC}" ]]; then
${CC} -dumpmachine
return
fi
if use amd64 || use x86; then
# Use the native compiler
echo "${CHOST}"
return
fi
local i
for i in x86_64 i686 i586 i486 i386 ; do
i=${i}-pc-linux-gnu
type -P ${i}-gcc > /dev/null && echo ${i} && return
done
}
pkg_pretend() {
if ! use binary; then
ewarn "You have decided to compile your own SeaBIOS. This is not"
@ -58,6 +70,14 @@ pkg_pretend() {
ewarn "you will not receive any support if you have compiled your"
ewarn "own SeaBIOS. Virtual machines subtly fail based on changes"
ewarn "in SeaBIOS."
if [[ -z "$(choose_target_chost)" ]]; then
elog
eerror "Before you can compile ${PN}[-binary], you need to install a x86 cross-compiler"
eerror "Run the following commands:"
eerror " emerge crossdev"
eerror " crossdev --stable -t x86_64-pc-linux-gnu"
die "cross-compiler is needed"
fi
fi
}
@ -72,6 +92,13 @@ src_unpack() {
mkdir -p "${S}"
}
src_prepare() {
default
# Ensure precompiled iasl files are never used
find "${WORKDIR}" -name '*.hex' -delete || die
}
src_configure() {
use binary && return
@ -89,6 +116,7 @@ _emake() {
CC="$(tc-getCC)" \
LD="$(tc-getLD)" \
AR="$(tc-getAR)" \
AS="$(tc-getAS)" \
OBJCOPY="$(tc-getOBJCOPY)" \
RANLIB="$(tc-getRANLIB)" \
OBJDUMP="$(tc-getOBJDUMP)" \
@ -100,9 +128,12 @@ _emake() {
src_compile() {
use binary && return
local TARGET_CHOST=$(choose_target_chost)
cp "${FILESDIR}/seabios/config.seabios-256k" .config || die
_emake oldnoconfig
_emake out/bios.bin
CHOST="${TARGET_CHOST}" _emake iasl
CHOST="${TARGET_CHOST}" _emake out/bios.bin
mv out/bios.bin ../bios-256k.bin || die
if use seavgabios ; then
@ -118,16 +149,14 @@ src_compile() {
emake clean distclean
cp "${FILESDIR}/seavgabios/config.vga-${t}" .config || die
_emake oldnoconfig
_emake out/vgabios.bin
CHOST="${TARGET_CHOST}" _emake out/vgabios.bin
cp out/vgabios.bin ../vgabios-${t}.bin || die
done
fi
}
src_install() {
insinto /usr/share/seabios
use binary && doins ../bios.bin
doins ../bios-256k.bin
if use seavgabios ; then

View File

@ -1,2 +1,4 @@
DIST sgabios-0.1_pre10-bin.tar.xz 2652 BLAKE2B 6dff0152f8553c245796badfd291e0e79f2a6a935a9908d9825dbac760746c05265b7f12a29a2d1fa1b95d16291ca5723fbf2f53b5bb04ff416e64b9c66b0c7d SHA512 6dd43858e91bee57bc0bc6d721eb26abb30bbe8b9c30733b39f3612cdf0dddd9ad8876518a4457a68a48d8a4b911225635c0e8eef1a7e78cfe65c8fcf0af2bab
DIST sgabios-0.1_pre10.tar.gz 31086 BLAKE2B f9577d0009d90c46aa5963e6dea50be4b7ec4b5c597194b33256748adbc4d60b3ac50646ce80befbd6d810ba80e93048fd6234b4d320d15f3506087435ec346c SHA512 cf12a8b8579658c99a3ad8c325637dba1569d364fc5440caf33c85a4f0403d83cf755df61d068151191c75588d568da629329a93d731f49b0b9131c983141fe6
DIST sgabios-0.1_pre8-bins.tar.xz 2704 BLAKE2B 8efcf613a4857467cc3cfbc3f6402bca091892f0b2137ff65caf2b444610c86c1db0e61505bfe48ed8d6ccc9e8928190c2a38693aeddd523e27d22a29e777044 SHA512 46fc02200b3fa2e45c954a2b6e4cd40f10d6969fd05ef4d441402c7390b4e83390250972ef0ea891635400cad22a4d8fd2b66b56afa91d03e1e0b99132e09c0d
DIST sgabios-0.1_pre8.tar.xz 27200 BLAKE2B 8ea535f2fcc8f7105a278202648e06722e7463e66ff3ccf824cd3a672a7908e7223f27678ebd4ca73eb19abaff75e082ea7b9bc222332436f31a8840443d7b44 SHA512 68e2a894eb5b99cda2b0e96ade891e24397ac962a777a97dbb526f4570e5734d36a88fde1ef64ed7a887cd8bfc500c91c48849d2c26aca6ce7e36dd80aaf361e

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>cardoe@gentoo.org</email>
<name>Doug Goldstein</name>
<email>tamiko@gentoo.org</email>
<name>Matthias Maier</name>
</maintainer>
<maintainer type="project">
<email>qemu@gentoo.org</email>
<name>Gentoo QEMU Project</name>
<email>virtualization@gentoo.org</email>
<name>Gentoo Virtualization Project</name>
</maintainer>
<use>
<flag name="binary">Use pre-built binaries</flag>

View File

@ -0,0 +1,42 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit toolchain-funcs
DESCRIPTION="serial graphics adapter bios option rom for x86"
HOMEPAGE="https://code.google.com/p/sgabios/"
# downloaded from
# https://git.qemu.org/?p=sgabios.git;a=tree;h=a85446adb0e07ccd5211619a6f215bcfc3c5ab29;hb=23d474943dcd55d0550a3d20b3d30e9040a4f15b
SRC_URI="mirror://gentoo/${P}.tar.gz
!binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}.tar.gz )
binary? ( https://dev.gentoo.org/~tamiko/distfiles/${P}-bin.tar.xz )"
S="${WORKDIR}/sgabios-a85446a"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sparc x86"
IUSE="+binary"
REQUIRED_USE="!amd64? ( !x86? ( binary ) )"
src_compile() {
use binary && return
tc-ld-disable-gold
tc-export_build_env BUILD_CC
emake -j1 \
BUILD_CC="${BUILD_CC}" \
BUILD_CFLAGS="${BUILD_CFLAGS}" \
BUILD_LDFLAGS="${BUILD_LDFLAGS}" \
BUILD_CPPFLAGS="${BUILD_CPPFLAGS}" \
CC="$(tc-getCC)" \
LD="$(tc-getLD)" \
AR="$(tc-getAR)" \
OBJCOPY="$(tc-getOBJCOPY)"
}
src_install() {
insinto /usr/share/sgabios
doins sgabios.bin
}

View File

@ -1,9 +1,9 @@
# Copyright 1999-2018 Gentoo Foundation
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6
inherit eutils toolchain-funcs
inherit toolchain-funcs
DESCRIPTION="serial graphics adapter bios option rom for x86"
HOMEPAGE="https://code.google.com/p/sgabios/"
@ -13,7 +13,7 @@ SRC_URI="mirror://gentoo/${P}.tar.xz
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sparc x86"
IUSE="+binary"
REQUIRED_USE="!amd64? ( !x86? ( binary ) )"

View File

@ -1,49 +0,0 @@
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=4
inherit eutils toolchain-funcs
DESCRIPTION="serial graphics adapter bios option rom for x86"
HOMEPAGE="https://code.google.com/p/sgabios/"
SRC_URI="mirror://gentoo/${P}.tar.xz
https://dev.gentoo.org/~cardoe/distfiles/${P}.tar.xz
https://dev.gentoo.org/~cardoe/distfiles/${P}-bins.tar.xz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86"
IUSE=""
src_prepare() {
epatch "${FILESDIR}"/${P}-makefile.patch
epatch "${FILESDIR}"/${P}-build-cc.patch #552280
epatch_user
}
src_compile() {
if use amd64 || use x86 ; then
tc-ld-disable-gold
tc-export_build_env BUILD_CC
emake \
BUILD_CC="${BUILD_CC}" \
BUILD_CFLAGS="${BUILD_CFLAGS}" \
BUILD_LDFLAGS="${BUILD_LDFLAGS}" \
BUILD_CPPFLAGS="${BUILD_CPPFLAGS}" \
CC="$(tc-getCC)" \
LD="$(tc-getLD)" \
AR="$(tc-getAR)" \
OBJCOPY="$(tc-getOBJCOPY)"
fi
}
src_install() {
insinto /usr/share/sgabios
if use amd64 || use x86 ; then
doins sgabios.bin
else
doins bins/sgabios.bin
fi
}