diff mbox series

[bug#36415] gnu: Add qlogo.

Message ID 20190628080358.14910-1-arunisaac@systemreboot.net
State Accepted
Headers show
Series [bug#36415] gnu: Add qlogo. | expand

Commit Message

Arun Isaac June 28, 2019, 8:03 a.m. UTC
* gnu/packages/logo.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Register it.
* gnu/packages/logo.scm (qlogo): New variable.
---
 gnu/local.mk          |  1 +
 gnu/packages/logo.scm | 71 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+)
 create mode 100644 gnu/packages/logo.scm

Comments

swedebugia June 28, 2019, 4:35 p.m. UTC | #1
On 2019-06-28 10:03, Arun Isaac wrote:
> * gnu/packages/logo.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Register it.
> * gnu/packages/logo.scm (qlogo): New variable.
> ---
>   gnu/local.mk          |  1 +
>   gnu/packages/logo.scm | 71 +++++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 72 insertions(+)
>   create mode 100644 gnu/packages/logo.scm
> 
> diff --git a/gnu/local.mk b/gnu/local.mk
> index f5d53b49b8..17630de911 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -299,6 +299,7 @@ GNU_SYSTEM_MODULES =				\
>     %D%/packages/llvm.scm				\
>     %D%/packages/lout.scm				\
>     %D%/packages/logging.scm			\
> +  %D%/packages/logo.scm				\
>     %D%/packages/lolcode.scm                      \
>     %D%/packages/lsof.scm				\
>     %D%/packages/lua.scm				\
> diff --git a/gnu/packages/logo.scm b/gnu/packages/logo.scm
> new file mode 100644
> index 0000000000..17c3990a94
> --- /dev/null
> +++ b/gnu/packages/logo.scm
> @@ -0,0 +1,71 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Arun Isaac<arunisaac@systemreboot.net>
> +;;;
> +;;; 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 logo)
> +  #:use-module (gnu packages qt)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix download)
> +  #:use-module (guix packages)
> +  #:use-module (guix build-system gnu))
> +
> +(define-public qlogo
> +  (package
> +    (name "qlogo")
> +    (version "0.92")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append"https://qlogo.org/assets/sources/QLogo-"
> +                           version ".tgz"))
> +       (sha256
> +        (base32
> +         "0cpyj1ji6hjy7zzz05672f0j6fr0mwpc1y3sq36hhkv2fkpidw22"))))
> +    (build-system gnu-build-system)
> +    (inputs
> +     `(("qtbase" ,qtbase)))
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'configure
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (substitute* "QLogo.pro"
> +               (("target\\.path = /usr/bin")
> +                (string-append "target.path = "
> +                               (assoc-ref outputs "out") "/bin")))
> +             (invoke "qmake" "QLogo.pro")))
> +         ;; The check phase rebuilds the source for tests. So, it needs to be
> +         ;; run after the install phase has installed the outputs of the build
> +         ;; phase.
> +         (delete 'check)
> +         (add-after 'install 'check
> +           (lambda _
> +             ;; Clean files created by the build phase.
> +             (invoke "make" "clean")
> +             ;; QLogo tries to create its "dribble file" in the home
> +             ;; directory. So, set HOME.
> +             (setenv "HOME" "/tmp")
> +             ;; Build and run tests.
> +             (invoke "qmake" "TestQLogo.pro")
> +             (invoke "make" "-j" (number->string (parallel-job-count)))
> +             (invoke "./testqlogo"))))))
> +    (home-page"https://qlogo.org")
> +    (synopsis "Logo interpreter using Qt and OpenGL")
> +    (description "QLogo is an interpreter for the Logo language written in C++
> +using Qt and OpenGL.  Specifically, it mimics, as reasonably as possible, the
> +UCBLogo interpreter.")
> +    (license license:gpl2+)))
> -- 2.22.0
> 

I got this when running rounds=2:
The following builds are still in progress:
   /gnu/store/yv7gjrplyym3arqi6qqiiqy3l4wzszp3-qlogo-0.92.drv
   /gnu/store/ivln0c98vr9n8j25alx1dg1gbzpja11k-qtbase-5.11.3.drv
   /gnu/store/ysv72wwn0gfjiqx2y4rxbf0gnhiv94yp-cups-2.2.11.drv
   /gnu/store/mimhpwdwik9madwir21a2d0z6i1in7j0-cups-filters-1.23.0.drv
   /gnu/store/syc8fwdl3mz2kxncd1k2mkqq4mslvxyv-qlogo-0.92.drv

I'm interpreting this as qlogo is not reproducible, no?

Besides that LGTM.
Efraim Flashner July 2, 2019, 7:21 a.m. UTC | #2
On Fri, Jun 28, 2019 at 01:33:57PM +0530, Arun Isaac wrote:
> +         ;; The check phase rebuilds the source for tests. So, it needs to be
> +         ;; run after the install phase has installed the outputs of the build
> +         ;; phase.
> +         (delete 'check)
> +         (add-after 'install 'check
> +           (lambda _
> +             ;; Clean files created by the build phase.
> +             (invoke "make" "clean")
> +             ;; QLogo tries to create its "dribble file" in the home
> +             ;; directory. So, set HOME.
> +             (setenv "HOME" "/tmp")
> +             ;; Build and run tests.
> +             (invoke "qmake" "TestQLogo.pro")

Doesn't this efectively just rebuild the binary we just built in the
'configure and 'build phases?

> +             (invoke "make" "-j" (number->string (parallel-job-count)))
> +             (invoke "./testqlogo"))))))
>
Arun Isaac July 2, 2019, 8:36 a.m. UTC | #3
> I got this when running rounds=2:
> The following builds are still in progress:
>    /gnu/store/yv7gjrplyym3arqi6qqiiqy3l4wzszp3-qlogo-0.92.drv
>    /gnu/store/ivln0c98vr9n8j25alx1dg1gbzpja11k-qtbase-5.11.3.drv
>    /gnu/store/ysv72wwn0gfjiqx2y4rxbf0gnhiv94yp-cups-2.2.11.drv
>    /gnu/store/mimhpwdwik9madwir21a2d0z6i1in7j0-cups-filters-1.23.0.drv
>    /gnu/store/syc8fwdl3mz2kxncd1k2mkqq4mslvxyv-qlogo-0.92.drv

I get a similar message too.

> I'm interpreting this as qlogo is not reproducible, no?

I don't know. I have never understood how reproducibility checking works
in Guix. Shouldn't --rounds=2 cause `guix build' to error out if there
is some non-determinism? In the above case, `guix build' is not erroring
out. It is merely saying that "the following builds are still in
progress". I don't know how to interpret that.

Any pointers about how to proceed with debugging this further would be
very helpful. I've tried reading the relevant sections in the manual,
but I didn't find any insight. :-(

Thanks!
Ricardo Wurmus July 2, 2019, 8:50 a.m. UTC | #4
Arun Isaac <arunisaac@systemreboot.net> writes:

>> I got this when running rounds=2:
>> The following builds are still in progress:
>>    /gnu/store/yv7gjrplyym3arqi6qqiiqy3l4wzszp3-qlogo-0.92.drv
>>    /gnu/store/ivln0c98vr9n8j25alx1dg1gbzpja11k-qtbase-5.11.3.drv
>>    /gnu/store/ysv72wwn0gfjiqx2y4rxbf0gnhiv94yp-cups-2.2.11.drv
>>    /gnu/store/mimhpwdwik9madwir21a2d0z6i1in7j0-cups-filters-1.23.0.drv
>>    /gnu/store/syc8fwdl3mz2kxncd1k2mkqq4mslvxyv-qlogo-0.92.drv
>
> I get a similar message too.
>
>> I'm interpreting this as qlogo is not reproducible, no?
>
> I don't know. I have never understood how reproducibility checking works
> in Guix. Shouldn't --rounds=2 cause `guix build' to error out if there
> is some non-determinism?

Yes.

This might be a regression.

Build being reported as “in progress” is a feature.  It’s used to
indicate remaining builds when more than one thing is being built.

In this case, though, it seems like a bug.

To test for reproducibility in this case you may want to use “--check”
after building the thing once.
Arun Isaac July 4, 2019, 4:40 p.m. UTC | #5
> On Fri, Jun 28, 2019 at 01:33:57PM +0530, Arun Isaac wrote:
>> +         ;; The check phase rebuilds the source for tests. So, it needs to be
>> +         ;; run after the install phase has installed the outputs of the build
>> +         ;; phase.
>> +         (delete 'check)
>> +         (add-after 'install 'check
>> +           (lambda _
>> +             ;; Clean files created by the build phase.
>> +             (invoke "make" "clean")
>> +             ;; QLogo tries to create its "dribble file" in the home
>> +             ;; directory. So, set HOME.
>> +             (setenv "HOME" "/tmp")
>> +             ;; Build and run tests.
>> +             (invoke "qmake" "TestQLogo.pro")
>
> Doesn't this efectively just rebuild the binary we just built in the
> 'configure and 'build phases?

No. There are two qmake project files -- QLogo.pro and
TestQLogo.pro. QLogo.pro builds the "QLogo" executable and TestQLogo.pro
builds the "testqlogo" executable. "QLogo" is the actual qlogo
executable that we install. "testqlogo" simply runs the tests.
Arun Isaac July 4, 2019, 5:11 p.m. UTC | #6
>> I don't know. I have never understood how reproducibility checking works
>> in Guix. Shouldn't --rounds=2 cause `guix build' to error out if there
>> is some non-determinism?
>
> Yes.
>
> This might be a regression.
>
> Build being reported as “in progress” is a feature.  It’s used to
> indicate remaining builds when more than one thing is being built.
>
> In this case, though, it seems like a bug.

Ok.

> To test for reproducibility in this case you may want to use “--check”
> after building the thing once.

With `guix build --no-grafts --check qlogo', I get no error. I assume
that means qlogo is reproducible.

Without '--no-grafts', I just see a graft happening, qlogo is not
rebuilt. Output without '--no-grafts' follows.

The following graft will be made:
   /gnu/store/vamlyscnwndzmq66whrd71ww31jnrz7v-qlogo-0.92.drv
applying 2 grafts for /gnu/store/vamlyscnwndzmq66whrd71ww31jnrz7v-qlogo-0.92.drv...
grafting '/gnu/store/hmnchnawfv8ngl4wh15ni3ychr5ccb9w-qlogo-0.92' -> '/gnu/store/85lialf1aich7b51a77afj187qk32n7h-qlogo-0.92'...
successfully built /gnu/store/vamlyscnwndzmq66whrd71ww31jnrz7v-qlogo-0.92.drv
/gnu/store/85lialf1aich7b51a77afj187qk32n7h-qlogo-0.92

If there's nothing else, may I push qlogo to master?
Ricardo Wurmus July 4, 2019, 7:30 p.m. UTC | #7
Hi Arun,

> If there's nothing else, may I push qlogo to master?

Yes, please!
Arun Isaac July 5, 2019, 7:59 a.m. UTC | #8
Pushed to master. Thank you all for the review! :-)
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f5d53b49b8..17630de911 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -299,6 +299,7 @@  GNU_SYSTEM_MODULES =				\
   %D%/packages/llvm.scm				\
   %D%/packages/lout.scm				\
   %D%/packages/logging.scm			\
+  %D%/packages/logo.scm				\
   %D%/packages/lolcode.scm                      \
   %D%/packages/lsof.scm				\
   %D%/packages/lua.scm				\
diff --git a/gnu/packages/logo.scm b/gnu/packages/logo.scm
new file mode 100644
index 0000000000..17c3990a94
--- /dev/null
+++ b/gnu/packages/logo.scm
@@ -0,0 +1,71 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; 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 logo)
+  #:use-module (gnu packages qt)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu))
+
+(define-public qlogo
+  (package
+    (name "qlogo")
+    (version "0.92")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://qlogo.org/assets/sources/QLogo-"
+                           version ".tgz"))
+       (sha256
+        (base32
+         "0cpyj1ji6hjy7zzz05672f0j6fr0mwpc1y3sq36hhkv2fkpidw22"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("qtbase" ,qtbase)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "QLogo.pro"
+               (("target\\.path = /usr/bin")
+                (string-append "target.path = "
+                               (assoc-ref outputs "out") "/bin")))
+             (invoke "qmake" "QLogo.pro")))
+         ;; The check phase rebuilds the source for tests. So, it needs to be
+         ;; run after the install phase has installed the outputs of the build
+         ;; phase.
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda _
+             ;; Clean files created by the build phase.
+             (invoke "make" "clean")
+             ;; QLogo tries to create its "dribble file" in the home
+             ;; directory. So, set HOME.
+             (setenv "HOME" "/tmp")
+             ;; Build and run tests.
+             (invoke "qmake" "TestQLogo.pro")
+             (invoke "make" "-j" (number->string (parallel-job-count)))
+             (invoke "./testqlogo"))))))
+    (home-page "https://qlogo.org")
+    (synopsis "Logo interpreter using Qt and OpenGL")
+    (description "QLogo is an interpreter for the Logo language written in C++
+using Qt and OpenGL.  Specifically, it mimics, as reasonably as possible, the
+UCBLogo interpreter.")
+    (license license:gpl2+)))