Re: RE: [gps-devel]Problems building gps-1.4.0-academic on FreeBSD 5.1 using gnat 3.15p
Ludovic Brenta <[email protected]> 28 Nov 2003 14:35:00 +0100
| Newsgroups | gmane.comp.ide.gps.devel |
|---|---|
| Message-ID | <[email protected]> |
Arnaud Charlet <[email protected]> writes: > > I downloaded g-heasor.ads and g-heasor.adb from gcc.gnu.org's CVS > > repository and continued the build. > > Right, that's fine. > > > The final error I had was: > > The version of GNAT you are using is apparently misconfigured and/or misbuilt. > > My suggestion would be to use a GCC 3.4 snapshot that contains a more recent > version of GNAT. > > Alternatively, it may be possible to find a work around by tweaking the code > around commands-external.adb:179:57 Alternatively, port the patch I included in the Debian build in GPS 1.2.2. When I made this, I had to patch the upstream sources quite heavily so I could use the latest official release of GNAT by ACT. I'll use your tips about s-casutil.ad[bs] (the point that I reached yesterday) and s-casutil.ad[bs]. Thanks for that. I hope you can move forward with the patch below. -- Ludovic Brenta. --- gnat-gps-1.2.2.orig/kernel/src/commands-external.adb +++ gnat-gps-1.2.2/kernel/src/commands-external.adb @@ -152,10 +152,6 @@ Args : GNAT.OS_Lib.Argument_List (1 .. Length (Command.Args)); Real_Args : GNAT.OS_Lib.Argument_List_Access; - procedure Unchecked_Free is new Ada.Unchecked_Deallocation - (GNAT.OS_Lib.Argument_List, GNAT.OS_Lib.Argument_List_Access); - - Exec_Command_Args : GNAT.OS_Lib.Argument_List_Access; Temp_Args : List_Node := First (Command.Args); Old_Dir : constant Dir_Name_Str := Get_Current_Dir; @@ -190,35 +186,39 @@ -- commands should not be system-dependant if Host = Windows then - Exec_Command_Args := - GNAT.OS_Lib.Argument_String_To_List (Exec_Command); - - Real_Args := new GNAT.OS_Lib.Argument_List (1 .. 1); - - Real_Args (1) := new String'(Command.Command.all); - - Non_Blocking_Spawn - (Command.Fd, - Exec_Command_Args (Exec_Command_Args'First).all, - Exec_Command_Args - (Exec_Command_Args'First + 1 .. Exec_Command_Args'Last) - & Real_Args.all - & Args, - Err_To_Out => True, - Buffer_Size => 0); - - for J in Real_Args'Range loop - GNAT.OS_Lib.Free (Real_Args (J)); - end loop; - - Unchecked_Free (Real_Args); - - for J in Exec_Command_Args'Range loop - GNAT.OS_Lib.Free (Exec_Command_Args (J)); - end loop; - - Unchecked_Free (Exec_Command_Args); + declare + procedure Unchecked_Free is new Ada.Unchecked_Deallocation + (GNAT.OS_Lib.Argument_List, GNAT.OS_Lib.Argument_List_Access); + Exec_Command_Args : GNAT.OS_Lib.Argument_List_Access := + GNAT.OS_Lib.Argument_String_To_List (Exec_Command); + use type GNAT.OS_Lib.String_List; + begin + Real_Args := new GNAT.OS_Lib.Argument_List (1 .. 1); + + Real_Args (1) := new String'(Command.Command.all); + + Non_Blocking_Spawn + (Command.Fd, + Exec_Command_Args (Exec_Command_Args'First).all, + Exec_Command_Args + (Exec_Command_Args'First + 1 .. Exec_Command_Args'Last) + & Real_Args.all + & Args, + Err_To_Out => True, + Buffer_Size => 0); + + for J in Real_Args'Range loop + GNAT.OS_Lib.Free (Real_Args (J)); + end loop; + + Unchecked_Free (Real_Args); + + for J in Exec_Command_Args'Range loop + GNAT.OS_Lib.Free (Exec_Command_Args (J)); + end loop; + Unchecked_Free (Exec_Command_Args); + end; else Non_Blocking_Spawn (Command.Fd,