GNU bug report logs - #58100
cbqn currently targets AVX2

Previous Next

Package: guix-patches;

Reported by: Christopher Rodriguez <yewscion <at> gmail.com>

Date: Mon, 26 Sep 2022 19:08:02 UTC

Severity: normal

Done: Liliana Marie Prikler <liliana.prikler <at> gmail.com>

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 58100 in the body.
You can then email your comments to 58100 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#58100; Package guix-patches. (Mon, 26 Sep 2022 19:08:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Christopher Rodriguez <yewscion <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 26 Sep 2022 19:08:02 GMT) Full text and rfc822 format available.

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

From: Christopher Rodriguez <yewscion <at> gmail.com>
To: guix-patches <at> gnu.org
Subject: cbqn currently targets AVX2
Date: Mon, 26 Sep 2022 15:03:54 -0400
[Message part 1 (text/plain, inline)]
Hey All,

Came to my attention today that cbqn (which I recently submitted the
package for) was assuming a CPU with AVX2 extensions when built as I had
originally packaged it.

I have a patch to fix this; cbqn now will target a generic CPU, and the
AVX2 optimizations have been moved to their own package, cbqn-singeli.

Let me know what I can improve!

-- 
Christopher Rodriguez
()  ascii ribbon campaign - against html e-mail
/\  www.asciiribbon.org   - against proprietary attachments
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Mon, 26 Sep 2022 19:13:01 GMT) Full text and rfc822 format available.

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

From: Christopher Rodriguez <yewscion <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH] gnu: cbqn: factor out singeli into derivative package.
Date: Mon, 26 Sep 2022 15:12:12 -0400
Persuant to a recent conversation[1] with upstream, I've factored the
AVX2-dependent builds into their own package (defaulting to a generic build
instead).

+ gnu/packages/bqn.scm: cbqn-singeli
~ gnu/packages/bqn.scm: cbqn: changed make flags, inputs, and commit.
---
 gnu/packages/bqn.scm | 45 ++++++++++++++++++++++++++++++++++++++------
 1 file changed, 39 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index c4e0f39efb..56705beede 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -126,7 +126,7 @@ (define bqn-sources
 
 (define cbqn-bootstrap
   (let* ((revision "1")
-         (commit "9c1cbdc99863b1da0116df61cd832137b196dc5c"))
+         (commit "bd823839feaf42af4013e5a245981f58f563e659"))
     (package
       (name "cbqn-bootstrap")
       (version (git-version "0" "1" commit))
@@ -138,7 +138,7 @@ (define cbqn-bootstrap
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0w38fhwf20drkyijy6nfnhmc5g5gw0zmzgmy1q605x57znlj85a2"))))
+                  "0735mixvpgp2g1jsmbg7aaw35r4xs348y7djkwdvb0193ais6xz2"))))
       (build-system gnu-build-system)
       (arguments
        (list #:tests? #f                         ;skipping tests for bootstrap
@@ -182,12 +182,9 @@ (define-public cbqn
     (name "cbqn")
     (outputs '("out" "lib"))
     (arguments
-     (list #:make-flags '(list "shared-o3" "o3n-singeli")
+     (list #:make-flags '(list "shared-o3" "o3")
            #:phases #~(modify-phases %standard-phases
                         (delete 'configure)
-                        (add-before 'build 'link-singeli
-                          (lambda* (#:key inputs #:allow-other-keys)
-                            (symlink #+singeli-sources "Singeli")))
                         (add-before 'build 'generate-bytecode
                           (lambda* (#:key inputs #:allow-other-keys)
                             (system (string-append #+dbqn
@@ -222,3 +219,39 @@ (define-public cbqn
                          libffi
                          clang-toolchain
                          linux-libre-headers))))
+(define-public cbqn-singeli
+  (package
+    (inherit cbqn)
+    (name "cbqn-singeli")
+    (outputs '("out"))
+    (arguments
+     (list #:make-flags '(list "singeli=1 f='-mavx2 -mbmi2 -O3' c")
+           #:phases #~(modify-phases %standard-phases
+                        (delete 'configure)
+                        (add-before 'build 'link-singeli
+                          (lambda* (#:key inputs #:allow-other-keys)
+                            (symlink #+singeli-sources "Singeli")))
+                        (add-before 'build 'generate-bytecode
+                          (lambda* (#:key inputs #:allow-other-keys)
+                            (system (string-append #+dbqn
+                                                   "/bin/dbqn ./genRuntime "
+                                                   #+bqn-sources))))
+                        (replace 'check
+                          (lambda* (#:key inputs tests? #:allow-other-keys)
+                            (when tests?
+                              (system (string-append "./BQN -M 1000 \""
+                                                     #+bqn-sources
+                                                     "/test/this.bqn\""))
+                              (map (lambda (x)
+                                     (system (string-append "./BQN ./test/" x
+                                                            ".bqn")))
+                                   '("cmp" "equal" "copy" "random")))))
+                        (replace 'install
+                          (lambda* (#:key outputs #:allow-other-keys)
+                            (let* ((bin (string-append (assoc-ref outputs
+                                                                  "out")
+                                                       "/bin")))
+                              (mkdir-p bin)
+                              (copy-recursively "BQN"
+                                                (string-append bin "/bqn"))))))))))
+
-- 
2.37.3





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Mon, 26 Sep 2022 19:21:01 GMT) Full text and rfc822 format available.

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

From: Christopher Rodriguez <yewscion <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: Re: [PATCH] gnu: cbqn: factor out singeli into derivative package.
Date: Mon, 26 Sep 2022 15:17:47 -0400
[Message part 1 (text/plain, inline)]
Christopher Rodriguez <yewscion <at> gmail.com> writes:

> Persuant to a recent conversation[1] with upstream, I've factored the
> AVX2-dependent builds into their own package (defaulting to a generic build
> instead).

Sorry, forgot to actually include the link.

This change came from this[1] discussion with upstream, and this[2]
discussion on IRC.

[1]: https://github.com/dzaima/CBQN/issues/45#issuecomment-1258330937
[2]: https://logs.guix.gnu.org/guix/2022-09-26.log#191521

-- 
Christopher Rodriguez
()  ascii ribbon campaign - against html e-mail
/\  www.asciiribbon.org   - against proprietary attachments
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Tue, 27 Sep 2022 07:27:01 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> ist.tugraz.at>
To: Christopher Rodriguez <yewscion <at> gmail.com>, 58100 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: cbqn: factor out singeli into derivative package.
Date: Tue, 27 Sep 2022 09:26:26 +0200
Am Montag, dem 26.09.2022 um 15:12 -0400 schrieb Christopher Rodriguez:
> Persuant to a recent conversation[1] with upstream, I've factored the
> AVX2-dependent builds into their own package (defaulting to a generic
> build
> instead).
> 
> + gnu/packages/bqn.scm: cbqn-singeli
> ~ gnu/packages/bqn.scm: cbqn: changed make flags, inputs, and commit.
This is not how to write a ChangeLog.  See [1] or infer from other
commits.

> ---
>  gnu/packages/bqn.scm | 45 ++++++++++++++++++++++++++++++++++++++----
> --
>  1 file changed, 39 insertions(+), 6 deletions(-)
> 
> diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
> index c4e0f39efb..56705beede 100644
> --- a/gnu/packages/bqn.scm
> +++ b/gnu/packages/bqn.scm
> @@ -126,7 +126,7 @@ (define bqn-sources
>  
>  (define cbqn-bootstrap
>    (let* ((revision "1")
> -         (commit "9c1cbdc99863b1da0116df61cd832137b196dc5c"))
> +         (commit "bd823839feaf42af4013e5a245981f58f563e659"))
Why are you changing the bootstrap commit?  This looks suspicious.
>      (package
>        (name "cbqn-bootstrap")
>        (version (git-version "0" "1" commit))
> @@ -138,7 +138,7 @@ (define cbqn-bootstrap
>                  (file-name (git-file-name name version))
>                  (sha256
>                   (base32
> -                 
> "0w38fhwf20drkyijy6nfnhmc5g5gw0zmzgmy1q605x57znlj85a2"))))
> +                 
> "0735mixvpgp2g1jsmbg7aaw35r4xs348y7djkwdvb0193ais6xz2"))))
>        (build-system gnu-build-system)
>        (arguments
>         (list #:tests? #f                         ;skipping tests for
> bootstrap
> @@ -182,12 +182,9 @@ (define-public cbqn
>      (name "cbqn")
>      (outputs '("out" "lib"))
>      (arguments
> -     (list #:make-flags '(list "shared-o3" "o3n-singeli")
> +     (list #:make-flags '(list "shared-o3" "o3")
Okay
>             #:phases #~(modify-phases %standard-phases
>                          (delete 'configure)
> -                        (add-before 'build 'link-singeli
> -                          (lambda* (#:key inputs #:allow-other-keys)
> -                            (symlink #+singeli-sources "Singeli")))
>                          (add-before 'build 'generate-bytecode
>                            (lambda* (#:key inputs #:allow-other-keys)
>                              (system (string-append #+dbqn
> @@ -222,3 +219,39 @@ (define-public cbqn
>                           libffi
>                           clang-toolchain
>                           linux-libre-headers))))
> +(define-public cbqn-singeli
> +  (package
> +    (inherit cbqn)
> +    (name "cbqn-singeli")
> +    (outputs '("out"))
> +    (arguments
> +     (list #:make-flags '(list "singeli=1 f='-mavx2 -mbmi2 -O3' c")
> +           #:phases #~(modify-phases %standard-phases
> +                        (delete 'configure)
> +                        (add-before 'build 'link-singeli
> +                          (lambda* (#:key inputs #:allow-other-keys)
> +                            (symlink #+singeli-sources "Singeli")))
> +                        (add-before 'build 'generate-bytecode
> +                          (lambda* (#:key inputs #:allow-other-keys)
> +                            (system (string-append #+dbqn
> +                                                   "/bin/dbqn
> ./genRuntime "
> +                                                   #+bqn-sources))))
> +                        (replace 'check
> +                          (lambda* (#:key inputs tests? #:allow-
> other-keys)
> +                            (when tests?
> +                              (system (string-append "./BQN -M 1000
> \""
> +                                                     #+bqn-sources
> +                                                    
> "/test/this.bqn\""))
> +                              (map (lambda (x)
> +                                     (system (string-append "./BQN
> ./test/" x
> +                                                           
> ".bqn")))
> +                                   '("cmp" "equal" "copy"
> "random")))))
> +                        (replace 'install
> +                          (lambda* (#:key outputs #:allow-other-
> keys)
> +                            (let* ((bin (string-append (assoc-ref
> outputs
> +                                                                 
> "out")
> +                                                       "/bin")))
> +                              (mkdir-p bin)
> +                              (copy-recursively "BQN"
> +                                                (string-append bin
> "/bqn"))))))))))
> +
Instead of providing a singeli variant, would just tuning the package
suffice?  If not, I think we should try to properly unbundle singeli
(as in build an actual singeli package) before adding another package
variant.  Then, you could use existing patterns to decide whether to
use singeli by making it an input or not.

Cheers

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

Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Tue, 27 Sep 2022 18:04:02 GMT) Full text and rfc822 format available.

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

From: Christopher Rodriguez <yewscion <at> gmail.com>
To: Liliana Marie Prikler <liliana.prikler <at> ist.tugraz.at>
Cc: Christopher Rodriguez <yewscion <at> gmail.com>, 58100 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: cbqn: factor out singeli into derivative package.
Date: Tue, 27 Sep 2022 13:27:23 -0400
[Message part 1 (text/plain, inline)]
Liliana Marie Prikler <liliana.prikler <at> ist.tugraz.at> writes:

> This is not how to write a ChangeLog.  See [1] or infer from other
> commits.

Thank You for pointing me in the right direction; I will ensure a
standardized changelog in my revised patch after reading all of the
linked info.

>> -         (commit "9c1cbdc99863b1da0116df61cd832137b196dc5c"))
>> +         (commit "bd823839feaf42af4013e5a245981f58f563e659"))
> Why are you changing the bootstrap commit?  This looks suspicious.

I am bumping the commit from 9c1cbdc99863b1da0116df61cd832137b196dc5c to
46501ac819c8f21c69d7d2ba4b0457a7356f5e42 (another commit was made when
closing the above-linked issue) as the new commit is the most recent one
for this un-tagged project.

There is no 'release' to package, and so in order to stay up to date
regular updates of this package's commit will likely be necessary.

I can see why the bootstrap commit might stay the same, however. Would
it be better to solely amend the commit on the actual installable
package instead?

>>      (arguments
>> -     (list #:make-flags '(list "shared-o3" "o3n-singeli")
>> +     (list #:make-flags '(list "shared-o3" "o3")
> Okay

I have actually just re-read the documentation after the abovementioned
most recent commit, and noticed a surviving line in the upstream
`README.md`[1]:

`make PIE=""` on ARM CPUs (incl. Android & M1)

Perhaps I can incorporate this into the package to allow it to build on
aarch64 as well as x86_64? Though as mentioned in the original upstream
issue, I think there is a problem with a dependent package… perhaps this
should be saved for a separate issue, then.

> Instead of providing a singeli variant, would just tuning the package
> suffice?
This was actually my biggest question when making the patch. I chose a
singeli variant because there is no architecture detection at all in the
makefile; it relies entirely on the specified targets ("o3", "c", etc)
to decide what to build for.

As an example: Switching the target from "o3n-singeli" to "o3"
immediately changed the entire build, preventing it from looking at all
for Singeli sources, even though I had yet to unlink them from the
source directory.

Is there a preferred method for this kind of build structure in a Guix
package? I suppose I could do a (cond *) in the make flags… maybe
referencing a variable for the target? I don't know what variable that
might be, though, as we would not only be looking for an x86_64 target,
but specifically that the underlying system supports AVX2…

In general, I would much prefer to keep it as one package. I think it is
much easier to maintain that way, and makes the user experience much
easier as well. But I'm sorry to report that I'm unaware of how best to
implement this, and would greatly appreciate some advice.

> If not, I think we should try to properly unbundle singeli (as in
> build an actual singeli package) before adding another package
> variant.  Then, you could use existing patterns to decide whether to
> use singeli by making it an input or not.

As for unbundling singeli: Running singeli requires a version of cbqn
built with or without singeli support. Building a version of cbqn with
singeli support requires the /source/ for singeli to be present in the
build directory at build time, not a precompiled binary. Singeli itself
is actually just a BQN script[2], and not a compiled binary at all, and
is a transpiler from BQN to IR/C. It's used in the optimized version to
transpile/compile the SIMD algorithms (sic, I am unfamiliar with this
concept).

In short, to unbundle singeli, we can just avoid including singeli in
the build, as in the revised cbqn package in the patch. We could make a
package for singeli that uses an installed bqn binary from any cbqn
package, but we would still need the sources present at build time due
to the way they are used and called in the build script. Fully
decoupling the optimized cbqn from singeli would require rewriting the
parts of the build that locate and run the singeli script, and (I think)
is more suited to an upstream patch than a package definition. I have
opened an issue regarding this possibility with upstream as of this
email[3].

(FWIW, I've also opened an issue regarding release tagging[4], though
from my previous correspondence with upstream I'm fairly certain a
release tag is not yet something they are comfortable with).

>
> Cheers

Thank You (as always) for Your guidance, Liliana. Sorry for these
issues, I am still learning best practices and standards for this
project and those of GNU in general. I hope You have a great day!

[1]: https://github.com/dzaima/CBQN/commit/46501ac819c8f21c69d7d2ba4b0457a7356f5e42
[2]: https://github.com/mlochbaum/Singeli/blob/master/singeli
[3]: https://github.com/dzaima/CBQN/issues/46
[4]: https://github.com/dzaima/CBQN/issues/47

-- 
Christopher Rodriguez
()  ascii ribbon campaign - against html e-mail
/\  www.asciiribbon.org   - against proprietary attachments
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Wed, 28 Sep 2022 07:42:02 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> ist.tugraz.at>
To: Christopher Rodriguez <yewscion <at> gmail.com>
Cc: 58100 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: cbqn: factor out singeli into derivative package.
Date: Wed, 28 Sep 2022 09:41:33 +0200
Am Dienstag, dem 27.09.2022 um 13:27 -0400 schrieb Christopher
Rodriguez:
> I am bumping the commit from 9c1cbdc99863b1da0116df61cd832137b196dc5c
> to 46501ac819c8f21c69d7d2ba4b0457a7356f5e42 (another commit was made
> when closing the above-linked issue) as the new commit is the most
> recent one for this un-tagged project.
There is no policy in Guix to tail untagged projects. For personal
experimentation, use transformations, e.g. --with-branch. But even if
there is a good reason to bump the package, use a separate commit for
this.

> There is no 'release' to package, and so in order to stay up to date
> regular updates of this package's commit will likely be necessary.
Staying up to date is not good in and of itself, you have to evaluate
costs and benefits. Right now, you provided neither.

> I can see why the bootstrap commit might stay the same, however.
> Would it be better to solely amend the commit on the actual
> installable package instead?
I have no hard stance on this. While one could argue that it'd be
better for bootstrap binaries to be unmoving, this doesn't seem to
apply here. Other than that, it's better for bootstrap paths to be
short, see e.g. Rust. 

> > >      (arguments
> > > -     (list #:make-flags '(list "shared-o3" "o3n-singeli")
> > > +     (list #:make-flags '(list "shared-o3" "o3")
> > Okay
> 
> I have actually just re-read the documentation after the
> abovementioned most recent commit, and noticed a surviving line in
> the upstream `README.md`[1]:
> 
> `make PIE=""` on ARM CPUs (incl. Android & M1)
I'm pretty sure we'd like to specify e.g. -shared instead.

> Perhaps I can incorporate this into the package to allow it to build
> on aarch64 as well as x86_64? Though as mentioned in the original
> upstream issue, I think there is a problem with a dependent package…
> perhaps this should be saved for a separate issue, then.
It ought to at very least be a separate commit.

> > Instead of providing a  singeli variant, would just tuning the
> > package suffice?
> This was actually my biggest question when making the patch. I chose
> a singeli variant because there is no architecture detection at all
> in the makefile; it relies entirely on the specified targets ("o3",
> "c", etc) to decide what to build for.
That would be handled by the tuning compiler.

> As an example: Switching the target from "o3n-singeli" to "o3"
> immediately changed the entire build, preventing it from looking at
> all for Singeli sources, even though I had yet to unlink them from
> the source directory.
> 
> Is there a preferred method for this kind of build structure in a
> Guix package? I suppose I could do a (cond *) in the make flags…
> maybe referencing a variable for the target? I don't know what
> variable that might be, though, as we would not only be looking for
> an x86_64 target, but specifically that the underlying system
> supports AVX2…
> 
> In general, I would much prefer to keep it as one package. I think it
> is much easier to maintain that way, and makes the user experience
> much easier as well. But I'm sorry to report that I'm unaware of how
> best to implement this, and would greatly appreciate some advice.
My question is: what does singeli even do for cbqn?  If it's a
compiler, can you not simply run that compiler in a separate phase?

> > If not, I think we should try to properly unbundle singeli (as in
> > build an actual singeli package) before adding another package
> > variant.  Then, you could use existing patterns to decide whether
> > to use singeli by making it an input or not.
> 
> As for unbundling singeli: Running singeli requires a version of cbqn
> built with or without singeli support. Building a version of cbqn
> with singeli support requires the /source/ for singeli to be present
> in the build directory at build time, not a precompiled binary.
> Singeli itself is actually just a BQN script[2], and not a compiled
> binary at all, and is a transpiler from BQN to IR/C. It's used in the
> optimized version to transpile/compile the SIMD algorithms (sic, I am
> unfamiliar with this concept).
> 
> In short, to unbundle singeli, we can just avoid including singeli in
> the build, as in the revised cbqn package in the patch.
Good to know.

> We could make a package for singeli that uses an installed bqn binary
> from any cbqn package, but we would still need the sources present at
> build time due to the way they are used and called in the build
> script.
I'm pretty sure that finding the right arguments to copy-build-system
would be the first problem here.  As for the comment from dzaima, I
don't quite understand why you'd need two versions of cbqn.  Assume you
already have one built without singeli, how is it expected to change
once singeli is added?

> Fully decoupling the optimized cbqn from singeli would require
> rewriting the parts of the build that locate and run the singeli
> script, and (I think) is more suited to an upstream patch than a
> package definition. I have opened an issue regarding this possibility
> with upstream as of this email[3].
On that note, do you even need CBQN to run singeli or does any
(conforming) BQN implementation suffice?  For instance, you could try
building BQN with CBQN and then use that to run singeli, or use the
Java BQN.

> (FWIW, I've also opened an issue regarding release tagging[4], though
> from my previous correspondence with upstream I'm fairly certain a
> release tag is not yet something they are comfortable with).
That's fair and well, but to come back to the point made earlier, we
probably won't go to a newer commit unless there's an important
feature, bug fix, etc.  You can spend a lot of time optimizing without
substantially changing anything and trailing every single step on this
way would be a fool's errand.

Cheers

[1] https://github.com/dzaima/CBQN/issues/46#issuecomment-1259950602




Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:01 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 1/8] cbqn: Build without singeli.
Date: Sat, 22 Oct 2022 20:23:21 +0200
* gnu/packages/bqn.scm (cbqn)[inputs]: Remove singeli-sources.
[arguments]<#:make-flags: Replace “o3n-singeli” with “o3”.
<#:phases>: Remove “link-singeli”.
---
 gnu/packages/bqn.scm | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index c4e0f39efb..02f539bb8b 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -182,12 +182,9 @@ (define-public cbqn
     (name "cbqn")
     (outputs '("out" "lib"))
     (arguments
-     (list #:make-flags '(list "shared-o3" "o3n-singeli")
+     (list #:make-flags '(list "shared-o3" "o3")
            #:phases #~(modify-phases %standard-phases
                         (delete 'configure)
-                        (add-before 'build 'link-singeli
-                          (lambda* (#:key inputs #:allow-other-keys)
-                            (symlink #+singeli-sources "Singeli")))
                         (add-before 'build 'generate-bytecode
                           (lambda* (#:key inputs #:allow-other-keys)
                             (system (string-append #+dbqn
@@ -218,7 +215,6 @@ (define-public cbqn
                               (install-file "libcbqn.so" lib)))))))
     (native-inputs (list dbqn
                          bqn-sources
-                         singeli-sources
                          libffi
                          clang-toolchain
                          linux-libre-headers))))

base-commit: bb2701b9111a3d82a82ceaaf2b22b51ecd8ac21f
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:02 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 5/8] gnu: cbqn: Build using GCC.
Date: Sat, 22 Oct 2022 20:43:05 +0200
* gnu/packages/bqn.scm (cbqn-bootstrap, cbqn)[#:make-flags]: Set CC via
‘cc-for-target’.
[inputs]: Remove clang-toolchain.
---
 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 bc714c3d49..fcf2e98bc7 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -142,6 +142,7 @@ (define cbqn-bootstrap
       (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
@@ -156,7 +157,7 @@ (define cbqn-bootstrap
                               (copy-recursively "BQN"
                                                 (string-append #$output
                                                                "/bin/bqn")))))))
-      (native-inputs (list dbqn clang-toolchain bqn-sources))
+      (native-inputs (list dbqn bqn-sources))
       (inputs (list icedtea-8 libffi))
       (synopsis "BQN implementation in C")
       (description "This package provides the reference implementation of
@@ -202,5 +203,4 @@ (define-public cbqn
     (native-inputs (list dbqn
                          bqn-sources
                          libffi
-                         clang-toolchain
                          linux-libre-headers))))
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:02 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 2/8] gnu: Remove singeli-sources.
Date: Sat, 22 Oct 2022 20:25:41 +0200
They aren't currently used to build a package, nor a package themselves.

* gnu/packages/bqn.scm (singeli-sources): Delete variable.
---
 gnu/packages/bqn.scm | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 02f539bb8b..be634d6dfb 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -165,17 +165,6 @@ (define cbqn-bootstrap
       (home-page "https://mlochbaum.github.io/BQN/")
       (license license:gpl3))))
 
-(define singeli-sources
-  (let ((commit "fd17b144483549dbd2bcf23e3a37a09219171a99"))
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://github.com/mlochbaum/Singeli")
-            (commit commit)))
-      (file-name (git-file-name "singeli-sources" commit))
-      (sha256
-       (base32 "1rr4l7ijzcg25n2igi1mzya6qllh5wsrf3m5i429rlgwv1fwvfji")))))
-
 (define-public cbqn
   (package
     (inherit cbqn-bootstrap)
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:02 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 4/8] gnu: cbqn: Rewrite in terms of cbqn-bootstrap.
Date: Sat, 22 Oct 2022 20:34:37 +0200
* gnu/packages/bqn.scm (cbqn)[arguments]: Use substitute-keyword-arguments
to preserve options from cbqn-bootstrap.
---
 gnu/packages/bqn.scm | 59 +++++++++++++++++++++-----------------------
 1 file changed, 28 insertions(+), 31 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 8a1b1dfba2..bc714c3d49 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -171,37 +171,34 @@ (define-public cbqn
     (name "cbqn")
     (outputs '("out" "lib"))
     (arguments
-     (list #:make-flags '(list "shared-o3" "o3")
-           #: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 'check
-                          (lambda* (#:key inputs tests? #:allow-other-keys)
-                            (when tests?
-                              (system (string-append "./BQN -M 1000 \""
-                                                     #+bqn-sources
-                                                     "/test/this.bqn\""))
-                              (map (lambda (x)
-                                     (system (string-append "./BQN ./test/" x
-                                                            ".bqn")))
-                                   '("cmp" "equal" "copy" "random"))
-                              (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")))
-                              (mkdir-p bin)
-                              (copy-recursively "BQN"
-                                                (string-append bin "/bqn"))
-                              (install-file "libcbqn.so" lib)))))))
+     (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
+            (replace 'check
+              (lambda* (#:key inputs tests? #:allow-other-keys)
+                (when tests?
+                  (system (string-append "./BQN -M 1000 \""
+                                         #+bqn-sources
+                                         "/test/this.bqn\""))
+                  (map (lambda (x)
+                         (system (string-append "./BQN ./test/" x
+                                                ".bqn")))
+                       '("cmp" "equal" "copy" "random"))
+                  (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")))
+                  (mkdir-p bin)
+                  (copy-recursively "BQN"
+                                    (string-append bin "/bqn"))
+                  (install-file "libcbqn.so" lib))))))))
     (native-inputs (list dbqn
                          bqn-sources
                          libffi
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:03 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 3/8] gnu: cbqn-bootstrap: Use let-bound revision.
Date: Sat, 22 Oct 2022 20:28:00 +0200
* gnu/packages/bqn.scm (cbqn-bootstrap)[version]: Use let-bound revision.
---
 gnu/packages/bqn.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index be634d6dfb..8a1b1dfba2 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -129,7 +129,7 @@ (define cbqn-bootstrap
          (commit "9c1cbdc99863b1da0116df61cd832137b196dc5c"))
     (package
       (name "cbqn-bootstrap")
-      (version (git-version "0" "1" commit))
+      (version (git-version "0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:03 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 7/8] gnu: cbqn-bootstrap: Install regular files rather
 than copying them recursively.
Date: Sat, 22 Oct 2022 21:01:34 +0200
* gnu/packages/bqn.scm (cbqn-bootstrap)[arguments]: Reindent.
<#:phases>{install}: Use ‘install-file’ rather than ‘copy-recursively’ for
“bqn”.
---
 gnu/packages/bqn.scm | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 700175db16..2b59d5b6ac 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -140,22 +140,23 @@ (define cbqn-bootstrap
                   "0w38fhwf20drkyijy6nfnhmc5g5gw0zmzgmy1q605x57znlj85a2"))))
       (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)
-                              (copy-recursively "BQN"
-                                                (string-append #$output
-                                                               "/bin/bqn")))))))
+       (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")
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:04 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 8/8] gnu: cbqn: Install regular files rather than
 copying them recursively.
Date: Sat, 22 Oct 2022 21:01:12 +0200
* gnu/packages/bqn.scm (cbqn)[#:phases]<install>: Use ‘install-file’ rather
than ‘copy-recursively’ for “bqn”.
---
 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 2b59d5b6ac..e2dc8f85dd 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -197,8 +197,8 @@ (define-public cbqn
                        (lib (string-append (assoc-ref outputs "lib")
                                            "/lib")))
                   (mkdir-p bin)
-                  (copy-recursively "BQN"
-                                    (string-append bin "/bqn"))
+                  (rename-file "BQN" "bqn")
+                  (install-file "bqn" bin)
                   (install-file "libcbqn.so" lib))))))))
     (native-inputs (list dbqn
                          bqn-sources
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sat, 22 Oct 2022 21:25:04 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 58100 <at> debbugs.gnu.org
Cc: Christopher Rodriguez <yewscion <at> gmail.com>
Subject: [PATCH v2 6/8] gnu: dbqn: Install regular files rather than
 copying them recursively.
Date: Sat, 22 Oct 2022 20:59:49 +0200
* gnu/packages/bqn.scm (dbqn)[#:phases]<install>: Use ‘install-file’ rather
than ‘copy-recursively’ for “dbqn”.
---
 gnu/packages/bqn.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index fcf2e98bc7..700175db16 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -92,9 +92,8 @@ (define-public dbqn
                                 (dest-jar (string-append out "/share/java")))
                            (mkdir-p dest-bin)
                            (mkdir-p dest-jar)
-                           (copy-recursively "BQN"
-                                             (string-append dest-bin
-                                                            "/dbqn"))
+                           (rename-file "BQN" "dbqn")
+                           (install-file "dbqn" dest-bin)
                            (install-file "BQN.jar" dest-jar)
                            (substitute* (string-append dest-bin "/dbqn")
                              (("BQN.jar")
-- 
2.38.0





Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sun, 06 Nov 2022 17:40:02 GMT) Full text and rfc822 format available.

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

From: Ludovic Courtès <ludo <at> gnu.org>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: Christopher Rodriguez <yewscion <at> gmail.com>, 58100 <at> debbugs.gnu.org
Subject: Re: bug#58100: cbqn currently targets AVX2
Date: Sun, 06 Nov 2022 18:39:42 +0100
Hi Liliana,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> skribis:

> * gnu/packages/bqn.scm (cbqn)[inputs]: Remove singeli-sources.
> [arguments]<#:make-flags: Replace “o3n-singeli” with “o3”.
> <#:phases>: Remove “link-singeli”.

This series of patches that you sent LGTM!

However, how does it relate to AVX2-specific builds?  Anyhow, as you
suggested in the thread, it’d be a good idea to add a ‘tunable?’
property.

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Sun, 06 Nov 2022 18:27:02 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Christopher Rodriguez <yewscion <at> gmail.com>, 58100 <at> debbugs.gnu.org
Subject: Re: bug#58100: cbqn currently targets AVX2
Date: Sun, 06 Nov 2022 19:25:48 +0100
Am Sonntag, dem 06.11.2022 um 18:39 +0100 schrieb Ludovic Courtès:
> Hi Liliana,
> 
> Liliana Marie Prikler <liliana.prikler <at> gmail.com> skribis:
> 
> > * gnu/packages/bqn.scm (cbqn)[inputs]: Remove singeli-sources.
> > [arguments]<#:make-flags: Replace “o3n-singeli” with “o3”.
> > <#:phases>: Remove “link-singeli”.
> 
> This series of patches that you sent LGTM!
> 
> However, how does it relate to AVX2-specific builds?  
IIUC, singeli is some tool that emits avx2-specific opcodes and the
singeli builds of cbqn use that somehw; I admit, I do not completely
understand what's going on on their side.

> Anyhow, as you suggested in the thread, it’d be a good idea to add a
> ‘tunable?’ property.
Will simply adding (tunable? . #t) as a property be enough?  Also
related to the signeli thing, do we have the means to create special
build flows for tuned packages?

Cheers




Information forwarded to guix-patches <at> gnu.org:
bug#58100; Package guix-patches. (Mon, 07 Nov 2022 13:37:01 GMT) Full text and rfc822 format available.

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

From: Ludovic Courtès <ludo <at> gnu.org>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: Christopher Rodriguez <yewscion <at> gmail.com>, 58100 <at> debbugs.gnu.org
Subject: Re: bug#58100: cbqn currently targets AVX2
Date: Mon, 07 Nov 2022 14:35:58 +0100
Hi,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> skribis:

> Am Sonntag, dem 06.11.2022 um 18:39 +0100 schrieb Ludovic Courtès:
>> Hi Liliana,
>> 
>> Liliana Marie Prikler <liliana.prikler <at> gmail.com> skribis:
>> 
>> > * gnu/packages/bqn.scm (cbqn)[inputs]: Remove singeli-sources.
>> > [arguments]<#:make-flags: Replace “o3n-singeli” with “o3”.
>> > <#:phases>: Remove “link-singeli”.
>> 
>> This series of patches that you sent LGTM!
>> 
>> However, how does it relate to AVX2-specific builds?  
> IIUC, singeli is some tool that emits avx2-specific opcodes and the
> singeli builds of cbqn use that somehw; I admit, I do not completely
> understand what's going on on their side.

Oh, I see.

>> Anyhow, as you suggested in the thread, it’d be a good idea to add a
>> ‘tunable?’ property.
> Will simply adding (tunable? . #t) as a property be enough?  Also
> related to the signeli thing, do we have the means to create special
> build flows for tuned packages?

Yes, ci.guix builds tunable packages for several x86_64 ISA variants,
which are listed in (gnu ci).

Thanks,
Ludo’.




Reply sent to Liliana Marie Prikler <liliana.prikler <at> gmail.com>:
You have taken responsibility. (Mon, 07 Nov 2022 21:04:01 GMT) Full text and rfc822 format available.

Notification sent to Christopher Rodriguez <yewscion <at> gmail.com>:
bug acknowledged by developer. (Mon, 07 Nov 2022 21:04:02 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Christopher Rodriguez <yewscion <at> gmail.com>, 58100-done <at> debbugs.gnu.org
Subject: Re: bug#58100: cbqn currently targets AVX2
Date: Mon, 07 Nov 2022 22:03:25 +0100
Am Montag, dem 07.11.2022 um 14:35 +0100 schrieb Ludovic Courtès:
> Hi,
> 
> Liliana Marie Prikler <liliana.prikler <at> gmail.com> skribis:
> 
> > Am Sonntag, dem 06.11.2022 um 18:39 +0100 schrieb Ludovic Courtès:
> > > Hi Liliana,
> > > 
> > > Liliana Marie Prikler <liliana.prikler <at> gmail.com> skribis:
> > > 
> > > > * gnu/packages/bqn.scm (cbqn)[inputs]: Remove singeli-sources.
> > > > [arguments]<#:make-flags: Replace “o3n-singeli” with “o3”.
> > > > <#:phases>: Remove “link-singeli”.
> > > 
> > > This series of patches that you sent LGTM!
> > > 
> > > However, how does it relate to AVX2-specific builds?  
> > IIUC, singeli is some tool that emits avx2-specific opcodes and the
> > singeli builds of cbqn use that somehw; I admit, I do not
> > completely understand what's going on on their side.
> 
> Oh, I see.
> 
> > > Anyhow, as you suggested in the thread, it’d be a good idea to
> > > add a ‘tunable?’ property.
> > Will simply adding (tunable? . #t) as a property be enough?  Also
> > related to the signeli thing, do we have the means to create
> > special build flows for tuned packages?
> 
> Yes, ci.guix builds tunable packages for several x86_64 ISA variants,
> which are listed in (gnu ci).
Done and pushed.

Cheers




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 06 Dec 2022 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 141 days ago.

Previous Next


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