From 0209ee0b55069705908770dccb3a289aac4b2ad8 Mon Sep 17 00:00:00 2001 From: jgart Date: Thu, 10 Nov 2022 23:55:07 -0600 Subject: gnu: Add carp. * gnu/packages/lisp.scm (carp): New variable. Co-authored-by: ( Signed-off-by: Raghav Gururajan --- gnu/packages/lisp.scm | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'gnu/packages/lisp.scm') diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index d0f24163cb..80018f8e1a 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2021 Charles Jackson ;;; Copyright © 2022 Joeke de Graaf ;;; Copyright © 2021, 2022 jgart +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,6 +56,7 @@ (define-module (gnu packages lisp) #:use-module (guix build-system gnu) #:use-module (guix build-system ant) #:use-module (guix build-system asdf) + #:use-module (guix build-system haskell) #:use-module (guix build-system trivial) #:use-module (gnu packages admin) #:use-module (gnu packages base) @@ -71,10 +73,14 @@ (define-module (gnu packages lisp) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages groff) + #:use-module (gnu packages haskell-check) + #:use-module (gnu packages haskell-web) + #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages libffcall) #:use-module (gnu packages libffi) #:use-module (gnu packages libsigsegv) #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) #:use-module (gnu packages m4) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) @@ -1257,6 +1263,72 @@ (define-public janet assembler, PEG) is less than 1MB.") (license license:expat))) +(define-public carp + (package + (name "carp") + (version "0.5.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/carp-lang/Carp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "14jdnv0ljqvpr9ych1plfw7hp5q57a8j1bv8h3v345x06z783d07")))) + (build-system haskell-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + ;; Carp looks inside the sources checkout to know where to + ;; find its core libraries and other files. + ;; Carp emits C code and tries to compile it with an external + ;; C compiler. On Linux it defaults to Clang. + (add-after 'install 'wrap-programs + (lambda* (#:key inputs #:allow-other-keys) + (define (wrap-carp-program program) + (wrap-program (string-append + #$output "/bin/" program) + `("CARP_DIR" prefix + (#$(package-source this-package))) + `("PATH" prefix + ,(list (dirname + (search-input-file inputs "bin/clang")) + (dirname + (search-input-file inputs "bin/ld")))) + `("C_INCLUDE_PATH" prefix + ,(list (dirname + (search-input-directory + inputs "include/linux")) + (dirname + (search-input-file + inputs "include/stdlib.h")))))) + + (for-each wrap-carp-program + (list "carp" + "carp-header-parse"))))))) + (inputs + (list bash-minimal + clang + ghc-blaze-markup + ghc-blaze-html + ghc-split + ghc-ansi-terminal + ghc-cmark + ghc-edit-distance + ghc-hashable + ghc-open-browser + ghc-optparse-applicative)) + (native-inputs + (list ghc-hunit)) + (home-page "https://carp-lang.org/") + (synopsis "Statically typed Lisp without a garbage collector") + (description + "@code{carp} is a Lisp-like programming language that compiles to +C. It features inferred static typing, macros, automatic memory +management without a garbage collector, a REPL, and straightforward +integration with code written in C.") + (license license:asl2.0))) (define-public lisp-repl-core-dumper (package (name "lisp-repl-core-dumper") -- cgit v1.2.3