Boost logo

Boost-Build :

Subject: Re: [Boost-build] intermediate directory control
From: George Georgiev (george.georgiev.sf_at_[hidden])
Date: 2012-05-16 10:27:17


On Tue, May 15, 2012 at 9:23 AM, Nogradi, Chris
<Chris.Nogradi_at_[hidden]> wrote:
>> On Tuesday, May 15, 2012 9:33 AM, George Georgiev wrote:
>> > On Mon, May 14, 2012 at 6:02 AM, Nogradi, Chris wrote:
>> > Would it be possible to also provide a version of abbreviate-paths
>> > that is guaranteed to not go beyond the windows path limit?
>>
>> My 2 cents.
>>
>> I have some concerns about this idea.
>>
>> The abbreviated path will be function of the root directory and the
>> max length of the file targets. This means that running the build from
>> different root directory could change the location path.
>
> Hmm I double checked our builds and all commands to compiler/linker/tools are relative to the root.
> So I don't think the root dir would be a function of the algorithm unless you are explicitly doing something to override this default behavior.

Yes the root dir is not a function of the the local path. In fact my
statement is exactly the opposite. What I said is that for feature
that guarantees that the whole path = (build-dir + project-dir +
location-path + target-path) to be limited with a length needs to
guarantee that the location-path is limited to location-path-limit =
MAXLIMIT - length(build-dir) - length(project-dir) -
length(target-dir). If the location-path-limit is a function of the
build-dir, then the resulted abbreviated location-path will be
function of build-dir too.

>
> Which makes me wonder why in Jenkins you are seeing an issue.

My build-dir is relative to the directory the whole project is located too.
If this is the relative path of one of my file targets
intermediate\compiler\msvc-10.0\release\address-model-32\architecture-x86\link-static\runtime-link-static\threading-multi\model\field.obj
running the project from say c:\project will result in absolute path
c:\project\intermediate\compiler\msvc-10.0\release\address-model-32\architecture-x86\link-static\runtime-link-static\threading-multi\model\field.obj

but the same target absolute path when I run the project in Jenkins
will be: C:\jenkins\workspace\compil-windows\arch\x86\bits\32\link\static\os\windows\toolset\msvc-10.0\intermediate\compiler\msvc-10.0\release\address-model-32\architecture-x86\link-static\runtime-link-static\threading-multi\model\field.obj

>
> I use matrix builds also and yes the root depth increases but the commands to the tools stay the same.

The problem is not with the execution path of the tools, but the
arguments that change.

>
>> Even adding a new target with longer name could change it.
>>
>
> Good point.  However, if you add a new target and the paths blows up then you have to change the environment anyways to deal with the problem.  At least, with this feature, only the targets in the same destination path would be relocated and rebuilt rather than the whole project.
>
>> I think the persistence of the location path is important.
>
> Yes that would be ideal and maybe even sufficient reason to abandon this request.
>
> Thanks for your 2c
>
> Chris
>
>
>
> This e-mail and any attachments may contain confidential material for the sole use of the intended recipient. If you are not the intended recipient, please be aware that any disclosure, copying, distribution or use of this e-mail or any attachment is prohibited. If you have received this e-mail in error, please contact the sender and delete all copies.
>
> Thank you for your cooperation.
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk