summaryrefslogtreecommitdiff
path: root/extra/refind-efi
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-06-01 03:41:51 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-06-01 03:41:51 +0000
commit8d64e04cb528732ef0844a120620acc64f9fbc41 (patch)
treed70f60b2bfc9767593a9c9430f7cfffd9d4c80c6 /extra/refind-efi
parent7cd564d1e9657febf970765ffd43fcee8abe7ff5 (diff)
Sun Jun 1 03:39:22 UTC 2014
Diffstat (limited to 'extra/refind-efi')
-rw-r--r--extra/refind-efi/PKGBUILD220
-rw-r--r--extra/refind-efi/refind-efi.install2
-rw-r--r--extra/refind-efi/refind_linux.conf4
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"