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,

Reply via email to