From 0dd7fd26928bcd0284655a206bc1df4b86c6087d Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Thu, 27 Feb 2020 12:01:20 +0100 Subject: gnu: Add mono-6. * nongnu/packages/mono.scm (mono-6): New variable. --- nongnu/packages/mono.scm | 116 +++++++++++++++++++++ .../packages/patches/mono-mdoc-timestamping.patch | 15 +++ .../patches/mono-pkgconfig-before-gac.patch | 65 ++++++++++++ 3 files changed, 196 insertions(+) create mode 100644 nongnu/packages/mono.scm create mode 100644 nongnu/packages/patches/mono-mdoc-timestamping.patch create mode 100644 nongnu/packages/patches/mono-pkgconfig-before-gac.patch diff --git a/nongnu/packages/mono.scm b/nongnu/packages/mono.scm new file mode 100644 index 0000000..db34d08 --- /dev/null +++ b/nongnu/packages/mono.scm @@ -0,0 +1,116 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Pierre Neidhardt +;;; +;;; This file is not part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (nongnu packages mono) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages base) + #:use-module (gnu packages cmake) + #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) + #:use-module (gnu packages mono) + #:use-module (gnu packages perl) + #: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) + #:use-module (guix build-system gnu)) + +;; TODO: This can probably be upstreamed since only the check phase doesn't +;; pass (even if most of the tests succeed). +(define-public mono-6 + (package + (name "mono") + (version "6.8.0.105") + (source (origin + (method url-fetch) + (uri (string-append + "https://download.mono-project.com/sources/mono/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0y11c7w6r96laqckfxnk1ya42hx2c1nfqvdgbpmsk1iw9k29k1sp")) + (patches + (parameterize + ((%patch-path + (map (lambda (directory) + (string-append directory "/nongnu/packages/patches")) + %load-path))) + (search-patches "mono-pkgconfig-before-gac.patch" + "mono-mdoc-timestamping.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("gettext" ,gettext-minimal) + ("glib" ,glib) + ("libxslt" ,libxslt) + ("perl" ,perl) + ("python" ,python-2) + ("cmake" ,cmake) + ("which" ,which) + ("libgdiplus" ,libgdiplus) + ("libx11" ,libx11))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-reproducible + (lambda _ + (substitute* "mono/mini/Makefile.in" + (("build_date = [^;]*;") + "build_date = (void*) 0;")) + #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) + ;; all tests under mcs/class fail trying to access $HOME + (setenv "HOME" "/tmp") + ;; ZIP files have "DOS time" which starts in Jan 1980. + (setenv "SOURCE_DATE_EPOCH" "315532800") + #t))) + #: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: Most tests pass but something fails. See bug#39695 and + ;; https://github.com/mono/mono/issues/18979. + #: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))) diff --git a/nongnu/packages/patches/mono-mdoc-timestamping.patch b/nongnu/packages/patches/mono-mdoc-timestamping.patch new file mode 100644 index 0000000..f7ae99a --- /dev/null +++ b/nongnu/packages/patches/mono-mdoc-timestamping.patch @@ -0,0 +1,15 @@ +--- 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 (); + + ZipEntry entry = new ZipEntry (id); ++ var SOURCE_DATE_EPOCH_string = Environment.GetEnvironmentVariable("SOURCE_DATE_EPOCH"); ++ if (SOURCE_DATE_EPOCH_string != null) ++ { ++ var SOURCE_DATE_EPOCH = Convert.ToInt64(SOURCE_DATE_EPOCH_string); ++ entry.DateTime = new DateTime(SOURCE_DATE_EPOCH, DateTimeKind.Utc); ++ } + zipOutput.PutNextEntry (entry); + } + diff --git a/nongnu/packages/patches/mono-pkgconfig-before-gac.patch b/nongnu/packages/patches/mono-pkgconfig-before-gac.patch new file mode 100644 index 0000000..7632d85 --- /dev/null +++ b/nongnu/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) -- cgit v1.2.3