[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