Subject: [bug#64891] [PATCH] gnu: Add hare

From: Ekaitz Zarraga <[email-masked]>
Date: Tue, 08 Aug 2023 10:09:12 +0000

Hi,

I applied most of the proposed changes to the hare package, and I split the commit in two.

I talked with the devs and we need to propagate at least those variables because the config.mk file is not persisting the values. We'll patch that upstream later.

Best,
Ekaitz

From 110a6af0295bbfc148577ce655428ffebbcb9327 Mon Sep 17 00:00:00 2001
Message-ID: <[email-masked]>
From: Ekaitz Zarraga <[email-masked]>
Date: Sat, 29 Jul 2023 13:09:25 +0200
Subject: [PATCH 1/2] gnu: Add harec

* gnu/packages/hare.scm (harec): New variable.
* gnu/local.mk: Add hare.scm
---
 gnu/local.mk          |  2 ++
 gnu/packages/hare.scm | 67 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100644 gnu/packages/hare.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 06a376a99a..4d1645c595 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -59,6 +59,7 @@
 # Copyright © 2023 Zheng Junjie <[email-masked]>
 # Copyright © 2023 Ivana Drazovic <[email-masked]>
 # Copyright © 2023 Andy Tai <[email-masked]>
+# Copyright © 2023 Ekaitz Zarraga <[email-masked]>
 #
 # This file is part of GNU Guix.
 #
@@ -314,6 +315,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/gv.scm				\
   %D%/packages/gxmessage.scm			\
   %D%/packages/hardware.scm			\
+  %D%/packages/hare.scm				\
   %D%/packages/haskell.scm			\
   %D%/packages/haskell-apps.scm			\
   %D%/packages/haskell-check.scm		\
diff --git a/gnu/packages/hare.scm b/gnu/packages/hare.scm
new file mode 100644
index 0000000000..da5820510a
--- /dev/null
+++ b/gnu/packages/hare.scm
@@ -0,0 +1,67 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Ekaitz Zarraga <[email-masked]>
+;;;
+;;; 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 hare)
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:use-module (guix utils)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages c)
+  #:use-module (gnu packages man))
+
+(define-public harec
+  (let ((revision "1")
+        (commit "f5da14c17f734f0bba5a741997b79d3e65a87712"))
+    (package
+      (name "harec")
+      (version (git-version "0.0.1" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://git.sr.ht/~sircmpwn/harec")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32 "1xdf9pdwy5dvxhgvw6hqkpnjl8z76xc413vsnbbqfvwmfing53yn"))))
+      (build-system gnu-build-system)
+      (arguments
+        (list
+          #:phases
+          #~(modify-phases %standard-phases
+              (add-before 'configure 'setenv
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (setenv "AR" #$(ar-for-target))
+                  (setenv "LD" #$(ld-for-target))
+                  (setenv "CC" #$(cc-for-target))))
+              (replace 'configure
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (invoke "./configure"
+                    (string-append "--prefix=" #$output)))))))
+      (native-inputs (list scdoc))
+      (inputs (list qbe))
+      (synopsis "Bootstrapping compiler for Hare language")
+      (description "Hare is a systems programming language designed to be
+simple, stable, and robust.  It uses a static type system, manual memory
+management, and a minimal runtime.  This package provides only the compiler.
+If you want to code in Hare, @code{hare} package is recommended.")
+      (home-page "https://git.sr.ht/~sircmpwn/harec")
+      (license license:gpl3))))

base-commit: 917a299831361f253ea664f009176b4bbe06900a
-- 
2.41.0

From f247e52e2190fbb319cf50184a22f605a043dede Mon Sep 17 00:00:00 2001
Message-ID: <[email-masked]>
In-Reply-To: <[email-masked]>
References: <[email-masked]>
From: Ekaitz Zarraga <[email-masked]>
Date: Tue, 8 Aug 2023 01:42:57 +0200
Subject: [PATCH 2/2] gnu: Add hare

* gnu/packages/hare.scm (hare): New variable
---
 gnu/packages/hare.scm | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/hare.scm b/gnu/packages/hare.scm
index da5820510a..a73126096b 100644
--- a/gnu/packages/hare.scm
+++ b/gnu/packages/hare.scm
@@ -65,3 +65,44 @@ (define-public harec
 If you want to code in Hare, @code{hare} package is recommended.")
       (home-page "https://git.sr.ht/~sircmpwn/harec")
       (license license:gpl3))))
+
+
+(define-public hare
+  (let ((revision "1")
+        (commit "0919412be13703235c7deabdb6216254e4a39432"))
+    (package
+      (name "hare")
+      (version (git-version "0.0.1" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://git.sr.ht/~sircmpwn/hare")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32 "042dxdcnk9fwgcfkd1iac8q944qsq6qb1c8v1s12ixybc3nmnnva"))))
+      (native-inputs (list scdoc))
+      (propagated-inputs (list qbe harec))
+      (build-system gnu-build-system)
+      (arguments
+        (list
+          #:make-flags
+          #~(list "HARECACHE=./cache"
+                  (string-append "PREFIX=" #$output))
+          #:phases
+          #~(modify-phases %standard-phases
+              (replace 'configure
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (rename-file "config.example.mk" "config.mk"))))))
+      (native-search-paths
+        (list (search-path-specification
+                (variable "HAREPATH")
+                (files (list "src/hare/stdlib" "src/hare/third-party")))))
+      (synopsis "Systems programming language")
+      (description "Hare is a systems programming language designed to be
+simple, stable, and robust.  It uses a static type system, manual memory
+management, and a minimal runtime.  This package provides the compiler, the
+compiler driver and the standard library.")
+      (home-page "https://git.sr.ht/~sircmpwn/hare")
+      (license license:gpl3))))
-- 
2.41.0