Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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")));
            }
        }
Exemplo n.º 3
0
        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);
        }