vijkp/Remodel
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
REMODEL
WHAT IS REMODEL?
Remodel is a replacement program for 'make'. 'make' takes a series of
dependencies and builds targets by executing commands. Its use of UNIX
timestamps as a happens-before relation means that it can fail to build
properly. This is especially true during parallel builds.
Remodel also takes a series of dependencies and targets, etc. (grammar
below), but unlike make, it will use MD5 hashes to detect new content and
provide, together with the dependency chain, a happens-before relation
(md5diff(oldA,newA) => everything that depends on A must be rebuilt). It
executes all independent (non-conflicting) commands in parallel, using
threads.
Remodel uses a different grammar than make. Dependencies can appear in
any order. If you execute remodel with no arguments, it should start with
the pseudo-target DEFAULT. Otherwise, the root is the argument to remodel,
as in remodel foo.o.
program ::= production*
production ::= target '<-' dependency (':' '"' command '"")
dependency ::= filename (',' filename)*
target ::= filename (',' filename)*
Here's an example that builds the program baz from two source files,
foo.cpp and bar.cpp.
DEFAULT <- baz
baz <- foo.o, bar.o: "g++ foo.o bar.o -o baz"
foo.o <- foo.cpp : "g++ -c foo.cpp -o foo.o"
bar.o <- bar.cpp: "g++ -c bar.cpp -o bar.o"
PLATFORM AND DEPENDENCIES
* Platform: linux
* Dependencies: openssl, glibc (package name libssl-dev)
* Compiler: gcc 4.6
* Programming Language: C
HOW TO USE REMODEL?
* Change directory to 'remodel' source directory.
* Before building remodel make sure that 'libssl-dev' and 'gcc' are installed.
* Run 'make' for building remodel for testing.
* Alternatively, use 'make debug' command to build a debug build. Debug buildi
is useful while debugging. It builds the project with gdb flags and enables
debug log messages. Make sure to run make clean before switching from
debug to prod build and vice versa.
* Build generates the binary remodel .
* Change to any test directory and run remodel either by copying remodel
binary to test directory or providing the full path to remodel .
For more details please go through Report.pdf