protected void AddUntrackedWindowsDirectories(ProcessBuilder processBuilder) { if (OperatingSystemHelper.IsUnixOS) { processBuilder.EnableTempDirectory(); foreach (var dir in new[] { Private, SystemLibrary, Usr, Dev, Var, AppleInternal, Bin, Etc, Proc, TmpDir }) { processBuilder.AddUntrackedDirectoryScope(DirectoryArtifact.CreateWithZeroPartialSealId(Context.PathTable, dir)); } string userTextEncodingFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".CFUserTextEncoding"); processBuilder.AddUntrackedFile(AbsolutePath.Create(Context.PathTable, userTextEncodingFile)); } else { processBuilder.AddUntrackedWindowsDirectories(); } }
private void UntrackFilesAndDirectories(ProcessBuilder processBuilder) { processBuilder.AddUntrackedWindowsDirectories(); processBuilder.AddUntrackedProgramDataDirectories(); processBuilder.AddUntrackedAppDataDirectories(); if (m_untrackingSettings != null) { PipConstructionUtilities.UntrackUserConfigurableArtifacts(processBuilder, m_untrackingSettings); } var programFilesDirectoryArtifact = DirectoryArtifact.CreateWithZeroPartialSealId(AbsolutePath.Create(m_context.PathTable, Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles))); var programFilesX86DirectoryArtifact = DirectoryArtifact.CreateWithZeroPartialSealId(AbsolutePath.Create(m_context.PathTable, Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86))); processBuilder.AddUntrackedDirectoryScope(programFilesDirectoryArtifact); processBuilder.AddUntrackedDirectoryScope(programFilesX86DirectoryArtifact); processBuilder.AddUntrackedDirectoryScope(DirectoryArtifact.CreateWithZeroPartialSealId(AbsolutePath.Create(m_context.PathTable, @"C:\PROGRA~1\"))); // TODO: This but better processBuilder.AddUntrackedDirectoryScope(DirectoryArtifact.CreateWithZeroPartialSealId(AbsolutePath.Create(m_context.PathTable, @"C:\PROGRA~2\"))); // TODO: This but better // TODO: This is just here because the cloud build requires manually dropping the necessary executables and libraries, and should be removed // when that issue is resolved. string toolsDir = m_manuallyDroppedDependenciesPath.Value.ToString(m_context.PathTable); processBuilder.AddUntrackedDirectoryScope(DirectoryArtifact.CreateWithZeroPartialSealId(AbsolutePath.Create(m_context.PathTable, toolsDir))); // Git accesses should be ignored if .git directory is there var gitDirectory = m_projectRoot.Combine(m_context.PathTable, ".git"); if (m_frontEndHost.Engine.DirectoryExists(gitDirectory)) { processBuilder.AddUntrackedDirectoryScope(DirectoryArtifact.CreateWithZeroPartialSealId(gitDirectory)); processBuilder.AddUntrackedFile(FileArtifact.CreateSourceFile(m_projectRoot.Combine(m_context.PathTable, ".gitattributes"))); processBuilder.AddUntrackedFile(FileArtifact.CreateSourceFile(m_projectRoot.Combine(m_context.PathTable, ".gitignore"))); } }
private bool TrySetBuildToolExecutor( PipConstructionHelper pipConstructionHelper, ProcessBuilder processBuilder, ProjectWithPredictions project) { FileArtifact cmdExeArtifact = FileArtifact.CreateSourceFile(m_msBuildExePath); processBuilder.Executable = cmdExeArtifact; processBuilder.AddInputFile(cmdExeArtifact); processBuilder.AddUntrackedWindowsDirectories(); processBuilder.AddUntrackedAppDataDirectories(); processBuilder.AddUntrackedProgramDataDirectories(); // Temp directory setup including setting TMP and TEMP env vars. The path to // the temp dir is generated in a consistent fashion between BuildXL runs to // ensure environment value (and hence pip hash) consistency. processBuilder.EnableTempDirectory(); AbsolutePath toolDir = m_msBuildExePath.GetParent(PathTable); processBuilder.ToolDescription = StringId.Create(m_context.StringTable, I($"{m_moduleDefinition.Descriptor.Name} - {project.FullPath.ToString(PathTable)}")); return(true); }