tomman |
Posted on 19-04-28, 22:10 (revision 1)
|
Dinosaur
Post: #273 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
I decided it was that time of the year where I have to update my local Dolphin build, for the few GC/Wii games I don't play anymore. Last time I successfully did it was in January 21th (commit 3627ef8a0489765eb10ab29a7988866b52493239 according to the .DEB version as packaged by cpack). Aside of having to install a newer Qt5 version than the one available on Stretch (thankfully Qt does offer a GUI-based installer for that - just stash it somewhere in /opt and you're golden), it builds and works just fine with only stock Debian stable packages. Today... I'm getting this vomit:
Looks like the GCC version on Debian stable (6.3) doesn't like something, and compilation dies there. Fun. The offending commit seens to be this one, although if I revert to the commit just prior to that, GCC dies with an internal compiler error (!!!!). Does anyone well versed in C++ and GCC know what the hell is happening here? I HOPE the answer is not "upgrade your GCC you dummy~" (in fact Dolphin wiki doesn't even recommend any specific GCC version for building, but then the dependencies list hasn't been updated in ages), as this would lead me to two paths I'm actively trying to avoid right now: - Move to Debian Buster/testing: it has GCC7 and 8, but I'm not upgrading to it yet. Maybe later this year, after it becomes "stable". MAYBE. - Build GCC from source. Been there, done that, and said "nope, my Fedora Core 6 era is long gone NEVAR AGAIN!" YES I KNOW that this isn't the Dolphin bugtracker/forum, but I decided to give it a shot here first before tinkering more and filing a issue/ticket or whatever on their bugtrackers. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
Duck Penis |
Posted on 19-04-29, 01:01
|
Stirrer of Shit
Post: #224 of 717 Since: 01-26-19 Last post: 1765 days Last view: 1764 days |
You could always try building with clang, it supposedly has slightly clearer error messages. There was a certain photograph about which you had a hallucination. You believed that you had actually held it in your hands. It was a photograph something like this. |
tomman |
Posted on 19-04-29, 04:35
|
Dinosaur
Post: #274 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
Before getting interrupted by the daily "rolling" blackout (and subsequent loss of connection), I managed to have this interaction over the Dolphin IRC channel:
Hmmm, I wasn't aware you could now use clang for building Dolphin, so I'll figure it out later. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
tomman |
Posted on 19-04-29, 15:24 (revision 3)
|
Dinosaur
Post: #275 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
Switching compilers require to start over with a new build directory, so I setup a separate directory for building with Clang. Hello brick wall:
Stretch's clang (3.8) is ancient, as expected. Luckily there are newer versions through backports, so let's try that. The latest one is clang-6.0, so let's go with it:
...nope. Lovely compiler error messages. (Updating libc++-dev is not an option: there are no backported versions for Stretch, and on Buster, the Debian packagers changed the packaging structure a bit: this one no longer comes from a standalone source package, but from llvm-toolchain itself) Anyway, let's go back to GCC. I decided to start over with a clean build directory, just in case. Let's redo the failing build without applying any hacks:
What. The. FUCK!? I guess I've just found something I hate more than smartdevices: C. Ah well, I suppose all paths eventually lead to the same outcome: "update your distro, buddy~". Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
Duck Penis |
Posted on 19-04-29, 17:04
|
Stirrer of Shit
Post: #227 of 717 Since: 01-26-19 Last post: 1765 days Last view: 1764 days |
Posted by tomman That's C++'s infamous template vomit, C has nothing to do with this. I guess your options are downloading a statically linked GCC/clang (doesn't exist), downloading and unpacking a newer release's version of GCC/clang and praying there aren't any new dependencies (good luck), or biting the bullet and compiling one. Buildroot should make things smoother, in theory. I used it for something (musl?) and it worked fine. And you've checked all the spooky stuff (memtest, corrupted compiler, corrupted source files) that "shouldn't happen"? There was a certain photograph about which you had a hallucination. You believed that you had actually held it in your hands. It was a photograph something like this. |
tomman |
Posted on 19-04-29, 18:09
|
Dinosaur
Post: #276 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
My best bet -right now, short of upgrading my distro or building GCC from source- would be to figure out how to install GCC 8 .DEBs from Buster on Stretch. ...after looking at the respective source and binary package lists, looks like if I want the newer clang 7, I would also need to pick some GCC 8 dependencies. In the case of GCC, things doesn't look THAT bad: traditionally older GCC versions keep working fine with newer Debian releases (in fact you usually have to end purging your old GCC versions after a successful dist-upgrade), and there are documented cases of people pulling GCC .DEBs from testing down to stable without secondary effects. The only problem with GCC is the sheer number of packages provided by its source package you may need for a base install. Mixing stable with testing is never a good idea, aside of very specific cases. To make it clear: I WILL eventually update this laptop to Buster, but after enduring the breakages train of the two prior Debian releases during Testing, I had decided this time to stay away from the kitchen while Buster brews its way into Stable. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
tomman |
Posted on 19-04-29, 19:46 (revision 1)
|
Dinosaur
Post: #277 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
Decided to give another try to clang-3.8 after finding a workaround here: https://stackoverflow.com/questions/32742741/clang-error-with-stdunique-ptr Now the brick wall du jour is this:
Oh joy, a LINKER error. Tried adding -lstdc++ to LDFLAGS/CMAKE_whatever_LINKER_FLAGS, without avail. FUN FUN FUN. UPDATE: Replacing "-stdlib=libc++" with "-stdlib=libstdc++" and switching -lc++ with -lstdc++ fixes this. BUT! Now build dies near the end:
Awesomest. I love you too, C++. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
tomman |
Posted on 19-04-29, 21:27
|
Dinosaur
Post: #278 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
FLAWLESS VICTORY Step 1) Use this patch: https://gist.github.com/dilworks/6dd7caf8d70d46e98ba39dd808a66b05 Step 2) Invoke cmake with:
(adjust your Qt5 directory accordingly to your setup) Step 3) make Step 4) Go play videogames Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
Kawaoneechan |
Posted on 19-04-29, 23:14
|
Secretly, I'm J.R.R. Tolkien
Post: #209 of 599 Since: 10-29-18 Last post: 198 days Last view: 58 min. |
🎉 Yaaaaay! 🎊 |
CaptainJistuce |
Posted on 19-04-29, 23:23
|
Custom title here
Post: #419 of 1164 Since: 10-30-18 Last post: 65 days Last view: 2 days |
Also, Muramasa is an excellent choice. --- In UTF-16, where available. --- |
tomman |
Posted on 19-04-30, 16:27
|
Dinosaur
Post: #281 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
Muramasa was the very reason of why I got into Wii/GC emulation, and that's only because I played it on a roommate's Wii back at my college dorm era. I really loved the game. But... it was a Wii exclusive. But that was at mid '10. There was this promising GameCube emulator named "Dolphin", and the rage at the time was its just-implemented Wii emulation. Not many games ran, and unfortunately Muramasa was one of those that were unplayable beyond a certain point (that I never reached back then), plus it was plagued with graphic glitches all the way. But hey, there was I, sending patches to the Dolphin team because keyboard input on X11 was a mess back then ("I came to play Muramasa: The Demon Blade, not Hackamasa: the X11Input Blade!"). My name is referenced in a lone commit that has been long buried with the years elapsed since then. And yes, Dolphin ran at a respectable 60% with Muramasa on my T5500 with the proprietary ATi blob back then (nowadays Dolphin wouldn't even boot on such a setup). Muramasa was actually PLAYABLE, albeit laggy at times. I didn't cared, I was playing that damn good game on my laptop, back when the Wii was still a hot seller! I even bought a real Wiimote solely for that game! (although I ended using it for Zelda OoT not long after that) Years later I would finish the game once with Momohime on my Steamlaptop, this time at a solid 60FPS all the way, albeit with minor graphic glitches that have been fixed since then. I still wish Muramasa would get a PC port someday. Back then, a good friend of mine (the owner of the Wii where I played the very same PAL rip of the game I play today on Dolphin, solely because it was actually localized to Spanish... unlike the NTSC-U version) told me that "butbutbut Nintendo paid for the exclusive!!!". Years later, it got a enhanced Vita port out of nowhere. But then, the Vita is dead, and it is not a PC. Come on, Marvelous! It would sell like hotcakes on Steam, just ask Bayonetta! Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
tomman |
Posted on 19-05-17, 02:09
|
Dinosaur
Post: #325 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
PSA: As of 2019/05/05, with the merge of this pull request, Dolphin is no longer buildable with GCC under Debian Stretch anymore. You need a C++17 compiler, period. Clang 3.8 does implement some features, but for full support you need Clang 5.0 at the very least. Dunno if Dolphin is still buildable with Clang 3.8, the answer seems to be "ask me later"... tl;dr: time to update your distro, buddy~ Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
Wowfunhappy |
Posted on 19-08-01, 00:39
|
Post: #8 of 21
Since: 11-08-18 Last post: 1257 days Last view: 1256 days |
Why are you building Dolphin yourself anyway? It doesn't sound like you're making any source code changes? |
tomman |
Posted on 19-08-01, 00:59
|
Dinosaur
Post: #463 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
Posted by Wowfunhappy Because... - I can - I want - The binaries on Debian repos are hopelessly outdated (they're from the last stable release, which was years ago!) - There are no repositories compatible with Debian which ship development builds (the ones you actually WANT to run if you actually care about playing videogames). No, you can't use Ubuntu PPAs with Debian. Not unless you want problems - I have no other options, after having exposed the last two points Anyway, once I upgrade to Debian Buster, I should be able to build it out of the box, no need to bring 3rd-party Qt installers or mess with patches to please "outdated" compilers. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
Wowfunhappy |
Posted on 19-08-01, 01:35 (revision 2)
|
Post: #10 of 21
Since: 11-08-18 Last post: 1257 days Last view: 1256 days |
Posted by tomman If those are the primary reasons, great! It just didn't sound like you were enjoying yourself all that much. :P Posted by tomman ...on a scale of 1–10, how much would you hate me if I suggested using Flatpak? |
tomman |
Posted on 19-08-01, 02:25
|
Dinosaur
Post: #465 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
Posted by Wowfunhappy NaN I have nothing against flatpaks/snaps (they do help solving a real problem on the distribution of off-repo/third-party/proprietary software under Linux), but I'm not really interested. My only experience was with an Avidemux flatpak (or was it an "snap"? God, those hipsters can't get their shit together), and... it crashed on an ordinary Debian. I ended compiling Avidemux anyway. And in the case of emulators, there are good reasons for building your own binaries, anyway: -march=native is one, ensuring that your binary will play nice with the libs provided by your distro is another, and in rare cases, you might want to play with patches/hacks not (yet) present on their respective development versions, or whatever. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
tomman |
Posted on 19-08-24, 20:18 (revision 1)
|
Dinosaur
Post: #507 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
UPDATE: I've moved to Buster, and Dolphin now builds out of the box with only stock Debian deps and compilers (it ships with GCC 8.3, Clang 7, and Qt 5.11). So yeah, the answer was "upgrade your distro, buddy" since the very beginning. Buster is still not THAT stale yet, so the advice is still valid. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |
tomman |
Posted on 22-03-12, 14:47
|
Dinosaur
Post: #1068 of 1317 Since: 10-30-18 Last post: 1 day Last view: 18 min. |
It's that time of the year again, when Dolphin build errors kindly remind me to not postpone my Debian distro updates for longer: https://pastebin.com/8VZFxiuP Last time I managed a successful build under Buster was in the very last day of 2021, but of course that was decades ago. C and friends hate me as much as I hate them, but it also means that GCC 8.3 (the one that ships with Buster) is no longer good for building Dolphin. Since Debian will never offer newer GCC versions via backports, these are my options: - Build with Clang. Unlike GCC, we DO get newer Clang/LLVM versions via backports, and the newest one there for Buster is Clang 11 which build latest Dolphin just fine. I suggest keeping separate build directories (one for GCC, another for Clang) - Update your distro. Bullseye ships with GCC 10.2, which is the same used by Dolphin Debian buildbots. But man, I'm laaaaaazy.... - Backport GCC 10+ yourself. Do I look like a bored teenager? So Clang is it, for now. FWIW, latest Clang seems to be 13, but that's only available on current Testing (Bookworm), and hasn't been backported yet to Bullseye. Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™ |