public override int Analyze()
        {
            Console.WriteLine("Loading incremental scheduling state from cache graph directory '{0}'", m_cachedGraphDirectory);

            var loggingContext = new LoggingContext(nameof(IncrementalSchedulingStateAnalyzer));
            var trackerFile    = Path.Combine(m_cachedGraphDirectory, Scheduler.Scheduler.DefaultSchedulerFileChangeTrackerFile);
            FileChangeTracker fileChangeTracker;
            var loadResult = FileChangeTracker.LoadTrackingChanges(
                loggingContext,
                null,
                null,
                default(Utilities.Configuration.FileChangeTrackerSupersedeMode?),
                trackerFile,
                null,
                out fileChangeTracker,
                loadForAllCapableVolumes: false);

            if (!loadResult.Succeeded)
            {
                Console.Error.WriteLine("Unable to load file change tracker '" + trackerFile + "'");
                return(1);
            }

            var incrementalSchedulingStateFile = Path.Combine(m_cachedGraphDirectory, Scheduler.Scheduler.DefaultIncrementalSchedulingStateFile);
            var factory = new IncrementalSchedulingStateFactory(loggingContext, analysisMode: true);

            var incrementalSchedulingState = factory.LoadOrReuse(
                fileChangeTracker.FileEnvelopeId,
                CachedGraph.PipGraph,
                null,
                UnsafeOptions.PreserveOutputsNotUsed,
                incrementalSchedulingStateFile,
                schedulerState: null);

            if (incrementalSchedulingState == null)
            {
                Console.Error.WriteLine("Unable to load incremental scheduling state '" + incrementalSchedulingStateFile + "'");
                return(1);
            }

            using (var writer = File.CreateText(Path.GetFullPath(m_outputFile)))
            {
                incrementalSchedulingState.WriteText(writer);
                writer.WriteLine(string.Empty);
                fileChangeTracker.WriteText(writer);
            }

            return(0);
        }
示例#2
0
        private IIncrementalSchedulingState LoadIncrementalSchedulingState()
        {
            Console.Error.WriteLine("Loading incremental scheduling state from '" + m_cachedGraphDirectory);

            var incrementalSchedulingStateFile = Path.Combine(m_cachedGraphDirectory, Scheduler.Scheduler.DefaultIncrementalSchedulingStateFile);
            var loggingContext = new LoggingContext(nameof(CacheHitPredictor));
            var factory        = new IncrementalSchedulingStateFactory(loggingContext, analysisMode: true);

            var incrementalSchedulingState = factory.LoadOrReuseIgnoringFileEnvelope(
                CachedGraph.PipGraph,
                null,
                WellKnownContentHashes.AbsentFile,
                incrementalSchedulingStateFile,
                schedulerState: null);

            return(incrementalSchedulingState);
        }