Skip to content
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

Upgrade CI to Ubuntu 20.04 LTS (Focal) #1183

Merged
merged 23 commits into from
May 28, 2024
Merged

Conversation

DreamOfIce
Copy link
Contributor

@DreamOfIce DreamOfIce commented Feb 7, 2023

Why

On one hand Ubuntu18's free LTS cycle is ended, and on the other hand Ubuntu18 does not support nodejs greater than v18.

What's changed.

  1. update the Linux Docker image to buildpack-deps:focal
  2. some compatibility changes
  3. use the new recommended way to install Docker (see here)

See #1173

@sbc100
Copy link
Collaborator

sbc100 commented Feb 7, 2023

I could of comments:

Firstly, we should gets some consensus that we are ok with dropping support for bionic. @juj is often concerned about supported older OSes but I think mostly around macOS and windows.

Secondly, I suggest we update to 20.04 focal which will effect fewer users. This also happens to be the update that we recently did on the emscripten-releases bots which actually build the emsdk binaries, so I think the makes sense to do that same update there. If you are ok with that could you update this PR to use focal instead?

@sbc100
Copy link
Collaborator

sbc100 commented Feb 7, 2023

Looks like we do document the system requirements here: https://github.com/emscripten-core/emsdk#linux , so those should be updated too.

.circleci/config.yml Outdated Show resolved Hide resolved
.circleci/config.yml Show resolved Hide resolved
@DreamOfIce
Copy link
Contributor Author

I could of comments:

Firstly, we should gets some consensus that we are ok with dropping support for bionic. @juj is often concerned about supported older OSes but I think mostly around macOS and windows.

Secondly, I suggest we update to 20.04 focal which will effect fewer users. This also happens to be the update that we recently did on the emscripten-releases bots which actually build the emsdk binaries, so I think the makes sense to do that same update there. If you are ok with that could you update this PR to use focal instead?

Sounds good, I'll give it a try 😄

@DreamOfIce DreamOfIce changed the title Upgrade CI to Ubuntu22.04LTS(Jammy) Upgrade CI to Ubuntu20.04LTS(Focal) Feb 8, 2023
@DreamOfIce
Copy link
Contributor Author

DreamOfIce commented Feb 8, 2023

All CI tests under focal passed

@juj
Copy link
Collaborator

juj commented Feb 8, 2023

Firstly, we should gets some consensus that we are ok with dropping support for bionic. @juj is often concerned about supported older OSes but I think mostly around macOS and windows.

We do ship Emsdk on Ubuntu 18 and some other Linuxes, though we do build our own Emsdk + Emscripten bundles manually, and don't rely on the automated CI here.

So I am wholly ok with the automated emsdk CI here being upgraded to newer Linux targets, as we will still test to know that our older target is supported. (it does not look like there is any needed change to actively break support for Emsdk/Emscripten for older Linuxes)

@sbc100
Copy link
Collaborator

sbc100 commented Feb 8, 2023

So I am wholly ok with the automated emsdk CI here being upgraded to newer Linux targets, as we will still test to know that our older target is supported. (it does not look like there is any needed change to actively break support for Emsdk/Emscripten for older Linuxes)

The problem is that if we stop testing on older version of linux then dependencies on newer glibc could creep into our binaries without us noticing. If we decide that the binaries are only tested on focal then the chances of them continuing to work on older linuxs over time will be low.

Since you are building your own binaries when you target Ubuntu 18 at least we don't need to worry about that use case, but we should reach on the mailing list to see if others are depending on these binaries running on Ubuntu 18.

We actually currently build the binaries against the debian/stretch sysroot: https://chromium.googlesource.com/emscripten-releases/+/refs/heads/main/src/build.py#65.

So the current situation is a little more confusing that I had thought:

Binaries built against: Debian/Stretch (glibc 2.24)
Binaries built on: Ubuntu/Focal 20.04 (glibc 2.31)
emsdk testing: Ubuntu/Bionic 18.03 (glibc 2.27)
emscripten testing: Ubuntu/Bionic 18.03 (glibc 2.27)
emscripten-releases testing: Ubuntu/Focal 20.04 (glibc 2.31)
Current document requirement: Ubuntu/Xenial 16.04 (glibc 2.23)
Oldest linux version by our users: ???

Actual glibc dependencies in current binaries:

$ readelf -V upstream/bin/clang 
...
Version needs section '.gnu.version_r' contains 8 entries:
 Addr: 0x00000000001111d0  Offset: 0x001111d0  Link: 7 (.dynstr)
...
  0x0180:   Name: GLIBC_2.16  Flags: none  Version: 17

GLIBC_2.16 seems to be the current highest value.

(node v18 requires glibc 2.28: nodesource/distributions#1392)

@DreamOfIce
Copy link
Contributor Author

So I am wholly ok with the automated emsdk CI here being upgraded to newer Linux targets, as we will still test to know that our older target is supported. (it does not look like there is any needed change to actively break support for Emsdk/Emscripten for older Linuxes)

The problem is that if we stop testing on older version of linux then dependencies on newer glibc could creep into our binaries without us noticing. If we decide that the binaries are only tested on focal then the chances of them continuing to work on older linuxs over time will be low.

Since you are building your own binaries when you target Ubuntu 18 at least we don't need to worry about that use case, but we should reach on the mailing list to see if others are depending on these binaries running on Ubuntu 18.

We actually currently build the binaries against the debian/stretch sysroot: https://chromium.googlesource.com/emscripten-releases/+/refs/heads/main/src/build.py#65.

So the current situation is a little more confusing that I had thought:

Binaries built against: Debian/Stretch (glibc 2.24) Binaries built on: Ubuntu/Focal 20.04 (glibc 2.31) emsdk testing: Ubuntu/Bionic 18.03 (glibc 2.27) emscripten testing: Ubuntu/Bionic 18.03 (glibc 2.27) emscripten-releases testing: Ubuntu/Focal 20.04 (glibc 2.31) Current document requirement: Ubuntu/Xenial 16.04 (glibc 2.23) Oldest linux version by our users: ???

Actual glibc dependencies in current binaries:

$ readelf -V upstream/bin/clang 
...
Version needs section '.gnu.version_r' contains 8 entries:
 Addr: 0x00000000001111d0  Offset: 0x001111d0  Link: 7 (.dynstr)
...
  0x0180:   Name: GLIBC_2.16  Flags: none  Version: 17

GLIBC_2.16 seems to be the current highest value.

(node v18 requires glibc 2.28: nodesource/distributions#1392)

I think it would be better to standardize all the distributions everywhere and change the corresponding minimum requirements in the documentation (e.g. >= Debian10/Ubuntu20.04 or similar)

@sbc100
Copy link
Collaborator

sbc100 commented Feb 9, 2023

I think it would be better to standardize all the distributions everywhere and change the corresponding minimum requirements in the documentation (e.g. >= Debian10/Ubuntu20.04 or similar)

Yes, clearly it would be better to have a more consistent story. The reason I'm holding of landing this change right away (don't get me wrong I think we can land it eventually) is that I'd like to get the story straight first, and I think we should coordinate with all the other places we do testing an building.

@juj
Copy link
Collaborator

juj commented May 22, 2024

I'm curious if you have any idea when you guys might drop support for Ubuntu 18?

Mirroring comment #1173 (comment) here as well: we do no longer need Ubuntu 18 support, but currently are at Ubuntu 20. So happy to move forward here.

sbc100 added a commit that referenced this pull request May 22, 2024
Node v18 is that current LTS release of node and v18.20.3 is the latest
release of v18.

This change means that emsdk is no longer installable on Ubuntu/Bionic
18.04, and we now require Ubuntu/Focal 20.04.

See: #1183
Fixes: #1173
sbc100 added a commit that referenced this pull request May 22, 2024
Node v18 is that current LTS release of node and v18.20.3 is the latest
release of v18.

This change means that emsdk is no longer installable on Ubuntu/Bionic
18.04, and we now require Ubuntu/Focal 20.04.

See: #1183
Fixes: #1173
@sbc100
Copy link
Collaborator

sbc100 commented May 22, 2024

@DreamOfIce , would you have time to rebase this change? I think we can move foward with landing it now. If not I can roll it into #1387

sbc100 added a commit that referenced this pull request May 22, 2024
Node v18 is that current LTS release of node and v18.20.3 is the latest
release of v18.

This change means that emsdk is no longer installable on Ubuntu/Bionic
18.04, and we now require Ubuntu/Focal 20.04.

See: #1183
Fixes: #1173
sbc100 added a commit that referenced this pull request May 22, 2024
Node v18 is that current LTS release of node and v18.20.3 is the latest
release of v18.

This change means that emsdk is no longer installable on Ubuntu/Bionic
18.04, and we now require Ubuntu/Focal 20.04.

See: #1183
Fixes: #1173
sbc100 added a commit that referenced this pull request May 22, 2024
Node v18 is that current LTS release of node and v18.20.3 is the latest
release of v18.

This change means that emsdk is no longer installable on Ubuntu/Bionic
18.04, and we now require Ubuntu/Focal 20.04.

See: #1183
Fixes: #1173
@DreamOfIce
Copy link
Contributor Author

I think I can do this. What should be the target platforms for this upgrade, Ubuntu 20.04/22.04/24.04 and Node.js 18/20LTS?

@sbc100
Copy link
Collaborator

sbc100 commented May 23, 2024

I think I can do this. What should be the target platforms for this upgrade, Ubuntu 20.04/22.04/24.04 and Node.js 18/20LTS?

The current target of this PR is good (Focal). I think this PR just need updating to main its good to land.

I'll take care of the node upgrade as a followup in #1387

@DreamOfIce
Copy link
Contributor Author

Okay, I'll resolve the conflict in these days.
However, as a reminder, there's less than a year left until the end of Ubuntu 20.04 free LTS.

@sbc100
Copy link
Collaborator

sbc100 commented May 24, 2024

Okay, I'll resolve the conflict in these days. However, as a reminder, there's less than a year left until the end of Ubuntu 20.04 free LTS.

Those dates are not really the guide we use for the decision on our minimum supported linux version. We are more guided by the users of emsdk. Whether or not canonical supports something is less relevenat. Same with node... we support targeting versions of node that are long long out of LTS support.

@sbc100
Copy link
Collaborator

sbc100 commented May 28, 2024

For some reason the circleci jobs are not being kicked off here. Could be a temporary issue with circleci? Or something else?

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
@sbc100 sbc100 changed the title Upgrade CI to Ubuntu20.04LTS(Focal) Upgrade CI to Ubuntu 20.04 LTS (Focal) May 28, 2024
@sbc100
Copy link
Collaborator

sbc100 commented May 28, 2024

I'm not sure whats up with CI here so testing this is a separate PR: #1390. If tests pass there I'll land this PR here.

.circleci/config.yml Outdated Show resolved Hide resolved
.circleci/config.yml Outdated Show resolved Hide resolved
@sbc100 sbc100 merged commit fc9146e into emscripten-core:main May 28, 2024
8 of 10 checks passed
sbc100 added a commit that referenced this pull request May 28, 2024
Node v18 is that current LTS release of node and v18.20.3 is the latest
release of v18.

This change means that emsdk is no longer installable on Ubuntu/Bionic
18.04, and we now require Ubuntu/Focal 20.04.

See: #1183
Fixes: #1173
sbc100 added a commit that referenced this pull request May 28, 2024
Node v18 is that current LTS release of node and v18.20.3 is the latest
release of v18.

This change means that emsdk is no longer installable on Ubuntu/Bionic
18.04, and we now require Ubuntu/Focal 20.04.

See: #1183
Fixes: #1173
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants