library to control placement in a hierarchy


crush is a library to control placement in a hierarchy


  • apt-get install -y gcc g++ python-pip python-all-dev libpython3-all-dev cmake libboost-all-dev libatomic-ops-dev
  • dnf / yum / zypper install -y gcc gcc-c++ python-pip python-devel python3-devel cmake boost-devel libatomic_ops-devel
  • pip install crush


  • Get the code:

    git clone --recursive
  • Set up the development environment:

    deactivate || true ; source bootstrap
  • Run the tests:

    deactivate || true ; bash
  • Sync the libcrush submodule:

    git submodule update --remote libcrush
  • Run a single test:

    tox -e py27 -- -s -k test_one tests/
  • Check the documentation:

    python build_sphinx
    firefox build/html/index.html

Release management

  • Prepare a new version
  • version=1.3.0 ; perl -pi -e "s/^version.*/version = $version/" setup.cfg ; for i in 1 2 ; do python sdist ; amend=$(git log -1 --oneline | grep --quiet "version $version" && echo --amend) ; git commit $amend -m "version $version" ChangeLog setup.cfg ; git tag -a -f -m "version $version" $version ; done
  • Publish a new version
  • python sdist upload --sign
  • git push ; git push --tags
  • pypi maintenance