Skip to content

Commit 80ac16c

Browse files
authored
Try #994: --target cross
2 parents 7b04b6d + 33d16d9 commit 80ac16c

File tree

4 files changed

+34
-14
lines changed

4 files changed

+34
-14
lines changed

.changes/994.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "fixed",
3+
"description": "fixed wrong path used for target when pre-building in container in container mode",
4+
"issues": [993]
5+
}

ci/test-cross-image.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@ git clone --depth 1 https://github.com/cross-rs/rust-cpp-hello-word "${td}"
3535
cd "${td}"
3636
cross run --target "${TARGET}"
3737
'
38+
td="$(mkcargotemp -d)"
39+
git clone --depth 1 https://github.com/cross-rs/rust-cpp-hello-word "${td}"
40+
cd "${td}"
41+
echo '# Cross.toml
42+
[target.'${TARGET}']
43+
pre-build = ["exit 0"]
44+
' > Cross.toml
45+
docker run --rm -e TARGET -e CROSS_CONTAINER_IN_CONTAINER=1 -e "CROSS_TARGET_${TARGET_UPPER//-/_}_IMAGE" \
46+
-v /var/run/docker.sock:/var/run/docker.sock \
47+
-v $PWD:/mount -w /mount \
48+
"${CROSS_TARGET_CROSS_IMAGE}" cross build --target "${TARGET}"
3849
}
3950

4051
main "${@}"

ci/test-docker-in-docker.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ ci_dir=$(realpath "${ci_dir}")
2323
. "${ci_dir}"/shared.sh
2424

2525
main() {
26-
docker run -v "${PROJECT_HOME}":"${PROJECT_HOME}" -w "${PROJECT_HOME}" \
27-
--rm -e TARGET -e RUSTFLAGS -e RUST_TEST_THREADS \
26+
docker run --platform linux/amd64 -v "${PROJECT_HOME}":"${PROJECT_HOME}" -w "${PROJECT_HOME}" \
27+
--rm -e TARGET -e TARGET_UPPER -e RUSTFLAGS -e RUST_TEST_THREADS \
2828
-e LLVM_PROFILE_FILE -e CARGO_INCREMENTAL \
2929
-e "CROSS_TARGET_${TARGET_UPPER//-/_}_IMAGE" \
3030
-v /var/run/docker.sock:/var/run/docker.sock \
@@ -55,10 +55,14 @@ git clone --depth 1 https://github.com/cross-rs/test-workspace "${td}"
5555
cd "${td}"
5656
cross build --target "${TARGET}" --workspace \
5757
--manifest-path="./workspace/Cargo.toml" --verbose
58+
eval CROSS_TARGET_${TARGET_UPPER//-/_}_PRE_BUILD="exit" cross build --target "${TARGET}" --workspace \
59+
--manifest-path="./workspace/Cargo.toml" --verbose
5860
cd workspace
5961
cross build --target "${TARGET}" --workspace --verbose
62+
eval CROSS_TARGET_${TARGET_UPPER//-/_}_PRE_BUILD="exit" cross build --target "${TARGET}" --workspace --verbose
6063
cd binary
6164
cross run --target "${TARGET}" --verbose
65+
eval CROSS_TARGET_${TARGET_UPPER//-/_}_PRE_BUILD="exit" cross run --target "${TARGET}" --verbose
6266
'
6367
}
6468

src/docker/shared.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,12 @@ pub struct DockerPaths {
196196
impl DockerPaths {
197197
pub fn create(
198198
engine: &Engine,
199-
metadata: CargoMetadata,
199+
mut metadata: CargoMetadata,
200200
cwd: PathBuf,
201201
toolchain: QualifiedToolchain,
202202
) -> Result<Self> {
203203
let mount_finder = MountFinder::create(engine)?;
204-
let directories = Directories::create(&mount_finder, &metadata, &cwd, toolchain)?;
204+
let directories = Directories::create(&mount_finder, &mut metadata, &cwd, toolchain)?;
205205
Ok(Self {
206206
mount_finder,
207207
metadata,
@@ -261,7 +261,7 @@ pub struct Directories {
261261
impl Directories {
262262
pub fn create(
263263
mount_finder: &MountFinder,
264-
metadata: &CargoMetadata,
264+
metadata: &mut CargoMetadata,
265265
cwd: &Path,
266266
mut toolchain: QualifiedToolchain,
267267
) -> Result<Self> {
@@ -313,7 +313,7 @@ impl Directories {
313313

314314
let cargo = mount_finder.find_mount_path(cargo);
315315
let xargo = mount_finder.find_mount_path(xargo);
316-
let target = mount_finder.find_mount_path(target);
316+
metadata.target_directory = mount_finder.find_mount_path(target);
317317

318318
// root is either workspace_root, or, if we're outside the workspace root, the current directory
319319
let host_root = mount_finder.find_mount_path(if metadata.workspace_root.starts_with(cwd) {
@@ -335,7 +335,7 @@ impl Directories {
335335
Ok(Directories {
336336
cargo,
337337
xargo,
338-
target,
338+
target: metadata.target_directory.clone(),
339339
nix_store,
340340
host_root,
341341
mount_root,
@@ -423,11 +423,11 @@ pub fn get_package_info(
423423
toolchain: QualifiedToolchain,
424424
msg_info: &mut MessageInfo,
425425
) -> Result<(CargoMetadata, Directories)> {
426-
let metadata = cargo_metadata_with_args(None, None, msg_info)?
426+
let mut metadata = cargo_metadata_with_args(None, None, msg_info)?
427427
.ok_or(eyre::eyre!("unable to get project metadata"))?;
428428
let mount_finder = MountFinder::create(engine)?;
429429
let cwd = std::env::current_dir()?;
430-
let dirs = Directories::create(&mount_finder, &metadata, &cwd, toolchain)?;
430+
let dirs = Directories::create(&mount_finder, &mut metadata, &cwd, toolchain)?;
431431

432432
Ok((metadata, dirs))
433433
}
@@ -1114,7 +1114,7 @@ mod tests {
11141114
}
11151115

11161116
fn get_directories(
1117-
metadata: &CargoMetadata,
1117+
metadata: &mut CargoMetadata,
11181118
mount_finder: &MountFinder,
11191119
) -> Result<Directories> {
11201120
let cwd = get_cwd()?;
@@ -1133,8 +1133,8 @@ mod tests {
11331133
fn test_host() -> Result<()> {
11341134
let vars = unset_env();
11351135
let mount_finder = MountFinder::new(vec![]);
1136-
let metadata = cargo_metadata(false, &mut MessageInfo::default())?;
1137-
let directories = get_directories(&metadata, &mount_finder)?;
1136+
let mut metadata = cargo_metadata(false, &mut MessageInfo::default())?;
1137+
let directories = get_directories(&mut metadata, &mount_finder)?;
11381138
paths_equal(&directories.cargo, &home()?.join(".cargo"))?;
11391139
paths_equal(&directories.xargo, &home()?.join(".xargo"))?;
11401140
paths_equal(&directories.host_root, &metadata.workspace_root)?;
@@ -1178,8 +1178,8 @@ mod tests {
11781178
}
11791179

11801180
let mount_finder = MountFinder::create(&engine)?;
1181-
let metadata = cargo_metadata(true, &mut msg_info)?;
1182-
let directories = get_directories(&metadata, &mount_finder)?;
1181+
let mut metadata = cargo_metadata(true, &mut msg_info)?;
1182+
let directories = get_directories(&mut metadata, &mount_finder)?;
11831183
let mount_finder = MountFinder::new(docker_read_mount_paths(&engine)?);
11841184
let mount_path = |p| mount_finder.find_mount_path(p);
11851185

0 commit comments

Comments
 (0)