-
-
Notifications
You must be signed in to change notification settings - Fork 702
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
Build entire Phobos with -preview=dip1000 #6931
Conversation
Thanks for your pull request, @wilzbach! Bugzilla referencesYour PR doesn't reference any Bugzilla issue. If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog. Testing this PR locallyIf you don't have a local development environment setup, you can use Digger to test this PR: dub fetch digger
dub run digger -- build "master + phobos#6931" |
|
That could be due to the public unittest checker dropping the unittest attributes, but the linking errors on the Auto-Tester are still there and real. |
I'm confused. Why did this work with dip1000.mak with it all set to dip1000, and this fails? |
What is std_exception.d generated from? |
It never worked. It only worked for the unittest target because we compiled all Phobos with it, there that's why there are no linker errors there. We never compiled Phobos as a library with dip1000, because as I have been constantly saying it never worked. |
|
Why would std.exception fail when compiled as a library but work compiled as a unittest? |
I'm also confused:
compiles without error with and without -dip1000 |
So does compiling std.exception with |
I would start looking at the linker errors on the Auto-Tester which show that the recent exclusion of the inferred return in the mangling didn't cover everything:
|
Nope, they get dropped by the unittest parser (the external tool, not the compiler). They get dropped because for user-facing public examples their unittest attributes shouldn't matter. Anyhow, how is my previous reply not explanatory?
|
What do you suggest be done to correct the failure? |
It's kinda hard to figure out what is going on, since I don't know what compiled with what is linking with what compiled with what. The linker error says what wasn't found, but doesn't say what is in the library that should match it. If you could find a file that compiled with different mangling depending on -dip1000 on or off, that would be sufficient for me to find the problem. |
How about this bug report from a year ago? https://issues.dlang.org/show_bug.cgi?id=18820 Alternatively, to reproduce the error on auto-tester:
So as mentioned any more complex combination of mixing object files compiled with and without -preview=dip1000 still results in linker errors. The specific example from the auto-tester can be reduced to this file: void main() {
import std.file;
auto input = readText("foo");
} Maybe that's because |
https://issues.dlang.org/show_bug.cgi?id=18820 is working. |
See dlang/dmd#9508 for solution to at least some of these issues. |
@wilzbach can you ping the autotester to restart testing, now that 9508 has been pulled? |
Just force push or rebase. |
It's not my PR, so I don't think I can do that. |
Sure you can. All maintainers can push to all PRs. Anyhow, as you all know the PRs at the Auto-Tester get automatically restarted whenever master moves forward. Have a look at the build logs and datestamps. It's from today and yup still failing. |
For reference:
|
Reduced the issue to https://issues.dlang.org/show_bug.cgi?id=19857 |
Now it fails due to https://issues.dlang.org/show_bug.cgi?id=19873 |
PR to the publictests extractor -> dlang/tools#369 |
Incredible. This is actually passing now 🎉 |
This should probably have a changelog entry at some point. |
I can add a quick one, but as pointed out at DConf, this is the easy part of the dip1000 transition. Making all 1500 dub packages build with it, will require a lot of effort and energy plus very likely deprecation messages. |
-> #7005 |
With dlang/dmd#9476, this could work now ...