Skip to content

Commit

Permalink
refind: fix runtime errors
Browse files Browse the repository at this point in the history
In newer versions, instead of using $PWD to locate its ressource files,
Refind now refers to the dir containing $0.
This causes runtime errors due to missing ressources.

In lieu a wrapper binary, we now simply patch the variable 'RefindDir'
which stores the path to the ressource dir.
  • Loading branch information
erikarvstedt committed May 3, 2018
1 parent b45ef79 commit adce6bf
Showing 1 changed file with 4 additions and 12 deletions.
16 changes: 4 additions & 12 deletions pkgs/tools/bootloaders/refind/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
install -D -m0644 gptsync/gptsync_${efiPlatform}.efi $out/share/refind/tools_${efiPlatform}/gptsync_${efiPlatform}.efi
# helper scripts
install -D -m0755 refind-install $out/share/refind/refind-install
install -D -m0755 refind-install $out/bin/refind-install
install -D -m0755 mkrlconf $out/bin/refind-mkrlconf
install -D -m0755 mvrefind $out/bin/refind-mvrefind
install -D -m0755 fonts/mkfont.sh $out/bin/refind-mkfont
Expand Down Expand Up @@ -86,21 +86,13 @@ stdenv.mkDerivation rec {
# keys
install -D -m0644 keys/* $out/share/refind/keys/
# The refind-install script assumes that all resource files are
# installed under the same directory as the script itself. To avoid
# having to patch around this assumption, generate a wrapper that
# cds into $out/share/refind and executes the real script from
# there.
cat >$out/bin/refind-install <<EOF
#! ${stdenv.shell}
cd $out/share/refind && exec -a $out/bin/refind-install ./refind-install \$*
EOF
chmod +x $out/bin/refind-install
# Fix variable definition of 'RefindDir' which is used to locate ressource files.
sed -i "s,\bRefindDir=.*,RefindDir=$out/share/refind,g" $out/bin/refind-install
# Patch uses of `which`. We could patch in calls to efibootmgr,
# openssl, convert, and openssl, but that would greatly enlarge
# refind's closure (from ca 28MB to over 400MB).
sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/share/refind/refind-install
sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-install
sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-mvrefind
sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-mkfont
'';
Expand Down

0 comments on commit adce6bf

Please sign in to comment.