gnu: sbcl-cl-cffi-gtk: Update to 20200417.
[jackhill/guix/guix.git] / gnu / packages / mono.scm
index 343cebc..5447dd2 100644 (file)
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 
 (define-module (gnu packages mono)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages photo)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages)
@@ -41,7 +47,8 @@
                     ".tar.bz2"))
               (sha256
                (base32
-                "0jibyvyv2jy8dq5ij0j00iq3v74r0y90dcjc3dkspcfbnn37cphn"))))
+                "0jibyvyv2jy8dq5ij0j00iq3v74r0y90dcjc3dkspcfbnn37cphn"))
+              (patches (search-patches "mono-mdoc-timestamping.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-reproducible
+           (lambda _
+             (substitute* "mono/mini/Makefile.in"
+              (("build_date = [^;]*;")
+               "build_date = (void*) 0;"))
+             #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")))
+             (setenv "HOME" "/tmp")
+             ;; 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))
          (add-after 'unpack 'patch-tests
            (lambda _  ;;* (#:key inputs #:allow-other-keys)
              (substitute* "mono/tests/Makefile.in"
     (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 "http://mono-project.com/")
+    (home-page "https://www.mono-project.com/")
     (license license:x11)))
+
+(define-public libgdiplus
+  (package
+    (name "libgdiplus")
+    (version "6.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://download.mono-project.com/sources/libgdiplus/libgdiplus-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0adz5813f881z65lpyf0g0w9hcn7d7qkai6sncpkwnsxfv4khp5p"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("cairo" ,cairo)
+       ("fontconfig" ,fontconfig)
+       ("libtiff" ,libtiff)
+       ("libjpeg" ,libjpeg)
+       ("libexif" ,libexif)
+       ("libungif" ,libungif)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; TODO: See with upstream why they fail.
+         ;; https://github.com/mono/mono/issues/18934
+         (add-before 'configure 'remove-buggy-tests
+           (lambda _
+             (substitute* "tests/Makefile.in"
+               (("testicocodec\\$\\(EXEEXT\\) ") " ")
+               (("testfont\\$\\(EXEEXT\\) ") " "))
+             #t)))))
+    (home-page "https://www.mono-project.com/docs/gui/libgdiplus/")
+    (synopsis "Mono library that provides a GDI+-compatible API")
+    (description "Libgdiplus is the Mono library that provides a
+GDI+-compatible API on non-Windows operating systems.  The implementation uses
+Cairo to do most of the heavy lifting.")
+    (license license:gpl3+)))