|
1 |
| -# vcmi-dependencies |
| 1 | +# VCMI Dependencies |
| 2 | + |
| 3 | +This repository contains prebuilt Conan dependencies for vcmi. These dependencies are primary used by Github CI and can be used to avoid building dependencies locally by developers. |
| 4 | + |
| 5 | +Current flow to update dependencies: |
| 6 | +- push new version of conanfile and/or CI settings to vcmi/vcmi repository, to branch 'update_prebuilts' |
| 7 | +- run CI in this repository to generate new packages |
| 8 | +- create new release from generated artifacts |
| 9 | +- open PR in vcmi/vcmi with changes to conanfile, CI, new URL to dependencies package and whatever changes need to be done to source code to use newer package (if any) |
| 10 | + |
| 11 | +# TODO List |
| 12 | + |
| 13 | +- Find a way to set up an artifactory on our server or find somebody willing to host it for us and deprecate this repository. Potential options: |
| 14 | + - Artifactory Community Edition (requires more high-spec server than our current one) |
| 15 | + - https://docs.conan.io/2/reference/conan_server.html (not recommended by Conan) |
| 16 | + - https://jfrog.com/ |
| 17 | + |
| 18 | +- Switch to conan 2. Incomplete (and potentially outdated) PR can be found here: https://github.com/vcmi/vcmi/pull/1603 Will also require changing how we create final package - instead of archiving `~/.conan/data` we'll need to use `conan cache` command |
| 19 | + |
| 20 | +- Use Conan for msvc builds. Currently blocked by several issues, namely: |
| 21 | + - Conan 1 does not works with latest Visual Studio 2022. We need to either use msvc 2019 or upgrade to conan 2. |
| 22 | + - ffmpeg fails to find its dependencies when building with conan 1 + msvc 2019. Might be fixed in conan 2. |
| 23 | + - Qt fails to build due to broken string escaping in a path (conan 1 + msvc 2019) |
| 24 | + |
| 25 | +- Switch Android CI to use Linux runners instead of macOS runners (both for prebuilts and for vcmi itself) |
| 26 | + |
| 27 | +- Upgrade ubuntu runner to ubuntu-24.04 and rebuild packages using newer mingw |
| 28 | + |
| 29 | +- Rebuild boost and disable boost_url which we don't use |
| 30 | + |
| 31 | +- Rebuild SDL (including SDL_mixer and SDL_image). |
| 32 | + - Consider updating packages. |
| 33 | + - Enable support for opus and flac. |
| 34 | + - Remove unnecessary image formats such as gif and pcx |
| 35 | + - Ensure that vcmi can load ogg/opus and flac as 'sounds' and not only as music |
| 36 | + |
| 37 | +- Rebuild ffmpeg with libdav1d and av1 support enabled. Needs investigation as to why dav1d fails to build on mingw and on android. |
| 38 | + |
| 39 | +- Rebuild all binaries in prebuilts package to ensure that everything is configured correctly and to replace any locally-built binaries with binaries from CI |
| 40 | + |
| 41 | +- Rebuild entire package from scratch using latest recipes from conan, to test current version of recipes |
| 42 | + |
| 43 | +- Run CI with full package rebuild on schedule (weekly? monthly?) to detect any regressions or breaking changes in CI or in used recipes |
| 44 | + |
| 45 | +- Automatically generate Github release with updated packages as part of CI. Should probably be done only for changes in main branch and/or for manually triggered workflows |
| 46 | + |
| 47 | +# Proposed better flow for updating dependencies |
| 48 | + |
| 49 | +- Move conanfile and conan profiles (or even entire CI directory) to this repository |
| 50 | +- Add this repository as a submodule to vcmi/vcmi repository |
| 51 | + |
| 52 | +With this approach we will be able to use following flow for new dependencies: |
| 53 | +- change conan/CI settings in this repository as needed |
| 54 | +- run CI in this repository to generate new packages and new release |
| 55 | +- update URL to dependencies in CI/update_conan_dependencies.sh to point to new release |
| 56 | +- open PR in vcmi/vcmi repository that bumps submodule to newest revision of this repository and whatever changes need to be done to source code to use newer package (if any) |
| 57 | + |
| 58 | +After merging PR in vcmi/vcmi repository vcmi will use new dependencies. |
| 59 | + |
| 60 | +If vcmi/vcmi PR is discarded for one reason or another, changes in this repository will have to be discarded as well |
0 commit comments