Skip to content

zhchbin/DN

Distributed Ninja

Build Status

DN, which is short for Distributed Ninja, aims to finish the time consuming compilation job with several machines. Unlike distcc or icecream, DN is based on ninja, and supports platforms: Linux and Windows. Ninja is a small build system with a focus on speed, it is born from @martine's work on the Chromium browser project.

NOTE: currently this project is only a proof of concept.

Usage

  • Master

    $ dn --working_dir=/path/to/your/project
  • Slave

    $ dn --working_dir=/path/to/your/project --master=<master_ip>

Build

  1. Clone the repository and submodule.

    $ git clone https://github.com/zhchbin/DN.git $ cd DN && git submodule update --init
  2. Install gyp.

    $ git clone https://github.com/svn2github/gyp $ cd gyp $ echo export PATH='$PATH':`pwd` >> ~/.bashrc && source ~/.bashrc
  3. Install ninja.

    $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $ echo export PATH=`pwd`/depot_tools:'$PATH' >> ~/.bashrc $ echo export GYP_GENERATORS=ninja >> ~/.bashrc && source ~/.bashrc
  4. Generate ninja build files and build

    $ sudo apt-get install libcurl4-openssl-dev $ gyp --depth=. -I base/src/build/common.gypi $ ninja -C out/Debug

What I have done?

  1. Pull out useful low-level ("base") routines routines from the Chromium open-source project at http://www.chromium.org, see chromium-base.
  2. RPC componment based on Google/protobuf, see src/net and src/rpc. Usage demo can be found here.
  3. Integrate ninja code into the our thread model, and dispatch compilation command from master to slave.

License

DN's code in this repo uses the BSD license, see our LICENSE file.

About

Distributed Ninja

Resources

License

BSD-2-Clause, BSD-3-Clause licenses found

Licenses found

BSD-2-Clause
LICENSE
BSD-3-Clause
LICENSE.chromium

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors