Our new Libretro Infrastructure is now going live! (Plus Dosbox Pure out for Android/Mac/Windows)

Our team has pushed an inhuman amount of effort over the holidays into making sure we can finally make the big switch in our infrastructure that we have been building up to ever since the server hack this past September.

And while it nearly looked like we might not have anything to show for it before the New Year, looks like we finally have something ready for you guys!

Thanks to the increase in Patreon earnings, we have finally been able to ditch the old dusty buildbot infrastructure and move over to a completely modern, built-from-scratch infrastructure. How it works is that we have our own Gitlab server now that mirrors all the repositories on our Github organization. This server is considerably beefier and more expensive than anything we have had before, and is able to cut through the cores and RetroArch workload like butter.

Where can I download stuff?

Same place as before – buildbot.libretro.com.

What’s ready so far?

The following platforms are ready to go (and already have up-to-date nightly RetroArch builds, tho a build could be missing here and there):

  • Android (*)
  • Emscripten (Web Player)
  • macOS (64bit – cores only) (**)
  • Linux (64bit)
  • OpenDingux (for RG350/GCW Zero/others)
  • Nintendo 3DS
  • Nintendo GameCube
  • Nintendo Wii
  • Nintendo WiiU (***)
  • Nintendo Switch
  • Sony PlayStation2
  • Sony PlayStation Portable
  • Sony PlayStation Vita
  • Windows (32bit/64bit) (****)

* – See the paragraph ‘Special notes on Android builds’.

** – Nightly builds for macOS still have to be added.

*** – For the first time, the WiiU version has everything out of the box that you need. In the past, assets would not be pre-installed and it would be very tedious and cumbersome to have to install them to the right place. This is all taken care of for you now. As a consequence though, the nightlies are a lot bigger to download now.

**** – The Windows nightly builds right now do not include Nvidia Cg support (old deprecated standard for shaders) and there is no installer yet. We hope to work something out there soon.

What’s next?

There is stuff still remaining to be done that we hope to sort out over the coming days/weeks. This includes:

  • ARM Linux cores
  • MacOS (64bit – binaries)
  • MSVC 2003/2005/2010 cores
  • RetroArch for older Windows versions (requires MSVC2003/2005/2010)

There are also still some cores missing here and there. There are a couple of reasons for this. One of them is that we still need to setup some .gitlab-ci.yml files for these repositories. All of that will come shortly though we hope.

We are of course also going to be releasing a new stable soon – 1.9.1.

What will all this mean for the user?

  • Faster build times
  • More platforms supported
  • Faster stable releases

m4xw will later be writing an article that goes into technical details on our new server, but here is a layman’s person breakdown on what this all boils down to.

Faster build times as a result of being able to run cores and RetroArch builds in parallel now. The old infrastructure was nearly completely sequential and it made things much slower than it used to be. But of course this is only half the story – the server specs have also been doubled, explaining why things are considerably faster.

Thanks to a massive increase in storage space and a reduction in server load, we can also now support more platforms. With the old server, we were running against the limit pretty hard on how many more platforms we could add before we would run out of disk space yet again. We thankfully no longer have these problems.

The faster stable releases alone is a big one. With the old buildbot infrastructure, it would take over an entire day to push out new binaries for RetroArch. It imposed a huge amount of stress on the entire team as every single time we ran these scripts, something would invariably go wrong for whatever reason. We leave all that behind today, after having had to deal with this for years on end. What this means is that you’ll likely no longer have to see announcements on our Twitter saying something is bound to be released and then it takes another day or two for it to finally arrive.

Also, for us as developers, the new infrastructure is a dream to work with, greatly reduces our workload, it’s no longer just a collage of scripts but uses modern technologies. What it means is that we have to do less fighting with our infrastructure and have more time to spend on our actual project instead.

What will all this mean for the contributor?

In the past, if we wanted to add a new core to our buildbot, somebody would send a PR to the libretro-super repository to add this core to one of the ‘recipes’.

This is all officially obsolete as of now. None of this is used anymore. Instead, the way it works now is:

  • You create a .gitlab-ci.yml file in a core repository (random example here). It needs to be in the root directory of your repository. You specify all the platforms here that the core should be building for.
  • We then add this repository as a CI mirror to our Gitlab server.
  • If all goes well, it spits out builds and these will then be available for download on buildbot.libretro.com

Libretro-super is now no longer used as a key part of our infrastructure like it was before. That doesn’t mean it’s completely useless. It can still be useful for the regular user to build stuff for personal use, and we will continue to update it. But it is no longer a fundamental part of our infrastructure like before, more a user convenience tool for building cores.

So, in other words, you don’t need to send anymore recipe update PRs to libretro-super in order to add new cores to our buildbot. Instead, you add a .gitlab-ci.yml file, then you talk to us and we add your repo to the Gitlab server.

Special notes on Android builds

Read our dedicated news article here on the Android builds

The nightly build that can be downloaded on our site right now is the non-Play Store version. The non-Play Store version is the version of RetroArch you have used up until this point, with a Core Downloader that connects directly to our build infrastructure. Because we don’t have to care about uploading this APK to the Play Store anymore, it can be a tad bigger than 100MB and therefore contain all the assets that we previously had to strip to save on space.

The Play Store version will be rolled out very soon and there are some big changes that were made in order to conform to the Google Play Store’s new guidelines. Some of it we think you will love while there are also some caveats.

The Play Store version’s Core Downloader contain a curated selection of cores hosted by Google’s servers (due to Play Store’s policies). More on that in the article. The user of course will always have the option of grabbing the non-Play Store build on our website which still has the Core Downloader that connects to our build infrastructure.

Special thanks

Special thanks to all the people that helped participate in this tremendous server migration: m4xw, jdgleaver, gblues, farmerbb, Steel01, fjtrujy, frangarcj, Xer Shadow Tail, and any others that participated. We would not have been able to make it without you!

And above all else, a huge shoutout to our Patrons who helped bring all this into reality! Without you guys, there is no way any of this could have been done, and we’d still be stuck with a slowly decaying infrastructure that was just impossible to salvage! A huge thank you, and with your monthly support the Libretro/RetroArch project will go into 2021 stronger than ever before!

Oh, and one last thing…

Dosbox Pure out now on the buildbot for Android/Mac/Windows!

We have just added Dosbox Pure for Windows, Mac (x64) and Android to our buildbot. Grab it from the Core Downloader as usual, and have fun! If you’d like to learn more about Dosbox Pure, read our dedicated article here.

RetroArch Android – New versions for Play Store – please read!


Remember our previous article back in August? We could no longer update RetroArch to the newest version on the Google Play Store because their policies had changed with regards to the use of externally hosted dynamic library files.

Right after this, we suffered from the crippling buildbot server hack which really set us back. Hence we haven’t been able to address the situation as of yet.

Now, though, thanks to your help and support, we are finally on the cusp of having a solution that we hope (and think) will satisfy nearly everyone.

RetroArch Play Store – two separate versions

RetroArch on the Google Play Store is going to be different now from the version you can download on our website.

The Google Play Store version has the following plus and minuses:

    – The Core Downloader no longer connects directly to our build infrastructure – in accordance with Google Play Store’s new policies, this had to be changed.
    + Instead, you will be able to select from 50 hand-curated libretro cores to download from within the application. These cores are downloaded from Google’s servers instead.

  • + The Play Store version will be updated twice a week, possibly more if users request it. Both the cores and RetroArch itself will be updated in the process. You will no longer have to wait for months on end for a new version – instead, new versions will be pushed to the Play Store automatically.

Why only 50 cores? Unfortunately, if we don’t want to cut off support for Android OS versions lower than 8.0, we have to limit it to this number. However, there are two alternative :

RetroArch Plus

RetroArch64 has now transformed into RetroArch Plus! What separates this version from the regular Play Store version?

  • – It will only work on Android OS 8.0 and up.
  • + Because of this, you have access to 127 cores instead.

So if you have a newer device, going for RetroArch Plus is a straight upgrade instead of sticking it out with the regular RetroArch version. In addition to this, all the pros and cons of the regular Play Store version also applies to this version.

Of course, there is also a third option:

RetroArch non-Play Store version

This is RetroArch as you have always known it up to this point on Android. It has the Core Downloader which pulls from our build infrastructure, you are not limited to an arbitrary amount of cores, and it retains the same backwards compatibility as earlier versions.

The only caveat is that this version will only be available on our website from now on. Right now, this version is only available in nightly form, but once we release 1.9.1 (which should be pretty soon), you’ll be able to get it as a stable release as well.

+ Because we no longer have to care about this non-Play Store version having to be uploaded to Google Play, we no longer have to make sure the APK stays within the 100MB threshold. This means we can finally package all the assets into the APK, giving you more overlays, borders, shaders, etc. Previously we had to strip some of these out to save on space.

What you should know as a Play Store Edition user

Convert your already installed cores from previous versions

Important for people who upgrade from previous versions –

Instead of having an option in the online updater to update all installed cores at once, that option is replaced by the “Switch Cores to Play Store Versions” option. This is a one-time step that replaces any cores on your device with versions from the Play Store. It’s a necessary step for users to receive core updates on the Play Store going forward. Any cores that the Play Store can’t provide (that are outside of the 50 or 127 predefined cores for example) will remain on the device as is.

To do this, go to Online Updater -> Switch Cores to Play Store Versions.

You can still sideload cores

While it’s not possible anymore to download cores directly from our servers with the Core Downloader, it is possible for you to sideload any core you have downloaded manually. To do this, you need to unzip the core you want to install to your Android device. Then go to ‘Load Core’, ‘Install or Restore a Core’, and select the (unzipped) core you want to install.

When?

The Play Store version has been submitted to the Google Play Store, and after we have passed initial approval, it should be available shortly.

RetroArch Plus is available here.

We hope that you understand we have tried to do the best possible to make sure that people can continue using and enjoying RetroArch on Android despite the increased limitations. Supporting three separate versions instead of one certainly adds to our workload, but with our new infrastructure we feel we are able to handle it. A huge shoutout to farmerbb for putting in an incredible amount of work during this Holiday period to ensure that this has been rolled out successfully. We would have never been able to do it without him!