Subject: Re: [bug#52472] [PATCH] gnu: Add libtree

From: Maxime Devos <[email-masked]>
Date: Mon, 17 Jan 2022 20:22:59 +0100

Hi,

Artyom V. Poptsov schreef op ma 17-01-2022 om 22:14 [+0300]:
> [...]
> > Guix doesn't do staged installation
> 
> Unfortunately it seems to me that libtree fails when I remove
> '(string-append "DESTDIR=" #$output)' from the make flags.
> 
> The reason is this code from libtree Makefile:
> 
> --8<---------------cut here---------------start------------->8---
> install: all
> 	mkdir -p $(DESTDIR)$(BINDIR)
> 	cp -p libtree $(DESTDIR)$(BINDIR)
> 	mkdir -p $(DESTDIR)$(SHAREDIR)/man/man1
> 	cp -p doc/libtree.1 $(DESTDIR)$(SHAREDIR)/man/man1
> --8<---------------cut here---------------end--------------->8---
> 
> As you can see it's using 'DESTDIR' as prefix for the installation.

SHAREDIR is set to $(PREFIX)/share in the Makefile.

It seems to work for me, the attached package definition builds
and the store item has a man page and a binary.

Greetings,
Maxime.
(use-modules (guix packages) (guix) (guix git-download) (guix build-system gnu)
  ((guix licenses) #:prefix license:))
(define-public libtree
  (package
    (name "libtree")
    (version "3.0.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/haampie/libtree")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "072624anz9g01mp5vfkahfmzy0nb7axg5rwk3n1yrdm4hr3d4zrb"))))
    (arguments
     (list #:make-flags
           ;; NOTE: Official documentation recommends to build libtree with
           ;; "-static" flag.
           #~(list (string-append "CC=" #$(cc-for-target))
                   (string-append "PREFIX=" #$output))
           #:phases
           #~(modify-phases %standard-phases
               (delete 'configure)
               (replace 'build
                 (lambda* (#:key make-flags #:allow-other-keys)
                   (apply invoke "make" make-flags))))))
    (build-system gnu-build-system)
    (home-page "https://github.com/haampie/libtree")
    (synopsis "Show output of @command{ldd} as a tree")
    (description
     "This tool turns @command{ldd} into a tree and explains how shared
libraries are found or why they cannot be located.")
    (license license:expat)))

libtree