예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        /// <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);
        }