Closed RussTedrake closed 6 years ago
FYI @mwoehlke-kitware.
This could happen if either WITH_ALL_PUBLIC_EXTERNALS
or WITH_ALL_SUPPORTED_EXTERNALS
are ON
. Did you check that both of those are OFF
?
you caught me. WITH_ALL_PUBLIC_EXTERNALS was still on. That's a really nasty interface.
Perhaps reopen the ticket, with the fix being that CMake should fail-fast if the user selects conflicting options?
Failing seems like it would defeat the purpose of the option. Maybe we could spit out a STATUS
message instead telling why we are building the external anyway.
Alternatively, do we even need WITH_ALL_PUBLIC_EXTERNALS
or WITH_ALL_SUPPORTED_EXTERNALS
?
Alternatively, do we even need WITH_ALL_PUBLIC_EXTERNALS or WITH_ALL_SUPPORTED_EXTERNALS?
Good question. I've always found those options confusing, but they predate me and maybe someone has a workflow that depends on them.
I would vote to remove the options. There are several (mostly sensible) ways I can see that you could go when there are conflicting flags.
WITH_ALL_*
.WITH_*
(current behavior?).WITH_ALL_*
and WITH_*
.WITH_ALL_*
options.WITH_*
options (just for completeness).Which probably means someone will be confused (except for the last two options). For the ignore, there should at least be a warning.
Another possibility that we discussed last Dec w/ kitware's initial visit was to have the WITH_* options toggle between more states (ON | OFF | IF_ALL_EXTERNALS ) or something like that.
I'm ok with removing the WITHALL* options (and updating the docs). The problem they were originally trying to solve was that many people don't have permissions for all of the externals (and then get a mysterious failure at the download step). Is there a better way to label the ones that require additional permissions? In the name (e.g. WITH_SNOPT_REQUIRES_PERMISSIONS) or having the toggle be ( OFF | ONREQUIRES_PERMISSIONS ) . OR we could have a separate option for HAVE_PERMISSIONS_SNOPT (true|false) and then WITH_SNOPT could be (OFF | IF_PERMISSIONS) and WITH_SNOPT_PRECOMPILED could be (OFF | IF_NO_SNOPT_PERMISSIONS) or something?
Or stop trying to push CMake past its limits, and admit we need a wrapper script around the initial configuration and superbuild step? Many of us already have our own custom bash or python script to invoke a first-time build, since it's already impossible to do correctly by hand. Putting that in-tree would be of benefit to everyone.
would be happy to have something like that in-tree. can we write something useful for users that have different acks? thinking about how we could do that makes me realize there is another possibility using CMAKE. We could have the WITH_ALL_SUPPORTED_EXTERNALS and WITH_ALL_PUBLICEXTERNALS be effectively command line options only, instead of (redundant) options. If those variables are defined, then it changes the defaults of the WITH*, but it will never override their settings nor the the cache. That's actually my favorite solution yet.
so the doc would tell people to run
cmake -DWITH_ALL_PUBLIC_EXTERNALS
or
cmake -DWITH_ALL_SUPPORTED_EXTERNALS
if they have access to the internal repos. (we could potentially change that to have a special one for RLG, for TRI, ...)
The problem they were originally trying to solve was that many people don't have permissions for all of the externals (and then get a mysterious failure at the download step). Is there a better way to label the ones that require additional permissions?
We could probably do the opposite; add an option like 'WITH_PRIVATE_EXTERNALS', and hide non-public externals if that is OFF.
There was also talk of moving the CI option sets into the drake proper repo. Maybe we could do that and leverage the same machinery for users also, somewhat like the immediately preceding comment.
These various options no longer exist. All this is now handled by Bazel.
I’m still having trouble building iris on my mac. After a clean build with all supported externals, i tried to disable iris, but it is still being built.
note that it is still “preparing to build iris” despite my having turned it off.