If there was an unknown attribute (such as IDE'Gnat) in any member project of an aggregate project, then gprbuild fails if it is invoked on the aggregate project.
Tested on x86_64-pc-linux-gnu, committed on trunk 2011-10-13 Vincent Celier <cel...@adacore.com> * prj-conf.adb (Get_Or_Create_Configuration_File): Call Process_Project_Tree_Phase_1 with Packages_To_Check. (Process_Project_And_Apply_Config): Ditto * prj-part.ads, prj-part.adb, prj-pars.ads, prj-pars.adb (Parse): Remove default for argument Packages_To_Check. * prj-proc.adb (Recursive_Process): New argument Packages_To_Check. (Process): Ditto. (Process_Project_Tree_Phase_1): Ditto. (Recursive_Project.Process_Aggregated_Projects): Call Prj.Part.Parse and Process_Project_Tree_Phase_1 with Packages_To_Check. * prj-proc.ads (Process): New argument Packages_To_Check (Process_Project_Tree_Phase_1): Ditto
Index: prj-proc.adb =================================================================== --- prj-proc.adb (revision 179894) +++ prj-proc.adb (working copy) @@ -145,6 +145,7 @@ procedure Recursive_Process (In_Tree : Project_Tree_Ref; Project : out Project_Id; + Packages_To_Check : String_List_Access; From_Project_Node : Project_Node_Id; From_Project_Node_Tree : Project_Node_Tree_Ref; Env : in out Prj.Tree.Environment; @@ -1347,6 +1348,7 @@ procedure Process (In_Tree : Project_Tree_Ref; Project : out Project_Id; + Packages_To_Check : String_List_Access; Success : out Boolean; From_Project_Node : Project_Node_Id; From_Project_Node_Tree : Project_Node_Tree_Ref; @@ -1361,6 +1363,7 @@ From_Project_Node => From_Project_Node, From_Project_Node_Tree => From_Project_Node_Tree, Env => Env, + Packages_To_Check => Packages_To_Check, Reset_Tree => Reset_Tree); if Project_Qualifier_Of @@ -2325,6 +2328,7 @@ procedure Process_Project_Tree_Phase_1 (In_Tree : Project_Tree_Ref; Project : out Project_Id; + Packages_To_Check : String_List_Access; Success : out Boolean; From_Project_Node : Project_Node_Id; From_Project_Node_Tree : Project_Node_Tree_Ref; @@ -2349,6 +2353,7 @@ Recursive_Process (Project => Project, In_Tree => In_Tree, + Packages_To_Check => Packages_To_Check, From_Project_Node => From_Project_Node, From_Project_Node_Tree => From_Project_Node_Tree, Env => Env, @@ -2482,6 +2487,7 @@ procedure Recursive_Process (In_Tree : Project_Tree_Ref; Project : out Project_Id; + Packages_To_Check : String_List_Access; From_Project_Node : Project_Node_Id; From_Project_Node_Tree : Project_Node_Tree_Ref; Env : in out Prj.Tree.Environment; @@ -2539,6 +2545,7 @@ Recursive_Process (In_Tree => In_Tree, Project => New_Project, + Packages_To_Check => Packages_To_Check, From_Project_Node => Project_Node_Of (With_Clause, From_Project_Node_Tree), @@ -2596,6 +2603,7 @@ Prj.Part.Parse (In_Tree => From_Project_Node_Tree, Project => Loaded_Project, + Packages_To_Check => Packages_To_Check, Project_File_Name => Get_Name_String (List.Path), Errout_Handling => Prj.Part.Never_Finalize, Current_Directory => Get_Name_String (Project.Directory.Name), @@ -2627,6 +2635,7 @@ Process_Project_Tree_Phase_1 (In_Tree => Tree, Project => List.Project, + Packages_To_Check => Packages_To_Check, Success => Success, From_Project_Node => Loaded_Project, From_Project_Node_Tree => From_Project_Node_Tree, @@ -2638,6 +2647,7 @@ Process_Project_Tree_Phase_1 (In_Tree => Tree, Project => List.Project, + Packages_To_Check => Packages_To_Check, Success => Success, From_Project_Node => Loaded_Project, From_Project_Node_Tree => From_Project_Node_Tree, @@ -2859,6 +2869,7 @@ Recursive_Process (In_Tree => In_Tree, Project => Project.Extends, + Packages_To_Check => Packages_To_Check, From_Project_Node => Extended_Project_Of (Declaration_Node, From_Project_Node_Tree), From_Project_Node_Tree => From_Project_Node_Tree, Index: prj-proc.ads =================================================================== --- prj-proc.ads (revision 179894) +++ prj-proc.ads (working copy) @@ -34,6 +34,7 @@ procedure Process_Project_Tree_Phase_1 (In_Tree : Project_Tree_Ref; Project : out Project_Id; + Packages_To_Check : String_List_Access; Success : out Boolean; From_Project_Node : Project_Node_Id; From_Project_Node_Tree : Project_Node_Tree_Ref; @@ -68,6 +69,7 @@ procedure Process (In_Tree : Project_Tree_Ref; Project : out Project_Id; + Packages_To_Check : String_List_Access; Success : out Boolean; From_Project_Node : Project_Node_Id; From_Project_Node_Tree : Project_Node_Tree_Ref; Index: prj-part.adb =================================================================== --- prj-part.adb (revision 179894) +++ prj-part.adb (working copy) @@ -443,7 +443,7 @@ Project : out Project_Node_Id; Project_File_Name : String; Errout_Handling : Errout_Mode := Always_Finalize; - Packages_To_Check : String_List_Access := All_Packages; + Packages_To_Check : String_List_Access; Store_Comments : Boolean := False; Current_Directory : String := ""; Is_Config_File : Boolean; Index: prj-part.ads =================================================================== --- prj-part.ads (revision 179894) +++ prj-part.ads (working copy) @@ -42,7 +42,7 @@ Project : out Project_Node_Id; Project_File_Name : String; Errout_Handling : Errout_Mode := Always_Finalize; - Packages_To_Check : String_List_Access := All_Packages; + Packages_To_Check : String_List_Access; Store_Comments : Boolean := False; Current_Directory : String := ""; Is_Config_File : Boolean; Index: prj-pars.adb =================================================================== --- prj-pars.adb (revision 179894) +++ prj-pars.adb (working copy) @@ -43,7 +43,7 @@ (In_Tree : Project_Tree_Ref; Project : out Project_Id; Project_File_Name : String; - Packages_To_Check : String_List_Access := All_Packages; + Packages_To_Check : String_List_Access; Reset_Tree : Boolean := True; In_Node_Tree : Prj.Tree.Project_Node_Tree_Ref := null; Env : in out Prj.Tree.Environment) Index: prj-pars.ads =================================================================== --- prj-pars.ads (revision 179894) +++ prj-pars.ads (working copy) @@ -36,7 +36,7 @@ (In_Tree : Project_Tree_Ref; Project : out Project_Id; Project_File_Name : String; - Packages_To_Check : String_List_Access := All_Packages; + Packages_To_Check : String_List_Access; Reset_Tree : Boolean := True; In_Node_Tree : Prj.Tree.Project_Node_Tree_Ref := null; Env : in out Prj.Tree.Environment); Index: prj-conf.adb =================================================================== --- prj-conf.adb (revision 179894) +++ prj-conf.adb (working copy) @@ -1324,6 +1324,7 @@ Prj.Proc.Process_Project_Tree_Phase_1 (In_Tree => Project_Tree, Project => Config, + Packages_To_Check => Packages_To_Check, Success => Success, From_Project_Node => Config_Project_Node, From_Project_Node_Tree => Project_Node_Tree, @@ -1465,6 +1466,7 @@ Process_Project_Tree_Phase_1 (In_Tree => Project_Tree, Project => Main_Project, + Packages_To_Check => Packages_To_Check, Success => Success, From_Project_Node => User_Project_Node, From_Project_Node_Tree => Project_Node_Tree,