GNU bug report logs - #64891
[PATCH] gnu: Add hare

Previous Next

Package: guix-patches;

Reported by: Ekaitz Zarraga <ekaitz <at> elenq.tech>

Date: Thu, 27 Jul 2023 08:37:01 UTC

Severity: normal

Tags: patch

Done: Ekaitz Zarraga <ekaitz <at> elenq.tech>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 64891 in the body.
You can then email your comments to 64891 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Thu, 27 Jul 2023 08:37:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ekaitz Zarraga <ekaitz <at> elenq.tech>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Thu, 27 Jul 2023 08:37:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ekaitz Zarraga <ekaitz <at> elenq.tech>
To: "guix-patches <at> gnu.org" <guix-patches <at> gnu.org>
Subject: [PATCH] gnu: Add hare
Date: Thu, 27 Jul 2023 08:35:45 +0000
From 308b67848e93a25f627dd64e024e9a501979a157 Mon Sep 17 00:00:00 2001
Message-Id: <308b67848e93a25f627dd64e024e9a501979a157.1689368739.git.ekaitz <at> elenq.tech>
From: Ekaitz Zarraga <ekaitz <at> elenq.tech>
Date: Fri, 14 Jul 2023 22:52:59 +0200
Subject: [PATCH] gnu: Add hare

* gnu/packages/hare.scm (hare, harec): New variable.
* gnu/local.mk: Add hare.scm
---
 gnu/local.mk          |   2 +
 gnu/packages/hare.scm | 104 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 106 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 <873216071 <at> qq.com>
 # Copyright © 2023 Ivana Drazovic <iv.dra <at> hotmail.com>
 # Copyright © 2023 Andy Tai <atai <at> atai.org>
+# Copyright © 2023 Ekaitz Zarraga <ekaitz <at> elenq.tech>
 #
 # 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..0c65463e92
--- /dev/null
+++ b/gnu/packages/hare.scm
@@ -0,0 +1,104 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Ekaitz Zarraga <ekaitz <at> elenq.tech>
+;;;
+;;; 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 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
+        `(#:phases
+          (modify-phases %standard-phases
+            (add-before 'configure 'setenv
+              (lambda _
+                (setenv "CC" ,(cc-for-target))))
+            (add-after 'configure 'configure-better
+              (lambda* (#:key outputs #:allow-other-keys)
+                (invoke "./configure"
+                        (string-append "--prefix=" (assoc-ref outputs "out")))))
+            (delete 'configure))))
+      (inputs (list qbe scdoc))
+      (synopsis "Bootstrapping compiler for Hare")
+      (description "Hare is a systems programming language designed to be
+simple, stable, and robust.  Hare uses a static type system, manual memory
+management, and a minimal runtime.  It is well-suited to writing operating
+systems, system tools, compilers, networking software, and other low-level,
+high performance tasks.")
+      (home-page "https://git.sr.ht/~sircmpwn/harec")
+      (license license:gpl3))))
+
+
+(define-public hare
+  (let ((revision "1")
+        (commit  "112b75eb56d98c442094966fe59cbf3cd5feb909"))
+    (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 version)))
+          (file-name (git-file-name name version))
+          (sha256
+            (base32 "0ilnz56757k4v0ggdc2v4xsjw0c944y8r289nfmqhw4hwzsrvb4j"))))
+      (inputs (list scdoc))
+      (propagated-inputs (list qbe harec))
+      (build-system gnu-build-system)
+      (arguments
+        `(#:make-flags `("HARECACHE=./cache"
+                         ,(string-append "PREFIX=" (assoc-ref %outputs "out")))
+          #:phases
+          (modify-phases %standard-phases
+            (add-before 'configure 'configure-make
+              (lambda _
+                ;; NOTE: We are not really using this because overwriting it via
+                ;; `make-flags` is way easier with our tooling.
+                ;; Maybe we should?
+                (copy-file "config.example.mk" "config.mk")))
+            (delete 'configure))))
+      (synopsis "Hare build driver")
+      (description "Hare is a systems programming language designed to be
+simple, stable, and robust.  Hare uses a static type system, manual memory
+management, and a minimal runtime.  It is well-suited to writing operating
+systems, system tools, compilers, networking software, and other low-level,
+high performance tasks.")
+      (home-page "https://git.sr.ht/~sircmpwn/hare")
+      (license license:gpl3))))

base-commit: 917a299831361f253ea664f009176b4bbe06900a
-- 
2.39.2






Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Fri, 28 Jul 2023 14:23:01 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: "(" <paren <at> disroot.org>
To: Ekaitz Zarraga <ekaitz <at> elenq.tech>
Cc: 64891 <at> debbugs.gnu.org, guix-patches <at> gnu.org
Subject: Re: [bug#64891] [PATCH] gnu: Add hare
Date: Fri, 28 Jul 2023 14:14:46 +0100
Hi!

Ekaitz Zarraga <ekaitz <at> elenq.tech> writes:
> * gnu/packages/hare.scm (hare, harec): New variable.
> * gnu/local.mk: Add hare.scm

:)

> +          (sha256
> +            (base32 "1xdf9pdwy5dvxhgvw6hqkpnjl8z76xc413vsnbbqfvwmfing53yn"))))
              ^
Odd spacing here.

> +      (build-system gnu-build-system)
> +      (arguments
> +        `(#:phases

Please use gexps and LIST for any new packages.

> +          (modify-phases %standard-phases
> +            (add-before 'configure 'setenv
> +              (lambda _
> +                (setenv "CC" ,(cc-for-target))))

Hmm.  In my version of the package[1], I also have:

  (setenv "AR" #$(ar-for-target))
  (setenv "LD" #$(ld-for-target))

Not sure why I added those, though.  Maybe try cross-compiling both
packages?  Perhaps these lines are needed for that...

> +            (add-after 'configure 'configure-better
> +              (lambda* (#:key outputs #:allow-other-keys)
> +                (invoke "./configure"
> +                        (string-append "--prefix=" (assoc-ref outputs "out")))))
> +            (delete 'configure))))

You could just (replace 'configure ...) instead :)

> +simple, stable, and robust.  Hare uses a static type system, manual memory

s/Hare/It/ in this line, maybe?

> +(define-public hare

Each package should have its own commit, remember.

> +  (let ((revision "1")
> +        (commit  "112b75eb56d98c442094966fe59cbf3cd5feb909"))
                   ^
Rouge space.

> +          (sha256
> +            (base32 "0ilnz56757k4v0ggdc2v4xsjw0c944y8r289nfmqhw4hwzsrvb4j"))))
              ^
Another.

> +      (inputs (list scdoc))

scdoc should be a native-input.

> +      (propagated-inputs (list qbe harec))

Might be an idea to make QBE and harec regular inputs, using substitute*
to replace any invocations of their binaries within the code with the
full /gnu/store/.../bin/blah path.  Propagated inputs should be avoided
where possible, even if it makes the package definition a little more
complex.

> +      (arguments
> +        `(#:make-flags `("HARECACHE=./cache"
> +                         ,(string-append "PREFIX=" (assoc-ref %outputs "out")))

Again, please use gexps within LIST, and replace
``(assoc-ref %outputs "out")'' with ``#$output''.

> +          #:phases
> +          (modify-phases %standard-phases
> +            (add-before 'configure 'configure-make
> +              (lambda _
> +                ;; NOTE: We are not really using this because overwriting it via
> +                ;; `make-flags` is way easier with our tooling.
> +                ;; Maybe we should?

No, I think what you do here is fine.

> +                (copy-file "config.example.mk" "config.mk")))

You can use RENAME-FILE rather than COPY-FILE here.

> +            (delete 'configure))))

Again, please just use REPLACE; it's simpler.

> +      (synopsis "Hare build driver")

Maybe "Build driver for the Hare language"?  "Hare build driver" is
almost a bit *too* short, IMO.

> +      (description "Hare is a systems programming language designed to be
> +simple, stable, and robust.  Hare uses a static type system, manual memory
> +management, and a minimal runtime.  It is well-suited to writing operating
> +systems, system tools, compilers, networking software, and other low-level,
> +high performance tasks.")

Perhaps trim the language description down a bit and add a sentence or
two about what *this specific tool* does.

  -- (




Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Fri, 28 Jul 2023 14:23:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Fri, 28 Jul 2023 15:10:01 GMT) Full text and rfc822 format available.

Message #14 received at 64891 <at> debbugs.gnu.org (full text, mbox):

From: "(" <paren <at> disroot.org>
To: Ekaitz Zarraga <ekaitz <at> elenq.tech>
Cc: 64891 <at> debbugs.gnu.org, guix-patches <at> gnu.org
Subject: Re: [bug#64891] [PATCH] gnu: Add hare
Date: Fri, 28 Jul 2023 16:08:15 +0100
Oh, also:

Ekaitz Zarraga <ekaitz <at> elenq.tech> writes:
> +      (arguments
> +        `(#:make-flags `("HARECACHE=./cache"
> +                         ,(string-append "PREFIX=" (assoc-ref %outputs "out")))
> +          #:phases
> +          (modify-phases %standard-phases
> +            (add-before 'configure 'configure-make
> +              (lambda _
> +                ;; NOTE: We are not really using this because overwriting it via
> +                ;; `make-flags` is way easier with our tooling.
> +                ;; Maybe we should?
> +                (copy-file "config.example.mk" "config.mk")))
> +            (delete 'configure))))

You'll probably want to add this just after this point:

  (native-search-paths
   (list (search-path-specification
          (variable "HAREPATH")
          (files (list "src/hare/stdlib" "src/hare/third-party")))))

  -- (




Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Fri, 28 Jul 2023 15:11:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Tue, 08 Aug 2023 10:10:02 GMT) Full text and rfc822 format available.

Message #20 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ekaitz Zarraga <ekaitz <at> elenq.tech>
To: "(" <paren <at> disroot.org>
Cc: 64891 <at> debbugs.gnu.org, guix-patches <at> gnu.org
Subject: Re: [bug#64891] [PATCH] gnu: Add hare
Date: Tue, 08 Aug 2023 10:09:12 +0000
[Message part 1 (text/plain, inline)]
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
[0001-gnu-Add-harec.patch (text/x-patch, attachment)]
[0002-gnu-Add-hare.patch (text/x-patch, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Tue, 08 Aug 2023 10:10:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Tue, 08 Aug 2023 10:49:02 GMT) Full text and rfc822 format available.

Message #26 received at 64891 <at> debbugs.gnu.org (full text, mbox):

From: "(" <paren <at> disroot.org>
To: Ekaitz Zarraga <ekaitz <at> elenq.tech>
Cc: 64891 <at> debbugs.gnu.org, guix-patches <at> gnu.org
Subject: Re: [bug#64891] [PATCH] gnu: Add hare
Date: Tue, 08 Aug 2023 11:43:17 +0100
Ekaitz Zarraga <ekaitz <at> elenq.tech> writes:
> Hi,
>
> I applied most of the proposed changes to the hare package, and I split the commit in two.

Looks good :)  It's easier to read and apply the patches if you send
them with 'git send-email' as described by the manual, though:

  https://guix.gnu.org/manual/devel/en/html_node/Sending-a-Patch-Series.html

> 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.

You can still do something like this, surely?

  (substitute* "foo/bar.ha"
    (("\"harec\") (search-input-file inputs "/bin/harec"))
    (("\"qbe\") (search-input-file inputs "/bin/qbe")))

  -- (




Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Tue, 08 Aug 2023 10:52:02 GMT) Full text and rfc822 format available.

Message #29 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ekaitz Zarraga <ekaitz <at> elenq.tech>
To: "(" <paren <at> disroot.org>
Cc: 64891 <at> debbugs.gnu.org, guix-patches <at> gnu.org
Subject: Re: [bug#64891] [PATCH] gnu: Add hare
Date: Tue, 08 Aug 2023 10:51:27 +0000
Hi,


> Looks good :) It's easier to read and apply the patches if you send
> them with 'git send-email' as described by the manual, though:
> 
> https://guix.gnu.org/manual/devel/en/html_node/Sending-a-Patch-Series.html

My email provider doesn't help with that at all. I'm sorry... I have to do something about it.

> > 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.
> 
> 
> You can still do something like this, surely?
> 
> (substitute* "foo/bar.ha"
> (("\"harec\") (search-input-file inputs "/bin/harec"))
> (("\"qbe\") (search-input-file inputs "/bin/qbe")))
> 
> -- (

Let me take a look into this and give it a try.
Thanks for the help!




Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Tue, 08 Aug 2023 10:52:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#64891; Package guix-patches. (Tue, 08 Aug 2023 10:56:02 GMT) Full text and rfc822 format available.

Reply sent to Ekaitz Zarraga <ekaitz <at> elenq.tech>:
You have taken responsibility. (Thu, 03 Oct 2024 21:59:01 GMT) Full text and rfc822 format available.

Notification sent to Ekaitz Zarraga <ekaitz <at> elenq.tech>:
bug acknowledged by developer. (Thu, 03 Oct 2024 21:59:02 GMT) Full text and rfc822 format available.

Message #40 received at 64891-done <at> debbugs.gnu.org (full text, mbox):

From: Ekaitz Zarraga <ekaitz <at> elenq.tech>
To: 64891-done <at> debbugs.gnu.org
Cc: Ekaitz Zarraga <ekaitz <at> elenq.tech>
Subject: Re: [PATCH] gnu: Add hare
Date: Thu, 3 Oct 2024 23:58:05 +0200
Close in favor of #72926




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 01 Nov 2024 11:24:11 GMT) Full text and rfc822 format available.

This bug report was last modified 132 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.