2018-07-19 15:59:04 +00:00
|
|
|
#!/bin/bash -ex
|
|
|
|
#
|
|
|
|
# Compile and run a librados application outside of the ceph build system, so
|
|
|
|
# that we can be sure librados.h[pp] is still usable and hasn't accidentally
|
|
|
|
# started depending on internal headers.
|
|
|
|
#
|
|
|
|
# The script assumes all dependencies - e.g. curl, make, gcc, librados headers,
|
|
|
|
# libradosstriper headers, boost headers, etc. - are already installed.
|
|
|
|
#
|
|
|
|
|
2019-06-11 05:16:48 +00:00
|
|
|
source $(dirname $0)/../ceph-helpers-root.sh
|
|
|
|
|
2018-07-19 15:59:04 +00:00
|
|
|
trap cleanup EXIT
|
|
|
|
|
|
|
|
SOURCES="hello_radosstriper.cc
|
|
|
|
hello_world_c.c
|
|
|
|
hello_world.cc
|
|
|
|
Makefile
|
|
|
|
"
|
|
|
|
BINARIES_TO_RUN="hello_world_c
|
|
|
|
hello_world_cpp
|
|
|
|
"
|
|
|
|
BINARIES="${BINARIES_TO_RUN}hello_radosstriper_cpp
|
|
|
|
"
|
2018-11-26 23:33:36 +00:00
|
|
|
DL_PREFIX="http://git.ceph.com/?p=ceph.git;a=blob_plain;hb=master;f=examples/librados/"
|
2018-07-19 15:59:04 +00:00
|
|
|
#DL_PREFIX="https://raw.githubusercontent.com/ceph/ceph/master/examples/librados/"
|
|
|
|
DESTDIR=$(pwd)
|
|
|
|
|
|
|
|
function cleanup () {
|
|
|
|
for f in $BINARIES$SOURCES ; do
|
|
|
|
rm -f "${DESTDIR}/$f"
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_sources () {
|
|
|
|
for s in $SOURCES ; do
|
|
|
|
curl --progress-bar --output $s ${DL_PREFIX}$s
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
function check_sources () {
|
|
|
|
for s in $SOURCES ; do
|
|
|
|
test -f $s
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
function check_binaries () {
|
|
|
|
for b in $BINARIES ; do
|
|
|
|
file $b
|
|
|
|
test -f $b
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
function run_binaries () {
|
|
|
|
for b in $BINARIES_TO_RUN ; do
|
|
|
|
./$b -c /etc/ceph/ceph.conf
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
pushd $DESTDIR
|
2019-06-11 05:16:48 +00:00
|
|
|
case $(distro_id) in
|
|
|
|
centos|fedora|rhel|opensuse*|suse|sles)
|
|
|
|
install gcc-c++ make libradospp-devel librados-devel;;
|
|
|
|
ubuntu|debian|devuan)
|
|
|
|
install g++ make libradospp-dev librados-dev;;
|
|
|
|
*)
|
|
|
|
echo "$(distro_id) is unknown, $@ will have to be installed manually."
|
|
|
|
esac
|
2018-07-19 15:59:04 +00:00
|
|
|
get_sources
|
|
|
|
check_sources
|
|
|
|
make all-system
|
|
|
|
check_binaries
|
|
|
|
run_binaries
|
|
|
|
popd
|