all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#56576] [PATCH] gnu: Add nuklear.
@ 2022-07-15 14:57 Antero Mejr via Guix-patches via
  2022-08-05  3:03 ` 宋文武 via Guix-patches via
  2022-08-06 22:57 ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Antero Mejr via Guix-patches via
  0 siblings, 2 replies; 5+ messages in thread
From: Antero Mejr via Guix-patches via @ 2022-07-15 14:57 UTC (permalink / raw)
  To: 56576

* gnu/packages/c.scm (nuklear): New variable.
---
 gnu/packages/c.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index b1f68c706b..61bc1f13dc 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -1219,3 +1219,38 @@ (define-public utest-h
       (description
        "This package provides a header-only unit testing library for C/C++.")
       (license license:unlicense))))
+
+(define-public nuklear
+  (package
+    (name "nuklear")
+    (version "4.9.6")
+    (home-page "https://github.com/Immediate-Mode-UI/Nuklear")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "18hvrmynycv5msc20f5v4drgapbig85s67iqq6k87n9l816zi1qg"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:tests? #f ;no tests
+           #:phases #~(modify-phases %standard-phases
+                        (delete 'configure)
+                        (replace 'build
+                          (lambda _
+                            (with-directory-excursion "src"
+                                                      (invoke "./paq.sh"))))
+                        (replace 'install
+                          (lambda* (#:key outputs #:allow-other-keys)
+                            (install-file "nuklear.h"
+                                          (string-append #$output "/include")))))))
+    (synopsis "Graphical user interface toolkit written in ANSI C")
+    (description "This package provides an immediate-mode graphical user
+interface toolkit.  It was designed as an embeddable user interface
+for applications and does not have any dependencies, a default render backend
+or OS window/input handling.  The library is self contained in one single header
+file and can be used either in header only mode or in implementation mode.")
+    (license (list license:unlicense license:expat))))
-- 
2.36.1





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#56576] [PATCH] gnu: Add nuklear.
  2022-07-15 14:57 [bug#56576] [PATCH] gnu: Add nuklear Antero Mejr via Guix-patches via
@ 2022-08-05  3:03 ` 宋文武 via Guix-patches via
  2022-08-06 22:57 ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Antero Mejr via Guix-patches via
  1 sibling, 0 replies; 5+ messages in thread
From: 宋文武 via Guix-patches via @ 2022-08-05  3:03 UTC (permalink / raw)
  To: Antero Mejr; +Cc: 56576

Antero Mejr <antero@mailbox.org> writes:

> * gnu/packages/c.scm (nuklear): New variable.
> ---
>  gnu/packages/c.scm | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)

Hello, I think better put it in toolkits.scm, as imgui is there.
>
> diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
> index b1f68c706b..61bc1f13dc 100644
> --- a/gnu/packages/c.scm
> +++ b/gnu/packages/c.scm
> @@ -1219,3 +1219,38 @@ (define-public utest-h
>        (description
>         "This package provides a header-only unit testing library for C/C++.")
>        (license license:unlicense))))
> +
> +(define-public nuklear
> +  (package
> +    (name "nuklear")
> +    (version "4.9.6")
4.10.1 was released yesterday, time to update!

> +    (home-page "https://github.com/Immediate-Mode-UI/Nuklear")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url home-page)
> +                    (commit version)))
> +              (file-name (git-file-name name version))
> +              (sha256
> +               (base32
> +                "18hvrmynycv5msc20f5v4drgapbig85s67iqq6k87n9l816zi1qg"))))
> +    (build-system python-build-system)
> +    (arguments
> +     (list #:tests? #f ;no tests
> +           #:phases #~(modify-phases %standard-phases
> +                        (delete 'configure)
> +                        (replace 'build
> +                          (lambda _
> +                            (with-directory-excursion "src"
> +                                                      (invoke "./paq.sh"))))
> +                        (replace 'install
> +                          (lambda* (#:key outputs #:allow-other-keys)
> +                            (install-file "nuklear.h"
> +                                          (string-append #$output
> "/include")))))))

How about install the html doc too?

> +    (synopsis "Graphical user interface toolkit written in ANSI C")
> +    (description "This package provides an immediate-mode graphical user
> +interface toolkit.  It was designed as an embeddable user interface
> +for applications and does not have any dependencies, a default render backend
> +or OS window/input handling.  The library is self contained in one single header
> +file and can be used either in header only mode or in implementation mode.")
> +    (license (list license:unlicense license:expat))))

Could you send an update, thank you!




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#56576] [PATCH 1/2] gnu: Add stddoc.
  2022-07-15 14:57 [bug#56576] [PATCH] gnu: Add nuklear Antero Mejr via Guix-patches via
  2022-08-05  3:03 ` 宋文武 via Guix-patches via
@ 2022-08-06 22:57 ` Antero Mejr via Guix-patches via
  2022-08-06 22:57   ` [bug#56576] [PATCH 2/2] gnu: Add nuklear Antero Mejr via Guix-patches via
  2022-08-07 12:10   ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Maxime Devos
  1 sibling, 2 replies; 5+ messages in thread
From: Antero Mejr via Guix-patches via @ 2022-08-06 22:57 UTC (permalink / raw)
  To: 56576; +Cc: Antero Mejr, iyzsong

* gnu/packages/documentation.scm (stddoc): New variable.
---
Need this to generate Nuklear's HTML doc from source (code comments).

 gnu/packages/documentation.scm | 42 ++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 6f24149b5d..9b98db4d40 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -393,3 +393,45 @@ (define-public zeal
       (description "Zeal is a simple offline documentation browser
 inspired by Dash.")
       (license gpl3+))))
+
+(define-public stddoc
+  (let ((commit "6eef9deaf2e36bae812f50e448a8012b3e5efb14"))
+    (package
+      (name "stddoc")
+      (version "1.0.2")
+      (home-page "https://github.com/r-lyeh/stddoc.c")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "06phjp7wbf4x1sagxwfapgv6iyiixmijxxbg2clb48kyvjg5mlwn"))
+         (snippet #~(delete-file "stddoc.c.html"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:tests? #f ;no tests
+             #:phases #~(modify-phases %standard-phases
+                          (delete 'configure)
+                          (replace 'build
+                            (lambda _
+                              (invoke "gcc" "-O2" "-g" "-o" "stddoc" "stddoc.c")
+                              (with-input-from-file "stddoc.c"
+                                (lambda _
+                                  (with-output-to-file "stddoc.c.html"
+                                    (lambda _
+                                      (invoke "./stddoc")))))))
+                          (replace 'install
+                            (lambda _
+                              (install-file "stddoc"
+                                            (string-append #$output "/bin"))
+                              (install-file "stddoc.c.html"
+                                            (string-append #$output
+                                                           "/share/doc")))))))
+      (synopsis "Documentation generator for 60 programming languages")
+      (description "@code{stddoc.c} is a tiny documentation generator for 60
+programming languages.  Markdeep code comments are extracted from stdin and
+printed into stdout as a HTML file.")
+      (license unlicense))))
-- 
2.37.1





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#56576] [PATCH 2/2] gnu: Add nuklear.
  2022-08-06 22:57 ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Antero Mejr via Guix-patches via
@ 2022-08-06 22:57   ` Antero Mejr via Guix-patches via
  2022-08-07 12:10   ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Maxime Devos
  1 sibling, 0 replies; 5+ messages in thread
From: Antero Mejr via Guix-patches via @ 2022-08-06 22:57 UTC (permalink / raw)
  To: 56576; +Cc: Antero Mejr, iyzsong

* gnu/packages/toolkits.scm (nuklear): New variable.
---
Package moved to toolkits.scm, updated to 4.10.1, installs HTML doc generated
using stddoc.

 gnu/packages/toolkits.scm | 49 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/toolkits.scm b/gnu/packages/toolkits.scm
index 3030e3aa49..79ea8068f1 100644
--- a/gnu/packages/toolkits.scm
+++ b/gnu/packages/toolkits.scm
@@ -19,6 +19,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages toolkits)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages sdl)
@@ -27,6 +28,7 @@ (define-module (gnu packages toolkits)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (guix git-download))
 
 (define-public imgui
@@ -141,3 +143,50 @@ (define-public imgui-1.86
               (sha256
                (base32
                 "02a7b05zrka20jhzag2jb4jl624i1m456bsv69jb9zgys2p9dv1n"))))))
+
+(define-public nuklear
+  (package
+    (name "nuklear")
+    (version "4.10.1")
+    (home-page "https://github.com/Immediate-Mode-UI/Nuklear")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0qmaza0iiq3da3qya23znnajmv9prm6rv0nbqg58qdrl23207kar"))
+              (snippet #~(begin (delete-file "nuklear.h")
+                                (delete-file "doc/index.html")))))
+    (build-system python-build-system)
+    (arguments
+     (list #:tests? #f ;no tests
+           #:phases #~(modify-phases %standard-phases
+                        (delete 'configure)
+                        (replace 'build
+                          (lambda _
+                            (with-directory-excursion "src"
+                              (invoke "./paq.sh"))
+                            (with-directory-excursion "doc"
+                              (with-input-from-file "../nuklear.h"
+                                (lambda _
+                                  (with-output-to-file "index.html"
+                                    (lambda _
+                                      (invoke "stddoc"))))))))
+                        (replace 'install
+                          (lambda* (#:key outputs #:allow-other-keys)
+                            (install-file "nuklear.h"
+                                          (string-append #$output "/include"))
+                            (install-file "doc/index.html"
+                                          (string-append #$output
+                                                         "/share/doc")))))))
+    (native-inputs (list stddoc))
+    (synopsis "Graphical user interface toolkit written in ANSI C")
+    (description "This package provides an immediate-mode graphical user
+interface toolkit.  It was designed as an embeddable user interface
+for applications and does not have any dependencies, a default render backend
+or OS window/input handling.  The library is self contained in one single header
+file and can be used either in header only mode or in implementation mode.")
+    (license (list license:unlicense license:expat))))
-- 
2.37.1





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#56576] [PATCH 1/2] gnu: Add stddoc.
  2022-08-06 22:57 ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Antero Mejr via Guix-patches via
  2022-08-06 22:57   ` [bug#56576] [PATCH 2/2] gnu: Add nuklear Antero Mejr via Guix-patches via
@ 2022-08-07 12:10   ` Maxime Devos
  1 sibling, 0 replies; 5+ messages in thread
From: Maxime Devos @ 2022-08-07 12:10 UTC (permalink / raw)
  To: Antero Mejr, 56576; +Cc: iyzsong


[-- Attachment #1.1.1: Type: text/plain, Size: 2364 bytes --]


On 07-08-2022 00:57, Antero Mejr via Guix-patches via wrote:
> +                              (invoke "gcc" "-O2" "-g" "-o" "stddoc" "stddoc.c")

For cross-compilation, you need to use #$(cc-for-target) instead of 
"gcc", otherwise it will be compiled for the wrong architecture.

> +                              (with-input-from-file "stddoc.c"
> +                                (lambda _
> +                                  (with-output-to-file "stddoc.c.html"
> +                                    (lambda _
> +                                      (invoke "./stddoc")))))))
Except when emulation is used, cross-compiled binaries cannot be run. 
However, you can add 'this-package' to native-inputs (conditional on 
cross-compilation, otherwise you get a loop) and run that stddoc:

(native-inputs (if (%current-target-system) (list this-package) '()))

[...]

(invoke #$(if (%current-target-system) "stddoc" "./stddoc"))

(untested!).

It includes Javascript and CSS from external sources:

> static void stddoc( FILE *in, FILE *out ) {
>     fprintf(out, "%s\n", "<meta charset='utf-8' emacsmode='-*- 
> markdown -*-'>");
>     fprintf(out, "%s\n", "<link rel='stylesheet' 
> href='https://casual-effects.com/m""arkdeep/latest/apidoc.css?'>");
>
I don't think this is good, privacy-wise, could you substitute them with 
a local copy?

Also, on 
<https://github.com/r-lyeh/stddoc.c/blob/6eef9deaf2e36bae812f50e448a8012b3e5efb14/stddoc.c#L111>, 
it looks like it forgets to quote things like &. I don't know if that's 
important in this particular case but often forgetting to quote things 
can be pretty bad.

(Ignoring the return value of printf also isn't ideal, but less important)

> +      (description "@code{stddoc.c} is a tiny documentation generator for 60
> +programming languages.  Markdeep code comments are extracted from stdin and
> +printed into stdout as a HTML file.")
This seems misleading to me, the Markdown->HTML happens at runtime, via 
the Javascript. Also, instead of mentioning the number 60, you could 
refer to the Javascript package; that way, the user can check if their 
language is in the list. I also don't think that the generator 
'https://morgan3d.github.io/markdeep/latest/markdeep.js' counts as tiny.

stdout -> output, stdin -> input

Greetings,
Maxime


[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 929 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-08-07 12:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-15 14:57 [bug#56576] [PATCH] gnu: Add nuklear Antero Mejr via Guix-patches via
2022-08-05  3:03 ` 宋文武 via Guix-patches via
2022-08-06 22:57 ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Antero Mejr via Guix-patches via
2022-08-06 22:57   ` [bug#56576] [PATCH 2/2] gnu: Add nuklear Antero Mejr via Guix-patches via
2022-08-07 12:10   ` [bug#56576] [PATCH 1/2] gnu: Add stddoc Maxime Devos

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.