equal/hKis/scripts/prepare-competition.sh
2022-10-25 18:36:19 +08:00

150 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
if [ -t 2 ]
then
BOLD="\033[1m"
GREEN="\033[1;32m"
NORMAL="\033[0m"
RED="\033[1;31m"
YELLOW="\033[1;33m"
else
BOLD=""
GREEN=""
NORMAL=""
RED=""
YELLOW=""
fi
script=`basename $0`
die () {
echo "${BOLD}$script: ${RED}error:${NORMAL} $*" 1>&2
exit 1
}
fatal () {
echo "${BOLD}$script: ${RED}fatal error:${NORMAL} $*" 1>&2
exit 1
}
msg () {
echo "$script: $*" 1>&2
}
wrn () {
echo "${BOLD}$script: ${YELLOW}warning:${NORMAL} $*" 1>&2
}
cd `dirname $0`/..
root=`pwd`
tmp=/tmp/`basename $script .sh`
name=$tmp.name
rm -f $tmp*
usage () {
cat <<EOF
usage: $script [-h][-f]
EOF
}
force=no
while [ $# -gt 0 ]
do
case "$1" in
-h) usage; exit 0;;
-f) force=yes;;
*) die "invalid option '$1'";;
esac
shift
done
if [ $force = yes ]
then
wrn "not checking commit status (due to '-f')"
forceoption="-f"
else
msg "will check commit status (use '-f' to disable)"
forceoption=""
fi
msg "first generating source code tar file"
./scripts/make-source-release.sh $forceoption -t $name || exit 1
source="`cat $name`"
[ -f "$source" ] || fatal "can not access tar '$source'"
msg "source code tar '$source'"
version=`cat VERSION`
base=kissat-${version}-starexec
dir=/tmp/$base
rm -rf $dir
mkdir $dir
mkdir $dir/bin
mkdir $dir/build
mkdir $dir/archive
msg "generated '$dir' structure"
cp -p "$source" $dir/archive
msg "copied source code archive"
starexec_build=$dir/starexec_build
cat <<EOF >$starexec_build
#!/bin/sh
cd build
exec ./build.sh
EOF
chmod 755 $starexec_build
for config in default sat unsat
do
build=$dir/build/build.sh
cat <<EOF > $build
#!/bin/sh
tar xf ../archive/kissat*
mv kissat* kissat
cd kissat
./configure --competition --$config --test
make all || exit 1
build/tissat || exit 1
exec install -s build/kissat ../../bin/
EOF
chmod 755 $build
starexec_run_default=$dir/bin/starexec_run_default
cat <<EOF >$starexec_run_default
#!/bin/sh
exec ./kissat --$config \$1 \$2/proof.out
EOF
chmod 755 $starexec_run_default
msg "generated '$config' build and run scripts"
description=$dir/starexec_description.txt
cat <<EOF>$description
Keep it Simple bare metal SAT solver with $config configuration
EOF
msg "included the following description:"
printf $BOLD
cat $description
printf $NORMAL
zipfile=/tmp/$base-$config.zip
rm -f $zipfile
cd $dir
zip -q -r $zipfile .
cd /tmp/
msg "generated ${GREEN}'$zipfile'${NORMAL}"
BYTES="`ls --block-size=1 -s $zipfile 2>/dev/null |awk '{print $1}'`"
msg "zip file has $BYTES bytes"
echo $zipfile
done