Subject: [bug#58261] [PATCH 05/11] gnu: Add optionparser.

From: Liliana Marie Prikler <[email-masked]>
Date: Tue, 04 Oct 2022 09:42:39 +0200

Am Montag, dem 03.10.2022 um 00:19 +0000 schrieb David Elsing:
> * gnu/packages/cpp.scm (optionparser): New variable.
> ---
>  gnu/packages/cpp.scm | 50
> ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
> index 4819f36052..b30205109e 100644
> --- a/gnu/packages/cpp.scm
> +++ b/gnu/packages/cpp.scm
> @@ -2058,3 +2058,53 @@ (define-public tinydir
>      (description "tinydir is a header-only C library to portably
> read files
>  and directories.")
>      (license license:bsd-2)))
> +
> +(define-public optionparser
> +  (package
> +    (name "optionparser")
> +    (version "1.7")
> +    (source (origin
> +              (method url-fetch)
> +              (uri
> +               (string-append
> "mirror://sourceforge/optionparser/optionparser-"
> +                              version ".tar.gz"))
The formattter doesn't know this, but I think in this case it might be
wiser to pull the "optionparser-" down a line on the same one with
version ".tar.gz"
> +              (sha256
> +               (base32
> +               
> "04gfxrdzwacaynb8scsz6rr7nh64n6yk6w9dh2qdhrxw4caqr0dk"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     (list
> +      #:phases
> +      #~(modify-phases %standard-phases
> +          (delete 'configure)
> +          (add-before 'build 'chdir
> +            (lambda _ (chdir "src") #t))
> +          (replace 'build
> +            (lambda _
> +              (invoke "make" "-j" (number->string (parallel-job-
> count))
> +                      "example_arg" "testparse" "testprintusage"
> "testodr"
> +                      "example")
#:make-flags exist.  Also, this is a bad way to hide that you're
missing doxygen. 
> +              #t))
> +          (replace 'check
> +            (lambda* (#:key tests? #:allow-other-keys)
> +              (if tests?
> +                  (begin
> +                    (invoke "./example_arg")
> +                    (invoke "./testparse")
> +                    (invoke "./testprintusage")
> +                    (invoke "./testodr")
> +                    (invoke "./example"))
> +                  (format #t "test suite not run~%"))))
> +          (replace 'install
> +            (lambda _
> +              (install-file "optionparser.h" (string-append #$output
> "/include"))
> +              #t))
> +          (add-after 'install 'chdir-back
> +            (lambda _ (chdir "..") #t)))))
I'm pretty sure this shouldn't be needed.
> +    (home-page "https://optionparser.sourceforge.net/")
> +    (synopsis "Header-only C++ library to parse command line
> options")
> +    (description "The Lean Mean C++ Option Parser handles the
> program's
> +command line arguments (argc, argv).  It supports the short and long
> option
> +formats of getopt(), getopt_long() and getopt_long_only() but has a
> more
> +convenient interface.")
As always, cut down on the ads :)
> +    (license license:expat)))

Cheers