iverilog/scripts/CREATE_SNAPSHOT.sh

55 lines
1.6 KiB
Bash

#!/bin/sh
# This script prepares and tags a snapshot in the git repository. The tag is
# based on the current date, e.g. when created on 03-Jan-2025 the tag will be
# s20250103. Before creating the tag, autoconf.sh will be run to create the
# configure and lexor_keyword.cc files, the verilog.spec file will be updated
# to reflect the snapshot date, and a release_tag.h file will be created in
# the top level directory to provide the VERSION_TAG macro. After creating
# the tag, the configure, lexor_keywords.cc, and release_tag.h files will be
# deleted.
#
# The complete steps to publish a snapshot are:
#
# sh scripts/CREATE_SNAPSHOT.sh
# (Create the tag and version info in the local repository)
#
# git push --follow-tags
# (Push the commits and tag to the remote repository.)
date=`date +%Y%m%d`
tag="s$date"
tag_exists=`git tag -l $tag`
if [ -n "$tag_exists" ] ; then
echo "The tag $tag already exists. Aborting"
exit 1
fi
echo "Executing autoconf.sh..."
sh autoconf.sh
if [ $? -ne 0 ] ; then
echo "autoconf.sh failed"
exit 1
fi
echo "Updating verilog.spec..."
sed -i -E "s/(define\s+rev_date\s+).*/\1$date/" verilog.spec
echo "Creating release_tag.h..."
echo "#define VERSION_TAG \"$tag\"" > release_tag.h
echo "Adding files and creating the tag..."
git add -f configure lexor_keyword.cc vhdlpp/lexor_keyword.cc
git add verilog.spec release_tag.h
git commit -m "Creating snapshot $tag"
git tag -a -m "Snapshot $id" $tag
echo "Deleting temporary files..."
git rm --cached configure lexor_keyword.cc vhdlpp/lexor_keyword.cc
git rm release_tag.h
git commit -m "Post-snapshot cleanup"
echo "Done"