From: Florian Schmaus <flow@gentoo.org>
To: gentoo-dev@lists.gentoo.org, James Le Cuirot <chewi@gentoo.org>,
Ionen Wolkens <ionen@gentoo.org>
Subject: Re: [gentoo-dev] [PATCH] cargo.eclass: Add cargo_target_dir helper function
Date: Sat, 6 Jul 2024 11:04:08 +0200 [thread overview]
Message-ID: <d550a5f7-3b4b-45c1-8303-b5568563dc34@gentoo.org> (raw)
In-Reply-To: <b495f6e5adca34ffdfb54f4f4755303fb3e8a62f.camel@gentoo.org>
[-- Attachment #1.1.1: Type: text/plain, Size: 2721 bytes --]
On 16/06/2024 00.22, James Le Cuirot wrote:
> On Sat, 2024-06-15 at 17:56 -0400, Ionen Wolkens wrote:
>> On Sat, Jun 15, 2024 at 08:14:34PM +0200, Florian Schmaus wrote:
>>> On 13/06/2024 17.03, 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.
>>>
>>> Glad that someone is working on better cross-compilation support for
>>> rust. :)
>>>
>>> That said, many rust ebuilds generate shell completions by invoking the
>>> just compiled binary in src_install(). This does not work out of the box
>>> when cross-compiling.
>>>
>>> Is there anything we can or should do about it (besides binfmt_misc)?
>>> For example, asking the according projects to implement a mechanism to
>>> extract the completions files from the binary without running it, or
>>> have the build system generate the completion files as result of the build?
>>
>> All I can think of without changing entirely how they're generated is:
>> 1. (worst) either make a 2nd build using CBUILD (yeah no), or BDEPEND
>> on same-version self with a USE only when cross compiling
>> 2. (lazy) skip completions w/ ewarn if tc-is-cross-compiler, just so
>> it at least won't break cross over completion files that the user
>> may not even care much about
>> 3. generate them yourself with each releases and ship in a tarball,
>> works out for users but extra burden for maintainer over little
>> 4. ask upstream to provide proper release tarballs if not already and
>> include pre-generated completions/docs/etc... so it's otherwise
>> only a problem with arbitrary git checkouts
>> (3+4 may possibly be more complicated if cargo features / USE change
>> cli options and thus completion files)
>>
>> For one of my ebuilds I went with better-than-nothing #2.
>
> I've been doing this work for Flatcar, which doesn't use any of the packages
> affected by this, but it does still concern me a little. Unfortunately, none
> of the options are great.
>
> I've seen #2 in one or two cases, and thanks for doing that.
FYI, it turns out that at least clap-rs has support to generate the
completion files as part of the build process:
https://docs.rs/clap_complete/latest/clap_complete/generator/fn.generate_to.html
Maybe we could encourage projects to simply adjust their build.rs to
generate the completion files. This would avoid inconsistent (Gentoo)
package contents when cross compiling.
- Flow
[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 21567 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 618 bytes --]
next prev parent reply other threads:[~2024-07-06 9:04 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-13 15:03 [gentoo-dev] [PATCH] cargo.eclass: Add cargo_target_dir helper function James Le Cuirot
2024-06-13 21:32 ` Lucio Sauer
2024-06-14 13:54 ` James Le Cuirot
2024-06-15 20:02 ` Lucio Sauer
2024-06-15 13:59 ` [gentoo-dev] [PATCH v2] " James Le Cuirot
2024-06-15 18:14 ` [gentoo-dev] [PATCH] " Florian Schmaus
2024-06-15 21:56 ` Ionen Wolkens
2024-06-15 22:22 ` James Le Cuirot
2024-07-06 9:04 ` Florian Schmaus [this message]
2024-07-07 3:36 ` Eli Schwartz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d550a5f7-3b4b-45c1-8303-b5568563dc34@gentoo.org \
--to=flow@gentoo.org \
--cc=chewi@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
--cc=ionen@gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox