Subject: Re: bug#26718: Update hexchat to 2.12.4

From: Tobias Geerinckx-Rice <[email-masked]>
Date: Sun, 30 Apr 2017 20:19:49 +0200

Julien,

On 30/04/17 19:22, Julien Lepiller wrote:
> Hi,
> 
> here is a patch to update hexchat to 2.12.4.

...great! I was just doing the exact same thing. :-D

> Subject: [PATCH] gnu: hexchat: Update to 2.12.4.
>
> * gnu/packages/messaging.scm (hexchat): Update to 2.12.4.

The commit message must also mention new native-inputs, phases, etc.

>   (native-inputs `(("pkg-config" ,pkg-config)
> -                   ("intltool" ,intltool)))
> +                   ("intltool" ,intltool)
> +                   ("autoconf" ,autoconf)
> +                   ("autoconf-archive" ,autoconf-archive)
> +                   ("automake" ,automake)
> +                   ("libtool" ,libtool)))

Even though these weren't sorted to begin with, it would be nice to do
so now.

> + (arguments
> +  `(#:phases
> +    (modify-phases %standard-phases
> +      (add-after 'unpack 'autogen

Nitpick: as the sources do contain an actual ‘autogen.sh’ — which we're
not calling — I'd just call this ‘bootstrap’ or so. Avoids confusion.

> +                 (lambda* (#:key inputs #:allow-other-keys)

It looks like something went wrong with the indentation of this block.
The ‘(’ of ‘(lambda’ should be under the first ‘d’ of ‘(add-after’.

> + ;; these files are symlinks to /usr and cannot be used.

Another nitpick: full-line comment, so ‘;; These’.

> + (with-directory-excursion "m4"
> +   (for-each (lambda (f) (delete-file f))
> +             '("intltool.m4" "libtool.m4" "lt~obsolete.m4"
> +               "ltoptions.m4" "ltsugar.m4" "ltversion.m4")))
> + (delete-file-recursively "build-aux")
> + (delete-file "po/Makefile.in.in")

I'd move all of this to a separate snippet.
These files can cause pain when building manually, too.

> + (copy-file (string-append (assoc-ref inputs "intltool")
> +                           "/share/intltool/Makefile.in.in")
> +            "po/Makefile.in.in")

Ah, so this is what I was hunting down when your mail appeared.
Good catch!

I've taken the liberty to attach my patch[1] as well; it illustrates
some of the points mentioned above. Do with it what you will... :-)

Thanks!

T G-R

[1]: Audience question, somewhat: ‘guix lint’ complains that

  [email-masked]: 'glib:bin' should probably be a native input

If no-one disagrees I'll dig up why & add it in a follow-up.
From b88935a8636c8c7258a9db172af9fe4706b06746 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice <[email-masked]>
Date: Sun, 30 Apr 2017 19:58:09 +0200
Subject: [PATCH] gnu: hexchat: Update to 2.12.4.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/messaging.scm (hexchat): Update to 2.12.4.
[source]: Remove incorrectly bootstrapped files.
[native-inputs]: Add autoconf, autoconf-archive, automake, libtool,
pkg-config.
[arguments]: Add ‘bootstrap’ phase.
---
 gnu/packages/messaging.scm | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 8a8dbd711..ee24e44e3 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -166,16 +166,30 @@ identi.ca and status.net).")
 (define-public hexchat
   (package
     (name "hexchat")
-    (version "2.12.2")
+    (version "2.12.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1xnclfbrgbkqndxygi5f27q00jd7yy54jbd1061jmhxa6wzpibbd"))))
+                "0ficrx56knz5y297qb0x5y02339yvyv734z7kpcx1ixvb0qr2dgs"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Delete incorrectly bootstrapped bundled files.
+                  (for-each delete-file-recursively
+                            (list "build-aux" "po/Makefile.in.in"))
+                  ;; Delete dangling symlinks to a non-existent ‘/usr’.
+                  (for-each delete-file
+                            (find-files "m4" "^[^a].*\\.m4$"))
+                  #t))))
     (build-system gnu-build-system)
-    (native-inputs `(("pkg-config" ,pkg-config)
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("autoconf-archive" ,autoconf-archive)
+                     ("automake" ,automake)
+                     ("libtool" ,libtool)
+                     ("pkg-config" ,pkg-config)
                      ("intltool" ,intltool)))
     (inputs `(("dbus-glib" ,dbus-glib)
               ("dbus" ,dbus)
@@ -190,6 +204,16 @@ identi.ca and status.net).")
               ("luajit" ,luajit)
               ("perl-xml-parser" ,perl-xml-parser)
               ("python-2" ,python-2)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Release 2.12.4 wasn't properly bootstrapped.  Later ones might be!
+         (add-before 'configure 'bootstrap
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-file (string-append (assoc-ref inputs "intltool")
+                                       "/share/intltool/Makefile.in.in")
+                        "po/Makefile.in.in")
+             (zero? (system* "autoreconf" "-vfi")))))))
     (synopsis "Graphical IRC Client")
     (description
      "HexChat lets you connect to multiple @dfn{Internet Relay Chat} (IRC)
-- 
2.11.0