proxy - build container - make doesn't work
Is this the right place to submit this?
- [X] This is not a security vulnerability or a crashing bug
- [X] This is not a question about how to use Istio
Bug Description
Tried local build with container. It fails with version GLIBC_2.34' not found`
➜ proxy git:(master) ✗ BUILD_WITH_CONTAINER=1 ARCH_NAME=aarch64 make clean
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
chmod: changing permissions of '/config-copy': Operation not permitted
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
cp: cannot stat '/config-copy/*': No such file or directory
FATAL: $USER is not set, and unable to look up name of current user: (error: 0): Success
Makefile.core.mk:74: recipe for target 'clean' failed
make[1]: *** [clean] Error 36
make: *** [clean] Error 2
iconv: iconv_open(, -t): Invalid argument
Error converting string from to UTF-8
What was expected The commands should work as they do in older build containers
➜ proxy git:(master) ✗ IMAGE_VERSION=master-b0f2fd3b4240c8178b14de4689d0e663e11868ff BUILD_WITH_CONTAINER=1 ARCH_NAME=aarch64 make clean
Starting local Bazel server and connecting to it...
INFO: Starting clean (this may take a while). Consider using --async if the clean takes more than several minutes.
iconv: iconv_open(, -t): Invalid argument
Error converting string from to UTF-8
Version
Using latest proxy : https://github.com/istio/proxy/commit/8ecf97b08a2b245d9ea6f44f59f69e89a2b457a8
Additional Information
No response
it's broken after https://github.com/istio/istio/commit/cc33da463893fba62bf4d6615df42385d751ae3a
this was the change: https://github.com/istio/tools/pull/2913 🤔
Hmm, seems to work in our CI. Not sure what would trigger the difference
proxy git:(master) ✗ BUILD_WITH_CONTAINER=1 ARCH_NAME=aarch64 make clean su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
You're trying to cross-build? I don't think ARCH_NAME is enough to accomplish that (even with the old version of the image)?
Oh didn't notice that part. Yeah, don't do cross building :slightly_smiling_face:
If you do, you would need to do it at the docker layer with --platform which will end up running under qemu. TBH I doubt it works either, but its certainly not going to work to natively cross build
yeah, that flag is a problem. Fails on my mac regardless. Works on ubuntu host.
BUILD_WITH_CONTAINER=1 make build -B
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
chmod: changing permissions of '/config-copy': Operation not permitted
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
su-exec: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by su-exec)
cp: cannot stat '/config-copy/*': No such file or directory
make[1]: Nothing to be done for 'Makefile.overrides.mk'.
Hmm, seems to work in our CI. Not sure what would trigger the difference
This is what's present in the build container on my machine. Probably CI gets a different ubuntu version based on arch
docker run -v $(pwd):/work -w /work -it --entrypoint=bash gcr.io/istio-testing/build-tools-proxy:master-62b37843401cf50e072f1d7f4d565730b708d642
build-tools:/work# ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1.6) 2.27
Copyright (C) 2018 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.
Written by Roland McGrath and Ulrich Drepper.
build-tools:/work# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Note the proxy build remains on the old version for legacy glibc support
I think it is related to "base OS" image update (newer glibc version requirement comes from there). I found an older discussion here -> https://github.com/istio/tools/pull/2458
I am NOT blocked by this issue but happy to help because it seems we are now breaking builds for amd64
I encountered the same error on the program iTerm2, also on a Mac, as you did. While searching for a solution, I found this issue page and wanted to share my findings in case they provide any useful insights.
With the latest version of iTerm2, a dialog prompted me to choose a locale because it was not defined by default by the system. When I selected EN_US, the error started appearing on every line of the terminal. Removing that setting by using "Do not set locale environment variables" resolved the issue. It seems in Mac you need to avoid setting the $LANG variable. I have attached some screenshots for reference.
With the latest version of iTerm2, a dialog prompted me to choose a locale because it was not defined by default by the system.
Yup, that was noise (unrelated to the issue reported here). I was able to fix that later 🙂 Thanks for sharing!