From b5feb0d9cb323acc1aea9a3ba5069d992adb559a Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 9 Oct 2025 13:34:30 +0700 Subject: [PATCH] Set cargo offline flags when offline cookbook is set --- src/bin/cook.rs | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/bin/cook.rs b/src/bin/cook.rs index 5c9fc95ab..45787cc0c 100644 --- a/src/bin/cook.rs +++ b/src/bin/cook.rs @@ -750,6 +750,7 @@ fn build( target_dir: &Path, name: &PackageName, recipe: &Recipe, + offline_mode: bool, check_source: bool, ) -> Result<(PathBuf, BTreeSet), String> { let sysroot_dir = target_dir.join("sysroot"); @@ -889,6 +890,7 @@ export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" build_type=release install_flags= build_flags=--release +offline_flags= if [ ! -z "${COOKBOOK_DEBUG}" ] then install_flags=--debug @@ -898,6 +900,11 @@ then export CPPFLAGS="${CPPFLAGS} -g" fi +if [ ! -z "${COOKBOOK_OFFLINE}" ] +then +offline_flags=--offline +fi + # cargo template COOKBOOK_CARGO="${COOKBOOK_REDOXER}" function cookbook_cargo { @@ -907,6 +914,7 @@ function cookbook_cargo { --locked \ --no-track \ ${install_flags} \ + ${offline_flags} \ -j "${COOKBOOK_MAKE_JOBS}" "$@" } @@ -918,7 +926,7 @@ function cookbook_cargo_examples { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --example "${example}" \ - ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" + ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/examples/${example}" \ @@ -934,7 +942,7 @@ function cookbook_cargo_packages { "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \ --package "${package}" \ - ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" + ${build_flags} ${offline_flags} -j "${COOKBOOK_MAKE_JOBS}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/${build_type}/${package}" \ @@ -1187,6 +1195,9 @@ done command.env("COOKBOOK_STAGE", &cookbook_stage); command.env("COOKBOOK_SOURCE", &cookbook_source); command.env("COOKBOOK_SYSROOT", &cookbook_sysroot); + if offline_mode { + command.env("COOKBOOK_OFFLINE", "1"); + } command }; @@ -1363,9 +1374,16 @@ fn cook( let target_dir = create_target_dir(recipe_dir)?; - let (stage_dir, auto_deps) = - build(recipe_dir, &source_dir, &target_dir, name, recipe, !is_deps) - .map_err(|err| format!("failed to build: {}", err))?; + let (stage_dir, auto_deps) = build( + recipe_dir, + &source_dir, + &target_dir, + name, + recipe, + is_offline, + !is_deps, + ) + .map_err(|err| format!("failed to build: {}", err))?; let _package_file = package(&stage_dir, &target_dir, name, recipe, &auto_deps) .map_err(|err| format!("failed to package: {}", err))?;