ycm-cmake-modules
ycm-cmake-modules copied to clipboard
User feedback from using the superbuild on Windows
cc @drdanz
Configuring the git user is strictly necessary?
Currently for using any superbuild is necessary to set up a git user with the following commands:
git config --global user.name FirstName LastName
git config --global user.email [email protected]
This may be a confusing step, especially on Windows where users may be not so confident with the command line. Could it make sense to put the NON_INTERACTIVE_BUILD flag to ON?
The summary messages at the end of the configuration may be confusing
After successfully generating the superbuild solution, a message like this is printed:
-- The following OPTIONAL packages have not been found:
* Eigen3
* YARP
* TinyXML , A small, simple XML parser for the C++ language , <http://www.grinninglizard.com/tinyxml/index.html>
Used by YARP
* ICUB
* iDynTree
* orocos_kdl
The "have not been found" may seem an error to the superbuild user, adding something like :
-- The following OPTIONAL packages have not been found, and will be downloaded by the superbuild:
may be of help.
fyi @pattacini
The following one is actually a bug, and a quite annoying one:
The install target of the subprojects is not executed when launching the ALL_BUILD target of the superbuild
In *nix systems, the install target is executed everytime the "main" target is invoked.. in Windows (at least in Visual Studio 2010 and Visual Studio 2013) the install is launched only if the subproject is actually compiled. This is a major annoyance if for some reason the installation was not successful, because in the default configuration then the only way to install the subprojects is to open the subproject solution manually and install it.
After one successful execution of the superbuild, if one tries to re-configure and re-generate the superbuild the superbuild find its own subprojects
In particular it finds the subprojects in their build directories. This is probably due to some arcane rule for find_package .
It is not possible to interrupt the superbuild
Visual Studio wants to wait for existing custom command to finish before interrupting the superbuild.
Configuring the git user is strictly necessary?
Yes, if the user does not set it, the update step will fail if any file is modified by the user. There is on purpose an explicit check right after checking if git is installed to avoid unreadable errors later.
This may be a confusing step, especially on Windows where users may be not so confident with the command line.
Not an excuse, they can just configure it from tortoise git gui or from any other tool. If the user is not able to do it, he should probably give up on building the superbuild. Perhaps I could just change:
- message(FATAL_ERROR "Failed to get name to use for git commits. Please set it with \"git config --global user.name Firstname Lastname\"")
+ message(FATAL_ERROR "Failed to get name to use for git commits. Please set it with \"git config --global user.name Firstname Lastname\" or from your favourite git gui.")
Do you think this would make users happy?
Could it make sense to put the
NON_INTERACTIVE_BUILDflag toON?
No, this will simply solve the problem by not executing the update step, and I think this is not what we want.
The summary messages at the end of the configuration may be confusing
Duplicate of #9 and #14
The install target of the subprojects is not executed when launching the ALL_BUILD target of the superbuild
I think I understand the reason for this... IIRC there is a check for the build tool in ExternalProject, and the install step is added only if it is make.
This is something that should probably be fixed in ExternalProject and it is worth investigating
After one successful execution of the superbuild, if one tries to re-configure and re-generate the superbuild the superbuild find its own subprojects
This is because CMake looks for projects in dozens of places, I had a lot of issues fixing this on linux, we should investigate this issue too.
It is not possible to interrupt the superbuild
Unfortunately that's how Visual Studio works, and AFAIK it is the same also when building files. The "stop" command is not passed to subprocesses, so each file that is currently compiled, will finish building before the build is actually stopped. On the superbuild this is enhanced because each compile command is actually a command to build a whole project. I don't see a way for us to fix this, unless microsoft fixes this in MSVC.
Configuring the git user is strictly necessary?
... Do you think this would make users happy?
Yes, that would definitely simplify. A link to some helper page like https://help.github.com/articles/setting-your-username-in-git/ or https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration could be also helpful, but I would be afraid to confuse the user even more. Currently I am just writing it down in the installation instructions: https://github.com/robotology/codyco-superbuild#superbuild-2 .
It also seems that YARP_DIR define in the YARP binaries installers is not seen in the superbuild subprojects, even if it is seen by the superbuild.