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 |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
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.
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
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!
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
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 --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)