Hi Lukas,

I thought about it some more.

On Sun, 18 Sep 2016 16:43:03 -0500
Lukas Gradl <lgr...@openmailbox.org> wrote:
> +               (and
> +                (install-file "argon2" (string-append out "/bin"))
> +                (install-file "libargon2.a" (string-append out "/lib"))
> +                (install-file "libargon2.so" (string-append out "/lib"))
> +                (install-file "argon2.pc"
> +                              (string-append out "/lib/pkgconfig"))

Hmm. I looked at the implementation of "install-file" and its return value 
seems to be the one of "copy-file". And the Guile manual specifies that the 
return value of "copy-file" is unspecified. (Instead it does dynamic unwinding 
on error)

So I'd do the "install-file" and "copy-recursively" calls outside the "(and 

> +                (copy-recursively "include"
> +                                  (string-append out "/include"))
> +                (zero? (system* "ln" "-s"
> +                                (string-append out "/lib/libargon2.so")
> +                                (string-append out "/lib/libargon2.so.0")))

I think that there's a "symlink" function in Guile for that (which has 
unspecified return value). Would probably be marginally faster, too.

> +                (zero? (system* ; Fix compatability for libtool based builds.
> +                        "ln" "-s"
> +                        (string-append out "/lib/libargon2.so")
> +                        (string-append out 
> "/lib/libargon2.so.0.0.0"))))))))))


About the part of the toolchain that sets the soname, either libtool mode=link 
does it ("-version-info") or it's an option "-soname" to ld (or gcc with "-Wl," 

The official soname used is set in argon2 Makefile:

        SO_LDFLAGS := -Wl,-soname,libargon2.so.0

But I'd say it's fine to manually symlink - since it works. Please still check 
how the client of argon2 in this case (libring ?) loads the shared object.

Reply via email to