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

From: "Artyom V. Poptsov" <[email-masked]>
Date: Thu, 13 Jan 2022 20:18:50 +0300

Hello Maxime,

to my understanding some libtree tests (namely 07 and 08) are made in
such way that they finish with a non-zero code when they pass, that
makes Guix stop during the build with an error.  For example, the test
"07_origin_is_relative_to_symlink_location_not_realpath" expects that
libtree will fail.  I checked a compiled "exe" file from a failed build
and got this:

--8<---------------cut here---------------start------------->8---
$ libtree /tmp/guix-build-libtree-3.0.1.drv-0/source/tests/07_origin_is_relative_to_symlink_location_not_realpath/exe 
exe 
└── libg.so [runpath]
    └── libf.so not found
        ┊ Paths considered in this order:
        ┊ 1. rpath is skipped because runpath was set
        ┊ 2. LD_LIBRARY_PATH was not set
        ┊ 3. runpath:
        ┊    /tmp/guix-build-libtree-3.0.1.drv-0/source/tests/07_origin_is_relative_to_symlink_location_not_realpath/b
        ┊ 4. ld config files:
        ┊    /usr/lib/x86_64-linux-gnu/libfakeroot
        ┊    /usr/local/lib
        ┊    /usr/local/lib/x86_64-linux-gnu
        ┊    /lib/x86_64-linux-gnu
        ┊    /usr/lib/x86_64-linux-gnu
        ┊    /lib32
        ┊    /usr/lib32
        ┊ 5. Standard paths:
        ┊    /lib
        ┊    /lib64
        ┊    /usr/lib
        ┊    /usr/lib64
Error [/tmp/guix-build-libtree-3.0.1.drv-0/source/tests/07_origin_is_relative_to_symlink_location_not_realpath/exe]: Not all dependencies were found
$ echo $?
28
--8<---------------cut here---------------end--------------->8---

Yet libtree itself seems to work fine after installation from Guix.
Here's an example of the output for a correct binary:

--8<---------------cut here---------------start------------->8---
$ libtree guix-daemon 
guix-daemon 
├── libz.so.1 [runpath]
├── libbz2.so.1.0 [runpath]
├── libgcrypt.so.20 [runpath]
│   └── libgpg-error.so.0 [runpath]
└── libsqlite3.so.0 [runpath]
--8<---------------cut here---------------end--------------->8---

I suggest that we keep "#f" for tests unless the libtree author fix this
behavior.

For now I opened an issue for libtree:
  https://github.com/haampie/libtree/issues/65

Thanks!

- Artyom

-- 
Artyom "avp" Poptsov <[email-masked]>
Home page: https://memory-heap.org/~avp/
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE  B57C E9C5 A2D9 0898 A02F