chromebrew/chromebrew

Chrome OS 72 has glibc 2.27

bsiegert opened this issue · 15 comments

Description

I am on dev channel. The glibc package (installed from binary, as part of the default install) contains dangling symlinks to system libs, because Chrome OS itself is now on glibc 2.27. Compiling anything thus fails with

$ gcc -o foo foo.c
/usr/local/bin/ld: cannot find /usr/local/lib64/libc.so.6
/usr/local/bin/ld: cannot find /usr/local/lib64/ld-linux-x86-64.so.2
collect2: error: ld returned 1 exit status
$ ls -l /usr/local/lib64/libc.so.6
lrwxrwxrwx. 1 chronos chronos 12 Jun 25 02:32 /usr/local/lib64/libc.so.6 -> libc-2.23.so
$ ls -l /usr/local/lib64/libc-2.23.so
lrwxrwxrwx. 1 chronos chronos 19 Jun 25 02:32 /usr/local/lib64/libc-2.23.so -> /lib64/libc-2.23.so
$ ls /lib64/libc-*.so
/lib64/libc-2.27.so

Maybe it is in fat time to use glibc 2.27, as suggested in #2885?

Versions and system information

glibc version 2.23

chromebrew: 1.0.4

ChromeOS:

CHROMEOS_RELEASE_BUILDER_PATH=caroline-release/R72-11264.0.0          
CHROMEOS_RELEASE_BUILD_NUMBER=11264                                   
CHROMEOS_RELEASE_BUILD_TYPE=Official Build                            
CHROMEOS_RELEASE_CHROME_MILESTONE=72                                  
CHROMEOS_RELEASE_DESCRIPTION=11264.0.0 (Official Build) dev-channel caroline

Model: Samsung Chromebook Pro

Architecture: x86_64

Thank you for the heads up @bsiegert. We will cross this bridge once 72 becomes the stable release.

This is great! After we make this update, the cross script can finally be perfected and will work!

I tried this before, back when glibc 2.23 gave segfaults. It didn't work. However, if this is the new system
C library, it most likely will.

In the meantime: Is there a way I could rebuild glibc-2.23 from source (thus, without the symlinks) but not remove the installed glibc package before?

@sajjaadf Doesn't work yet. @bsiegert wget https://ftp.gnu.org/gnu/libc/glibc-2.27.tar.xz
NOT SUPPORTED!

@sajjaadf @bsiegert If you intend to do anything with Chromebrew, you need to revert to the stable channel. The stable channel is the only supported channel.

blu commented

Just a heads-up: r72 has landed on the beta channel, bringing along the same problem.

In the meantime, a workaround allowing the use of crew's current gcc7 and clang packages on r72:

  1. fix all links under /usr/local/lib that originally point to /lib/*-2.23 versions to point to /lib/*-2.27 versions
  2. when building via gcc or clang, pass /lib/ld-2.27.so as a link dependency

@blu: Thanks for the heads-up. We have that issue addressed. @skiman6010 has confirmed the problem is resolved after a glibc 2.27 update.

Sorry about that. I was on my email, and didn't see the edit you made.

@blu Check the update-glibc-2.23-2.27 branch on @uberhacker's fork of Chromebrew.
How's Wayland development going?

blu commented

@JL2210 Thanks, will do! Wayland's on the backburner ATM, hopefully I'll kick back into it full swing in a couple of weeks.

Chrome 72 is now stable: I'm on the stable channel and just hit a bunch of dangling symlinks.

blu commented

Chrome 72 is now stable: I'm on the stable channel and just hit a bunch of dangling symlinks.

This is normal for r72 and current crew. It can be addressed as described here: #2890 (comment)

Thank you. This comment prompted me to update the issue:

We will cross this bridge once 72 becomes the stable release.

It is now time to cross the bridge.

This issue appears to have been resolved recently. I can't close the issue but that may be appropriate.