summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/editors/monodoc/default.nix2
-rw-r--r--pkgs/build-support/mono-dll-fixer/builder.sh5
-rw-r--r--pkgs/build-support/mono-dll-fixer/default.nix9
-rw-r--r--pkgs/build-support/mono-dll-fixer/dll-fixer.pl32
-rw-r--r--pkgs/development/libraries/gtk-sharp/builder.sh11
-rw-r--r--pkgs/development/libraries/gtk-sharp/default.nix11
-rw-r--r--pkgs/system/all-packages-generic.nix6
7 files changed, 69 insertions, 7 deletions
diff --git a/pkgs/applications/editors/monodoc/default.nix b/pkgs/applications/editors/monodoc/default.nix
index e4b4a5a22b3..e37b08af67d 100644
--- a/pkgs/applications/editors/monodoc/default.nix
+++ b/pkgs/applications/editors/monodoc/default.nix
@@ -1,7 +1,7 @@
 {stdenv, fetchurl, mono, gtksharp, pkgconfig}:
 
 stdenv.mkDerivation {
-  name = "MonoDoc-1.0.6";
+  name = "monodoc-1.0.6";
 
   src = fetchurl {
     url = http://www.go-mono.com/archive/1.0.6/monodoc-1.0.6.tar.gz;
diff --git a/pkgs/build-support/mono-dll-fixer/builder.sh b/pkgs/build-support/mono-dll-fixer/builder.sh
new file mode 100644
index 00000000000..277a108ee7d
--- /dev/null
+++ b/pkgs/build-support/mono-dll-fixer/builder.sh
@@ -0,0 +1,5 @@
+. $stdenv/setup
+. $substituter
+
+substitute $dllFixer $out --subst-var-by perl $perl/bin/perl
+chmod +x $out
diff --git a/pkgs/build-support/mono-dll-fixer/default.nix b/pkgs/build-support/mono-dll-fixer/default.nix
new file mode 100644
index 00000000000..d1d856235da
--- /dev/null
+++ b/pkgs/build-support/mono-dll-fixer/default.nix
@@ -0,0 +1,9 @@
+{stdenv, perl}:
+
+stdenv.mkDerivation {
+  name = "mono-dll-fixer";
+  builder = ./builder.sh;
+  substituter = ../substitute/substitute.sh;
+  dllFixer = ./dll-fixer.pl;
+  inherit perl;
+}
\ No newline at end of file
diff --git a/pkgs/build-support/mono-dll-fixer/dll-fixer.pl b/pkgs/build-support/mono-dll-fixer/dll-fixer.pl
new file mode 100644
index 00000000000..4a8b468692f
--- /dev/null
+++ b/pkgs/build-support/mono-dll-fixer/dll-fixer.pl
@@ -0,0 +1,32 @@
+#! @perl@ -w
+
+use strict;
+
+my @paths = split ' ', $ENV{"ALL_INPUTS"};
+
+open IN, "<$ARGV[0]" or die;
+open OUT, ">$ARGV[0].tmp" or die;
+
+while (<IN>) {
+    # !!! should use a real XML library here.
+    if (!/<dllmap dll="(.*)" target="(.*)"\/>/) {
+        print OUT;
+        next;
+    }
+    my $dll = $1;
+    my $target = $2;
+
+    foreach my $path (@paths) {
+        my $fullPath = "$path/lib/$target";
+        if (-e "$fullPath") {
+            $target = $fullPath;
+            last;
+        }
+    }
+
+    print OUT "  <dllmap dll=\"$dll\" target=\"$target\"/>\n";
+}
+
+close IN;
+
+rename "$ARGV[0].tmp", "$ARGV[0]" or die "cannot rename $ARGV[0]";
diff --git a/pkgs/development/libraries/gtk-sharp/builder.sh b/pkgs/development/libraries/gtk-sharp/builder.sh
new file mode 100644
index 00000000000..225cc3f3aae
--- /dev/null
+++ b/pkgs/development/libraries/gtk-sharp/builder.sh
@@ -0,0 +1,11 @@
+. $stdenv/setup
+
+genericBuild
+
+# !!! hack
+export ALL_INPUTS=$pkgs
+
+find $out -name "*.dll.config" | while read configFile; do
+    echo "modifying config file $configFile"
+    $monoDLLFixer "$configFile"
+done
diff --git a/pkgs/development/libraries/gtk-sharp/default.nix b/pkgs/development/libraries/gtk-sharp/default.nix
index 8d8f27ee8ba..3b31d338119 100644
--- a/pkgs/development/libraries/gtk-sharp/default.nix
+++ b/pkgs/development/libraries/gtk-sharp/default.nix
@@ -10,22 +10,23 @@
 , libgnomeui ? null
 , libgnomeprint ? null
 , libgnomeprintui ? null
-, libxml2 } :
+, libxml2
+, monoDLLFixer
+}:
 
 stdenv.mkDerivation {
   name = "gtk-sharp-1.0.6";
 
+  builder = ./builder.sh;
   src = fetchurl {
     url = http://www.go-mono.com/archive/1.0.6/gtk-sharp-1.0.6.tar.gz;
     md5 = "2651d14fe77174ab20b8af53d150ee11";
   };
 
   buildInputs = [
-
     pkgconfig mono glib pango gtk gconf libglade libgnomecanvas
     libgtkhtml libgnomeui libgnomeprint libgnomeprintui gtkhtml libxml2
-
   ];
-}
-
 
+  inherit monoDLLFixer;
+}
diff --git a/pkgs/system/all-packages-generic.nix b/pkgs/system/all-packages-generic.nix
index 340f86b4d0f..ef269bba56b 100644
--- a/pkgs/system/all-packages-generic.nix
+++ b/pkgs/system/all-packages-generic.nix
@@ -390,6 +390,10 @@ rec {
     inherit (gtkLibs) glib;
   };
 
+  monoDLLFixer = import ../build-support/mono-dll-fixer {
+    inherit stdenv perl;
+  };
+
   strategoxt = (import ../development/compilers/strategoxt) {
     inherit fetchurl stdenv aterm;
     sdf = sdf_23;
@@ -633,7 +637,7 @@ rec {
   };
 
   gtksharp = (import ../development/libraries/gtk-sharp) {
-    inherit fetchurl stdenv mono pkgconfig libxml2;
+    inherit fetchurl stdenv mono pkgconfig libxml2 monoDLLFixer;
     inherit (gnome) gtk glib pango libglade libgtkhtml gtkhtml 
               libgnomecanvas libgnomeui libgnomeprint 
               libgnomeprintui gconf;