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

Build Equinox launcher for linux.x86_64 on debian-12 #722

Merged
merged 2 commits into from
Dec 23, 2024

Conversation

HannesWell
Copy link
Member

The image 'platformreleng-centos-swt-build:8' cannot be built anymore and is therefore not updated.
Align with SWT and use the debian-12 image instead.

This will increase the GLIBC version requirement to version 2.34, see eclipse-platform/eclipse.platform.swt#1422 (comment)

See also eclipse-platform/eclipse.platform.releng.aggregator#2441

@HannesWell HannesWell requested a review from tjwatson December 15, 2024 09:42
@HannesWell
Copy link
Member Author

@akurtakov can you please check with the binaries built in https://ci.eclipse.org/releng/job/equinox/job/PR-722/2/ which GLIBC version is required?

Copy link

github-actions bot commented Dec 15, 2024

Test Results

  663 files  ±0    663 suites  ±0   1h 17m 10s ⏱️ + 3m 36s
2 211 tests ±0  2 164 ✅ ±0   47 💤 ±0  0 ❌ ±0 
6 777 runs  ±0  6 634 ✅ ±0  143 💤 ±0  0 ❌ ±0 

Results for commit f0be216. ± Comparison against base commit 5810f68.

♻️ This comment has been updated with latest results.

@akurtakov
Copy link
Member

Output of nm -D eclipse_11906.so |grep GLIBC :

U atoi@GLIBC_2.2.5
                 U closedir@GLIBC_2.2.5
                 w __cxa_finalize@GLIBC_2.2.5
                 U dlclose@GLIBC_2.34
                 U dlerror@GLIBC_2.34
                 U dlopen@GLIBC_2.34
                 U dlsym@GLIBC_2.34
                 U __errno_location@GLIBC_2.2.5
                 U execv@GLIBC_2.2.5
                 U execvp@GLIBC_2.2.5
                 U _exit@GLIBC_2.2.5
                 U exit@GLIBC_2.2.5
                 U fclose@GLIBC_2.2.5
                 U fgets@GLIBC_2.2.5
                 U fopen@GLIBC_2.2.5
                 U fork@GLIBC_2.2.5
                 U fprintf@GLIBC_2.2.5
                 U free@GLIBC_2.2.5
                 U fwrite@GLIBC_2.2.5
                 U getcwd@GLIBC_2.2.5
                 U getenv@GLIBC_2.2.5
                 U getpid@GLIBC_2.2.5
                 U __isoc99_sscanf@GLIBC_2.7
                 U malloc@GLIBC_2.2.5
                 U memmove@GLIBC_2.2.5
                 U memset@GLIBC_2.2.5
                 U nanosleep@GLIBC_2.2.5
                 U opendir@GLIBC_2.2.5
                 U pclose@GLIBC_2.2.5
                 U popen@GLIBC_2.2.5
                 U printf@GLIBC_2.2.5
                 U puts@GLIBC_2.2.5
                 U readdir@GLIBC_2.2.5
                 U realloc@GLIBC_2.2.5
                 U realpath@GLIBC_2.3
                 U setenv@GLIBC_2.2.5
                 U shmat@GLIBC_2.2.5
                 U shmctl@GLIBC_2.2.5
                 U shmdt@GLIBC_2.2.5
                 U shmget@GLIBC_2.2.5
                 U snprintf@GLIBC_2.2.5
                 U sprintf@GLIBC_2.2.5
                 U stat@GLIBC_2.33
                 U stderr@GLIBC_2.2.5
                 U strcasecmp@GLIBC_2.2.5
                 U strcat@GLIBC_2.2.5
                 U strchr@GLIBC_2.2.5
                 U strcmp@GLIBC_2.2.5
                 U strcpy@GLIBC_2.2.5
                 U strdup@GLIBC_2.2.5
                 U strlen@GLIBC_2.2.5
                 U strncmp@GLIBC_2.2.5
                 U strncpy@GLIBC_2.2.5
                 U strrchr@GLIBC_2.2.5
                 U strstr@GLIBC_2.2.5
                 U strtok@GLIBC_2.2.5
                 U strtol@GLIBC_2.2.5
                 U waitpid@GLIBC_2.2.5

so 2.34 it is.

@akurtakov
Copy link
Member

akurtakov commented Dec 15, 2024

output of nm -D eclipse |grep GLIBC

                 U closedir@GLIBC_2.2.5
                 w __cxa_finalize@GLIBC_2.2.5
                 U dlclose@GLIBC_2.34
                 U dlerror@GLIBC_2.34
                 U dlopen@GLIBC_2.34
                 U dlsym@GLIBC_2.34
                 U __errno_location@GLIBC_2.2.5
                 U exit@GLIBC_2.2.5
                 U fclose@GLIBC_2.2.5
                 U fgets@GLIBC_2.2.5
                 U fopen@GLIBC_2.2.5
                 U fprintf@GLIBC_2.2.5
                 U free@GLIBC_2.2.5
                 U getcwd@GLIBC_2.2.5
                 U getenv@GLIBC_2.2.5
                 U geteuid@GLIBC_2.2.5
                 U __isoc99_sscanf@GLIBC_2.7
                 U __libc_start_main@GLIBC_2.34
                 U malloc@GLIBC_2.2.5
                 U memmove@GLIBC_2.2.5
                 U memset@GLIBC_2.2.5
                 U opendir@GLIBC_2.2.5
                 U printf@GLIBC_2.2.5
                 U puts@GLIBC_2.2.5
                 U readdir@GLIBC_2.2.5
                 U realloc@GLIBC_2.2.5
                 U realpath@GLIBC_2.3
                 U setlocale@GLIBC_2.2.5
                 U sprintf@GLIBC_2.2.5
                 U stat@GLIBC_2.33
                 U stderr@GLIBC_2.2.5
                 U strcasecmp@GLIBC_2.2.5
                 U strcat@GLIBC_2.2.5
                 U strchr@GLIBC_2.2.5
                 U strcmp@GLIBC_2.2.5
                 U strcpy@GLIBC_2.2.5
                 U strdup@GLIBC_2.2.5
                 U strlen@GLIBC_2.2.5
                 U strncmp@GLIBC_2.2.5
                 U strncpy@GLIBC_2.2.5
                 U strrchr@GLIBC_2.2.5
                 U strtol@GLIBC_2.2.5

@HannesWell
Copy link
Member Author

Thank you.
So it means that, just like for SWT where it is already the case, as soon as this is submitted, the launcher will for example not work on Debian-11 anymore.

@akurtakov
Copy link
Member

akurtakov commented Dec 16, 2024

Any machine that doesn't have glibc 2.34 or newer will not work.

@HannesWell
Copy link
Member Author

Any machine that doesn't have glibc 2.34 or newer will not work.

Yes. With Debian-11 I just wanted to give an explicit example.

@tjwatson and @laeubi as project-leads of Equinox, are you fine with this?
If yes, I'll submit this and rebuild the native launcher for Linux/GTK.

@tjwatson
Copy link
Contributor

@tjwatson and @laeubi as project-leads of Equinox, are you fine with this?
If yes, I'll submit this and rebuild the native launcher for Linux/GTK.

Is there much of a choice here? I do believe this change and the SWT one will become disruptive to existing enterprise users that may not be able to move their developers up to the required versions quickly.

On the other hand, I thought this was a hard requirement because we no longer have a supported environment to compile to the older libraries.

@iloveeclipse
Copy link
Member

Do we have instructions how to build native equinox binaries outside of eclipse.org infra?

We had our fun to find instructions for SWT natives rebuild in eclipse-platform/eclipse.platform.swt#1631 , would be nice to have that info before we break the compatibility in yet another place.

@trancexpress : FYI.

Copy link
Member

@laeubi laeubi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there much of a choice here?

Not really, currently Eclipse can't start with GTK4 enabled using the launcher so we will need it rather sooner than later. Also given that SWT has higher requirements it seems a good time to do it.

Beside this, one can always just use an older version of the launcher from a previous release as there is usually no direct binding between release+launcher.

@laeubi
Copy link
Member

laeubi commented Dec 18, 2024

Seems we need some version bumps here.

@laeubi
Copy link
Member

laeubi commented Dec 18, 2024

@iloveeclipse the instructions to build are described here:

https://github.com/eclipse-equinox/equinox/blob/master/features/org.eclipse.equinox.executable.feature/README.md

The image 'platformreleng-centos-swt-build:8' cannot be built anymore
and is therefore not updated.
Align with SWT and use the debian-12 image instead.

This will increase the GLIBC version requirement to version 2.34, see
eclipse-platform/eclipse.platform.swt#1422 (comment)

See also eclipse-platform/eclipse.platform.releng.aggregator#2441
@HannesWell HannesWell force-pushed the native-build-on-debian branch from db9570d to f0be216 Compare December 23, 2024 15:47
@HannesWell
Copy link
Member Author

Is there much of a choice here?

Not really, currently Eclipse can't start with GTK4 enabled using the launcher so we will need it rather sooner than later. Also given that SWT has higher requirements it seems a good time to do it.

Can you tell if we have to apply changes to the launcher code to make Equinox launch with GTK-4 enabled?

@tjwatson and @laeubi as project-leads of Equinox, are you fine with this?
If yes, I'll submit this and rebuild the native launcher for Linux/GTK.

Is there much of a choice here? I do believe this change and the SWT one will become disruptive to existing enterprise users that may not be able to move their developers up to the required versions quickly.

Unfortunately yes, but it's the same for SWT so it's at least consistent.

On the other hand, I thought this was a hard requirement because we no longer have a supported environment to compile to the older libraries.

Yes. Technically we can still fetch the Docker-image of the old environment, but we can't update or change it anymore. So yes, effectively we don't have an environment anymore to compile it.

@HannesWell
Copy link
Member Author

As soon as the build completes I'll submit this so that it's available with enough time for M1.

@HannesWell HannesWell merged commit 10ae7b8 into eclipse-equinox:master Dec 23, 2024
26 of 27 checks passed
@HannesWell HannesWell deleted the native-build-on-debian branch December 23, 2024 16:43
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.

5 participants