]> git.proxmox.com Git - ceph.git/blob - ceph/run-make-check.sh
bump version to 12.2.10-pve1
[ceph.git] / ceph / run-make-check.sh
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 local which_pkg="which"
33 source /etc/os-release
34 if test -f /etc/redhat-release ; then
35 if ! type bc > /dev/null 2>&1 ; then
36 echo "Please install bc and re-run."
37 exit 1
38 fi
39 if test "$(echo "$VERSION_ID >= 22" | bc)" -ne 0; then
40 install_cmd="dnf -y install"
41 else
42 install_cmd="yum install -y"
43 fi
44 elif type zypper > /dev/null 2>&1 ; then
45 install_cmd="zypper --gpg-auto-import-keys --non-interactive install --no-recommends"
46 elif type apt-get > /dev/null 2>&1 ; then
47 install_cmd="apt-get install -y"
48 which_pkg="debianutils"
49 fi
50
51 if ! type sudo > /dev/null 2>&1 ; then
52 echo "Please install sudo and re-run. This script assumes it is running"
53 echo "as a normal user with the ability to run commands as root via sudo."
54 exit 1
55 fi
56 if [ -n "$install_cmd" ]; then
57 $DRY_RUN sudo $install_cmd ccache jq $which_pkg
58 else
59 echo "WARNING: Don't know how to install packages" >&2
60 echo "This probably means distribution $ID is not supported by run-make-check.sh" >&2
61 fi
62
63 if test -f ./install-deps.sh ; then
64 $DRY_RUN ./install-deps.sh || return 1
65 fi
66
67 # Init defaults after deps are installed. get_processors() depends on coreutils nproc.
68 DEFAULT_MAKEOPTS=${DEFAULT_MAKEOPTS:--j$(get_processors)}
69 BUILD_MAKEOPTS=${BUILD_MAKEOPTS:-$DEFAULT_MAKEOPTS}
70 CHECK_MAKEOPTS=${CHECK_MAKEOPTS:-$DEFAULT_MAKEOPTS}
71
72 $DRY_RUN ./do_cmake.sh $@ || return 1
73 $DRY_RUN cd build
74 $DRY_RUN make $BUILD_MAKEOPTS tests || return 1
75 # prevent OSD EMFILE death on tests
76 $DRY_RUN sudo ulimit -n 32768
77 if ! $DRY_RUN ctest $CHECK_MAKEOPTS --output-on-failure; then
78 rm -f ${TMPDIR:-/tmp}/ceph-asok.*
79 return 1
80 fi
81 }
82
83 function main() {
84 if [[ $EUID -eq 0 ]] ; then
85 echo "For best results, run this script as a normal user configured"
86 echo "with the ability to run commands as root via sudo."
87 fi
88 echo -n "Checking hostname sanity... "
89 if hostname --fqdn >/dev/null 2>&1 ; then
90 echo "OK"
91 else
92 echo "NOT OK"
93 echo "Please fix 'hostname --fqdn', otherwise 'make check' will fail"
94 return 1
95 fi
96 if run "$@" ; then
97 rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv*
98 echo "cmake check: successful run on $(git rev-parse HEAD)"
99 return 0
100 else
101 rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv*
102 return 1
103 fi
104 }
105
106 main "$@"