summaryrefslogtreecommitdiff
path: root/gnu/packages/dotnet.scm
diff options
context:
space:
mode:
authorunmush <unmush@hashbang.sh>2024-11-26 12:59:49 +0200
committerEfraim Flashner <efraim@flashner.co.il>2024-12-22 15:37:34 +0200
commit893bd4a8ef39f33ba5c2cf74a750370ee43c9735 (patch)
treef5dd66a33867969a27a18689bbb6c689678305ed /gnu/packages/dotnet.scm
parent7d96fa640a6b71af444493f745a93837a7ea3e70 (diff)
gnu: Add mono-1.9.1.
* gnu/packages/dotnet.scm (mono-1.9.1): New variable. * gnu/packages/patches/mono-1.9.1-add-MONO_CREATE_IMAGE_VERSION.patch: New patch. * gnu/packages/patches/mono-1.9.1-fixes.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register new patches. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: I013646625b9e5dbc1cd68ecaf8cf4b591dc016a0
Diffstat (limited to 'gnu/packages/dotnet.scm')
-rw-r--r--gnu/packages/dotnet.scm58
1 files changed, 58 insertions, 0 deletions
diff --git a/gnu/packages/dotnet.scm b/gnu/packages/dotnet.scm
index 427ae286764..1eaa89dfd9c 100644
--- a/gnu/packages/dotnet.scm
+++ b/gnu/packages/dotnet.scm
@@ -397,3 +397,61 @@ a C-style programming language from Microsoft that is very similar to Java.")
license:lgpl2.0+ ;; note: ./mcs/LICENSE.LGPL specifies no version
;; mcs/jay
license:bsd-4))))
+
+(define-public mono-1.9.1
+ (package
+ (inherit mono-1.2.6)
+ (version "1.9.1")
+ (name "mono")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.winehq.org/mono/mono.git")
+ (commit "mono-1.9.1.1")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0s1n3zdhc2alk9smxfdl1kjz7lz2p19gs0ks4hgr864jlmf13bws"))
+ (modules '((guix build utils)
+ (ice-9 string-fun)))
+ (snippet prepare-mono-source)
+ (patches (search-patches
+ "mono-1.9.1-fixes.patch"
+ "mono-1.9.1-add-MONO_CREATE_IMAGE_VERSION.patch"))))
+ (native-inputs
+ (modify-inputs (package-native-inputs mono-1.2.6)
+ (delete "pnet-git")
+ (delete "pnetlib-git")
+ (prepend mono-1.2.6)
+ (append which)
+ ;; needed for tests
+ (append perl)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments mono-1.2.6)
+ ((#:make-flags _ #f)
+ #~(list #$(string-append "CC=" (cc-for-target)) "V=1"))
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (add-before 'configure 'set-cflags
+ (lambda _
+ ;; apparently can't be set via make flags in this version
+ (let ((original (getenv "CFLAGS")))
+ (setenv "CFLAGS" (string-append (or original "")
+ (if original " " "")
+ "-DARG_MAX=500")))))
+ (add-before 'configure 'set-create-image-version
+ (lambda _
+ ;; pnet produces v2.x assemblies. Mono does this weird thing
+ ;; where it always produces assemblies of the same version as
+ ;; the runtime that is running it, which is based on the
+ ;; version of the assembly that it loaded, which is based on
+ ;; what it decided for the previous compiler... on and on all
+ ;; the way back to pnet. This breaks that chain, because
+ ;; otherwise it ends up compiling the initial mcs against .NET
+ ;; 2.0 libraries and then running with .NET 1.0 libraries.
+ (setenv "MONO_CREATE_IMAGE_VERSION" "v1.1.4322")))
+ (add-after 'unpack 'patch-test-driver-shebang
+ (lambda _
+ (patch-shebang "mono/tests/test-driver")))))
+ ((#:tests? _ #f) #f)
+ ((#:parallel-tests? _ #f) #f)))))