[cmake-developers] [CMake 0011944]: CPackDeb: Support dependencies between components/Debian packages
Raffi Enficiaud
raffi.enficiaud at mines-paris.org
Thu Apr 16 12:15:41 EDT 2015
Le 16/04/15 16:45, Raffi Enficiaud a écrit :
> Le 16/04/15 15:54, Raffi Enficiaud a écrit :
>> Le 16/04/15 14:55, Domen Vrankar a écrit :
>>>> I was wondering if this issue has been addressed so far.
>>>
>>> As far as I can tell from the bug report I don't think so... If it
>>> doesn't work in CMake 3.2 then it definitely wasn't.
>>
>> I confirm this does not work with 3.2. I also would like to disable
>> CPACK_DEBIAN_PACKAGE_SHLIBDEPS on some of the components (dpkg-shlibdeps
>> complains right now for eg. packages containing only documentation).
>>
>>>
>>>> If the maintainer of the CPackDeb agrees, I can try to resolve this.
>>>
>>> Go ahead.
>>> Could you also provide some automated test cases for this?
>>
>> Sure! I assigned the issue to myself. Let's see how it goes.
>>
>
> I am right now testing the cmake 3.2 based on master. Before that I had
> a code running ok-kind-of with the default cmake of ubuntu 14.04
> (2.8.12.2).
>
> When I create the debian with components for the two versions of cmake
> with the same source tree, (option CPACK_DEB_PACKAGE_COMPONENTS)
> - I can see the packages generated with 2.8.12.1
> - I cannot see the packages generated with 3.2.20150416-g53264
> - Cmake 3.2 is generating a package with the files at incorrect
> destinations: for the component core-dev, the files will be installed on
> core-dev/usr/include/xxx, while for cmake 2.8.12, the destination path
> is urs/include/xxx
>
> How can I have the previous behaviour with cmake 3.2?
>
> Thanks,
> Raffi
>
Ok, it was a good excercise to start with.
In the member function cmCPackGenerator::WantsComponentInstallation,
apparently it is required that groups AND components exist to have the
component install:
https://github.com/Kitware/CMake/blob/master/Source/CPack/cmCPackGenerator.cxx#L1505
If I change the line to
&& (!(this->ComponentGroups.empty()) || !(this->Components.empty())))
it works as before (cmake 2.8.12).
Is it required that groups and components are defined to be able to have
a component installation? (one file per component). In the wiki page,
http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack
I can read "A component does not have to belong to any component GROUP".
I checked the tests for that, and I think they do not cover that case
since the groups are defined there.
Any suggestions?
Best,
Raffi
More information about the cmake-developers
mailing list