Subject: [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 13:12:43 -0400

Hi,

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

> 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.

Could you please do so, if that's not too much to ask?  Then include a
(see: URL) next to the substitution comment.

>> 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.

I think catch2 is selfom used from the system (typically bundled), must
not ship with any pkg-config or proper support to be auto-detected at
configure time, which gives us the situation we're in.

-- 
Thanks,
Maxim