guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#56576] [PATCH 1/2] gnu: Add stddoc.


From: Maxime Devos
Subject: [bug#56576] [PATCH 1/2] gnu: Add stddoc.
Date: Sun, 7 Aug 2022 14:10:59 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0


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: OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]