Subject: Re: bug#49494: [PATCH 0/7] Add nncp

From: Sarah Morgensen <[email-masked]>
Date: Thu, 22 Jul 2021 16:38:54 -0700

Hi,

Thanks for your patches.

Arun Isaac <[email-masked]> writes:

> * gnu/packages/golang.scm (go-github-com-klauspost-compress): New variable.
> ---
>  gnu/packages/golang.scm | 37 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
>
> diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
> index 5a7f27bc91..ef54e15afc 100644
> --- a/gnu/packages/golang.scm
> +++ b/gnu/packages/golang.scm
> @@ -67,6 +67,7 @@
>    #:use-module (gnu packages perl)
>    #:use-module (gnu packages pkg-config)
>    #:use-module (gnu packages pulseaudio)
> +  #:use-module (gnu packages syncthing)
>    #:use-module (gnu packages terminals)
>    #:use-module (gnu packages textutils)
>    #:use-module (gnu packages tls)
> @@ -8352,3 +8353,39 @@ is a low-level framework for building crypto protocols.  Noise protocols
>  support mutual and optional authentication, identity hiding, forward secrecy,
>  zero round-trip encryption, and other advanced features.")
>      (license license:bsd-3)))
> +
> +(define-public go-github-com-klauspost-compress
> +  (package
> +    (name "go-github-com-klauspost-compress")
> +    (version "1.13.1")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/klauspost/compress")
> +               (commit (string-append "v" version))))
> +        (file-name (git-file-name name version))
> +        (sha256
> +          (base32
> +            "0ydnf9rizlhm8rilh14674qqx272sbwbkjx06xn9pqvy6mmn2r3r"))))
> +    (build-system go-build-system)
> +    (arguments
> +     `(#:import-path "github.com/klauspost/compress"
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'reset-gzip-timestamps 'fix-permissions
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             ;; Provide write permissions on gzip files so that
> +             ;; reset-gzip-timestamps has sufficient permissions.
> +             (for-each (lambda (file)
> +                         (chmod file #o644))
> +                       (find-files (assoc-ref outputs "out")
> +                                   (lambda (file stat)
> +                                     (and (eq? 'regular (stat:type stat))
> +                                          (string-suffix? ".gz" file))))))))))

You can simplify this with the Guix built-in MAKE-FILE-WRITABLE and
taking advantage of the facts that FIND-FILES can take a regex as PRED
and does not follow symlinks or return directories by default:

  (for-each make-file-writable
            (find-files (assoc-ref outputs "out") ".*\\.t?gz$"))

> +    (propagated-inputs
> +     `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy)))
> +    (home-page "https://github.com/klauspost/compress")
> +    (synopsis "Go compression library")
> +    (description "@code{compress} provides various compression algorithms.")
> +    (license license:bsd-3)))