GNU bug report logs - #74609
[PATCH] Adding a fully-bootstrapped mono

Previous Next

Package: guix-patches;

Reported by: unmush <unmush <at> proton.me>

Date: Fri, 29 Nov 2024 17:46:03 UTC

Severity: normal

Tags: patch

Merged with 57625

Done: Efraim Flashner <efraim <at> flashner.co.il>

Bug is archived. No further changes may be made.

Full log


Message #50 received at 74609 <at> debbugs.gnu.org (full text, mbox):

From: Efraim Flashner <efraim <at> flashner.co.il>
To: 74609 <at> debbugs.gnu.org
Cc: aaron.covrig.us <at> ieee.org, ludo <at> gnu.org, unmush <unmush <at> hashbang.sh>,
 richard <at> freakingpenguin.com, unmush <at> proton.me, janneke <at> gnu.org
Subject: [PATCH 08/21] gnu: Add mono-2.11.4.
Date: Mon, 16 Dec 2024 19:26:31 +0200
From: unmush <unmush <at> hashbang.sh>

* gnu/packages/dotnet.scm
  (mono-2.11.4-external-repo-specs, mono-2.11.4): New variables.
  (add-external-repos): New procedure.
* gnu/packages/patches/mono-2.11.4-fixes.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.

Change-Id: I7cb96af8b05a625cfe9ca9ab0f1132608c02ed31
---
 gnu/local.mk                                 |  1 +
 gnu/packages/dotnet.scm                      | 95 ++++++++++++++++++++
 gnu/packages/patches/mono-2.11.4-fixes.patch | 36 ++++++++
 3 files changed, 132 insertions(+)
 create mode 100644 gnu/packages/patches/mono-2.11.4-fixes.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 43ccab199dc..8007ff19a7e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1823,6 +1823,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mono-1.9.1-fixes.patch			\
   %D%/packages/patches/mono-2.4.2.3-fixes.patch			\
   %D%/packages/patches/mono-2.6.4-fixes.patch			\
+  %D%/packages/patches/mono-2.11.4-fixes.patch			\
   %D%/packages/patches/mosaicatcher-unbundle-htslib.patch	\
   %D%/packages/patches/mrrescue-support-love-11.patch		\
   %D%/packages/patches/mtools-mformat-uninitialized.patch	\
diff --git a/gnu/packages/dotnet.scm b/gnu/packages/dotnet.scm
index 6304a38bb74..b7940d24706 100644
--- a/gnu/packages/dotnet.scm
+++ b/gnu/packages/dotnet.scm
@@ -497,3 +497,98 @@ (define-public mono-2.6.4
                (search-patches "mono-2.6.4-fixes.patch"))))
     (native-inputs (modify-inputs (package-native-inputs mono-2.4.2)
                      (replace "mono" mono-2.4.2)))))
+
+;; submodule checkouts use git://, which isn't supported by github anymore, so
+;; we need to manually provide them instead of being able to use (recursive?
+;; #t).  Also try not to think too hard about the fact that some of these
+;; submodules in later versions contain binary compiler blobs which mono
+;; maintainers presumably used when creating the bootstrap binaries they
+;; published.  All fetched and updated over unauthenticated git://.
+
+(define mono-2.11.4-external-repo-specs
+  ;; format: ({reponame OR (reponame dir-name)} commit-hash origin-sha256) ...
+  ;; if reponame starts with https:// it is treated as the repository url,
+  ;; otherwise the name of a repository under https://github.com/mono/
+  '(("aspnetwebstack"               "1836deff6a2683b8a5b7dd78f2b591a10b47573e"
+     "0vqq45i8k6jylljarr09hqqiwjs8wn0lgjrl6bz72vxqpp0j344k")
+    ("cecil"                        "54e0a50464edbc254b39ea3c885ee91ada730705"
+     "007szbf5a14q838695lwdp7ap6rwzz3kzllgjfnibzlqipw3x2yk")
+    ("entityframework"              "9baca562ee3a747a41870f45e749e4436b6aca26"
+     "0l8k04bykbrbk5q2pz8hzh8xy8y4ayz7j97fw0kyk3lrai89v5da")
+    ("Newtonsoft.Json"              "471c3e0803a9f40a0acc8aeceb31de6ff93a52c4"
+     "0dgngd5hqk6yhlg40kabn6qdnknm32zcx9q6bm2w31csnsk5978s")))
+
+(define (add-external-repos specs)
+  (define (reponame->url reponame)
+    (if (string-prefix? "https://" reponame)
+        reponame
+        (string-append "https://github.com/mono/" reponame)))
+
+  (define* (external-repo-gexp reponame commit hash
+                               #:key recursive? (patches '()))
+    (let ((short-commit (string-take commit 6))
+          (reponame (if (pair? reponame) (car reponame)
+                        reponame))
+          (dir-name (if (pair? reponame) (cadr reponame)
+                        reponame)))
+      #~(copy-recursively #+(origin
+                              (method git-fetch)
+                              (uri (git-reference
+                                    (url (reponame->url reponame))
+                                    (commit commit)
+                                    (recursive? recursive?)))
+                              (file-name
+                               (git-file-name dir-name
+                                              short-commit))
+                              (sha256 (base32 hash))
+                              (patches (map search-patch patches)))
+                          #$(string-append "./external/" dir-name))))
+
+  (define (spec->gexp spec)
+    (apply external-repo-gexp spec))
+
+  #~(begin
+      #+@(map spec->gexp specs)))
+
+(define-public mono-2.11.4
+  (package
+    (inherit mono-2.6.4)
+    (version "2.11.4")
+    (name "mono")
+    (source (origin
+              (method git-fetch)
+              (uri
+               (git-reference
+                (url "https://gitlab.winehq.org/mono/mono.git")
+                (commit (string-append "mono-" "2.11.4"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0y2bifi2avbjmfp80hjga2dyqip4b46zkvx6yfr9pa2hhm940rpx"))
+              (modules '((guix build utils)
+                         (ice-9 string-fun)))
+              (snippet #~(begin
+                           #$(add-external-repos
+                              mono-2.11.4-external-repo-specs)
+                           #$prepare-mono-source))
+              (patches
+               (search-patches "mono-2.11.4-fixes.patch"))))
+    (build-system gnu-build-system)
+    (native-inputs (modify-inputs (package-native-inputs mono-2.6.4)
+                     (replace "mono" mono-2.6.4)))
+    (license (list
+              ;; most of mcs/tools, mono/man, most of mcs/class, tests by
+              ;; default, mono/eglib, mono/metadata/sgen*,
+              ;; mono/arch/*/XXX-codegen.h
+              ;; mcs/mcs, mcs/gmcs (dual-licensed GPL)
+              ;; samples
+              license:x11
+              ;; mcs/mcs, mcs/gmcs (dual-licensed X11)
+              ;; some of mcs/tools
+              license:gpl1+ ;; note: ./mcs/LICENSE.GPL specifies no version
+              ;; mono/mono (the mono VM, I think they meant mono/mini)
+              license:lgpl2.0+ ;; note: ./mcs/LICENSE.LGPL specifies no version
+              ;; mcs/jay
+              license:bsd-4
+              ;; mcs/class/System.Core/System/TimeZoneInfo.Android.cs
+              license:asl2.0))))
diff --git a/gnu/packages/patches/mono-2.11.4-fixes.patch b/gnu/packages/patches/mono-2.11.4-fixes.patch
new file mode 100644
index 00000000000..02a05f7977a
--- /dev/null
+++ b/gnu/packages/patches/mono-2.11.4-fixes.patch
@@ -0,0 +1,36 @@
+diff --git a/configure.in b/configure.in
+index 38cc6dc2925..4c608eb150f 100644
+--- a/configure.in
++++ b/configure.in
+@@ -470,7 +470,7 @@ AC_CHECK_HEADERS(wchar.h)
+ AC_CHECK_HEADERS(ieeefp.h)
+ AC_MSG_CHECKING(for isinf)
+ AC_TRY_LINK([#include <math.h>], [
+-	int f = isinf (1);
++	int f = isinf (1.0);
+ ], [
+ 	AC_MSG_RESULT(yes)
+ 	AC_DEFINE(HAVE_ISINF, 1, [isinf available])
+diff --git a/mono/io-layer/processes.c b/mono/io-layer/processes.c
+index 586b54715db..d27857aa092 100644
+--- a/mono/io-layer/processes.c
++++ b/mono/io-layer/processes.c
+@@ -18,6 +18,7 @@
+ #include <errno.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/sysmacros.h>
+ #include <unistd.h>
+ #include <signal.h>
+ #include <sys/wait.h>
+diff --git a/runtime/Makefile.am b/runtime/Makefile.am
+index 6957a287d38..2d071230a84 100644
+--- a/runtime/Makefile.am
++++ b/runtime/Makefile.am
+@@ -1,6 +1,3 @@
+-# hack to prevent 'check' from depending on 'all'
+-AUTOMAKE_OPTIONS = cygnus
+-
+ tmpinst = _tmpinst
+ 
+ noinst_SCRIPTS = mono-wrapper monodis-wrapper
-- 
Efraim Flashner   <efraim <at> flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted





This bug report was last modified 153 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.