-
-
Notifications
You must be signed in to change notification settings - Fork 229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Should --abbreviate-paths be made default under Windows? #378
Comments
Well... #325. |
On the one side it makes sense, msvc compiler and linker doesn't support long path even with windows opt-in long path support feature. But on the other, it's more like a Boost issue. The only Boost library that needs explicit |
This is not really a Boost issue. Let's unwrap the issue in full. As described in #368, In order for b2 to use that flag both Unfortunately, it doesn't work for Conditional properties are evaluated several times, because they can have order of evaluation dependency: property P1 adds property P2 to the property set, property P3 adds P4 to the property set, but only if P2 is in it. So, evaluating P1 then P3 gives P1 P2 P3. But evaluating P3 then P1 gives P1 P2 P3 P4. Due to this effect, But the second will not in fact be built again. This is because This is why boostorg/boost#894 removes those hidden features and relies on regular features instead. The issue fundamentally isn't tied to Boost at all. What are the potential ways to fix the issue, while keeping hidden features? We could change BTW, in theory, this isn't just a problem with |
I consider that a bug in b2.
Hmmm, maybe #303 was a wrong idea, I don't know.
I have a patch in the stash that does that. I think it makes no sense that |
Philosophically it is not correct to add |
That's a straw man. I didn't propose to add I honestly consider |
What do you mean by that? That 32 bit should be a separate How would that solve our problem? |
Well, then what does this mean?
I just tried
And got
So, adding wrong flags only works if GCC has been configured to recognise them. Which is not necessarily the case. So, again, maybe practically things will work, maybe they won't. And fixing it on the user side would probably require patching gcc.jam. Although, doing something like this should probably work:
But it suddenly requires much more understanding of b2 from the user. |
#379 Oh, you meant, you wanted to add architecture deduction to toolset modules. I see. |
Another option is to special-case |
Yet another option is to have a max property set path length threshold in b2.exe and switch to a hash automatically once that is hit. Unfortunately we'll have to set some arbitrary constant there because the combined path depends on the current directory. But it will be better than nothing. |
We're looking at implementing the |
IMO.. We should make the hash mode the default on Windows if we truly want to resolve this. Anything else just postpones the problem. |
Hiding the paths isn't ideal; it's useful to see what's being built. At minimum we should keep the paths that don't exceed the hash length (32), but the budget can also be set a bit higher (e.g. 40). |
I have an idea that can alleviate the issue and it involves a change that I've wanted to make for a while: feature minimization should consider toolset defaults and requirements ( That will allow msvc toolset to do But such minimization might open a can of worms: cache could become invalid suddenly, in a way like |
With boostorg/boost#894 being merged, paths now acquire the additional
address-model-64/architecture-x86/
, which means increased probability of hitting the dreaded Windows path length limit.Is there a downside of making --abbreviate-paths on by default on Windows? I can't think of any.
The text was updated successfully, but these errors were encountered: