#!/usr/bin/env bash
-set -x
+set -ex
+
git submodule update --init --recursive
-if test -e build; then
- echo 'build dir already exists; rm -rf build and re-run'
+
+: ${BUILD_DIR:=build}
+: ${CEPH_GIT_DIR:=..}
+
+if [ -e $BUILD_DIR ]; then
+ echo "'$BUILD_DIR' dir already exists; either rm -rf '$BUILD_DIR' and re-run, or set BUILD_DIR env var to a different directory name"
exit 1
fi
PYBUILD="2"
-source /etc/os-release
-case "$ID" in
- fedora)
- if [ "$VERSION_ID" -ge "29" ] ; then
- PYBUILD="3"
- fi
- ;;
- rhel|centos)
- MAJOR_VER=$(echo "$VERSION_ID" | sed -e 's/\..*$//')
- if [ "$MAJOR_VER" -ge "8" ] ; then
- PYBUILD="3"
- fi
- ;;
- opensuse*|suse|sles)
- PYBUILD="3"
- WITH_RADOSGW_AMQP_ENDPOINT="OFF"
- ;;
-esac
-if [ "$PYBUILD" = "3" ] ; then
- ARGS="$ARGS -DWITH_PYTHON2=OFF -DWITH_PYTHON3=ON -DMGR_PYTHON_VERSION=3"
+if [ -r /etc/os-release ]; then
+ source /etc/os-release
+ case "$ID" in
+ fedora)
+ PYBUILD="3.7"
+ if [ "$VERSION_ID" -ge "32" ] ; then
+ PYBUILD="3.8"
+ fi
+ ;;
+ rhel|centos)
+ MAJOR_VER=$(echo "$VERSION_ID" | sed -e 's/\..*$//')
+ if [ "$MAJOR_VER" -ge "8" ] ; then
+ PYBUILD="3.6"
+ fi
+ ;;
+ opensuse*|suse|sles)
+ PYBUILD="3"
+ ARGS+=" -DWITH_RADOSGW_AMQP_ENDPOINT=OFF"
+ ARGS+=" -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF"
+ ;;
+ esac
+elif [ "$(uname)" == FreeBSD ] ; then
+ PYBUILD="3"
+ ARGS+=" -DWITH_RADOSGW_AMQP_ENDPOINT=OFF"
+ ARGS+=" -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF"
+else
+ echo Unknown release
+ exit 1
+fi
+
+if [[ "$PYBUILD" =~ ^3(\..*)?$ ]] ; then
+ ARGS+=" -DWITH_PYTHON3=${PYBUILD}"
fi
if type ccache > /dev/null 2>&1 ; then
echo "enabling ccache"
- ARGS="$ARGS -DWITH_CCACHE=ON"
-fi
-if [ -n "$WITH_RADOSGW_AMQP_ENDPOINT" ] ; then
- ARGS="$ARGS -DWITH_RADOSGW_AMQP_ENDPOINT=$WITH_RADOSGW_AMQP_ENDPOINT"
+ ARGS+=" -DWITH_CCACHE=ON"
fi
-mkdir build
-cd build
+mkdir $BUILD_DIR
+cd $BUILD_DIR
if type cmake3 > /dev/null 2>&1 ; then
CMAKE=cmake3
else
CMAKE=cmake
fi
-${CMAKE} -DCMAKE_BUILD_TYPE=Debug $ARGS "$@" .. || exit 1
+${CMAKE} $ARGS "$@" $CEPH_GIT_DIR || exit 1
+set +x
# minimal config to find plugins
cat <<EOF > ceph.conf
+[global]
plugin dir = lib
erasure code dir = lib
EOF
echo done.
-cat <<EOF
+
+if [[ ! $ARGS =~ "-DCMAKE_BUILD_TYPE" ]]; then
+ cat <<EOF
****
WARNING: do_cmake.sh now creates debug builds by default. Performance
if a performance sensitive build is required.
****
EOF
+fi
+