From 0847250505aab535ecdc35c6b8f3c87d8f9dd0fe Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Sat, 30 Aug 2014 23:48:45 -0300 Subject: [PATCH 1/2] Higan - a quick&dirty workaround Higan uses a lot of hardcoded paths when it looks for runtime files as shaders, icons and mainly BIOS files. So, we made a q&d wrapper script: it copies all these files to $HOME/.config/higan in the 1st invocation. --- pkgs/misc/emulators/higan/builder.sh | 22 ++++++++++++++++++++++ pkgs/misc/emulators/higan/default.nix | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/pkgs/misc/emulators/higan/builder.sh b/pkgs/misc/emulators/higan/builder.sh index 144c23d39de..a99ccf26dbb 100644 --- a/pkgs/misc/emulators/higan/builder.sh +++ b/pkgs/misc/emulators/higan/builder.sh @@ -18,3 +18,25 @@ install -m 644 ananke/libananke.so $out/lib/libananke.so.1 (cd $out/lib && ln -s libananke.so.1 libananke.so) oldRPath=$(patchelf --print-rpath $out/bin/higan) patchelf --set-rpath $oldRPath:$out/lib $out/bin/higan + +# A dirty workaround, suggested by @cpages: +# we create a wrapper script to set up +# $HOME local configuration before higan runs + +mv $out/bin/higan $out/bin/.higan-wrapped +cat < $out/bin/higan + +#!/bin/bash +if [ ! -e \$HOME/.config/higan/.was_configured ] +then + cp --update --recursive $out/share/higan \$HOME/.config + chmod --recursive u+w \$HOME/.config/higan + touch \$HOME/.config/higan/.was_configured +fi +# LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:$out/lib +$out/bin/.higan-wrapped "\$@" + +EOF + +patchShebangs $out/bin/higan +chmod +x $out/bin/higan diff --git a/pkgs/misc/emulators/higan/default.nix b/pkgs/misc/emulators/higan/default.nix index aceb55b1396..532eeef2280 100644 --- a/pkgs/misc/emulators/higan/default.nix +++ b/pkgs/misc/emulators/higan/default.nix @@ -44,5 +44,6 @@ stdenv.mkDerivation rec { # TODO: # - options to choose profiles (accuracy, balanced, performance) # and different GUIs (gtk2, qt4) -# - fix the BML and BIOS paths - maybe a custom patch to Higan project? +# - fix the BML and BIOS paths - maybe submitting +# a custom patch to Higan project would not be a bad idea... # From f5f4bf1a25464e03441c852c791f7ee8780536a1 Mon Sep 17 00:00:00 2001 From: AndersonTorres Date: Sun, 31 Aug 2014 09:45:44 -0300 Subject: [PATCH 2/2] Higan: Updating builder.sh script Now builder.sh will install a higan-config.sh script to write auxiliary stuff on $HOME/.config/higan directory. That way, higan searches locally and runs cleanly. Obviously it's a hack, but the only other way is to do a huge patch on upstream sources; personally I think it is better to work that type of thing directly on higan sources. --- pkgs/misc/emulators/higan/builder.sh | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/pkgs/misc/emulators/higan/builder.sh b/pkgs/misc/emulators/higan/builder.sh index a99ccf26dbb..0d01f7dc971 100644 --- a/pkgs/misc/emulators/higan/builder.sh +++ b/pkgs/misc/emulators/higan/builder.sh @@ -20,23 +20,16 @@ oldRPath=$(patchelf --print-rpath $out/bin/higan) patchelf --set-rpath $oldRPath:$out/lib $out/bin/higan # A dirty workaround, suggested by @cpages: -# we create a wrapper script to set up -# $HOME local configuration before higan runs +# we create a first-run script to populate +# the local $HOME with all the auxiliary +# stuff needed by higan at runtime -mv $out/bin/higan $out/bin/.higan-wrapped -cat < $out/bin/higan +cat < $out/bin/higan-config.sh +#!${shell} -#!/bin/bash -if [ ! -e \$HOME/.config/higan/.was_configured ] -then - cp --update --recursive $out/share/higan \$HOME/.config - chmod --recursive u+w \$HOME/.config/higan - touch \$HOME/.config/higan/.was_configured -fi -# LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:$out/lib -$out/bin/.higan-wrapped "\$@" +cp --update --recursive $out/share/higan \$HOME/.config +chmod --recursive u+w \$HOME/.config/higan EOF -patchShebangs $out/bin/higan -chmod +x $out/bin/higan +chmod +x $out/bin/higan-config.sh