Subject: [bug#34449] [PATCH] gnu: Add trydiffoscope.

From: Vagrant Cascadian <[email-masked]>
Date: Wed, 13 Feb 2019 13:43:13 -0800

On 2019-02-12, Leo Famulari wrote:
> On Tue, Feb 12, 2019 at 12:16:42AM -0800, Vagrant Cascadian wrote:
>> On 2019-02-12, Julien Lepiller wrote:
>> >>+    (synopsis "Compare files and archives in depth")
>
> This synopsis doesn't make clear that this is a client for a remote
> service. Can you rewrite it?
>
>> >>+    (description
>> >>+     "This is a minimal diffoscope client that connects to the
>> >>service:
>
> Also, I think it's better to replace "diffoscope client" with something
> like "client for the remote diffoscope service located at [...]" since
> diffoscope is not inherently a client-service tool. Also it would be
> great to mention the full diffoscope package :)
>
> Can you send an updated patch?

>> > Iiuc, this is a client to connect to a service that runs diffoscope
>> > for you. But we already have diffoscope, so what's the point?
>> 
>> Yes, that's the jist of it.  The main advantage is that it has a much
>> smaller dependency chain locally.
>> 
>> I find it useful on some of the not-particularly-fast ARM systems I've
>> been running GNU Guix, where storage may be limited or slow, and
>> substitutes may not be available as often, and build times
>> are... remarkable.
>
> Yes, and diffoscope runs can also be really expensive. It's nice to
> offload them.
>
> Also, if the service makes statements about whether submissions are
> logged or made public, can you put that in the package description?

I couldn't really think of a straightforward way to mention the
diffoscope package, but the attached patch updates the synopsis and
description to address the other mentioned issues.

>> > What do you think?
>
> We can have SaaSS in Guix. There are already some packages that are
> SaaSS. So I think this package is okay.
>
> It's "extra okay" in my opinion since the service is AGPL, part of
> Debian, and we have a package for the tool in question.
>
> Guix is developed under the Free System Distribution Guidelines, which
> don't mention remote services or SaaSS at all:
>
> https://www.gnu.org/distros/free-system-distribution-guidelines.en.html
>
> And some discussion on the subject of services in the context of free
> software that largely reflect how we handle SaaSS in Guix:
>
> https://www.gnu.org/philosophy/network-services-arent-free-or-nonfree.en.html

Thanks for sharing your perspective and links to further reading on
these issues!  It really helps to get a feel for the norms of the
project.

live well,
  vagrant

From 54b99d80b90a9f56fa95654a4b1bf254acb27f9c Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <[email-masked]>
Date: Mon, 11 Feb 2019 20:21:39 +0000
Subject: [PATCH] gnu: Add trydiffoscope.

* gnu/packages/package-management (trydiffoscope): New variable.
---
 gnu/packages/package-management.scm | 48 +++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index af9667cd91..51d6698ee0 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -606,6 +606,54 @@ various binary formats into more human readable forms to compare them.  It can
 compare two tarballs, ISO images, or PDFs just as easily.")
     (license license:gpl3+)))
 
+(define-public trydiffoscope
+ (package
+   (name "trydiffoscope")
+   (version "67.0.1")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
+            (commit version)))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((share (string-append (assoc-ref outputs "out") "/usr/share/")))
+               (mkdir-p (string-append share "/man/man1/" ))
+               (invoke "rst2man.py"
+                       "trydiffoscope.1.rst"
+                       (string-append share "/man/man1/trydiffoscope.1"))
+               (mkdir-p (string-append share "/doc/" ,name "-" ,version))
+               (install-file "./README.rst"
+                          (string-append share "/doc/" ,name "-" ,version))))))))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("python-docutils" ,python-docutils)))
+    (build-system python-build-system)
+    (home-page "https://try.diffoscope.org")
+    (synopsis "Client for remote service to compare files and archives in depth")
+    (description
+     "This is a client for the remote diffoscope service located at:
+
+https://try.diffoscope.org
+
+Diffoscope tries to get to the bottom of what makes files or directories
+different.  It recursively unpacks archives of many kinds and transforms
+various binary formats into more human readable forms to compare them.  It can
+compare two tarballs, ISO images, or PDFs just as easily.
+
+Results are displayed by default, stored as local text or html files, or made
+available via a URL on https://try.diffoscope.org. Results stored on the
+server are purged after 30 days.")
+    (license license:gpl3+)))
+
 (define-public python-anaconda-client
   (package
     (name "python-anaconda-client")
-- 
2.20.1