DISTRHO / PawPaw

Cross-Platform build scripts for audio plugins
ISC License
63 stars 8 forks source link

consider using vcpkg #9

Closed Be-ing closed 3 years ago

Be-ing commented 3 years ago

vcpkg is a crossplatform package manager for C & C++ libraries. It already has lilv and many audio libraries packaged. It supports static linking. Using it could make this project more maintainable and hopefully make it easy for developers to build their plugins on Windows and macOS.

falkTX commented 3 years ago

can it build python for mingw?

either case, the current scripts work fine. It allows to easily edit things, which is essential. also not 3rd party dependency.

Be-ing commented 3 years ago

Yes, it can build python3. vcpkg has at least partial support for MinGW. I haven't tested that myself. For Mixxx we are building with MSVC on GitHub Actions. What is the need for MinGW?

Be-ing commented 3 years ago

You can cache dependency builds with vcpkg using NuGet. GitHub Packages offers 500 MB storage for free and Azure Artifacts offers 2 GB storage for free. https://github.com/microsoft/vcpkg/blob/master/docs/users/binarycaching.md

Be-ing commented 3 years ago

You can fork the vcpkg repo and add your own packages using the overlay feature while keeping it easy to merge updates from upstream.

falkTX commented 3 years ago

I appreciate the help, but I am fine with the project as it is. Not having to deal with external dependencies is quite crucial to me, as most likely I would have to end up tweaking things there anyway to fit my needs.

Also, mingw is essential, as I want to keep using Linux while doing pretty much all other things. I have no interest on MSVC at this point.

The scripts are generic enough that it would be quite easy to change to a new CI if a need comes to it. I often experiment with new flags and way to build things, and the current system works fine for that. When I find an issue, it is easy to locate where to patch/change things, which I am not sure would be the same when using an external project. There is not many change that I need now, the biggest pain is to cross-compile python with mingw, specially hard since it is not supported upstream. The list of patches is gigantic... https://github.com/DISTRHO/PawPaw/tree/master/patches/Python/win32 Once that is solved in a clean way, I will have PawPaw ready for plugins, jack2 and Carla/Catia builds. Which pretty much covers my needs.

Be-ing commented 3 years ago

Also, mingw is essential, as I want to keep using Linux while doing pretty much all other things. I have no interest on MSVC at this point.

vcpkg works on Linux. I have made lots of use of this to work on macOS and Windows issues locally. There is no need for me to deal with cross compiling when GitHub Actions provides macOS and Windows VM with very generous computing resources (20 concurrent builds or 5 max concurrent macOS builds) for free.

Be-ing commented 3 years ago

What is Python needed for?

falkTX commented 3 years ago

I dont want to build for Linux, I want to build for Windows, from my own PC which runs Linux. Unless MSVC runs cross-platform, I have no interest on it.

And I have no interest on adding even more integration to GItHub. We should move away from it at some point, but it is not quite the right time just yet, I feel.

PS: Python is needed for Carla and Catia. See https://kx.studio/Applications:Carla

Be-ing commented 3 years ago

My point is that I can test packaging scripts for vcpkg on Linux and they work on Windows just fine as long as the library's build system is cross platform.

Anyway, it's your project. If this setup works for you that's fine. I am happy we can tell Mixxx users they can install LV2 plugins on macOS and Windows now. However, if you want to make this project approachable for outside contributors, I think few will be motivated to learn how a system of custom written shell scripts works. That has been my experience with Mixxx and that's why we've invested a month of work into moving to vcpkg.