[cmake-developers] ExternalProject EXTRACT_COMMAND (was: New feature, git access)
Pau Garcia i Quiles
pgquiles at elpauer.org
Wed Nov 27 04:47:31 EST 2013
On Tue, Nov 26, 2013 at 4:26 PM, Brad King <brad.king at kitware.com> wrote:
The test fails for me with spaces in the path because you're writing
> the extraction command into the script without quoting so the spaces
> cause incorrect parsing at build time. You can write it as
>
> file(WRITE ... "
> ...
> set(extract_command "${extract_command}")
> ...
> ... COMMAND \${extract_command} ...
> ...
> ")
>
> so that the exact value of the command is stored in the script and
> expanded when evaluated at build time. It is probably simplest to
> refactor the default extraction command to be written into the script
> in this way also. Then you simply don't generate the default when an
> explicit command is passed.
>
>
If I understand correctly what you mean, that would require either:
- Duplicating the test for extensions in both the extract-<target>.cmake
and the current location so that we can fail in CMake generation time if a
file we don't know how to extract is passed
or
- Failing ("error: do not know how to extract...") only in compilation time
Or maybe I'm missing something?
The EXTRACT_COMMAND needs a way to have a placeholder for the file name
> so that the caller does not need to know where ExternalProject keeps
> the file after downloading.
>
>
Actually, the test was wrong: the filename is automatically appended to the
end. I. e. EXTRACT_COMMAND is exactly that: the command, not the command +
filename:
EXTRACT_COMMAND ${CMAKE_COMMAND} -E tar xvf
not
EXTRACT_COMMAND ${CMAKE_COMMAND} -E tar xvf /path/to/file
However, the placeholder could prove useful if the filename needs to go in
the middle of the EXTRACT_COMMAND. Do you have any suggestion of should I
make something up, like, say, >#< ?
I am attaching a new patch, which fixes the path-with-spaces issue. No
placeholder has been implemented yet.
> I don't understand the "...After you have been invited..."
> > in http://www.cmake.org/Wiki/CMake/Git/Account#Git
> > (who would know I need an invitation!?)
>
> The sentence immediately preceding that says "See our new maintainer
> instructions to join" and has a link to the instructions. They have
> a step for posting to this list for discussion. We invite productive
> contributors for direct access in due time.
>
>
My bad :-) I visited the link, read the instructions but on step 4 I was
only reading until "Subscribe to the CMake Developers Mailing List". As I
was already subscribed, I didn't look any further O:-)
--
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20131127/31950af8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: epa-extract-command-20131127-1031.patch
Type: application/octet-stream
Size: 6867 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20131127/31950af8/attachment-0002.obj>
More information about the cmake-developers
mailing list