julianhille / MuhammaraJS

Muhammara a node module with c/cpp bindings to modify PDF with js for node or electron (based/replacement on/of galkhana/hummusjs)
Other
205 stars 43 forks source link

deprecate//remove Ubuntu 18.04 or find a way to build with older glibc on 20.04 #300

Closed julianhille closed 1 year ago

julianhille commented 1 year ago

Github removed 18.04 runner images from ci this means we can no longer fully build all images.

This is an issue for all Ubuntu 18.04 users in the end.

Updating to 20.04 will raise glibc version on build which makes muhammara binary unrunnable on 18.04.

Only two options:

  1. Remove support for 18.04 and build only on 20.04
  2. Use 20.04 and somehow install a second glibc and build the binary with it.

Question to the community, what do you think?

Anyone using 18.04?

blairjanis commented 1 year ago

I'm using amazon linux 2023 and I'm not sure but I believe the same or a related issue applies.

/lib64/libm.so.6: version `GLIBC_2.29' not found (required by /var/task/node_modules/muhammara/binding/muhammara.node)

It looks like amazon linux 2023 uses glibc 2.34. Is it not possible to run the binary on a later version than 2.29?

Thanks

julianhille commented 1 year ago

What node version are you trying to use? This should only apply to very new versions.

Btw. Ubuntu 18.04 is EOL and should not be used anymore. Is it possible you upgrade?

blairjanis commented 1 year ago

I'm using node 18.x but because I tend to lose my brain at times, I realized my question is not correct. I'm actually running my solution through aws lambda and was not thinking about the OS in the lambda runtime. It turns out the runtime is Amazon Linux 2 which has an older version of GLIBC ... 2.26. So my original question is not relevant to your original question. Sorry about that.

julianhille commented 1 year ago

We could also run in a docker container and build inside of it but this feels a bit odd.

julianhille commented 1 year ago

I'm using node 18.x but because I tend to lose my brain at times, I realized my question is not correct. I'm actually running my solution through aws lambda and was not thinking about the OS in the lambda runtime. It turns out the runtime is Amazon Linux 2 which has an older version of GLIBC ... 2.26. So my original question is not relevant to your original question. Sorry about that.

your question might be relevant as amazon downloads the normal linux prebuilds and so you need to rebuild locally with your version of glibc if we decide to remove ubuntu 18.04 (glibc 2.2x)

blairjanis commented 1 year ago

I'm using node 18.x but because I tend to lose my brain at times, I realized my question is not correct. I'm actually running my solution through aws lambda and was not thinking about the OS in the lambda runtime. It turns out the runtime is Amazon Linux 2 which has an older version of GLIBC ... 2.26. So my original question is not relevant to your original question. Sorry about that.

your question might be relevant as amazon downloads the normal linux prebuilds and so you need to rebuild locally with your version of glibc if we decide to remove ubuntu 18.04 (glibc 2.2x)

In my use case I'm using AWS Lambda to serve up a function that includes muhammara. When using node 16 or below the latest version of muhammara works just fine without an intervening local build. From the best I can tell the combination of Amazon Linux 2, Muhamarra 3.8.0, and Node 18.x does not work. But Node 16.x does work. My particular situation I was also using a library that required Node 18 so I had to use a lesser version of that library to get everything to work right.

I should also mention, I'm using the AWS SAM CLI for build and deployment so, as you mentioned, it's not building on my local OS.

julianhille commented 1 year ago

That will sooner or later hit you. (Specifically now with this ticket). Node 18 does not work as node itself needs newer glibc and can not be build on Ubuntu 18.04 (and so your AWS lambda version). I now need to remove (or find a way to build older glibc on newer Linux) as github as removed Ubuntu 18.04 as action runner. This means I'm actually completely unable to build for older glibc anymore.

Hard to explain, hopefully you get the issue.

Removing Ubuntu 18.04 means no pre builds for AWS anymore (at least the version you are using)

blairjanis commented 1 year ago

Yeah, that makes sense. I get it enough to know to keep an eye on things but not enough to offer any useful suggestions on what to do about it. :-) Thank you for your diligence in keeping this library up to date!

julianhille commented 1 year ago

i made it. its now a docker container and we're still building on ubuntu bionic 18.04, but i think i should deprecate that (soon TM)