/// <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()); }
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()); }