Subject: Re: [bug#50796] [PATCH] gnu: Add pn.

From: Xinglu Chen <[email-masked]>
Date: Tue, 28 Sep 2021 20:59:52 +0200

On Fri, Sep 24 2021, Antero Mejr via Guix-patches via wrote:

> * gnu/packages/telephony.scm (pn): New variable.

The ‘libphonenumber’ package is also added; this should be split into
patches, each adding one new package.

> ---
> Add pn and its dependencies.
> It's a phone number CLI tool used by Linux phone GUIs like SXMO.
>
>  gnu/packages/telephony.scm | 72 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 72 insertions(+)
>
> diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
> index 48bbe12920..9015cf536a 100644
> --- a/gnu/packages/telephony.scm
> +++ b/gnu/packages/telephony.scm
> @@ -20,6 +20,7 @@
>  ;;; Copyright © 2020, 2021 Maxim Cournoyer <[email-masked]>
>  ;;; Copyright © 2020 Vincent Legoll <[email-masked]>
>  ;;; Copyright © 2021 LibreMiami <[email-masked]>
> +;;; Copyright © 2021 Antero Mejr <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -54,12 +55,14 @@
>    #:use-module (gnu packages documentation)
>    #:use-module (gnu packages file)
>    #:use-module (gnu packages protobuf)
> +  #:use-module (gnu packages gawk)
>    #:use-module (gnu packages gettext)
>    #:use-module (gnu packages gl)
>    #:use-module (gnu packages glib)
>    #:use-module (gnu packages gnome)
>    #:use-module (gnu packages gnupg)
>    #:use-module (gnu packages gtk)
> +  #:use-module (gnu packages icu4c)
>    #:use-module (gnu packages image)
>    #:use-module (gnu packages libcanberra)
>    #:use-module (gnu packages linphone)
> @@ -907,3 +910,72 @@ Initiation Protocol (SIP) and a multimedia framework.")
>  telephony functionality into custom Telegram clients.")
>      (home-page "https://github.com/zevlg/libtgvoip")
>      (license license:unlicense)))
> +
> +(define-public libphonenumber
> +  (package
> +    (name "libphonenumber")
> +    (version "8.12.33")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/google/libphonenumber")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +         (base32
> +          "0r12icyig6jy0v87j9n3w14acfa2yfckzzfbmnjx1hww6qc9ih25"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:tests? #f

There should be a comment explaining why tests are disabled.

> +       #:phases
> +        (modify-phases %standard-phases
> +          (add-after 'unpack 'enter-dir
> +            (lambda _ (chdir "cpp") #t)))))

Phases don’t have to return #t.

> +    (inputs
> +     `(("boost" ,boost)
> +       ("googletest" ,googletest)
> +       ("protobuf" ,protobuf)
> +       ("icu4c" ,icu4c)))
> +    (home-page "https://github.com/google/libphonenumber")
> +    (synopsis "C++ library for phone number parsing")
> +    (description
> +     "libphonenumber is Google's common Java, C++ and JavaScript library for
> +parsing, formatting, and validating international phone numbers.")

I would use @code{libphonenumber}.

The package doesn’t seem to be reproducible; ‘guix build libphonenumber
--rounds=2’ fails with

--8<---------------cut here---------------start------------->8---
guix build: error: derivation `/gnu/store/a0vycg9ic70bziygn098bbvw4hy39zzb-libphonenumber-8.12.33.drv' may not be deterministic: output `/gnu/store/1ifj4ndpf3mv8nwbjp0gzrx5jpjvghgb-libphonenumber-8.12.33' differs
--8<---------------cut here---------------end--------------->8---

Could you look into this?

> +    (license license:asl2.0)))
> +
> +(define-public pn
> +  (package
> +    (name "pn")
> +    (version "0.9.0")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/Orange-OpenSource/pn")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> +         "1lvzb0yixj7wmmqzsri20k9nn3gf06j0yjvmg2mi1zihywq7s4dx"))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:tests? #f

Why are tests disabled?

> +       #:phases
> +        (modify-phases %standard-phases
> +         (add-after 'unpack 'sub-bin-path
> +           (lambda _
> +             (substitute* "CMakeLists.txt" (("DESTINATION \\$\\{AWKLIBPATH\\}")
> +                                             "DESTINATION bin")))))))
> +    (inputs
> +     `(("libphonenumber" ,libphonenumber)
> +       ("icu4c" ,icu4c)
> +       ("protobuf" ,protobuf)
> +       ("gawk" ,gawk)))
> +    (home-page "https://github.com/Orange-OpenSource/pn")
> +    (synopsis "Command-line validation tool for phone numbers")
> +    (description
> +     "pn is a tool that allows command line user/programmers to operate on
> +phone numbers (get validity information, reformat them, or extract numbers
> +from a text snippet), using libphonenumber.")

I suggest

  @code{pn} provides a command line tools that allows on to operate on
  phone numbers (get validity information, reformat them, or extract
  numbers from a text snippet), using @code{libphonenumber}.