[cmake-developers] FindPackageCheckArchLinuxSymlinks branch on stage

Stephen Kelly steveire at gmail.com
Tue Jan 22 15:15:45 EST 2013


Alexander Neundorf wrote:
> I think this is all a mess for cmake's config files, as long as they try
> to be relocatable.
> Should we just forget about relocatable Config.cmake files on UNIX
> (excluding OSX) systems ?

Maybe it would be better to build some awareness into CMake of which 
platforms are symlinking like this, and what they are symlinking. That way, 
if a Config file is found in /lib64/lib/cmake/FooConfig.cmake, cmake would 
be able to 'switch' to use the non-symlink, which would make the relative 
paths correct, as long as the actual install was all into non-symlinks.

Something like this in Linux.cmake (partly pseudocode):

if (ARCHLINUX OR FEDORA18)
  set(PLATFORM_SYMLINK_PAIRS 
    "/lib64" "/usr/lib64"
    "/bin" "/usr/bin" # For illustration only. Config files don't get found 
below /bin, so this doesn't matter.
  )
endif()

Would something like that work? It might not help in the case of someone 
installing to /opt/foo and then putting *that* in their CMAKE_PREFIX_PATH, 
but that's a bug the user is creating in their own environment anyway, not a 
platform quirk for us to handle, so it doesn't matter.

> 
>> > It makes cmake warn if /lib64/ is a symbolic link to /usr/lib/ and a
>> > Config.cmake file has been found in one of both (since any relative
>> > directory references may be wrong then), see the "General Config.cmake
>> > file issue on ArchLinux" thread here from November.
>> 
>> Given that Andrea Scarpino said that the /include dir does not exist, I
>> don't see why you check for it in your patch.
> 
> Maybe somebody adds it in the future...

If that matters (I don't believe it does) you should add at least everything 
else which is in GNUInstallDirs.cmake.

Thanks,

Steve.






More information about the cmake-developers mailing list