Message ID | 20190628080358.14910-1-arunisaac@systemreboot.net |
---|---|
State | Accepted |
Headers | show |
Series | [bug#36415] gnu: Add qlogo. | expand |
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.
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")))))) >
> 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!
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.
> 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.
>> 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?
Hi Arun,
> If there's nothing else, may I push qlogo to master?
Yes, please!
Pushed to master. Thank you all for the review! :-)
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+)))