On 9/20/2010 1:39 PM, Eric Noulard wrote:
2010/9/20 Eric Noulard<[email protected]>:
2010/9/20 Bill Hoffman<[email protected]>:

Eric,

This commit is breaking windows installs:

commit 6a521f8604ee4e6a757109e731a36fdc5575f6c8
Author: Eric NOULARD<[email protected]>
Date:   Mon Aug 23 17:38:33 2010 +0200

    CPack   Enable better handling of absolute installed files

    The idea of the patch is to let the install generator define
    CPACK_ABSOLUTE_INSTALL_FILES then when CMake is installing
    project he will concatenate the list of files and give
    it to specific CPack Generator by defining CPACK_ABSOLUTE_INSTALL_FILES
    to be the list of ALL files that were installed using absolute
destination.
    An example of use has been applied to RPM generator which now
    tries to automatically build a relocatable package.


[...]

Why do you convert the / to an output path?

I do not remember ... :-(

I'm looking into this just now, give half an hour and I'll come
with some answer.

Now I know: this is a plain mistake :-).

6a521f86 (Eric NOULARD       2010-08-23 17:38:33 +0200  71)    os<<  dest<<
cmSystemTools::ConvertToOutputPath("/");
6a521f86 (Eric NOULARD       2010-08-23 17:38:33 +0200  72)    if (rename&&
*rename)

All paths in the cmake_install file should be cmake paths as cmake is going
to consume them.

Off course, you are right.

Considering this is plain mistake, the fix is obvious

os<<  dest<<  "/";

corresponding patch is attached.

Would you like me to apply it to next or would you
prefer to do it yourself?

All that said, I am not sure why no test failed from this ????

May be because there is no test with absolutely installed file
in the test suite?

I'll have a look too.

OK I think I know.
The provided example from Micha Renner is a little awkward
it uses "unix-like" absolute install path "/usr/local"
on a Windows hosts :-)

May be it's supposed to work but I wonder if
it's a common usage pattern.

The path he used does not really mater, it should have worked.

The bare reality is twofold:

   a) I do not use windows platform myself so I rely
       on dashboard for regression.

   b) I did not add a [cross platform] test for this change

I shall try to write one test for this, but this may not be easy
to write a cross-platform one because I'll have to find a "writable"
"absolute destination" for each platform.

On Unix platforms "/tmp" should be ok
On WIndows I really don't know.

  What do you think?
Use the absolute path to the binary directory for the project, it should always be writable. The test should not try to write into system areas even if it can...

For example this change:
INSTALL(FILES ${CMAKE_SOURCE_DIR}/CTest.c
  DESTINATION ${T_BINARY_DIR}/usr/local)


Still gives the same error:

>CMake Warning (dev) at cmake_install.cmake:31 (list):
1>  Syntax error in cmake code at
1>    C:/Users/hoffman/Max/tm/src/b/cmake_install.cmake:32
1>  when parsing string
1>    C:/Users/hoffman/Max/tm/src/b/usr/local\CTest.c
1>  Invalid escape sequence \C


So, if you could create a patch with a test that would be great.


-Bill
_______________________________________________
cmake-developers mailing list
[email protected]
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to