• Re: [gentoo-dev] Clang/LLVM profile

    From Sam James@21:1/5 to All on Mon Nov 29 03:00:01 2021
    --Apple-Mail=_4D86EE16-2BD3-4F4D-957E-957644385742
    Content-Transfer-Encoding: quoted-printable
    Content-Type: text/plain;
    charset=utf-8



    On 29 Nov 2021, at 01:45, 2b57 <2b57@protonmail.com> wrote:

    Sorry all, it seems that I've confused the lists. I'll forward this to user

    ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
    On Monday, November 29th, 2021 at 2:42 AM, 2b57 <2b57@protonmail.com> wrote:
    Hello all,

    I'm in the middle of developing a proof-of-concept "native" Clang/LLVM profile – such, that stage3 built using this profile will not even contain GCC and binutils. Why? Well, because Clang is in pretty good shape lately, you can compile kernel and
    elfutils even. Also just for fun!

    The approach I've decided to take is to create virtual/toolchain and virtual/binutils packages with RDEPEND attributes set to gcc || clang and binutils || llvm. I've reached a point where modifications to ::gentoo/scripts/bootstrap.sh are needed, and
    currently I've solved it with making an OverlayFS overlay, which combines both ::gentoo repo and my custom script. General idea is that once LLVM toolchain is in place (stage1), custom profile for stage2 masks gcc/binutils and virtuals get resolved by
    LLVM stuff. However, that is not the case; something goes wrong and it seems that binutils package is deeply embedded somewhere else...

    Anyway, I'd appreciate any feedback and suggestions, since I'm sure I'm not the only one interested in this topic.

    Grab the src here: https://github.com/2b57/toolchain-clang <https://github.com/2b57/toolchain-clang>


    Honestly, I think this is pretty on-topic for gentoo-dev given a lot of us are quite interested in this.

    That said, a few notes:
    - I'm not sure why you would need virtual/toolchain or virtual/binutils unless it's just for usage within bootstrapping scripts? Seems more like you could just remove gcc from @system and such?

    - _personally_, I'd prefer to do experimentation using libstdc++ from GCC and try libcxx later on as a fair amount of things still fail to build with LLVM's libcxx. But that doesn't mean others have the same view
    or that it's invalid to try! They're still bugs nonetheless.

    Please do let us know via Bugzilla if there's some quirks we need to add to ebuilds.

    We also have a group of us interested in using Clang in #gentoo-arm on libera.chat (IRC) -- the channel is not super restricted to ARM chat.

    Best,
    sam

    --Apple-Mail=_4D86EE16-2BD3-4F4D-957E-957644385742
    Content-Transfer-Encoding: quoted-printable
    Content-Type: text/html;
    charset=utf-8

    <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><
    div class="">On 29 Nov 2021, at 01:45, 2b57 &lt;<a href="mailto:2b57@protonmail.com" class="">2b57@protonmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Sorry all, it seems that I've confused the lists. I'll
    forward this to user<br class=""></div><div class=""><br class=""></div><div class="protonmail_quote">
    ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐<br class="">
    On Monday, November 29th, 2021 at 2:42 AM, 2b57 &lt;<a href="mailto:2b57@protonmail.com" class="">2b57@protonmail.com</a>&gt; wrote:<br class="">
    <blockquote class="protonmail_quote" type="cite">
    <div class="">Hello all,<br class=""></div><div class=""><br class=""></div><div class="">I'm in the middle of developing a proof-of-concept "native" Clang/LLVM profile – such, that stage3 built using this profile will not even contain GCC
    and binutils. Why? Well, because Clang is in pretty good shape lately, you can compile kernel and elfutils even. Also just for fun!<br class=""></div><div class=""><br class=""></div><div class="">The approach I've decided to take is to create virtual/
    toolchain and virtual/binutils packages with RDEPEND attributes set to gcc || clang and binutils || llvm. I've reached a point where modifications to ::gentoo/scripts/bootstrap.sh are needed, and currently I've solved it with making an OverlayFS overlay,
    which combines both ::gentoo repo and my custom script. General idea is that once LLVM toolchain is in place (stage1), custom profile for stage2 masks gcc/binutils and virtuals get resolved by LLVM stuff. However, that is not the case; something goes
    wrong and it seems that binutils package is deeply embedded somewhere else...<br class=""></div><div class=""><br class=""></div><div class="">Anyway, I'd appreciate any feedback and suggestions, since I'm sure I'm not the only one interested in this
    topic. <br class=""></div><div class=""><br class=""></div><div class="">Grab the src here: <a href="https://github.com/2b57/toolchain-clang" rel="noreferrer nofollow noopener" target="_blank" class="">https://github.com/2b57/toolchain-clang</a><br class=
    ""></div>
    </blockquote><br class="">
    </div></div></blockquote><br class=""></div><div>Honestly, I think this is pretty on-topic for gentoo-dev given a lot of us are quite interested in this.</div><div><br class=""></div><div>That said, a few notes:</div><div>- I'm not sure why you would
    need virtual/toolchain or virtual/binutils unless it's just for usage within bootstrapping scripts? Seems more like you could just remove gcc from @system and such?</div><div><br class=""></div><div>- _personally_, I'd prefer to do experimentation using
    libstdc++ from GCC and try libcxx later on as a fair amount of things still fail to build with LLVM's libcxx. But that doesn't mean others have the same view</div><div>or that it's invalid to try! They're still bugs nonetheless.</div><div><br class=""></
    Please do let us know via Bugzilla if there's some quirks we need to add to ebuilds.<div class=""><br class=""></div><div class="">We also have a group of us interested in using Clang in #gentoo-arm on libera.chat (IRC) -- the channel is not super
    restricted to ARM chat.</div><div class=""><br class=""></div><div class="">Best,</div><div class="">sam</div></body></html>
    --Apple-Mail=_4D86EE16-2BD3-4F4D-957E-957644385742--

    -----BEGIN PGP SIGNATURE-----

    iQGTBAEBCgB9FiEEYOpPv/uDUzOcqtTy9JIoEO6gSDsFAmGkMj9fFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDYw RUE0RkJGRkI4MzUzMzM5Q0FBRDRGMkY0OTIyODEwRUVBMDQ4M0IACgkQ9JIoEO6g SDsiEAf+PNrs22KWx48ID47oyJMZoqHniPnUBs8Ac3AIqVezB597r7YJEDWW0GWd TCvZol/TBQQj9uGRZZmKiSZ/9wHzB8lxDlxMc/SPolBlX85aDoVcaQZwJxDY8d8f yJhoWohBtHw2ih0u7pXDTLSojEhp6UBB8IhTNI6ANvbDJIDywmdgPM+9+Uy+Aa9r +6APtvKzjNlfoLf/kh28QUvgMdWaTnt+N7TFQ5QiR2BhhaiAGeTKacWC+PxWKf+M H+LrSJqdogOMjS1qUNxl5ypR9qKXDezluUyFneO/0CdaZuDSsGJUGVuJJbNkhUcP PF571MOHW3T1lVTEla8FZOrDE0rvaA==
    =wqEi
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From 2b57@21:1/5 to All on Mon Nov 29 02:50:02 2021
    This is a multi-part message in MIME format.

    SGVsbG8gYWxsLAoKSSdtIGluIHRoZSBtaWRkbGUgb2YgZGV2ZWxvcGluZyBhIHByb29mLW9mLWNv bmNlcHQgIm5hdGl2ZSIgQ2xhbmcvTExWTSBwcm9maWxlIOKAkyBzdWNoLCB0aGF0IHN0YWdlMyBi dWlsdCB1c2luZyB0aGlzIHByb2ZpbGUgd2lsbCBub3QgZXZlbiBjb250YWluIEdDQyBhbmQgYmlu dXRpbHMuIFdoeT8gV2VsbCwgYmVjYXVzZSBDbGFuZyBpcyBpbiBwcmV0dHkgZ29vZCBzaGFwZSBs YXRlbHksIHlvdSBjYW4gY29tcGlsZSBrZXJuZWwgYW5kIGVsZnV0aWxzIGV2ZW4uIEFsc28ganVz dCBmb3IgZnVuIQoKVGhlIGFwcHJvYWNoIEkndmUgZGVjaWRlZCB0byB0YWtlIGlzIHRvIGNyZWF0 ZSB2aXJ0dWFsL3Rvb2xjaGFpbiBhbmQgdmlydHVhbC9iaW51dGlscyBwYWNrYWdlcyB3aXRoIFJE RVBFTkQgYXR0cmlidXRlcyBzZXQgdG8gZ2NjIHx8IGNsYW5nIGFuZCBiaW51dGlscyB8fCBsbHZt LiBJJ3ZlIHJlYWNoZWQgYSBwb2ludCB3aGVyZSBtb2RpZmljYXRpb25zIHRvIDo6Z2VudG9vL3Nj cmlwdHMvYm9vdHN0cmFwLnNoIGFyZSBuZWVkZWQsIGFuZCBjdXJyZW50bHkgSSd2ZSBzb2x2ZWQg aXQgd2l0aCBtYWtpbmcgYW4gT3ZlcmxheUZTIG92ZXJsYXksIHdoaWNoIGNvbWJpbmVzIGJvdGgg OjpnZW50b28gcmVwbyBhbmQgbXkgY3VzdG9tIHNjcmlwdC4gR2VuZXJhbCBpZGVhIGlzIHRoYXQg b25jZSBMTFZNIHRvb2xjaGFpbiBpcyBpbiBwbGFjZSAoc3RhZ2UxKSwgY3VzdG9tIHByb2ZpbGUg Zm9yIHN0YWdlMiBtYXNrcyBnY2MvYmludXRpbHMgYW5kIHZpcnR1YWxzIGdldCByZXNvbHZlZCBi eSBMTFZNIHN0dWZmLiBIb3dldmVyLCB0aGF0IGlzIG5vdCB0aGUgY2FzZTsgc29tZXRoaW5nIGdv ZXMgd3JvbmcgYW5kIGl0IHNlZW1zIHRoYXQgYmludXRpbHMgcGFja2FnZSBpcyBkZWVwbHkgZW1i ZWRkZWQgc29tZXdoZXJlIGVsc2UuLi4KCkFueXdheSwgSSdkIGFwcHJlY2lhdGUgYW55IGZlZWRi YWNrIGFuZCBzdWdnZXN0aW9ucywgc2luY2UgSSdtIHN1cmUgSSdtIG5vdCB0aGUgb25seSBvbmUg aW50ZXJlc3RlZCBpbiB0aGlzIHRvcGljLgoKR3JhYiB0aGUgc3JjIGhlcmU6IGh0dHBzOi8vZ2l0 aHViLmNvbS8yYjU3L3Rvb2xjaGFpbi1jbGFuZw==

    PGRpdj5IZWxsbyBhbGwsPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SSdtIGluIHRoZSBt aWRkbGUgb2YgZGV2ZWxvcGluZyBhIHByb29mLW9mLWNvbmNlcHQgIm5hdGl2ZSIgQ2xhbmcvTExW TSBwcm9maWxlIOKAkyBzdWNoLCB0aGF0IHN0YWdlMyBidWlsdCB1c2luZyB0aGlzIHByb2ZpbGUg d2lsbCBub3QgZXZlbiBjb250YWluIEdDQyBhbmQgYmludXRpbHMuIFdoeT8gV2VsbCwgYmVjYXVz ZSBDbGFuZyBpcyBpbiBwcmV0dHkgZ29vZCBzaGFwZSBsYXRlbHksIHlvdSBjYW4gY29tcGlsZSBr ZXJuZWwgYW5kIGVsZnV0aWxzIGV2ZW4uIEFsc28ganVzdCBmb3IgZnVuITxicj48L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2PlRoZSBhcHByb2FjaCBJJ3ZlIGRlY2lkZWQgdG8gdGFrZSBpcyB0byBj cmVhdGUgdmlydHVhbC90b29sY2hhaW4gYW5kIHZpcnR1YWwvYmludXRpbHMgcGFja2FnZXMgd2l0 aCBSREVQRU5EIGF0dHJpYnV0ZXMgc2V0IHRvIGdjYyB8fCBjbGFuZyBhbmQgYmludXRpbHMgfHwg bGx2bS4gSSd2ZSByZWFjaGVkIGEgcG9pbnQgd2hlcmUgbW9kaWZpY2F0aW9ucyB0byA6OmdlbnRv by9zY3JpcHRzL2Jvb3RzdHJhcC5zaCBhcmUgbmVlZGVkLCBhbmQgY3VycmVudGx5IEkndmUgc29s dmVkIGl0IHdpdGggbWFraW5nIGFuIE92ZXJsYXlGUyBvdmVybGF5LCB3aGljaCBjb21iaW5lcyBi b3RoIDo6Z2VudG9vIHJlcG8gYW5kIG15IGN1c3RvbSBzY3JpcHQuIEdlbmVyYWwgaWRlYSBpcyB0 aGF0IG9uY2UgTExWTSB0b29sY2hhaW4gaXMgaW4gcGxhY2UgKHN0YWdlMSksIGN1c3RvbSBwcm9m aWxlIGZvciBzdGFnZTIgbWFza3MgZ2NjL2JpbnV0aWxzIGFuZCB2aXJ0dWFscyBnZXQgcmVzb2x2 ZWQgYnkgTExWTSBzdHVmZi4gSG93ZXZlciwgdGhhdCBpcyBub3QgdGhlIGNhc2U7IHNvbWV0aGlu ZyBnb2VzIHdyb25nIGFuZCBpdCBzZWVtcyB0aGF0IGJpbnV0aWxzIHBhY2thZ2UgaXMgZGVlcGx5 IGVtYmVkZGVkIHNvbWV3aGVyZSBlbHNlLi4uPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ QW55d2F5LCBJJ2QgYXBwcmVjaWF0ZSBhbnkgZmVlZGJhY2sgYW5kIHN1Z2dlc3Rpb25zLCBzaW5j ZSBJJ20gc3VyZSBJJ20gbm90IHRoZSBvbmx5IG9uZSBpbnRlcmVzdGVkIGluIHRoaXMgdG9waWMu IDxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkdyYWIgdGhlIHNyYyBoZXJlOiA8YSBocmVm PSJodHRwczovL2dpdGh1Yi5jb20vMmI1Ny90b29sY2hhaW4tY2xhbmciPmh0dHBzOi8vZ2l0aHVi LmNvbS8yYjU3L3Rvb2xjaGFpbi1jbGFuZzwvYT48YnI+PC9kaXY+

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andreas K. Huettel@21:1/5 to All on Mon Nov 29 14:35:39 2021
    Copy: sam@gentoo.org (Sam James)

    Honestly, I think this is pretty on-topic for gentoo-dev given a lot of us are quite interested in this.
    ^ this

    - I'm not sure why you would need virtual/toolchain or virtual/binutils unless it's just for usage within bootstrapping scripts? Seems more like
    you could just remove gcc from @system and such?
    ^ this too

    FWIW, a minimal chroot (corresponding to a stage3) rebuilds quite nicely with clang, with one exception (sys-libs/glibc obviously).

    Being able to build glibc with clang is seen as a desirable long-term goal by glibc upstream, seems to be nontrivial to implement though.

    --
    Andreas K. Httel
    dilfridge@gentoo.org
    Gentoo Linux developer
    (council, qa, toolchain, base-system, perl, libreoffice)

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCAAdFiEE6W4INB9YeKX6Qpi1TEn3nlTQogYFAmGk1ysACgkQTEn3nlTQ oga7RxAAu6qGrLSj/BPAJClkWMYS6w0zigGIB4WrspT9XGMZsf6zOCCl9Y2sGV// UEfTmbzfC6QyaKSxmZ8tiBQDRDazYJ42OQcZc2y0rOn+Kecw3QnR3CSv/QSmZ3Vt 4vAJiqdrf6L7C1BIXwQxdBvZG1mcFdTEk0GF2C/73glMvQajZZBCcIcYx1e8wQIE 4dXmbh/q8dpHY1NEWvRVVnqX+K+pK7ey3HAbnNTq3PKVbaXZ3PHiRLAy/+9MfY2C UPZBmm7efBrcwpeUlX68EO7dZ3SiQ7ridCZT/V54PIUncL9NNfxkv+KRmolZoAa7 7WFTZlMk/pHWdsbdrCNHUELHze+j8EgsvOV+9hPvnMv/2mpjFMIbQMRnKC0rxyvb +xee6zS8K9DcL3JsCZlNznEf2tDtcj9ilQ4LJ6wO5YOMDb7WEYkKCr80/I2V1oqI fXlgtRK1bLng/4HGm/fEa5xDnmryifc7DxB+ErY+W9hsnMrFhpgxackYi6xEePrN jkQXqPnNj7kYh/IYyY3Mwqal5qNsfZKD/6z5Eyj0WF0+m0oX0M01FlkhERJY8NzJ kjEwFEMzej0B+tuue7zTX7nuoeFTmUPpk7yVwBlCpoygByGc6z9tEbW/SHiR010O PxPkTg0WgdydmSFvU8dAYBmo3PwN7oA6CmLPID23bnI+X+AYJlA=
    =mLkh
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNe