# $Id: PKGBUILD 188814 2013-06-21 19:48:54Z tpowa $ # Maintainer: Tobias Powalowski # Contributor: Keshav Padram <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> ####### _TIANOCORE_SVN_URL="https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1" # BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg _TIANO_DIR_="tianocore-udk-svn" ####### ####### _TIANOCORE_PKG="Mde" _TIANOCORE_TARGET="RELEASE" _UDK_TARGET="${_TIANOCORE_PKG}Pkg/${_TIANOCORE_PKG}Pkg.dsc" _COMPILER="GCC46" ####### pkgname="refind-efi" pkgver="0.6.12" pkgrel="2" pkgdesc="Rod Smith's fork of rEFIt UEFI Boot Manager - built with Tianocore UDK libs" url="http://www.rodsbooks.com/refind/index.html" arch=('x86_64' 'i686') license=('GPL3' 'custom') makedepends=('subversion' 'python2') depends=('dosfstools' 'efibootmgr') optdepends=('mactel-boot: For bless command in Apple Mac systems' 'bash: For /usr/bin/refind-mkfont script' 'imagemagick: For /usr/bin/refind-mkfont script') options=('!strip' 'docs' '!makeflags') install="${pkgname}.install" source=("http://downloads.sourceforge.net/refind/refind-src-${pkgver}.zip" 'UDK-MdePkg-Revert-PathNodeCount.patch' 'refind_linux.conf') for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg ; do source+=("${_TIANO_DIR_}/${_DIR_}::svn+${_TIANOCORE_SVN_URL}/${_DIR_}") done sha1sums=('aabac34b2a30e16c5fd105777b9245c2ed0496e4' '4d1992699f9b48dd2b7e6bd6c0b25fc065f75894' '3d53eb615c3363d45feb95b9bfbf1d5491bf1c24' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP') [[ "${CARCH}" == "x86_64" ]] && _TIANO_ARCH="X64" [[ "${CARCH}" == "i686" ]] && _TIANO_ARCH="IA32" [[ "${CARCH}" == "x86_64" ]] && _TIANO_S_ARCH="x64" [[ "${CARCH}" == "i686" ]] && _TIANO_S_ARCH="ia32" _tianocore_udk_common() { ## Unset all FLAGS unset CFLAGS unset CPPFLAGS unset CXXFLAGS unset LDFLAGS unset MAKEFLAGS ## Setup UDK Environment variables export _UDK_DIR="${srcdir}/${_TIANO_DIR_}_build" export EDK_TOOLS_PATH="${_UDK_DIR}/BaseTools" rm -rf "${_UDK_DIR}/" || true mkdir -p "${_UDK_DIR}/" for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg ; do mv "${srcdir}/${_DIR_}" "${_UDK_DIR}/${_DIR_}" done cd "${_UDK_DIR}/" ## Fix PcdMaximumPathNodeCount compile error patch -Np1 -R -i "${srcdir}/UDK-MdePkg-Revert-PathNodeCount.patch" echo ## Cleanup UDK config files rm -rf "${_UDK_DIR}/Build/" || true rm -rf "${_UDK_DIR}/Conf/" || true mkdir -p "${_UDK_DIR}/Conf/" mkdir -p "${_UDK_DIR}/Build/" ## UDK BaseTools requires python2 sed 's|python |python2 |g' -i "${EDK_TOOLS_PATH}/BinWrappers/PosixLike"/* || true sed 's|python |python2 |g' -i "${EDK_TOOLS_PATH}/Tests/GNUmakefile" ## Fix GCC Warning as error sed 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' -i "${EDK_TOOLS_PATH}/Source/C/Makefiles/header.makefile" || true sed 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true ## Fix GCC >=4.7 error - gcc: error: unrecognized command line option '-melf_x86_64' sed 's| -m64 --64 -melf_x86_64| -m64|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true sed 's|--64 | |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true sed 's| -m64 -melf_x86_64| -m64|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true ## Remove GCC -g debug option and add -0s -mabi=ms sed 's|DEFINE GCC_ALL_CC_FLAGS = -g |DEFINE GCC_ALL_CC_FLAGS = -Os -mabi=ms |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true sed 's|DEFINE GCC44_ALL_CC_FLAGS = -g |DEFINE GCC44_ALL_CC_FLAGS = -Os -mabi=ms |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true ## Fix UDK Target Platform sed "s|ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc|ACTIVE_PLATFORM = ${_UDK_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true sed "s|TARGET = DEBUG|TARGET = ${_TIANOCORE_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true sed "s|TOOL_CHAIN_TAG = MYTOOLS|TOOL_CHAIN_TAG = ${_COMPILER}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true ## Setup UDK Environment chmod +x "${_UDK_DIR}/BaseTools/BuildEnv" source "${_UDK_DIR}/BaseTools/BuildEnv" BaseTools echo ## Compile UDK BaseTools make -C "${EDK_TOOLS_PATH}" echo ## Compile UDK x86_64-UEFI Libraries "${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "${_TIANO_ARCH}" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}" echo ## Fix UDK Target ARCH for rEFInd sed "s|IA32|${_TIANO_ARCH}|g" -i "${_UDK_DIR}/Conf/target.txt" || true } build() { _tianocore_udk_common echo cd "${srcdir}/refind-${pkgver}/" ## Fix UDK Path in rEFInd Makefiles sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}/Make.tiano" || true sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" || true sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}/gptsync/Make.tiano" || true ## Unset all FLAGS unset CFLAGS unset CPPFLAGS unset CXXFLAGS unset LDFLAGS unset MAKEFLAGS ## Compile refind.efi make tiano ## Compile UEFI FS drivers make fs } package() { ## Install the rEFInd UEFI application install -d "${pkgdir}/usr/lib/refind/" install -D -m0644 "${srcdir}/refind-${pkgver}/refind/refind_${_TIANO_S_ARCH}.efi" "${pkgdir}/usr/lib/refind/refind_${_TIANO_S_ARCH}.efi" ## Install UEFI drivers built from rEFInd install -d "${pkgdir}/usr/lib/refind/drivers_${_TIANO_S_ARCH}/" install -D -m0644 "${srcdir}/refind-${pkgver}/drivers_${_TIANO_S_ARCH}"/*.efi "${pkgdir}/usr/lib/refind/drivers_${_TIANO_S_ARCH}/" ## Install UEFI applications built from rEFInd install -d "${pkgdir}/usr/lib/refind/tools_${_TIANO_S_ARCH}" install -D -m0644 "${srcdir}/refind-${pkgver}/gptsync/gptsync_${_TIANO_S_ARCH}.efi" "${pkgdir}/usr/lib/refind/tools_${_TIANO_S_ARCH}/gptsync_${_TIANO_S_ARCH}.efi" ## Install the rEFInd config file install -d "${pkgdir}/usr/lib/refind/config/" install -D -m0644 "${srcdir}/refind-${pkgver}/refind.conf-sample" "${pkgdir}/usr/lib/refind/config/refind.conf" install -D -m0644 "${srcdir}/refind_linux.conf" "${pkgdir}/usr/lib/refind/config/refind_linux.conf" ## Install the rEFInd docs install -d "${pkgdir}/usr/share/refind/docs/html/" install -d "${pkgdir}/usr/share/refind/docs/Styles/" install -D -m0644 "${srcdir}/refind-${pkgver}/docs/refind"/* "${pkgdir}/usr/share/refind/docs/html/" install -D -m0644 "${srcdir}/refind-${pkgver}/docs/Styles"/* "${pkgdir}/usr/share/refind/docs/Styles/" install -D -m0644 "${srcdir}/refind-${pkgver}/README.txt" "${pkgdir}/usr/share/refind/docs/README" install -D -m0644 "${srcdir}/refind-${pkgver}/NEWS.txt" "${pkgdir}/usr/share/refind/docs/NEWS" rm -f "${pkgdir}/usr/share/refind/docs/html/.DS_Store" || true ## Install the rEFInd fonts install -d "${pkgdir}/usr/share/refind/fonts/" install -D -m0644 "${srcdir}/refind-${pkgver}/fonts"/* "${pkgdir}/usr/share/refind/fonts/" rm -f "${pkgdir}/usr/share/refind/fonts/mkfont.sh" ## Install the rEFInd mkfont.sh install -d "${pkgdir}/usr/bin/" install -D -m0755 "${srcdir}/refind-${pkgver}/fonts/mkfont.sh" "${pkgdir}/usr/bin/refind-mkfont" ## Install the rEFInd icons install -d "${pkgdir}/usr/share/refind/icons/" install -D -m0644 "${srcdir}/refind-${pkgver}/icons"/* "${pkgdir}/usr/share/refind/icons/" ## Install the rEFInd images install -d "${pkgdir}/usr/share/refind/images/" install -D -m0644 "${srcdir}/refind-${pkgver}/images"/*.{png,bmp} "${pkgdir}/usr/share/refind/images/" ## Install the rEFInd keys install -d "${pkgdir}/usr/share/refind/keys/" install -D -m0644 "${srcdir}/refind-${pkgver}/keys"/* "${pkgdir}/usr/share/refind/keys/" ## Install the rEFIt license file, since rEFInd is a fork of rEFIt install -d "${pkgdir}/usr/share/licenses/refind/" install -D -m0644 "${srcdir}/refind-${pkgver}/LICENSE.txt" "${pkgdir}/usr/share/licenses/refind/LICENSE" }