Subject: Re: [bug#33920] [PATCH] gnu: Add gauche.

From: Ludovic Courtès <[email-masked]>
Date: Wed, 09 Jan 2019 16:56:13 +0100

Hi Gabriel,

Gabriel Hondet <[email-masked]> skribis:

> * gnu/packages/scheme.scm (gauche): New variable.

Yay for another Scheme!  :-)

As swedebugia noted, Gauche uses libgc and libatomic-ops.  Could you try
to add these two libraries as inputs and to adjust the package to make
sure it does not use the bundled copies?

> +(define-public gauche
> +  (package
> +    (name "gauche")
> +    (version "0.9.7")
> +    (home-page "http://practical-scheme.net/gauche/index.html")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append
> +             "http://prdownloads.sourceforge.net/gauche/Gauche-"
> +             version ".tgz"))

Please use mirror://sourceforge here.

> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'patch-/bin/sh
> +           ;; needed only for tests
> +           (lambda _
> +             (begin
> +               (setenv "CONFIG_SHELL" (which "sh"))
> +               (substitute* '("configure"
> +                              "test/www.scm"
> +                              "config.guess"
> +                              "ltmain.sh"
> +                              "ext/tls/test.scm"
> +                              "gc/configure"
> +                              "lib/gauche/configure.scm"
> +                              "lib/gauche/package/util.scm"
> +                              "lib/gauche/process.scm")
> +                 (("/bin/sh") (which "sh")))

This looks redundant with what the standard ‘patch-source-shebangs’ and
‘configure’ phases do, no?

Also, ‘begin’ is unnecessary in the body of a lambda.

> +         (add-after 'build 'build-doc
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out")))
> +               (with-directory-excursion "doc"
> +                 (for-each
> +                  (lambda (target)
> +                    (invoke "make" target))
> +                  '("info" "html" "htmls"))))))

Please return #t.

> +         (add-before 'check 'patch-normalize-test
> +           ;; neutralize sys-normalize-pathname test as it relies on
> +           ;; the home directory; (setenv "HOME" xx) isn't enough)
> +           (lambda _
> +             (substitute* "test/system.scm"
> +               (("~/abc") "//abc"))))

Likewise.

> +         (add-before 'check 'patch-network-tests
> +           ;; remove net checks
> +           (lambda _
> +             (substitute* "ext/Makefile"
> +               (("binary net termios") "binary termios"))))

Likewise.

Out of curiosity, do these tests rely on specific host name lookups or
external services?

> +         (add-after 'install 'install-docs
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out")))
> +               (with-directory-excursion "doc"
> +                 (invoke "make" "install"))))))))

Please return #t.

Could you send an updated patch?

Thank you!

Ludo’.