[bug#35086] New package file for BOINC client & server

Message ID 17ee4c77-7bf9-4a4c-b856-f9ca4ff3c7db@www.fastmail.com
State Accepted
Headers show
Series [bug#35086] New package file for BOINC client & server | expand

Checks

Context Check Description
cbaines/applying patch fail Apply failed

Commit Message

Brant Gardner April 2, 2019, 4:24 p.m. UTC
This is my first submission for contributing to Guix, so any feedback or advice is welcomed!

Thank you,

--
Brant Gardner

Comments

Ludovic Courtès April 10, 2019, 3:06 p.m. UTC | #1
Hello Brant,

"Brant Gardner" <brantcgardner@brantware.com> skribis:

> This is my first submission for contributing to Guix, so any feedback or advice is welcomed!

Thanks for joining!

I have some suggestions below, but overall its a great start!

> From 2946bd1c83a2ea224841d22463992be599dfc385 Mon Sep 17 00:00:00 2001
> From: Brant Gardner <brantcgardner@brantware.com>
> Date: Tue, 2 Apr 2019 11:09:45 -0500
> Subject: [PATCH] Added distributed.scm
>
> New package file for BOINC and other distributed-computing projects.  This
> initial file just includes boinc-client and boinc-server, both at version
> 7.14.2.

The convention is to write commit logs in ChangeLog format, as
described at:

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

But you can simply look at git log and mimic what you see.  (You might
also want to take a look at
<https://gnu.org/software/guix/manual/en/html_node/Submitting-Patches.html>
if you havent already.)

As for the module name, what about boinc.scm instead?  Distributed
sounds a bit too generic to me.

> +++ b/gnu/packages/distributed.scm
> @@ -0,0 +1,119 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright .© 2014, 2015 Ludovic Court.¨s <ludo@gnu.org>
> +;;; Copyright .© 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
> +;;; Copyright .© 2018 Tobias Geerinckx-Rice <me@tobias.gr>
> +;;; Copyright .© 2018 Mathieu Othacehe <m.othacehe@gmail.com>

It should be just you here.  :-)

> +  #:use-module (gnu packages autotools)
> +  #:use-module (gnu packages base)
> +  #:use-module (gnu packages compression)
> +  #:use-module (gnu packages databases)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages tls)
> +  #:use-module (gnu packages curl)
> +  #:use-module (gnu packages wxwidgets)
> +  #:use-module (gnu packages gnome)
> +  #:use-module (gnu packages gtk)
> +  #:use-module (gnu packages perl)
> +  #:use-module (gnu packages sqlite)
> +  #:use-module (gnu packages python)
> +  #:use-module (gnu packages python-xyz))

I think you can trim this list.

> +    (synopsis "BOINC lets you help cutting-edge science research using your computer")

What about something like Contribute computing power to research projects?

> +    (description "BOINC is a platform for high-throughput computing on a large
> +scale (thousands or millions of computers).  It can be used for volunteer
> +computing (using consumer devices) or grid computing (using organizational
> +resources).  It supports virtualized, parallel, and GPU-based applications.
> +
> +BOINC is distributed under the LGPL open source license.  It can be used for
> +commercial purposes, and applications need not be open source.")

This last paragraph is unnecessary: everything in Guix is free software,
so we never mention it in descriptions.

> +    (synopsis "BOINC lets you help cutting-edge science research using your computer")
> +    (description "BOINC is a platform for high-throughput computing on a large
> +scale (thousands or millions of computers).  It can be used for volunteer
> +computing (using consumer devices) or grid computing (using organizational
> +resources).  It supports virtualized, parallel, and GPU-based applications.

It would be nice to have a slightly different synopsis and description
for the server and for the client.

Apart from that it LGTM!  Could you double check that guix lint is
happy and send an updated patch?

Thank you!

Ludo.
Brant Gardner April 10, 2019, 8:39 p.m. UTC | #2
Good afternoon;

On Wed, Apr 10, 2019, at 10:06, Ludovic Courtès wrote:
> Hello Brant,
> 
> "Brant Gardner" <brantcgardner@brantware.com> skribis:
> 
> > This is my first submission for contributing to Guix, so any feedback or advice is welcomed!
> 
> Thanks for joining!
> 
> I have some suggestions below, but overall its a great start!
> 
> > From 2946bd1c83a2ea224841d22463992be599dfc385 Mon Sep 17 00:00:00 2001
> > From: Brant Gardner <brantcgardner@brantware.com>
> > Date: Tue, 2 Apr 2019 11:09:45 -0500
> > Subject: [PATCH] Added distributed.scm
> >
> > New package file for BOINC and other distributed-computing projects.  This
> > initial file just includes boinc-client and boinc-server, both at version
> > 7.14.2.
> 
> The convention is to write commit logs in ChangeLog format, as
> described at:
> 
>   https://www.gnu.org/prep/standards/html_node/Change-Logs.html
> 
> But you can simply look at git log and mimic what you see.  (You might
> also want to take a look at
> <https://gnu.org/software/guix/manual/en/html_node/Submitting-Patches.html>
> if you havent already.)
> 

Yeah, I was following the guide but I had accidentally already committed before I read the part on commit log format.  I'll make a new one that follows the pattern this time.

> As for the module name, what about boinc.scm instead?  Distributed
> sounds a bit too generic to me.
>

Done :)
 
> > +++ b/gnu/packages/distributed.scm
> > @@ -0,0 +1,119 @@
> > +;;; GNU Guix --- Functional package management for GNU
> > +;;; Copyright .© 2014, 2015 Ludovic Court.¨s <ludo@gnu.org>
> > +;;; Copyright .© 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
> > +;;; Copyright .© 2018 Tobias Geerinckx-Rice <me@tobias.gr>
> > +;;; Copyright .© 2018 Mathieu Othacehe <m.othacehe@gmail.com>
> 
> It should be just you here.  :-)
> 

Got it, done.

> > +  #:use-module (gnu packages autotools)
> > +  #:use-module (gnu packages base)
> > +  #:use-module (gnu packages compression)
> > +  #:use-module (gnu packages databases)
> > +  #:use-module (gnu packages pkg-config)
> > +  #:use-module (gnu packages tls)
> > +  #:use-module (gnu packages curl)
> > +  #:use-module (gnu packages wxwidgets)
> > +  #:use-module (gnu packages gnome)
> > +  #:use-module (gnu packages gtk)
> > +  #:use-module (gnu packages perl)
> > +  #:use-module (gnu packages sqlite)
> > +  #:use-module (gnu packages python)
> > +  #:use-module (gnu packages python-xyz))
> 
> I think you can trim this list.
> 

I don't believe so, I arrived at that list via 'build, fail on missing dependency, find it, add it, repeat'.  This was the result - I know it's long and varied but it appears to be correct unless I misunderstand how to properly do dependencies.

> > +    (synopsis "BOINC lets you help cutting-edge science research using your computer")
> 
> What about something like Contribute computing power to research projects?
> 

Sure thing - but to be clear, these aren't my words.  I copied/pasted from the project homepage 'About' section.  I figured they wrote it, they knew how to describe it.

> > +    (description "BOINC is a platform for high-throughput computing on a large
> > +scale (thousands or millions of computers).  It can be used for volunteer
> > +computing (using consumer devices) or grid computing (using organizational
> > +resources).  It supports virtualized, parallel, and GPU-based applications.
> > +
> > +BOINC is distributed under the LGPL open source license.  It can be used for
> > +commercial purposes, and applications need not be open source.")
> 
> This last paragraph is unnecessary: everything in Guix is free software,
> so we never mention it in descriptions.

Got it, done.

> 
> > +    (synopsis "BOINC lets you help cutting-edge science research using your computer")
> > +    (description "BOINC is a platform for high-throughput computing on a large
> > +scale (thousands or millions of computers).  It can be used for volunteer
> > +computing (using consumer devices) or grid computing (using organizational
> > +resources).  It supports virtualized, parallel, and GPU-based applications.
> 
> It would be nice to have a slightly different synopsis and description
> for the server and for the client.
>

Understood, I'll go over it and try to differentiate them a bit.

> Apart from that it LGTM!  Could you double check that guix lint is
> happy and send an updated patch?
> 

Hmm.  I already ran 'guix lint' and did everything it advised except for these:

gnu/packages/boinc.scm:45:12: boinc-client@7.14.2: the source URI should not be an autogenerated tarball
gnu/packages/boinc.scm:80:12: boinc-server@7.14.2: the source URI should not be an autogenerated tarball

I understand what it doesn't like, but not what it wanted me to do instead.  Could you advise?

> Thank you!
> 
> Ludo.
>

--
Brant Gardner
Tobias Geerinckx-Rice April 10, 2019, 9:27 p.m. UTC | #3
Brant,

Brant Gardner wrote:
> Hmm.  I already ran 'guix lint' and did everything it advised 
> except for these:
>
> gnu/packages/boinc.scm:45:12: boinc-client@7.14.2: the source 
> URI should not be an autogenerated tarball
> gnu/packages/boinc.scm:80:12: boinc-server@7.14.2: the source 
> URI should not be an autogenerated tarball
>
> I understand what it doesn't like, but not what it wanted me to 
> do instead.  Could you advise?

The linter would be tickled downright pink if you'd replace the 
current SOURCE field with something very similar to:

  (source
    (origin
      (method git-fetch)
      (uri (git-reference
            (url "https://github.com/BOINC/boinc.git")
            (commit (string-append "client-" version))))
      (sha256
       (base32 
       "0blahblahqnjxblaaaaahf2l79ybeepityboop7wh9yayhashies"))))

And so for the server as well.  You'll have to replace (guix 
download) with (guix git-download) and update the hash once more.

Thanks for your first of many patches!

T G-R
Brian Leung Aug. 6, 2019, 8:14 p.m. UTC | #4
What's the status on this? I've been using a Nix-managed installation of
BOINC; it would be nice if it were easily available on Guix.
Brian Leung Sept. 24, 2019, 6:56 a.m. UTC | #5
I modified the recipe to use git-fetch and git-reference. Thanks for your
contribution!

On Tue, Aug 6, 2019 at 10:14 PM Brian Leung <bkleung89@gmail.com> wrote:

> What's the status on this? I've been using a Nix-managed installation of
> BOINC; it would be nice if it were easily available on Guix.
>
Brant Gardner Sept. 24, 2019, 12:21 p.m. UTC | #6
My pleasure, thanks for closing the loop on this since I was not able!

--
Brant Gardner


On Tue, Sep 24, 2019, at 01:56, Brian Leung wrote:
> I modified the recipe to use git-fetch and git-reference. Thanks for your contribution!
> 
> On Tue, Aug 6, 2019 at 10:14 PM Brian Leung <bkleung89@gmail.com> wrote:
>> What's the status on this? I've been using a Nix-managed installation of BOINC; it would be nice if it were easily available on Guix.

Patch

From 2946bd1c83a2ea224841d22463992be599dfc385 Mon Sep 17 00:00:00 2001
From: Brant Gardner <brantcgardner@brantware.com>
Date: Tue, 2 Apr 2019 11:09:45 -0500
Subject: [PATCH] Added distributed.scm

New package file for BOINC and other distributed-computing projects.  This
initial file just includes boinc-client and boinc-server, both at version
7.14.2.
---
 gnu/packages/distributed.scm | 119 +++++++++++++++++++++++++++++++++++
 1 file changed, 119 insertions(+)
 create mode 100644 gnu/packages/distributed.scm

diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm
new file mode 100644
index 0000000000..a126738a52
--- /dev/null
+++ b/gnu/packages/distributed.scm
@@ -0,0 +1,119 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;;
+;;; 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 distributed)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz))
+
+(define-public boinc-client
+  (package
+    (name "boinc-client")
+    (version "7.14.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/BOINC/boinc/archive/master/client-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0kpk78vz6qnjx80rws4vnf2l79yyh3gp786sql7whm95mp2dpssf"))))
+    (build-system gnu-build-system)
+    (arguments '(#:configure-flags '("--disable-server")))
+    (inputs `(("openssl" ,openssl)
+              ("curl" ,curl)
+              ("wxwidgets" ,wxwidgets)
+              ("gtk+" ,gtk+)
+              ("gdk-pixbuf" ,gdk-pixbuf)
+              ("libnotify" ,libnotify)
+              ("sqlite" ,sqlite)
+              ("python" ,python)
+              ("python-pyserial" ,python-pyserial)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "BOINC lets you help cutting-edge science research using your computer")
+    (description "BOINC is a platform for high-throughput computing on a large
+scale (thousands or millions of computers).  It can be used for volunteer
+computing (using consumer devices) or grid computing (using organizational
+resources).  It supports virtualized, parallel, and GPU-based applications.
+
+BOINC is distributed under the LGPL open source license.  It can be used for
+commercial purposes, and applications need not be open source.")
+    (home-page "https://boinc.berkeley.edu/")
+    (license license:gpl3+)))
+
+(define-public boinc-server
+  (package
+    (name "boinc-server")
+    (version "7.14.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/BOINC/boinc/archive/master/client-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0kpk78vz6qnjx80rws4vnf2l79yyh3gp786sql7whm95mp2dpssf"))))
+    (build-system gnu-build-system)
+    (arguments '(#:configure-flags '("--disable-client" "--disable-manager")
+                 #:parallel-build? #f
+                 #:tests? #f)) ; FIXME: Looks like bad test syntax in the
+                               ; source package, 2 tests fail.  Disable for
+                               ; now.
+    (inputs `(("openssl" ,openssl)
+              ("curl" ,curl)
+              ("mariadb" ,mariadb)
+              ("zlib" ,zlib)))
+    (propagated-inputs `(("python" ,python-wrapper)
+                         ("perl" ,perl)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "BOINC lets you help cutting-edge science research using your computer")
+    (description "BOINC is a platform for high-throughput computing on a large
+scale (thousands or millions of computers).  It can be used for volunteer
+computing (using consumer devices) or grid computing (using organizational
+resources).  It supports virtualized, parallel, and GPU-based applications.
+
+BOINC is distributed under the LGPL open source license.  It can be used for
+commercial purposes, and applications need not be open source.")
+    (home-page "https://boinc.berkeley.edu/")
+    (license license:gpl3+)))
-- 
2.21.0