New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI: Build dependencies in-CI #108
Comments
... so, at this moment, I think dropping GMP and Oniguruma dependency entirely is more viable solution; easier to implement(than implement caching & testing inside CI), future-looking(for portability esp. wasm) and expected to be more stable. Aside that, taking 30mins more is obviously no-go for me as Windows port maintainer; it affects how many pushes I could do in one night.. Caching built libraries into GHA would be looking promising but my feeling is mixed. Long story short, it kills build reproducibility because we need to establish good caching strategy(cache-key generation etc) and it's relatively harder than 2-step approach(EDIT: because in 2-step approach, we can use Git TAG to refer actual library binary). |
I agree that less dependencies are valuable. I think Oniguruma may be easier than GMP.
So I think my goal is avoid the 2 above if possible in long run. |
2step-build keeps same level of translucency with other approaches; we can reach which version of the GMP or Oniguruma used from build log.
Actually, it does what
Instead of adding We can flawlessly move
Building same version of external project for multiple times are considered harmful because we have to pay attention to more factors. In GitHub, GHA runner images are continuously updated and old images will be removed. Building external project for each time means we have infinite versions of binaries of external projects. In 2-step integration, when something wrong was happened in Few builds, Few binaries, Few headaches. |
Thanks I just took a look at https://github.com/okuoku/nmosh-build-prerequisites/blob/v0.1.1/build-windesktop.cmake.
Can we then move this to here? |
From: #107
Currently, most of our CI is handling dependencies(GMP and Oniguruma in particular) as following:
gmp
oniguruma
libgmp-dev
libonig-dev
libgmp-devel
libonig-devel
Approach B) ie. 2-step integration was chosen because:
Theoretically we could merge B) process into CI(ie. 1-step integration), it would have huge impact to dev workflow and needs some mitigation.
The text was updated successfully, but these errors were encountered: