GNU bug report logs - #77552
[PATCH 0/5] gnu: cbqn: Update to 0.9.0.

Previous Next

Package: guix-patches;

Reported by: Lee Thompson <lee.p.thomp <at> gmail.com>

Date: Sat, 5 Apr 2025 15:06:01 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 77552 AT debbugs.gnu.org.

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#77552; Package guix-patches. (Sat, 05 Apr 2025 15:06:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Lee Thompson <lee.p.thomp <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 05 Apr 2025 15:06:01 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: guix-patches <at> gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH 0/5] gnu: cbqn: Update to 0.9.0.
Date: Sat,  5 Apr 2025 15:59:16 +0100
This series of patches aims to update CBQN to use the latest v0.9.0 release;
also achieved via this patch series is a full source bootstrap of CBQN without
using pre-compiled bytecode or building DBQN.

I have added both (dzaima's fork of) REPLXX and Singeli as pure sources so CBQN 
can be compiled to make use of them.  Some of this builds on work done in the 
(as far as I can see uncompleted) bug#69023, though this patch series makes no 
attempt to add Singeli as a standalone package.  Regardless of Singeli's value 
here I believe REPLXX adds valuable quality of life improvements to using CBQN 
as an interactive interpreter.

`bqn-sources' has been updated to a recent patch.  I couldn't get the updates
to `cbqn' to build properly without updating `bqn-sources', though the CBQN
repo makes no suggestions as to where in history to take `bqn-sources' from.
I first updated to a commit from the same time as CBQN v0.9.0, but why not
update to something more recent?  In testing this produced no obvious bugs or
weird behaviour vs. CBQN v0.9.0-era checkout.

The `cbqn-bootstrap'->`cbqn' interaction has been rearranged to achieve what I
believe to be a reasonable full-source bootstrap without DBQN.  New tests have
been added also.

I've added comments everywhere I feel appropriate; this might be too verbose
for some so I'm happy to remove any.  `cbqn' has been linted and styled and 
builds and works fine as far as I can see.

Lee Thompson (5):
  gnu: bqn-sources: Update to 5880fa15.
  gnu: Add replxx-sources.
  gnu: Add singeli-sources.
  gnu: cbqn-bootstrap: Update to 0.9.0.
  gnu: cbqn: Update to 0.9.0.

 gnu/packages/bqn.scm | 175 ++++++++++++++++++++++++++++---------------
 1 file changed, 113 insertions(+), 62 deletions(-)

-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Sat, 05 Apr 2025 15:08:03 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH 1/5] gnu: bqn-sources: Update to 5880fa15.
Date: Sat,  5 Apr 2025 16:07:29 +0100
* gnu/packages/bqn.scm (bqn-sources): Update to 5880fa15.

Change-Id: Ida46884232955c3090bca72928f0a6d4240ed45c
---
 gnu/packages/bqn.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index fd090ad433..c9f719939c 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -111,7 +111,7 @@ (define bqn-sources
   ;; Aside from dbqn above, the main bqn repository is used by other
   ;; implementations as a "known good" set of sources. CBQN uses dbqn to
   ;; generate an intermediate bytecode for its own compilation.
-    (let ((commit "71ce36141aaacfa714edca2e408ca522a3bc5554"))
+    (let ((commit "5880fa153bb3e3172afc59a711af7e471aeedcd3"))
       (origin
         (method git-fetch)
         (uri (git-reference
@@ -119,7 +119,7 @@ (define bqn-sources
               (commit commit)))
         (file-name (git-file-name "bqn-sources" commit))
         (sha256
-         (base32 "060a3r5m7hynzxj4iz1av2kj5jf8w3j8yswzzx9wkx31rdrsiv2c")))))
+         (base32 "1cap927i0s8ly4mckppw33ahlc5xnp3l2shk1m79wndf362x3r7c")))))
 
 (define cbqn-bootstrap
   (let* ((revision "2")
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Sat, 05 Apr 2025 15:08:03 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH 2/5] gnu: Add replxx-sources.
Date: Sat,  5 Apr 2025 16:07:30 +0100
* gnu/packages/bqn.scm (replxx-sources): New variable.

Change-Id: I6ab4a714ec82165c7df9e5c67c26b43c40a5c625
---
 gnu/packages/bqn.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index c9f719939c..5c69a2740c 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -121,6 +121,20 @@ (define bqn-sources
         (sha256
          (base32 "1cap927i0s8ly4mckppw33ahlc5xnp3l2shk1m79wndf362x3r7c")))))
 
+(define replxx-sources
+  ;; Dzaima's fork of REPLXX can be used to enhance the CBQN REPL experience
+  ;; with syntax highlighting, readline-like history/navigation, and a
+  ;; prefixed keymap similar to BQNPAD.
+  (let ((commit "13f7b60f4f79c2f14f352a76d94860bad0fc7ce9"))
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/dzaima/replxx")
+            (commit commit)))
+      (file-name (git-file-name "replxx" commit))
+      (sha256
+       (base32 "0440xjvdkrbpxqjrd6nsrnaxki0mgyinsb0b1dcshjj3h3jr1yy4")))))
+
 (define cbqn-bootstrap
   (let* ((revision "2")
          (commit "66584ce1491d300746963b8ed17170348b2a03e6"))
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Sat, 05 Apr 2025 15:08:04 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH 3/5] gnu: Add singeli-sources.
Date: Sat,  5 Apr 2025 16:07:31 +0100
* gnu/packages/bqn.scm (singeli-sources): New variable.

Change-Id: I9a96915a23adc786a3c92fd7ad34aaa5ee938ad6
---
 gnu/packages/bqn.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 5c69a2740c..11a5a48b33 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -135,6 +135,19 @@ (define replxx-sources
       (sha256
        (base32 "0440xjvdkrbpxqjrd6nsrnaxki0mgyinsb0b1dcshjj3h3jr1yy4")))))
 
+(define singeli-sources
+  ;; Singeli can be used to more efficiently implement CBQN primitive
+  ;; operations. Used in this way only its source is required.
+  (let ((commit "53f42ce4331176d281fa577408ec5a652bdd9127"))
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/mlochbaum/Singeli")
+            (commit commit)))
+      (file-name (git-file-name "singeli" commit))
+      (sha256
+       (base32 "1dzg4gk74lhy6pwvxzhk4zj1qinc83l7i6x6zpvdajdlz5vqvc1m")))))
+
 (define cbqn-bootstrap
   (let* ((revision "2")
          (commit "66584ce1491d300746963b8ed17170348b2a03e6"))
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Sat, 05 Apr 2025 15:08:04 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH 4/5] gnu: cbqn-bootstrap: Update to 0.9.0.
Date: Sat,  5 Apr 2025 16:07:32 +0100
* gnu/packages/bqn.scm (cbqn-bootstrap): Update to 0.9.0. dbqn dependency
removed. Now runs `make for-bootstrap'.

Change-Id: I54c39dbcad7f485b539cf5fc3156829efec4f8c4
---
 gnu/packages/bqn.scm | 77 ++++++++++++++++++++++----------------------
 1 file changed, 38 insertions(+), 39 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 11a5a48b33..fb153696e6 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -149,47 +149,46 @@ (define singeli-sources
        (base32 "1dzg4gk74lhy6pwvxzhk4zj1qinc83l7i6x6zpvdajdlz5vqvc1m")))))
 
 (define cbqn-bootstrap
-  (let* ((revision "2")
-         (commit "66584ce1491d300746963b8ed17170348b2a03e6"))
-    (package
-      (name "cbqn-bootstrap")
-      (version (git-version "0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/dzaima/CBQN")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "13gg96aa56b8k08bjvv8i0f5nxrah2sij7g6pg7i21fdv08rd9iv"))))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-        #:tests? #f                     ; skipping tests for bootstrap
-        #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
-        #:phases
-        #~(modify-phases %standard-phases
-            (delete 'configure)
-            (add-before 'build 'generate-bytecode
-              (lambda* (#:key inputs #:allow-other-keys)
-                (system (string-append #+dbqn
-                                       "/bin/dbqn ./genRuntime "
-                                       #+bqn-sources))))
-            (replace 'install
-              (lambda* (#:key outputs #:allow-other-keys)
-                (mkdir-p (string-append #$output "/bin"))
-                (chmod "BQN" #o755)
-                (rename-file "BQN" "bqn")
-                (install-file "bqn" (string-append #$output "/bin")))))))
-      (native-inputs (list dbqn bqn-sources))
-      (inputs (list icedtea-8 libffi))
-      (synopsis "BQN implementation in C")
-      (description "This package provides the reference implementation of
+  (package
+    (name "cbqn-bootstrap")
+    (version "0.9.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dzaima/CBQN")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0433hp9lgv6w6mhdz0k1kx2rmxia76yy9i0z7ps4qdk7snf2yr2q"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f                     ; skipping tests for bootstrap
+      ;; `make for-bootstrap' implicitly disables REPLXX, Singeli
+      #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                           ;; Default behaviour is to extract git hash to use for version
+                           ;; string, here our version string is manually substituted in so
+                           ;; git isn't required for building.
+                           (string-append "version=" #$version)
+                           "nogit=1"
+                           "for-bootstrap")
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (mkdir-p (string-append #$output "/bin"))
+              (chmod "BQN" #o755)
+              (rename-file "BQN" "bqn")
+              (install-file "bqn" (string-append #$output "/bin")))))))
+    (inputs (list libffi))
+    (synopsis "BQN implementation in C")
+    (description "This package provides the reference implementation of
 @uref{https://mlochbaum.github.io/BQN/, BQN}, a programming language inspired
 by APL.")
-      (home-page "https://mlochbaum.github.io/BQN/")
-      (license license:gpl3))))
+    (home-page "https://mlochbaum.github.io/BQN/")
+    (license license:gpl3)))
 
 (define-public cbqn
   (package
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Sat, 05 Apr 2025 15:08:05 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH 5/5] gnu: cbqn: Update to 0.9.0.
Date: Sat,  5 Apr 2025 16:07:33 +0100
* gnu/packages/bqn.scm (cbqn): Update to 0.9.0. Source-only bootstrap phase to
generate bytecode added. Library dependencies on replxx-sources and
singeli-sources added. New tests added to list. Dependency on dbqn eliminated.

Change-Id: I97ba12dd9d67b944ef7be1d6d76a98f4f2d69e35
---
 gnu/packages/bqn.scm | 67 ++++++++++++++++++++++++++++++--------------
 1 file changed, 46 insertions(+), 21 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index fb153696e6..fa3c7bbddc 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -196,39 +196,64 @@ (define-public cbqn
     (name "cbqn")
     (outputs '("out" "lib"))
     (arguments
-     (substitute-keyword-arguments (strip-keyword-arguments
-                                    (list #:tests?)
-                                    (package-arguments cbqn-bootstrap))
-       ((#:make-flags flags #~(list))
-        #~(cons* "shared-o3" "o3" #$flags))
-       ((#:phases phases #~%standard-phases)
+     (substitute-keyword-arguments (strip-keyword-arguments (list #:tests?)
+                                                            (package-arguments
+                                                             cbqn-bootstrap))
+       ((#:make-flags flags
+         #~(list))
+        #~(cons* "shared-o3" "o3"
+                 #$flags))
+       ((#:phases phases
+         #~%standard-phases)
         #~(modify-phases #$phases
+            ;; Symlinking local copies of REPLXX and Singeli is allowed
+            ;; instead of cloning submodules. `singeli-source' and
+            ;; `replxx-source' git hashes match the submodule hashes for this
+            ;; release of CBQN.
+            (add-before 'build 'link-local-replxx
+              (lambda* (#:key inputs #:allow-other-keys)
+                (symlink #+replxx-sources "build/replxxLocal")))
+            (add-before 'build 'link-local-singeli
+              (lambda* (#:key inputs #:allow-other-keys)
+                (symlink #+singeli-sources "build/singeliLocal")))
+            ;; The BQN built as part of `cbqn-bootstrap' is used here to
+            ;; generate bytecode rather than downloading pre-built bytecode.
+            (add-before 'build 'generate-bytecode
+              (lambda* (#:key inputs #:allow-other-keys)
+                (mkdir-p "build/bytecodeLocal/gen")
+                (system (string-append #+cbqn-bootstrap
+                                       "/bin/bqn build/bootstrap.bqn "
+                                       #+bqn-sources))))
             (replace 'check
               (lambda* (#:key inputs tests? #:allow-other-keys)
                 (when tests?
                   (system (string-append "./BQN -M 1000 \""
-                                         #+bqn-sources
-                                         "/test/this.bqn\""))
+                                         #+bqn-sources "/test/this.bqn\""))
                   (map (lambda (x)
-                         (system (string-append "./BQN ./test/" x
-                                                ".bqn")))
-                       '("cmp" "equal" "copy" "random"))
+                         (system (string-append "./BQN ./test/" x ".bqn")))
+                       '("cmp" "equal"
+                         "copy"
+                         "bitcpy"
+                         "bit"
+                         "mut"
+                         "hash"
+                         "squeezeValid"
+                         "squeezeExact"
+                         "various"
+                         "random"
+                         "joinReuse"))
                   (system "make -C test/ffi"))))
             (replace 'install
               (lambda* (#:key outputs #:allow-other-keys)
-                (let* ((bin (string-append (assoc-ref outputs "out")
-                                           "/bin"))
-                       (lib (string-append (assoc-ref outputs "lib")
-                                           "/lib"))
+                (let* ((bin (string-append (assoc-ref outputs "out") "/bin"))
+                       (lib (string-append (assoc-ref outputs "lib") "/lib"))
                        (include (string-append (assoc-ref outputs "lib")
-                                           "/include")))
+                                               "/include")))
                   (mkdir-p bin)
                   (rename-file "BQN" "bqn")
                   (install-file "bqn" bin)
                   (install-file "libcbqn.so" lib)
                   (install-file "include/bqnffi.h" include))))))))
-    (native-inputs (list dbqn
-                         bqn-sources
-                         libffi))
-    (properties
-     `((tunable? . #t)))))
+    (native-inputs (list bqn-sources cbqn-bootstrap replxx-sources
+                         singeli-sources libffi))
+    (properties `((tunable? . #t)))))
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Wed, 09 Apr 2025 16:01:02 GMT) Full text and rfc822 format available.

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

From: Cayetano Santos <csantosb <at> inventati.org>
To: Lee Thompson <lee.p.thomp <at> gmail.com>
Cc: lee.p.thomp <at> gmail.com, 77552 <at> debbugs.gnu.org
Subject: Re: [bug#77552] [PATCH 5/5] gnu: cbqn: Update to 0.9.0.
Date: Wed, 09 Apr 2025 18:00:23 +0200
[Message part 1 (text/plain, inline)]
Please, use changelog format for changes in commit message.

See:

https://www.gnu.org/prep/standards/html_node/Change-Logs.html

-     (substitute-keyword-arguments (strip-keyword-arguments
-                                    (list #:tests?)
-                                    (package-arguments cbqn-bootstrap))
-       ((#:make-flags flags #~(list))
-        #~(cons* "shared-o3" "o3" #$flags))
-       ((#:phases phases #~%standard-phases)
+     (substitute-keyword-arguments (strip-keyword-arguments (list #:tests?)
+                                                            (package-arguments
+                                                             cbqn-bootstrap))
+       ((#:make-flags flags
+         #~(list))
+        #~(cons* "shared-o3" "o3"
+                 #$flags))
+       ((#:phases phases
+         #~%standard-phases)

Try to avoid unnecessary modifications in original code, this makes hard
to follow the contributions.

-                                         #+bqn-sources
-                                         "/test/this.bqn\""))
+                                         #+bqn-sources "/test/this.bqn\""))

Idem

-                (let* ((bin (string-append (assoc-ref outputs "out")
-                                           "/bin"))
-                       (lib (string-append (assoc-ref outputs "lib")
-                                           "/lib"))
+                (let* ((bin (string-append (assoc-ref outputs "out") "/bin"))
+                       (lib (string-append (assoc-ref outputs "lib") "/lib"))
                        (include (string-append (assoc-ref outputs "lib")
-                                           "/include")))
+                                               "/include")))

Again. You get the idea.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Wed, 09 Apr 2025 16:08:02 GMT) Full text and rfc822 format available.

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

From: Cayetano Santos <csantosb <at> inventati.org>
To: Lee Thompson <lee.p.thomp <at> gmail.com>
Cc: lee.p.thomp <at> gmail.com, 77552 <at> debbugs.gnu.org
Subject: Re: [bug#77552] [PATCH 4/5] gnu: cbqn-bootstrap: Update to 0.9.0.
Date: Wed, 09 Apr 2025 18:07:35 +0200
[Message part 1 (text/plain, inline)]
+ ;; Default behaviour is to extract git hash to use for version
+ ;; string, here our version string is manually substituted in

You exceed maximum column here.

Use ‘./pre-inst-env guix lint PACKAGE’ before submitting to fix this
kind of errors.

+    (license license:gpl3)))

Have you checked "licenses" folder ?

Additionally, none of your sources include a license field. And yet, they are
used in cbqn/bootstrap.This is anomalous to me.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Wed, 09 Apr 2025 18:03:01 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: Cayetano Santos <csantosb <at> inventati.org>
Cc: 77552 <at> debbugs.gnu.org
Subject: Re: [bug#77552] [PATCH 4/5] gnu: cbqn-bootstrap: Update to 0.9.0.
Date: Wed, 09 Apr 2025 19:02:30 +0100
Cayetano Santos <csantosb <at> inventati.org> writes:

> You exceed maximum column here.
>
> Use ‘./pre-inst-env guix lint PACKAGE’ before submitting to fix this
> kind of errors.
Okay this is my bad, though I am wondering if there's a more ergonomic
way to style/lint packages that aren't defined publicly like this one.
What I find myself doing is changing the `(define cbqn-bootstrap ...' to
`(define-public ...', running `./pre-inst-env guix style
cbqn-bootstrap', then swapping `define-public' back to `define'.  Is
there something I'm missing with this?

> +    (license license:gpl3)))
>
> Have you checked "licenses" folder ?
This paragraph from upstream about licenses:
https://github.com/dzaima/CBQN?tab=readme-ov-file#licensing talks a bit
about the licensing situation for CBQN itself. It seems obvious to me to
list out lgpl3, gpl3 and mpl2, though do you think I'd be better off
listing all the licenses under `licenses' including Boost and Apache
etc?

> Additionally, none of your sources include a license field. And yet, they are
> used in cbqn/bootstrap.This is anomalous to me.
Unless I'm mistaken I don't think there's a way to specify a license for
a plain `origin' like I've used for the `-sources' I've added.  I chose
to add Singeli and REPLXX as just `origin's instead of full packages
taking inspiration from the existing `bqn-sources'.  `bqn-sources'
currently doesn't mention its ISC license at all.

Despite this checking the build output it looks like all the following
still manage to end up in
/gnu/store/...-cbqn-0.9.0/share/doc/cbqn-0.9.0:
> LICENSE-Apache2  LICENSE-Boost  LICENSE-GPLv3  LICENSE-LGPLv3  LICENSE-MIT-sort  LICENSE-MPL2




Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Wed, 09 Apr 2025 18:08:02 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: Cayetano Santos <csantosb <at> inventati.org>
Cc: 77552 <at> debbugs.gnu.org
Subject: Re: [bug#77552] [PATCH 5/5] gnu: cbqn: Update to 0.9.0.
Date: Wed, 09 Apr 2025 19:06:56 +0100
Cayetano Santos <csantosb <at> inventati.org> writes:

> Try to avoid unnecessary modifications in original code, this makes hard
> to follow the contributions.
I'm following guidance to run `./pre-inst-env guix style PACKAGE' before
sending in a patch.  What you see here is just the result of running
that.  I agree though it makes reading diffs confusing.

Is there a way to only `guix style' what's been changed?




Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Thu, 10 Apr 2025 07:28:02 GMT) Full text and rfc822 format available.

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

From: Cayetano Santos <csantosb <at> inventati.org>
To: Lee Thompson <lee.p.thomp <at> gmail.com>
Cc: 77552 <at> debbugs.gnu.org
Subject: Re: [bug#77552] [PATCH 5/5] gnu: cbqn: Update to 0.9.0.
Date: Thu, 10 Apr 2025 09:27:49 +0200
>Wed 09 Apr 2025 at 19:06, Lee Thompson <lee.p.thomp <at> gmail.com> wrote:

> Cayetano Santos <csantosb <at> inventati.org> writes:
>
>> Try to avoid unnecessary modifications in original code, this makes hard
>> to follow the contributions.

> I'm following guidance to run `./pre-inst-env guix style PACKAGE' before
> sending in a patch.  What you see here is just the result of running
> that.  I agree though it makes reading diffs confusing.

I see what you mean. Generally speaking, guix community privileges
avoiding unnecessary changes and readability, over strict styling (you
can verify in most packages).

> Is there a way to only `guix style' what's been changed?

Not that I’m aware of, but would be useful !




Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Thu, 10 Apr 2025 07:41:01 GMT) Full text and rfc822 format available.

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

From: Cayetano Santos <csantosb <at> inventati.org>
To: Lee Thompson <lee.p.thomp <at> gmail.com>
Cc: 77552 <at> debbugs.gnu.org
Subject: Re: [bug#77552] [PATCH 4/5] gnu: cbqn-bootstrap: Update to 0.9.0.
Date: Thu, 10 Apr 2025 09:40:42 +0200
>Wed 09 Apr 2025 at 19:02, Lee Thompson <lee.p.thomp <at> gmail.com> wrote:

> Cayetano Santos <csantosb <at> inventati.org> writes:
>
>> You exceed maximum column here.
>>
>> Use ‘./pre-inst-env guix lint PACKAGE’ before submitting to fix this
>> kind of errors.

> Okay this is my bad, though I am wondering if there's a more ergonomic
> way to style/lint packages that aren't defined publicly like this one.
> What I find myself doing is changing the `(define cbqn-bootstrap ...' to
> `(define-public ...', running `./pre-inst-env guix style
> cbqn-bootstrap', then swapping `define-public' back to `define'.  Is
> there something I'm missing with this?

In my case, I usually do the same.


>> +    (license license:gpl3)))
>>
>> Have you checked "licenses" folder ?

> This paragraph from upstream about licenses:
> https://github.com/dzaima/CBQN?tab=readme-ov-file#licensing talks a bit
> about the licensing situation for CBQN itself. It seems obvious to me to
> list out lgpl3, gpl3 and mpl2, though do you think I'd be better off
> listing all the licenses under `licenses' including Boost and Apache
> etc?

I think so. You may get inspiration from iverilog and similar packages.

>> Additionally, none of your sources include a license field. And yet, they are
>> used in cbqn/bootstrap.This is anomalous to me.

> Unless I'm mistaken I don't think there's a way to specify a license for
> a plain `origin' like I've used for the `-sources' I've added.  I chose
> to add Singeli and REPLXX as just `origin's instead of full packages
> taking inspiration from the existing `bqn-sources'.  `bqn-sources'
> currently doesn't mention its ISC license at all.

I guess that once the (non-license) source is included in a package, its
license must appear in the package itself.

> Despite this checking the build output it looks like all the following
> still manage to end up in
> /gnu/store/...-cbqn-0.9.0/share/doc/cbqn-0.9.0:

>> LICENSE-Apache2 LICENSE-Boost LICENSE-GPLv3 LICENSE-LGPLv3 LICENSE-MIT-sort LICENSE-MPL2

Yes, the builder detects the licenses folder and assumes all of its
contents as licenses, so it takes them all; they still need to be
mentioned in the package.




Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Thu, 10 Apr 2025 13:39:02 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH v2 1/5] gnu: bqn-sources: Update to 5880fa15.
Date: Thu, 10 Apr 2025 14:38:32 +0100
* gnu/packages/bqn.scm (bqn-sources): Update to 5880fa15.

Change-Id: Ida46884232955c3090bca72928f0a6d4240ed45c
---
 gnu/packages/bqn.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index fd090ad433..c9f719939c 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -111,7 +111,7 @@ (define bqn-sources
   ;; Aside from dbqn above, the main bqn repository is used by other
   ;; implementations as a "known good" set of sources. CBQN uses dbqn to
   ;; generate an intermediate bytecode for its own compilation.
-    (let ((commit "71ce36141aaacfa714edca2e408ca522a3bc5554"))
+    (let ((commit "5880fa153bb3e3172afc59a711af7e471aeedcd3"))
       (origin
         (method git-fetch)
         (uri (git-reference
@@ -119,7 +119,7 @@ (define bqn-sources
               (commit commit)))
         (file-name (git-file-name "bqn-sources" commit))
         (sha256
-         (base32 "060a3r5m7hynzxj4iz1av2kj5jf8w3j8yswzzx9wkx31rdrsiv2c")))))
+         (base32 "1cap927i0s8ly4mckppw33ahlc5xnp3l2shk1m79wndf362x3r7c")))))
 
 (define cbqn-bootstrap
   (let* ((revision "2")
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Thu, 10 Apr 2025 13:39:03 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH v2 2/5] gnu: Add replxx-sources.
Date: Thu, 10 Apr 2025 14:38:33 +0100
* gnu/packages/bqn.scm (replxx-sources): New variable.

Change-Id: I6ab4a714ec82165c7df9e5c67c26b43c40a5c625
---
 gnu/packages/bqn.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index c9f719939c..5c69a2740c 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -121,6 +121,20 @@ (define bqn-sources
         (sha256
          (base32 "1cap927i0s8ly4mckppw33ahlc5xnp3l2shk1m79wndf362x3r7c")))))
 
+(define replxx-sources
+  ;; Dzaima's fork of REPLXX can be used to enhance the CBQN REPL experience
+  ;; with syntax highlighting, readline-like history/navigation, and a
+  ;; prefixed keymap similar to BQNPAD.
+  (let ((commit "13f7b60f4f79c2f14f352a76d94860bad0fc7ce9"))
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/dzaima/replxx")
+            (commit commit)))
+      (file-name (git-file-name "replxx" commit))
+      (sha256
+       (base32 "0440xjvdkrbpxqjrd6nsrnaxki0mgyinsb0b1dcshjj3h3jr1yy4")))))
+
 (define cbqn-bootstrap
   (let* ((revision "2")
          (commit "66584ce1491d300746963b8ed17170348b2a03e6"))
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Thu, 10 Apr 2025 13:39:03 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH v2 3/5] gnu: Add singeli-sources.
Date: Thu, 10 Apr 2025 14:38:34 +0100
* gnu/packages/bqn.scm (singeli-sources): New variable.

Change-Id: I9a96915a23adc786a3c92fd7ad34aaa5ee938ad6
---
 gnu/packages/bqn.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 5c69a2740c..11a5a48b33 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -135,6 +135,19 @@ (define replxx-sources
       (sha256
        (base32 "0440xjvdkrbpxqjrd6nsrnaxki0mgyinsb0b1dcshjj3h3jr1yy4")))))
 
+(define singeli-sources
+  ;; Singeli can be used to more efficiently implement CBQN primitive
+  ;; operations. Used in this way only its source is required.
+  (let ((commit "53f42ce4331176d281fa577408ec5a652bdd9127"))
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/mlochbaum/Singeli")
+            (commit commit)))
+      (file-name (git-file-name "singeli" commit))
+      (sha256
+       (base32 "1dzg4gk74lhy6pwvxzhk4zj1qinc83l7i6x6zpvdajdlz5vqvc1m")))))
+
 (define cbqn-bootstrap
   (let* ((revision "2")
          (commit "66584ce1491d300746963b8ed17170348b2a03e6"))
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Thu, 10 Apr 2025 13:39:04 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH v2 4/5] gnu: cbqn-bootstrap: Update to 0.9.0.
Date: Thu, 10 Apr 2025 14:38:35 +0100
* gnu/packages/bqn.scm (cbqn-bootstrap): Update to 0.9.0.

[version]: Now 0.9.0 instead of assembled from git-version, revision, commit.
[source]: Commit swapped out for version, hash updated.
[arguments]<#:make-flags>: Manual version added, flag to disable git during
build, build type switched to "for-bootstrap".
<#:phases>: `generate-bytecode' deleted here, moved to `cbqn' package.
[native-inputs]: All deleted, bootstrap no longer needs `dbqn' or sources.
[inputs]: Deleted `icedtea-8'.
[license]: License list updated, covers CBQN code and exceptions.

Change-Id: I54c39dbcad7f485b539cf5fc3156829efec4f8c4
---
 gnu/packages/bqn.scm | 36 +++++++++++++++++++++---------------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 11a5a48b33..1caf6f3c8a 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -149,47 +149,53 @@ (define singeli-sources
        (base32 "1dzg4gk74lhy6pwvxzhk4zj1qinc83l7i6x6zpvdajdlz5vqvc1m")))))
 
 (define cbqn-bootstrap
-  (let* ((revision "2")
-         (commit "66584ce1491d300746963b8ed17170348b2a03e6"))
     (package
       (name "cbqn-bootstrap")
-      (version (git-version "0" revision commit))
+      (version "0.9.0")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
                       (url "https://github.com/dzaima/CBQN")
-                      (commit commit)))
+                      (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "13gg96aa56b8k08bjvv8i0f5nxrah2sij7g6pg7i21fdv08rd9iv"))))
+                  "0433hp9lgv6w6mhdz0k1kx2rmxia76yy9i0z7ps4qdk7snf2yr2q"))))
       (build-system gnu-build-system)
       (arguments
        (list
-        #:tests? #f                     ; skipping tests for bootstrap
-        #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
+        #:tests? #f ;skipping tests for bootstrap
+        ;; `make for-bootstrap' implicitly disables REPLXX, Singeli
+        #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                             ;; Default behaviour is to extract git hash to
+                             ;; use for version string, here our version
+                             ;; string is manually substituted in so git isn't
+                             ;; required for building.
+                             (string-append "version="
+                                            #$version)
+                             "nogit=1" "for-bootstrap")
         #:phases
         #~(modify-phases %standard-phases
             (delete 'configure)
-            (add-before 'build 'generate-bytecode
-              (lambda* (#:key inputs #:allow-other-keys)
-                (system (string-append #+dbqn
-                                       "/bin/dbqn ./genRuntime "
-                                       #+bqn-sources))))
             (replace 'install
               (lambda* (#:key outputs #:allow-other-keys)
                 (mkdir-p (string-append #$output "/bin"))
                 (chmod "BQN" #o755)
                 (rename-file "BQN" "bqn")
                 (install-file "bqn" (string-append #$output "/bin")))))))
-      (native-inputs (list dbqn bqn-sources))
-      (inputs (list icedtea-8 libffi))
+      (inputs (list libffi))
       (synopsis "BQN implementation in C")
       (description "This package provides the reference implementation of
 @uref{https://mlochbaum.github.io/BQN/, BQN}, a programming language inspired
 by APL.")
       (home-page "https://mlochbaum.github.io/BQN/")
-      (license license:gpl3))))
+      ;; Upstream explains licensing situation
+      (license (list license:asl2.0       ; src/utils/ryu*
+                     license:boost1.0
+                     license:expat        ; src/builtins/sortTemplate.h
+                     license:lgpl3        ; Everything else except the above
+                     license:gpl3
+                     license:mpl2.0))))
 
 (define-public cbqn
   (package
-- 
2.48.1





Information forwarded to guix-patches <at> gnu.org:
bug#77552; Package guix-patches. (Thu, 10 Apr 2025 13:39:04 GMT) Full text and rfc822 format available.

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

From: Lee Thompson <lee.p.thomp <at> gmail.com>
To: 77552 <at> debbugs.gnu.org
Cc: Lee Thompson <lee.p.thomp <at> gmail.com>
Subject: [PATCH v2 5/5] gnu: cbqn: Update to 0.9.0.
Date: Thu, 10 Apr 2025 14:38:36 +0100
* gnu/packages/bqn.scm (cbqn): Update to 0.9.0.

[arguments]<#:phases>: Phases linking REPLXX and Singeli and to generate
bytecode are added before build, new tests are added to the replaced 'check.
[native-inputs]: Removed `dbqn', added `cbqn-bootstrap', `replxx-sources' and
`singeli-sources'.
[license]: Licenses for REPLXX and Singeli appended to those for just CBQN.

Change-Id: I97ba12dd9d67b944ef7be1d6d76a98f4f2d69e35
---
 gnu/packages/bqn.scm | 41 ++++++++++++++++++++++++++++++++++++-----
 1 file changed, 36 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 1caf6f3c8a..a90007f593 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -210,6 +210,24 @@ (define-public cbqn
         #~(cons* "shared-o3" "o3" #$flags))
        ((#:phases phases #~%standard-phases)
         #~(modify-phases #$phases
+            ;; Symlinking local copies of REPLXX and Singeli is allowed
+            ;; instead of cloning submodules. `singeli-source' and
+            ;; `replxx-source' git hashes match the submodule hashes for this
+            ;; release of CBQN.
+            (add-before 'build 'link-local-replxx
+              (lambda* (#:key inputs #:allow-other-keys)
+                (symlink #+replxx-sources "build/replxxLocal")))
+            (add-before 'build 'link-local-singeli
+              (lambda* (#:key inputs #:allow-other-keys)
+                (symlink #+singeli-sources "build/singeliLocal")))
+            ;; The BQN built as part of `cbqn-bootstrap' is used here to
+            ;; generate bytecode rather than downloading pre-built bytecode.
+            (add-before 'build 'generate-bytecode
+              (lambda* (#:key inputs #:allow-other-keys)
+                (mkdir-p "build/bytecodeLocal/gen")
+                (system (string-append #+cbqn-bootstrap
+                                       "/bin/bqn build/bootstrap.bqn "
+                                       #+bqn-sources))))
             (replace 'check
               (lambda* (#:key inputs tests? #:allow-other-keys)
                 (when tests?
@@ -219,7 +237,17 @@ (define-public cbqn
                   (map (lambda (x)
                          (system (string-append "./BQN ./test/" x
                                                 ".bqn")))
-                       '("cmp" "equal" "copy" "random"))
+                       '("cmp" "equal"
+                         "copy"
+                         "bitcpy"
+                         "bit"
+                         "mut"
+                         "hash"
+                         "squeezeValid"
+                         "squeezeExact"
+                         "various"
+                         "random"
+                         "joinReuse"))
                   (system "make -C test/ffi"))))
             (replace 'install
               (lambda* (#:key outputs #:allow-other-keys)
@@ -234,8 +262,11 @@ (define-public cbqn
                   (install-file "bqn" bin)
                   (install-file "libcbqn.so" lib)
                   (install-file "include/bqnffi.h" include))))))))
-    (native-inputs (list dbqn
-                         bqn-sources
-                         libffi))
+    (native-inputs (list bqn-sources cbqn-bootstrap replxx-sources
+                         singeli-sources libffi))
     (properties
-     `((tunable? . #t)))))
+     `((tunable? . #t)))
+    (license (append (package-license cbqn-bootstrap)
+                     (list license:isc   ;Singeli module
+                           license:bsd-3 ;REPLXX module
+                           license:unicode)))))
-- 
2.48.1





This bug report was last modified 18 days ago.

Previous Next


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