@@ -195,6 +195,32 @@ class PkgOptResolver {
195195 } ;
196196
197197 const logFail = ( msg : string ) : void => {
198+ // Skip warning if failure is due to platform/architecture mismatch
199+ // Check using os/cpu from lockfile metadata (saved when platform check originally failed)
200+ const metaJson = data . meta . versions [ version ] ;
201+ if ( metaJson ) {
202+ const OPT_FAILED_PLATFORM = 3 ;
203+ if ( metaJson . optFailed === OPT_FAILED_PLATFORM ) {
204+ // Platform mismatch recorded in lockfile
205+ return ;
206+ }
207+ // Check if package has os/cpu requirements that don't match current platform
208+ // This works even when optFailed is set in lockfile, as os/cpu are saved there
209+ const platformCheck = fyntil . checkPkgOsCpu ( metaJson ) ;
210+ if ( platformCheck !== true ) {
211+ // Platform/arch mismatch - skip warning, already logged as verbose
212+ return ;
213+ }
214+ // Also check if error message indicates platform mismatch
215+ if (
216+ msg . includes ( "platform" ) ||
217+ msg . includes ( "architecture" ) ||
218+ msg . includes ( "cpu/arch" ) ||
219+ msg . includes ( "doesn't satisfy required" )
220+ ) {
221+ return ;
222+ }
223+ }
198224 logger . warn ( chalk . yellow ( `optional dep check failed` ) , displayId , chalk . yellow ( `- ${ msg } ` ) ) ;
199225 logger . info (
200226 chalk . green ( ` you may ignore this since it is optional but some features may be missing` )
@@ -224,6 +250,20 @@ class PkgOptResolver {
224250 }
225251
226252 if ( ! this . _fyn . refreshOptionals && _ . get ( data , [ "meta" , "versions" , version , "optFailed" ] ) ) {
253+ // Check if this is a platform mismatch before logging warning
254+ const metaJson = data . meta . versions [ version ] ;
255+ if ( metaJson ) {
256+ const platformCheck = fyntil . checkPkgOsCpu ( metaJson ) ;
257+ if ( platformCheck !== true ) {
258+ // Platform/arch mismatch - skip warning, already logged as verbose
259+ const rx = {
260+ passed : false ,
261+ err : new Error ( "optional dep fail by flag optFailed in lockfile - platform mismatch" )
262+ } ;
263+ addChecked ( rx ) ;
264+ return processCheckResult ( Promise . resolve ( rx ) ) ;
265+ }
266+ }
227267 logFail ( "by flag optFailed in lockfile" ) ;
228268 const rx = {
229269 passed : false ,
0 commit comments