Subject: Re: bug#63330: [PATCH 0/4] Functional programming? In my C++?! It's more likely than you think!

From: Maxim Cournoyer <[email-masked]>
Date: Sun, 07 May 2023 11:30:21 -0400

Hi,

Liliana Marie Prikler <[email-masked]> writes:

> * gnu/packages/cpp.scm (immer): New variable.
> ---
>  gnu/packages/cpp.scm | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
>
> diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
> index 023d1c0337..da3567b5ef 100644
> --- a/gnu/packages/cpp.scm
> +++ b/gnu/packages/cpp.scm
> @@ -67,6 +67,7 @@ (define-module (gnu packages cpp)
>    #:use-module (gnu packages)
>    #:use-module (gnu packages assembly)
>    #:use-module (gnu packages autotools)
> +  #:use-module (gnu packages bdw-gc)
>    #:use-module (gnu packages boost)
>    #:use-module (gnu packages build-tools)
>    #:use-module (gnu packages c)
> @@ -1390,6 +1391,38 @@ (define-public libexpected
>      (home-page "https://tl.tartanllama.xyz/")
>      (license license:cc0)))
>  
> +(define-public immer
> +  (package
> +   (name "immer")
> +   (version "0.8.0")
> +   (source (origin
> +            (method git-fetch)
> +            (uri (git-reference
> +                  (url "https://github.com/arximboldi/immer")
> +                  (commit (string-append "v" version))))
> +            (file-name (git-file-name name version))
> +            (sha256
> +             (base32 "11km3l5h3rgsbj8yfyzk3fnx9na55l6zs2sxpx922yvlvs2blh27"))
> +            (modules '((guix build utils)))
> +            (snippet #~(begin
> +                         (delete-file "tools/include/doctest.h")
> +                         (delete-file "tools/include/catch.hpp")
> +                         (substitute* (find-files "test" "\\.[cih]pp")
> +                           (("<catch.hpp>") "<catch2/catch.hpp>")
> +                           (("<doctest.h>") "<doctest/doctest.h>"))
> +                         (substitute* (find-files "test/oss-fuzz" "\\.cpp")
> +                           ;; someone used the wrong header :)
> +                           (("<fmt/printf.h>") "<fmt/ostream.h>"))))))

Did you report the wrong header usage upstream?  A less intrusive fix
for the catch/doctest include problem could be to add their include
subdirectories as -I directives to the CXXFLAGS environment variable, or
since that's CMake, via its CMAKE_CXX_FLAGS make options.  See 'clara'
for an actual example.

-- 
Thanks,
Maxim