[cmake-developers] CPack component and "packaging ways"

Eric Noulard eric.noulard at gmail.com
Wed Mar 23 13:38:13 EDT 2011


Hi all,

There was not so much reaction about this so...
I bet that currently there is not so much user of the feature so
that no one cares about the change.

I did just merge the fix for the left over component thing.
http://public.kitware.com/Bug/view.php?id=11930

Archive, RPM and DEB should now consistently package
all components specified in CPACK_COMPONENTS_ALL.

There remain "only" 3 options for multi-files component packaging:
1) default
  --> 1 package file per group
2) CPACK_COMPONENTS_ALL_IN_ONE
  --> all components specified in CPACK_COMPONENTS_ALL in a single package
3) CPACK_COMPONENTS_IGNORE_GROUPS
  --> 1 package file per component

I did update the Wiki accordingly:
http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack#Controlling_Differents_Ways_of_packaging_components

CPackComponentForAll tests will run for all this combination, however
any further comment/feedback is welcome.

2011/3/4 Eric Noulard <eric.noulard at gmail.com>:
> Hi All,
>
> As of CPack 2.8.4 the component support has been added to
> ArchiveGenerator and RPM
> (and NSIS and PackageMaker continue to support component packaging)
> As explained here;
> http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack#CPack_Generator_specific_behavior
>
> Currently NSIS and PackageMaker always generate a single package file which may
> contain nice "component" if the project did define appropriate vars.
>
> ArchiveGenerators and RPM (and soon Deb)
> may produce a single package file or several package files depending
> on user choice.
>
> The current rules of CPack Component:
> http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack#Rules
> makes it clear that:
>
> A COMPONENT may only belong to either 0 or a single GROUP.
> In CPack 2.8.3, you have 4/5 ways to package COMPONENT:
>
> 1) the default way : no COMPONENT or MONOLITHIC in order to maintain
> backward compatibility
>
> 1bis) default way if COMPONENT INSTALL is enabled:
>     1 package file per COMPONENT GROUP
>
> 2) ALL_GROUPS_IN_ONE
>      which means that all COMPONENT GROUPS are put in a single package file
>
> 3) ALL_COMPONENTS_IN_ONE
>      which means that all COMPONENTS are put in a single package file
>
> 4) IGNORE GROUPS
>      which means that you get 1 package file per COMPONENT
>
> in 1) ALL INSTALL( xxx) rules found in CMakeLists.txt are processed.
>
> in 2,3,4) Only the rules with COMPONENT belongings to CPACK_COMPONENTS_ALL
>     are processed.
>
> i.e. with 1bis, 2,3,4) you will only install the COMPONENT specified
> in CPACK_COMPONENTS_ALL
> which may only be a portion of all the INSTALL rules.
>
> In CPack 2.8.4, rule 1bis) and 2) do not include COMPONENT that did
> not belong to a GROUP
> http://public.kitware.com/Bug/view.php?id=11930
> this is now fixed (in next) for ArchiveGenerator for 1bis).
>
> I did not fixed it in 2) case because if I do
> ALL_GROUPS_IN_ONE would be strictly equal to ALL_COMPONENTS_IN_ONE.
>
> What do you all think about that?
> Shall I just merge ALL_GROUPS_IN_ONE and ALL_COMPONENTS_IN_ONE to
> "ALL_COMPONENTS_IN_ONE",
> or shall I keep the awkward behavior of ALL_GROUPS_IN_ONE
> which can left over some components?
>
> I would be tempted to simplify the packaging ways and
> get rid of "ALL_GROUPS_IN_ONE".
>
>
> --
> Erk
> Membre de l'April - « promouvoir et défendre le logiciel libre » -
> http://www.april.org
>



-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org



More information about the cmake-developers mailing list