92 lines
1.8 KiB
Bash
Executable File
92 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Helper script for creating release tarball.
|
|
|
|
print_usage() {
|
|
printf "Script for making release source tarball.\n"
|
|
printf "Usage:\n\trelease-tarball.sh <TAG>\n\n"
|
|
}
|
|
|
|
print_error() {
|
|
local msg=$1
|
|
printf "\u001b[31mError\u001b[0m: $msg\n\n"
|
|
print_usage
|
|
}
|
|
|
|
check_input() {
|
|
local TAG=$1
|
|
if [ -z $TAG ]; then
|
|
print_error "Empty tag argument"
|
|
exit -1
|
|
fi
|
|
}
|
|
|
|
check_curdir() {
|
|
local CUR_ABS=$1
|
|
printf "Current directory: ${CUR_ABS}\n"
|
|
local CUR=$(basename $CUR_ABS)
|
|
|
|
if [ $CUR == "dev" ]; then
|
|
cd ..
|
|
CUR=$(basename $(pwd))
|
|
fi
|
|
|
|
if [ $CUR != "xgboost" ]; then
|
|
print_error "Must be in project root or xgboost/dev. Current directory: ${CUR}"
|
|
exit -1;
|
|
fi
|
|
}
|
|
|
|
# Remove all submodules.
|
|
cleanup_git() {
|
|
local TAG=$1
|
|
check_input $TAG
|
|
|
|
git checkout $TAG || exit -1
|
|
|
|
local SUBMODULES=$(grep "path = " ./.gitmodules | cut -f 3 --delimiter=' ' -)
|
|
|
|
for module in $SUBMODULES; do
|
|
rm -rf ${module}/.git
|
|
done
|
|
|
|
rm -rf .git
|
|
}
|
|
|
|
make_tarball() {
|
|
local SRCDIR=$1
|
|
local CUR_ABS=$2
|
|
tar -czf xgboost.tar.gz xgboost
|
|
|
|
printf "Copying ${SRCDIR}/xgboost.tar.gz back to ${CUR_ABS}/xgboost.tar.gz .\n"
|
|
cp xgboost.tar.gz ${CUR_ABS}/xgboost.tar.gz
|
|
printf "Writing hash to ${CUR_ABS}/hash .\n"
|
|
sha256sum -z ${CUR_ABS}/xgboost.tar.gz | cut -f 1 --delimiter=' ' > ${CUR_ABS}/hash
|
|
}
|
|
|
|
main() {
|
|
local TAG=$1
|
|
check_input $TAG
|
|
|
|
local CUR_ABS=$(pwd)
|
|
check_curdir $CUR_ABS
|
|
|
|
local TMPDIR=$(mktemp -d)
|
|
printf "tmpdir: ${TMPDIR}\n"
|
|
|
|
git clean -xdf || exit -1
|
|
cp -R . $TMPDIR/xgboost
|
|
pushd .
|
|
|
|
cd $TMPDIR/xgboost
|
|
cleanup_git $TAG
|
|
|
|
cd ..
|
|
make_tarball $TMPDIR $CUR_ABS
|
|
|
|
popd
|
|
rm -rf $TMPDIR
|
|
}
|
|
|
|
main $1
|