We got Mixxx working with LV2 plugins from PawPaw (@falktx) and musical key detection with libkeyfinder on Windows using our new build environment made with vcpkg! It took a team effort of a month of hard work but the ease of maintenance has already paid off. Our old process used a 6 year old pile of Windows batch scripts and it took our own server 36 hours to build all the dependencies. With binary caching on Azure Artifacts, it now takes 25 minutes to update a single library on GitHub Actions.

@falktx As you might imagine, nobody cared enough to bother adding new libraries to the Windows build environment with the old system.

@falktx I tried using vcpkg's NuGet integration to build Mixxx with the Azure Artifacts binary cache but ran into several obstacles. So we export a ZIP of all the packages, upload it to downloads.mixxx.org/dependenci then download it from GitHub Actions for the application builds. The unpacked ZIP is cached on GitHub Actions. The same batch script that GitHub Actions uses can be used to easily set up a local development environment on Windows.

@falktx The ZIP of all the dependencies is 1 GB. Why are Windows binaries so huge? Our macOS dependencies are 125 MB.

@falktx Most of our dependencies build with vcpkg on macOS too, but one of them would take considerable work. Plus I just spent like 3 months getting the macOS builds working so I don't want to touch them right now.

@falktx We also added libmodplug in the Windows dependencies now so Mixxx can play MOD tracker music on Windows.

@be why are you saying all these things to me? I am confused...

@falktx I apologize, that whole thread wasn't directed at you. Mastodon just kept keeping you mentioned in the replies because I tagged you in the initial post.

Follow

@be oh haha, no worries. I thought something was off.

In any case, related to what you said, I have cached builds too, not just the plugins but the libraries.
I used buildroot before, so took many design patterns from there.

A full rebuild takes around 1h (including plugins). Adding or updating a library will only build that specific library, same for plugins.

I am used to building stuff due to work on the kxstudio repos and use buildroot for my job. Your help is appreciated but all is fine.

Sign in to participate in the conversation
falkTX Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!