Closed mcallegari closed 2 years ago
hmm i might have an idea why 2.29 can build it and later can not. The biggest change in 2.30 and later versions of binutils where the addition of automatic symbol versioning,
but as you can see in the link ill provide here https://bugzilla.redhat.com/show_bug.cgi?id=1599521#c9 it was not without cost.
Unfortunatly the patches to revert this behaviour are for linux and the messages are a bit different but in the end they mean exactly the same as the error we are getting, namely that the linker cannot read the symbols.
I would offer to recreate them for him
Thanks @revelator, but this is not needed. I mean, finally I find a way to build everything in all the cases (using directly .o or .obj files extracted from clangEdit library) I was not commenting anymore because my way is a very dirty workaround and the discussion turned on the real issue and a way to fix it cleanly. It is also far away from my knowledge. The only contribution I can provide right now is to share my dirty workaround as a temporary solution...
Heh it also got a bit sidetracked with the ctor stuff, but yeah it would not have helped others or else i could have turned that specific task into a fulltime job hehe.
@revelator try to downgrade grep to 3.0
ok ?, allthough i allready fixed it using binutils-2.29. Any problems with the current version of grep ?
@revelator
The following changes affect only MS-Windows platforms. First, the --binary (-U) option now governs whether binary I/O is used, instead of a heuristic that was sometimes incorrect. Second, the --unix-byte-offsets (-u) option now has no effect on MS-Windows too.
I've seen @Alexpux updated to 5.12.0. Does this problem persist or has it been fixed ? Can we close ?
Issue not solved, we can’t downgrade binutils because GCC 8 require at least bounties 2.30
Then how did you manage to create the 5.12.0 package on i686 ? Manual changes somewhere ? I'm building my minimal version right now. Let's see how it goes.
sorry been away some days, family matters. thx mati ill try that.
guess we can only hope that the next version of binutils will fix the breakage.
I’m manually linking qdoc for 32-bit to finish the builds
my 2 cents... although my "final" workaround (extract the objs from the lib and link them instead of the static lib) is all but optimal, I guess is somehow better than a manual linking in the middle of the building flow. As I said some comments ago, I applied this patch in a different environment so I made the port in this environment and I'm running a complete build in msys... if it will goes fine I will push everything and then it will be up to you to decide to use it or not while waiting for binutils to be fixed...
Issue not solved, we can’t downgrade binutils because GCC 8 require at least bounties 2.30
As of yesterday, MSYS2 delivers GCC 7.4.0. So why are we fighting against a buggy binutils when it's not yet a requirement ? Can we think about this when GCC 8 lands in MSYS2 (and possibly binutils gets fixed), and in the meantime use 2.29 ?
@mcallegari don’t confuse between MSYS and MINGW-W64 GCC. Right now 64-bit MINGW-W64 GCC is at 8.2.1 in repo
Not sure if binutils >= 2.30 are needed for gcc-8 i just built gcc-8.2.1 with binutils-2.29 with no problems whatsoever so is this requirement for building stuff with gcc ?
@revelator, try to build Qt5 with GCC8 + binutils 2.29
will try in a sec.
try to build Qt5 with GCC8 + binutils 2.29
Should this be "try to build clang 7.0.0 with gcc 8 and binutils 2.29" ? Cause clang is the root of all evil for Qt5
@mcallegari no I mean what I wrote. Qt5 cannot be builded with gcc8 + binutils 2.29
ah ok so its on use that it requires binutils greater or equal than 2.30, well seems we are back to waiting for a bugfix for binutils > 2.30 or use other methods of linking in clang in the meantime.
I don't have any time to look at this, but could someone use git bisect on binutils to figure out which commit broke it here? You want to minimize the qt build time of course. Is the problem suspected to be in the linker or the assembler?
as far as i could find out it seems to be the linker which causes problems, if im not mistaken its caused by some changes to the i386pe scripts. I could try to revert them to previous behaviour but i cant say if it would break anything in regards to gcc-8.
I’m manually linking qdoc for 32-bit to finish the builds
@Alexpux: Waiting for binutils to get fixed, this (85704fc63fbd118041810305c00def725c9d04ca) avoids a manual link of qdoc.exe...
a hack but a neat one :) nice job.
@paolo-sz thanks for the patch! Is there a PR open with that change ? @Alexpux would you accept it ?
@mcallegari, no there is no PR open right now, I was not sure it was really the case to open one when, I understood, the source of the issue is identified and there are some better trial ongoing with different combination of binutils. But, if you feel a PR is needed, just let me know... It will be a matter of a second...
@paolo-sz Yesterday I built my minimal version of 5.12.0 with your patch and it worked flawlessly I think it would make sense, even as a temporary workaround, to have it in. At least it spares us from doing manual operations in the middle of a gigantic build.
We have Qt 5 in CLANG64 subsystem so I'm assuming it works fine nowadays. If that's not the case please open new issue with updated steps to reproduce.
Up to 5.11.1 all good. Yesterday I tried to build Qt 5.11.2 with my own flags set and build fails on qttools/qdoc with the error below. Reverted to llvm+clang 6.0.0: problem solved. Right now the current tree packages are not consistent.
Because the official qt5 package is overly bloated, the flags I use in PKGBUILD are: