Re: [CMake] [CPack] Avoiding packaging (some) dependencies

2018-05-17 Thread Drago Trusk
Thank you for your answer!

I was afraid there was no other option.
Problem is that "Ignorable" is a transient dependency of a target which I
need (both don't specify components) and therefore both are somewhat out of
my control, but I guess modification to them will be necessary.

I wasn't aware of REMOVE_ITEM CPACK_COMPONENTS_ALL and hint is much
appreciated (though sadly I cannot use it). Good to know ;)

On Wed, May 16, 2018 at 10:37 AM Eric Noulard 
wrote:

>
>
> 2018-05-16 9:33 GMT+02:00 Drago Trusk :
>
>> Hi everyone,
>>
>> I have particular problem which I'm unable to solve.
>>
>> Lets say there are following components:
>>  - Main: library/executable
>>  - Ignorable: Main requires it to build, but not for packaging
>>
>> Main simply defines:
>> add_dependencies(Main Ignorable)
>>
>> FindIgnorable.cmake contains something like:
>> add_custom_target(Ignorable
>>   COMMAND ... ... && cmake --build --target install .
>>   # ...
>> )
>>
>> Problem is that deb cpack generator picks this from install tree (tar/zip
>> doesn't contain Ignorable). So deb ends up with:
>> # ... correct fs hierarchy
>> /home/saduser/projects/ignorableinstall
>>
>> I need to avoid dependency used only for building artifacts.
>>
>> What I found:
>> - Remove add_dependency
>>  Problem: have to build dependencies manually and will break CI and
>> other people builds
>> - Disable automatic packaging of everything and specify custom components
>> to package
>>  Problem: Dependency tree which might be bigger and requires to know
>> too many details. In addition requires for outside  changes so that all
>> targets have (appropriate)  install conponents.
>>
>> I tried everything else that is possible. Am i missing something or are
>> those two only viable options?
>>
>
> I think the second option should be ok and not that complicated.
> Put the "Ignorable" in an "IgnoredComp" install component and remove this
> component from the list of installed components.
>
> get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
> list(REMOVE_ITEM CPACK_COMPONENTS_ALL """)
>
> see: https://cmake.org/cmake/help/v3.11/module/CPackComponent.html
>
> AFAIR you don't need to defined a component for every install because
> CPack already does that for you.
> I think that every bits installed without component specification ends-up
> in the trap-them-all
> "Unspecified" component which is automatically created by CPack.
>
> see:
> https://cmake.org/cmake/help/v3.11/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.html
>
> Another way to do that even more simply (**if you are sure no component
> are defined**)
> would be to:
>
> 1) install ignorable in "IgnoredComp" component
> 2) let all other be in your default component
> set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "InstallThatOnly")
> 3) only install your default component
> set(CPACK_COMPONENTS_ALL "InstallThatOnly")
>
>
> --
> Eric
>
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


Re: [CMake] [CPack] Avoiding packaging (some) dependencies

2018-05-16 Thread Eric Noulard
2018-05-16 9:33 GMT+02:00 Drago Trusk :

> Hi everyone,
>
> I have particular problem which I'm unable to solve.
>
> Lets say there are following components:
>  - Main: library/executable
>  - Ignorable: Main requires it to build, but not for packaging
>
> Main simply defines:
> add_dependencies(Main Ignorable)
>
> FindIgnorable.cmake contains something like:
> add_custom_target(Ignorable
>   COMMAND ... ... && cmake --build --target install .
>   # ...
> )
>
> Problem is that deb cpack generator picks this from install tree (tar/zip
> doesn't contain Ignorable). So deb ends up with:
> # ... correct fs hierarchy
> /home/saduser/projects/ignorableinstall
>
> I need to avoid dependency used only for building artifacts.
>
> What I found:
> - Remove add_dependency
>  Problem: have to build dependencies manually and will break CI and
> other people builds
> - Disable automatic packaging of everything and specify custom components
> to package
>  Problem: Dependency tree which might be bigger and requires to know
> too many details. In addition requires for outside  changes so that all
> targets have (appropriate)  install conponents.
>
> I tried everything else that is possible. Am i missing something or are
> those two only viable options?
>

I think the second option should be ok and not that complicated.
Put the "Ignorable" in an "IgnoredComp" install component and remove this
component from the list of installed components.

get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
list(REMOVE_ITEM CPACK_COMPONENTS_ALL """)

see: https://cmake.org/cmake/help/v3.11/module/CPackComponent.html

AFAIR you don't need to defined a component for every install because CPack
already does that for you.
I think that every bits installed without component specification ends-up
in the trap-them-all
"Unspecified" component which is automatically created by CPack.

see:
https://cmake.org/cmake/help/v3.11/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.html

Another way to do that even more simply (**if you are sure no component are
defined**)
would be to:

1) install ignorable in "IgnoredComp" component
2) let all other be in your default component
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "InstallThatOnly")
3) only install your default component
set(CPACK_COMPONENTS_ALL "InstallThatOnly")


-- 
Eric
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake