diff mbox series

[bug#39695,WIP] gnu: mono: Update to 6.8.0.105.

Message ID 20200220162336.18848-1-mail@ambrevar.xyz
State Work in progress
Headers show
Series [bug#39695,WIP] gnu: mono: Update to 6.8.0.105. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

Pierre Neidhardt Feb. 20, 2020, 4:23 p.m. UTC
* gnu/packages/mono.scm (mono): Update to 6.8.0.105.
---
 gnu/packages/mono.scm                         | 81 ++++++++++++++-----
 .../patches/mono-mdoc-timestamping.patch      |  4 +-
 .../patches/mono-pkgconfig-before-gac.patch   | 65 +++++++++++++++
 3 files changed, 130 insertions(+), 20 deletions(-)
 create mode 100644 gnu/packages/patches/mono-pkgconfig-before-gac.patch

Comments

Pierre Neidhardt Feb. 20, 2020, 4:46 p.m. UTC | #1
The tests don't pass at the moment, but I can't figure out why.

During the build phase, I see this:

--8<---------------cut here---------------start------------->8---
...
cd /tmp/guix-build-mono-6.8.0.105.drv-0/mono-6.8.0.105/mcs && make --no-print-directory -s NO_DIR_CHECK=1 PROFILES='binary_reference_assemblies net_4_x xbuild_12 xbuild_14              ' CC='gcc' all-profiles
mkdir -p -- build/deps
make[6]: mono: Command not found
make[6]: *** [build/profiles/build.make:134: build/deps/basic-profile-check.exe] Error 127
*** The runtime 'mono' doesn't appear to be usable.
*** Trying the 'monolite-linux/ABB721D6-116A-4555-B4FD-9248146D2051' directory.
Microsoft (R) Visual C# Compiler version 3.5.0-beta1-19606-04 (d2bd58c6)
Copyright (C) Microsoft Corporation. All rights reserved.

/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/sh: git: command not found
/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/sh: git: command not found
/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/sh: git: command not found
/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/sh: git: command not found
mkdir -p -- ../../class/lib/build-linux/tmp/
CSC     [build-linux] gensources.exe
...
--8<---------------cut here---------------end--------------->8---

During the check phase, I see this:

--8<---------------cut here---------------start------------->8---
...
MDOC    [net_4_x-linux] Novell.tree
Warning: couldn't process directory `./../class/Commons.Xml.Relaxng/Documentation/en' as it has no index.xml file
Error reading namespace XML for global at ./../class/Novell.Directory.Ldap/Documentation/en/ns-global.xml
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/IThreadRunnable.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/Integer32.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+SingleThreadModel.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+Tokenizer.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+DateTimeFormatManager.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+DateTimeFormatManager+DateTimeFormatHashTable.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+ArrayListSupport.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+ThreadClass.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+CollectionSupport.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+ListCollectionSupport.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+ArraysSupport.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+SetSupport.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+AbstractSetSupport.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+MessageDigestSupport.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Novell.Directory.Ldap/Documentation/en/global/SupportClass+SecureRandomSupport.xml' as it doesn't exist
Error reading namespace XML for Novell.Directory.Ldap.Asn1 at ./../class/Novell.Directory.Ldap/Documentation/en/ns-Novell.Directory.Ldap.Asn1.xml
Error reading namespace XML for Novell.Directory.Ldap.Rfc2251 at ./../class/Novell.Directory.Ldap/Documentation/en/ns-Novell.Directory.Ldap.Rfc2251.xml
Error reading namespace XML for Novell.Directory.Ldap at ./../class/Novell.Directory.Ldap/Documentation/en/ns-Novell.Directory.Ldap.xml
Error reading namespace XML for Novell.Directory.Ldap.Utilclass at ./../class/Novell.Directory.Ldap/Documentation/en/ns-Novell.Directory.Ldap.Utilclass.xml
Error reading namespace XML for Novell.Directory.Ldap.Extensions at ./../class/Novell.Directory.Ldap/Documentation/en/ns-Novell.Directory.Ldap.Extensions.xml
Warning: couldn't process type file `./../class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyLoadEventRequest.xml' as it doesn't exist
Error reading namespace XML for Novell.Directory.Ldap.Controls at ./../class/Novell.Directory.Ldap/Documentation/en/ns-Novell.Directory.Ldap.Controls.xml
Warning: couldn't process type file `./../class/Mono.Posix/Documentation/en/Mono.Unix.Native/EpollEvent.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Mono.Posix/Documentation/en/Mono.Unix.Native/EpollEvents.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Mono.Posix/Documentation/en/Mono.Unix.Native/EpollFlags.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Mono.Posix/Documentation/en/Mono.Unix.Native/EpollOp.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Mono.Posix/Documentation/en/Mono.Unix.Native/RealTimeSignum.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Mono.Security.Win32/Documentation/en/Mono.Security.Cryptography/MD2.xml' as it doesn't exist
Warning: couldn't process type file `./../class/Mono.Security.Win32/Documentation/en/Mono.Security.Cryptography/MD4.xml' as it doesn't exist
Error reading namespace XML for Mono.Security.Cryptography at ./../class/System.Core/Documentation/en/ns-Mono.Security.Cryptography.xml
Warning: couldn't process type file `./../class/System.Design/Documentation/en/System.Web.UI.Design.WebControls/DataSourceIDConverter.xml' as it doesn't exist
Warning: couldn't process directory `./../class/System.DirectoryServices/Documentation/en' as it has no index.xml file
Error reading namespace XML for System.Resources at ./../class/System.Web/Documentation/en/ns-System.Resources.xml
Warning: couldn't process type file `./../class/System.Web/Documentation/en/System.Resources/ResXFileRef.xml' as it doesn't exist
Warning: couldn't process type file `./../class/System.Web/Documentation/en/System.Resources/ResXFileRef+Converter.xml' as it doesn't exist
Warning: couldn't process type file `./../class/System.Web/Documentation/en/System.Resources/ResXResourceReader.xml' as it doesn't exist
Warning: couldn't process type file `./../class/System.Web/Documentation/en/System.Resources/ResXResourceWriter.xml' as it doesn't exist
./../jay/jay: 7 shift/reduce conflicts.
...
--8<---------------cut here---------------end--------------->8---

Find the build log attached.
Brett Gilio July 25, 2020, 1:56 a.m. UTC | #2
Whew! Somebody finally got to it! I tried many times to get mono in a
better shape for Guix, but failed! :) As there are a considerable number
of changes here, would you mind giving a short synopsis of what still
needs to be made before we either reroll a revision or get a final
draft?

Thanks!
Brett Gilio
Pierre Neidhardt July 25, 2020, 6:14 a.m. UTC | #3
Hi Brett!

Brett Gilio <brettg@gnu.org> writes:

> Whew! Somebody finally got to it! I tried many times to get mono in a
> better shape for Guix, but failed! :) As there are a considerable number
> of changes here, would you mind giving a short synopsis of what still
> needs to be made before we either reroll a revision or get a final
> draft?

What still needs to be made?  Beside fixing the tests, the patch I've
sent seems to have Mono 5 and 6 working.

Final draft of what?  Sorry, I feel that I'm missing some context :)

If your question is about the Mono ecosystem, there is a lot of work
left to do.  We need a bootstrapped msbuild (the build tool for Mono),
and then ideally we would have a mono-build-system.  I can detail this
if you want to, let me know.

Cheers!
Brett Gilio July 25, 2020, 8:11 p.m. UTC | #4
Pierre Neidhardt <mail@ambrevar.xyz> writes:

> Hi Brett!
>
> Brett Gilio <brettg@gnu.org> writes:
>
>> Whew! Somebody finally got to it! I tried many times to get mono in a
>> better shape for Guix, but failed! :) As there are a considerable number
>> of changes here, would you mind giving a short synopsis of what still
>> needs to be made before we either reroll a revision or get a final
>> draft?
>
> What still needs to be made?  Beside fixing the tests, the patch I've
> sent seems to have Mono 5 and 6 working.
>
> Final draft of what?  Sorry, I feel that I'm missing some context :)
>
> If your question is about the Mono ecosystem, there is a lot of work
> left to do.  We need a bootstrapped msbuild (the build tool for Mono),
> and then ideally we would have a mono-build-system.  I can detail this
> if you want to, let me know.
>
> Cheers!

Sorry, I wrote this email last night when I was rather tired. I meant to
say what work still needs to be done on the patch before we commit it. I
think the work on msbuild will prove to be slightly tricky, as that is
now the default build tool for .NET Core as well, and if I recall
correctly .NET Core and Mono use two different instances and
configurations of msbuild.

If our ultimate goal is to get .NET Core (with .NET 5 approaching to
replace .NET Core and .NET Framework, and eventually Mono as well) we
should maybe invest time into a general .NET build system. I'm not sure.

Thoughts?

Brett
Pierre Neidhardt July 26, 2020, 10:21 a.m. UTC | #5
Brett Gilio <brettg@gnu.org> writes:

> Pierre Neidhardt <mail@ambrevar.xyz> writes:
>
>> Hi Brett!
>>
>> Brett Gilio <brettg@gnu.org> writes:
>>
>>> Whew! Somebody finally got to it! I tried many times to get mono in a
>>> better shape for Guix, but failed! :) As there are a considerable number
>>> of changes here, would you mind giving a short synopsis of what still
>>> needs to be made before we either reroll a revision or get a final
>>> draft?
>>
>> What still needs to be made?  Beside fixing the tests, the patch I've
>> sent seems to have Mono 5 and 6 working.
>>
>> Final draft of what?  Sorry, I feel that I'm missing some context :)
>>
>> If your question is about the Mono ecosystem, there is a lot of work
>> left to do.  We need a bootstrapped msbuild (the build tool for Mono),
>> and then ideally we would have a mono-build-system.  I can detail this
>> if you want to, let me know.
>>
>> Cheers!
>
> Sorry, I wrote this email last night when I was rather tired. I meant to
> say what work still needs to be done on the patch before we commit it.

Nothing essential, the patch can be merged as is, I believe.

> If our ultimate goal is to get .NET Core (with .NET 5 approaching to
> replace .NET Core and .NET Framework, and eventually Mono as well) we
> should maybe invest time into a general .NET build system. I'm not sure.

Absolutely.  The investment is significant ;)  Maybe the first step
would be to gather a team of volunteers.  This is very low priority for
me personally (I don't even know C#).  Maybe posting about this on the
mailing list and other social media could be a good start.

Cheers!
diff mbox series

Patch

diff --git a/gnu/packages/mono.scm b/gnu/packages/mono.scm
index 5447dd2300..e663140d5c 100644
--- a/gnu/packages/mono.scm
+++ b/gnu/packages/mono.scm
@@ -19,6 +19,9 @@ 
 
 (define-module (gnu packages mono)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
@@ -29,6 +32,7 @@ 
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
   #:use-module (gnu packages)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -38,32 +42,60 @@ 
 (define-public mono
   (package
     (name "mono")
-    (version "4.4.1.0")
+    (version "6.8.0.105")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://download.mono-project.com/sources/mono/"
-                    name "-" version
-                    ".tar.bz2"))
+                    "https://download.mono-project.com/sources/mono/"
+                    name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0jibyvyv2jy8dq5ij0j00iq3v74r0y90dcjc3dkspcfbnn37cphn"))
-              (patches (search-patches "mono-mdoc-timestamping.patch"))))
+                "0y11c7w6r96laqckfxnk1ya42hx2c1nfqvdgbpmsk1iw9k29k1sp"))
+              (patches (search-patches "mono-pkgconfig-before-gac.patch"
+                                       ;; TODO: Update this patch.
+                                       ;; "mono-mdoc-timestamping.patch"
+                                       ))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("glib" ,glib)
        ("libxslt" ,libxslt)
        ("perl" ,perl)
-       ("python" ,python-2)))
+       ("python" ,python-2)
+       ("cmake" ,cmake)
+       ("which" ,which)
+       ("libgdiplus" ,libgdiplus)
+       ("libx11" ,libx11)
+       ;; TODO: Test if these 2 are necessary.
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'make-reproducible
            (lambda _
              (substitute* "mono/mini/Makefile.in"
-              (("build_date = [^;]*;")
-               "build_date = (void*) 0;"))
+               (("build_date = [^;]*;")
+                "build_date = (void*) 0;"))
+             #t))
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             (substitute* "mono/eglib/test/path.c"
+               (("const gchar \\*newdir = \"/bin\";")
+                (string-append "const gchar *newdir = \"/tmp\";")))
+             #t))
+         ;; TODO: Update Mono certs.  We need a certificate bundle, which nss-certs does not have.
+         ;; (add-after 'install 'update-mono-key-store
+         ;;   (lambda* (#:key outputs inputs #:allow-other-keys)
+         ;;     (let* ((out (assoc-ref outputs "out"))
+         ;;            (ca (assoc-ref inputs "nss-certs"))
+         ;;            (cert-sync (string-append out "/bin/cert-sync"))))
+         ;;     (invoke cert-sync (string-append ca "/etc/ssl/certs/ca-bundle.crt")
+         (add-after 'install 'install-gmcs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (symlink (string-append out "/bin/mcs")
+                        (string-append out "/bin/gmcs")))
              #t))
          (add-after 'unpack 'set-env
            (lambda _ ;;* (#:key inputs #:allow-other-keys)
@@ -72,13 +104,15 @@ 
              ;; ZIP files have "DOS time" which starts in Jan 1980.
              (setenv "SOURCE_DATE_EPOCH" "315532800")
              #t))
-         (add-after 'unpack 'fix-includes
-           (lambda _
-             ;; makedev is in <sys/sysmacros.h> now.  Include it.
-             (substitute* "mono/io-layer/processes.c"
-              (("#ifdef HAVE_SYS_MKDEV_H") "#if 1")
-              (("sys/mkdev.h") "sys/sysmacros.h"))
-             #t))
+         ;; TODO: This fix seems obsolete in Mono 6.
+         ;; (add-after 'unpack 'fix-includes
+         ;;   (lambda _
+         ;;     ;; makedev is in <sys/sysmacros.h> now.  Include it.
+         ;;     (substitute* "mono/io-layer/processes.c"
+         ;;      (("#ifdef HAVE_SYS_MKDEV_H") "#if 1")
+         ;;      (("sys/mkdev.h") "sys/sysmacros.h"))
+         ;;     #t))
+         ;; TODO: Those patches don't seem to be useful anymore.
          (add-after 'unpack 'patch-tests
            (lambda _  ;;* (#:key inputs #:allow-other-keys)
              (substitute* "mono/tests/Makefile.in"
@@ -116,19 +150,30 @@ 
                  "NO_TEST:=true\n"
                  all
                  "\nrun-test-lib:\n\t@echo skipping test\n"))))))
-       ;; these 4 tests fail
+       ;; TODO: Do these 4 tests still fail?
        #:make-flags `(,(string-append "PLATFORM_DISABLED_TESTS="
                                       " appdomain-unload.exe"
                                       " delegate2.exe"
                                       " finally_guard.exe"
                                       " remoting4.exe"))
-       ;; running tests in parallel fails
+       #:configure-flags (list
+                          (string-append "--x-includes="
+                                         (assoc-ref %build-inputs "libx11")
+                                         "/include")
+                          (string-append "--x-libraries="
+                                         (assoc-ref %build-inputs "libx11")
+                                         "/lib")
+                          (string-append "--with-libgdiplus="
+                                         (assoc-ref %build-inputs "libgdiplus")
+                                         "/lib/libgdiplus.so"))
+       ;; TODO: Does running tests in parallel fail?
        #:parallel-tests? #f))
     (synopsis "Compiler and libraries for the C# programming language")
     (description "Mono is a compiler, vm, debugger and set of libraries for
 C#, a C-style programming language from Microsoft that is very similar to
 Java.")
     (home-page "https://www.mono-project.com/")
+    ;; TODO: Still x11?
     (license license:x11)))
 
 (define-public libgdiplus
diff --git a/gnu/packages/patches/mono-mdoc-timestamping.patch b/gnu/packages/patches/mono-mdoc-timestamping.patch
index d5191a93eb..f7ae99a34f 100644
--- a/gnu/packages/patches/mono-mdoc-timestamping.patch
+++ b/gnu/packages/patches/mono-mdoc-timestamping.patch
@@ -1,5 +1,5 @@ 
---- mono-4.4.1/mcs/class/monodoc/Monodoc/storage/ZipStorage.cs.orig	2018-11-26 22:16:25.008879747 +0100
-+++ mono-4.4.1/mcs/class/monodoc/Monodoc/storage/ZipStorage.cs	2018-11-26 22:21:53.969770985 +0100
+--- mono-4.4.1/external/api-doc-tools/monodoc/Monodoc/storage/ZipStorage.cs.orig	2018-11-26 22:16:25.008879747 +0100
++++ mono-4.4.1/external/api-doc-tools/monodoc/Monodoc/storage/ZipStorage.cs	2018-11-26 22:21:53.969770985 +0100
 @@ -74,6 +74,12 @@
  				id = GetNewCode ();
  
diff --git a/gnu/packages/patches/mono-pkgconfig-before-gac.patch b/gnu/packages/patches/mono-pkgconfig-before-gac.patch
new file mode 100644
index 0000000000..7632d85039
--- /dev/null
+++ b/gnu/packages/patches/mono-pkgconfig-before-gac.patch
@@ -0,0 +1,65 @@ 
+diff -Naur mono-4.0.1.old/mcs/tools/xbuild/data/12.0/Microsoft.Common.targets mono-4.0.1/mcs/tools/xbuild/data/12.0/Microsoft.Common.targets
+--- mono-4.0.1.old/mcs/tools/xbuild/data/12.0/Microsoft.Common.targets	2015-04-24 02:26:18.000000000 +0100
++++ mono-4.0.1/mcs/tools/xbuild/data/12.0/Microsoft.Common.targets	2015-05-26 00:52:33.997847464 +0100
+@@ -229,8 +229,8 @@
+ 			$(ReferencePath);
+ 			@(AdditionalReferencePath);
+ 			{HintPathFromItem};
+-			{TargetFrameworkDirectory};
+ 			{PkgConfig};
++			{TargetFrameworkDirectory};
+ 			{GAC};
+ 			{RawFileName};
+ 			$(OutDir)
+diff -Naur mono-4.0.1.old/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets mono-4.0.1/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets
+--- mono-4.0.1.old/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets	2015-04-24 02:26:18.000000000 +0100
++++ mono-4.0.1/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets	2015-05-26 00:52:41.832612748 +0100
+@@ -214,8 +214,8 @@
+ 			$(ReferencePath);
+ 			@(AdditionalReferencePath);
+ 			{HintPathFromItem};
+-			{TargetFrameworkDirectory};
+ 			{PkgConfig};
++			{TargetFrameworkDirectory};
+ 			{GAC};
+ 			{RawFileName};
+ 			$(OutDir)
+diff -Naur mono-4.0.1.old/mcs/tools/xbuild/data/2.0/Microsoft.Common.targets mono-4.0.1/mcs/tools/xbuild/data/2.0/Microsoft.Common.targets
+--- mono-4.0.1.old/mcs/tools/xbuild/data/2.0/Microsoft.Common.targets	2015-04-24 02:26:18.000000000 +0100
++++ mono-4.0.1/mcs/tools/xbuild/data/2.0/Microsoft.Common.targets	2015-05-26 00:52:46.298478961 +0100
+@@ -139,8 +139,8 @@
+ 			$(ReferencePath);
+ 			@(AdditionalReferencePath);
+ 			{HintPathFromItem};
+-			{TargetFrameworkDirectory};
+ 			{PkgConfig};
++			{TargetFrameworkDirectory};
+ 			{GAC};
+ 			{RawFileName};
+ 			$(OutDir)
+diff -Naur mono-4.0.1.old/mcs/tools/xbuild/data/3.5/Microsoft.Common.targets mono-4.0.1/mcs/tools/xbuild/data/3.5/Microsoft.Common.targets
+--- mono-4.0.1.old/mcs/tools/xbuild/data/3.5/Microsoft.Common.targets	2015-04-24 02:26:18.000000000 +0100
++++ mono-4.0.1/mcs/tools/xbuild/data/3.5/Microsoft.Common.targets	2015-05-26 00:52:52.119304583 +0100
+@@ -167,8 +167,8 @@
+ 			$(ReferencePath);
+ 			@(AdditionalReferencePath);
+ 			{HintPathFromItem};
+-			{TargetFrameworkDirectory};
+ 			{PkgConfig};
++			{TargetFrameworkDirectory};
+ 			{GAC};
+ 			{RawFileName};
+ 			$(OutDir)
+diff -Naur mono-4.0.1.old/mcs/tools/xbuild/data/4.0/Microsoft.Common.targets mono-4.0.1/mcs/tools/xbuild/data/4.0/Microsoft.Common.targets
+--- mono-4.0.1.old/mcs/tools/xbuild/data/4.0/Microsoft.Common.targets	2015-04-24 02:26:18.000000000 +0100
++++ mono-4.0.1/mcs/tools/xbuild/data/4.0/Microsoft.Common.targets	2015-05-26 00:52:56.519172776 +0100
+@@ -229,8 +229,8 @@
+ 			$(ReferencePath);
+ 			@(AdditionalReferencePath);
+ 			{HintPathFromItem};
+-			{TargetFrameworkDirectory};
+ 			{PkgConfig};
++			{TargetFrameworkDirectory};
+ 			{GAC};
+ 			{RawFileName};
+ 			$(OutDir)