diff mbox series

[bug#41040] Package Definition for QDirStat

Message ID 27uwM7nMqpAz-RfKtxXzIOJWs0UnmDO3vqxoqkN1VeXR7GHQJTCgM5B0f8bCMuG2y5QsbCDj_AScqxM-4c1NO5YTf-ZAg3psDt-_FC27LJI=@protonmail.com
State New
Headers show
Series [bug#41040] Package Definition for QDirStat | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job

Commit Message

Deslauriers, Douglas via Guix-patches" via May 3, 2020, 12:28 a.m. UTC
Here is a package definition for QDirStat, an excellent tool for
checking what files are taking up space on your system.  This is
my first guix module and it was made with help from Ryan Prior
(github.com/sponsors/ryanprior).  I have confirmed that it builds
and runs on aarch64 but the only system I have available is this
fairly anemic arm laptop so I haven't tested the other
architectures.  Suggestions, testing, questions, comments and
education welcomed.



From 9e56b8c2f5602c20ee5796de7af019ef640167cb Mon Sep 17 00:00:00 2001
From: Thovthe <thovthe@protonmail.com>
Date: Sat, 2 May 2020 22:48:30 +0000
Subject: [PATCH] 2020-05-02  Thovthe  thovthe@protonmail.com

* added new package definition for QDirStat at gnu/packages/qdirstat.scm
---
 gnu/packages/qdirstat.scm | 46 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 gnu/packages/qdirstat.scm

--
2.26.1

Comments

Jack Hill May 5, 2020, 4:01 a.m. UTC | #1
Thovthe,

On Sun, 3 May 2020, Thovthe via Guix-patches via wrote:

> Here is a package definition for QDirStat, an excellent tool for
> checking what files are taking up space on your system.  This is
> my first guix module and it was made with help from Ryan Prior
> (github.com/sponsors/ryanprior).  I have confirmed that it builds
> and runs on aarch64 but the only system I have available is this
> fairly anemic arm laptop so I haven't tested the other
> architectures.  Suggestions, testing, questions, comments and
> education welcomed.

Thanks for contributing this patch to Guix! I have some suggestions for 
how it can be cleaned up so that it can be included in the distribution.

> From 9e56b8c2f5602c20ee5796de7af019ef640167cb Mon Sep 17 00:00:00 2001
> From: Thovthe <thovthe@protonmail.com>
> Date: Sat, 2 May 2020 22:48:30 +0000
> Subject: [PATCH] 2020-05-02  Thovthe  thovthe@protonmail.com
>
> * added new package definition for QDirStat at gnu/packages/qdirstat.scm

Guix uses a very structured changelog format for commit messages. I find 
that the best way to figure it out is to look at the existing git log. In 
this case the commit message should be something like:

```
gnu: Add qdirstat.

* gnu/packages/qdirstat.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
```

> ---
> gnu/packages/qdirstat.scm | 46 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 46 insertions(+)
> create mode 100644 gnu/packages/qdirstat.scm
>
> diff --git a/gnu/packages/qdirstat.scm b/gnu/packages/qdirstat.scm
> new file mode 100644
> index 0000000000..91581a206e
> --- /dev/null
> +++ b/gnu/packages/qdirstat.scm

As you may have guessed from my proposed commit message, when adding a new 
file, you should also add it to the appropriate section in gnu/local.mk

> @@ -0,0 +1,46 @@
> +(define-module (qdirstat)

The module name should be (gnu packages qdirstat) to match the file path 
of the module.

If you'll permit me to speculate a little bit: I suspect that you 
developed this package outside of the main Guix repository. You can test 
the patches locally on your end by applying them to a git checkout of 
the guix repository and running guix from that checkout. See the manual 
pages on Building from Git and Running Guix Before it is Installed.

https://guix.gnu.org/manual/en/html_node/Building-from-Git.html
https://guix.gnu.org/manual/en/html_node/Running-Guix-Before-It-Is-Installed.html

> +  #:use-module (gnu packages qt)
> +  #:use-module (gnu packages compression)
> +  #:use-module (guix build-system gnu)
> +  #:use-module (guix git-download)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages))

Since this is a new file, let's go ahead and sort these alphabetically.

> +(define-public qdirstat
> +  (package
> +    (name "qdirstat")
> +    (version "1.6.1")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/shundhammer/qdirstat.git")
> +             (commit version)))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32 "0q77a347qv1aka6sni6l03zh5jzyy9s74aygg554r73g01kxczpb"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'configure
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (invoke "qmake"
> +                     (string-append "PREFIX="
> +                                    (assoc-ref outputs "out"))
> +                     (string-append "INSTALL_PREFIX="
> +                   (assoc-ref outputs "out"))))))))

It is our custom to have all phases return #t

> +
> +    (inputs
> +     `(("qtbase" ,qtbase)))

I think that perl should be added as input, so that the #! line of 
qdirstat-cache-writer can be patched to refer to a perl in the store.

> +    (native-inputs
> +     `(("zlib" ,zlib)

I think zlib should be an input rather than a native-input since the code 
seems to link to it. Remember that the reason for native-inputs verses 
inputs is that native-inputs are needed on the host side when cross 
compiling.

> +       ("qttools" ,qttools)))
> +    (home-page "https://github.com/shundhammer/qdirstat")
> +    (synopsis "Graphical disk space inspection utility")
> +    (description
> +     "QDirStat is a graphical application to show where your disk space has
> +gone and to help you to clean it up.  Shaded boxes represent files and files
> +are grouped by directory structure."  )

Some formatting nitpicks: you can go ahead and start the description on 
the same line as "(description". Also there is an extra space between the 
closing quote and closing parentheses.

The best terms I found when searching for similar packages that we already 
have in Guix where, "disk usage", so I think it would be good idea to work 
usage into the synopsis or description somehow. Perhaps change the 
synopsis to say, "disk usage inspection" or the description to say, "show 
your disk usage and help you clean it up."

> +    (license license:gpl2+)))

qdirstat-cache-writer has a different license in its header. It's an … 
interesting licence :) I think it's free software, so eligable for 
inclusion in Guix, but probably worth recording here, so that the licence 
field becomes:

(license (list license:gpl2+
                license:non-copyleft)) ; scripts/qdirstat-cache-writer

For bonus points, it might be nice to move qdirstat-cache-writer to its 
own output since it is made to be run independently of QDirStat and that 
way it could be installed without pulling in all the C++ and Graphical 
dependencies.

Can you send an updated patch?

Thanks again,
Jack
Jack Hill May 14, 2020, 12:36 a.m. UTC | #2
On Tue, 5 May 2020, Jack Hill wrote:

> Thovthe,
>
> On Sun, 3 May 2020, Thovthe via Guix-patches via wrote:
>
>> Here is a package definition for QDirStat, an excellent tool for
>> checking what files are taking up space on your system.  This is
>> my first guix module and it was made with help from Ryan Prior
>> (github.com/sponsors/ryanprior).  I have confirmed that it builds
>> and runs on aarch64 but the only system I have available is this
>> fairly anemic arm laptop so I haven't tested the other
>> architectures.  Suggestions, testing, questions, comments and
>> education welcomed.
>
> Thanks for contributing this patch to Guix! I have some suggestions for how 
> it can be cleaned up so that it can be included in the distribution.

Thovthe,

I'd like to follow up to see if you've had a chance to consider my 
comments. No pressure to work on it right now, but if you need help or 
have additional questions, just let us know. It will be great to get this 
package in Guix.

Best,
Jack
diff mbox series

Patch

diff --git a/gnu/packages/qdirstat.scm b/gnu/packages/qdirstat.scm
new file mode 100644
index 0000000000..91581a206e
--- /dev/null
+++ b/gnu/packages/qdirstat.scm
@@ -0,0 +1,46 @@ 
+(define-module (qdirstat)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages compression)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+
+(define-public qdirstat
+  (package
+    (name "qdirstat")
+    (version "1.6.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/shundhammer/qdirstat.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0q77a347qv1aka6sni6l03zh5jzyy9s74aygg554r73g01kxczpb"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "qmake"
+                     (string-append "PREFIX="
+                                    (assoc-ref outputs "out"))
+                     (string-append "INSTALL_PREFIX="
+                                    (assoc-ref outputs "out"))))))))
+
+    (inputs
+     `(("qtbase" ,qtbase)))
+    (native-inputs
+     `(("zlib" ,zlib)
+       ("qttools" ,qttools)))
+    (home-page "https://github.com/shundhammer/qdirstat")
+    (synopsis "Graphical disk space inspection utility")
+    (description
+     "QDirStat is a graphical application to show where your disk space has
+gone and to help you to clean it up.  Shaded boxes represent files and files
+are grouped by directory structure."  )
+    (license license:gpl2+)))