Subject: [bug#46012] Acknowledgement (Upgrade Nheko)

From: Maxime Devos <[email-masked]>
Date: Tue, 27 Apr 2021 20:09:08 +0200

Nicolò Balzarotti schreef op di 27-04-2021 om 15:56 [+0200]:
> +    (synopsis "C++ header-only HTTP/HTTPS server and client library")
> +    (description "cpp-httplib is a C++11 single-file header-only cross
> +platform blocking HTTP/HTTPS library, easy to setup.  Just include the
> +@file{httplib.h} file in your code!")

This is a little misleading, as shared libraries are build, as BUILD_SHARED_LIBS
is enabled.  Maybe "cpp-http is a single-file header-only library" -->
"cpp-http can be used as a single-file header-only 
library"?

About ‘header-only’: this is true, but ultimately irrelevant to the user
(= C++ developer on a Guix System or using Guix on top of a foreign distro).
But there's also a desirable thing called ‘portability’, the user might be
searching for a single-header web server software to distribute to other
people (not on Guix) in source form ...

I'm conflicted if "single-file header" should be included in the description.
If you decide to remove it, I suggest you add a comment like

  ;; this package is not graftable, as everything is implemented in a single
  ;; header

to prevent trouble in a (admittedly somewhat far-fetched, no insult intended
to its developers) future where cpp-httplib becomes a very popular dependency
in Guix.

> +       #:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda* (#:key source #:allow-other-keys)
> +             ;; openssl genrsa wants to write a file in the git checkout
> +             (copy-file (string-append source "/test") "test")
> +             (chmod "test" #o744)
> +             (invoke "make"))))))

Tests most likely should not be run when cross-compiling.  I'm not 100% sure,
but you might need to do something like

> +           (lambda* (#:key tests? source #:allow-other-keys)
> +             ;; openssl genrsa wants to write a file in the git checkout
> +             (when tests?
> +               (copy-file
(string-append source "/test") "test")
> +               (chmod "test" #o744)
> +               (invoke "make")))))))

Search for example for "when tests?" in gnu/packages/python-xyz.scm.

> +       ("zlib" ,zlib)))

In <https://github.com/yhirose/cpp-httplib/blob/master/httplib.h> I see
a few lines

  #ifdef CPPHTTPLIB_ZLIB_SUPPORT
  #include <zlib.h>
  #endif

so it seems zlib should be in (inputs ...) instead.

I also saw these lines:

  #ifdef CPPHTTPLIB_BROTLI_SUPPORT
  #include <brotli/decode.h>
  #include <brotli/encode.h>
  #endif

Would it be useful to include brotli?

  #ifdef CPPHTTPLIB_OPENSSL_SUPPORT
  #include <openssl/err.h>
  #include <openssl/md5.h>
  ...

Likewise, for openssl?

Greetings,
Maxime.