Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save andres-asm/37abaa630a282ae31729f0b7c9a81481 to your computer and use it in GitHub Desktop.
Save andres-asm/37abaa630a282ae31729f0b7c9a81481 to your computer and use it in GitHub Desktop.
I find it hilarious that it's been two years, it keeps getting slower (because more platforms, and the course of action is still ranting instead of rolling up sleeves and doing shit
so, I'm gonna give a resume on how it works so you can decide how to fix it
```
1. everything but OSX and iOS is working sequentially. OSX was building on another server before so it was made independent out of neccesity. It's now a VM on the same server and OSX turnover is a lot faster so maybe this is a way to fix it (make the windows stuff independent)
2. everything else is sequential, everything is done one at a time. Order is:
- Android
- PS2
- Switch
- WiiU
- Wii
- NGC
- 3DS
- PSP
- Vita
- Emscripten
- Linux x64 (this builds RA too which is by all means worthless, it's just good for confirmation)
- Linux Armhf (cores only)
- Windows x86_64 (2 ra builds, release and debug)
- Windows x86 (2 ra builds, release and debug)
- Windows x86_64 MSVC2010 (2 ra builds, release and debug)
- Windows x86 MSVC2010 (2 ra builds, release and debug)
- Windows x86_64 MSVC2003 (2 ra builds, release and debug)
- Windows x86_64 MSVC2005 (this one has just one)
- PS3 (3 builds, CEX, DEX, ODE)
```
```
3. IT's NOT JUST BUILDING RETROARCH!
For every platform there is a bunch of stuff that has to be done. In summary:
- Build all the cores
- Get the assets
- Build retroarch
- If platform is static, link every core to the latest RetroArch commit
- Package the assets (in a few cases this is part of the build job, examples of this are android, vita, 7zipping loads of PNGS and some other uncompressible that with 7zip -mx9 takes time)
- Package the cores (they have to be zipped, it takes a long time too)
- Copy (yes it does a copy not a move, used to be a separate server before so it's still using rsync, try copying several GBs of data to the same disk, it's slow every single time) the products to the web server
4. Caveats
For static platforms a core building that doesn't link means complete platform failure, which means that the following must be done:
- Disable the recipe
- Remove the build products from dist
- Remove the built core from dist-scripts in the retroarch folder
```
```
5. For reference the times:
Last android build was at 11:37
Cycle started at 23:20
Without any cores it built the last android build at 23:28, that means it took 8 minutes to build both RA targets
F-droid was pushed 10 minutes later, so android packaging (without cores again) takes another 10 minutes
From that it took 2 minutes till RA PS2 was fully built and linked (without cores), and 2 minutes again till it reached switch (PS2 is a small platform)
From that it took 15 minutes till it built and linked all the retroarch cores for switch
From that it took 5 more minutes to reach the only core that was built for WiiU, and then a further 68 minutes for RetroArch building + linking all the cores
From that it took 20 minutes for Wii RetroArch + all the cores
From that it took 8 minutes for NGC RetroArch + all the cores
From that it took 8 minutes for 3DS RetroArch + all the cores
From that it took 8 minutes for PSP RetroArch + all the cores
From that it took 1 minutes for VITA RetroArch + all the cores (failed)
From that it took 20 minutes for EMSCRIPTEN RetroArch + all the cores
From that it took 10 minutes for RA Linux x86_64, then it took a further 20 minutes iterating over linux cores
```
```
Then we start with the VMs, VMs are slower.
From the last linux core to RetroArch x86_64_SEH it took 65 minutes, because VM I/O is so slow git reset --hard, git clean -xdf for all the cores takes a long time. Each RA x86_64_SEH build takes ~6 minutes, also I noticed there are 3 RA builds not two, not sure why, two release 1 debug, something's up there
Packaging that windows build seems to take another 10 minutes
From that to RetroArch x86_DW2 it took another 60 minutes (see note above), again, three builds, 20 more minutes or so
Packaging again 10 minutes, iterating over the cores and building RA MSVC another 15 minutes, several builds again each 20 minutes appart (seems MSVC takes longer)
Then there is a 2 hour gap after msvc2010-x86_dw2 and msvc2003-x86_dw2 I figure it takes a long time packaging and iterating over all those MSVC cores that are all on differente source trees, again VM IO is very slow.
The whole 2003 and 2005 platforms take an hour at most, then PS3 takes roughly another hour
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment