From 47964f7d6d1ac45fc301b15b7eebfd338196a3fa Mon Sep 17 00:00:00 2001 From: unmush Date: Tue, 26 Nov 2024 13:12:11 Subject: [PATCH v2 08/21] gnu: Add mono-2.11.4. * 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. --- 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 99e106df8fc..8aeb4536f51 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1828,6 +1828,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 82bee55aa90..f97567dc29f 100644 --- a/gnu/packages/dotnet.scm +++ b/gnu/packages/dotnet.scm @@ -545,3 +545,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 ], [ +- 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 + #include + #include ++#include + #include + #include + #include +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 -- 2.45.2