Bug#785931: llvm-3.6-dev: LLVM CMake files broken by Debian packaging

Brad King brad.king at kitware.com
Wed May 20 13:43:34 UTC 2015


Package: llvm-3.6-dev
Version: 1:3.6-2
Severity: normal

Dear Maintainer,

The issue reported in bug #735592 is not fully resolved (as reported
in some follow-up posts in that issue).  While that problem has been
resolved in upstream LLVM 3.6, another problem is caused by Debian
packaging.

When a CMake-based project does

 find_package(LLVM)

on Debian one gets:

 CMake Error at /usr/share/llvm-3.6/cmake/LLVMConfig.cmake:52 (include):
   include could not find load file:

     /usr/lib/llvm-3.6/share/llvm/cmake/LLVMExports.cmake

The problem does not occur with upstream LLVM 3.6.  It is caused by
the adjustment of the installed file layout done by Debian packaging.

First 'debian/rules' configures with

  --prefix=/usr/lib/llvm-$(LLVM_VERSION)

The build generates content in

  debian/tmp/usr/lib/llvm- at LLVM_VERSION@/share/llvm/cmake/LLVMConfig.cmake

that references the directory

  /usr/lib/llvm- at LLVM_VERSION@/share/llvm/cmake

because that is where files are installed by upstream for the given prefix.

Then 'debian/llvm-X.Y-dev.install.in' has:

  debian/tmp/usr/lib/llvm- at LLVM_VERSION@/share/llvm/cmake/*.cmake usr/share/llvm- at LLVM_VERSION@/cmake/

This moves these files to a different location during packaging,
but the content of 'LLVMConfig.cmake' expects the original location.
I'm able to work around the issue locally by running

 $ sudo ln -s /usr/share/llvm-3.6 /usr/lib/llvm-3.6/share/llvm

to restore the existence of the original path to the files.  The
Debian package should be updated to add this symlink.  Or, it can
install the files to the original location and add a symlink in
the other direction (to satisfy default find_package search paths).

Thanks,
-Brad



More information about the Pkg-llvm-team mailing list