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 (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id D7DD215817D for ; Fri, 14 Jun 2024 13:55:01 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id A7FD32BC026; Fri, 14 Jun 2024 13:54:57 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (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 5B3722BC015 for ; Fri, 14 Jun 2024 13:54:57 +0000 (UTC) Message-ID: Subject: Re: [gentoo-dev] [PATCH] cargo.eclass: Add cargo_target_dir helper function From: James Le Cuirot To: gentoo-dev@lists.gentoo.org Date: Fri, 14 Jun 2024 14:54:47 +0100 In-Reply-To: <7afchawnwsvh54fkyedgu727xddihslxk44tjbmtiobr5llmph@rzoy2fteogxc> References: <20240613150530.24679-1-chewi@gentoo.org> <7afchawnwsvh54fkyedgu727xddihslxk44tjbmtiobr5llmph@rzoy2fteogxc> Autocrypt: addr=chewi@gentoo.org; prefer-encrypt=mutual; keydata=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 Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-41cgaVm3Qea+/LTu+JGf" User-Agent: Evolution 3.52.1 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: 6bee98fb-91be-41aa-84a6-b90f11801e03 X-Archives-Hash: d88eaf1d236a8826a9f4bd2cb09ac967 --=-41cgaVm3Qea+/LTu+JGf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 2024-06-13 at 21:32 +0000, Lucio Sauer wrote: > On Thu, Jun 13, 2024 at 04:03:44PM +0100, James Le Cuirot wrote: > > Several Cargo-based ebuilds cannot use cargo_src_install for various > > reasons and manually install binaries from within the target directory > > instead. It is common to see `target/$(usex debug debug release)`, but > > this lacks the target ABI when cross-compiling, so provide a helper > > function. > >=20 > > There are some multilib Cargo-based ebuilds that always set the target > > ABI, even when not cross-compiling. It would be simpler to do this in > > general, so once ebuilds have been updated to use this new helper, I > > might change the eclass again accordingly. > >=20 > > Signed-off-by: James Le Cuirot > > --- > > eclass/cargo.eclass | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > >=20 > > diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass > > index 40d98211ce7f9..2036fb635d569 100644 > > --- a/eclass/cargo.eclass > > +++ b/eclass/cargo.eclass > > @@ -319,6 +319,16 @@ _cargo_gen_git_config() { > > fi > > } > > =20 > > +# @FUNCTION: cargo_target_dir > > +# @DESCRIPTION: > > +# Return the directory within target that contains the build, e.g. > > +# target/aarch64-unknown-linux-gnu/release. > > +cargo_target_dir() { > > + local abi > > + tc-is-cross-compiler && abi=3D$(rust_abi) > > + echo "${CARGO_TARGET_DIR:-target}${abi+/}${abi}/$(usex debug debug re= lease)" > > +} > > + > How about giving this function an optional parameter that gets passed to > rust_abi so that you can get the build directory for targets other than > CHOST? >=20 > What initially motivated this suggestion is a quirk in app-misc/anki's > build system together with your recent change to cargo.eclass 375da3684, > which enables cross-compilation by setting environment variables. > Here, I first build the 'build system runner' for CBUILD, which then > compiles the actual package for CHOST. I think I can avoid explicitly > setting --target $(rust ${CBUILD}) for the runner for now, but it would > be handy to easily get the build directory for CBUILD in the future! I did consider that, but for the sake of simplicity, I think I'd prefer jus= t overriding CHOST when you need to do this. There are already similar exampl= es of this. I had a look at app-misc/anki. I think you do need to give --target to the runner right now if that's building something, otherwise how would it know what the target is? Perhaps the runner respects CARGO_BUILD_TARGET? If so, = I was thinking of making a cargo_env wrapper helper that would set that and other variables in the context of the given command. This would be used in cargo_src_compile, as well as cargo_src_install and cargo_src_test in case = any rebuilding occurs. It could also be used for other custom scenarios like th= is one. What do you think? diff --git a/app-misc/anki/anki-24.04.1.ebuild b/app-misc/anki/anki-24.04.1= .ebuild index 54dfbf94f31b2..2764659ccbf51 100644 --- a/app-misc/anki/anki-24.04.1.ebuild +++ b/app-misc/anki/anki-24.04.1.ebuild @@ -871,9 +871,9 @@ src_compile() { # * generate the ninja file and run ninja afterwards # * create the Python wheel files in "${S}"/out/wheels =20 - cargo build --release --package runner || die + tc-env_build cargo_src_compile --package runner if use gui; then - out/rust/release/runner build -- $(get_NINJAOPTS) wheels |= | die + cargo_env "$(CHOST=3D${CBUILD} cargo_target_dir)/runner" bu= ild -- $(get_NINJAOPTS) wheels || die else cargo_src_compile --package anki-sync-server fi @@ -901,7 +901,7 @@ src_test() { "${S}"/build/ninja_gen/src/cargo.rs || die =20 for runner in pytest rust_test jest; do - out/rust/release/runner build -- $(get_NINJAOPTS) check:$ru= nner || \ + cargo_env "$(CHOST=3D${CBUILD} cargo_target_dir)/runner" bu= ild -- $(get_NINJAOPTS) check:$runner || \ die "check:$runner failed!" done } --=-41cgaVm3Qea+/LTu+JGf Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEPxcZ3tkwcedKm2a8EiZBXQDdMTcFAmZsS6cRHGNoZXdpQGdl bnRvby5vcmcACgkQEiZBXQDdMTf8jg//b1ICNQ/J855qTkE9aRysm0+cDCxOEJ8n VASpG5fYatbQdHXDuhBos+JIkoU6P+JHtu2fHYuvbSt5K1pdOeoEhi7wuMzd6rpJ oAaxPrJgDuqs8Ahvl7dO5Onk34SEKUii/+BGWftzBTg/wza/8WGn8jxZj7QYmpJI JzzLrvOmqzMPmxJ+uK5TwtYPoPIPPUaTnDYbpdU1eqnO2ieNyHf4aMPX9jQ5tvGt bYU2Ja328Zr8Osc1rbveGdO2lQ1xY8jOJ7JUBQSaFUXxKc+ZCs38xfGqBMuo3fS3 D47lRElvAEXmsWnoM4ODcG2ErRc5hRJU1jOCj7HhiejXvs7eJwtYrOg6o8OyylsP vpnyylI5LmbS6VCDrq4FHHS5ssUL8bYyFor+nH2u4RaJn6odkh45eQ/cL2lcbyDj yNyvJu66iajecMziH4rH8mZD9elkBu6+2EVG6LtbuuO+7z5GmHZcbbliLYROLzWY BEEq6pADNzNRodT7thbUE2uFlH8HklHhI4oqP+kZDTRk75y1hHTLPb9rV9OPqVjg it+1N9HYBK2LS3e9p7BRkPkoR9zR24ReICcAwm7n+5lj9dtUfakoW2f4bkw/DTL3 7/jL4+ICQZNLtnLOrtFx/RQZv7D9XC1oFLbKkRPOvnTxSIDy1kxDULIo56H8N6wh Jvw4eO5nB6E= =dpnG -----END PGP SIGNATURE----- --=-41cgaVm3Qea+/LTu+JGf--