Re: [CMake] How is GetPreRequisites used?

2008-10-29 Thread Nicolas Desprès
On linux I ship all .so files (with few exception) listed by ldd in a
given directory. I also ship a wrapper script that add this directory
to LD_LIBRARY_PATH prior to execute the executable.

Here the script:

#!/bin/sh

# This script overload the dynamic library path.

# Resolve links referring to me.
if test -L $0; then
exec $(readlink -f $0)
fi

appname=$(basename $0 | sed s,\.sh$,,)
dirname=$(dirname $0)
case $dirname in
/*)
# nothing to do
;;
*)
dirname=$PWD/$dirname
;;
esac
paths=$dirname/../@EXTRA_LIBRARIES_DIR@
LD_LIBRARY_PATH=$paths
export LD_LIBRARY_PATH
DYLD_LIBRARY_PATH=$paths
export DYLD_LIBRARY_PATH
$dirname/$appname $*

and here the list of .so that I do not ship:

  set(DLDEP_UNIX_EXCLUSION_LIST
^libc.so
^libdl.so
^libpthread.* # Fedora 9
)

Note that, when you ship binary package for Linux you have to compile
your project on a system with the oldest GLIBC you want to support.
For instance package built on Ubuntu (glibc 2.4) won't work on Debian
stable (glibc 2.0). I build my package on Debian and I have tested it
on various freshly installed Linux distribution and it works fine.

Cheers,

On Tue, Oct 28, 2008 at 9:47 PM, David Cole [EMAIL PROTECTED] wrote:
 You are not being stupid. It does need to be used at installation time to be
 useful.
 The intent is to analyze a given built executable to determine the required
 set of (possibly 3rd-party, possibly built elsewhere on the build machine)
 libraries that it needs to run. Then, given that set, you need to make sure
 that you have install rules to cover all of those libraries.

 The first working example of its use is in the ParaView code base where it
 is used to copy libraries into ParaView's Mac bundle application. It is used
 in conjunction with BundleUtilities.cmake to fix up the bundle app so that
 it is standalone and contains all of its referenced libraries in the bundle
 directory structure. Then the bundle can be copied to any directory or to
 another Mac and it should all just work.
 Having said that, there is more work to be done to make this a genuinely
 easy to use feature of CMake. I envision being able to do the same thing at
 make install time for Linux and Win32 builds, but according to the
 conventions of those platforms. Dlls copied into the same dir with the exe
 on Win32 and whatever's appropriate on Linux builds... (Feel free to make
 suggestions.)
 So... ideally it would all just work automatically and all you would have to
 do in CMake is add an install rule for your executable and call a
 post-install script that copies/fixes up libraries appropriately in a
 platform-independent manner.
 Thanks for asking questions / contributing to the discussion / improving
 this development feature of CMake.
   David

 On Tue, Oct 28, 2008 at 7:36 AM, Mike Arthur [EMAIL PROTECTED] wrote:

 Perhaps I'm just being stupid but I can't see how this can be used as it
 needs
 to be called at installation time and I'm not aware that modules can be?

 Does anyone have a working example of how to install its outputted
 libraries?
 --
 Cheers,
 Mike Arthur
 http://mikearthur.co.uk/
 ___
 CMake mailing list
 CMake@cmake.org
 http://www.cmake.org/mailman/listinfo/cmake


 ___
 CMake mailing list
 CMake@cmake.org
 http://www.cmake.org/mailman/listinfo/cmake




-- 
Nicolas Desprès
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] How is GetPreRequisites used?

2008-10-28 Thread Michael Jackson
In what way are you trying to use GetPreRequisites? I have a Qt Based  
app that uses GetPreRequisites indirectly through the OS X app bundle  
building cmake module (BundleUtilities.cmake).


I think on each system (Linux, OS X, Windows) there are different  
solutions. Which system are you working on?


_
Mike Jackson  [EMAIL PROTECTED]
BlueQuartz Softwarewww.bluequartz.net
Principal Software Engineer  Dayton, Ohio



On Oct 28, 2008, at 7:36 AM, Mike Arthur wrote:

Perhaps I'm just being stupid but I can't see how this can be used  
as it needs
to be called at installation time and I'm not aware that modules can  
be?


Does anyone have a working example of how to install its outputted  
libraries?

--
Cheers,
Mike Arthur
http://mikearthur.co.uk/
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] How is GetPreRequisites used?

2008-10-28 Thread Mike Arthur
On Tuesday 28 October 2008 13:35:46 Michael Jackson wrote:
 In what way are you trying to use GetPreRequisites? I have a Qt Based
 app that uses GetPreRequisites indirectly through the OS X app bundle
 building cmake module (BundleUtilities.cmake).

 I think on each system (Linux, OS X, Windows) there are different
 solutions. Which system are you working on?
All three systems.

I've managed to get something working by making a CMake script file that uses 
it to get the resulting libraries and install them.

-- 
Cheers,
Mike Arthur
http://mikearthur.co.uk/
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] How is GetPreRequisites used?

2008-10-28 Thread David Cole
You are not being stupid. It does need to be used at installation time to be
useful.
The intent is to analyze a given built executable to determine the required
set of (possibly 3rd-party, possibly built elsewhere on the build machine)
libraries that it needs to run. Then, given that set, you need to make sure
that you have install rules to cover all of those libraries.

The first working example of its use is in the ParaView code base where it
is used to copy libraries into ParaView's Mac bundle application. It is used
in conjunction with BundleUtilities.cmake to fix up the bundle app so that
it is standalone and contains all of its referenced libraries in the bundle
directory structure. Then the bundle can be copied to any directory or to
another Mac and it should all just work.

Having said that, there is more work to be done to make this a genuinely
easy to use feature of CMake. I envision being able to do the same thing at
make install time for Linux and Win32 builds, but according to the
conventions of those platforms. Dlls copied into the same dir with the exe
on Win32 and whatever's appropriate on Linux builds... (Feel free to make
suggestions.)

So... ideally it would all just work automatically and all you would have to
do in CMake is add an install rule for your executable and call a
post-install script that copies/fixes up libraries appropriately in a
platform-independent manner.

Thanks for asking questions / contributing to the discussion / improving
this development feature of CMake.

  David


On Tue, Oct 28, 2008 at 7:36 AM, Mike Arthur [EMAIL PROTECTED] wrote:

 Perhaps I'm just being stupid but I can't see how this can be used as it
 needs
 to be called at installation time and I'm not aware that modules can be?

 Does anyone have a working example of how to install its outputted
 libraries?
 --
 Cheers,
 Mike Arthur
 http://mikearthur.co.uk/
 ___
 CMake mailing list
 CMake@cmake.org
 http://www.cmake.org/mailman/listinfo/cmake

___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake