* [bug#38603] [WIP Mercury 1/2] gnu: Register mercury module.
2019-12-14 3:29 [bug#38603] [WIP Mercury 0/2] Add Mercury Brett Gilio
@ 2019-12-14 3:31 ` Brett Gilio
2019-12-14 3:31 ` [bug#38603] [WIP Mercury 2/2] gnu: Add mercury Brett Gilio
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Brett Gilio @ 2019-12-14 3:31 UTC (permalink / raw)
To: 38603
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: [WIP Mercury 1/2] gnu: Register mercury module. --]
[-- Type: text/x-patch, Size: 705 bytes --]
From f3fc8801c45e62378a62896c6203ce6931f8d53d Mon Sep 17 00:00:00 2001
From: Brett Gilio <brettg@posteo.net>
Date: Fri, 13 Dec 2019 21:25:17 -0600
Subject: [WIP Mercury 1/2] gnu: Register mercury module.
* gnu/local.mk (mercury.scm): Register mercury module.
---
gnu/local.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/gnu/local.mk b/gnu/local.mk
index 32b2c141fa..bd2d32da94 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -335,6 +335,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/mc.scm \
%D%/packages/mcrypt.scm \
%D%/packages/medical.scm \
+ %D%/packages/mercury.scm \
%D%/packages/mes.scm \
%D%/packages/messaging.scm \
%D%/packages/mingw.scm \
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#38603] [WIP Mercury 2/2] gnu: Add mercury.
2019-12-14 3:29 [bug#38603] [WIP Mercury 0/2] Add Mercury Brett Gilio
2019-12-14 3:31 ` [bug#38603] [WIP Mercury 1/2] gnu: Register mercury module Brett Gilio
@ 2019-12-14 3:31 ` Brett Gilio
2020-01-06 23:57 ` [bug#38603] [WIP v2 0/1] " Brett Gilio
2020-01-06 23:57 ` [bug#38603] [WIP v2 1/1] gnu: " Brett Gilio
3 siblings, 0 replies; 6+ messages in thread
From: Brett Gilio @ 2019-12-14 3:31 UTC (permalink / raw)
To: 38603
[-- Attachment #1: [WIP Mercury 2/2] gnu: Add mercury. --]
[-- Type: text/x-patch, Size: 7122 bytes --]
From a6abc5a2d05cba65c652f5834e768ee8cecde5f8 Mon Sep 17 00:00:00 2001
From: Brett Gilio <brettg@posteo.net>
Date: Fri, 13 Dec 2019 21:26:15 -0600
Subject: [WIP Mercury 2/2] gnu: Add mercury.
* gnu/packages/mercury.scm (mercury): New variable.
---
gnu/packages/mercury.scm | 142 +++++++++++++++++++++++++++++++++++++++
1 file changed, 142 insertions(+)
create mode 100644 gnu/packages/mercury.scm
diff --git a/gnu/packages/mercury.scm b/gnu/packages/mercury.scm
new file mode 100644
index 0000000000..4db0386852
--- /dev/null
+++ b/gnu/packages/mercury.scm
@@ -0,0 +1,142 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+;; TODO: Not all of these modules are needed.
+(define-module (gnu packages mercury)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
+ #:use-module (gnu packages bdw-gc)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages commencement)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages ninja)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages tex)
+ #:use-module (gnu packages libunwind)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages shells)
+ #:use-module (gnu packages bison)
+ #:use-module (srfi srfi-1)
+ #:use-module (ice-9 match)) ; match-lambda
+
+(define-public mercury
+ (package
+ (name "mercury")
+ (version "14.01.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://dl.mercurylang.org/release/mercury-srcdist-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "12z8qi3da8q50mcsjsy5bnr4ia6ny5lkxvzy01a3c9blgbgcpxwq"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:imported-modules ((ice-9 match)
+ ,@%gnu-build-system-modules)
+ #:modules ((ice-9 match)
+ (guix build gnu-build-system)
+ (guix build utils)
+ ,@%gnu-build-system-modules)
+ #:tests? #f ; TODO: tests are cryptic. Figure it out later.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda _ (substitute*
+ (list "Makefile"
+ "Mmakefile"
+ "scripts/mercury_update_interface.in"
+ "scripts/mercury_config.in"
+ "scripts/mmake.in"
+ "scripts/mmake.sh"
+ "scripts/Mmake.vars.in"
+ "scripts/mdb.in"
+ "scripts/rs6000_hack"
+ "scripts/fullarch"
+ "scripts/mmc.in"
+ "scripts/canonical_grade"
+ "scripts/mprof.in"
+ "scripts/gud.el"
+ "scripts/ml.in"
+ "scripts/canonical_grade.in"
+ "scripts/mdprof.in"
+ "scripts/vpath_find"
+ "scripts/mkfifo_using_mknod.in"
+ "scripts/prepare_install_dir.in"
+ "scripts/ml.sh"
+ "scripts/mprof_merge_runs"
+ "scripts/mtc"
+ "scripts/mgnuc.in"
+ "scripts/c2init.in"
+ "bindist/bindist.Makefile")
+ (("/bin/sh") (which "sh"))
+ (("/bin/pwd") (which "pwd"))
+ (("/bin/rm") (which "rm")))))
+ (add-after 'unpack 'replace-boehm
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((boehm (assoc-ref inputs "libgc")))
+ (map (match-lambda
+ ((src orig-name new-name)
+ (with-directory-excursion "."
+ (apply unpack (list #:source src))
+ (apply patch-source-shebangs (list #:source src)))
+ (delete-file-recursively new-name)
+ (invoke "mv" orig-name new-name)))
+ `((,boehm "source" "libgc")))))))))
+ (native-inputs
+ `(("texinfo" ,texinfo)
+ ("flex" ,flex)
+ ("tcsh", tcsh)
+ ("bison" ,bison)
+ ("readline" ,readline)
+ ("libgc" ,libgc)))
+ (synopsis "A pure logic programming language")
+ (description "Mercury is a logic/functional programming language which
+combines the clarity and expressiveness of declarative programming with advanced
+static analysis and error detection features. Its highly optimized execution
+algorithm delivers efficiency far in excess of existing logic programming
+systems, and close to conventional programming systems. Mercury addresses
+the problems of large-scale program development, allowing modularity,
+separate compilation, and numerous optimization/time trade-offs.")
+ (home-page "https://mercurylang.org")
+ (license license:gpl2)))
+
+(define-public mercury-minimal
+ (package (inherit mercury)
+ (name "mercury-minimal")
+ (build-system gnu-build-system)
+ (arguments
+ (substitute-keyword-arguments (package-arguments mercury)
+ ((#:configure-flags flags ''())
+ `(list "--enable-minimal-install"))))
+ (inputs
+ `(("gcc-toolchain" ,gcc-toolchain)))
+ (synopsis "A pure logic programming language (used only for
+compiling packages dependent on base Mercury)")))
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#38603] [WIP v2 0/1] Add mercury.
2019-12-14 3:29 [bug#38603] [WIP Mercury 0/2] Add Mercury Brett Gilio
2019-12-14 3:31 ` [bug#38603] [WIP Mercury 1/2] gnu: Register mercury module Brett Gilio
2019-12-14 3:31 ` [bug#38603] [WIP Mercury 2/2] gnu: Add mercury Brett Gilio
@ 2020-01-06 23:57 ` Brett Gilio
2020-01-06 23:57 ` [bug#38603] [WIP v2 1/1] gnu: " Brett Gilio
3 siblings, 0 replies; 6+ messages in thread
From: Brett Gilio @ 2020-01-06 23:57 UTC (permalink / raw)
To: 38603
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: [WIP v2 0/1] Add mercury. --]
[-- Type: text/x-patch, Size: 1175 bytes --]
From 1a78e1b20f015f2f7297eb17becb7b740a991fd5 Mon Sep 17 00:00:00 2001
From: Brett Gilio <brettg@gnu.org>
Date: Mon, 6 Jan 2020 17:52:27 -0600
Subject: [WIP v2 0/1] Add mercury.
To: guix-patches@gnu.org
This is a revision of the first patch series. The first patch series
is effectively without use as this method contains everything into a
single patch.
This package still requires some work on getting the Boehm `libgc` package
replacement to work just right (or maybe just do a recursive checkout of the
submodule from Git? Though that seems less Guixy), as well as getting the grades
just right (should Java be added in the default package, or split out into a
mercury-grade-java package with some load_path magic?), and getting the test
cases to work.
Mercury is truly a giant and monolithic project, so I would not mind some help!
If you aren't familiar with Mercury, checkout http://mercurylang.org/.
Thanks!
Brett Gilio (1):
gnu: Add mercury.
gnu/local.mk | 3 +-
gnu/packages/mercury.scm | 157 +++++++++++++++++++++++++++++++++++++++
2 files changed, 159 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/mercury.scm
--
2.24.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#38603] [WIP v2 1/1] gnu: Add mercury.
2019-12-14 3:29 [bug#38603] [WIP Mercury 0/2] Add Mercury Brett Gilio
` (2 preceding siblings ...)
2020-01-06 23:57 ` [bug#38603] [WIP v2 0/1] " Brett Gilio
@ 2020-01-06 23:57 ` Brett Gilio
2022-04-12 10:30 ` bug#38603: [WIP Mercury 0/2] Add Mercury zimoun
3 siblings, 1 reply; 6+ messages in thread
From: Brett Gilio @ 2020-01-06 23:57 UTC (permalink / raw)
To: 38603
[-- Attachment #1: [WIP v2 1/1] gnu: Add mercury. --]
[-- Type: text/x-patch, Size: 8445 bytes --]
From 1a78e1b20f015f2f7297eb17becb7b740a991fd5 Mon Sep 17 00:00:00 2001
From: Brett Gilio <brettg@gnu.org>
Date: Mon, 6 Jan 2020 17:51:29 -0600
Subject: [WIP v2 1/1] gnu: Add mercury.
To: guix-patches@gnu.org
* gnu/local.mk (GNU_SYSTEM_MODULES): Add mercury.scm
* gnu/packages/mercury.scm: New file.
---
gnu/local.mk | 3 +-
gnu/packages/mercury.scm | 157 +++++++++++++++++++++++++++++++++++++++
2 files changed, 159 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/mercury.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index b7fa503257..e488424056 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -24,7 +24,7 @@
# Copyright © 2019 John Soo <jsoo1@asu.edu>
# Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
# Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
-# Copyright © 2019 Brett Gilio <brettg@gnu.org>
+# Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
# Copyright © 2019 Amin Bandali <bandali@gnu.org>
#
# This file is part of GNU Guix.
@@ -340,6 +340,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/mc.scm \
%D%/packages/mcrypt.scm \
%D%/packages/medical.scm \
+ %D%/packages/mercury.scm \
%D%/packages/mes.scm \
%D%/packages/messaging.scm \
%D%/packages/mingw.scm \
diff --git a/gnu/packages/mercury.scm b/gnu/packages/mercury.scm
new file mode 100644
index 0000000000..f3c0bc9fa7
--- /dev/null
+++ b/gnu/packages/mercury.scm
@@ -0,0 +1,157 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Brett Gilio <brettg@posteo.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mercury)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages bdw-gc)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages shells)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (ice-9 match)) ; match-lambda
+
+;; NOTE: Package `mercury` requires a specific revision and fork of
+;; upstream Boehm `libgc`. We use this method to obtain that fork
+;; and patch it into `mercury` manually.
+(define (bdwgc-mercury commit-bdwgc hash)
+ (let ((commit commit-bdwgc))
+ (package (inherit libgc)
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Mercury-Language/bdwgc.git")
+ (commit commit)))
+ (sha256 (base32 hash))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ,@(package-native-inputs libgc))))))
+
+(define-public mercury
+ (package
+ (name "mercury")
+ (version "14.01.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://dl.mercurylang.org/release/mercury-srcdist-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "12z8qi3da8q50mcsjsy5bnr4ia6ny5lkxvzy01a3c9blgbgcpxwq"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 match))
+ #:tests? #f ; TODO: tests are cryptic. Figure it out later.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda _
+ (substitute*
+ (list "Makefile"
+ "Mmakefile"
+ "scripts/mercury_update_interface.in"
+ "scripts/mercury_config.in"
+ "scripts/mmake.in"
+ "scripts/mmake.sh"
+ "scripts/Mmake.vars.in"
+ "scripts/mdb.in"
+ "scripts/rs6000_hack"
+ "scripts/fullarch"
+ "scripts/mmc.in"
+ "scripts/canonical_grade"
+ "scripts/mprof.in"
+ "scripts/gud.el"
+ "scripts/ml.in"
+ "scripts/canonical_grade.in"
+ "scripts/mdprof.in"
+ "scripts/vpath_find"
+ "scripts/mkfifo_using_mknod.in"
+ "scripts/prepare_install_dir.in"
+ "scripts/ml.sh"
+ "scripts/mprof_merge_runs"
+ "scripts/mtc"
+ "scripts/mgnuc.in"
+ "scripts/c2init.in"
+ "bindist/bindist.Makefile")
+ (("/bin/sh") (which "sh"))
+ (("/bin/pwd") (which "pwd"))
+ (("/bin/rm") (which "rm")))
+ #t))
+ (add-after 'unpack 'replace-boehm-gc
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (libgc (assoc-ref inputs "libgc"))
+ (unpack (assoc-ref %standard-phases 'unpack))
+ (patch-source-shebangs
+ (assoc-ref %standard-phases 'patch-source-shebangs)))
+ (map (match-lambda
+ ((src orig-name new-name)
+ (with-directory-excursion "."
+ (apply unpack (list #:source src))
+ (apply patch-source-shebangs (list #:source src)))
+ (delete-file-recursively new-name)
+ (invoke "mv" orig-name new-name)))
+ `((,libgc "source/include/gc" "boehm_gc"))))
+ #t)))))
+ (native-inputs
+ `(("texinfo" ,texinfo)
+ ("flex" ,flex)
+ ("tcsh", tcsh)
+ ("bison" ,bison)
+ ("readline" ,readline)
+ ("libatomic-ops" ,libatomic-ops)
+ ("libgc" ,(bdwgc-mercury
+ "5287fbab8a6f2284a12beeb9e3ba592301436b98"
+ "1crlw7zhjik39qdfqp5w317dskxdrklfw48g4jzrjzry12hkmq9y"))
+ ("pkg-config" ,pkg-config)))
+ (synopsis "A pure logic programming language")
+ (description "Mercury is a logic/functional programming language which
+combines the clarity and expressiveness of declarative programming with advanced
+static analysis and error detection features. Its highly optimized execution
+algorithm delivers efficiency far in excess of existing logic programming
+systems, and close to conventional programming systems. Mercury addresses
+the problems of large-scale program development, allowing modularity,
+separate compilation, and numerous optimization/time trade-offs.")
+ (home-page "https://mercurylang.org")
+ (license license:gpl2)))
+
+(define-public mercury-minimal
+ (package (inherit mercury)
+ (name "mercury-minimal")
+ (build-system gnu-build-system)
+ (arguments
+ (substitute-keyword-arguments (package-arguments mercury)
+ ((#:configure-flags flags ''())
+ `(list "--enable-minimal-install"))))
+ (inputs
+ `(("gcc-toolchain" ,gcc-toolchain)))
+ (synopsis "A pure logic programming language (used only for
+compiling packages dependent on base Mercury)")))
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* bug#38603: [WIP Mercury 0/2] Add Mercury.
2020-01-06 23:57 ` [bug#38603] [WIP v2 1/1] gnu: " Brett Gilio
@ 2022-04-12 10:30 ` zimoun
0 siblings, 0 replies; 6+ messages in thread
From: zimoun @ 2022-04-12 10:30 UTC (permalink / raw)
To: Brett Gilio; +Cc: 38603-done
Hi,
On Mon, 06 Jan 2020 at 17:57, Brett Gilio <brettg@gnu.org> wrote:
[...]
> +(define-public mercury
> + (package
> + (name "mercury")
> + (version "14.01.1")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append
> + "https://dl.mercurylang.org/release/mercury-srcdist-"
> + version ".tar.gz"))
--8<---------------cut here---------------start------------->8---
8b928a3931cafddb291152bc259b634ab3ab441b
Author: Brett Gilio <brettg@gnu.org>
AuthorDate: Wed Nov 25 16:40:29 2020 -0600
Commit: Brett Gilio <brettg@gnu.org>
CommitDate: Wed Nov 25 16:40:29 2020 -0600
gnu: mercury: Update to 20.06.1.
* gnu/packages/mercury.scm (mercury): Update to 20.06.1.
--8<---------------cut here---------------end--------------->8---
Closing!
Cheers,
simon
^ permalink raw reply [flat|nested] 6+ messages in thread