* [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-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-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-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).