<div dir="auto">Oh yeah, I forgot to reply to the second part of this. Yes, we definitely need to re-write the README and remove all the "crappy code" stuff. The code has improved greatly, and making it perfect was never a goal.<div dir="auto"><br></div><div dir="auto">---</div><div dir="auto">James Paige</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu., Dec. 17, 2020, 10:19 p.m. Ralph Versteegen, <<a href="mailto:teeemcee@gmail.com">teeemcee@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 18 Dec 2020 at 15:00, James Paige <<a href="mailto:Bob@hamsterrepublic.com" target="_blank" rel="noreferrer">Bob@hamsterrepublic.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div>I'm glad to know me is easy to use. Hopefully I'll have time to try it this weekend.</div><div dir="auto"><br></div><div dir="auto">I don't know yet how long it will take to get the docket stuff working well, so we might still want to switch from rcedit to ResourceHacker</div></div></blockquote><div><br></div><div>I was going to write "Well actually you don't need to set up Docker to be able to compile releases with mxe, you just need..." but then I realised that the point is that you do all the set up inside Docker, otherwise you're duplicating effort setting it up outside Docker.</div><div><br></div><div> The instructions at <a href="https://rpg.hamsterrepublic.com/ohrrpgce/Cross-compiling" target="_blank" rel="noreferrer">https://rpg.hamsterrepublic.com/ohrrpgce/Cross-compiling</a> are complete; the only other thing to mention is that adding TARGET=i686-w64-mingw32.static to SCONS_ARGS in distrib-win-setup.sh will make distrib-win.bat and distrib-nightly-win.bat do a cross-compile. SConscript will automatically invoke wine as needed to produce .pdb files. I guess having to add wine to the Docker image just for official builds is a nuisance.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"><br></div><div dir="auto">---</div><div dir="auto">James Paige</div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Wed., Dec. 16, 2020, 7:51 p.m. Ralph Versteegen, <<a href="mailto:teeemcee@gmail.com" target="_blank" rel="noreferrer">teeemcee@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Sounds great!</div><div><br></div><div>Just a couple days ago I updated mxe (I'm intending to update SDL_mixer.dll) and was pleased with how simple it was:</div><div>  git pull</div><div>  make MXE_TARGETS=i686-w64-mingw32.static</div><div>The fact that it prints nothing to the terminal except the names of the packages being recompiled makes it seem simpler :) It didn't even take that long to recompile the whole toolchain, I think around half an hour?</div><div>scons target=i686-w64-mingw32.static release=1 pdb=1 builds additionally require wine, but they work fine.<br></div><div><br></div><div>However I never got around to trying out a cross compiler targeting Mac.</div><div><br></div><div>One advantage to shifting Windows builds to mxe is that they don't trip virus scanners when you embed an icon!! Because of this problem I was intending to switch from rcedit to ResourceHacker for icon embedding for hróðvitnir. Should I still do this, or will docker-based building be ready, at least for stable releases, before the release?<br></div><div>Other advantages are that we could delete plotdictionary.html from the repo and generate it in nightly build scripts instead, so it's always up-to-date and to avoid that pollution of diffs (Come to think of it, I could probably config git to hide diffs for it anyway), and that the .exe files are around 0.5MB smaller than current builds (due to better  libstdc++ dead code removal I think).<br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 16 Dec 2020 at 14:33, James Paige <<a href="mailto:Bob@hamsterrepublic.com" rel="noreferrer noreferrer" target="_blank">Bob@hamsterrepublic.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I started some work on restructuring the nightly builds.</div><div><br></div><div>Right now they are shell scripts run in a separate VM for each platform.</div><div><br></div><div>My plan is to start using Docker containers with all the build requirements, and a Jenkins pipeline that will describe how a Jenkins server will run the build scripts and upload the nightlies.</div><div><br></div><div>I think this will make the builds more streamlined, and will make it much easier for other people to reproduce a working build environment, which removes a barrier for entry for new developers.</div></div></blockquote><div><br></div><div>In my experience most of the people who have expressed interest in contributing are running Windows. I see Docker supports Win 10, if you have WSL installed too, but that might not be much simpler.</div><div>Last time someone asked about setting up a build environment I couldn't give clear instructions due to all the crazy mingw and freebasic combinations possible and they were put off;  <a href="https://rpg.hamsterrepublic.com/ohrrpgce/Windows_compiling_requirements" rel="noreferrer noreferrer" target="_blank">https://rpg.hamsterrepublic.com/ohrrpgce/Windows_compiling_requirements</a> doesn't make things sound simple! We should have a short bullet point list of download links and instructions.</div><div><br></div><div>A number of people have also mentioned being put off by FreeBASIC; my impression is that it's because they aren't experienced programmers so learning a new (or their first real) language is daunting for them. It would be so fantastic if we could start writing parts of the engine in (an upgraded) HS, or at least an underlying scripting language like lua or squirrel, so that *no extra tools are necessary*! That's the long term direction I think we need to take.<br></div><div><br></div><div>Also, we often talk up how bad the code (or some part of it) is and this *definitely* puts off people too, maybe more than anything else. I think we've been shooting ourselves in the foot here and we (I) need to stop doing this; the codebase on the whole is not so bad anymore! Can we please change the self-deprecating README.txt and the "apologies for crappyness of this code" file headers? Let's update the README to a markdown doc intended as the github front page, maybe with a screenshot or two.<br></div><div>I'd also like to continue code reorganisation into different .bas files but I sometimes avoid it because of worry about my excessive unmerged git branches.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>It should also open the way for possibilities like automatically running test builds each time changes are pushed, rather than just nightly, and for the possibility of running multi-platform test builds on branches before they are merged.</div><div><br></div><div>I know this will work well for Linux builds, and Android builds, and I think I can possibly use mxe to make it work for windows builds too. Mac builds are a bit more iffy I think-- I don't yet know what is involved with making those cross-compile in a container, but at least it will reduce the number of virtual machines I have to manage :D</div><div><br></div><div>I don't expect any changes at this time that would break the existing nightly builds, so those won't be deprecated until I know the Docker+Jenkins builds are working well.</div><div><br></div><div>---</div><div>James Paige</div><div><br></div></div>
_______________________________________________<br>
Ohrrpgce mailing list<br>
<a href="mailto:ohrrpgce@lists.motherhamster.org" rel="noreferrer noreferrer" target="_blank">ohrrpgce@lists.motherhamster.org</a><br>
<a href="http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org" rel="noreferrer noreferrer noreferrer" target="_blank">http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org</a><br>
</blockquote></div></div>
_______________________________________________<br>
Ohrrpgce mailing list<br>
<a href="mailto:ohrrpgce@lists.motherhamster.org" rel="noreferrer noreferrer" target="_blank">ohrrpgce@lists.motherhamster.org</a><br>
<a href="http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org" rel="noreferrer noreferrer noreferrer" target="_blank">http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org</a><br>
</blockquote></div></div></div>
_______________________________________________<br>
Ohrrpgce mailing list<br>
<a href="mailto:ohrrpgce@lists.motherhamster.org" target="_blank" rel="noreferrer">ohrrpgce@lists.motherhamster.org</a><br>
<a href="http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org" rel="noreferrer noreferrer" target="_blank">http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org</a><br>
</blockquote></div></div>
_______________________________________________<br>
Ohrrpgce mailing list<br>
<a href="mailto:ohrrpgce@lists.motherhamster.org" target="_blank" rel="noreferrer">ohrrpgce@lists.motherhamster.org</a><br>
<a href="http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org" rel="noreferrer noreferrer" target="_blank">http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org</a><br>
</blockquote></div>