unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eric Bavier <ericbavier@gmail.com>
To: Andreas Enge <andreas@enge.fr>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] build: cmake: Add input libraries to the rpath.
Date: Fri, 25 Apr 2014 12:44:32 -0500	[thread overview]
Message-ID: <87mwf9718f.fsf@gmail.com> (raw)
In-Reply-To: <20140425071346.GA12585@debian> (Andreas Enge's message of "Fri, 25 Apr 2014 09:13:46 +0200")

Andreas Enge <andreas@enge.fr> writes:

> In a discussion we had yesterday, Ludovic mentioned the need to pass a
> special flag to the cmake configure phase to modify the rpath of installed
> libraries, as done for the package slim. I then noticed I needed the same
> flag for clucene. The attached patch applies it globally in the cmake build
> system.

We can't set CMAKE_SKIP_BUILD_RPATH=OFF as it prevents tests from
working, since the executables and libraries would not have references
to libraries in the build tree (I ran the lapack build e.g. with your
patch, and all the tests fail).

> This should also avoid the need for the add-libs-to-runpath phase
> in the gmsh package Eric Bavier posted yesterday.
>
> In slim, there is another flag:
>     ;; Don't build libslim.so, because then the build
>     ;; system is unable to set the right RUNPATH on the
>     ;; 'slim' binary.
>     "-DBUILD_SHARED_LIBS=OFF"
> I wonder if we should instead use another of the rpath setting variables
> given at
>    http://www.cmake.org/Wiki/CMake_RPATH_handling
>
> Moreover, libclucene-core.so needs to be linked to libclucene-shared.so.1
> from the same package. Here we usually employ patchelf, but maybe yet again
> a cmake flag could solve the problem directly.
>
> Comments from cmake specialists are very welcome!

I wouldn't necessarily count myself as a cmake specialist, but I work
with it a bit in my day job.

Your post prompted me to look into this matter a bit more.  I found for
the gmsh package I posted yesterday that I could add the following to
#:configuration-flags instead of using the add-libs-to-runpath phase::

    "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON"
     ,(string-append "-DCMAKE_INSTALL_RPATH="
                     (assoc-ref %outputs "out")
                     "/lib")

I would defer to the cmake wiki page you linked above for a full
explanation, but briefly: The CMAKE_INSTALL_RPATH_USE_LINK_PATH tells
cmake to include in the installed rpath all of the directories of
libraries it has linked into the library or executable, and the
CMAKE_INSTALL_RPATH tells cmake that in addition there are libraries in
the current project whose directory also needs to be added to the rpath.

I tried substituting the above two flags in for the lapack, gmsh, and
slim builds, and the RUNPATHS seem to be at least as good as when using
the manual augment-rpath method.

-- 
`~Eric

  parent reply	other threads:[~2014-04-25 17:42 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-25  7:13 [PATCH] build: cmake: Add input libraries to the rpath Andreas Enge
2014-04-25 11:31 ` Ludovic Courtès
2014-04-25 17:44 ` Eric Bavier [this message]
2014-04-26  8:52   ` Ludovic Courtès
2014-04-27  8:59   ` Andreas Enge
2014-04-27  9:57     ` Andreas Enge
2014-04-27 17:17       ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mwf9718f.fsf@gmail.com \
    --to=ericbavier@gmail.com \
    --cc=andreas@enge.fr \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).