diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-06-01 03:41:51 +0000 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-06-01 03:41:51 +0000 |
commit | 8d64e04cb528732ef0844a120620acc64f9fbc41 (patch) | |
tree | d70f60b2bfc9767593a9c9430f7cfffd9d4c80c6 /extra/refind-efi | |
parent | 7cd564d1e9657febf970765ffd43fcee8abe7ff5 (diff) |
Sun Jun 1 03:39:22 UTC 2014
Diffstat (limited to 'extra/refind-efi')
-rw-r--r-- | extra/refind-efi/PKGBUILD | 220 | ||||
-rw-r--r-- | extra/refind-efi/refind-efi.install | 2 | ||||
-rw-r--r-- | extra/refind-efi/refind_linux.conf | 4 |
3 files changed, 164 insertions, 62 deletions
diff --git a/extra/refind-efi/PKGBUILD b/extra/refind-efi/PKGBUILD index 53ba04b57..7bbaa00d2 100644 --- a/extra/refind-efi/PKGBUILD +++ b/extra/refind-efi/PKGBUILD @@ -1,36 +1,25 @@ -# $Id: PKGBUILD 212228 2014-05-11 09:19:56Z tpowa $ +# $Id: PKGBUILD 213910 2014-05-31 11:41:33Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Contributor: Keshav Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> -####### -# _TIANOCORE_SVN_URL="https://svn.code.sf.net/p/edk2/code/branches/UDK2014" -# _TIANO_DIR_="tianocore-udk-2014-svn" -# _TIANO_SVN_REV_="15322" - -# BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg +_USE_GNU_EFI="1" -_TIANOCORE_SVN_URL="https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1" -_TIANO_DIR_="tianocore-udk-2010-svn" -_TIANO_SVN_REV_="14641" ####### +[[ "${CARCH}" == "x86_64" ]] && _TIANO_ARCH="X64" +[[ "${CARCH}" == "i686" ]] && _TIANO_ARCH="IA32" -####### -_TIANOCORE_PKG="Mde" -_TIANOCORE_TARGET="RELEASE" -_UDK_TARGET="${_TIANOCORE_PKG}Pkg/${_TIANOCORE_PKG}Pkg.dsc" -# _COMPILER="GCC48" -_COMPILER="GCC47" +[[ "${CARCH}" == "x86_64" ]] && _TIANO_S_ARCH="x64" +[[ "${CARCH}" == "i686" ]] && _TIANO_S_ARCH="ia32" ####### pkgname="refind-efi" -pkgver="0.7.9" +pkgver="0.8.1" pkgrel="1" -pkgdesc="Rod Smith's fork of rEFIt UEFI Boot Manager - built with Tianocore UDK libs" +pkgdesc="Rod Smith's fork of rEFIt UEFI Boot Manager" url="http://www.rodsbooks.com/refind/index.html" arch=('x86_64' 'i686') license=('GPL3' 'custom') -makedepends=('subversion' 'python2') depends=('bash' 'dosfstools' 'efibootmgr') optdepends=('mactel-boot: For bless command in Apple Mac systems' 'imagemagick: For refind-mkfont script') @@ -42,25 +31,36 @@ install="${pkgname}.install" source=("http://downloads.sourceforge.net/refind/refind-src-${pkgver}.zip" 'refind_linux.conf') -for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg ; do - source+=("${_TIANO_DIR_}_${_DIR_}::svn+${_TIANOCORE_SVN_URL}/${_DIR_}#revision=${_TIANO_SVN_REV_}") -done - -md5sums=('2792c9430d4e575eb19e62b548a7a2e6' - 'a83e45b10d5efbca1c93a63851728712' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP') - -[[ "${CARCH}" == "x86_64" ]] && _TIANO_ARCH="X64" -[[ "${CARCH}" == "i686" ]] && _TIANO_ARCH="IA32" +if [[ "${_USE_GNU_EFI}" == "1" ]]; then + + pkgdesc="${pkgdesc} - Built with GNU-EFI libs" + makedepends=('gnu-efi-libs') + +else + + pkgdesc="${pkgdesc} - Built with Tianocore UDK libs" + makedepends+=('subversion' 'python2') + + _TIANOCORE_SVN_URL="https://svn.code.sf.net/p/edk2/code/branches/UDK2014" + _TIANO_DIR_="tianocore-udk-2014-svn" + _TIANO_SVN_REV_="15322" + + _TIANOCORE_PKG="Mde" + _TIANOCORE_TARGET="RELEASE" + _UDK_TARGET="${_TIANOCORE_PKG}Pkg/${_TIANOCORE_PKG}Pkg.dsc" + _COMPILER="GCC48" + + ## BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg + for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg ; do + source+=("${_TIANO_DIR_}_${_DIR_}::svn+${_TIANOCORE_SVN_URL}/${_DIR_}#revision=${_TIANO_SVN_REV_}") + done + +fi -[[ "${CARCH}" == "x86_64" ]] && _TIANO_S_ARCH="x64" -[[ "${CARCH}" == "i686" ]] && _TIANO_S_ARCH="ia32" +md5sums=('9bb5181bab8700a32a6ab835a131e5c5' + '12ce3e22a216e7b25c253478a34713b4') -_setup_env_vars() { +_setup_tianocore_env_vars() { msg "Setup UDK PATH ENV variables" export _UDK_DIR="${srcdir}/${_TIANO_DIR_}_build" @@ -96,7 +96,7 @@ _prepare_tianocore_sources() { 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 - msg "Fix GenFw: ERROR 3000: Invalid, refind_x64.dll bad symbol definition" + msg "Fix GenFw: ERROR 3000: Invalid, bad symbol definition" ## http://www.mail-archive.com/edk2-devel@lists.sourceforge.net/msg03625.html sed -e 's|_OBJCOPY_FLAGS =|_OBJCOPY_FLAGS = -R .eh_frame|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true @@ -105,9 +105,12 @@ _prepare_tianocore_sources() { 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 - msg "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 + msg "Remove GCC -g debug option and add -O0 -mabi=ms -maccumulate-outgoing-args" + sed 's|DEFINE GCC_ALL_CC_FLAGS = -g |DEFINE GCC_ALL_CC_FLAGS = -O0 -mabi=ms -maccumulate-outgoing-args |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true + sed 's|DEFINE GCC44_ALL_CC_FLAGS = -g |DEFINE GCC44_ALL_CC_FLAGS = -O0 -mabi=ms -maccumulate-outgoing-args |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true + + # msg "Fix GenFw: ERROR 3000: Invalid, Unsupported section alignment" + sed 's|--gc-sections|--gc-sections --build-id=none|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" msg "Fix UDK Target Platform" sed "s|ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc|ACTIVE_PLATFORM = ${_UDK_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true @@ -126,33 +129,62 @@ _prepare_refind_sources() { cd "${srcdir}/refind-${pkgver}/" - msg "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 - - msg "Fix GenFw: ERROR 3000: Invalid, refind_x64.dll bad symbol definition" - sed -e 's|--strip-unneeded|--strip-unneeded -R .eh_frame|g' -i "${srcdir}/refind-${pkgver}/refind/Make.tiano" || true - sed -e 's|--strip-unneeded|--strip-unneeded -R .eh_frame|g' -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" - sed -e 's|--strip-unneeded|--strip-unneeded -R .eh_frame|g' -i "${srcdir}/refind-${pkgver}/gptsync/Make.tiano" || true + if [[ "${_USE_GNU_EFI}" == "1" ]]; then + msg "Enable GNU_EFI_USE_MS_ABI" + sed "s|-DEFI_FUNCTION_WRAPPER|-DEFI_FUNCTION_WRAPPER -maccumulate-outgoing-args|g" -i "${srcdir}/refind-${pkgver}/Make.common" || true + sed "s|-DEFIX64|-DEFIX64 -maccumulate-outgoing-args|g" -i "${srcdir}/refind-${pkgver}/Make.common" || true + sed "s|-m64|-maccumulate-outgoing-args -m64|g" -i "${srcdir}/refind-${pkgver}/filesystems/Make.gnuefi" || true + else + msg "Fix UDK Path in rEFInd Makefiles" + sed "s|EDK2BASE = /usr/local/UDK2014/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}/Make.tiano" || true + sed "s|EDK2BASE = /usr/local/UDK2014/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}/refind/Make.tiano" || true + sed "s|EDK2BASE = /usr/local/UDK2014/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" || true + sed "s|EDK2BASE = /usr/local/UDK2014/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/refind-${pkgver}/gptsync/Make.tiano" || true + 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}/refind/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 + + msg "Fix GenFw: ERROR 3000: Invalid, refind_x64.dll bad symbol definition" + sed -e 's|--strip-unneeded|--strip-unneeded -R .eh_frame|g' -i "${srcdir}/refind-${pkgver}/Make.tiano" || true + sed -e 's|--strip-unneeded|--strip-unneeded -R .eh_frame|g' -i "${srcdir}/refind-${pkgver}/refind/Make.tiano" || true + sed -e 's|--strip-unneeded|--strip-unneeded -R .eh_frame|g' -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" + sed -e 's|--strip-unneeded|--strip-unneeded -R .eh_frame|g' -i "${srcdir}/refind-${pkgver}/gptsync/Make.tiano" || true + + # msg "Fix GenFw: ERROR 3000: Invalid section alignment" + sed 's|--gc-sections|--gc-sections --build-id=none|g' -i "${srcdir}/refind-${pkgver}/Make.tiano" || true + sed 's|--gc-sections|--gc-sections --build-id=none|g' -i "${srcdir}/refind-${pkgver}/refind/Make.tiano" || true + sed 's|--gc-sections|--gc-sections --build-id=none|g' -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" || true + sed 's|--gc-sections|--gc-sections --build-id=none|g' -i "${srcdir}/refind-${pkgver}/gptsync/Make.tiano" || true + # sed -e 's|--gc-sections|--gc-sections -z max-page-size=0x20|g' -i "${srcdir}/refind-${pkgver}/Make.tiano" || true + # sed -e 's|--gc-sections|--gc-sections -z max-page-size=0x20|g' -i "${srcdir}/refind-${pkgver}/refind/Make.tiano" || true + # sed -e 's|--gc-sections|--gc-sections -z max-page-size=0x20|g' -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" + # sed -e 's|--gc-sections|--gc-sections -z max-page-size=0x20|g' -i "${srcdir}/refind-${pkgver}/gptsync/Make.tiano" || true + # sed -e 's|--strip-unneeded|--section-alignment=0x20 --strip-unneeded|g' -i "${srcdir}/refind-${pkgver}/Make.tiano" || true + # sed -e 's|--strip-unneeded|--section-alignment=0x20 --strip-unneeded|g' -i "${srcdir}/refind-${pkgver}/refind/Make.tiano" || true + # sed -e 's|--strip-unneeded|--section-alignment=0x20 --strip-unneeded|g' -i "${srcdir}/refind-${pkgver}/filesystems/Make.tiano" + # sed -e 's|--strip-unneeded|--section-alignment=0x20 --strip-unneeded|g' -i "${srcdir}/refind-${pkgver}/gptsync/Make.tiano" || true + fi } prepare() { - _setup_env_vars - - msg "Prepare Tianocore Sources" - _prepare_tianocore_sources + if [[ "${_USE_GNU_EFI}" != "1" ]]; then + _setup_tianocore_env_vars + + msg "Prepare Tianocore Sources" + _prepare_tianocore_sources + fi msg "Prepare rEFInd Sources" _prepare_refind_sources } -build() { +_build_tianocore_sources() { - _setup_env_vars + _setup_tianocore_env_vars cd "${_UDK_DIR}/" @@ -171,10 +203,25 @@ build() { make -C "${EDK_TOOLS_PATH}" echo + msg "Unset all compiler FLAGS" + unset CFLAGS + unset CPPFLAGS + unset CXXFLAGS + unset LDFLAGS + unset MAKEFLAGS + msg "Compile UDK Libraries" "${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "${_TIANO_ARCH}" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}" echo +} + +build() { + + if [[ "${_USE_GNU_EFI}" != "1" ]]; then + _build_tianocore_sources + fi + cd "${srcdir}/refind-${pkgver}/" msg "Unset all compiler FLAGS" @@ -185,12 +232,67 @@ build() { unset MAKEFLAGS msg "Compile rEFInd UEFI application" - make tiano - echo + if [[ "${_USE_GNU_EFI}" == "1" ]]; then + make gnuefi + echo + else + make tiano + echo + fi + + cd "${srcdir}/refind-${pkgver}/filesystems/" + + msg "Unset all compiler FLAGS" + unset CFLAGS + unset CPPFLAGS + unset CXXFLAGS + unset LDFLAGS + unset MAKEFLAGS msg "Compile UEFI FS drivers" - make fs - echo + if [[ "${_USE_GNU_EFI}" == "1" ]]; then + make btrfs_gnuefi + echo + + make ext4_gnuefi + echo + + make ext2_gnuefi + echo + + make hfs_gnuefi + echo + + make iso9660_gnuefi + echo + + make reiserfs_gnuefi + echo + + # make xfs_gnuefi + # echo + else + make btrfs + echo + + make ext4 + echo + + make ext2 + echo + + make hfs + echo + + make iso9660 + echo + + make reiserfs + echo + + # make xfs + # echo + fi } diff --git a/extra/refind-efi/refind-efi.install b/extra/refind-efi/refind-efi.install index a1f237896..86314c05d 100644 --- a/extra/refind-efi/refind-efi.install +++ b/extra/refind-efi/refind-efi.install @@ -16,7 +16,7 @@ or mactel-boot (for Macs) rEFInd Icons have been installed at /usr/share/refind/icons/ rEFInd Fonts have been installed at /usr/share/refind/fonts/ -HTML Documentation is available at /usr/share/doc/refind/html/ +HTML Documentation is available at /usr/share/refind/docs/html/ More info: https://wiki.archlinux.org/index.php/UEFI_Bootloaders#Using_rEFInd diff --git a/extra/refind-efi/refind_linux.conf b/extra/refind-efi/refind_linux.conf index a34536b37..5a3768bcf 100644 --- a/extra/refind-efi/refind_linux.conf +++ b/extra/refind-efi/refind_linux.conf @@ -1,5 +1,5 @@ ## This file should be present in the same directory as the EFISTUB kernel and initramfs files ## More info at http://www.rodsbooks.com/refind/linux.html , http://www.rodsbooks.com/efi-bootloaders/efistub.html -"Boot with defaults" "root=PARTUUID=XXXXXXXX rootfstype=XXXX ro" -"Boot to terminal" "root=PARTUUID=XXXXXXXX rootfstype=XXXX ro systemd.unit=multi-user.target" +"Boot with defaults" "root=PARTUUID=XXXXXXXX rootfstype=XXXX rw add_efi_memmap" +"Boot to terminal" "root=PARTUUID=XXXXXXXX rootfstype=XXXX rw add_efi_memmap systemd.unit=multi-user.target" |