aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunmush <unmush@hashbang.sh>2024-11-26 13:02:31 +0200
committerEfraim Flashner <efraim@flashner.co.il>2024-12-22 15:37:34 +0200
commit436648994eaed5092393da4d6bdab6f0958dc7f2 (patch)
tree452f8fff2420a386eb2935aa189120e7cdeb2db4
parent893bd4a8ef39f33ba5c2cf74a750370ee43c9735 (diff)
downloadguix-436648994eaed5092393da4d6bdab6f0958dc7f2.tar.gz
guix-436648994eaed5092393da4d6bdab6f0958dc7f2.zip
gnu: Add mono-2.4.2.
* gnu/packages/dotnet.scm (mono-2.4.2): New variable. * gnu/packages/patches/mono-2.4.2.3-fixes.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: If1b84c2465de4ba0fbfb6824f1bcbe2b694b265e
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/dotnet.scm51
-rw-r--r--gnu/packages/patches/mono-2.4.2.3-fixes.patch59
3 files changed, 111 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index f3767853e0..112208e5f4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1830,6 +1830,7 @@ dist_patch_DATA = \
%D%/packages/patches/mono-1.2.6-bootstrap.patch \
%D%/packages/patches/mono-1.9.1-add-MONO_CREATE_IMAGE_VERSION.patch \
%D%/packages/patches/mono-1.9.1-fixes.patch \
+ %D%/packages/patches/mono-2.4.2.3-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 1eaa89dfd9..286c8d674c 100644
--- a/gnu/packages/dotnet.scm
+++ b/gnu/packages/dotnet.scm
@@ -455,3 +455,54 @@ a C-style programming language from Microsoft that is very similar to Java.")
(patch-shebang "mono/tests/test-driver")))))
((#:tests? _ #f) #f)
((#:parallel-tests? _ #f) #f)))))
+
+(define-public mono-2.4.2
+ (package
+ (inherit mono-1.9.1)
+ (version "2.4.2.3")
+ (name "mono")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.winehq.org/mono/mono.git")
+ (commit (string-append
+ "mono-" (string-replace-substring version "." "-")))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0mnrk17rd9c5rh30dh82a39c9ak1ns998b41ivprvy7m068skpda"))
+ (modules '((guix build utils)
+ (ice-9 string-fun)))
+ (snippet prepare-mono-source)
+ (patches (search-patches "mono-2.4.2.3-fixes.patch"))))
+ (native-inputs (modify-inputs (package-native-inputs mono-1.9.1)
+ (replace "mono" mono-1.9.1)))
+ (inputs (modify-inputs (package-inputs mono-1.9.1)
+ (append gettext-minimal)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments mono-1.9.1)
+ ((#:tests? _ #f)
+ ;; When it tries building iltests.il in mono/mini, it gets: error
+ ;; CS0006: cannot find metadata file `TestDriver.dll'. It builds fine
+ ;; outside of the build environment, but later tests fail, and I can't
+ ;; be bothered to figure out what's causing ilasm to not find
+ ;; TestDriver.dll.
+ #f)
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (add-before 'bootstrap 'patch-sub-autogen.sh-shebang
+ (lambda _
+ (patch-shebang "eglib/autogen.sh")))))))
+ (license (list
+ ;; most of mcs/tools, mono/man, most of mcs/class, tests by
+ ;; default, mono/eglib
+ ;; 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))))
diff --git a/gnu/packages/patches/mono-2.4.2.3-fixes.patch b/gnu/packages/patches/mono-2.4.2.3-fixes.patch
new file mode 100644
index 0000000000..13cff77450
--- /dev/null
+++ b/gnu/packages/patches/mono-2.4.2.3-fixes.patch
@@ -0,0 +1,59 @@
+diff --git a/data/mono.pc.in b/data/mono.pc.in
+index 6da0960db2d..d43bb187218 100644
+--- a/data/mono.pc.in
++++ b/data/mono.pc.in
+@@ -7,6 +7,6 @@ sysconfdir=@sysconfdir@
+ Name: Mono
+ Description: Mono Runtime
+ Version: @VERSION@
+-Requires: glib-2.0 gthread-2.0
++Requires: glib-2.0 gthread-2.0 bdw-gc
+ Libs: -L${libdir} @export_ldflags@ -lmono @libmono_ldflags@
+ Cflags: -I${includedir} @libmono_cflags@
+diff --git a/mono-uninstalled.pc.in b/mono-uninstalled.pc.in
+index 7fa3f12dc91..2a0734362fd 100644
+--- a/mono-uninstalled.pc.in
++++ b/mono-uninstalled.pc.in
+@@ -1,6 +1,6 @@
+ Name: Mono
+ Description: Mono Runtime
+ Version: @VERSION@
+-Requires: glib-2.0 gthread-2.0
++Requires: glib-2.0 gthread-2.0 bdw-gc
+ Libs: -L@mono_build_root@/mono/mini/.libs @export_ldflags@ -lmono @libmono_ldflags@
+ Cflags: -I@abs_top_srcdir@ -I@abs_top_srcdir@/mono @libmono_cflags@
+diff --git a/mono/metadata/Makefile.am b/mono/metadata/Makefile.am
+index 83f8532369b..3fca7fc13b9 100644
+--- a/mono/metadata/Makefile.am
++++ b/mono/metadata/Makefile.am
+@@ -171,7 +171,6 @@ libmonoruntimeinclude_HEADERS = \
+ object.h \
+ exception.h \
+ profiler.h \
+- appdomain.h \
+ mono-config.h \
+ debug-helpers.h \
+ mempool.h
+diff --git a/mono/mini/driver.c b/mono/mini/driver.c
+index 48ca2d96899..9fb3512200b 100644
+--- a/mono/mini/driver.c
++++ b/mono/mini/driver.c
+@@ -1236,6 +1236,7 @@ mono_main (int argc, char* argv[])
+ #endif
+ if (!g_thread_supported ())
+ g_thread_init (NULL);
++ GC_allow_register_threads();
+
+ if (mono_running_on_valgrind () && getenv ("MONO_VALGRIND_LEAK_CHECK")) {
+ GMemVTable mem_vtable;
+diff --git a/runtime/Makefile.am b/runtime/Makefile.am
+index 0e876e2a491..b9cd0a99d9e 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