Skip to content

Commit

Permalink
add mk-tar.sh
Browse files Browse the repository at this point in the history
Change-Id: I1cb43b8622a9dd66de86d2d50cd6a3182707e62a
  • Loading branch information
hzchenwei7 authored and wu-hanqing committed Jul 13, 2020
1 parent d36833c commit 68dd1cc
Showing 1 changed file with 398 additions and 0 deletions.
398 changes: 398 additions & 0 deletions mk-tar.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,398 @@
#!/bin/sh
dir=`pwd`
#step1 清除生成的目录和文件
bazel clean
rm -rf curvefs_python/BUILD
rm -rf curvefs_python/tmplib/
rm -rf curvesnapshot_python/BUILD
rm -rf curvesnapshot_python/tmplib/
rm -rf *.whl
rm -rf *.tar.gz
rm -rf build

git submodule update --init
if [ $? -ne 0 ]
then
echo "submodule init failed"
exit
fi

#获取tag版本
tag_version=`git status | grep -w "HEAD detached at" | awk '{print $NF}' | awk -F"v" '{print $2}'`
if [ -z ${tag_version} ]
then
echo "not found version info, set version to 9.9.9"
tag_version=9.9.9
fi

#step2 执行编译
echo "start compile"
cd ${dir}/thirdparties/etcdclient
make clean
make all
if [ $? -ne 0 ]
then
echo "make etcd client failed"
exit
fi
cd ${dir}

cp ${dir}/thirdparties/etcdclient/libetcdclient.h ${dir}/include/etcdclient/etcdclient.h

if [ "$1" = "debug" ]
then
bazel build ... --copt -DHAVE_ZLIB=1 --compilation_mode=dbg -s --define=with_glog=true \
--define=libunwind=true --copt -DGFLAGS_NS=google --copt \
-Wno-error=format-security --copt -DUSE_BTHREAD_MUTEX --copt -DCURVEVERSION=${tag_version}
if [ $? -ne 0 ]
then
echo "build phase1 failed"
exit
fi
sh ./curvefs_python/configure.sh
if [ $? -ne 0 ]
then
echo "configure failed"
exit
fi
bazel build curvefs_python:curvefs --copt -DHAVE_ZLIB=1 --compilation_mode=dbg -s \
--define=with_glog=true --define=libunwind=true --copt -DGFLAGS_NS=google \
--copt \
-Wno-error=format-security --copt -DUSE_BTHREAD_MUTEX --linkopt \
-L${dir}/curvefs_python/tmplib/ --copt -DCURVEVERSION=${tag_version}
if [ $? -ne 0 ]
then
echo "build phase2 failed"
exit
fi
else
bazel build ... --copt -DHAVE_ZLIB=1 --copt -O2 -s --define=with_glog=true \
--define=libunwind=true --copt -DGFLAGS_NS=google --copt \
-Wno-error=format-security --copt -DUSE_BTHREAD_MUTEX --copt -DCURVEVERSION=${tag_version}
if [ $? -ne 0 ]
then
echo "build phase1 failed"
exit
fi
sh ./curvefs_python/configure.sh
if [ $? -ne 0 ]
then
echo "configure failed"
exit
fi
bazel build curvefs_python:curvefs --copt -DHAVE_ZLIB=1 --copt -O2 -s \
--define=with_glog=true --define=libunwind=true --copt -DGFLAGS_NS=google \
--copt \
-Wno-error=format-security --copt -DUSE_BTHREAD_MUTEX --linkopt \
-L${dir}/curvefs_python/tmplib/ --copt -DCURVEVERSION=${tag_version}
if [ $? -ne 0 ]
then
echo "build phase2 failed"
exit
fi
fi
echo "end compile"

#step3 创建临时目录,拷贝二进制、lib库和配置模板
echo "start copy"
mkdir -p build/curve/
if [ $? -ne 0 ]
then
exit
fi
# curve-mds
mkdir -p build/curve/curve-mds/bin
if [ $? -ne 0 ]
then
exit
fi
mkdir -p build/curve/curve-mds/lib
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/mds/main/curvemds build/curve/curve-mds/bin/curve-mds
if [ $? -ne 0 ]
then
exit
fi
cp thirdparties/etcdclient/libetcdclient.so \
build/curve/curve-mds/lib/libetcdclient.so
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/tools/curvefsTool build/curve/curve-mds/bin/curve-tool
if [ $? -ne 0 ]
then
exit
fi
# curve-tools
mkdir -p build/curve/curve-tools/bin
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/tools/curve_tool \
build/curve/curve-tools/bin/curve_ops_tool
if [ $? -ne 0 ]
then
exit
fi
cp -r tools/snaptool build/curve/curve-tools/bin/snaptool-lib
cp tools/snaptool/snaptool build/curve/curve-tools/bin/snaptool
chmod a+x build/curve/curve-tools/bin/snaptool
if [ $? -ne 0 ]
then
exit
fi
# curve-chunkserver
mkdir -p build/curve/curve-chunkserver/bin
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/chunkserver/chunkserver \
build/curve/curve-chunkserver/bin/curve-chunkserver
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/tools/curve_chunkserver_tool \
build/curve/curve-chunkserver/bin/curve_chunkserver_tool
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/tools/curve_format \
build/curve/curve-chunkserver/bin/curve-format
if [ $? -ne 0 ]
then
exit
fi
# curve-sdk
mkdir -p build/curve/curve-sdk/curvefs
if [ $? -ne 0 ]
then
exit
fi
mkdir -p build/curve/curve-sdk/bin
if [ $? -ne 0 ]
then
exit
fi
mkdir -p build/curve/curve-sdk/lib
if [ $? -ne 0 ]
then
exit
fi
mkdir -p build/curve/curve-sdk/include
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/curvefs_python/libcurvefs.so \
build/curve/curve-sdk/curvefs/_curvefs.so
if [ $? -ne 0 ]
then
exit
fi
cp curvefs_python/curvefs.py build/curve/curve-sdk/curvefs/curvefs.py
if [ $? -ne 0 ]
then
exit
fi
cp curvefs_python/__init__.py build/curve/curve-sdk/curvefs/__init__.py
if [ $? -ne 0 ]
then
exit
fi
cp curvefs_python/curvefs_tool.py build/curve/curve-sdk/curvefs/curvefs_tool.py
if [ $? -ne 0 ]
then
exit
fi
cp curvefs_python/parser.py build/curve/curve-sdk/curvefs/parser.py
if [ $? -ne 0 ]
then
exit
fi
cp curvefs_python/curve build/curve/curve-sdk/bin/curve
if [ $? -ne 0 ]
then
exit
fi
chmod a+x build/curve/curve-sdk/bin/curve
cp curvefs_python/tmplib/* build/curve/curve-sdk/lib/
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/client/libcurve.so build/curve/curve-sdk/lib/
cp include/client/libcurve.h build/curve/curve-sdk/include
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/tools/nbd/curve-nbd build/curve/curve-sdk/bin/curve-nbd
if [ $? -ne 0 ]
then
exit
fi
# curve-snapshotcloneserver
mkdir -p build/curve/curve-snapshotcloneserver/bin
if [ $? -ne 0 ]
then
exit
fi
cp ./bazel-bin/src/snapshotcloneserver/snapshotcloneserver \
build/curve/curve-snapshotcloneserver/bin/curve-snapshotcloneserver
if [ $? -ne 0 ]
then
exit
fi
mkdir -p build/curve/curve-snapshotcloneserver/lib
cp thirdparties/etcdclient/libetcdclient.so \
build/curve/curve-snapshotcloneserver/lib/libetcdclient.so
if [ $? -ne 0 ]
then
exit
fi
# curve-nginx
mkdir -p build/curve/curve-nginx/app/etc
if [ $? -ne 0 ]
then
exit
fi
cp -r ./curve-snapshotcloneserver-nginx/app/lib \
build/curve/curve-nginx/app
if [ $? -ne 0 ]
then
exit
fi
cp -r ./curve-snapshotcloneserver-nginx/app/src \
build/curve/curve-nginx/app
if [ $? -ne 0 ]
then
exit
fi
mkdir -p build/curve/curve-nginx/conf
if [ $? -ne 0 ]
then
exit
fi
cp ./curve-snapshotcloneserver-nginx/conf/mime.types \
build/curve/curve-nginx/conf/
if [ $? -ne 0 ]
then
exit
fi
cp -r ./curve-snapshotcloneserver-nginx/docker \
build/curve/curve-nginx/
if [ $? -ne 0 ]
then
exit
fi
# curve-nebd
# aws
mkdir -p build/curve/aws-sdk
if [ $? -ne 0 ]
then
exit
fi
cp -r thirdparties/aws-sdk/usr/include \
build/curve/aws-sdk/
if [ $? -ne 0 ]
then
exit
fi
cp -r thirdparties/aws-sdk/usr/lib \
build/curve/aws-sdk/
if [ $? -ne 0 ]
then
exit
fi
# ansible
cp -r curve-ansible build/curve/
if [ $? -ne 0 ]
then
exit
fi
# README

# curve-monitor
mkdir -p build/curve-monitor/bin
if [ $? -ne 0 ]
then
exit
fi
mkdir -p build/curve-monitor/etc/curve/monitor
if [ $? -ne 0 ]
then
exit
fi
cp monitor/curve-monitor.sh build/curve-monitor/bin/curve-monitor.sh
if [ $? -ne 0 ]
then
exit
fi
cp -r monitor/* build/curve-monitor/etc/curve/monitor
if [ $? -ne 0 ]
then
exit
fi
echo "end copy"

#step4 获取git提交版本信息
commit_id=`git show --abbrev-commit HEAD|head -n 1|awk '{print $2}'`
if [ "$1" = "debug" ]
then
debug="+debug"
else
debug=""
fi

#step5 打包tar包
echo "start make tarball"
cd ${dir}/build
curve_name="curve_${tag_version}+${commit_id}${debug}.tar.gz"
echo "curve_name: ${curve_name}"
tar zcvf ${curve_name} curve
cp ${curve_name} $dir
monitor_name="curve-monitor_${tag_version}+${commit_id}${debug}.tar.gz"
echo "curve_name: ${curve_name}"
tar zcvf ${monitor_name} curve-monitor
cp ${monitor_name} $dir
echo "end make tarball"

#step6 清理libetcdclient.so编译出现的临时文件
echo "start clean etcd"
cd ${dir}/thirdparties/etcdclient
make clean
echo "end clean etcd"

# step7 打包python whell
echo "start make python whell"
cd ${dir}/build
cp -r curve/curve-sdk python-wheel
cp ${dir}/curvefs_python/setup.py python-wheel/
cd python-wheel/

# 复制依赖的so文件到curvefs
deps=`ldd curvefs/_curvefs.so | awk '{ print $1 }' | sed '/^$/d'`
for i in `find lib/ -name "lib*so"`
do
basename=$(basename $i)
if [[ $deps =~ $basename ]]
then
echo $i
cp $i curvefs
fi
done

# 替换curvefs setup.py中的版本号
sed -i "s/version-anchor/${tag_version}+${commit_id}${debug}/g" setup.py

python setup.py bdist_wheel
cp dist/*whl $dir
echo "end make python whell"

0 comments on commit 68dd1cc

Please sign in to comment.