usnistgov / libhdf5-wasm

Build HDF5 in WebAssembly
Other
2 stars 3 forks source link

Automatically build and release upon push of a new tag. #2

Closed LTLA closed 1 year ago

LTLA commented 2 years ago

This is motivated by the fact that Emscripten does not guarantee ABI compatibility across its versions. (See comments here; I recall seeing a statement of non-compatibility in the docs, but can't find it anymore.) This implies that HDF5 compiled with one version of emscripten may not work with libraries compiled with another version; we've been fortunate so far, but may not be so lucky in the future. I've already started observing link failures when trying to migrate my application to 64-bit Wasm.

This PR adds an action that allows the h5wasm maintainer to easily build and publish tarballs with a new version of emscripten. Simply create and push a tag of the structure vXXX_YYY where XXX is some arbitrary name that does not contain underscores, and YYY is the desired version of Emscripten. This will then automatically do a build and create a release like https://github.com/LTLA/libhdf5-wasm/releases/tag/v0.2.0-test_3.1.8. So, if anyone requests a new set of builds, you can easily just push a tag, walk away, and let the CI handle the rest.

(Well, almost. 1.10.8 fails with Emscripten 3.1.25 because its clang is more strict about some bad C code. In that case, one could just create a new branch, remove 1_10_8 from the Makefile, and then push a new tag on that branch.)

LTLA commented 1 year ago

Nudge - any thoughts?

bmaranville commented 1 year ago

It is unfortunate that there isn't ABI compatibility; given that, I can see this approach of building for multiple emscripten versions will be a useful thing to do. Thanks for the PR!

bmaranville commented 1 year ago

Can you make a release of your cmake docker image so we can pin the version number in the action?

LTLA commented 1 year ago

Done, pinned to 2022-12-13.

bmaranville commented 1 year ago

I forgot I have to get administrators to enable actions for this repo... I'll try publishing a release after that is done.