Skip to content

Commit

Permalink
documentation: simplify running make check
Browse files Browse the repository at this point in the history
Encapsulate the compilation steps (install dependencies, autogen.sh,
configure, make check) in the run-make-check.sh script. Update the
developer documentation to point to this script instead of multiple
steps.

It is intended as a tool to help new developer make sure their patch is
sane, it focuses on efficiency (runs make check in parallel if possible)
and coverage (enables docker based tests if possible).

http://tracker.ceph.com/issues/10265 Fixes: #10265

Signed-off-by: Loic Dachary <ldachary@redhat.com>
  • Loading branch information
ldachary committed Dec 13, 2014
1 parent 35e4f42 commit b9ddf97
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 10 deletions.
2 changes: 1 addition & 1 deletion SubmittingPatches
Expand Up @@ -233,7 +233,7 @@ allows you to submit pull requests directly from the command line:

$ hub pull-request -b ceph:master -h you:mything

Pull rqeuests appear in the review queue at
Pull requests appear in the review queue at

https://github.com/organizations/ceph/dashboard/pulls

Expand Down
13 changes: 4 additions & 9 deletions doc/dev/quick_guide.rst
Expand Up @@ -7,19 +7,14 @@ This guide will describe how to build and test Ceph for development.
Development
-----------

After installing the dependencies described in the ``README``,
prepare the git source tree by updating the submodules
The ``run-make-check.sh`` script will install Ceph dependencies,
compiles everything in debug mode and runs a number of tests to verify
the result behaves as expected.

.. code::
git submodule update --init
$ ./run-make-check.sh
To build the server daemons, and FUSE client, execute the following:

.. code::
./do_autogen.sh -d 1
make -j [number of cpus]
Running a development deployment
--------------------------------
Expand Down
85 changes: 85 additions & 0 deletions run-make-check.sh
@@ -0,0 +1,85 @@
#!/bin/bash
#
# Ceph distributed storage system
#
# Copyright (C) 2014 Red Hat <contact@redhat.com>
#
# Author: Loic Dachary <loic@dachary.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#

#
# Return true if the working tree is after the commit that made
# make -j8 check possible
#
function can_parallel_make_check() {
local commit=$(git rev-parse tags/v0.88^{})
git rev-list HEAD | grep --quiet $commit
}

function maybe_parallel_make_check() {
if can_parallel_make_check ; then
echo -j$(get_processors)
fi
}
#
# Return MAX(1, (number of processors / 2)) by default or NPROC
#
function get_processors() {
if test -n "$NPROC" ; then
echo $NPROC
else
local processors=$(grep -c '^processor' /proc/cpuinfo)
if test $processors -ge 2 ; then
expr $processors / 2
else
echo 1
fi
fi
}

#
# Return true if the working tree is after the commit that
# enabled docker based tests
#
function maybe_enable_docker() {
local commit=e038b1266b8d427308ab9e498d93a47bd8e3053a
if git rev-list HEAD | grep --quiet $commit ; then
echo --enable-docker
fi
}

function run() {
sudo $(which apt-get yum zypper 2>/dev/null) install ccache
sudo modprobe rbd

if test -f ./install-deps.sh ; then
$DRY_RUN ./install-deps.sh || return 1
fi
$DRY_RUN ./autogen.sh || return 1
$DRY_RUN ./configure $(maybe_enable_docker) --disable-static --with-radosgw --with-debug \
CC="ccache gcc" CXX="ccache g++" CFLAGS="-Wall -g" CXXFLAGS="-Wall -g" || return 1
$DRY_RUN make -j$(get_processors) || return 1
$DRY_RUN make $(maybe_parallel_make_check) check || return 1
$DRY_RUN make dist || return 1
}

function main() {
if run ; then
echo "make check: successful run on $(git rev-parse HEAD)"
return 0
else
find . -name '*.trs' | xargs grep -l FAIL | while read file ; do
log=$(dirname $file)/$(basename $file .trs).log
echo FAIL: $log
cat $log
done
return 1
fi
}

main

0 comments on commit b9ddf97

Please sign in to comment.