Subject: Re: [bug#42725] [PATCH] drawpile package (sans upnp)

From: raingloom <[email-masked]>
Date: Sat, 8 Aug 2020 00:50:08 +0200

On Fri, 07 Aug 2020 10:34:22 +0200
Mathieu Othacehe <[email-masked]> wrote:

> Hello,
> 
> > +       (method url-fetch)
> > +       (uri (string-append
> > "https://github.com/drawpile/Drawpile/archive/"
> > +                           version
> > +                           ".tar.gz"))  
> 
> We prefer not to use those github archives that can be re-generated
> and prefer to use "git-fetch" method instead.

Done!

> > +       (sha256
> > +        (base32
> > +         "0brscm95nay31xa1c02n1w144gg9hm8pxwa9sfnis0x5dj2nkrb7"))))
> > +    (build-system qt-build-system)
> > +    (arguments '(#:tests? #f))  
> 
> You should explain why tests are not run with a comment.

It didn't generate a "test" target, but I figured out how to enable it.
Now it runs them! Also enabled some more functionality that could be
useful.

> > +    (native-inputs
> > +     `(("extra-cmake-modules" ,extra-cmake-modules)))
> > +    (inputs
> > +     `(("giflib" ,giflib)
> > +       ("karchive" ,karchive)
> > +       ("kdnssd" ,kdnssd)
> > +       ("libmicrohttpd" ,libmicrohttpd)
> > +       ("libsodium" ,libsodium)
> > +       ("libvpx" ,libvpx)
> > +       ;("miniupnpc" ,miniupnpc) ;; TODO segfaults for some reason
> >  
> 
> No need to comment twice.

Makes it easier to enable the dependency and still keep the TODO note
without causing a syntax error.

> > +       ("qtbase" ,qtbase)
> > +       ("qtkeychain" ,qtkeychain)
> > +       ("qtmultimedia" ,qtmultimedia)
> > +       ("qtsvg" ,qtsvg)))
> > +    (home-page "https://drawpile.net")
> > +    (synopsis "Collaborative drawing program")
> > +    (description
> > +"Drawpile is a drawing program that lets you share the canvas with
> > other users +in real time.
> > +
> > +Some feature highlights:
> > +Runs on Linux, Windows and OSX  
> 
> No need to talk about those operating systems I think.

Done.

> > +Shared canvas using the built-in server or a dedicated server
> > +Record, play back and export drawing sessions
> > +Simple animation support
> > +Layers and blending modes
> > +Text layers
> > +Supports pressure sensitive Wacom tablets
> > +Built-in chat
> > +Supports OpenRaster file format
> > +Encrypted connections using SSL
> > +Automatic port forwarding with UPnP")  
> 
> You could use texinfo to render this list nicely. See "libmemcached"
> package for an example.
> 
> Could you send an updated patch?
> 
> Thanks,
> 
> Mathieu

Thanks for the quick response! Here it is :D
>From 0b0751f31bca2b8861e6ef43e9c5f0fbad43fca7 Mon Sep 17 00:00:00 2001
From: your friendly localhost admin <[email-masked]>
Date: Thu, 6 Aug 2020 00:23:34 +0200
Subject: [PATCH] gnu: Added drawpile (UPnP support pending) at version 2.1.17

* gnu/packages/graphics.scm (drawpile): New variable.
---
 gnu/packages/graphics.scm | 59 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index cdb13c2619..be66bed479 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -49,6 +49,7 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
@@ -59,12 +60,14 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnunet)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jemalloc)
+  #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages pdf)
@@ -81,12 +84,14 @@
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tbb)
+  #:use-module (gnu packages upnp)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix hg-download)
@@ -1431,3 +1436,57 @@ and PC Engine formats")
 the graphics formats of the SNES, Game Boy Color and PC Engine game consoles.
 Automated palette selection is supported.")
     (license license:expat)))
+
+(define-public drawpile
+  (package
+    (name "drawpile")
+    (version "2.1.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/drawpile/Drawpile/archive/"
+                           version
+                           ".tar.gz"))
+       (sha256
+        (base32
+         "0brscm95nay31xa1c02n1w144gg9hm8pxwa9sfnis0x5dj2nkrb7"))))
+    (build-system qt-build-system)
+    (arguments
+     '(#:configure-flags (list "-DTESTS=ON" "-DTOOLS=ON" "-DKIS_TABLET=ON")))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("giflib" ,giflib)
+       ("karchive" ,karchive)
+       ("kdnssd" ,kdnssd)
+       ("libmicrohttpd" ,libmicrohttpd)
+       ("libsodium" ,libsodium)
+       ("libvpx" ,libvpx)
+       ("libxi" ,libxi)
+       ;("miniupnpc" ,miniupnpc) ;; TODO segfaults for some reason
+       ("qtbase" ,qtbase)
+       ("qtkeychain" ,qtkeychain)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtsvg" ,qtsvg)
+       ("qtx11extras" ,qtx11extras)))
+    (home-page "https://drawpile.net")
+    (synopsis "Collaborative drawing program")
+    (description
+"Drawpile is a drawing program that lets you share the canvas with other users
+in real time.
+
+Some feature highlights:
+@itemize
+@item Shared canvas using the built-in server or a dedicated server
+@item Record, play back and export drawing sessions
+@item Simple animation support
+@item Layers and blending modes
+@item Text layers
+@item Supports pressure sensitive Wacom tablets
+@item Built-in chat
+@item Supports OpenRaster file format
+@item Encrypted connections using SSL
+@item Automatic port forwarding with UPnP
+@end itemize")
+    (license license:gpl3+)))
-- 
2.28.0