GNU bug report logs - #52335
[PATCH 2/2] gnu: add package notcurses.scm

Previous Next

Package: guix-patches;

Reported by: Blake Shaw <blake <at> nonconstructivism.com>

Date: Mon, 6 Dec 2021 19:01:01 UTC

Severity: normal

Tags: patch

Merged with 52336

Done: Leo Famulari <leo <at> famulari.name>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 52335 in the body.
You can then email your comments to 52335 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#52335; Package guix-patches. (Mon, 06 Dec 2021 19:01:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Blake Shaw <blake <at> nonconstructivism.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 06 Dec 2021 19:01:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Blake Shaw <blake <at> nonconstructivism.com>
To: guix-patches <at> gnu.org
Cc: Blake Shaw <blake <at> nonconstructivism.com>
Subject: [PATCH 2/2] gnu: add package notcurses.scm
Date: Tue,  7 Dec 2021 02:00:02 +0700
Signed-off-by: Blake Shaw <blake <at> nonconstructivism.com>
---
 gnu/packages/notcurses.scm | 73 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 gnu/packages/notcurses.scm

diff --git a/gnu/packages/notcurses.scm b/gnu/packages/notcurses.scm
new file mode 100644
index 0000000000..00e2fd92db
--- /dev/null
+++ b/gnu/packages/notcurses.scm
@@ -0,0 +1,73 @@
+;;; Copyright © 2021 Blake Shaw <blake <at> nonconstructivism.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 notcurses)
+  #:use-module (guix utils)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix build utils)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages libunistring)
+  #:use-module (ice-9 match))
+
+(define-public notcurses
+  (package
+   (name "notcurses")
+   (version "3.0.0")
+   (source
+    (origin
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://github.com/dankamongmen/notcurses")
+           (commit (string-append "v" version))))
+     (file-name (git-file-name name version))
+         (sha256
+          (base32 "1y9s77m1pp6syfml559d8dvif61y6zjldrdx1zri18q9sr0zqm9m"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f
+                  #:make-flags
+                  (list ,(string-append "CC=" (cc-for-target))
+                   (string-append "prefix="))
+                  #:configure-flags
+                  (map (lambda (s)
+                         (string-append "-D" s))
+                       '("USE_CPP=off"     "USE_COVERAGE=off" ;;here we set the default cmake
+                         "USE_DOXYGEN=off" "USE_DOCTEST=off"  ;;configuration. FSG=FSF approved only
+                         "USE_GPM=off"     "USE_MULTIMEDIA=ffmpeg" ;;other choices based on 
+                         "USE_PANDOC=off"  "FSG_BUILD=ON"))))      ;;reducing package footprint
+      (native-inputs
+       `(("gcc-toolchain" ,gcc)
+         ("ncurses" ,ncurses)
+         ("pkg-config" ,pkg-config)))
+      (inputs
+       `(("ffmpeg" ,ffmpeg)
+         ("libdeflate" ,libdeflate)
+         ("libunistring" ,libunistring)
+         ("zlib" ,zlib)))
+      (synopsis "Library facilitating complex textual user interfaces on modern terminals")
+      (description "Notcurses is a library for building complex 
+textual user interfaces on modern terminals. It does not use ncurses, while it does make use of libtinfo from that package.")
+      (home-page "https://notcurses.com/html/")
+      (license license:asl2.0)))
-- 
2.33.1





Merged 52335 52336. Request was from Leo Famulari <leo <at> famulari.name> to control <at> debbugs.gnu.org. (Tue, 21 Dec 2021 23:24:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#52335; Package guix-patches. (Wed, 22 Dec 2021 03:58:02 GMT) Full text and rfc822 format available.

Message #10 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Blake Shaw via Guix-patches via <guix-patches <at> gnu.org>
Cc: Blake Shaw <blake <at> nonconstructivism.com>, 52335 <at> debbugs.gnu.org
Subject: Re: [bug#52335] [PATCH 2/2] gnu: add package notcurses.scm
Date: Tue, 21 Dec 2021 22:57:41 -0500
[Message part 1 (text/plain, inline)]
On Tue, Dec 07, 2021 at 02:00:02AM +0700, Blake Shaw via Guix-patches via wrote:
> +(define-module (gnu packages notcurses)

Thank you for this patch!

As part of the review process, I made some changes locally, as shown in
the diff below. I've also attached the complete revised patch, which
includes indentation changes that are not shown in the diff. I did not
include the indentation changes in the diff, so that it would be easier
to show what has changed. I think the attached patch is more or less
ready to push. Let me know what you think.

------
diff --git a/gnu/packages/notcurses.scm b/gnu/packages/notcurses.scm
index 00e2fd92db..1fc176c27c 100644
--- a/gnu/packages/notcurses.scm
+++ b/gnu/packages/notcurses.scm
@@ -23,13 +23,13 @@ (define-module (gnu packages notcurses)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages video)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages libunistring)
-  #:use-module (ice-9 match))
+  #:use-module (gnu packages libunistring))
 
 (define-public notcurses
   (package
@@ -46,28 +46,33 @@ (define-public notcurses
           (base32 "1y9s77m1pp6syfml559d8dvif61y6zjldrdx1zri18q9sr0zqm9m"))))
       (build-system cmake-build-system)
       (arguments
-       `(#:tests? #f
-                  #:make-flags
-                  (list ,(string-append "CC=" (cc-for-target))
-                   (string-append "prefix="))
-                  #:configure-flags
-                  (map (lambda (s)
-                         (string-append "-D" s))
-                       '("USE_CPP=off"     "USE_COVERAGE=off" ;;here we set the default cmake
-                         "USE_DOXYGEN=off" "USE_DOCTEST=off"  ;;configuration. FSG=FSF approved only
-                         "USE_GPM=off"     "USE_MULTIMEDIA=ffmpeg" ;;other choices based on 
-                         "USE_PANDOC=off"  "FSG_BUILD=ON"))))      ;;reducing package footprint
+       `(#:make-flags
+         (list (string-append "CC=" ,(cc-for-target)))
+         ;; These flags are documented in 'INSTALL.md' in the source distribution.
+         #:configure-flags
+         '(;; Do not build "coverage"
+           "-DUSE_COVERAGE=off"
+           ;; Do not build HTML documentation
+           "-DUSE_DOXYGEN=off"
+           ;; Don't include mouse support
+           "-DUSE_GPM=off"
+           ;; Use FFmpeg for multimedia support
+           "-DUSE_MULTIMEDIA=ffmpeg"
+           ;; Follow the Debian Free Software Guidelines
+           ;; Yes, 'INSTALL.md' says that "OFF" means to omit non-free code.
+           "-DFSG_BUILD=OFF")))
       (native-inputs
-       `(("gcc-toolchain" ,gcc)
-         ("ncurses" ,ncurses)
-         ("pkg-config" ,pkg-config)))
+       `(("pkg-config" ,pkg-config)
+         ("pandoc" ,pandoc)
+         ("doctest" ,doctest)))
       (inputs
        `(("ffmpeg" ,ffmpeg)
          ("libdeflate" ,libdeflate)
          ("libunistring" ,libunistring)
+         ("ncurses" ,ncurses)
          ("zlib" ,zlib)))
-      (synopsis "Library facilitating complex textual user interfaces on modern terminals")
-      (description "Notcurses is a library for building complex 
-textual user interfaces on modern terminals. It does not use ncurses, while it does make use of libtinfo from that package.")
-      (home-page "https://notcurses.com/html/")
+      (synopsis "Textual user interfaces")
+      (description "Notcurses is a library for building complex textual user
+interfaces on modern terminals.")
+      (home-page "https://notcurses.com")
       (license license:asl2.0)))
------

Concretely, here are the changes that I made:

I enabled the tests. We always run upstream test suites in Guix
packages, unless there is a reason not to. This helps us validate that
the package works properly, which helps us and upstream. This also means
that I added a dependency on doctest.

I removed the "prefix=" make flag. The package was installed correctly
without it, so this change seems okay.

I enabled building with C++. According to README.md, this implementation
is more fully-featured, and in Guix we aim to provide fully-featured
packages.

I build the man pages with Pandoc. Guix packages should include
documentation when it is available. This makes the package depend on
Pandoc.

Regarding DFSG_BUILD, I set it to "OFF". The notcurses INSTALL.md says
this: "DFSG_BUILD=off: leave out all content considered non-free under
the Debian Free Software Guidelines". That means that we want this to be
OFF in order to follow the Debian guidelines. [0] Or is that incorrect?

I also removed GCC from native-inputs. GCC is available "by default"
with cmake-build-system.

I moved the ncurses dependency to "inputs", because the built
package does keep a run-time reference to it. You can consider
native-inputs as things that only need to be used while building [1].

Based on feedback from `guix lint notcurses`, I edited the synopsis and
description. Maybe the description could be longer.

Please let me know what you think about the revised patch, and thanks
again for contributing!

[0] By the way, the DFSG is not equivalent to the FSDG, which is from
the FSF and which we follow. They are certainly similar, but they are
not related.

[1] https://guix.gnu.org/manual/en/html_node/package-Reference.html
[0001-gnu-Add-notcurses.patch (text/plain, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#52335; Package guix-patches. (Wed, 22 Dec 2021 03:59:01 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#52335; Package guix-patches. (Wed, 29 Dec 2021 17:49:01 GMT) Full text and rfc822 format available.

Message #16 received at 52335 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Blake Shaw <blake <at> nonconstructivism.com>
Cc: 52335 <at> debbugs.gnu.org
Subject: Re: [bug#52335] [PATCH 2/2] gnu: add package notcurses.scm
Date: Wed, 29 Dec 2021 12:48:38 -0500
On Wed, Dec 29, 2021 at 06:03:36PM +0700, Blake Shaw wrote:
> Hi Leo,
> 
> Sorry, I had missed your response and just found it when visiting Mumi.
> 
> This is great feedback, and very informative for a new contributor. I
> agree to all points, I had originally tried to keep the file size down
> quite a bit, because with pandoc, c++, et al it nearly triples the
> install size, and I couldn't quite figure out how to make those optional
> as inputs. But if its best to provide a fully-featured over package over
> a slimmed-down version, lets definitely go with that.

Okay, thanks for letting me know.

I found the use of DFSG_BUILD to be confusing, so I asked upstream:

https://github.com/dankamongmen/notcurses/issues/2508

We can push the patch pending clarification of that.




Reply sent to Leo Famulari <leo <at> famulari.name>:
You have taken responsibility. (Wed, 29 Dec 2021 18:22:01 GMT) Full text and rfc822 format available.

Notification sent to Blake Shaw <blake <at> nonconstructivism.com>:
bug acknowledged by developer. (Wed, 29 Dec 2021 18:22:02 GMT) Full text and rfc822 format available.

Message #21 received at 52335-done <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Blake Shaw <blake <at> nonconstructivism.com>
Cc: 52335-done <at> debbugs.gnu.org
Subject: Re: [bug#52335] [PATCH 2/2] gnu: add package notcurses.scm
Date: Wed, 29 Dec 2021 13:20:59 -0500
On Wed, Dec 29, 2021 at 12:48:38PM -0500, Leo Famulari wrote:
> I found the use of DFSG_BUILD to be confusing, so I asked upstream:
> 
> https://github.com/dankamongmen/notcurses/issues/2508

They helpfully clarified that we want this option to be ON. So, I've
done that, partially migrated the package to the "new style" [0], and
pushed as 7022eb6ea0f3be2f0eb58617c607ce34dfbff90a.

Thanks a lot for the contribution!

[0] I only changed the inputs to the new style. Changing the package's
arguments field is future work.
https://guix.gnu.org/en/blog/2021/the-big-change/




Reply sent to Leo Famulari <leo <at> famulari.name>:
You have taken responsibility. (Wed, 29 Dec 2021 18:22:02 GMT) Full text and rfc822 format available.

Notification sent to Blake Shaw <blake <at> nonconstructivism.com>:
bug acknowledged by developer. (Wed, 29 Dec 2021 18:22:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 27 Jan 2022 12:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 61 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.