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

Drop support for Ubuntu 14.04 / 16.04 / CentOS 7 on Bazel@HEAD #13561

Closed
davido opened this issue Jun 7, 2021 · 6 comments
Closed

Drop support for Ubuntu 14.04 / 16.04 / CentOS 7 on Bazel@HEAD #13561

davido opened this issue Jun 7, 2021 · 6 comments
Assignees
Labels
P1 I'll work on this now. (Assignee required) team-OSS Issues for the Bazel OSS team: installation, release processBazel packaging, website type: process

Comments

@davido
Copy link
Contributor

davido commented Jun 7, 2021

Considering that Ubuntu 16.04 LTS is EOL now, it might be reasonable to drop support for Ubuntu 14.04 / 16.04 / CentOS 7 on Bazel's main branch.

One reason to discontinue support for outdated platforms, is that Bazel@HEAD cannot be built on modern platforms, like Fedora 34 rawhide (x86_64) that switched to gcc 11.x toolchain (https://gcc.gnu.org/gcc-11/), see #12702.

The attempt to bump transitive dependencies in Bazel for gRPC and absl caused the build to fail on outdated CentOS 7 platform due to outdated 4.8.5 C++ compiler toolchain:

  $ docker run -it gcr.io/bazel-public/centos7-java8:latest /bin/bash
  $ gcc --version
  gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)

See CI breakages for this PR: #13536.

@davido
Copy link
Contributor Author

davido commented Jun 8, 2021

@philwo

To increase the visibility, should this issue be rather transferred to bazel project?

@philwo philwo transferred this issue from bazelbuild/continuous-integration Jun 8, 2021
@philwo
Copy link
Member

philwo commented Jun 8, 2021

@davido Thanks! I transferred the issue to the Bazel project.

@philwo
Copy link
Member

philwo commented Jun 8, 2021

I sent a mail to bazel-discuss@ to get feedback on this: https://groups.google.com/g/bazel-discuss/c/xXkCsFjosG8

@Mizux
Copy link

Mizux commented Jun 9, 2021

TLDR: With Centos-7 you can have a recent gcc (9) with an "old" glibcxx while ubuntu pull the libstdc++ 3.4.28

You can have a gcc 9 on Centos 7 using this:
https://github.com/google/or-tools/blob/b37d9c786b69128f3505f15beca09e89bf078a89/tools/docker/centos-7.Dockerfile#L12-L20 and still have a good old glibcxx

It can be a good idea to keep centos-7 since it is the image used by manylinux2010 to build native python package (e.g. Google OR-Tools with our SWIG python wrapper (ed currently using the Make or CMake based build system since we don't have swig machinery in bazel yet)).
note: centos-6 use a now forbidden system call so docker image won't work on any recent distro/glinux etc...

And unfortunately Ubuntu ppa toolchain-r pull 3.4.28 -_-

distro GCC GLIBC GLIBCXX
Ubuntu 16.04 LTS 5.4.0 2.23 3.4.21
Ubuntu 16.04 LTS + gcc-7 7.5.0 2.23 3.4.28
Ubuntu 16.04 LTS + gcc-9 9.3.0 2.23 3.4.28
Ubuntu 18.04 LTS 7.5.0 2.27 3.4.25
Centos 7 4.8.5 2.17 3.4.19
Centos 7 + gcc-9 9.3.1 2.17 3.4.19
Centos 8 8.3.1 2.28 3.4.25
Debian 9 6.3.0 2.24 3.4.22
Debian 10 8.3.0 2.28 3.4.25

note: ubuntu-toolchain-r seems to pull libstdc++ 28 -_-

note:
gcc --version
find / -type f -iname "libstdc++*.so*"
find / -type f -iname "libc*.so*"
objdump -p libXXX.so

ref: google/or-tools#2520 (comment)

@davido
Copy link
Contributor Author

davido commented Jun 9, 2021

@Mizux

Thanks for your comments. Especially the pointer to CentOS 7 with gcc 9 toolchain.

I have extracted a minimal CentOS 7 with gcc 9 toolchain Dockerfile: [1], created docker image from it and verified, that I can build Bazel with my PR included, where gPRC and Abseil were bumped to recent releases.

This brings us to another possible approach, that I tried to outline in another request: [2] Preserve the outdated platforms, but raise C++ compiler baseline.

WDYT?

[1] https://github.com/davido/centos7-gcc-9-bazel-docker/blob/master/Dockerfile
[2] bazelbuild/continuous-integration#1167

@philwo philwo added P1 I'll work on this now. (Assignee required) team-OSS Issues for the Bazel OSS team: installation, release processBazel packaging, website type: process labels Jun 10, 2021
@philwo philwo self-assigned this Jun 10, 2021
@davido davido mentioned this issue Aug 19, 2021
9 tasks
ash2k added a commit to ash2k/bazel-tools that referenced this issue Sep 21, 2021
benjaminp added a commit to benjaminp/continuous-integration that referenced this issue Oct 15, 2021
This implements the suggestion from bazelbuild/bazel#13561 (comment).

I verified that the gcc on an interactive shell is now merely antiquated rather than totally obsolete:
```
$ docker run --rm -it ba4f33cb5da6
[root@95468bc7dbde /]# gcc --version
gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```

I hope modifying the shell's PATH will be enough to fix buildkite action running.
@meteorcloudy
Copy link
Member

meteorcloudy commented Feb 1, 2022

This is already fixed. We have dropped support for vanilla CentOS 7, instead we now build / test on CentOS 7 with devtoolset-10 (gcc version is 10.2.1). We no longer test on Ubuntu 14.04 and 16.04.

limdor added a commit to limdor/bazel-examples that referenced this issue Dec 31, 2023
Plan CentOS 7 support was dropped by Bazel
bazelbuild/bazel#13561

Here we do the same and we just support CentOS 7 with gcc 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P1 I'll work on this now. (Assignee required) team-OSS Issues for the Bazel OSS team: installation, release processBazel packaging, website type: process
Projects
None yet
Development

No branches or pull requests

4 participants