From af6e98610083c852f5f6db57b59b544cc3edba6c Mon Sep 17 00:00:00 2001 From: Ali Maredia Date: Wed, 29 Jun 2016 16:05:26 -0400 Subject: [PATCH] cmake: Removed README.cmake.md, edited README.md Deleted README.cmake.md and put any helpful information it had into README.md. Also a added note about which tests get executed by ctest. Signed-off-by: Ali Maredia --- README.cmake.md | 133 ------------------------------------------------ README.md | 74 +++++++++++++++++++++++---- 2 files changed, 64 insertions(+), 143 deletions(-) delete mode 100644 README.cmake.md diff --git a/README.cmake.md b/README.cmake.md deleted file mode 100644 index 347f2ed09d4..00000000000 --- a/README.cmake.md +++ /dev/null @@ -1,133 +0,0 @@ -Overview -======== - -This is a work-in-progress CMake build system. Currently it builds -a limited set of targets, and only on Linux/Posix. The goals include -faster builds (see for yourself), cleaner builds (no libtool), and -improved portability (e.g., Windows). - -Building Ceph -============= - -To build out of source make an empty directory (often named **build**) -and run: - - $ cmake [path to top level ceph-local directory] - -To build in-source make an empty directory called (often named -**build**) and run **cmake**: - - $ mkdir build - $ cd build - $ cmake .. - -Once the configuring is done and the build files have been written to -the current build directory run: - - $ make - -To build only certain targets use: - - $ make [target name] - -To install: - - $ make install - -Options -======= - -There is an option to build the RADOS gateway that is defaulted to ON -To build without the Rados Gateway: - - $ cmake -DWITH_RADOSGW=OFF [path to top level ceph-local directory] - -To build with debugging and alternate locations for a couple of -external dependencies: - - $ cmake -DLEVELDB_PREFIX="/opt/hyperleveldb" -DOFED_PREFIX="/opt/ofed" \ - -DCMAKE_INSTALL_PREFIX=/opt/accelio -DCMAKE_C_FLAGS="-O0 -g3 -gdwarf-4" \ - .. - -If you often pipe `make`to `less` and would like to maintain the -diagnostic colors for errors and warnings (and if your compiler -supports it), you can invoke `cmake` with: - - $ cmake -DDIAGNOSTICS_COLOR=always [...] - -Then you'll get the diagnostic colors when you execute: - - $ make | less -R - -Other available values for DIAGNOSTICS_COLOR are 'auto' (default) and -'never'. - - -**More options will be implemented in the future.** - - -Targets Built -============= - -* ceph-mon -* ceph-osd -* ceph-mds -* cephfs -* ceph-syn -* rados -* radosgw (set ON as a default) -* librados-config -* ceph-conf -* monmaptool -* osdmaptool -* crushtool -* ceph-authtool -* init-ceph -* mkcephfs -* mon_store_converter -* ceph-fuse - -Future work will be done to build more targets, check for libraries -and headers more thoroughly, and include tests to make this build -become more robust. CMake allows ceph to build onto many platforms -such as Windows though the shell scripts need bash/unix to run. - -Developer Quick-Start -===================== - -This is a CMake variant of the instructions found at -. - -Development ------------ - -The **run-cmake-check.sh** script will install Ceph dependencies, -compile everything in debug mode, and run a number of tests to verify -that the result behaves as expected. It will also build in-source -(i.e., create a *build* directory). - - $ ./run-cmake-check.sh - -Running a development deployment --------------------------------- - -Assuming you ran **run-cmake-check.sh**, you'll have a **build** -directory from which you'll run the various commands. - - $ cd build - -Now you can run a development deployment: - - $ ../src/vstart -d -n -x - -You can also configure **vstart.sh** to use only one monitor and one -metadata server by using the following: - - $ MON=1 MDS=1 ../src/vstart.sh -d -n -x - -You can stop the development deployment with: - - $ ../src/stop.sh - -[See the non-cmake instructions for additional -details.](http://docs.ceph.com/docs/jewel/dev/quick_guide/) diff --git a/README.md b/README.md index f406378e4b3..270d5eece47 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,50 @@ Build instructions: make This assumes you make your build dir a subdirectory of the ceph.git -checkout. If you put it elsewhere, just replace .. above with a +checkout. If you put it elsewhere, just replace .. above with a correct path to the checkout. +To build only certain targets use: + + make [target name] + +To install: + + make install + +CMake Options +------------- + +If you run the `cmake` command by hand, there are many options you can +set with "-D". For example the option to build the RADOS Gateway is +defaulted to ON. To build without the RADOS Gateway: + + cmake -DWITH_RADOSGW=OFF [path to top level ceph directory] + +Another example below is building with debugging and alternate locations +for a couple of external dependencies: + + cmake -DLEVELDB_PREFIX="/opt/hyperleveldb" -DOFED_PREFIX="/opt/ofed" \ + -DCMAKE_INSTALL_PREFIX=/opt/accelio -DCMAKE_C_FLAGS="-O0 -g3 -gdwarf-4" \ + .. + +To view an exhaustive list of -D options, you can invoke `cmake` with: + + cmake -LH + +If you often pipe `make` to `less` and would like to maintain the +diagnostic colors for errors and warnings (and if your compiler +supports it), you can invoke `cmake` with: + + cmake -DDIAGNOSTICS_COLOR=always .. + +Then you'll get the diagnostic colors when you execute: + + make | less -R + +Other available values for 'DIAGNOSTICS_COLOR' are 'auto' (default) and +'never'. + Building packages ----------------- @@ -114,28 +155,41 @@ To start or stop individual daemons, the sysvinit script can be used: Running unit tests ================== -To run build and run all tests, use ctest: +To build and run all tests (in parallel using all processors), use `ctest`: cd build make ctest -j$(nproc) -To run an individual test manually, run the ctest command with -R -(regex matching): +(Note: Many targets built from src/test are not run using `ctest`. +Targets starting with "unittest" are run in `make check` and thus can +be run with `ctest`. Targets starting with "ceph_test" can not, and should +be run by hand.) + +To build and run all tests and their dependencies without other +unnecessary targets in Ceph: + + cd build + make check -j$(nproc) + +To run an individual test manually, run `ctest` with -R (regex matching): + + ctest -R [regex matching test name(s)] - ctest -R [test name] +(Note: `ctest` does not build the test it's running or the dependencies needed +to run it) To run an individual test manually and see all the tests output, run -the ctest command with the -V (verbose) flag: +`ctest` with the -V (verbose) flag: - ctest -V -R [test name] + ctest -V -R [regex matching test name(s)] -To run an tests manually and run the jobs in parallel, run the ctest -command with the -j flag: +To run an tests manually and run the jobs in parallel, run `ctest` with +the -j flag: ctest -j [number of jobs] -There are many other flags you can give the ctest command for better control +There are many other flags you can give `ctest` for better control over manual test execution. To view these options run: man ctest -- 2.47.3