mirror of
https://github.com/ceph/ceph
synced 2024-12-19 01:46:00 +00:00
bbb69fe793
since we dropped the support of xenial, we now have the luxury of using newer CMake! and by using CMake 3.10.2, we can prevent libfmt from assuming that we are using C++11, and hence set `CMAKE_CXX_STANDARD` to 11, which will literally append `-std=gnu++11` to `CMAKE_CXX_FLAGS`. the last `-std` option passed to `g++` takes precendence. since we've switched over to C++17, and we are using C++17 features. so, using cmake older than 3.8 breaks the build. because it is CMake 3.8 which stared support `CMAKE_CXX_STANDARD` 17. - for bionic: https://packages.ubuntu.com/bionic/cmake : 3.10.2 - for CentOS7: https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/c/ : 3.13.5 so in this change, * bump up the required version to v3.10.2 * cleanups to wipe out the workaround for lower CMake versions * use `PROJECT_VERSION` defined by `project()` command instead of `VERSION` explicitly defined. Signed-off-by: Kefu Chai <kchai@redhat.com>
146 lines
4.7 KiB
Bash
Executable File
146 lines
4.7 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
if [ ! -d .git ]; then
|
|
echo "no .git present. run this from the base dir of the git checkout."
|
|
exit 1
|
|
fi
|
|
|
|
version=$1
|
|
[ -z "$version" ] && version=$(git describe --long --match 'v*' | sed 's/^v//')
|
|
if expr index $version '-' > /dev/null; then
|
|
rpm_version=$(echo $version | cut -d - -f 1-1)
|
|
rpm_release=$(echo $version | cut -d - -f 2- | sed 's/-/./')
|
|
else
|
|
rpm_version=$version
|
|
rpm_release=0
|
|
fi
|
|
|
|
outfile="ceph-$version"
|
|
echo "version $version"
|
|
|
|
# update submodules
|
|
echo "updating submodules..."
|
|
force=$(if git submodule usage 2>&1 | grep --quiet 'update.*--force'; then echo --force ; fi)
|
|
if ! git submodule sync || ! git submodule update $force --init --recursive; then
|
|
echo "Error: could not initialize submodule projects"
|
|
echo " Network connectivity might be required."
|
|
exit 1
|
|
fi
|
|
|
|
download_boost() {
|
|
boost_version=$1
|
|
shift
|
|
boost_sha256=$1
|
|
shift
|
|
boost_version_underscore=$(echo $boost_version | sed 's/\./_/g')
|
|
boost_fname=boost_${boost_version_underscore}.tar.bz2
|
|
set +e
|
|
while true; do
|
|
url_base=$1
|
|
shift
|
|
if [ -z $url_base ]; then
|
|
echo "Error: failed to download boost."
|
|
exit
|
|
fi
|
|
url=$url_base/$boost_fname
|
|
wget -c --no-verbose -O $boost_fname $url
|
|
if [ $? != 0 -o ! -e $boost_fname ]; then
|
|
echo "Download of $url failed"
|
|
elif [ $(sha256sum $boost_fname | awk '{print $1}') != $boost_sha256 ]; then
|
|
echo "Error: failed to download boost: SHA256 mismatch."
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
set -e
|
|
tar xjf $boost_fname -C src \
|
|
--exclude="$boost_version_underscore/libs/*/doc" \
|
|
--exclude="$boost_version_underscore/libs/*/example" \
|
|
--exclude="$boost_version_underscore/libs/*/examples" \
|
|
--exclude="$boost_version_underscore/libs/*/meta" \
|
|
--exclude="$boost_version_underscore/libs/*/test" \
|
|
--exclude="$boost_version_underscore/tools/boostbook" \
|
|
--exclude="$boost_version_underscore/tools/quickbook" \
|
|
--exclude="$boost_version_underscore/tools/auto_index" \
|
|
--exclude='doc' --exclude='more' --exclude='status'
|
|
mv src/boost_${boost_version_underscore} src/boost
|
|
tar cf ${outfile}.boost.tar ${outfile}/src/boost
|
|
rm -rf src/boost
|
|
}
|
|
|
|
_python_autoselect() {
|
|
python_command=
|
|
for interpreter in python2.7 python3 ; do
|
|
type $interpreter > /dev/null 2>&1 || continue
|
|
python_command=$interpreter
|
|
break
|
|
done
|
|
if [ -z "$python_command" ] ; then
|
|
echo "Could not find a suitable python interpreter! Bailing out."
|
|
exit 1
|
|
fi
|
|
echo $python_command
|
|
}
|
|
|
|
build_dashboard_frontend() {
|
|
CURR_DIR=`pwd`
|
|
TEMP_DIR=`mktemp -d`
|
|
$CURR_DIR/src/tools/setup-virtualenv.sh --python=$(_python_autoselect) $TEMP_DIR
|
|
$TEMP_DIR/bin/pip install nodeenv
|
|
$TEMP_DIR/bin/nodeenv -p --node=10.13.0
|
|
cd src/pybind/mgr/dashboard/frontend
|
|
. $TEMP_DIR/bin/activate
|
|
timeout 1h npm ci
|
|
npm run build -- --prod --progress=false
|
|
deactivate
|
|
cd $CURR_DIR
|
|
rm -rf $TEMP_DIR
|
|
tar cf dashboard_frontend.tar $outfile/src/pybind/mgr/dashboard/frontend/dist
|
|
}
|
|
|
|
# clean out old cruft...
|
|
echo "cleanup..."
|
|
rm -f $outfile*
|
|
|
|
# build new tarball
|
|
echo "building tarball..."
|
|
bin/git-archive-all.sh --prefix ceph-$version/ \
|
|
--verbose \
|
|
--ignore corpus \
|
|
$outfile.tar
|
|
|
|
# populate files with version strings
|
|
echo "including src/.git_version, ceph.spec"
|
|
|
|
(git rev-parse HEAD ; echo $version) 2> /dev/null > src/.git_version
|
|
|
|
for spec in ceph.spec.in alpine/APKBUILD.in; do
|
|
cat $spec |
|
|
sed "s/@PROJECT_VERSION@/$rpm_version/g" |
|
|
sed "s/@RPM_RELEASE@/$rpm_release/g" |
|
|
sed "s/@TARBALL_BASENAME@/ceph-$version/g" > `echo $spec | sed 's/.in$//'`
|
|
done
|
|
ln -s . $outfile
|
|
tar cvf $outfile.version.tar $outfile/src/.git_version $outfile/ceph.spec $outfile/alpine/APKBUILD
|
|
# NOTE: If you change this version number make sure the package is available
|
|
# at the three URLs referenced below (may involve uploading to download.ceph.com)
|
|
boost_version=1.67.0
|
|
download_boost $boost_version 2684c972994ee57fc5632e03bf044746f6eb45d4920c343937a465fd67a5adba \
|
|
https://dl.bintray.com/boostorg/release/$boost_version/source \
|
|
https://downloads.sourceforge.net/project/boost/boost/$boost_version \
|
|
https://download.ceph.com/qa
|
|
build_dashboard_frontend
|
|
tar --concatenate -f $outfile.all.tar $outfile.version.tar
|
|
tar --concatenate -f $outfile.all.tar $outfile.boost.tar
|
|
tar --concatenate -f $outfile.all.tar $outfile.tar
|
|
tar --concatenate -f $outfile.all.tar dashboard_frontend.tar
|
|
mv $outfile.all.tar $outfile.tar
|
|
rm $outfile
|
|
rm -f $outfile.version.tar
|
|
rm -f $outfile.boost.tar
|
|
|
|
echo "compressing..."
|
|
bzip2 -9 $outfile.tar
|
|
|
|
echo "done."
|