“Can you guys at team Maidsafe not release aarch64 versions of sn_cli/node/launch_tool
or are you too busy / does it cost too much time?”
I’m actually thinking of instead having the script install the compiled source code, just send it back to a safenetwork-community sn_cli/node/launch_tool somehow.
Or maybe have it upload to Storj DCS until the safenetwork itself is online.
Sorry I missed this earlier. I just took a look at this and it needs a little bit more than this including the relevant scripts to upload to GH and S3. The workflow is mostly bash commands that run one after the other. A good way to find out everything that needs to be added it to take a look at a release workflow for ubuntu this is a good example and add the relevant steps to be run for aarch64 binaries as well. We’ll need to make sure that the new target is included in these steps as well to ensure that the release is uploaded correctly.
bump bumps the version of cargo.toml and fills the changelog automatically according to the latst batch of commits, makes a PR for this. This pr is automatically merged
tag creates a tag at code pushed to master (with a specific commit line… that generated by bump). This also sets up an empty github release
realease uses this newly pushed tag to generate the release content (also using the changelog to generate a release message)
master is actions we want to run when anything is pushed to master. This can run tests, or depending on some conditions do other things (build the code, and or deploy)
if: "!startsWith(github.event.pull_request.title, 'Automated version bump')"
those workflows have exceptions for a lot fo jobs. So yeh, the workflow is started but we dont run tests etc on these auto-generated PRs.
An irk w/ GHA is that you cannot have the creator (github key) also approve the PR in an automated fashion. So you’ll need two accounts set up w/ repo perms for this flow.
I’m not 100% sure but my guess here is in retriever.rs L8 there’s a dependency on reqwest which will drag in openssl, which is always troublesome with musl.
Is it possible to try with no musl? Or is musl really essential to the project?
Maidsafe uses musl.
I have never asked why, but I assume it is essential for them.
This is little dilemma when my own tiny project uses something that has a problem with it, but I guess I’ll just comment it out. It’s a ‘joshuaf is gonna pull the rug underneath my coding attempts a year later like the Duniter founder did to me’ paranoia project anyway.
I’d like to point out by the way that one of the issues I encounter is that github’s default branch has been altered from master to main, which can be renamed in Settings->branches.
I now just commented out that whole section, but I’m stuck adding a runner.
There’s only three runners hosted on github and none of them are aarch64.
I would have to self-host a runner or ask team Maidsafe to self-host one.
This is going to require some discussion because I don’t know what Maidsafe wants and I assume it just doesn’t want to bother.
I’m a little out of the loop on what you’re trying to achieve, but I don’t think you need the host to have the same architecture. The cargo GitHub Action supports flags that enable cross-compiling using cross. Perhaps that’s something to look at? I’ve compiled Safe successfully in the past for aarch64 for the Raspberry Pi using cross.
What MUSL does is disconnects the binaries from the local libc. Why it’s important is that without it you are bound to a particular glibc and for different distributions, you can have a different GLIBC per distribution.
i.e. If you compile with no MUSL and use libc, the create an ARM binary it may only work on the particular distribution you use (say ubuntu version X). Sombeody uses any other distribution or version and you will almost certainly get, “this does not work” all over the place. Probably 90%+ of your audience will have issues all down to GLIBC. (caveat you can use a dead old glibc and get forward compatibility, but your in a losing game of whack-a-mole chess now)
However, compile with MUSL instead and your binary will work on all distributions and all versions of Linux on your chosen platform (arm in this case).
So essential, not so much, but if you don’t want horrendous compatibility errors then yes it’s kinda essential.