diff --git a/src/dist/component/package.rs b/src/dist/component/package.rs index 9d141f4d94a..a54ec075b91 100644 --- a/src/dist/component/package.rs +++ b/src/dist/component/package.rs @@ -182,9 +182,23 @@ fn unpack_ram( .ok() .and_then(|budget_str| budget_str.parse::().ok()) { - // Note: In future we may want to add a warning or even an override if a user - // supplied budget is larger than effective_max_ram. - Some(budget) => budget, + Some(budget) => { + if budget < minimum_ram { + warn!( + "Specified unpack RAM limit ({}) less than minimum of {}. Unpacking may fail.", + budget, minimum_ram + ); + } + if budget > default_max_unpack_ram { + warn!( + "Specified unpack RAM limit ({}) greater than detected available RAM of {}. Clamping to detected limit.", + budget, default_max_unpack_ram + ); + default_max_unpack_ram + } else { + budget + } + } None => { if let Some(h) = notify_handler { h(Notification::SetDefaultBufferSize(default_max_unpack_ram)) @@ -193,10 +207,11 @@ fn unpack_ram( } }; - if io_chunk_size > unpack_ram { - panic!("RUSTUP_UNPACK_RAM must be larger than {}", io_chunk_size); + if minimum_ram > unpack_ram { + minimum_ram + } else { + unpack_ram } - unpack_ram } /// Handle the async result of io operations