summary refs log tree commit diff
path: root/pkgs/applications/editors/monodevelop/default.nix
blob: ed6695b9979a9221f48ea6d6333ab9d484a29660 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{ lib, stdenv, fetchurl
, autoconf, automake, pkgconfig, shared-mime-info, intltool
, glib, mono, gtk-sharp-2_0, gnome2, gnome-sharp, unzip
, dotnetPackages
}:

stdenv.mkDerivation rec {
  version = "5.9.4.5";
  revision = "8010a90f6e246b32364e3fb46ef2c9d1be9c9a2b";
  pname = "monodevelop";

  src = fetchurl {
    url = "https://download.mono-project.com/sources/monodevelop/${pname}-${version}.tar.bz2";
    sha256 = "0bim4bfv3zwijafl9g0cx3159zq43dlcv74mnyrda41j4p52w5ji";
  };

  nunit2510 = fetchurl {
    url = "https://launchpad.net/nunitv2/2.5/2.5.10/+download/NUnit-2.5.10.11092.zip";
    sha256 = "0k5h5bz1p2v3d0w0hpkpbpvdkcszgp8sr9ik498r1bs72w5qlwnc";
  };

  postPatch = ''
    # From https://bugzilla.xamarin.com/show_bug.cgi?id=23696#c19

    # cecil needs NUnit 2.5.10 - this is also missing from the tar
    unzip -j ${nunit2510} -d external/cecil/Test/libs/nunit-2.5.10 NUnit-2.5.10.11092/bin/net-2.0/framework/\*

    # the tar doesn't include the nuget binary, so grab it from github and copy it
    # into the right place
    cp -vfR "$(dirname $(pkg-config NuGet.Core --variable=Libraries))"/* external/nuget-binary/
  '';

  # Revert this commit which broke the ability to use pkg-config to locate dlls
  patchFlags = [ "-p2" ];
  patches = [ ./git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch ];

  nativeBuildInputs = [ pkgconfig ];
  buildInputs = [
    autoconf automake shared-mime-info intltool
    mono gtk-sharp-2_0 gnome-sharp unzip
    dotnetPackages.NUnit
    dotnetPackages.NUnitRunners
    dotnetPackages.Nuget
  ];

  preConfigure = "patchShebangs ./configure";

  preBuild = ''
    cat > ./buildinfo <<EOF
    Release ID: ${version}
    Git revision: ${revision}
    Build date: 1970-01-01 00:00:01
    EOF
  '';

  postInstall = ''
    for prog in monodevelop mdtool; do
    patch -p 0 $out/bin/$prog <<EOF
    2a3,5
    > export MONO_GAC_PREFIX=${gnome-sharp}:${gtk-sharp-2_0}:\$MONO_GAC_PREFIX
    > export PATH=${mono}/bin:\$PATH
    > export LD_LIBRARY_PATH=${lib.makeLibraryPath [ glib gnome2.libgnomeui gnome2.gnome_vfs gnome-sharp gtk-sharp-2_0 gtk-sharp-2_0.gtk ]}:\$LD_LIBRARY_PATH
    >
    EOF
    done

    # Without this, you get a missing DLL error any time you install an addin..
    ln -sv `pkg-config nunit.core --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
    ln -sv `pkg-config nunit.core.interfaces --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
    ln -sv `pkg-config nunit.framework --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
    ln -sv `pkg-config nunit.util --variable=Libraries` $out/lib/monodevelop/AddIns/NUnit
  '';

  dontStrip = true;

  meta = with lib; {
    platforms = platforms.linux;
    maintainers = with maintainers; [ obadz ];
    broken = true; # 2018-09-21, build has failed since 2018-03-08
  };
}