@@ -459,9 +459,7 @@ def install_boards_local_txt(core_fqbn, boards_local_txt):
459459    try :
460460        local_app_data_dir  =  os .environ .get ('HOME' , '' )
461461        data_dir  =  None 
462-         if  os .path .exists (os .path .join (local_app_data_dir , 'Arduino' )):
463-             data_dir  =  os .path .join (local_app_data_dir , 'Arduino' )
464-         elif  os .path .exists (os .path .join (local_app_data_dir , '.arduino15' )):
462+         if  os .path .exists (os .path .join (local_app_data_dir , '.arduino15' )):
465463            data_dir  =  os .path .join (local_app_data_dir , '.arduino15' )
466464        elif  os .path .exists (os .path .join (local_app_data_dir , '.arduino' )):
467465            data_dir  =  os .path .join (local_app_data_dir , '.arduino' )
@@ -476,10 +474,13 @@ def install_boards_local_txt(core_fqbn, boards_local_txt):
476474        ColorPrint .print_info (f"Using arduino-cli config: { config_output .strip ()}  " )
477475
478476        # Extract data directory, with fallback to default 
479-         data_dir  =  config .get ("directories" , {}).get ("data" , data_dir )
477+         data_dir  =  config .get ("directories" , {}).get ("data" , "" )
480478        if  not  data_dir :
481-             ColorPrint .print_warn ("No valid data directory found, cannot copy boards.local.txt" )
482-             return 
479+             if  os .path .exists (os .path .join (local_app_data_dir , 'Arduino' )):
480+                 data_dir  =  os .path .join (local_app_data_dir , 'Arduino' )
481+             else :
482+                 ColorPrint .print_warn ("No valid data directory found, cannot copy boards.local.txt" )
483+                 return 
483484
484485        ColorPrint .print_info (f"Using data directory: { data_dir }  " )
485486
@@ -501,8 +502,7 @@ def install_boards_local_txt(core_fqbn, boards_local_txt):
501502            os .path .exists (os .path .join (data_dir , "packages" , architecture , "hardware" , architecture )) else  \
502503            os .path .join (data_dir , "hardware" , vendor , architecture ) if  \
503504            os .path .exists (os .path .join (data_dir , "hardware" , vendor , architecture )) else  \
504-             os .path .join (data_dir , "hardware" ,
505-                             architecture , architecture )
505+             os .path .join (data_dir , "hardware" , architecture , architecture )
506506
507507        # Find the latest version directory 
508508        if  os .path .exists (platform_base ):
@@ -511,9 +511,10 @@ def install_boards_local_txt(core_fqbn, boards_local_txt):
511511                ColorPrint .print_info (f"Copied boards.local.txt to { os .path .join (platform_base , 'boards.local.txt' )}  " )
512512            else :
513513                versions  =  [d  for  d  in  os .listdir (platform_base ) if  os .path .isdir (os .path .join (platform_base , d ))]
514-                 ColorPrint .print_info (f"Found versions:  { versions }  " )
514+                 ColorPrint .print_info (f"Found subdirectories for  { platform_base } : \n  { versions }  " )
515515                # Filter out non-version directories (e.g., 'tools', 'libraries') while supporting 1.0-dev 1.0.0-offline-mode.102 etc 
516516                versions  =  [v  for  v  in  versions  if  re .match (r'^(v)?\d+\.\d+(\.\d+(-\w+)?)?(\.\d+)?$' , v )]
517+                 ColorPrint .print_info (f"Filtered versions: { versions }  " )
517518                if  versions :
518519                    # Sort versions and take the latest (could be improved with proper version sorting) 
519520                    latest_version  =  sorted (versions )[- 1 ]
0 commit comments