* [bug#52189] [PATCH] gnu: Add notcurses
@ 2021-11-30 0:24 Blake Shaw via Guix-patches via
2021-12-01 16:01 ` Nicolas Goaziou
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Blake Shaw via Guix-patches via @ 2021-11-30 0:24 UTC (permalink / raw)
To: 52189; +Cc: Blake Shaw
---
gnu/packages/notcurses.scm | 71 ++++++++++++++++++++++++++++++++++++++
1 file changed, 71 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..898903628c
--- /dev/null
+++ b/gnu/packages/notcurses.scm
@@ -0,0 +1,71 @@
+(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
+ (let ((commit "d15eb6003cbd65f11163916261cf6cd5600c77fa"))
+ (package
+ (name "notcurses")
+ (version "2.4.9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dankamongmen/notcurses")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "10jf6iai1r0xafrgaz978y9bqlaw1gvd11gc0yynwwp6rcs97g17"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f
+ #:build-type "-DVAR=val"
+ #:make-flags
+ (list
+ (string-append "prefix="
+ (assoc-ref %outputs "out"))
+ "CC=gcc")
+ #:configure-flags
+ (map (lambda (s)
+ (string-append "-D" s))
+ '("USE_CPP=off" "USE_COVERAGE=off"
+ "USE_DOXYGEN=off" "USE_DOCTEST=off"
+ "USE_GPM=off" "USE_MULTIMEDIA=ffmpeg"
+ "USE_PANDOC=off" "FSG_BUILD=ON"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'patch-makefile-shell
+ (lambda _
+ (setenv "HOME" "/tmp")))
+ (add-before 'build 'set-prefix-in-makefile
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "Makefile"
+ (("PREFIX =.*")
+ (string-append "PREFIX = " out "\n")))
+ #true))))))
+ (native-inputs
+ `(("ncurses" ,ncurses)
+ ("gcc-toolchain" ,gcc-10)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("zlib" ,zlib)
+ ("ffmpeg" ,ffmpeg)
+ ("libunistring" ,libunistring)))
+ (synopsis "Not-ncurses: A library facilitating complex TUIs on modern terminals")
+ (description "Supporting vivid colors, multimedia, threads, & Unicode to the max.")
+ (home-page "https://notcurses.com/html/")
+ (license license:asl2.0))))
--
2.33.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#52189] [PATCH] gnu: Add notcurses
2021-11-30 0:24 [bug#52189] [PATCH] gnu: Add notcurses Blake Shaw via Guix-patches via
@ 2021-12-01 16:01 ` Nicolas Goaziou
2021-12-02 21:04 ` Blake Shaw via Guix-patches via
2021-12-02 22:20 ` Blake Shaw via Guix-patches via
2021-12-02 22:30 ` Blake Shaw via Guix-patches via
2023-09-01 21:43 ` bug#52189: " Vagrant Cascadian
2 siblings, 2 replies; 7+ messages in thread
From: Nicolas Goaziou @ 2021-12-01 16:01 UTC (permalink / raw)
To: 52189; +Cc: blake
Hello,
Blake Shaw via Guix-patches via <guix-patches@gnu.org> writes:
Thank you. Some comments follow.
> gnu/packages/notcurses.scm | 71 ++++++++++++++++++++++++++++++++++++++
I don't think we should create a new file just for this package. Also,
new files need to be registered in "gnu/local.mk".
Maybe this should go into... "ncurses.scm" (!). At a later time, we may
rename ncurse.scm into tui.scm or some such.
> +(define-public notcurses
> + (let ((commit "d15eb6003cbd65f11163916261cf6cd5600c77fa"))
Upstream use tags. It might be more readable. You'll need a variable for
the code name, tho. In any case, a comment is warranted explaining the
situation.
> + (sha256
> + (base32
> + "10jf6iai1r0xafrgaz978y9bqlaw1gvd11gc0yynwwp6rcs97g17"))))
Nitpick: string should go on the same line as base32.
> + (build-system cmake-build-system)
> + (arguments
> + `(#:tests? #f
> + #:build-type "-DVAR=val"
Indentation is off. You may want to use "etc/indent-code.el" script.
The build-type value above is suspicious.
> + #:make-flags
> + (list
> + (string-append "prefix="
> + (assoc-ref %outputs "out"))
> + "CC=gcc")
This is not cross-compilation friendly. The above should be:
(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"
> + "USE_DOXYGEN=off" "USE_DOCTEST=off"
> + "USE_GPM=off" "USE_MULTIMEDIA=ffmpeg"
> + "USE_PANDOC=off" "FSG_BUILD=ON"))
> + #:phases
> + (modify-phases %standard-phases
> + (add-before 'build 'patch-makefile-shell
> + (lambda _
> + (setenv "HOME" "/tmp")))
Is the phase above required for tests? If so, could you add a comment
about it?
> + (add-before 'build 'set-prefix-in-makefile
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let ((out (assoc-ref outputs "out")))
> + (substitute* "Makefile"
> + (("PREFIX =.*")
> + (string-append "PREFIX = " out "\n")))
> + #true))))))
The trailing #true is not required anywore. You can drop it.
> + (native-inputs
> + `(("ncurses" ,ncurses)
> + ("gcc-toolchain" ,gcc-10)
Could you explain why gcc-10 must be used?
> + ("pkg-config" ,pkg-config)))
> + (inputs
> + `(("zlib" ,zlib)
> + ("ffmpeg" ,ffmpeg)
> + ("libunistring" ,libunistring)))
Pleas order inputs alphabetically.
> + (synopsis "Not-ncurses: A library facilitating complex TUIs on modern terminals")
I suggest:
"Library for building textual user interfaces on modern terminals"
> + (description "Supporting vivid colors, multimedia, threads, & Unicode to the max.")
The description is not terribly useful, and sounds like an ad. Maybe:
Notcurses is a library for building complex, textual user interfaces
(TUIs) on modern terminal emulators. It does not use Ncurses, though
it does make use of libtinfo from that package.
The second sentence above may even be dropped. Up to you.
Could you send an updated patch?
Regards,
--
Nicolas Goaziou
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#52189] [PATCH] gnu: Add notcurses
2021-12-01 16:01 ` Nicolas Goaziou
@ 2021-12-02 21:04 ` Blake Shaw via Guix-patches via
2021-12-03 20:47 ` Nicolas Goaziou
2021-12-02 22:20 ` Blake Shaw via Guix-patches via
1 sibling, 1 reply; 7+ messages in thread
From: Blake Shaw via Guix-patches via @ 2021-12-02 21:04 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: 52189
Hi Nicolas,
Thanks for the review.
> I don't think we should create a new file just for this package. Also,
> new files need to be registered in "gnu/local.mk".
> Maybe this should go into... "ncurses.scm" (!). At a later time, we may
> rename ncurse.scm into tui.scm or some such.
When I asked about where it should go in the IRC, specifically inquiring
if it should be placed with ncurses, <notmaximed> said that it shouldn't
go with Ncurses and it should be placed in its own file [1]. Are we now
sure that the opposite is the case? noted re: `gnu/local.mk` for the future.
> Upstream use tags. It might be more readable. You'll need a variable for
> the code name, tho. In any case, a comment is warranted explaining the
> situation.
> Nitpick: string should go on the same line as base32.
Noted.
> The build-type value above is suspicious.
It is recommended to set this value in `INSTALL.md`. What about it is suspicious?
> This is not cross-compilation friendly.
Noted. I'll change it and try running it on other architectures using
QEMU, I had tried without success before; hopefully that will get it
building faithfully across platforms :)
> Is the phase above required for tests? If so, could you add a comment
> about it?
The configure flags are set to build a slimmed down version of
Notcurses; it shaves about 80mb off. I had hoped to make different
outputs with different options, but when I asked about it in IRC I
didn't get a response, and couldn't find any package that is
configurable based on outputs to reference.
I just checked and the phase configuration can go entirely actually, I
just checked. But the build will fail without the configure flags set.
But alas, I just found out the 3.0 release was yesterday, which is
said to be a big improvement on many levels, so it seems like I should
just go ahead and build that one now with your suggestions and introduce
the package from this version. This package has been driving me crazy
tbh, because it updates nearly everytime I prepare to send it up
stream. but I was under the impression the 3.0 wouldn't be ready until
maybe 2022.
[1] https://logs.guix.gnu.org/guix/2021-10-24.log#201806
Thanks for the feedback and let me know about the above questions and
I'll send the new patch accordingly.
Best,
Blake
--
“In girum imus nocte et consumimur igni”
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#52189] [PATCH] gnu: Add notcurses
2021-12-01 16:01 ` Nicolas Goaziou
2021-12-02 21:04 ` Blake Shaw via Guix-patches via
@ 2021-12-02 22:20 ` Blake Shaw via Guix-patches via
1 sibling, 0 replies; 7+ messages in thread
From: Blake Shaw via Guix-patches via @ 2021-12-02 22:20 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: 52189
Hi, thanks for the feedback.
Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
> I don't think we should create a new file just for this package. Also,
> new files need to be registered in "gnu/local.mk".
>
> Maybe this should go into... "ncurses.scm" (!). At a later time, we may
> rename ncurse.scm into tui.scm or some such.
I was originally packaging it with ncurses, but when I asked on the IRC
I was advised by <notmaximed> to create a new package [1]. Let me know
which is preferred and I will change things accordingly.
[1] https://logs.guix.gnu.org/guix/2021-10-24.log#201648
>
>> +(define-public notcurses
>> + (let ((commit "d15eb6003cbd65f11163916261cf6cd5600c77fa"))
>
> Upstream use tags. It might be more readable. You'll need a variable for
> the code name, tho. In any case, a comment is warranted explaining the
> situation.
>
>> + (sha256
>> + (base32
>> + "10jf6iai1r0xafrgaz978y9bqlaw1gvd11gc0yynwwp6rcs97g17"))))
>
> Nitpick: string should go on the same line as base32.
>
noted.
>> + (build-system cmake-build-system)
>> + (arguments
>> + `(#:tests? #f
>> + #:build-type "-DVAR=val"
>
> Indentation is off. You may want to use "etc/indent-code.el" script.
> The build-type value above is suspicious.
The build type is recommend in INSTALL.md[2]. I tried building without
it, and it seems to work fine, in case you'd like me to remove it.
[2] https://github.com/dankamongmen/notcurses/blob/master/INSTALL.md
>
>> + #:make-flags
>> + (list
>> + (string-append "prefix="
>> + (assoc-ref %outputs "out"))
>> + "CC=gcc")
>
> This is not cross-compilation friendly. The above should be:
>
> (list ,(string-append "CC=" (cc-for-target))
> (string-append "prefix=" ...))
Oh great, I did not know about this. I was trying to build for other targets
using QEMU and couldn't; this seems to be why.
>
>> + #:configure-flags
>> + (map (lambda (s)
>> + (string-append "-D" s))
>> + '("USE_CPP=off" "USE_COVERAGE=off"
>> + "USE_DOXYGEN=off" "USE_DOCTEST=off"
>> + "USE_GPM=off" "USE_MULTIMEDIA=ffmpeg"
>> + "USE_PANDOC=off" "FSG_BUILD=ON"))
>> + #:phases
>> + (modify-phases %standard-phases
>> + (add-before 'build 'patch-makefile-shell
>> + (lambda _
>> + (setenv "HOME" "/tmp")))
>
> Is the phase above required for tests? If so, could you add a comment
> about it?
The configure flags bring down the package size by about 80mb, and
FSG_BUILD=ON is to insure only FSF approved programs are used in the
build. I wasn't sure about comment etiquette, but I will add and return.
>> + (add-before 'build 'set-prefix-in-makefile
>> + (lambda* (#:key outputs #:allow-other-keys)
>> + (let ((out (assoc-ref outputs "out")))
>> + (substitute* "Makefile"
>> + (("PREFIX =.*")
>> + (string-append "PREFIX = " out "\n")))
>> + #true))))))
>
> The trailing #true is not required anywore. You can drop it.
It seems it builds fine without either build phase, so I can remove them
in the future. I originally wrote this package back in October and it
had updated multiple times since then, so its difficult for me to recall the
purpose of these phases, although I do recall them solving some debugging issues early on.
>
>> + (native-inputs
>> + `(("ncurses" ,ncurses)
>> + ("gcc-toolchain" ,gcc-10)
>
> Could you explain why gcc-10 must be used?
For some reason I had thought its important to pin a version for the sake of
reproducibility. If not, I will remove it.
>
>> + ("pkg-config" ,pkg-config)))
>> + (inputs
>> + `(("zlib" ,zlib)
>> + ("ffmpeg" ,ffmpeg)
>> + ("libunistring" ,libunistring)))
>
> Pleas order inputs alphabetically.
Got it
>
>> + (synopsis "Not-ncurses: A library facilitating complex TUIs on
>> modern terminals")
>
> I suggest:
>
> "Library for building textual user interfaces on modern terminals"
>
>> + (description "Supporting vivid colors, multimedia, threads, &
>> Unicode to the max.")
>
> The description is not terribly useful, and sounds like an ad. Maybe:
>
> Notcurses is a library for building complex, textual user interfaces
> (TUIs) on modern terminal emulators. It does not use Ncurses, though
> it does make use of libtinfo from that package.
>
> The second sentence above may even be dropped. Up to you.
Got it, I had just copied from their official release.
>
> Could you send an updated patch?
I just found out that the newest version, which is a landmark version,
3.0, was released yesterday (I had thought it wasn't coming until
2022). so I'll write the new package with the above considerations,
after I hear back from you about the questions concerning putting it in
gnu/ncurses.scm.
Thanks!
Blake
>
> Regards,
--
“In girum imus nocte et consumimur igni”
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#52189] [PATCH] gnu: Add notcurses
2021-11-30 0:24 [bug#52189] [PATCH] gnu: Add notcurses Blake Shaw via Guix-patches via
2021-12-01 16:01 ` Nicolas Goaziou
@ 2021-12-02 22:30 ` Blake Shaw via Guix-patches via
2023-09-01 21:43 ` bug#52189: " Vagrant Cascadian
2 siblings, 0 replies; 7+ messages in thread
From: Blake Shaw via Guix-patches via @ 2021-12-02 22:30 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: 52189
Hi, thanks for the feedback.
Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:
> I don't think we should create a new file just for this package. Also,
> new files need to be registered in "gnu/local.mk".
>
> Maybe this should go into... "ncurses.scm" (!). At a later time, we may
> rename ncurse.scm into tui.scm or some such.
I was originally packaging it with ncurses, but when I asked on the IRC
I was advised by <notmaximed> to create a new package [1]. Let me know
which is preferred and I will change things accordingly.
[1] https://logs.guix.gnu.org/guix/2021-10-24.log#201648
>
>> +(define-public notcurses
>> + (let ((commit "d15eb6003cbd65f11163916261cf6cd5600c77fa"))
>
> Upstream use tags. It might be more readable. You'll need a variable for
> the code name, tho. In any case, a comment is warranted explaining the
> situation.
>
>> + (sha256
>> + (base32
>> + "10jf6iai1r0xafrgaz978y9bqlaw1gvd11gc0yynwwp6rcs97g17"))))
>
> Nitpick: string should go on the same line as base32.
>
noted.
>> + (build-system cmake-build-system)
>> + (arguments
>> + `(#:tests? #f
>> + #:build-type "-DVAR=val"
>
> Indentation is off. You may want to use "etc/indent-code.el" script.
> The build-type value above is suspicious.
The build type is recommend in INSTALL.md[2]. I tried building without
it, and it seems to work fine, in case you'd like me to remove it.
[2] https://github.com/dankamongmen/notcurses/blob/master/INSTALL.md
>
>> + #:make-flags
>> + (list
>> + (string-append "prefix="
>> + (assoc-ref %outputs "out"))
>> + "CC=gcc")
>
> This is not cross-compilation friendly. The above should be:
>
> (list ,(string-append "CC=" (cc-for-target))
> (string-append "prefix=" ...))
Oh great, I did not know about this. I was trying to build for other targets
using QEMU and couldn't; this seems to be why.
>
>> + #:configure-flags
>> + (map (lambda (s)
>> + (string-append "-D" s))
>> + '("USE_CPP=off" "USE_COVERAGE=off"
>> + "USE_DOXYGEN=off" "USE_DOCTEST=off"
>> + "USE_GPM=off" "USE_MULTIMEDIA=ffmpeg"
>> + "USE_PANDOC=off" "FSG_BUILD=ON"))
>> + #:phases
>> + (modify-phases %standard-phases
>> + (add-before 'build 'patch-makefile-shell
>> + (lambda _
>> + (setenv "HOME" "/tmp")))
>
> Is the phase above required for tests? If so, could you add a comment
> about it?
The configure flags bring down the package size by about 80mb, and
FSG_BUILD=ON is to insure only FSF approved programs are used in the
build. I wasn't sure about comment etiquette, but I will add and return.
>> + (add-before 'build 'set-prefix-in-makefile
>> + (lambda* (#:key outputs #:allow-other-keys)
>> + (let ((out (assoc-ref outputs "out")))
>> + (substitute* "Makefile"
>> + (("PREFIX =.*")
>> + (string-append "PREFIX = " out "\n")))
>> + #true))))))
>
> The trailing #true is not required anywore. You can drop it.
It seems it builds fine without either build phase, so I can remove them
in the future. I originally wrote this package back in October and it
had updated multiple times since then, so its difficult for me to recall the
purpose of these phases, although I do recall them solving some debugging issues early on.
>
>> + (native-inputs
>> + `(("ncurses" ,ncurses)
>> + ("gcc-toolchain" ,gcc-10)
>
> Could you explain why gcc-10 must be used?
For some reason I had thought its important to pin a version for the sake of
reproducibility. If not, I will remove it.
>
>> + ("pkg-config" ,pkg-config)))
>> + (inputs
>> + `(("zlib" ,zlib)
>> + ("ffmpeg" ,ffmpeg)
>> + ("libunistring" ,libunistring)))
>
> Pleas order inputs alphabetically.
Got it
>
>> + (synopsis "Not-ncurses: A library facilitating complex TUIs on
>> modern terminals")
>
> I suggest:
>
> "Library for building textual user interfaces on modern terminals"
>
>> + (description "Supporting vivid colors, multimedia, threads, &
>> Unicode to the max.")
>
> The description is not terribly useful, and sounds like an ad. Maybe:
>
> Notcurses is a library for building complex, textual user interfaces
> (TUIs) on modern terminal emulators. It does not use Ncurses, though
> it does make use of libtinfo from that package.
>
> The second sentence above may even be dropped. Up to you.
Got it, I had just copied from their official release.
>
> Could you send an updated patch?
I just found out that the newest version, which is a landmark version,
3.0, was released yesterday (I had thought it wasn't coming until
2022). so I'll write the new package with the above considerations,
after I hear back from you about the questions concerning putting it in
gnu/ncurses.scm.
Thanks!
Blake
>
> Regards,
--
“In girum imus nocte et consumimur igni”
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#52189] [PATCH] gnu: Add notcurses
2021-12-02 21:04 ` Blake Shaw via Guix-patches via
@ 2021-12-03 20:47 ` Nicolas Goaziou
0 siblings, 0 replies; 7+ messages in thread
From: Nicolas Goaziou @ 2021-12-03 20:47 UTC (permalink / raw)
To: Blake Shaw; +Cc: 52189
Hello,
Blake Shaw <blake@nonconstructivism.com> writes:
> When I asked about where it should go in the IRC, specifically inquiring
> if it should be placed with ncurses, <notmaximed> said that it shouldn't
> go with Ncurses and it should be placed in its own file [1]. Are we now
> sure that the opposite is the case?
No, I'm not sure. I guess <notmaximed> is right, then.
> It is recommended to set this value in `INSTALL.md`. What about it is
> suspicious?
"-DVAR=VAL" is neither common nor self-explaining. It looks like some
copy-pasta. I suggest to add a comment explaining it is per INSTALL.md.
Regards,
--
Nicolas Goaziou
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#52189: [PATCH] gnu: Add notcurses
2021-11-30 0:24 [bug#52189] [PATCH] gnu: Add notcurses Blake Shaw via Guix-patches via
2021-12-01 16:01 ` Nicolas Goaziou
2021-12-02 22:30 ` Blake Shaw via Guix-patches via
@ 2023-09-01 21:43 ` Vagrant Cascadian
2 siblings, 0 replies; 7+ messages in thread
From: Vagrant Cascadian @ 2023-09-01 21:43 UTC (permalink / raw)
To: Blake Shaw, 52189-done
[-- Attachment #1: Type: text/plain, Size: 344 bytes --]
On 2021-11-30, Blake Shaw wrote:
> +(define-public notcurses
> + (let ((commit "d15eb6003cbd65f11163916261cf6cd5600c77fa"))
> + (package
> + (name "notcurses")
> + (version "2.4.9")
notcurses was added in commit 7022eb6ea0f3be2f0eb58617c607ce34dfbff90a,
and is currently updated to 3.0.9.
Marking as done.
live well,
vagrant
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-09-01 21:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-30 0:24 [bug#52189] [PATCH] gnu: Add notcurses Blake Shaw via Guix-patches via
2021-12-01 16:01 ` Nicolas Goaziou
2021-12-02 21:04 ` Blake Shaw via Guix-patches via
2021-12-03 20:47 ` Nicolas Goaziou
2021-12-02 22:20 ` Blake Shaw via Guix-patches via
2021-12-02 22:30 ` Blake Shaw via Guix-patches via
2023-09-01 21:43 ` bug#52189: " Vagrant Cascadian
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).