/// <summary> /// Sets the escaped build root environment variable. If the build root is not set, UAT's location UE4 root will be used. /// </summary> private void SetBuildRootEscaped() { var BuildRoot = CommandUtils.GetEnvVar(EnvVarNames.BuildRootP4); if (String.IsNullOrEmpty(BuildRoot)) { throw new AutomationException("Build root is empty"); } BuildRoot = CommandUtils.EscapePath(BuildRoot); CommandUtils.ConditionallySetEnvVar(EnvVarNames.BuildRootEscaped, BuildRoot); }
/// <summary> /// Initializes the environment. /// </summary> internal CommandEnvironment() { // Get the path to the UAT executable UATExe = Assembly.GetEntryAssembly().GetOriginalLocation(); if (!CommandUtils.FileExists(UATExe)) { throw new AutomationException("Could not find AutomationTool.exe. Reflection indicated it was here: {0}", UATExe); } // Find the root directory (containing the Engine folder) LocalRoot = CommandUtils.GetEnvVar(EnvVarNames.LocalRoot); if (String.IsNullOrEmpty(LocalRoot)) { LocalRoot = CommandUtils.ConvertSeparators(PathSeparator.Slash, Path.GetFullPath(Path.Combine(Path.GetDirectoryName(UATExe), "..", "..", ".."))); CommandUtils.ConditionallySetEnvVar(EnvVarNames.LocalRoot, LocalRoot); } string SavedPath = CommandUtils.GetEnvVar(EnvVarNames.EngineSavedFolder); if (String.IsNullOrEmpty(SavedPath)) { SavedPath = CommandUtils.CombinePaths(PathSeparator.Slash, LocalRoot, "Engine", "Programs", "AutomationTool", "Saved"); CommandUtils.SetEnvVar(EnvVarNames.EngineSavedFolder, SavedPath); } EngineSavedFolder = CommandUtils.GetEnvVar(EnvVarNames.EngineSavedFolder); CSVFile = CommandUtils.GetEnvVar(EnvVarNames.CSVFile); LogFolder = CommandUtils.GetEnvVar(EnvVarNames.LogFolder); if (String.IsNullOrEmpty(LogFolder)) { if (GlobalCommandLine.Installed) { LogFolder = GetInstalledLogFolder(); } else { LogFolder = CommandUtils.CombinePaths(PathSeparator.Slash, EngineSavedFolder, "Logs"); } CommandUtils.SetEnvVar(EnvVarNames.LogFolder, LogFolder); } // clear the logfolder if we're the only running instance if (InternalUtils.IsSoleInstance) { ClearLogFolder(LogFolder); } FinalLogFolder = CommandUtils.GetEnvVar(EnvVarNames.FinalLogFolder); if (String.IsNullOrEmpty(FinalLogFolder)) { FinalLogFolder = LogFolder; CommandUtils.SetEnvVar(EnvVarNames.FinalLogFolder, FinalLogFolder); } RobocopyExe = GetSystemExePath("robocopy.exe"); MountExe = GetSystemExePath("mount.exe"); CmdExe = Utils.IsRunningOnMono ? "/bin/sh" : GetSystemExePath("cmd.exe"); MallocNanoZone = "0"; CommandUtils.SetEnvVar(EnvVarNames.MacMallocNanoZone, MallocNanoZone); int IsChildInstanceInt; int.TryParse(CommandUtils.GetEnvVar("uebp_UATChildInstance", "0"), out IsChildInstanceInt); IsChildInstance = (IsChildInstanceInt != 0); // Setup the timestamp string DateTime LocalTime = DateTime.Now; string TimeStamp = LocalTime.Year + "-" + LocalTime.Month.ToString("00") + "-" + LocalTime.Day.ToString("00") + "_" + LocalTime.Hour.ToString("00") + "." + LocalTime.Minute.ToString("00") + "." + LocalTime.Second.ToString("00"); TimestampAsString = TimeStamp; SetupBuildEnvironment(); LogSettings(); }
/// <summary> /// Initializes the environment. Tries to autodetect all source control settings. /// </summary> /// <param name="CompilationEnv">Compilation environment</param> protected override void InitEnvironment(P4Connection Connection, CommandEnvironment CmdEnv) { var HostName = Environment.MachineName.ToLower(); var P4PortEnv = Environment.GetEnvironmentVariable("P4PORT"); if (String.IsNullOrEmpty(P4PortEnv)) { P4PortEnv = DetectP4Port(); } var UserName = CommandUtils.GetEnvVar(EnvVarNames.User); if (String.IsNullOrEmpty(UserName)) { UserName = DetectUserName(Connection); } var CommandLineClient = CommandUtils.GetEnvVar(EnvVarNames.Client); P4ClientInfo ThisClient = null; if (String.IsNullOrEmpty(CommandLineClient) == false) { ThisClient = Connection.GetClientInfo(CommandLineClient); if (ThisClient == null) { throw new AutomationException("Unable to find client {0}", CommandLineClient); } if (String.Compare(ThisClient.Owner, UserName, true) != 0) { throw new AutomationException("Client specified with {0}={1} has a different owner then the detected user name (has: {2}, expected: {3})", EnvVarNames.Client, CommandLineClient, ThisClient.Owner, UserName); } } else { ThisClient = DetectClient(Connection, UserName, HostName, CmdEnv.UATExe); } Log.TraceInformation("Using user {0} clientspec {1} {2}", UserName, ThisClient.Name, ThisClient.RootPath); Environment.SetEnvironmentVariable("P4CLIENT", ThisClient.Name); string BuildRootPath; string ClientRootPath; DetectRootPaths(Connection, CmdEnv.LocalRoot, ThisClient, out BuildRootPath, out ClientRootPath); CommandUtils.ConditionallySetEnvVar(EnvVarNames.P4Port, P4PortEnv); CommandUtils.ConditionallySetEnvVar(EnvVarNames.User, UserName); CommandUtils.ConditionallySetEnvVar(EnvVarNames.Client, ThisClient.Name); CommandUtils.ConditionallySetEnvVar(EnvVarNames.BuildRootP4, BuildRootPath); CommandUtils.ConditionallySetEnvVar(EnvVarNames.ClientRoot, ClientRootPath); var CLString = CommandUtils.GetEnvVar(EnvVarNames.Changelist, null); if (String.IsNullOrEmpty(CLString) && CommandUtils.P4CLRequired) { CLString = DetectCurrentCL(Connection, ClientRootPath); } if (!String.IsNullOrEmpty(CLString)) { CommandUtils.ConditionallySetEnvVar(EnvVarNames.Changelist, CLString); } CommandUtils.ConditionallySetEnvVar(EnvVarNames.LabelToSync, ""); CommandUtils.ConditionallySetEnvVar("P4USER", UserName); CommandUtils.ConditionallySetEnvVar("P4CLIENT", ThisClient.Name); var P4Password = Environment.GetEnvironmentVariable(EnvVarNames.P4Password); if (!String.IsNullOrEmpty(P4Password)) { CommandUtils.ConditionallySetEnvVar("P4PASSWD", P4Password); } SetBuildRootEscaped(); base.InitEnvironment(Connection, CmdEnv); }
private void SetLocalRootPath() { var LocalRootPath = CommandUtils.ConvertSeparators(PathSeparator.Slash, RootFromUATLocation(UATExe)); CommandUtils.ConditionallySetEnvVar(EnvVarNames.LocalRoot, LocalRootPath); }