[cmake-developers] FindX11 change breaks complex test

Rolf Eike Beer eike at sf-mail.de
Wed Aug 15 16:06:18 EDT 2012


David Cole wrote:
> On Wed, Aug 15, 2012 at 3:31 PM, Rolf Eike Beer <eike at sf-mail.de> wrote:
> > David Cole wrote:
> > > On Wed, Aug 15, 2012 at 1:28 PM, Rolf Eike Beer <eike at sf-mail.de> wrote:
> > > > Bill Hoffman wrote:
> > http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=97c338bac910d087eff9b16
> > 
> > > > 0e>
> > > > 
> > > > > 3b68f2eeee482a5
> > > > > 
> > > > > 
> > > > > http://open.cdash.org/testDetails.php?test=156453780&build=2517168
> > > > > 
> > > > > CMake Error at /export/home/kitware/Dashboards/My
> > > > > 
> > > > > Tests-SunOSsnv_135.11i86pc-gcc/CMake/Modules/FindX11.cmake:329
> > 
> > (list):
> > > > >    list sub-command REMOVE_DUPLICATES requires list to be present.
> > > > > 
> > > > > Call Stack (most recent call first):
> > > > >    /export/home/kitware/Dashboards/My
> > 
> > Tests-SunOSsnv_135.11i86pc-gcc/CMake/Modules/CMakeBackwardCompatibilityC.c
> > 
> > > > ma>
> > > > 
> > > > > ke:56 (include)
> > > > > 
> > > > >    CMakeLists.txt:5 (project)
> > > > 
> > > > I'll work around this for now, but I wonder if the restriction in
> > > > list(REMOVE_DUPLICATES) actually makes sense. We don't give an error
> > > > if
> > > > there
> > > > are no duplicates, why should we give an error if there are no items?
> > > 
> > > Is it that there are no items, or that there is not even a list with
> > > that
> > > name?
> > 
> > In line 151 of FindX11.cmake there is a
> > 
> >   set(X11_LIBRARY_DIR "")
> > 
> > so the variable should exists.

> Well, I can't think of why anybody would care if REMOVE_DUPLICATES on an
> empty list produces a still empty list with no error.

[...]

> Silliness aside, I would be ok with changing the behavior to avoid the
> error in this particular case. Unless somebody has a real-world
> counter-argument where it is considered important to preserve our presently
> silly behavior.

That thing is even more silly. I just took the test for this 
(Tests/CMakeTests/ListTest.cmake.in) which looked like this:

set(result bill andy bill brad ken ken ken)
list(REMOVE_DUPLICATES result)
TEST("REMOVE_DUPLICATES result" "bill;andy;brad;ken")

Now I went and changed it to be

list(REMOVE_DUPLICATES result foo bar baz)

And guess what? It worked.

Eike
-- 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20120815/24d415d2/attachment.sig>


More information about the cmake-developers mailing list