Ninja
Classes | Public Types | Public Member Functions | Private Attributes
BuildLog Struct Reference

Store a log of every command ran for every build. More...

#include <build_log.h>

List of all members.

Classes

struct  LogEntry

Public Types

typedef ExternalStringHashMap
< LogEntry * >::Type 
Entries

Public Member Functions

 BuildLog ()
void Close ()
const Entriesentries () const
bool Load (const string &path, string *err)
 Load the on-disk log.
LogEntryLookupByOutput (const string &path)
 Lookup a previously-run command by its output path.
bool OpenForWrite (const string &path, string *err)
bool Recompact (const string &path, string *err)
 Rewrite the known log entries, throwing away old data.
bool RecordCommand (Edge *edge, int start_time, int end_time, TimeStamp restat_mtime=0)
bool WriteEntry (FILE *f, const LogEntry &entry)
 Serialize an entry into a log file.
 ~BuildLog ()

Private Attributes

Entries entries_
FILE * log_file_
bool needs_recompaction_

Detailed Description

Store a log of every command ran for every build.

It has a few uses:

1) (hashes of) command lines for existing output files, so we know when we need to rebuild due to the command changing 2) timing information, perhaps for generating reports 3) restat information

Definition at line 35 of file build_log.h.


Member Typedef Documentation

Definition at line 77 of file build_log.h.


Constructor & Destructor Documentation

Definition at line 104 of file build_log.cc.

Definition at line 107 of file build_log.cc.

References Close().


Member Function Documentation

void BuildLog::Close ( )

Definition at line 167 of file build_log.cc.

References log_file_.

Referenced by Recompact(), and ~BuildLog().

const Entries& BuildLog::entries ( ) const [inline]

Definition at line 78 of file build_log.h.

bool BuildLog::Load ( const string &  path,
string *  err 
)
BuildLog::LogEntry * BuildLog::LookupByOutput ( const string &  path)

Lookup a previously-run command by its output path.

Definition at line 340 of file build_log.cc.

References entries_.

Referenced by DependencyScan::RecomputeOutputDirty().

bool BuildLog::OpenForWrite ( const string &  path,
string *  err 
)
bool BuildLog::Recompact ( const string &  path,
string *  err 
)

Rewrite the known log entries, throwing away old data.

Definition at line 353 of file build_log.cc.

References Close(), entries_, kCurrentVersion, kFileSignature, METRIC_RECORD, and WriteEntry().

Referenced by OpenForWrite().

bool BuildLog::RecordCommand ( Edge edge,
int  start_time,
int  end_time,
TimeStamp  restat_mtime = 0 
)
bool BuildLog::WriteEntry ( FILE *  f,
const LogEntry entry 
)

Member Data Documentation

Definition at line 81 of file build_log.h.

Referenced by Load(), LookupByOutput(), Recompact(), and RecordCommand().

FILE* BuildLog::log_file_ [private]

Definition at line 82 of file build_log.h.

Referenced by Close(), OpenForWrite(), and RecordCommand().

Definition at line 83 of file build_log.h.

Referenced by Load(), and OpenForWrite().


The documentation for this struct was generated from the following files: