]> git.proxmox.com Git - ceph.git/blame - ceph/run-make-check.sh
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / run-make-check.sh
CommitLineData
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#
18function 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
30function 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
74function 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
97main "$@"