diff mbox series

[bug#43183] gnu: Add loko-scheme.

Message ID 20200903150243.27796-1-mjbecze@riseup.net
State Accepted
Headers show
Series [bug#43183] gnu: Add loko-scheme. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

Martin Becze Sept. 3, 2020, 3:02 p.m. UTC
* gnu/packages/loko.scm (loko-scheme): New variable.
---
 gnu/local.mk          |   2 +
 gnu/packages/loko.scm | 124 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 126 insertions(+)
 create mode 100644 gnu/packages/loko.scm

Comments

Mathieu Othacehe Sept. 4, 2020, 6:43 a.m. UTC | #1
Hello Martin,

Thanks for this patch.

> +(define pfds
> +  (let ((name "pfds")
> +	(version "0.3"))
> +      (origin
> +	(method git-fetch)

There's a space/tab indentation mix here and in the other origin
declarations.

> +	(uri (git-reference
> +	      (url "https://github.com/ijp/pfds.git")
> +	      (commit (string-append "v" version))))

This could be useful not only for Loko but also for other scheme
implementations. Thus, it would be nice to define it as a proper package
rather than a simple origin.

> +              (sha256 (base32 "019jlh3lywy912cfz689c9fxgf4bi5700i9k04g7sl5w5gchj36m"))

This is usually wrapped to stay under the 78 columns limit.

> +              (file-name (git-file-name name version))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:tests? #f

You should add a comment explaining why tests are disabled.

Thanks,

Mathieu
Martin Becze Sept. 4, 2020, 6:49 a.m. UTC | #2
That is very true. But I'm not sure how to make a generic scheme
package. Guile, Chez and loko all have different directories that they
look for libraries in. Since Guile is the most popular wdyt about just
having those as guile packages to start with?

On 9/4/20 1:43 AM, Mathieu Othacehe wrote:
> This could be useful not only for Loko but also for other scheme
> implementations. Thus, it would be nice to define it as a proper package
> rather than a simple origin.
Mathieu Othacehe Sept. 4, 2020, 7:16 a.m. UTC | #3
> That is very true. But I'm not sure how to make a generic scheme
> package. Guile, Chez and loko all have different directories that they
> look for libraries in. Since Guile is the most popular wdyt about just
> having those as guile packages to start with?

Sure, this would be a good start.

Thanks,

Mathieu
Ricardo Wurmus Sept. 4, 2020, 7:33 a.m. UTC | #4
Mathieu Othacehe <othacehe@gnu.org> writes:

>> That is very true. But I'm not sure how to make a generic scheme
>> package. Guile, Chez and loko all have different directories that they
>> look for libraries in. Since Guile is the most popular wdyt about just
>> having those as guile packages to start with?
>
> Sure, this would be a good start.

We already have a guile-pfds package in (gnu packages guile-xyz).
Martin Becze Sept. 4, 2020, 8:25 p.m. UTC | #5
Hi,
This packages loko-scheme and the scheme libraries need to build it.

Martin Becze (5):
  gnu: Add loko-scheme.
  gnu: guile-pfds: When using Guile 3, compile as a r6rs library.
  gnu: Add guile-struct-pack.
  gnu: Add guile-machine-code.
  gnu: Add guile-laesare.

 gnu/local.mk               |   2 +
 gnu/packages/guile-xyz.scm | 161 ++++++++++++++++++++++++++++++++++---
 gnu/packages/loko.scm      |  84 +++++++++++++++++++
 3 files changed, 235 insertions(+), 12 deletions(-)
 create mode 100644 gnu/packages/loko.scm
Martin Becze Sept. 8, 2020, 3:59 p.m. UTC | #6
This add loko-scheme.

Martin Becze (4):
  gnu: Add guile-struct-pack.
  gnu: Add guile-machine-code.
  gnu: Add guile-laesare.
  gnu: Add loko-scheme.

 gnu/local.mk               |   2 +
 gnu/packages/guile-xyz.scm | 138 +++++++++++++++++++++++++++++++++++++
 gnu/packages/loko.scm      |  85 +++++++++++++++++++++++
 3 files changed, 225 insertions(+)
 create mode 100644 gnu/packages/loko.scm
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 6e47d74e0a..fef66aea19 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -36,6 +36,7 @@ 
 # Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
 # Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 # Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
+# Copyright © 2020 Martin Becze <mjbecze@riseup.net>
 #
 # This file is part of GNU Guix.
 #
@@ -342,6 +343,7 @@  GNU_SYSTEM_MODULES =				\
   %D%/packages/lout.scm				\
   %D%/packages/logging.scm			\
   %D%/packages/logo.scm				\
+  %D%/packages/loko.scm				\
   %D%/packages/lolcode.scm                      \
   %D%/packages/lsof.scm				\
   %D%/packages/lua.scm				\
diff --git a/gnu/packages/loko.scm b/gnu/packages/loko.scm
new file mode 100644
index 0000000000..4830b845c9
--- /dev/null
+++ b/gnu/packages/loko.scm
@@ -0,0 +1,124 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Martin Becze <mjbecze@riseup.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 loko)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages package-management)
+  #:use-module (gnu packages chez))
+
+(define pfds
+  (let ((name "pfds")
+	(version "0.3"))
+      (origin
+	(method git-fetch)
+	(uri (git-reference
+	      (url "https://github.com/ijp/pfds.git")
+	      (commit (string-append "v" version))))
+	(file-name (git-file-name name version))
+	(sha256
+	 (base32 "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh")))))
+
+(define machine-code
+  (let ((name "machine-code")
+	(version "2.1.0"))
+      (origin
+	(method git-fetch)
+	(uri (git-reference
+	      (url "https://github.com/weinholt/machine-code.git")
+	      (commit (string-append "v" version))))
+	(file-name (git-file-name name version))
+	(sha256
+	 (base32 "0wzj3caj2jypzyjqfkfqkvr3kkbjabsnhldv9kvnx9w9qnria5yd")))))
+
+(define struct-pack
+  (let ((name "struct-pack")
+	(version "1.1.1"))
+      (origin
+	(method git-fetch)
+	(uri (git-reference
+	      (url "https://github.com/weinholt/struct-pack.git")
+	      (commit (string-append "v" version))))
+	(file-name (git-file-name name version))
+	(sha256
+	 (base32 "0hd72m821pahjphzyjn26i55542v8makr55xzjll2cycja4wsbc1")))))
+
+(define laesare
+  (let ((name "laesare")
+	(version "1.0.0"))
+      (origin
+	(method git-fetch)
+	(uri (git-reference
+	      (url "https://github.com/weinholt/laesare.git")
+	      (commit (string-append "v" version))))
+	(file-name (git-file-name name version))
+	(sha256
+	 (base32 "15q619gzw717r8r1ql23zfdaibpnp9qqs96032vdc3rj74msxc92")))))
+
+(define-public loko-scheme
+  (package
+    (name "loko-scheme")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/weinholt/loko.git")
+                    (commit (string-append "v" version))))
+              (sha256 (base32 "019jlh3lywy912cfz689c9fxgf4bi5700i9k04g7sl5w5gchj36m"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:strip-binaries? #f
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list
+          (string-append "PREFIX=" out)
+          (string-append "GDB_AUTOLOAD_PATH=" out "/share/gdb/auto-load")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'akku-fixes
+           (lambda* (#:key inputs #:allow-other-keys)
+             (delete-file "Akku.lock")
+             (substitute* "Akku.manifest"
+               (("\\(depends.*") "(depends)"))
+             (invoke "akku" "install")
+             (symlink (assoc-ref inputs "struct-pack") "./.akku/lib/struct")
+             (symlink (assoc-ref inputs "laesare") "./.akku/lib/laesare")
+             (symlink (assoc-ref inputs "machine-code") "./.akku/lib/machine-code")
+             (symlink (assoc-ref inputs "pfds") "./.akku/lib/pfds")
+             (substitute* ".akku/env"
+               (("/bin/sh") (which "sh")))
+             #t)))))
+    (native-inputs
+     `(("akku" ,akku)
+       ("chez-scheme" ,chez-scheme)
+       ("struct-pack" ,struct-pack)
+       ("laesare" ,laesare)
+       ("pfds" ,pfds)
+       ("machine-code" ,machine-code)))
+    (home-page "https://scheme.fail")
+    (synopsis "Implementation of the algorithmic language Scheme")
+    (description
+     "Loko Scheme is intended to be a platform for application and operating system
+development.  It is written purely in Scheme and some assembler (i.e. no C code at
+the bottom).  Both the R6RS and the R7RS standards are supported.")
+    (license license:agpl3+)))