Monday, October 01, 2018

Re: sysutils/exa: unbreak aarch64

On Mon, Oct 01, 2018 at 09:41:25AM +0200, Peter Hessler wrote:
> On 2018 Oct 01 (Mon) at 06:36:07 +0200 (+0200), Sebastien Marie wrote:
>
> Side question, why are these versions hardcoded in the makefile?
> Shouldn't they just use the latest version?

cargo uses "Cargo.lock" file (generated from "Cargo.toml", which is a
kind of specification for dependencies). It contains the list of all
exact versions for all the dependencies.

The port's Makefile contains a serie of MODCARGO_CRATES which duplicate
the registered versions in Cargo.lock file in order to download the
tarballs and setting up an "alternate" source directory. So cargo will
use that instead of downloading them over the network.

One of the purpose (for Rust developers) is to have reproductible build.
So Cargo.lock pins specific versions of all dependencies (and deps of
deps). Usually there are the latest at the time of generation of the
file. It permits also to avoid unwanted breaking changes in some library
the program could use, as the pined versions are part of the release (so
assumed to be tested...)

When building, cargo will insist to use these specific versions taken
from Cargo.lock, or will try to download them over the network.

Here, we download a different libc version, but and ask devel/cargo
module to "update" the Cargo.lock for libc. So it will effectively use
an alternative version. Doing so, the OpenBSD ports differ from
"official" exa-0.8.0.
--
Sebastien Marie

No comments:

Post a Comment