[CMake] Continue install after a failure

Petr Kmoch petr.kmoch at gmail.com
Tue Oct 23 07:10:32 EDT 2012


On Tue, Oct 23, 2012 at 1:07 PM, Eric Noulard <eric.noulard at gmail.com>wrote:

> 2012/10/23 David Cole <david.cole at kitware.com>:
> > On Tue, Oct 23, 2012 at 2:53 AM, Petr Kmoch <petr.kmoch at gmail.com>
> wrote:
> >> On Mon, Oct 22, 2012 at 4:58 PM, David Cole <david.cole at kitware.com>
> wrote:
> >>>
> >>> On Mon, Oct 22, 2012 at 3:22 AM, Petr Kmoch <petr.kmoch at gmail.com>
> wrote:
> >>> > Hi Andreas,
> >>> >
> >>> > thanks for your tip. Unfortunately, 'make -k install' doesn't help,
> as
> >>> > the
> >>> > entire install step is a single command (cmake -P ...), so once this
> >>> > fails,
> >>> > there is no other command make could continue with. Is there no way
> to
> >>> > do
> >>> > this natively in cmake?
> >>> >
> >>> > I could (in theory) add OPTIONAL to all install() commands, but that
> has
> >>> > the
> >>> > problem of being absolutely silent when a file is not found, and I'd
> >>> > need at
> >>> > least a message or warning. Is cmake really all-or-nothing in this
> >>> > aspect,
> >>> > or does anyone know a feature I'm overlooking?
> >>> >
> >>> > Thanks for any help.
> >>> >
> >>> > Petr
> >>> >
> >>> >
> >>> > On Sat, Oct 20, 2012 at 12:46 PM, Andreas Pakulat <apaku at gmx.de>
> wrote:
> >>> >>
> >>> >> Hi,
> >>> >>
> >>> >> On Sat, Oct 20, 2012 at 11:39 AM, Petr Kmoch <petr.kmoch at gmail.com>
> >>> >> wrote:
> >>> >> > when running the install step of a CMake-generated buildsystem
> (i.e.
> >>> >> > 'make
> >>> >> > install' or building the VS project INSTALL), the run terminates
> >>> >> > after
> >>> >> > the
> >>> >> > first failure (e.g. when it cannot find a file which is to be
> >>> >> > installed). Is
> >>> >> > there a way to globally change this behaviour so that the error is
> >>> >> > reported
> >>> >> > (perhaps as a warning), but the install step goes on?
> >>> >>
> >>> >> For Makefile Generator you can run make -k install, that way make
> >>> >> keeps on going even when errors occur. No idea about VS, NMake,
> Ninja
> >>> >> or XCode generators probably depends on wether the respective tool
> has
> >>> >> a switch for continuing if errors occur.
> >>> >>
> >>> >> Andreas
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> >
> >>> > 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://www.cmake.org/mailman/listinfo/cmake
> >>>
> >>>
> >>> CMake is all-or-nothing with respect to an install tree. If the cmake
> >>> install script hits a "FATAL_ERROR" message then it stops and will not
> >>> continue beyond that point...
> >>>
> >>> The best way to "Continue install after a failure" is to eliminate the
> >>> failure, and try again.
> >>
> >>
> >> Would you accept a patch giving control over this behaviour? Something
> like
> >> a boolean variable CMAKE_INSTALL_STOP_ON_ERROR (the default being TRUE,
> of
> >> course).
> >>
> >> Petr
> >
> > Why is patching CMake easier than fixing your project? And how long
> > are you going to let your own project's install tree be broken before
> > you do fix it?
> >
> > I don't like the idea of a half-installed (or any fraction less than
> > 1.0) bit of software...
>
> Me neither.
>
> >
> > Perhaps others will chime in and we can get a sense of how folks weigh
> > in on this issue.
>
> My personal opinion is that may be the only feature I'd like would be a
> "real fake install" i.e. 0% installed not a possibly random X percent
> installed with random leftover.
>
> it could be callable like:
> make fake-install or check-install or ... set(CMAKE_FAKE_INSTALL 1) or ...
>
> which would check whether all need-to be installed bits are accessibles.
> This would basically put the file(INSTALL ...) sub-command in a mode
> that would only check access and print-out some informations message
> without moving, copying or renaming any files or directory.
>
> e.g:
>
> -- Would be Up-to-date: .../share/aclocal/cmake.m4
> -- Would be Installing: ..../doc/cmake-2.8/cpack.html
>
> instead of
> -- Up-to-date: .../share/aclocal/cmake.m4
> -- Installing: .../doc/cmake-2.8/cpack.html
>
> That said I did live without that feature until now so I bet I can
> live without it forever :-]
>
>
We're using the install step of CMake to prepare the "installation source"
in a location where it's then picked up by a 3rd party install-shield
generator. And we're currently doing major re-structuring of the entire
installation (involving several big cooperating products), which must work
on several sites with different 3rd party installation paths etc. Only
being able to fix one error per install run is extremely frustrating.

Eric's suggestion of a "fake install" would solve our case, of course.

I understand it's far from a typical use case, but AFAIK, all software
development tools are moving away from "bail out on first error" to trying
to report as many as possible (and still failing at the end, if applicable).

Petr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20121023/b5d707cc/attachment.htm>


More information about the CMake mailing list