From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 9AB741581D8 for ; Wed, 4 Dec 2024 13:12:50 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 48021E0805; Wed, 4 Dec 2024 13:12:45 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 654B5E07A9 for ; Wed, 4 Dec 2024 13:12:44 +0000 (UTC) Message-ID: <54846eaf6b5281f9df93358d5133b72f44ac05ae.camel@gentoo.org> Subject: Re: [gentoo-dev] [RFC] Future changes to LLVM eclasses (or how do you use LLVM?) From: James Le Cuirot To: gentoo-dev@lists.gentoo.org Date: Wed, 04 Dec 2024 13:12:35 +0000 In-Reply-To: References: Autocrypt: addr=chewi@gentoo.org; prefer-encrypt=mutual; keydata=mQINBFPBLZQBEACkc6lcPvLMWaFupeWreFCnJebwLjiQgYlizl/nUzIcXXmj4gostejm/ k8ulAjTSrqFnHtcJs+TkriJfQtFZUyGTmdH2GQeZKcjx6ugwsjGiPksigRHcwrDdIrtempsNjXGaZ 0cZyrO6BHfUZ3irSUT3X4agSFQxsGnTfK1zLZCdMychY1vUlg9WynxSlnW+P7MsHM9ZtFquuPp2BD 45AdPjSFyxlwIaaEqApWNXE96mewv3jX6C5voGLVTk1XD52gm8DVeVKcUFOhbu0tQO2nk/v88XTrN kEWEVRfHa1/zkue/YG1JGu21gfVIC/0wdZCu90AY9lo/4qaAy/HgtKQZdzJcS8341Tc27j4cRTak1 NJH+T1xGANdtkXKmkNdmDKZqmuKSiuqnIMzW8QXbBfuoXCaRH80av+GIvGKP+sKetlj2B5hSlZq0e 8PqbdnkfzSVQfKHr4N0czAdtUezIVOL5d07zt+RVn61jmXKUfM3pgzFQBJ8TKO3QgN3iyaEl0p7eC LshZG06uNITs2xOr1QKct4qcWesXL0/szr3AkCVy/yPaEmvvQrZJd8+cK2ZNlEY4bh09f1v/wKlqY 4ITJczOKoRmvI4TJho1Degapom/vGSJ7z+/89V3pXTWBbB4ZImSh4s9qEMnTu5sAV7k8yzTDGp8vm GEHefmMyw0LwQARAQABtClKYW1lcyBMZSBDdWlyb3QgPGNoZXdpQGF1cmEtb25saW5lLmNvLnVrPo kCVwQTAQgAQQIbAwULCQgHAwUVCgkICwUWAwIBAAIeAQIXgAIZARYhBFKN5r2GkaQ5H9ou1CHGMhK cbX3kBQJmNl3tBQkWXDidAAoJECHGMhKcbX3kPv8P/jILiUprANxFIwhs8qKDvaRRYVti9UXBgdGc fqKZBtLcoDF+DFDV+Kegc8ODCKKGQiFsmaroFpzoGPYf3KHT1py1iJbq0uRYKYhepUjK79/Wk4upj tNzgCx8ZANkLObvP2Vj6sM0rJZbOywBRfTTl2cQFVYrr4zVqwzWiYPT8ibTFpI2X2lo78Beb/AL1C 2MPAu2qiOGNDNOJZzMswQEr7tzUnDkOhJP0oCJ94LWgUeQF5qCjc0Q5zmAM8xeunoORW4eoVz5YA2 gEVzz7hjwzOv4IOF3/DaJ/ET7E6WmNekzsdNrPeI2bmK7btV3l5/4tUPrEv8K4PGmhe8iAwYBCDrI SMUhEsZuu/3gM2MN3rY298mfvwJ921TDhTuZzFSTpYg4FYsC/AKs5aYJIgyFnJRVRx9CuZTocish0 ig9fW6Lqte9X4fgmn2fvSTXm6PN18pyAKkCX0F71w2fXx1UNlJrB33EusOZIKohWIlSuN+Yxmw6aF RcVr6+o1m2uwio89zfoq6jid+QPIx1dByQflkFyG1cYEZ6n65lqDBv9Vz0Zchqu6Wa1M20C0rwOLG csb4GQuUzbqZeweD4FLkT2NxLd40yHBFRcYean+uAETPTEHTDHAttjurss6ciH7DCl7UcYVMjZj9i wGd1Ljo/CjSwAZ2L4qztvaJh6OvT1qOjtCJKYW1lcyBMZSBDdWlyb3QgPGNoZXdpQGdlbnRvby5vc mc+iQJUBBMBCAA+AhsDBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheAFiEEUo3mvYaRpDkf2i7UIcYyEp xtfeQFAmY2XfMFCRZcOJ0ACgkQIcYyEpxtfeRWVw/+Kc5kTg5mHNWntP+xK0+n101NcgqxyWCefCb ftJ3jW/Rvr3YgJaRadmKPmu+Y/QRz/5nzkgsukZFmlkPlLSb+NWx2uPhbdknH/3596XPNru6Qg+dW U+4MgXwDI6Rg1S3Txd2O7cL7BLGBNW4o0NnDJQLIxJNuGSHPv1W6UPF1sppxDPkYGpSaHEExrS+rJ h/s4WVaOwDPd6jOAFpPmdCDi/WhuVJG3BGgAg/u1DlYxLgoFfCZ2SR6WAO8lU+a7sjnRwgwvre2T6 tRSSiP9k3xp1XpsUoxGxtCxTPlRYgQ+oH4Azj+w3kw5zKjO99YcBcUJiSgeW2axjjwDePwdwMKs5v SMDxfhsl+XXk+Lb1gAFlUncAgtpA+2sb0oq8Gzz8lW8C+aAdKunukHSUdE1FcKesootEhDbjcps82 VqYYdign7E2iWZI10qmbURStlIDwWfAYWuecAXlfuuWF3u9Ck6SdrPcq0tZVWd/abKMuN6oK1Ygpk f7nAFEq8zB57zGMpWBcdVoQvpHtn9IpRI1OF0doZrKWt6XW08U6QfuCTUCB5fc0v7+ePxVsGJKTAx mCq1gUKXMEmmAT7k96gl3R29bpGhmYvI7YSwocs829cIQUFf4k2liHy9S6WgA9ruu2WY/bn2wXLM0 BFv3PCCKcvpFNfDsaJdWd8SvuRIgy+QK0L0phbWVzIExlIEN1aXJvdCA8amFtZXMubGVjdWlyb3RA bWV0YXN3aXRjaC5jb20+iQJXBBMBCABBAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAFiEEU o3mvYaRpDkf2i7UIcYyEpxtfeQFAmY2XfMFCRZcOJ0ACgkQIcYyEpxtfeTxKhAAh7ZaCZvO5FE/Xd 15fL4F5jokUPSUAQ79HhDzjs2tWtXgn5fqmGvqSan8wXuaeSIEe6Ub4o3buKWJESHMwT4dSizEn+z Ft/szQx6/ZaJUhkaIloHVxl7hqPsqBkkVVkVEcZglLCL/wyidNXTwMfsNIFDnq+H59WdjCUXAT1TS 4c1g7CYxA8chvtk2URkpPJYi5ixzhfzX9QjCaxaWSwKPkUj0+hW9sUMcbFL1kXAyEJwPwC1XkqOip g4HcssNlBcHVvQ6yWnn6d7Qn9BHjTSklu15k+x0pcNX36oDwPCy+IY3l69NnkZKs+R3p/e/fy51FC pHoQrAI85Jxh6pkkI3OzR3VPFwbAyLgNcL2U+isQYslPT2GkEum580k5+hAnwXbnK/rWIlXLIMA7+ LsqucCPuCSPFeynuXug+Tve56ieBXwScpJQzPKxq3llm3tUgtO5ssJx9HFl0tZDNqH1ebaQ46T48f t9t5LmRIQBjelZ+IeczSAjLfEn9TW00vPH7ZEnYMfKqBlBtfIflo9vmaWcLwnyRvsEJJ1euqpiQwr ruQch223Y5BL2V66qFsnsWjycvLRj2jQG0mQmBSLRJURxyBOPxAP2rhqlalkDXAhCmgkaUSStQS4B 1xphrx3gyusxrDUpRnNYUOWWZYUxppUq8wnqXuFFZYztxqXQsxL5S0KUphbWVzIExlIEN1aXJvdCA 8amxlY3Vpcm90QG1pY3Jvc29mdC5jb20+iQJXBBMBCABBAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMB Ah4HAheAFiEEUo3mvYaRpDkf2i7UIcYyEpxtfeQFAmY2XfMFCRZcOJ0ACgkQIcYyEpxtfeRZEg//e EGV5TKC+BiqJgJ9JbdtSXqAD9ugm+htoWFz/6SKhqP+H7a+TrRyWGfIAa3xBzmS4vmgi3c34jeW2a n2U02BwkusaOTzZ4raRn084ZtDKhH3GntKB9aG9Peg8yFMzziZEUqnFUwzKHOwKtMHSNRDKNfMrH1 KipEzL1Rf5K7y/SFdt3gLnwNFTuPpFz2p+vBjqX2QH23EM8xBxXWFU/PmOTn69dEh/3NaRVP3442t UgU2P7gLqFVou1oWHLsg0/lmz1LatA5BqBQMcXIJldcg8XhHw5uaNJ6casUT2udWHqWjYxs8KU4CS 1RKHa8If5PbImy9aapcHgI4ng60sw4rhqgJB1ogTx7+VbF1qZHe41IMoLdI+jvAkCUPDZJh2/C8WX mT/L8+tq6spdSGTN/p/zDLbBiwKMoAxs3xVPbnee0RzPouJ1Hmjcf1lgslqa2r1+wivdFXR/HJ/Lr ozCNwKOF4S5qBy2ptBe7SfWHtd4poly4Eq3J63zwE5YhU4shUstNudybXc/JdIbhVTql/U6wtW6MW RcbKGu+9p+gzb+MLk26JQwbr8noRkpv2f+4oGKcLSc7GdYoOHz4CpFL7hlEFQbLXyT5rI1A0sTJYV 6oAIqDyLoO0Mfk7JxVlYjPLWu/0Dvdt539Pmh6MDcB6Jj052LlQXO5ijqgwrZ4dT6I= Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-fdV6JMk+kYtmaMsd7RKR" User-Agent: Evolution 3.52.4 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 X-Archives-Salt: 38dcf79e-ce21-4ae7-9a24-7668e1add638 X-Archives-Hash: 8824c78a36406b777a643fbb7cf184e0 --=-fdV6JMk+kYtmaMsd7RKR Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2024-12-03 at 16:32 +0100, Micha=C5=82 G=C3=B3rny wrote: > Hello, >=20 > TL;DR: the way llvm/llvm-r1 eclasses currently mangle PATH is broken, > and I'd like to replace that with something better (possibly in llvm- > r2.eclass, given how fragile this thing is). So I'd like to discuss > potential "better" solutions -- and particularly ask you what your LLVM- > using packages need. >=20 >=20 > Background > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > The current logic goes way back to llvm.eclass, and EAPIs that did not > have native cross-build support. Back then, prepending the slotted LLVM > bindir to PATH was the obvious way of getting software to find the right > LLVM version. >=20 > When I added EAPI 7 support, I went for prepending the following thing > to PATH: >=20 > ${ESYSROOT}/usr/lib/llvm/.../bin >=20 > People doing cross will clearly notice the mistake here -- it's using > binaries from ESYSROOT rather than BROOT! Except it's not a mistake, > but an ugly hack. What we're doing here is: >=20 > 1. Relying on a fancy CMake behavior of locating CMake files relative to > PATH, and >=20 > 2. Relying on the package either not caring about LLVM executables or > the system not being able to execute the executables in ESYSROOT > and gracefully falling back to other locations in PATH. >=20 > So what we're really doing is implicitly telling CMake to use: >=20 > ${ESYSROOT}/usr/lib/llvm/.../lib*/cmake >=20 > Yes, it's awful. And yes, it already did backfire in the past, so I've > ended up adding quite a complex logic to prevent these path > manipulations from overriding the toolchain set by user. For example, > if the user has CC=3Dclang, that normally evalutes to clang-19, we now > adjust CC so that it suddenly doesn't switch to clang-17 because > the package uses libLLVM-17. Meh. >=20 > When working on llvm-r1, I've focused on the more immediate problem of > horribly complex and broken package dependencies, and forgot about this. > I've only recalled the problem during the initial rust.eclass reviews, > since it happened to copy that incorrect logic. >=20 >=20 > Future options > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > Some of the options that already popped up during discussions include: >=20 > 1. Stopping to export pkg_setup() entirely, and expecting people to > explicitly pass the LLVM path to the build system, e.g. something like: >=20 > -DLLVM_CMAKE_PATH=3D"$(get_llvm_prefix -d)" >=20 > 2. Setting specific environment variables (such as LLVM_ROOT, CLANG_ROOT > and so on for CMake, or perhaps CMAKE_PREFIX_PATH). >=20 > 3. Creating a minimal llvm-config wrapper in ${T}, and adding it to > ${PATH} instead of the whole LLVM tree. Note that we'd need to write > our own since llvm-config is an executable, so we can't run the one from > ESYSROOT, and we can't rely on BROOT having a match (or don't want to > force a second copy of LLVM unnecessarily). >=20 > Any other ideas? How does your package select LLVM version, and which > of these options would work best for you? I did some up with something similar to #3 back in 2019, but you were so de= ad against it that I threw that work away. It wrapped around BROOT's llvm-conf= ig, which you don't want to do, but that didn't seem to be the part you had a problem with. Doing it that way would be easier, and maybe not such a big d= eal since you need BROOT to having a matching slot to build LLVM in the first place. Writing something based around pkg-config would be nicer though. I'd= be happy with either. I might even be able to help out. :) --=-fdV6JMk+kYtmaMsd7RKR Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEPxcZ3tkwcedKm2a8EiZBXQDdMTcFAmdQVUQRHGNoZXdpQGdl bnRvby5vcmcACgkQEiZBXQDdMTcNdw//YIpbRHG+mvh+DJrYpOkO3viqTPlZ+1Se 5GjyiqWJLPO4GWWABPgQHikKhlIYtR24rvZbxqMkdN4Cm6fZzEfuZyA2sbHl2ioO iPQwsSL6qCP4BUJF6ZYfXWMPGQbV+JR/olqJfPTIrfc3W3T3mkUwe8c6Jzgt7Z75 ASJQp/gH9O4CJIMi23o/+lk6YReVrREK5U5rF0HTWfCPLEaID5+yoaICtT9Fm9q1 EgAjD43QxNZDnsXGPh0WU8dSDyQ/t5wzu4jdIfWt17EFOqXDc563JSeOEAkz42Cv hnvjKSo7/Roy2lYT/M7mdQXTg8AdDiK65V9DNNqhMhqv8uUAMo5/xcXYWIVVbB9D zmbzDTkVfPTDYar7WZGouk/Vbyo6HLDK+kkQxLDqJN4Zxfoltre2JqKYX+cflbIY 6mWH/8sG6FoMoxQo72pVskMQDPYQmcXGmh/Y7PKwoOFR5IckkiwVlCXWTa0cqo69 DaYWM2W+cHMEqMphq57Giqfon4Omcw/FNnFK9nM+gPvzc7PdIhTGui1in7S/9Bjw RCsGABES+cwiOTN6iN1QmlRCkDO0sekuJV6CEgpxy8uvHFxESFCigtgPa9pYqFEw CZoV+RgHuEkFXr1WALpNQvxx0SSQ1lxJUPXwiGS3FG/0leVdKHfoXpaxGmGtUGfu CXpUvTE0FjE= =MRwg -----END PGP SIGNATURE----- --=-fdV6JMk+kYtmaMsd7RKR--