[CMake] Issues with execute_process and svn
David Cole
david.cole at kitware.com
Thu Jul 14 08:31:53 EDT 2011
Yes. The net effect from svn's point of view is that one of the
arguments given to it contains a space.
On Wed, Jul 13, 2011 at 11:31 PM, <aaron.meadows at thomsonreuters.com> wrote:
> Ah, so does that mean that it is escaping the space, similar to --username\ MyUserName ?
>
> Aaron Meadows
>
>
> -----Original Message-----
> From: David Cole [mailto:david.cole at kitware.com]
> Sent: Wednesday, July 13, 2011 4:09 PM
> To: Meadows, Aaron C.
> Cc: cmake at cmake.org
> Subject: Re: [CMake] Issues with execute_process and svn
>
> It boils down to this:
>
> set(args --username MyUserName)
> # sets args to a list with two elements
>
> set(args "--username MyUserName")
> # sets args to a list with one element: a string containing a space
>
> execute_process(COMMAND blah ${args})
> # calls the command "blah" expanding the n-element CMake list variable
> "args" such that each list element is a separate arg to
> execute_process, and hence a separate arg to the blah command
>
>
> HTH,
> David
>
>
> On Wed, Jul 13, 2011 at 4:20 PM, <aaron.meadows at thomsonreuters.com> wrote:
>> That works! Thanks!
>>
>> Any idea why the other way was causing issues?
>>
>> Aaron Meadows
>>
>>
>> -----Original Message-----
>> From: David Cole [mailto:david.cole at kitware.com]
>> Sent: Wednesday, July 13, 2011 1:06 PM
>> To: Meadows, Aaron C.
>> Cc: cmake at cmake.org
>> Subject: Re: [CMake] Issues with execute_process and svn
>>
>> Take the double quotes off the set commands for your args variables.
>> And put spaces in between the dereferences of those vars in the
>> execute_process command.
>>
>> Like this:
>>
>> # No double quotes here:
>> if(NOT $ENV{CMAKE_SVN_USERNAME} STREQUAL "")
>> set(_SvnCredPart --no-auth-cache)
>> set(_SvnUserPart --username $ENV{CMAKE_SVN_USERNAME})
>> endif()
>> if(NOT $ENV{CMAKE_SVN_PASSWORD} STREQUAL "")
>> set(_SvnCredPart --no-auth-cache)
>> set(_SvnPassPart --password $ENV{CMAKE_SVN_PASSWORD})
>> endif()
>>
>> # Spaces in between dereferenced vars here:
>> execute_process(COMMAND "${svnexe}" --non-interactive
>> ${_SvnCredPart} ${_SvnUserPart} ${_SvnPassPart}
>> info .
>> OUTPUT_VARIABLE _out
>> ERROR_VARIABLE _err
>> RESULT_VARIABLE _res)
>>
>> message(STATUS "out: ${_out}")
>> message(STATUS "err: ${_err}")
>> message(STATUS "res: ${_res}")
>>
>>
>> HTH,
>> David
>>
>>
>> On Wed, Jul 13, 2011 at 1:57 PM, <aaron.meadows at thomsonreuters.com> wrote:
>>> Hi all,
>>>
>>>
>>>
>>> I've been having a devil of a time with executing SVN with execute_process.
>>> Basically, I need to read environment variables to specify the username and
>>> password for builds on our build server (where we do not cache credentials).
>>>
>>>
>>>
>>> I've made several attempts at this, and have been foiled continually by one
>>> problem, exemplified in the attached CMakeLists.txt. If I build arguments
>>> in variables and then specify them in the execute_process, I get an error
>>> like this:
>>>
>>>
>>>
>>> -- err: svn.exe: invalid option: --no-auth-cache --username foo --password
>>> bar
>>>
>>> Type 'svn help' for usage.
>>>
>>>
>>>
>>> However, if I write the identical command to a file and execute that, I get
>>> no issue. I've narrowed it down to the <space> between --username and foo,
>>> but can't seem to figure out what the deal is. I've tried replacing them
>>> with a value from string(ASCI 32 _sep), but that didn't change the
>>> behavior. I've tried this on Windows 7 and Windows Server 2008, and both
>>> behave the same way.
>>>
>>>
>>>
>>> You can try these two methods out on the CMakeLists.txt. By default, it
>>> will use the straight execute_process. If you call cmake with -D TestFile=1
>>> it will write the commands to a file and execute that. (in which case
>>> you'll get svn: '.' is not a working copy and not the invalid option issue)
>>>
>>>
>>>
>>> Thanks for any help you can provide!
>>>
>>>
>>>
>>> Aaron Meadows
>>> Software Engineer
>>>
>>> Thomson Reuters
>>>
>>> Phone: 314.468.3530
>>> Mobile: 636.541.6139
>>> aaron.meadows at thomsonreuters.com
>>> thomsonreuters.com
>>>
>>>
>>>
>>> This email was sent to you by Thomson Reuters, the global news and
>>> information company. Any views expressed in this message are those of the
>>> individual sender, except where the sender specifically states them to be
>>> the views of Thomson Reuters.
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the CMake FAQ at:
>>> http://www.cmake.org/Wiki/CMake_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.cmake.org/mailman/listinfo/cmake
>>>
>>
>> This email was sent to you by Thomson Reuters, the global news and information company. Any views expressed in this message are those of the individual sender, except where the sender specifically states them to be the views of Thomson Reuters.
>>
>
> This email was sent to you by Thomson Reuters, the global news and information company. Any views expressed in this message are those of the individual sender, except where the sender specifically states them to be the views of Thomson Reuters.
>
More information about the CMake
mailing list