Time Nick Message 01:55 Exe_Virus rubenwardy are you around to help? I am trying to get Cross Compilation working for Linux->Win64 01:56 Exe_Virus I'm having issues with mutex and threads not being detected as part of std. I suspect it is an issue with the standard headers not being loaded correctly but I'm unsure 04:12 Exe_Virus sfan5 04:12 Exe_Virus are you here? 04:13 Exe_Virus I need help with cross Compiling Minetest on Lubuntu to Win64 04:36 Exe_Virus I'm having issues with compiling minetest source using Mingw-64. It looks like you are using a custom version on your automated builds from gitlab that you host on your site. Did you run into similar problems? 11:58 ANAND Trivial PR: #9224 11:58 ShadowBot https://github.com/minetest/minetest/issues/9224 -- /privs: Delimit output list of privs with commas by ClobberXD 12:14 sfan5 ~tell Exe_Virus installing and using the g++-mingw-w64 package on Ubuntu should usually be fine, if not you can also download and use the same custom mingw version I do 12:14 ShadowBot sfan5: O.K. 14:08 Exe_Virus Thank you sfan5, I looked further into it and the default mingw-w64 package is built for non-posix threads, I.e. Win32 threads are there and std:thread is turned off. I'll be trying out a posix compiled version today, so let's hope that solves the issue 14:09 sfan5 why does ubuntu do that? ? 14:19 Exe_Virus Probably because most programmers use win32 threads if they ar writing windows programs 14:19 Exe_Virus Not that I'm complaining :) I like posix 14:41 pyrollo I confirm, choosing posix compiler (i686-w64-mingw32-g++-posix and i686-w64-mingw32-gcc-posix) works well. 14:45 pyrollo I'm having a look at guiFormSpecMenu.cpp and wondering if code could be dispatched in different files. 14:45 pyrollo This file is source of conflicts. 14:45 pyrollo Maybe having a sort of elements registry (map?), and having all parse functions in cpp files related to their element 14:45 Exe_Virus conflicts like what? 14:46 pyrollo All PRs dealing with gui modify this file. 14:46 pyrollo And there are many PRs dealing with gui 14:47 Exe_Virus Okay, that makes sense. Sorry I'm not that informed yet about this engine (but learning really fast, haha) 14:51 pyrollo There is a couple of huge cpp files in code that would deserve to be split. 14:52 Exe_Virus That much is true. Perhaps submit a PR with a broken up version of guiformspecmenu.cpp? 14:52 pyrollo Yes, I'd like to discuss of it before, this is a big work 15:11 Exe_Virus Pyrollo, submit an Issue in the github and more core devs can discuss about the subject then 15:12 pyrollo Good idea 15:17 Exe_Virus Hey I finally got compilation for Windows on Linux to run. It's a simple configuration setting you change, so that mingw uses posix rather than win32. One line of code, dang it. 15:18 Exe_Virus I should submit a PR for the readme.txt so others can compile without visual studio successfully 15:20 pyrollo I guess it depends on your distro. But yes, it would be better to have an advice about compiling with posix enabled 15:21 Exe_Virus Ubuntu 16.04.... So yeah I think we should have a quick reminder about it, considering it's one of the most populat 15:22 pyrollo Before a recent PR on buildbot, I was not able to use it on Ubuntu 15:23 pyrollo (debian is using i586-mingw32msvc* and ubuntu has i686-w64-mingw32* stuff) 15:23 Exe_Virus Ah yeah, I was wondering about that 15:40 Exe_Virus Hey, so I'm now compiling minetest and realizing that compile time is a real pain in the butt. Why does it want to rebuild every object, rather than just the ones we make changes to> 15:44 pyrollo Are you using the buildbot ? 15:44 Exe_Virus yes 15:44 pyrollo You don't need to 15:45 Exe_Virus ? what should I use instead? 15:45 pyrollo I mean it fetches sources from git and does cmake and make 15:45 Exe_Virus right, so can I just do "make" once it's been run once? 15:45 pyrollo Once you have done it you cat just go into _build and issue a make -j 5 15:45 pyrollo yup 15:45 Exe_Virus what about rebuilding? 15:45 Exe_Virus i.e. will it try to recompile everything by default? 15:46 pyrollo no, if you use make 15:46 Exe_Virus sweet. So after this first compile, I'm golden. Thank you 15:46 pyrollo The thing with the buildbot is that it does everything from scratch to package 15:46 pyrollo You're welcome 15:46 Exe_Virus Maybe I should put a tutorial in Minetest wiki 15:46 Exe_Virus For noobs like me 15:46 pyrollo Actually you can do all that buildbot does 15:47 Exe_Virus I know that 15:47 pyrollo manually I mean 15:47 Exe_Virus right 15:47 Exe_Virus I guess I could make a giant one liner for users to do a windows cross compile.... 15:47 pyrollo Good thing with it, it fetches needed dlls, saving hours of searching over the web 15:48 pyrollo If you like huge lines :D 15:48 Exe_Virus I don't, but copy-paste is super easy for users 15:48 pyrollo Oh yes. 15:48 Exe_Virus The tutorial would be 1) Get a VM or run Linux 15:48 pyrollo I find buildbot is sort of easy with some explanations 15:48 Exe_Virus 2) Run this one line of code 15:49 Exe_Virus 2.5)Wait forever 15:49 pyrollo :D 15:49 Exe_Virus 3) Use make from now on 15:49 Exe_Virus Minetest Cross Compilation in 3 easy steps :) 15:49 pyrollo Actually, I'm working under Linux and have to provide windows executables some tiles 15:49 pyrollo times 15:50 pyrollo So I dont have step 1 15:50 Exe_Virus very true. I should say 2 Easy steps ;) 15:50 pyrollo Yeah ! 15:50 pyrollo Then ... wine ... another adventure 15:51 Exe_Virus This assumes they are running windows, otherwise why would anyone want to do cross compilation? 15:51 Exe_Virus Cross Compile, then use Wine? What's the benefit over running native? 15:51 pyrollo If you want to provide a client to someone that is not able to compile it 15:51 pyrollo But it's a special use case 15:52 Exe_Virus Ah, I see. They just get the .exe and have win preinstalled 15:52 pyrollo yes 15:52 Exe_Virus [facepalm] 15:52 Exe_Virus It wouldn't be a problem if someone updated minetest in the repos..... 15:53 Exe_Virus then everyone would just: apt-get install minetest 15:58 Exe_Virus I'm running into a second issue with LC_Messages. Something to do with Language translations. Any suggestions besides a clean rebuild? 16:14 pyrollo Nothing in mind. What is the exact message ? 16:14 Exe_Virus In L_Client.cpp LC_MESSAGE was undefined 16:14 Exe_Virus (Don't have exact message because I shutdown and restated the compile 16:15 Exe_Virus (in about 6 minutes, I'll be at the same point 46%) 16:21 Exe_Virus char *locale = setlocale(LC_MESSAGES, NULL); 16:22 Exe_Virus /home/exevirus/minetest-win/minetest/src/script/lua_api/l_client.cpp: In static member function ‘static int ModApiClient::l_get_language (lua_State*)’:/home/exevirus/minetest-win/minetest/src/script/lua_api/l_client.cpp:233:27: error: ‘LC_MESSAGES’ was not declared in this scope char *locale = setlocale(LC_MESSAGES, NULL); 16:23 Exe_Virus From this Line of code: https://github.com/minetest/minetest/blob/b5f5e00b29beeda591f74540f74ab7b5dc41a4bb/src/script/lua_api/l_client.cpp#L231 16:24 pyrollo What change have you made ? 16:24 Exe_Virus None as of yet 16:24 pyrollo Mmm 16:25 pyrollo I never had this 16:25 Exe_Virus LC_MESSAGES is a preprocessor define right? 16:25 pyrollo Looks like 16:25 Exe_Virus it's a getttext local environment variable 16:26 pyrollo You managed to compile using buidbot and try to use make then ? 16:26 pyrollo And got that message ? 16:26 Exe_Virus nope. Just straight up the first buildbot compile 16:26 Exe_Virus I think my system doesn't have LC_MESSAGES defined 16:26 Exe_Virus https://www.gnu.org/software/gettext/manual/html_node/Locale-Environment-Variables.html 16:32 Exe_Virus aha 16:32 Exe_Virus there is a command for it. locale 16:33 Exe_Virus But it shows LC_MESSAGE as set already..... hmmmmmm 16:33 Exe_Virus Can you run "locale" on your terminal and report back what LC_MESSAGES is set to pyrollo? 16:34 pyrollo Here is the result : 16:34 pyrollo https://framabin.org/p/?87c4bec612b3325b#tA6lKUL3tEIyu8VextkgjMLXZL5QoYZ/IJ2JhZ+H/eM= 16:35 pyrollo (Actually French settings) 16:35 Exe_Virus makes sense 16:35 p_gimeno LC_MESSAGES defaults to LANG if defined I think 16:35 Exe_Virus okay, well ours look identical, except mine is en_US.utf-8 16:36 pyrollo That's funny, I did not even noticed that my compiled mintest was in french :D 16:37 Exe_Virus :D Now to figure out why mine is failing.... I could always just set my language to french :) 16:37 pyrollo Ahaha 16:53 Exe_Virus Ha! I got a fix working I think. Changed LC_MESSAGES to LC_ALL, so far so good 16:53 Exe_Virus Though, that is an oddly specific change. 17:07 Exe_Virus And, no Linking fails entirely 17:16 Exe_Virus pyrollo I am now having linking issues. I.e. It cannot find std::Thread again 17:21 Exe_Virus Oh Dang, found some info on the exact issues I'm seeing: https://github.com/meganz/mingw-std-threads 17:25 pyrollo I Dont remember having issues with linking. But you may need some extra Dlls due to mingw 17:25 Exe_Virus Oh, you aren't using mingw? 17:25 pyrollo libstdc++-6.dll, libgcc_s_sjlj-1.dll and libwinpthread-1.dll 17:26 Exe_Virus How would those help with linking stage? 17:26 Exe_Virus Are those for runtime? 17:26 pyrollo Yes I am but I did not had any link issues as far as I remember (but I have a poor memory) 17:26 pyrollo For runtime. They are in your mingw32 dirs 17:28 Exe_Virus Right, I get that 17:28 Exe_Virus now to figure out the issue with linking 17:39 Exe_Virus Aha, My linker is using mthreads anyways.... gr..... 17:45 Exe_Virus So.... to get this straight, Somehow in the cmake file, there is a step that uses mthreads by default and I need to figure out how this happens using the buildbot so others don't have this problem 18:00 Krock will merge #8616 and #9224 (both trivial) in 15 minutes 18:01 ShadowBot https://github.com/minetest/minetest/issues/8616 -- Fix the player information version_string return value by Lejo1 18:01 ShadowBot https://github.com/minetest/minetest/issues/9224 -- /privs: Delimit output list of privs with commas by ClobberXD 18:15 Krock merging 19:54 Exe_Virus sfan5 do you run ubuntu or debian for your cross compilation? what version? 19:54 sfan5 neither 19:54 Exe_Virus linux mint? 19:54 sfan5 that's a debian derivative 19:54 Exe_Virus let me rephrase: what do you use for your cross compilation? 19:55 Exe_Virus I've gone far down the rabbit hole with ubuntu and have finally given up after linker issues deep in make 19:55 sfan5 arch linux but that's not relevant to the success you should be having 19:55 Exe_Virus It might be 19:55 sfan5 the travis builds run on ubuntu 14.04 (?) with the same setup I use on my machine 19:55 Exe_Virus the ones in buildbot? 19:56 sfan5 yes 19:56 sfan5 gitlab builds run on 16.04 and also use the buildbot 19:56 Exe_Virus hurm 19:57 Exe_Virus I just gave up on using 16.04.... 19:57 Exe_Virus too many issues with mingw-w64 not wanting to use pthreads 19:57 Exe_Virus is there a special setting you use to ensure pthreads is used for cross compilation? 19:58 sfan5 the problem won't be which distro you are using but rather the toolchain (mingw) 19:58 sfan5 if I understand the pthread situation correctly then: either your mingw is compiled with pthreads and it will work automatically OR it isn't and you can't just "enable" the support either 19:58 sfan5 have you tried using the same mingw toolchain as the buildbot? 19:58 Exe_Virus yes 19:59 Exe_Virus though I am uncertain which version 19:59 Exe_Virus basically mingw is packaged as both versions for 64 bit. 20:00 sfan5 wait that wasn't right 20:00 sfan5 have you tried using the same mingw toolchain as travis uses for the buildbot? 20:00 sfan5 because that isn't the one you find in ubuntu repositories 20:00 Exe_Virus yes. x86_64-mingw32-g++ 20:00 Exe_Virus Oh wait 20:00 Exe_Virus where does travis get that toolchain? 20:00 Exe_Virus Your hosted site? 20:01 sfan5 https://github.com/minetest/minetest/blob/master/util/travis/before_install.sh#L19 yes 20:01 Exe_Virus Okay that makes more sense. 20:02 Exe_Virus I'm sorry to ask.... but could you make a pastebin or type here the order of execution for building with the buildbot settings? 20:02 Exe_Virus i.e 1) before_install.sh 20:02 Exe_Virus 2)buildwin64 20:02 Exe_Virus or something like that. I have lost about 18 hours now on this project...... 20:03 sfan5 https://travis-ci.org/minetest/minetest/jobs/627834483 you can see what happens here 20:03 sfan5 yes, what you listed is roughly what happens 20:04 Exe_Virus I actually tried following the job line by line (did you know there's like 3000+ frickin lines....). But I obviously must have missed something 20:04 sfan5 travis sets some environment variables (which the script rely on) so that might've been it 20:05 Exe_Virus Like LC_Message? 20:06 sfan5 maybe but that's not related to the compiler error you got 20:06 Exe_Virus gotcha, okay. (I did get that error, but fixed it later by modifying the code) 20:08 paramat !tell erlehmann "6 pyramides centered on 0,0,0. in each pyramid only one axis of gravity works" yes that seems best. only 6 axis-aligned gravity directions, because the world is cube-based. this game does it https://www.youtube.com/watch?v=qPqezDSalB4 20:08 ShadowBot paramat: O.K. 21:02 Exe_Virus Hey Sfan5 thank you for the help. I understand now that it was purely toolchain issues. Someday, I expect we may want to upgrade past that version of mingw, however. What is the plan for that day? 21:04 sfan5 I pull a newer version of mingw, compile and upload it for travis 21:04 Exe_Virus any special flags for that compile? 21:04 sfan5 nothing out of the ordinary 21:05 sfan5 x86_64-w64-mingw32-gcc -v will tell you 21:05 Exe_Virus great, I blame Ubuntu Repos :) 21:05 Exe_Virus Thank you!