[llvm-dev] Improving deb packages
Paweł Bylica via llvm-dev
llvm-dev at lists.llvm.org
Sat Jul 23 14:42:20 PDT 2016
Hi LLVM,
I complained about the deb packages couple of times previously, even fixed
some issues in packaging. I'm mostly interested in having reliable share
cmake files available in llvm-dev packages. The version 3.7 was fine, but
3.8+ have regressions.
I'm not here to blame anybody. I would like to identify the issues and
discuss long term solutions.
I started with building very simple test framework that checks different
Ubuntu/Debian versions and currently supported LLVM versions. The first and
only test just checks find_package(LLVM CONFIG) cmake function.
https://github.com/chfast/llvm-apt-tests/blob/master/CMakeLists.txt
I've tested {3.8, 3.9, 4.0} x {xenial, jessie} using docker images and
Travis CI.
https://travis-ci.org/chfast/llvm-apt-tests/builds/146508275
As you can see, only the 3.8 on Jessie passed the test.
Issues I've identified:
1. Packaging adds version prefix to binaries, directories, etc. -- eg.
llc is renamed to llc-3.8. I'm not sure how it is done, but maybe we should
add support for such feature to LLVM's cmake?
2. Default install location for cmake shared files is
<prefix>/lib/llvm/share/llvm/cmake. find_package() is not able to find them
there as it is non-standard path. find_package() needs a hint, like setting
LLVM_DIR variable as in
https://github.com/chfast/llvm-apt-tests/blob/master/configure.sh#L6
If we moved the cmake shared files to <prefix>/lib/llvm/cmake no hint
would be needed.
3. On Ubuntu, packaging script moves cmake shared files to
<prefix>/share/llvm-X.Y/cmake. I'm guessing to solve the issue (2).
find_package() is able to find LLVMConfig.cmake file without any hint, but
this file contains absolute paths referencing previous locations of other
files. You usually get issues like this one:
CMake Error at /usr/share/llvm-3.8/cmake/LLVMConfig.cmake:181 (include):
include could not find load file:
/usr/share/llvm/cmake/LLVM-Config.cmake
Maybe it is good idea to include other cmake files assuming there are
located next to the main file instead of relying on absolute paths.
4. It's a bit weird Debian and Ubuntu packages has different layout of
installed shared files.
5. Packages 3.9+ does not have any cmake's shared files, just empty dirs
where those files are supposed to be. That might be a bug in the latest
packaging script.
- Paweł
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160723/20a00bb0/attachment.html>
More information about the llvm-dev
mailing list