Exemple #1
0
        /// <inheritdoc />
        public override bool FinalizeAnalysis()
        {
            if (PipGraph == null)
            {
                Logger.GraphFragmentMissingGraph(LoggingContext);
                return(false);
            }

            try
            {
                var serializer = new PipGraphFragmentSerializer(Context, new PipGraphFragmentContext());
                var pips       = PipGraph.RetrieveScheduledPips().ToList();
                if (SerializeUsingTopSort)
                {
                    var finalPipList = TopSort(pips);
                    serializer.SerializeTopSort(m_absoluteOutputPath, finalPipList, pips.Count, m_description);
                }
                else
                {
                    serializer.SerializeSerially(m_absoluteOutputPath, pips, m_description);
                }

                Logger.GraphFragmentSerializationStats(LoggingContext, serializer.FragmentDescription, serializer.Stats.ToString());
            }
            catch (Exception e)
            {
                Logger.GraphFragmentExceptionOnSerializingFragment(LoggingContext, m_absoluteOutputPath.ToString(Context.PathTable), e.ToString());
                return(false);
            }

            return(base.FinalizeAnalysis());
        }
Exemple #2
0
        internal static void AssertPipGraphCounts(PipGraph pipGraph, Dictionary <PipType, int> pipTypeCounts)
        {
            var pips = pipGraph.RetrieveScheduledPips().Where(p => NotMetaPip(p) && p.PipType != PipType.HashSourceFile).ToArray();

            XAssert.All(
                pipTypeCounts,
                pipTypeAndCount =>
            {
                AssertPipTypeCount(pips, pipTypeAndCount.Key, pipTypeAndCount.Value);
            });
            var expectedTotalNonMetaPips = pipTypeCounts.Sum(t => t.Value);

            XAssert.AreEqual(expectedTotalNonMetaPips, pips.Count(), "Expected total number non-meta pips didn't match");
        }
        /// <inheritdoc />
        public override bool FinalizeAnalysis()
        {
            if (PipGraph == null)
            {
                Logger.GraphFragmentMissingGraph(LoggingContext);
                return(false);
            }

            var serializer = new PipGraphFragmentSerializer(Context, new PipGraphFragmentContext());

            try
            {
                serializer.Serialize(m_absoluteOutputPath, PipGraph.RetrieveScheduledPips().ToList(), m_description);
                Logger.GraphFragmentSerializationStats(LoggingContext, serializer.FragmentDescription, serializer.Stats.ToString());
            }
            catch (Exception e) when(e is BuildXLException || e is IOException)
            {
                Logger.GraphFragmentExceptionOnSerializingFragment(LoggingContext, m_absoluteOutputPath.ToString(Context.PathTable), e.ToString());
                return(false);
            }

            return(base.FinalizeAnalysis());
        }