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")))))))))) Likewise. 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," prefix). 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.