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
Fix PyPy Compile Issues #534
Conversation
Suggested-By: Jason Schulz <jason@schulz.name>
Building pypy is highly sensitive to CFLAGS (see asmgcroot http://pypy.org/download.html) This commit sanitizes CFLAGS sans custom-cflags USE. Gentoo-Bug: 568698 Suggested-By: Jason Schulz <jason@schulz.name>
Building pypy is highly sensitive to CFLAGS (see asmgcroot http://pypy.org/download.html) This commit sanitizes CFLAGS sans custom-cflags USE. Gentoo-Bug: 568702 Suggested-By: Jason Schulz <jason@schulz.name>
😞 The QA check for this pull request has found the following issues: Issues persisted from underlying repository state: |
This is not going to fly. Stripping all flags is just wrong, and will cause fatal failures on some systems. |
@mgorny Enumerating all the flag combinations that cause issues would be difficult, to say the least. My specific case was declaring the architecture for the compiler, but I'm not doing much else fancy. According to the PyPy developers, the build is sensitive in general with their default of In my case, the existing What would be an example of a system where stripping all flags would be fatal? |
That's more than weird. |
(or compiler is broken) |
Not exactly. However, there's But to be honest, reading the upstream answer there, I would consider switching to shadowstack by default, and possibly dropping non-shadowstack at some point, if upstream doesn't do that first. |
Hmm, if you could work on this a bit more, could you try figuring out which |
Using I would argue that normalizing I can try to implement this, but it's a bit more involved. |
Hmm, just to be clear, are you getting this error with |
I wouldn't be too surprised My hope was that it would cut down on build issues people might have, bug reports, and hopefully make things a tiny bit simpler for others. I've noticed a few other projects have taken a similar tack (e.g. chromium, wine, x264, etc...). The reason for the original approach was to preserve the standard linux default for PyPy ( |
Well, one of the ideas behind PyPy is that it's supposed to be fast. Forcing optimizations down to pure common denominator (which is really bad considering early AMD64 vs Intel) opposes that. And as you can see, most of those bug reports resulted in upstream fixes. I'm going to try to experiment a bit on a strong server. |
I'm afraid I can't test this much since PyPy relies on run checks, and my server can't run ivybridge executables. |
If PyPy has a benchmark suite, it may help to compare between common ( Note, LTO has also been successfully used with firefox giving non-trivial results and correct compilation so far. The JIT isn't explicitly benchmarked, although the page benchmarks are heavily javascript dependent which may or may not be relevant. Surprisingly, it currently fails to compile w/ Gentoo. |
LTO is only relevant to people who have enough RAM ;-P. |
The footprint for bigger stuff like libreoffice and firefox used to be ginormous. It's come down a lot over the last few versions of gcc and clang, along with better performance, but LTO is definitely difficult to scale. Linking PyPy took something like a half hour with clang. It's a bit faster with gcc since it uses partitions, but the results aren't completely deterministic. |
I'm going to close this since this is not really a solution and it does not follow the procedure for eclass changes. I think we should focus on targeting specific issues with specific fixes. If you have some known-needed |
I would hazard a guess there are going to be more build issues going forward without normalizing |
This fixes compile issues in dev-python/pypy and dev-python/pypy3. The builds are sensitive to cflags (see asmgcroot http://pypy.org/download.html).
These commits add support for stripping all cflags from an ebuild to flag-o-matic, and default to it without custom-cflags in pypy and pypy3 (live).