@@ -, +, @@
---
sys-boot/udk/Manifest | 3 +
sys-boot/udk/metadata.xml | 22 ++++
sys-boot/udk/udk-2015.ebuild | 262 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 287 insertions(+)
create mode 100644 sys-boot/udk/Manifest
create mode 100644 sys-boot/udk/metadata.xml
create mode 100644 sys-boot/udk/udk-2015.ebuild
--- a/sys-boot/udk/Manifest
+++ a/sys-boot/udk/Manifest
@@ -0,0 +1,3 @@
+DIST UDK2015.Complete.MyWorkSpace.zip 121736982 SHA256 ff11e68feafae13510ad5ee951bf7b219b3483ab335c1d0c85f45a5b7ba48b5e SHA512 7856a8f29296f817e8fd09d8eaf7207f4e25a13faa10936d1ceb10cb6a900be265379722c0ade0ef93b1c640fef8693667d2567962e3288b20ae77f607f03d39 WHIRLPOOL 8b1e283e0ae3ec422eea609a418784260119410a87c5397803730f1c73be0b113eec41ed4cd1920d32735a23377acd80bedf1867518733be6d698c3891775276
+EBUILD udk-2015.ebuild 8244 SHA256 eeab4f546903d392592556b65f369ac8e8d4205069b26cece459d2526a6daac6 SHA512 c410f8d0b9eb8c942b5fbf7a2a9406864ffdcba0b839d47111ee7b06e56cd185648484c572529ad67d05ba9289d74c11fbbe7092fd9777784f943a1ac807a61b WHIRLPOOL 2ddebaedd3559a87cf045fbbe9ca249ed71bfd39494d28d5d9c76cd1df34baf8d1e2c9cf47f413aa8303bd615cd3feb1c28d57c20f5353e519352f1f0554b019
+MISC metadata.xml 920 SHA256 3ddbcd56238b81a1c29f4e3dca296f8ef7168204af6c5e2443654dec2b0efd3e SHA512 565903822b180365e596dc8778061cf5a61a83a2b19b812be999a2147ec5d7d69398fdcfde334799c5ff33d01ce10719ad6d91fd9702ca3ee271069dfade40c3 WHIRLPOOL cc531ccfe01b7a49092ec71f7602180d5999d5fa1a3fd127ef61b22c6cbc2cad763ae9884f4a4737ad02e33ec1a63ace0558e74fdb761176562bbe87a11d4311
--- a/sys-boot/udk/metadata.xml
+++ a/sys-boot/udk/metadata.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ Tianocore UEFI development kit, installed as classical Linux libraries and
+ header files.
+
+
+ Kit de développement UEFI Tianocore, installé comme des bibliothèques et
+ des fichiers d'en-tête Linux classiques.
+
+
+
+
--- a/sys-boot/udk/udk-2015.ebuild
+++ a/sys-boot/udk/udk-2015.ebuild
@@ -0,0 +1,262 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+PYTHON_REQ_USE="sqlite"
+
+inherit multiprocessing python-single-r1 versionator
+
+DESCRIPTION="Tianocore UEFI Development kit"
+HOMEPAGE="http://www.tianocore.org/edk2/"
+MY_V="${PN^^}$(get_version_component_range 1)"
+SRC_URI="https://github.com/tianocore/${PN}/releases/download/${MY_V}/${MY_V}.Complete.MyWorkSpace.zip"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="-debug doc examples"
+
+DEPEND="app-arch/unzip dev-lang/nasm ${PYTHON_DEPS}"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+S="${WORKDIR}/MyWorkSpace"
+
+pkg_setup() {
+ UNAME_ARCH=$(uname -m | perl -pe 's@i[3456789]86@IA32@' )
+ if [[ ${UNAME_ARCH} == "x86_64" ]] || [[ ${UNAME_ARCH} == "amd64" ]] ; then
+ export ARCH=X64
+ else
+ export ARCH=${UNAME_ARCH}
+ fi
+ use debug && export COMPILE_MODE="DEBUG" || export COMPILE_MODE="RELEASE"
+ GCC_VERS=$(gcc --version | head -1 | sed "s/.*)//")
+ GCC_VERS=$(get_version_component_range 1-2 ${GCC_VERS})
+ GCC_VERS=$(delete_all_version_separators ${GCC_VERS})
+ if [[ ${GCC_VERS} -lt 44 ]] || [[ ${GCC_VERS} -gt 49 ]]; then
+ export TOOLCHAIN_TAG="ELFGCC"
+ else
+ export TOOLCHAIN_TAG="GCC${GCC_VERS}"
+ fi
+}
+
+src_unpack() {
+ unpack ${A}
+ unpack "${WORKDIR}/${MY_V}.MyWorkSpace.zip"
+ pushd "${S}"
+ unpack "${WORKDIR}/BaseTools(Unix).tar"
+ if use doc; then
+ mkdir -p "${S}/doc"
+ cd "${S}/doc"
+ for f in "${WORKDIR}/Documents/"*" Document.zip"; do
+ DOC_NAME=$(echo ${f} | perl -pe 's@^.*/([^/]*) Document.zip$@\1@')
+ unpack "${WORKDIR}/Documents/${DOC_NAME} Document.zip"
+ mv "${S}/doc/html" "${S}/doc/${DOC_NAME}"
+ done
+ fi
+ popd
+}
+
+src_prepare() {
+ eapply_user
+ python_setup 'python2.7'
+ # Base tools does not like parallel make
+ emake -j1 -C BaseTools
+ . edksetup.sh BaseTools
+}
+
+src_configure() {
+ perl -i -pe 's@^(ACTIVE_PLATFORM\s*=).*$@\1 MdeModulePkg/MdeModulePkg.dsc@; \
+ s/^(TARGET\s*=).*$/\1 '${COMPILE_MODE}'/; \
+ s/^(TARGET_ARCH\s*=).*$/\1 '${ARCH}'/; \
+ s/^(TOOL_CHAIN_TAG\s*=).*$/\1 '${TOOLCHAIN_TAG}'/; \
+ s/^(MAX_CONCURRENT_THREAD_NUMBER\s*=).*$/\1 '$(makeopts_jobs)'/' \
+ "${S}/Conf/target.txt" || die "Failed to configure target file"
+}
+
+src_compile() {
+ if use examples; then
+ BUILD_TARGET=all
+ else
+ BUILD_TARGET=libraries
+ fi
+ build ${BUILD_TARGET} || die "Failed to compile environment"
+ # TODO Sometimes a package will not use the user's ${CFLAGS} or ${LDFLAGS}.
+ # TODO This must be worked around.
+ # TODO See https://devmanual.gentoo.org/ebuild-writing/functions/src_compile/building/index.html
+}
+
+src_install() {
+ BUILD_DIR="${S}/Build/MdeModule/${COMPILE_MODE}_${TOOLCHAIN_TAG}/${ARCH}"
+
+ for f in "${BUILD_DIR}"/*/Library/*/*/OUTPUT/*.lib; do
+ newlib.a "${f}" lib$(basename "${f}" .lib).a
+ done
+ dolib "${S}/BaseTools/Scripts/GccBase.lds"
+
+ INCLUDE_DEST="/usr/include/${PN}"
+ for f in "" /Guid /IndustryStandard /Library /Pi /Ppi /Protocol /Uefi; do
+ insinto "${INCLUDE_DEST}${f}"
+ doins "${S}/MdePkg/Include${f}"/*.h
+ done
+ insinto "${INCLUDE_DEST}"
+ doins "${S}/MdePkg/Include/${ARCH}"/*.h
+ find "${S}" -name 'BaseTools' -prune -o -name 'MdePkg' -prune -o \
+ -name 'CryptoPkg' -prune -o -type d -name Include \
+ -exec find {} -maxdepth 0 \; \
+ | while read hfile; do
+ doins -r "${hfile}"/*
+ done
+
+ dobin "${S}/BaseTools/Source/C/bin/GenFw"
+
+ if use doc; then
+ docinto "html"
+ # Document installation may be very long, so split it and display message
+ for f in "${S}"/doc/*; do
+ ebegin "Installing documentation for $(basename ${f}), please wait"
+ dodoc -r "${f}"
+ eend $?
+ done
+ fi
+
+ if use examples; then
+ EX_REBUILD_DIR="${S}/${P}-exemples"
+ for f in "${S}/MdeModulePkg/Application"/*; do
+ EX_NAME=$(basename "${f}")
+ ebegin "Preparing ${EX_NAME} example"
+ mkdir -p "${EX_REBUILD_DIR}/${EX_NAME}"
+ EX_BUILD_DIR="${BUILD_DIR}/MdeModulePkg/Application"
+ EX_BUILD_DIR="${EX_BUILD_DIR}/${EX_NAME}/${EX_NAME}"
+ copySourceFiles "${f}" "${EX_REBUILD_DIR}/${EX_NAME}"
+ copySourceFiles "${EX_BUILD_DIR}/DEBUG" "${EX_REBUILD_DIR}/${EX_NAME}"
+ createMakefile "${EX_REBUILD_DIR}/${EX_NAME}/Makefile" \
+ "${EX_NAME}" "${EX_BUILD_DIR}/GNUmakefile"
+ tar -C "${EX_REBUILD_DIR}" -cf "${EX_REBUILD_DIR}/${EX_NAME}.tar" \
+ "${EX_NAME}"
+ eend $? "Failed to create example file"
+ done
+ docinto "examples"
+ dodoc "${EX_REBUILD_DIR}"/*.tar
+ fi
+
+# TODO * QA Notice: The following files contain writable and executable sections
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:Thunk16.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:SwitchStack.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:SetJump.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:LongJump.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:EnableDisableInterrupts.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:DisablePaging64.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:CpuId.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:CpuIdEx.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:EnableCache.obj
+# TODO * !WX --- --- usr/lib64/libBaseLib.a:DisableCache.obj
+# TODO * QA Notice: Package triggers severe warnings which indicate that it
+# TODO * may exhibit random runtime failures.
+# TODO * /usr/include/bits/string3.h:90:70: warning: call to void* __builtin___memset_chk(void*, int, long unsigned int, long unsigned int) will always overflow destination buffer
+}
+
+pkg_postinst() {
+ elog "Installation done for ${ARCH}"
+ use doc && \
+ elog "You can find documentation in /usr/share/doc/${PF}/html"
+ use examples && \
+ elog "You can find examples in /usr/share/doc/${PF}/examples"
+}
+
+##
+# Parameters :
+# 1 - Path where to search for source files.
+# 2 - Path where source files must be copied.
+copySourceFiles() {
+ while read -d '' -r filename; do
+ DEST_FILE="${2}${filename#${1}}"
+ mkdir -p $(dirname "${DEST_FILE}")
+ mv "${filename}" "${DEST_FILE}"
+ done < <(find "${1}" -name '*.h' -print0 -o -name '*.c' -print0)
+}
+
+##
+# Parameters :
+# 1 - Path of the file to create.
+# 2 - Name of the module.
+# 3 - Path of the generated Makefile.
+createMakefile() {
+ cat >${1} <>${1} <${3}
+
+ cat >>${1} <>${1}
+ grep -e '^IMAGE_ENTRY_POINT\s*=' ${3} >>${1}
+ echo >>${1}
+ grep -e '^CP\s*=' ${3} >>${1}
+ grep -e '^RM\s*=' ${3} >>${1}
+ grep -e '^CC\s*=' ${3} >>${1}
+ grep -e '^DLINK\s*=' ${3} >>${1}
+ grep -e '^OBJCOPY\s*=' ${3} >>${1}
+ grep -e '^GENFW\s*=' ${3} >>${1}
+ [[ $ARCH == X64 ]] && PECOFF_HEADER_SIZE='0x228' || PECOFF_HEADER_SIZE='0x220'
+ cat >>${1} <>${1}
+ grep -e '^GENFW_FLAGS\s*=' ${3} >>${1}
+ cat >>${1} <