1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-19 00:13:33 +00:00
freebsd-ports/Mk/Scripts/cargo-crates-git-fetch.awk
Tobias Kortkamp 2bad8d171a
Uses/cargo: Rework git source support based on patch-in-config sections
Git sources from `Cargo.lock` are added to `CARGO_CRATES` through
the normal mechanism of `make cargo-crates` by the porter.  They
are used to populate `MASTER_SITES`, `DISTFILES` with static
git-archive(1) tarballs a la `USE_GITHUB`, `USE_GITLAB`.  In the
configure phase we generate `[patch]` sections in the config file
which will cause `cargo update` to auto-update `Cargo.lock` to point
to the appropriate extraction directories.

Normally `cargo update` would connect to the network to update all
Git sources but since rust-1.55.0 our cargo has been patched to
skip this when `CARGO_FREEBSD_PORTS_SKIP_GIT_UPDATE` is set in the
environment.

This replaces the old `CARGO_USE_GITHUB`, `CARGO_USE_GITLAB` hacks
where this was done by editing all `Cargo.toml` with sed(1) calls.

Additionally, we try to automatically infer the individiual crate
sub-directories inside the Git sources based on `package.name` in
`Cargo.toml` to remove the need for `CARGO_GIT_SUBDIR`.

USES=cargo also now sets `WRKSRC_crate_$name` for each crate to
point to the crate extraction directories.

PR:		256581
Reviewed by:	jbeich
2021-10-25 10:49:06 +02:00

21 lines
592 B
Awk

# MAINTAINER: rust@FreeBSD.org
#
# Return (index, site, filename, wrksrc, crates) 5-tuples from git URL specs in CARGO_CRATES
END {
split(GIT_SOURCES, git_sources)
for (i = 1; i <= length(git_sources); i++) {
git_source = git_sources[i]
j = index(git_source, "@")
if (j == 0) {
warn("invalid source: %s", git_source)
} else {
crate_source = substr(git_source, j + 1)
crates = substr(git_source, 0, j - 1)
if (split_git_url(git_info, crate_source)) {
printf("%d %s %s %s %s\n", group++, git_info["site"], git_info["filename"], git_info["dir"], crates)
}
}
}
}