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

From: Liliana Marie Prikler <[email-masked]>
Date: Sun, 07 May 2023 17:51:39 +0200

Am Sonntag, dem 07.05.2023 um 11:30 -0400 schrieb Maxim Cournoyer:
> 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?  
I must admit, I did not.

> 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.
There are other packages that take the approach I used here.  I do
think this is a CMakeFiles bug, but not one I want to fix.

Cheers