[Libwebsockets] Sai administrivia

Andy Green andy at warmcat.com
Fri Nov 6 09:49:28 CET 2020



On 11/2/20 4:50 PM, Andy Green wrote:
> Hi -
> 
> If you don't care about the issues and solutions maintaining 21 OSes for 
> libwebsockets CI, you can just ignore this kind of email.

I went around updating the Sai guest images as well, moving the f32 
guest to f33 and the others just updated inside their release, and 
rebuild latest lws and sai inside the guests too, this mostly went 
smoothly, except:

1) ESP32 esp-idf runs under a Fedora guest, this was OK after the 
upgrade but python user-specific deps needed updating as the 'sai' user 
that performs the builds, by running the esp-idf install.sh script as 
that user.  After that it could build OK.

I put off updating esp-idf itself since I have an ESP32S2 dev board I 
will get to at some point and do it then.

2) Gentoo sai-builder could no longer fetch any remote git ref

[2020/11/06 05:50:57:5517] N: sai_mirror_local_checkout: Attempting to 
fetch 
ref-0865b9692e649103979944774d128eb78a7905e6:ref-0865b9692e649103979944774d128eb78a7905e6 
from mirror to /home/sai/jobs/0-0.2/libwebsockets/
[2020/11/06 05:50:57:5517] N: sai_mirror_local_checkout: 
git_remote_fetch() says -1
[2020/11/06 05:50:57:5517] E: sai_mirror_local_checkout: 
git_remote_fetch libgit err: -1 invalid version 0 on git_proxy_options

...this turned out to be caused by the libgit2 version in current gentoo 
(1.0.1) deviating from the comment in the api header that the "default 
is no proxy" to require the proxy member of the remote fetch options to 
be initialized now, it's enough to add this in Sai builder before the 
remote fetch

    git_proxy_options_init(&opts.proxy_opts, GIT_PROXY_OPTIONS_VERSION);

f33 has 1.0.1 but built OK without changes, it looks like the version 
gentoo emerged is actually a post-1.0.1 development version and this 
change will anyway be needed in the others later, so I added a cmake 
test for the api and compile it conditionally.


There's an interesting FOSS / CI related article today via hackernews...

https://www.jeffgeerling.com/blog/2020/travis-cis-new-pricing-plan-threw-wrench-my-open-source-works

...the author recognizes he got useful free help from Travis for FOSS 
projects CI (as did we), is upset it's going away and he has to 
un-lockin himself from their build system, but somehow thinks github 
actions is the answer.  I didn't know that travis was bought by a 
private equity group, but I saw the fallout from the problems around New 
Year's time, with 24h build delays.

Obviously putting all your CI eggs in microsoft's basket is not solving 
the real issue that made the problem with relying on travis' largesse. 
The article just doesn't consider that with github the lock-in has gone 
up a level and the core problem just moved sideways.  IIRC Travis was 
building on AWS, I don't know where github actions run but it is also 
likely to be someone's commercial cloud with a bill to pay, even if the 
money is passing from microsoft's left hand to its right hand.  The only 
real solution is selfhost the CI, and not in the mindbending definition 
"self-hosted" in, eg, "github actions self-hosted runners on google cloud"

https://github.blog/2020-08-04-github-actions-self-hosted-runners-on-google-cloud/

This has costs since someone has to have physical boxes and be the 
meta-admin and maintain the guests for a lot of different OSes, but it 
has advantages, eg, the ESP32 builds are auto-flashed and checked on 
WROVER physical boards here via CTest and sai-expect over serial to 
confirm it works, and I can support a much wider range of platforms 
including ones in qemu like freebsd and risc-v.

-Andy


More information about the Libwebsockets mailing list