On Tue, Jun 26, 2012 at 6:31 PM, David Cole <david.c...@kitware.com> wrote:
> On Tue, Jun 26, 2012 at 5:56 PM, Eric Noulard <eric.noul...@gmail.com> wrote:
>> 2012/6/26 Bill Hoffman <bill.hoff...@kitware.com>:
>>> So, this code here:
>>>
>>> 2a34b579 Tests/CMakeLists.txt  (Eric NOULARD                  2012-03-30
>>> 17:07:06 +0200  720)     # Analyze 'cpack --help' output for list of
>>> available generators:
>>> 2a34b579 Tests/CMakeLists.txt  (Eric NOULARD                  2012-03-30
>>> 17:07:06 +0200  721)     execute_process(COMMAND ${CMAKE_CPACK_COMMAND}
>>> --help
>>>
>>>
>>> The trouble is the cpack that is being tested is the one from the build
>>> tree.  If you have a very old CMake build tree, and you do a git pull and
>>> gets lots of new cmake code.  Then when you re-run cmake on the build tree,
>>> the cpack --help might crash.   I am not sure how this works on a fresh
>>> build tree either as cpack won't even exist.
>>
>> You are right this kind of tests may not be safely done at CMake time.
>> I did that in order to avoid to replicate the code inside CPack factory
>> (have a look at cmCPackDebGenerator::CanGenerate()
>>  and  cmCPackRPMGenerator::CanGenerate())
>> which checks whether if a generator may be instantiated or not.
>> This was done for conditionnally enabling RPM or DEB generator on MacOS
>> see http://public.kitware.com/Bug/view.php?id=13064
>>
>> This is was mistake to do that in Tests/CMakeLists.txt.
>> This should be harmless since it will probably "only" prevent RPM and DEB
>> CPack tests to be run (ACTIVE_CPACK_GENERATORS will be empty)
>> but this is a mistake.
>>
>> I shall implement proper CMake-time check in Tests/CMakeLists.txt.
>> Unfortunately I may not be able to do that until sunday 1rst of July...
>>
>> Is this blocking 2.8.9 ?
>>
>> I'll try tomorrow night but I cannot ensure I'll have time to do it.
>>
>> Basically this would be something like:
>> set(ACTIVE_CPACK_GENERATORS)
>> then
>> find_program(RPMBUILD_EXECUTABLE NAMES rpmbuild)
>> if (RPMBUILD_EXECUTABLE)
>>   list(APPEND ACTIVE_CPACK_GENERATORS "RPM")
>> endif()
>>
>> find_program(DPKG_EXECUTABLE NAMES dpkg)
>> if (DPKG_EXECUTABLE)
>>   list(APPEND ACTIVE_CPACK_GENERATORS "DEB")
>> endif()
>>
>>
>> --
>> Erk
>> Le gouvernement représentatif n'est pas la démocratie --
>> http://www.le-message.org
>> --
>>
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at 
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the CMake FAQ at: 
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
>
>
> It's not blocking 2.8.9 -- yet! -- but please get to it as soon as you
> can, and let us know when you've merged a fix to 'next'.
>
> Thanks,
> David



A better alternative (I think) would be to run the same kind of code
you are running now, but to do it at the correct time. i.e. -- execute
the code that is currently running at cmake configure time via a
script that gets invoked when the test is run. Then you *can* reliably
use the built cpack to see what generators it says it supports, and
use those as the list of generators to test.

Thanks (again),
David
--

Powered by www.kitware.com

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

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

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to