>>> On 17-11-2010 at 23:28, in message
<aanlktin6z9rxfqprwdux-qge4b_wych_fvy9dyo7d...@mail.gmail.com>, David
Cole
<david.c...@kitware.com> wrote: 
> On Wed, Nov 17, 2010 at 4:50 PM, Alexander Neundorf
<neund...@kde.org> wrote:
>> 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
>>
> 
> We may have discussed it, but it was a while ago, and my brain can't
> recall specific details about how we arrived at this point.
> 
> This policy, and all CMake policies should default to OLD. But if a
> project says cmake_minimum_required 2.8.4 ... then it can use the
NEW
> behavior.
> 
> The old behavior is: do not load stuff from CMAKE_MODULE_PATH in a
> "special" manner. That should be the default.
> 
> OLD and warn should be the default. Then projects themselves that
have
> these modules, can say "use cmake 2.8.3 until we have a chance to
> update our code... then you can use cmake 2.8.4"
> 
> It should be consistent with all other policies.
> 
> Otherwise, it will be too hard to explain this policy.
> 
> OLD and warn.
> NEW if a project explicitly sets it NEW or requires 2.8.4.
> 
> Why should this policy be the first intentional exception to this
pattern?
> 
> It shouldn't.
> 
> 
> David

Hi all,

I've been following this discussion with interest for quite a while. I
was wondering if both worlds could be united (Alex's and David's) if it
were possible to set cmake_minimum_required on the command line? That
way Alex can be happy, because he doesn't have to modify CMakeLists.txt
files - something he cannot do for previous KDE releaeses; and David
will be happy, because old projects will not suddenly break due to some
incompatible changes in CMake.

BTW: IMHO this new policy should default to NEW for CMake 2.8.4 and
later, but I think that's what David suggested as well.

Just my 2cts.

Regards,
Marcel Loose.


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

Reply via email to