On a system without binutils installed, binary glibc merge fails: emerge -1a -k y sys-libs/glibc These are the packages that would be merged, in order: Calculating dependencies... done! [binary R ] sys-libs/glibc-2.32-r6 Would you like to merge these packages? [Yes/No] >>> Running pre-merge checks for sys-libs/glibc-2.32-r6 * Checking general environment sanity. * Checking gcc for __thread support ... [ !! ] * Could not find a gcc that supports the __thread directive! * Please update your binutils/gcc and try again. * ERROR: sys-libs/glibc-2.32-r6::gentoo failed (pretend phase): * No __thread support in gcc! * * Call stack: * ebuild.sh, line 125: Called pkg_pretend * environment, line 2668: Called sanity_prechecks * environment, line 3293: Called die * The specific snippet of code: * die "No __thread support in gcc!"; Also, I figure binary glibc merge also fails without gcc installed? gcc is a big pkg and I would like to remove it from binary only systems. I guess then need a gcc-libs pkg? Has this been discussed before?
Considering gcc also provides some shared libraries (needed at runtime), you'll have trouble removing it binutils' varied tools also get used for things other than building/linking, you are also losing things like bin/strings and bin/ar with other uses. That aside, ebuilds should still try to avoid compiler tests if MERGE_TYPE == binary. glibc already makes most of these non-fatal for binpkgs but running tc-has-tls appears to be an oversight.
(In reply to Ionen Wolkens from comment #1) > Considering gcc also provides some shared libraries (needed at runtime), > you'll have trouble removing it Yes, I am hoping for a gcc-libs package > > binutils' varied tools also get used for things other than building/linking, > you are also losing things like bin/strings and bin/ar with other uses. Didn't know that: ls /usr/x86_64-pc-linux-gnu/binutils-bin/2.35.2/ addr2line* as* dwp* gprof* ld.bfd* nm* objdump* readelf* strings* ar* c++filt* elfedit* ld* ld.gold* objcopy* ranlib* size* strip* Some of these are useful, what to do ...? > > That aside, ebuilds should still try to avoid compiler tests if MERGE_TYPE > == binary. glibc already makes most of these non-fatal for binpkgs but > running tc-has-tls appears to be an oversight. Thanks
I hit this with binpkgs while recovering from a broken gcc/glibc too. Could the check for merge type please be added?
ping?
The check happens in https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-libs/glibc/glibc-9999.ebuild#n676 # When we actually have to compile something... if ! just_headers ; then ebegin "Checking gcc for __thread support" if ! eend $(want__thread ; echo $?) ; then echo eerror "Could not find a gcc that supports the __thread directive!" eerror "Please update your binutils/gcc and try again." die "No __thread support in gcc!" fi A few lines above similar compiler check is avoided with `[[ ${MERGE_TYPE} != "binary" ]]`. You can double-check what minimal subset of checks could be safely bypassed in binary-only merge and attach the patch. That should speed the review up.
Same problem here with arm64
Following @sam suggestion, I have fixed running "# emerge -1 gcc-config"
Do not follow my previous statement, it still does not emerge
Set thin in your portage make.conf: WANT__THREAD=0
*** This bug has been marked as a duplicate of bug 786570 ***