Nun endlich befasse ich mich mit einem Fehler beim emerge -uvDa world, den ich einige Zeit vor mir her geschoben habe.
Beim Versuch des Updates kommt nach dem Entpacken der Patchfiles zuerst eine Mitteilung:
This version no longer provides compatibility with old broken applications. If you need this support, dcall your vendor and tell them to release an update that isn’t broken.
Danach direkt die Fehlermeldung:
!!! Error: sys-libs/glibc-2.4-r4 failed.
Call stack: […]
!!! non-TLS symbol errno@glibc_2.0 not supported
!!! if your need support, post the topmost build error, and the call stack if relevant.
Nach einigem Probieren bemerkte ich, dass dem ebuild der neuen glibc-Version ein neues USE-Flag namens glibc-compat20 zugefügt wurde. Genau dieses USE-Flag wird auch in einer der im Call Stack aufgeführten Zeilen im Ebuild abgefragt.
Ich habe mich nicht tiefer in das Ebuild eingelesen, aber beim groben überlesen machte es den Eindruck, als würde bei diesem gesetzten USE-Flag einfach die oben erwähnte Fehlermeldung ausgegeben und der Merge-Vorgang abgebrochen.
Nachdem ich dieses USE-Flag deaktiviert hatte, lief auch das Update problemlos.
Warum scheint dieses Flag so völlig frei von Funktion zu sein? Und wenn es schon lediglich einen Abbruch des Merges bewirkt - warum war es dann nach Einführung direkt standartmäßig aktiviert?
Es scheint mit der gewählten Art der verwendeten Threads zusammen zu hängen. TLS wird auch hier und da erwähnt. Vielleicht finde ich bei Gelegenheit mehr über dieses Thema heraus.