Re: help on packaging ddnet game which now needs cargo (rust)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Dec 12, 2022 at 10:58 AM Sérgio Basto <sergio@xxxxxxxxxx> wrote:
>
> Hi,
>
> I how solved this ? [1]
> Thank you

I suggest that you take a look at the Rust packaging guidelines, or at
how other packages in similar situations have handled this.

You need to configure the cargo build system correctly, i.e.
1. tell it to not try to download dependencies over the internet,
2. tell it how to use dependencies from Fedora instead,
2. use correct cargo build flags, and
3. use correct Rust compiler flags.

All these should be possible without too much trouble:

A. Add a call of the "%cargo_prep" macro in the "%prep" scriptlet.
Probably doesn't matter where, except that it needs to be after
unpacking sources.
This sets up cargo configuration that disables loading dependencies
over the internet, and specifies the location where cargo can find
packaged Rust dependencies.

B. Add a build dependency on the "cxx" crate. I looked at the source
code, and it seems to be the only Rust dependency - and it's already
packaged for Fedora:
BuildRequires: (crate(cxx/default) >= 1.0.0 with crate(cxx/default) < 2.0.0~)

C. Make sure "cargo build" is called with the correct flags for cargo
and the Rust compiler.
It looks like cmake just calls "cargo build --release", which ignores
Fedora default compiler flags (which is forbidden). You can look at
the "%cargo_build" flag for which flags you need:

$ rpm -E "%cargo_build"
/usr/bin/env CARGO_HOME=.cargo RUSTC_BOOTSTRAP=1
RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1
-Clink-arg=-Wl,-z,relro -Clink-arg=-Wl,-z,now --cap-lints=warn'
/usr/bin/cargo build -j16 -Z avoid-dev-deps --release

I think RUSTC_BOOTSTRAP=1 is not necessary in this case, but at least
setting RUSTFLAGS is mandatory (for example, debuginfo doesn't work if
you don't, and these flags also produce better code at the cost of
slightly slower compile times).

I haven't looked at how cmake calls "cargo build --release", but you
might need to patch the CMakeLists.txt file that contains this call to
include the flags above, and/or set RUSTFLAGS environment variable
before running the build.

Fabio
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux