From b93096780562ec3b8538be9ac0ab77b58eaaf8c8 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Wed, 16 Feb 2005 11:13:18 +0000
Subject: [PATCH] * A utility function for the automatic generation of wrapper
 scripts.

svn path=/nixpkgs/trunk/; revision=2241
---
 .../browsers/firefox-wrapper/builder.sh       | 26 ++++++++++++-------
 .../browsers/firefox-wrapper/default.nix      |  1 +
 .../make-wrapper/make-wrapper.sh              | 26 +++++++++++++++++++
 3 files changed, 44 insertions(+), 9 deletions(-)
 create mode 100644 pkgs/build-support/make-wrapper/make-wrapper.sh

diff --git a/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh b/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh
index d8b97aa97681..50b14bf9b6b7 100644
--- a/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh
+++ b/pkgs/applications/networking/browsers/firefox-wrapper/builder.sh
@@ -1,9 +1,8 @@
 . $stdenv/setup
+. $makeWrapper
 
 shopt -s nullglob
 
-mkdir -p $out/bin
-
 pluginPath=
 extraLibPath=
 for i in $plugins; do
@@ -17,11 +16,20 @@ for i in $plugins; do
     done
 done
 
-cat > $out/bin/firefox <<EOF
-#! $SHELL
-export LD_LIBRARY_PATH=$extraLibPath
-export MOZ_PLUGIN_PATH=$pluginPath
-exec $firefox/bin/firefox "\$@"
-EOF
+makeWrapper "$firefox/bin/firefox" "$out/bin/firefox" \
+    --suffix MOZ_PLUGIN_PATH ':' $pluginPath \
+    --suffix LD_LIBRARY_PATH ':' $extraLibPath
 
-chmod +x $out/bin/firefox
+#    --add-to-env MOZ_PLUGIN_PATH ':' --each lib/mozilla/plugins "$plugins" \
+#    --add-to-env MOZ_PLUGIN_PATH ':' --each 'jre/plugin/*/mozilla' "$plugins" \
+#    --add-to-env LD_LIBRARY_PATH --contents lib/mozilla/plugins/extra-library-path "$plugins" \
+#    --add-to-env LD_LIBRARY_PATH --contents 'jre/plugin/*/mozilla/extra-library-path' "$plugins"
+
+#cat > $out/bin/firefox <<EOF
+##! $SHELL
+#export LD_LIBRARY_PATH=$extraLibPath
+#export MOZ_PLUGIN_PATH=$pluginPath
+#exec $firefox/bin/firefox "\$@"
+#EOF
+
+#chmod +x $out/bin/firefox
diff --git a/pkgs/applications/networking/browsers/firefox-wrapper/default.nix b/pkgs/applications/networking/browsers/firefox-wrapper/default.nix
index 2e3c81d9e417..eb6c6f3bde3c 100644
--- a/pkgs/applications/networking/browsers/firefox-wrapper/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-wrapper/default.nix
@@ -4,6 +4,7 @@ stdenv.mkDerivation {
   name = firefox.name;
 
   builder = ./builder.sh;
+  makeWrapper = ../../../../build-support/make-wrapper/make-wrapper.sh;
 
   inherit firefox plugins;
 }
diff --git a/pkgs/build-support/make-wrapper/make-wrapper.sh b/pkgs/build-support/make-wrapper/make-wrapper.sh
new file mode 100644
index 000000000000..be066e1c579c
--- /dev/null
+++ b/pkgs/build-support/make-wrapper/make-wrapper.sh
@@ -0,0 +1,26 @@
+makeWrapper() {
+    original=$1
+    wrapper=$2
+
+    ensureDir "$(dirname $wrapper)"
+
+    echo "#! $SHELL -e" > $wrapper
+
+    params=("$@")
+    for ((n = 2; n < ${#params[*]}; n += 1)); do
+        p=${params[$n]}
+
+        if test "$p" = "--suffix"; then
+            echo FOOBAR
+            varName=${params[$((n + 1))]}
+            separator=${params[$((n + 2))]}
+            value=${params[$((n + 3))]}
+            n=$((n + 3))
+            echo "export $varName=\$$varName\${$varName:+$separator}$value" >> $wrapper
+        fi
+    done
+
+    echo "exec \"$original\" \"\$@\"" >> $wrapper
+    
+    chmod +x $wrapper
+}