Commits

Show all
Author Commit Message Labels Comments Date
Greg Ward
db: add database versioniong to KyotoDB
Greg Ward
runtime: fix file descriptor leak (forgot to close BuildDB instance)
Greg Ward
dag: use buffered I/O in FileNode.Signature() Now it takes two system calls to read a 200-byte file, not 201 (the extra one reads the empty string and detects EOF). Also: fix file descriptor leak.
Greg Ward
main,runtime: respect the user's requested targets - in main, make sure they get from the command line to the BuildOptions object - in runtime, pass that to dag.MatchTargets() instead of FindFinalTargets()
Greg Ward
dag: add DAG.MatchTargets() method
Greg Ward
runtime: detect and warn if no database libraries available
Greg Ward
db: only build KyotoDB if the C library is available at build time
Greg Ward
doc: minor tweaks to language tutorial
Greg Ward
doc: update version numbers from 0.0.1 to 0.0.2
Greg Ward
doc: remove some obsolete notes now that incremental builds work
Greg Ward
dag: implement FileNode.Changed() Now Fubsy is a genuine incremental build tool: it no longer thinks that every file has changed every time!
Greg Ward
dag: implement FileNode.Signature()
Greg Ward
db: decode each node's BuildRecord in KyotoDB.Dump()
Greg Ward
db: make OpenKyotoDB() take the exact filename, not the basename This makes the UI for fubsydebug clearer: the user just specifies the filename, no funny tricks required. But it probably needs we'll need a small layer between runtime and Open*DB() to figure out which DB type to open when we have multiple DB types available.
Greg Ward
db: require OpenKyotoDB caller to explicitly specify read-write vs read-only This means that fubsydebug won't accidentally create an empty database if the user passes it an incorrect filename.
Greg Ward
main: add fubsydebug (same binary, different name -- eg. with a symlink) The idea is that it will provide multiple subcommands: fubsydebug CMD ... The only command currently implemented is "dumpdb".
Greg Ward
db: add Dump() to BuildDB interface (implement it in DummyDB, KyotoDB)
Greg Ward
db: fix broken key generation in KyotoDB
Greg Ward
runtime: use a real persistent database (KyotoDB) instead of DummyDB
Greg Ward
db: add a bit of debug logging to KyotoDB
Greg Ward
db: improve error handling in KyotoDB
Greg Ward
db: add KyotoDB, a BuildDB implementation using Kyoto Cabinet This required several additional changes that will be used for most persistent implementations: - add Close() method to the interface - add binary encode()/decode() methods to BuildRecord (only useful for key/value stores)
Greg Ward
add new dependency: bitbucket.org/ww/cabinet (cgo wrapper for Kyoto Cabinet) (taken from upstream changeset ee876328069f)
Greg Ward
log: define debug topics statically This means we can detect and report bad topics on the command line and automatically generate accurate help for the --debug option. It should also be faster, since the constants are bit flags rather than strings.
Greg Ward
build: restore the usefulness of --check-all When inspecting a parent node that is itself an intermediate target, avoid the expense of Node.Signature() by checking the signature stored in the database the last time that node was built. This requires lots of changes to the BuildDB interface and friends: - rename SourceRecord to BuildRecord - add "target signature" to BuildRecord - rename most BuildRecord methods to more accurately describe wh…
Greg Ward
build: fix "is source changed?" check to reflect current target This handles the following case: - full build - modify shared source S - build T1, one of the targets that depends on S - build T2, the other target that depends on S Formerly, the third build (of T2) would incorrectly decide that S has not changed, since we only considered whether S has changed since the last build, period. But what really matters is whether S has changed since it was la…
Greg Ward
build: handle the case where a node's parent is removed If you remove a source file, then the next build must rebuild anything that formerly depended on it.
Greg Ward
build: add test case for a new source on an existing target This could not have worked without the addition of BuildDB in the previous revision.
Greg Ward
build: add database and start using it - build package defines BuildDB interface - new package db contains implementations - currently only one implementation, DummyDB (in-memory, good enough for testing) The only use of BuildDB so far is to detect if sources were added to a particular target since the last build.
Greg Ward
build: make changestates a member of BuildState instead of passing it around
  1. Prev
  2. Next