]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #!/bin/bash |
2 | # | |
3 | # Ceph distributed storage system | |
4 | # | |
5 | # Copyright (C) 2014 Red Hat <contact@redhat.com> | |
6 | # | |
7 | # Author: Loic Dachary <loic@dachary.org> | |
8 | # | |
9 | # This library is free software; you can redistribute it and/or | |
10 | # modify it under the terms of the GNU Lesser General Public | |
11 | # License as published by the Free Software Foundation; either | |
12 | # version 2.1 of the License, or (at your option) any later version. | |
13 | # | |
14 | ||
15 | # | |
16 | # Return MAX(1, (number of processors / 2)) by default or NPROC | |
17 | # | |
18 | function get_processors() { | |
19 | if test -n "$NPROC" ; then | |
20 | echo $NPROC | |
21 | else | |
22 | if test $(nproc) -ge 2 ; then | |
23 | expr $(nproc) / 2 | |
24 | else | |
25 | echo 1 | |
26 | fi | |
27 | fi | |
28 | } | |
29 | ||
30 | function run() { | |
31 | local install_cmd | |
32 | if test -f /etc/redhat-release ; then | |
33 | source /etc/os-release | |
34 | if ! type bc > /dev/null 2>&1 ; then | |
35 | echo "Please install bc and re-run." | |
36 | exit 1 | |
37 | fi | |
38 | if test "$(echo "$VERSION_ID >= 22" | bc)" -ne 0; then | |
39 | install_cmd="dnf -y install" | |
40 | else | |
41 | install_cmd="yum install -y" | |
42 | fi | |
43 | fi | |
44 | ||
45 | type apt-get > /dev/null 2>&1 && install_cmd="apt-get install -y" | |
46 | type zypper > /dev/null 2>&1 && install_cmd="zypper --gpg-auto-import-keys --non-interactive install" | |
47 | ||
48 | if ! type sudo > /dev/null 2>&1 ; then | |
49 | echo "Please install sudo and re-run. This script assumes it is running" | |
50 | echo "as a normal user with the ability to run commands as root via sudo." | |
51 | exit 1 | |
52 | fi | |
53 | if [ -n "$install_cmd" ]; then | |
54 | $DRY_RUN sudo $install_cmd ccache jq | |
55 | else | |
56 | echo "WARNING: Don't know how to install packages" >&2 | |
57 | fi | |
58 | ||
59 | if test -f ./install-deps.sh ; then | |
60 | $DRY_RUN ./install-deps.sh || return 1 | |
61 | fi | |
62 | ||
63 | # Init defaults after deps are installed. get_processors() depends on coreutils nproc. | |
64 | DEFAULT_MAKEOPTS=${DEFAULT_MAKEOPTS:--j$(get_processors)} | |
65 | BUILD_MAKEOPTS=${BUILD_MAKEOPTS:-$DEFAULT_MAKEOPTS} | |
66 | CHECK_MAKEOPTS=${CHECK_MAKEOPTS:-$DEFAULT_MAKEOPTS} | |
67 | ||
68 | $DRY_RUN ./do_cmake.sh $@ || return 1 | |
69 | $DRY_RUN cd build | |
70 | $DRY_RUN make $BUILD_MAKEOPTS tests || return 1 | |
71 | $DRY_RUN ctest $CHECK_MAKEOPTS --output-on-failure || return 1 | |
72 | } | |
73 | ||
74 | function main() { | |
75 | if [[ $EUID -eq 0 ]] ; then | |
76 | echo "For best results, run this script as a normal user configured" | |
77 | echo "with the ability to run commands as root via sudo." | |
78 | fi | |
79 | echo -n "Checking hostname sanity... " | |
80 | if hostname --fqdn >/dev/null 2>&1 ; then | |
81 | echo "OK" | |
82 | else | |
83 | echo "NOT OK" | |
84 | echo "Please fix 'hostname --fqdn', otherwise 'make check' will fail" | |
85 | return 1 | |
86 | fi | |
87 | if run "$@" ; then | |
88 | rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv* | |
89 | echo "cmake check: successful run on $(git rev-parse HEAD)" | |
90 | return 0 | |
91 | else | |
92 | rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv* | |
93 | return 1 | |
94 | fi | |
95 | } | |
96 | ||
97 | main "$@" |