On Wednesday 17 November 2010, David Cole wrote:
> 2010/11/17 Alexander Neundorf <neund...@kde.org>:
> > On Thursday 14 October 2010, David Cole wrote:
> >> On Thu, Oct 14, 2010 at 1:30 PM, Alexander Neundorf 
<neund...@kde.org>wrote:
> >> > On Wednesday 13 October 2010, Alexander Neundorf wrote:
> >> > > On Wednesday 13 October 2010, Bill Hoffman wrote:
> >> > > > So, I think we have to use the new name approach.  Do we want to
> >> > > > call
> >> >
> >> > it
> >> >
> >> > > > 2?  Or should we call it something else?
> >> > > >
> >> > > > Alex, do you have time to do this?
> >> > >
> >> > > I think it's not a good solution, and the one with CURRENT_LIST_DIR
> >> > > is definitely better and already implemented.
> >> > > And I am still convinced that I am right here, see my other mails.
> >> >
> >> > So I would suggest to merge the CURRENT_LIST_DIR branch for 2.8.3, and
> >> > as soon
> >> > as 2.8.3 is released, remove the full paths again and enable the new
> >> > CMP0017
> >> > instead (prefer CMAKE_ROOT when include()d from CMAKE_ROOT) and then
> >> > see what
> >> > happens during the whole 2.8.4 cycle.
> >> >
> >> > I think this (CMP0017) is necessary, because otherwise we can only
> >> > hope nothing breaks with future releases (independent from FPHSA).
> >> >
> >> > Alex
> >> > _______________________________________________
> >> > cmake-developers mailing list
> >> > cmake-developers@cmake.org
> >> > http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
> >>
> >> I'm ok with this since Alex feels so strongly about it, and the code
> >> change is restricted to using CMAKE_CURRENT_LIST_DIR only when including
> >> FPHSA.cmake... (i.e. -- it should not affect including *other* files
> >> from inside of modules that are presently overridden... which was my
> >> concern -- that we'd break some *other* scenario -- since that's not
> >> true, I retract my objection.)
> >>
> >> To review the change yourself:
> >>   git fetch stage
> >>   gitk remotes/stage/AddCMAKE_CURRENT_LIST_DIR
> >>
> >> Look at the top 3 commits. Looks pretty safe. I'd say we should merge it
> >> to 'next' and then after a night on the dashboards, merge it to 'master'
> >> and do an rc3 release based on that.
> >
> > There is now a branch
> > PreferCMakeModulesByCMakeModulesWithPolicy-NoTrailingWhitespaceCommit on
> > stage.
> > This contains right now only one commit, and that's the commit which adds
> > a policy which decides whether files in CMAKE_ROOT are preferred over
> > CMAKE_MODULE_PATH if include()d from withing CMAKE_ROOT.
> >
> > Currently (in this branch) this new policy is set to WARN, i.e. still the
> > old behaviour by default.
> > As discussed, I think for this policy the default has to be new, because
> > otherwise it doesn't have the desired effect, (with WARN the projects
> > will break, but with warnings).
> >
> > So, are you ok if I set this policy to NEW by default ?
> >
> > I would also remove the full path for the
> > include(FindPackageHandleStandardArgs) in this branch again.
> >
> > If there are no objections, I'll do this in the next days and then merge
> > into next.
> >
> > Alex
>
> It doesn't make sense to introduce a policy that defaults to NEW. The
> reason for adding a policy is to *avoid breaking* existing projects.
>
> The default / OLD behavior should not break anything. It is when
> switched to NEW that stuff might break.
>
> How is it that projects will break with the OLD behavior of this
> policy? If OLD breaks stuff, then it's not really OLD...

Hmm, we discussed this here at length already...

With no change in behaviour (i.e. old behaviour), if some cmake module inside 
CMAKE_ROOT does include(SomeFile), and then uses some features of 
SomeFile.cmake introduced in the same cmake version in a backward compatible 
way, this breaks if there is another user-supplied SomeFile.cmake in 
CMAKE_MODULE_PATH (maybe just a copy from the previous cmake release), 
because that "old" SomeFile.cmake doesn't have yet the features present in 
the current cmake version which the SomeFile.cmake-using module expects to be 
present (because it's not forward-compatible).
With this policy a module in CMAKE_ROOT can rely on the fact that it also gets 
the module it expects, i.e. the one also from CMAKE_ROOT and not another, 
potentially old and incompatible one, from CMAKE_MODULE_PATH.

That's why this policy has to be set to NEW to avoid breakage.

The result from the discussion here was to use the full path as a quick fix 
for 2.8.3, and as soon as this is out, use the new policy and see whether/how 
much breakage there is.

Alex
_______________________________________________
cmake-developers mailing list
cmake-developers@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to