|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ S T ┃
Length: 31854 (0x7c6e) Types: TextFile Names: »STEPS«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2 └─ ⟦77aa8350c⟧ »DATA« └─⟦this⟧
AUTHORIZATION_CHECK => ( declare subtype Bogus is Natural range 0 .. 1; package Pp is new Parameter_Parser (Bogus); Iter : Pp.Iterator := Pp.Parse ("CMVC, CMVC.Source_Control,Motorola_68k,MC68020_OS2000"); Token_Iter : Pp.Iterator := Pp.Parse ("MC68020_OS2000"); Error : Natural := 0; function Product_Name (Iter : Pp.Iterator) return String is begin if String_Utilities.Equal (Pp.Name (Iter), "NAME") then return Pp.Get_Image (Iter); else return Pp.Name (Iter); end if; end Product_Name; begin while not Pp.Done (Iter) loop declare Name : constant String := Product_Name (Iter); begin if "!Implementation".Product_Authorization.Is_Registered (Name) then Log.Put_Line (Name & " is authorized", Profile.Positive_Msg); else Log.Put_Line ("Need to Authorize " & Name, Profile.Error_Msg); Error := Error + 1; end if; end; Pp.Next (Iter); end loop; if Error /= 0 then Log.Put_Line ("Do not proceed until all these products have been authorized", Profile.Error_Msg); end if; if Get_Site /= "" and then not Pp.Done (Token_Iter) then Error := 0; Log.Put_Line ("Checking Token Count"); declare Limit, Current, Buy_Out : Natural; begin while not Pp.Done (Token_Iter) loop "!Machine.Release.Archive.MC68020_OS2000.Release7_2_2.Command_Data". Token_Information (Product_Name (Token_Iter), Limit, Buy_Out, Current); if Limit = 0 then Error := Error + 1; Log.Put_Line ("No tokens (sessions) for " & Product_Name (Token_Iter) & " have been authorized. Do not proceed until you have authorized tokens for this product", Profile.Error_Msg); elsif (Buy_Out /= Current) and Current = Limit then Log.Put_Line ("Tokens (Sessions) have been authorized for " & Product_Name (Token_Iter) & ", but all are in use", Profile.Error_Msg); Log.Put_Line ("Have users which are using these tokens log off (and then back on) before continuing", Profile.Error_Msg); Show_Tokens (Product_Filter => Product_Name (Token_Iter)); else Log.Put_Line (Product_Name (Token_Iter) & " has available tokens", Profile.Positive_Msg); end if; Pp.Next (Token_Iter); end loop; end; else Log.Put_Line ("Machine has not been configured for per session pricing (product tokens)." & " Skipping product token check"); end if; end; ) USERS_CHECK => ( declare Iter : System_Utilities.Session_Iterator; Total : Natural := 0; use System_Utilities; begin Operator.Limit_Login (Sessions => 1); Log.Put_Line ("Limited logins to 1 user", Profile.Positive_Msg); Init (Iter); while not Done (Iter) loop if Value (Iter) /= Get_Session then Log.Put_Line ("User " & User_Name (Value (Iter)) & " is still logged in. Have s/he log off before proceeding", Profile.Warning_Msg); end if; Next (Iter); end loop; end; ) LOAD_EEDB => ( declare Eedb_Config_Cmds : constant String := "!Machine.Temporary.EEDB_Config_CMDS"; Eedb_Config_Display : constant String := "!Machine.Temporary.EEDB_Config_Display"; Eedb_Config_Output : constant String := "!Machine.Temporary.Eedb_Config_Output"; Temp_Output : constant String := "!Machine.Temporary.Eedb_Temp_Output"; function Get_Version (Subsystem : String) return Natural is Eedb_Configuration : constant String := "!Machine.Temporary.EEDB_Configuration"; Eedb_Commands : constant String := "!Machine.Temporary.EEDB_Commands"; procedure Gen_Config_File is Fin, Fcmds : Io.File_Type; begin Io.Create (Fcmds, Name => Eedb_Commands); Io.Put_Line (Fcmds, "set_verbosity configuration all_code_segments false"); Io.Put_Line (Fcmds, "set_verbosity configuration date false"); Io.Put_Line (Fcmds, "set_verbosity configuration elab_code_segment false"); Io.Put_Line (Fcmds, "set_verbosity configuration library true"); Io.Put_Line (Fcmds, "set_verbosity configuration module_key false"); Io.Put_Line (Fcmds, "set_verbosity configuration name false"); Io.Put_Line (Fcmds, "set_verbosity configuration subsystem_dependencies false"); Io.Put_Line (Fcmds, "set_verbosity configuration user false"); Io.Put_Line (Fcmds, "vd $"); Io.Put (Fcmds, Ascii.Etx); Io.New_Line (Fcmds, 2); Io.Put_Line (Fcmds, "quit"); Io.Reset (Fcmds, Io.In_File); Io.Set_Input (Fcmds); Io.Set_Output (Eedb_Configuration); Operator.Internal_System_Diagnosis; Io.Reset_Output; Io.Reset_Input; end Gen_Config_File; function Extract (S : String) return Natural is Start : Natural := String_Utilities.Locate ('.', S); Stop : Natural := String_Utilities.Locate (':', S); P1 : Natural := String_Utilities.Locate ('.', S (Start + 1 .. Stop - 1)); P2 : Natural := String_Utilities.Locate ('.', S (P1 + 1 .. Stop - 1)); subtype Numeric is Character range '0' .. '9'; begin if Start = 0 or Stop = 0 then return 0; else if not (S (Stop - 1) in Numeric) then Stop := Stop - 1; end if; return (Natural'Value (S (Start + 1 .. P1 - 1)) * 10000) + (Natural'Value (S (P1 + 1 .. P2 - 1)) * 100) + Natural'Value (S (P2 + 1 .. Stop - 1)); end if; end Extract; begin Gen_Config_File; Io.Set_Input (Eedb_Configuration); while not Io.End_Of_File loop declare S1 : constant String := Io.Get_Line; Index : Natural := String_Utilities.Locate (Subsystem & '.', S1); Lib_Index : Natural := String_Utilities.Locate (":LIBRARIES:", S1); begin if Index /= 0 then if Lib_Index = 0 then declare S2 : constant String := String_Utilities.Strip (Io.Get_Line); begin Io.Reset_Input; return Extract (S1 (Index .. S1'Last) & S2); end; else Io.Reset_Input; return Extract (S1 (Index .. S1'Last)); end if; end if; end; end loop; Io.Reset_Input; return 0; end Get_Version; function Subsystem_Present (Name : String) return Boolean is begin Io.Set_Input (Eedb_Config_Output); while not Io.End_Of_File loop declare S : constant String := Io.Get_Line; begin if String_Utilities.Locate (Name, S) /= 0 then Io.Reset_Input; return True; end if; end; end loop; Io.Set_Input (Io.Standard_Input); Io.Set_Output (Io.Standard_Output); Log.Put_Line ("Missing " & Name & " from the Environment configuration", Profile.Error_Msg); return False; end Subsystem_Present; begin declare Need_To_Elaborate : Boolean := False; Cdf_Version : Natural := Get_Version ("Cross_Development"); Cdf_New_Name : constant String := "CDF.Delta"; Need_Cdf_Replacement : Boolean := Cdf_Version < 110100; Cdf_Uprev : Boolean := Cdf_Version > 110100; begin Log.Put_Line ("Processing CDF Environment Subsystem"); Io.Set_Output ("!MACHINE.RELEASE.ARCHIVE.MC68020_OS2000.RELEASE7_2_2.LOGS.Load_EEDB_Log"); Archive.Restore (Options => "promote, replace", Device => "Segments"); Library.Context ("!Machine.Release.Archive.MC68020_OS2000.Release7_2_2.Segments", Response => "<ERRORS>"); if Cdf_Uprev then Log.Put_Line ("Currently elaborated Cross_Development EEDB subsystem is greater than that in this release, nothing will be modified." & "Please see release note for compatible releases of this subsystem.", Profile.Error_Msg); elsif Need_Cdf_Replacement then Need_To_Elaborate := True; Library.Copy ("MLOADS_CDF", "MLOADS"); Program.Run ("""!Machine.Release.Archive.MC68020_OS2000.Release7_2_2.Segments"".Get_Xfer " & "(Xfer_File => ""!Machine.Release.Archive.MC68020_OS2000.Release7_2_2.Segments:CDF"", Verbose => True);", "!Machine.Release.Archive.MC68020_OS2000.Release7_2_2.Segments"); else Log.Put_Line ("Skipping update of Cross_Development subsystem, already set correctly"); end if; Io.Reset_Output; Log.Filter_Errors (Log_File => "!MACHINE.RELEASE.ARCHIVE.MC68020_OS2000.RELEASE7_2_2.LOGS.Load_EEDB_Log", Destination => "!MACHINE.RELEASE.ARCHIVE.MC68020_OS2000.RELEASE7_2_2.LOGS.Load_EEDB_Log_Summary", Auxiliaries => False, Warnings => False, Exceptions => True); if Need_To_Elaborate then Io.Set_Output (Eedb_Config_Cmds); Io.Put_Line ("une $ native_debugger"); if Need_Cdf_Replacement then Io.Put_Line ("replace $ " & Cdf_New_Name); end if; Io.Put_Line ("del cdf" & Ascii.Lf & "build cdf $ cross_development ;" & Ascii.Lf & "elab cdf" & Ascii.Lf & "snap"); Io.Put_Line (Ascii.Lf & Ascii.Etx & Ascii.Lf & "quit"); Io.Reset_Output; Log.Put_Line ("Elaborating the CDF subsystem"); Io.Set_Output (Temp_Output); Io.Set_Input (Eedb_Config_Cmds); Operator.Internal_System_Diagnosis; Io.Reset_Input; Io.Reset_Output; Log.Put_Line ("Checking Configuration"); end if; Common.Definition ("!MACHINE.RELEASE.ARCHIVE.MC68020_OS2000.RELEASE7_2_2.LOGS.Load_EEDB_Log_Summary"); exception when others => Io.Set_Input (Io.Standard_Input); Io.Set_Output (Io.Standard_Output); Log.Put_Line ("Unhandled Exception: " & Debug_Tools.Get_Exception_Name, Profile.Exception_Msg); end; end; ) RELEASE_RESTORE => ( Io.Set_Output ("!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Release_Restore_Log"); Archive.Restore (Options => "promote, replace", Device => "Release"); if Directory_Tools.Object.Is_Ok (The_Objects => Directory_Tools.Naming.Resolution ("Release_Notes.[Data,Index]")) then Archive.Restore (Options => "promote, replace", Device => "Release_Notes"); end if; Io.Reset_Output; Log.Filter_Errors (Log_File => "!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Release_Restore_Log", Destination => "!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Release_Restore_Log_Summary", Auxiliaries => False, Warnings => False, Exceptions => True); Common.Definition ("!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Release_Restore_Log_Summary"); ) INSTALL_PRODUCT => ( Library.Context (To_Be => "!Targets.Implementation.Release_7_2_2", Response => "<ERRORS>"); System_Utilities.Set_Page_Limit (16_000); "!Targets.Implementation.Release_7_2_2".Install_Product; Io.Reset_Output; if not Directory_Tools.Object.Is_Ok (The_Objects => Directory_Tools.Naming.Resolution ("!Machine.Initialization.[Local,Site].Cross_Compiler_Configuration")) then Io.Set_Output ("!Machine.Initialization.Local.Cross_Compiler_Configuration"); Io.Put_Line ("Motorola_68k"); Io.Reset_Output; end if; Log.Filter_Errors (Log_File => "!Targets.Implementation.Release_7_2_2.Install_Log", Destination => "!Targets.Implementation.Release_7_2_2.Install_Log_Summary", Warnings => False, Auxiliaries => False, Exceptions => True); Common.Definition ("!Targets.Implementation.Release_7_2_2.Install_Log_Summary"); ) UPDATE_MODELS => ( -- Library.Context ("!Targets.Implementation.Release_7_2_2", -- Response => "<ERRORS>"); -- "!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.command_data". -- Compute_Recoding -- (For_Unit => -- "_!TARGETS.IMPLEMENTATION.RELEASE_7_2_2.MOTOROLA_68K.MC68020_OS2000.WORLD_LIST", -- Demote_File => "Demote_File", -- Install_File => "Install_File", -- Code_File => "Code_File", -- Freeze_File => "Freeze_File", -- Response => "<PROFILE>"); Library.Context ("!Targets.Implementation.Release_7_2_2.MOTOROLA_68K.MC68020_OS2000", Response => "<ERRORS>"); "!TARGETS.IMPLEMENTATION.RELEASE_7_2_2.MOTOROLA_68K.MC68020_OS2000". Update_Models; ) RESTORE_STATE => ( declare Iter : Directory_Tools.Object.Iterator; J : Program.Job_Id; Status : Program.Condition; use Directory_Tools; procedure Split (Filename : String; Max_Units : Natural := 300) is Fin, Fout : Io.File_Type; File_Number : Natural := 1; Line : Natural := 0; begin begin Io.Open (Fin, Io.In_File, Filename); while not Io.End_Of_File (Fin) loop Io.Create (Fout, Name => Filename & '_' & String_Utilities.Number_To_String (Value => File_Number, Width => 4, Leading => '0')); Line := 1; while not Io.End_Of_File (Fin) and then (Line < Max_Units) loop Line := Line + 1; Io.Put_Line (Fout, Io.Get_Line (Fin)); end loop; File_Number := File_Number + 1; Io.Close (Fout); end loop; Io.Close (Fin); exception when others => Log.Put_Line ("File " & Filename & " is empty", Profile.Warning_Msg); end; end Split; begin Io.Set_Output ("!MACHINE.RELEASE.ARCHIVE.MC68020_OS2000.RELEASE7_2_2.LOGS.Restore_User_State_Log"); Split ("!Targets.Implementation.Release_7_2_2.Install_File"); Iter := Naming.Resolution ("!Targets.Implementation.Release_7_2_2.Install_File_@"); while not Object.Done (Iter) loop Program.Create_Job (S => "Op.Enable_Privileges;Compilation.Promote (Unit =>""_" & Naming.Full_Name (Object.Value (Iter)) & """, Scope => Compilation.Subunits_Too, Goal => Compilation.Installed, Limit => ""<ALL_WORLDS>"", Response => ""<progress>"");", Job => J, Status => Status, Response => "<PROFILE>"); if Program.Started_Successfully (Status) then Log.Put_Line ("Waiting for compilation to complete on " & Naming.Full_Name (Object.Value (Iter)), Profile.Positive_Msg); Program.Wait_For (J); else Log.Put_Line (Simple_Status.Display_Message (Status), Profile.Error_Msg); Log.Put_Line ("Failed to start compilation job for " & Naming.Full_Name (Object.Value (Iter)), Profile.Negative_Msg); end if; Object.Next (Iter); end loop; Split ("!Targets.Implementation.Release_7_2_2.Code_File"); Iter := Naming.Resolution ("!Targets.Implementation.Release_7_2_2.Code_File_@"); while not Object.Done (Iter) loop Program.Create_Job (S => "Op.Enable_Privileges;Compilation.Promote (Unit =>""_" & Naming.Full_Name (Object.Value (Iter)) & """, Scope => Compilation.All_Parts, Goal => Compilation.Coded, Limit => ""<ALL_WORLDS>"", Response => ""<progress>"");", Job => J, Status => Status, Response => "<PROFILE>"); if Program.Started_Successfully (Status) then Log.Put_Line ("Waiting for compilation to complete on " & Naming.Full_Name (Object.Value (Iter)), Profile.Positive_Msg); Program.Wait_For (J); else Log.Put_Line (Simple_Status.Display_Message (Status), Profile.Error_Msg); Log.Put_Line ("Failed to start compilation job for " & Naming.Full_Name (Object.Value (Iter)), Profile.Negative_Msg); end if; Object.Next (Iter); end loop; Library.Freeze (Existing => "_!Targets.Implementation.Release_7_2_2.Freeze_File", Recursive => True, Response => "<progress>"); Io.Reset_Output; Log.Filter_Errors (Log_File => "!Machine.Release.Archive.Mc68020_OS2000.Release7_2_2.Logs.Restore_User_State_Log", Destination => "!Machine.Release.Archive.Mc68020_OS2000.Release7_2_2.Logs.Restore_User_State_Log_Summary", Auxiliaries => False, Warnings => False, Exceptions => True); Common.Definition ("!Machine.Release.Archive.Mc68020_OS2000.Release7_2_2.Logs.Restore_User_State_Log_Summary"); exception when others => Io.Reset_Output; Log.Put_Line ("Unhandled Exception", Profile.Error_Msg); end; ) RESTART_COMPILER => ( M68k.Restart_Compiler (Streams => 1); ) BUILD_PROGRAM_LIBRARIES => ( Io.Set_Output ("!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Build_Program_Libraries_Log"); Program_Library_Maintenance.Build (Worlds => "[_!Targets.Implementation.Release_7_2_2.Motorola_68k.Mc68020_Os2000.World_List]", Atomic => False, Preserve_Unreconstructable_Libraries => True, Options => "", Response => "<PROFILE>"); Io.Reset_Output; Log.Filter_Errors (Log_File => "!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Build_Program_Libraries_Log", Destination => "!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Build_Program_Libraries_Log_Summary", Auxiliaries => False, Warnings => False, Exceptions => True); Common.Definition ("!Machine.Release.Archive.Mc68020_Os2000.Release7_2_2.Logs.Build_Program_Libraries_Log_Summary"); ) ACTIVITY_UPDATE => ( Log.Put_Line ("Updating System Activity to <unknown>"); Activity.Create (The_Activity => "!machine.temporary.activity", Source => Activity.Nil, Mode => Activity.Exact_Copy, Response => "<ERRORS>"); Activity.Add (Subsystem => "!<subsystem>", Load_Value => "<load_view>", Spec_Value => "<spec_view>", The_Activity => "!Machine.Temporary.Activity", Mode => Activity.Exact_Copy, Response => "<ERRORS>"); Activity.Merge (Source => "!Machine.Temporary.Activity", Subsystem => "?", Spec_View => "?", Load_View => "?", Mode => Activity.Exact_Copy, Target => "!Machine.Release.Current.Activity", Response => "<ERRORS>"); Lib.Delete (Existing => "!Machine.Temporary.Activity", Limit => "<DIRECTORIES>", Response => "<ERRORS>"); ) FIXUP_INITIALIZATION => ( Log.Put_Line ("Destroying !Machine.Initialize_Cross_Compilers", Profile.Positive_Msg); Compilation.Destroy (Unit => "!MACHINE.INITIALIZE_CROSS_COMPILERS'C(ADA)", Threshold => 2, Limit => "<WORLDS>", Response => "<ERRORS>"); Log.Put_Line ("Moving CROSS_COMPILERS to !Machine.Initialization.Local", Profile.Positive_Msg); Library.Move (From => "!Machine.Cross_Compilers", To => "!Machine.Initialization.Local.Cross_Compiler_Configuration", Recursive => True, Response => "<ERRORS>", Copy_Links => True, Options => ""); Common.Definition ("!Machine.Initialization.Local.Cross_Compiler_Configuration"); ) RESTORE_LOGINS => ( Operator.Limit_Login; Operator.Show_Login_Limit; ) TEST_RESTORE => ( declare type Ptr_String is access String; Machine, RDirectory : Ptr_String; function Get_Line (Prompt : String; Min_Length : Natural := 1) return String is S : String (1 .. 80); Last : Natural := 0; begin loop Io.Put (Prompt); Io.Get_Line (S, Last); exit when Last >= Min_Length; Io.Put_Line ("ERROR: Must enter a value with" & Natural'Image (Min_Length) & " characters"); end loop; return (S (1 .. Last)); end Get_Line; begin Machine := new String'(String_Utilities.Upper_Case (Get_Line ("Enter Remote Target Machine Name : ", 1))); if Machine.all = String_Utilities.Upper_Case (Transport_Name.Host_Id_To_Host (Transport_Name.Host_To_Host_Id (Machine.all))) then Log.Put_Line ("Resolved " & Machine.all & " successfully"); else Log.Put_Line ("Resolved " & Machine.all & " successfully"); Log.Put_Line (Transport_Name.Host_Id_To_Host (Transport_Name.Host_To_Host_Id (Machine.all)) & " is also defined to use the same IP Address/Port", Profile.Warning_Msg); end if; RDirectory := new String'(Get_Line ("Enter Remote Directory Name (example /h0/USR/SMSE) : ", 1)); Log.Put_Line ("Restoring Test Data"); Io.Set_Output ("!Machine.Release.Archive.Mc68020_OS2000.Release7_2_2.Logs.Restore_Tests_Log"); Compilation.Destroy (Unit => "!TESTS.STAGING.INSTALL_VERIFICATIONS.MC68020_OS2000", Threshold => 90, Limit => "<WORLDS>", Response => ""); Archive.Restore (Options => "Promote, Replace", Device => "Tests"); Switches.Set (Spec => "Ftp.Remote_Machine:=""" & Machine.all & """" & ";Ftp.Remote_Directory:=""" & RDirectory.all & """", File => "!TESTS.STAGING.INSTALL_VERIFICATIONS.MC68020_OS2000.SWITCHES", Response => "<ERRORS>"); Compilation.Make (Unit => "!TESTS.STAGING.INSTALL_VERIFICATIONS.MC68020_OS2000.Hello", Scope => Compilation.Load_Views, Goal => Compilation.Coded, Limit => "<ALL_WORLDS>", Effort_Only => False, Response => "<PROFILE>"); Convert (Old_Module => "!Tests.Staging.Install_Verifications.Mc68020_Os2000.Hello.<EXE>", Old_Format => "RATIONAL", New_Module => "!Tests.Staging.Install_Verifications.Mc68020_Os2000.Hello.<OS2000>", New_Format => "<DEFAULT>", Options => "", Response => "<ERRORS>"); Library.Context ("!Tests.Staging.Install_Verifications.Mc68020_OS2000"); Os2000_Put (From_Local_File => "!Tests.Staging.Install_Verifications.Mc68020_OS2000.Hello.<OS2000>", To_Remote_File => "hello", Remote_Machine => "<DEFAULT>", Remote_Directory => "<DEFAULT>", Transliterate => False, Response => "<PROFILE>"); Io.Reset_Output; Log.Filter_Errors (Log_File => "!Machine.Release.Archive.Mc68020_OS2000.Release7_2_2.Logs.Restore_Tests_Log", Destination => "!Machine.Release.Archive.Mc68020_OS2000.Release7_2_2.Logs.Restore_Tests_Log_Summary", Auxiliaries => False, Warnings => False, Exceptions => True); Common.Definition("!Tests.Staging.Install_Verifications.Mc68020_OS2000"); Common.Definition ("!Machine.Release.Archive.Mc68020_OS2000.Release7_2_2.Logs.Restore_Tests_Log_Summary"); exception when Transport_Name.Undefined => Log.Put_Line ("Cannot resolve the machine name, please enter this into the Transport_Name_Map and rerun this step", Profile.Error_Msg); end; ) DOWNLOAD => ( Library.Context (To_Be => "!TESTS.STAGING.INSTALL_VERIFICATIONS.MC68020_OS2000", Response => "<ERRORS>"); Os2000_Put (From_Local_File => "!TESTS.STAGING.INSTALL_VERIFICATIONS.MC68020_OS2000.HELLO.<OS2000>", To_Remote_File => "Hello", Remote_Machine => "<DEFAULT>", Remote_Directory => "<DEFAULT>", Transliterate => False, Response => "<PROFILE>"); Common.Definition ("!Tests.Staging.Install_Verifications.Mc68020_Os2000"); ) RECORD_INSTALLATION => ( declare Product : constant String := Directory_Tools.Naming.Simple_Name (Directory_Tools.Naming.Full_Name ("^")); Release : constant String := Directory_Tools.Naming.Simple_Name (Directory_Tools.Naming.Full_Name ("$")); Product_Info : constant String := "(RELEASE => " & Release & ", DATE => (" & Time_Utilities.Image (Time_Utilities.Get_Time, Time_Utilities.Year_Month_Day) & "), USER => " & System_Utilities.User_Name & '.' & System_Utilities.Session_Name & ")"; Product_Filename : constant String := "!Machine.Release.Current.Products"; F : Io.File_Type; begin Io.Append (F, Name => Product_Filename); Io.Put_Line (F, Product & " => " & Product_Info); Io.Close (F); Log.Put_Line ("Recording product " & Product & " current release as " & Release, Profile.Positive_Msg); end; ) DESTROY_ARCHIVE => ( Library.Context ("!Targets.Implementation.Object_Conversion", Response => "<ERRORS>"); Cmvc.Destroy_View (What_View => "CODE7_2_0", Destroy_Configuration_Also => True, Response => "<ERRORS>"); Cmvc.Destroy_View (What_View => "Rev7_2_Spec", Destroy_Configuration_Also => True, Response => "<ERRORS>"); Compilation.Destroy (Unit => "!Machine.Release.Archive.MC68020_OS2000.Release7_2_2", Threshold => 999, Limit => "<ALL_WORLDS>", Response => "<ERRORS>"); ) SCHEDULE_SHUTDOWN => ( declare use Directory_Tools; Current_Terminal_Type : constant String := System_Utilities.Terminal_Type; function Is_State (Object : String; Goal_State : Directory_Tools.Ada_Object.Unit_State) return Boolean; function Is_Coded (Object : String; Goal_State : Directory_Tools.Ada_Object.Unit_State := Directory_Tools.Ada_Object.Coded) return Boolean renames Is_State; function Is_Installed (Object : String; Goal_State : Directory_Tools.Ada_Object.Unit_State := Directory_Tools.Ada_Object.Installed) return Boolean renames Is_State; function Is_State (Object : String; Goal_State : Directory_Tools.Ada_Object.Unit_State) return Boolean is use Directory_Tools.Ada_Object; Is_Ok : Boolean := (Unit_State'Pos (State (Object)) >= Unit_State'Pos (Goal_State)); begin if not Is_Ok then Log.Put_Line (Object & " is not at the " & Unit_State'Image (Goal_State) & " state", Profile.Error_Msg); end if; return Is_Ok; end Is_State; begin if (Object.Is_Ok (The_Object => Naming.Resolution ("!Machine.Initialization.Rational")) or else Is_Coded ("!Machine.Initialize'Body")) and Is_Installed ("!Machine.Editor_Data.Rational_Commands'Body") and Is_Installed ("!Machine.Editor_Data.Facit_Commands'Body") and Is_Installed ("!Machine.Editor_Data." & Current_Terminal_Type & "_Commands'Body") then Log.Put_Line ("Scheduling shutdown in 5 minutes"); Op.Shutdown_Warning (300.0); Op.Shutdown (Reason => "Release", Explanation => "Install MC68020_OS2000 Rev7"); end if; end; ) CHECK_COMPILER => ( declare function Job_Running (N : String; Kind : Profile.Msg_Kind := Profile.Error_Msg) return Boolean is Found : Boolean := False; begin for J in System_Utilities.Job_Id loop begin if String_Utilities.Locate (N, System_Utilities.Job_Name (J)) /= 0 then Log.Put_Line ("Job " & System_Utilities.Job_Name (J) & " is running", Profile.Positive_Msg); Found := True; end if; exception when others => null; end; end loop; if not Found then Log.Put_Line ("Job " & N & " is not running", Kind); end if; return Found; end Job_Running; begin if Job_Running ("Motorola_68k Compiler Control 7.2.46") and Job_Running ("Cross Compiler Common Layer 7.2.28") and Job_Running ("Motorola_68k Stream_1 7.2.53") then null; end if; end; ) STEP_CHECK => ( -- This must remain the last step in the step file and is used -- as a first level verification of the step file parse and -- tape load. Log.Put_Line ("Step File parses correctly", Profile.Positive_Msg); )