Subject: [bug#30971] Add package definition for fpm2

From: Marius Bakke <[email-masked]>
Date: Wed, 28 Mar 2018 22:03:49 +0200

Ton <[email-masked]> writes:

> Here is the package definition for figaros password manager, or fpm2. It is a
> simple password manager. Development has seized and the package should be
> considered dead. I had use for it personally and thought I'd share it. There
> is a warning in the description.

Thanks!  I'm a bit vary about adding obsolete software to Guix.  Any
opinions from other contributors?  If no one responds, I'll assume it's
okay.

[...]

> From d2efd598855759ce8377569b9e8279a5f774a22a Mon Sep 17 00:00:00 2001
> From: Tonton <[email-masked]>
> Date: Wed, 28 Mar 2018 16:08:52 +0200
> Subject: [PATCH] Add package definition screen message
>
> Built and tested on GuixSD Linux merlin 4.15.8-gnu #1 SMP 1 x86_64 GNU/Linux.
>
> It passes guix lint without errors.
>
> It builds 5 times deterministicly.
>
> Guix size says "total: 486.5 MiB"

Again, see "git log" for the usual conventions.

> ---
>  gnu/packages/fpm2.scm | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 64 insertions(+)
>  create mode 100644 gnu/packages/fpm2.scm

I think this can go to 'password-utils.scm' along with other password
managers.

[...]

> +(define-public fpm2
> +  (package
> +    (name "fpm2")
> +    (version "0.79")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-"
> +                                  version ".tar.bz2"))
> +              (sha256
> +               (base32
> +                "19sdy1lygfhkg5nxi2w9a4d9kwvw24nxp0ix0p0lz91qpvk9qpnm"))))
> +    (build-system gnu-build-system)
> +    (inputs `(("gtk2" ,gtk+-2)
> +              ("gnupg" ,gnupg)
> +              ("libxml2" ,libxml2)))
> +    (native-inputs `(("pkgconfig" ,pkg-config)
> +                     ("intltool" ,intltool)))
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-before
> +             'configure 'pre-configure
> +           (lambda _
> +               (let* ((poinc (open-output-file "po/POTFILES.in")))
> +                 (begin
> +                   (newline poinc)
> +                   (display "data/fpm2.desktop.in" poinc)
> +                   (newline poinc)
> +                   (display "data/fpm2.desktop.in.in" poinc)
> +                   (newline poinc)
> +                   (display "fpm2.glade" poinc)
> +                   (newline poinc)
> +                   (display "src/callbacks.c" poinc)
> +                   (newline poinc)
> +                   (display "src/fpm.c" poinc)
> +                   (newline poinc)
> +                   (display "src/fpm_file.c" poinc)
> +                   (newline poinc)
> +                   (display "src/interface.c" poinc)
> +                   (newline poinc)
> +                   (display "src/support.c" poinc)
> +                   (newline poinc)
> +                   (display "fpm2.glade" poinc)
> +                   (newline poinc)
> +                   (close-port poinc))))))))

I admit I don't understand what's going on here.  AFAICT this overwrites
POTFILES.in with custom text.  Can you add a comment about why this is
necessary?  Also, I think it's clearer to write it like this:

(call-with-output-file "po/POTFILES.in"
  (lambda (port)
    (format port "data/fpm2.desktop.in
data/fpm2.desktop.in.in
[...]")))

> +    (synopsis "Manages, generates and stores passwords encrypted")

Please use infinitive verbs in synopses, i.e. avoid the present tense:
"Manage, generate and store passwords encrypted".

Apart from this LGTM.  Can you send an updated patch?