Skip to content
Snippets Groups Projects
Commit 814abe3d authored by Andre Maroneze's avatar Andre Maroneze
Browse files

[Release] Update release script for Gitlab and minor fixes

parent d99c6537
No related branches found
No related tags found
No related merge requests found
...@@ -54,57 +54,51 @@ run () { ...@@ -54,57 +54,51 @@ run () {
fi fi
} }
GITHUB_DIR=./Frama-C-snapshot GITLAB_DIR=./pub-frama-c
GITHUB_GIT="git@github.com:Frama-C/Frama-C-snapshot.git" GITLAB_GIT="git@git.frama-c.com:pub/frama-c.git"
if test ! -d $GITHUB_DIR/.git; then if test ! -d $GITLAB_DIR/.git; then
echo "WARNING: $GITHUB_DIR/.git directory not found; do you want to clone it? (y/n)" echo "WARNING: $GITLAB_DIR/.git directory not found; do you want to clone it? (y/n)"
read CHOICE read CHOICE
case "${CHOICE}" in case "${CHOICE}" in
"Y"|"y") "Y"|"y")
run "git clone $GITHUB_GIT" run "git clone $GITLAB_GIT $GITLAB_DIR"
;; ;;
*) *)
echo "github's Frama-C-snapshot project must be linked at $GITHUB_DIR \ echo "gitlab's public Frama-C project must be linked at $GITLAB_DIR \
(clone or symbolic link)" (clone or symbolic link)"
exit 1 exit 1
;& ;&
esac esac
fi fi
GITHUB_BRANCH=$(git --git-dir=$GITHUB_DIR/.git rev-parse --abbrev-ref HEAD) GITLAB_BRANCH=$(git --git-dir=$GITLAB_DIR/.git rev-parse --abbrev-ref HEAD)
if test "$FRAMAC_BRANCH" != "$GITLAB_BRANCH"; then
if test "$FINAL_RELEASE" = "yes" -a "$GITHUB_BRANCH" != "master"; then echo "WARNING: switching pub-frama-c to current branch $FRAMAC_BRANCH"
echo "WARNING: your setup will commit (locally) a final release on a non-master branch of Frama-C-snapshot"; run "git -C $GITLAB_DIR checkout -b $FRAMAC_BRANCH"
fi
if test "$FINAL_RELEASE" = "no" -a "$GITHUB_BRANCH" = "master";
then
echo "WARNING: your setup will commit (locally) an intermediate release on the master branch of Frama-C-snapshot"
fi fi
GITLAB_WIKI_GIT="git@git.frama-c.com:pub/frama-c.wiki"
GITHUB_WIKI_GIT="git@github.com:Frama-C/Frama-C-snapshot.wiki.git" GITLAB_WIKI=./frama-c.wiki
GITHUB_WIKI=./Frama-C-snapshot.wiki if test ! -d $GITLAB_WIKI/.git; then
if test ! -d $GITHUB_WIKI/.git; then echo "WARNING: $GITLAB_WIKI/.git directory not found; do you want to clone it? (y/n)"
echo "WARNING: $GITHUB_WIKI/.git directory not found; do you want to clone it? (y/n)"
read CHOICE read CHOICE
case "${CHOICE}" in case "${CHOICE}" in
"Y"|"y") "Y"|"y")
run "git clone $GITHUB_WIKI_GIT" run "git clone $GITLAB_WIKI_GIT"
;; ;;
*) *)
echo "Frama-C-snapshot wiki must be linked at $GITHUB_WIKI \ echo "pub/frama-c wiki must be linked at $GITLAB_WIKI \
(clone or symbolic link)" (clone or symbolic link)"
exit 1 exit 1
;& ;&
esac esac
fi fi
GITHUB_WIKI_BRANCH=$(git --git-dir=$GITHUB_WIKI/.git rev-parse --abbrev-ref HEAD) GITLAB_WIKI_BRANCH=$(git --git-dir=$GITLAB_WIKI/.git rev-parse --abbrev-ref HEAD)
if test "$GITHUB_WIKI_BRANCH" != "master"; then if test "$GITLAB_WIKI_BRANCH" != "master"; then
echo "WARNING: Frama-C-snapshot's wiki is not on the master branch"; echo "WARNING: pub/frama-c's wiki is not on the master branch";
fi fi
ACSL_GIT="git@github.com:acsl-language/acsl.git" ACSL_GIT="git@gitlab.com:acsl-language/acsl.git"
ACSL_DIR="./doc/acsl" ACSL_DIR="./doc/acsl"
if test \! -d $ACSL_DIR/.git ; then if test \! -d $ACSL_DIR/.git ; then
echo "WARNING: $ACSL_DIR/.git directory not found; do you want to clone it? (y/n)" echo "WARNING: $ACSL_DIR/.git directory not found; do you want to clone it? (y/n)"
...@@ -125,12 +119,6 @@ fi ...@@ -125,12 +119,6 @@ fi
MANUALS_DIR="./doc/manuals" MANUALS_DIR="./doc/manuals"
#if test \! -d $MANUALS_DIR/.git ; then
# echo "ERROR: $MANUALS_DIR/.git directory not found"
# echo "The Frama-C manuals repository must linked at $MANUALS_DIR (clone or symbolic link)"
# exit 1
#fi
#MANUALS_BRANCH=`git --git-dir=$MANUALS_DIR/.git rev-parse --abbrev-ref HEAD`
# push on frama-c.com only for final releases # push on frama-c.com only for final releases
if test "$FINAL_RELEASE" = "yes"; then if test "$FINAL_RELEASE" = "yes"; then
...@@ -149,11 +137,10 @@ BUILD_DIR="$BUILD_DIR_ROOT/frama-c" ...@@ -149,11 +137,10 @@ BUILD_DIR="$BUILD_DIR_ROOT/frama-c"
echo "Frama-C Version : $FRAMAC_VERSION" echo "Frama-C Version : $FRAMAC_VERSION"
echo "Frama-C Branch : $FRAMAC_BRANCH" echo "Frama-C Branch : $FRAMAC_BRANCH"
echo "Final release : $FINAL_RELEASE" echo "Final release : $FINAL_RELEASE"
echo "Frama-C-snapshot dir : $GITHUB_DIR" echo "pub/frama-c dir : $GITLAB_DIR"
echo "Frama-C-snapshot branch : $GITHUB_BRANCH" echo "pub/frama-c branch : $GITLAB_BRANCH"
echo "Frama-C-snapshot wiki : $GITHUB_WIKI" echo "pub/frama-c wiki : $GITLAB_WIKI"
echo "Manuals Dir : $MANUALS_DIR" echo "Manuals Dir : $MANUALS_DIR"
#echo "Manuals Branch : $MANUALS_BRANCH"
if test "$FINAL_RELEASE" = "yes"; then if test "$FINAL_RELEASE" = "yes"; then
echo "Website Dir : $WEBSITE_DIR" echo "Website Dir : $WEBSITE_DIR"
echo "Website Branch : $WEBSITE_BRANCH" echo "Website Branch : $WEBSITE_BRANCH"
...@@ -198,15 +185,18 @@ case "${STEP}" in ...@@ -198,15 +185,18 @@ case "${STEP}" in
run "doc/build-manuals.sh" run "doc/build-manuals.sh"
;& ;&
1) 1)
run "git -C $GITHUB_DIR reset --hard" run "git -C $GITLAB_DIR reset --hard"
run "git -C $GITHUB_WIKI reset --hard" run "git -C $GITLAB_WIKI reset --hard"
if test "$FINAL_RELEASE" = "yes"; then if test "$FINAL_RELEASE" = "yes"; then
run "git -C $WEBSITE_DIR reset --hard" run "git -C $WEBSITE_DIR reset --hard"
fi fi
;& ;&
2) 2)
step 2 "BUILDING THE SOURCE DISTRIBUTION" step 2 "BUILDING THE SOURCE DISTRIBUTION"
if ! git diff-index --quiet HEAD --; then # WARNING! MUST RUN git update-index BEFORE git diff-index!
# See: https://stackoverflow.com/questions/36367190/git-diff-files-output-changes-after-git-status
run "git update-index --refresh"
if ! git diff-index HEAD --; then
echo "" echo ""
echo "### WARNING: uncommitted git changes will be discarded when creating archive!" echo "### WARNING: uncommitted git changes will be discarded when creating archive!"
echo "Proceed anyway? [y/N]" echo "Proceed anyway? [y/N]"
...@@ -227,15 +217,9 @@ case "${STEP}" in ...@@ -227,15 +217,9 @@ case "${STEP}" in
run "cd $BUILD_DIR; make -j OPEN_SOURCE=yes src-distrib" run "cd $BUILD_DIR; make -j OPEN_SOURCE=yes src-distrib"
# sanity check: markdown-report must be distributed # sanity check: markdown-report must be distributed
run "tar tf $BUILD_DIR/$TARGZ_FILENAME | grep -q src/plugins/markdown-report" run "tar tf $BUILD_DIR/$TARGZ_FILENAME | grep -q src/plugins/markdown-report"
# cleanup Frama-C-snapshot # populate release assets in wiki
for file in $(git -C $GITHUB_DIR ls-files); do run "mkdir -p $GITLAB_WIKI/downloads"
run "rm $GITHUB_DIR/$file"; run "cp $BUILD_DIR/$TARGZ_FILENAME $GITLAB_WIKI/downloads/"
done
run "git -C $GITHUB_DIR clean -fx"
run "cd $GITHUB_DIR; tar --strip-components=1 -xzvf $BUILD_DIR/$TARGZ_FILENAME"
run "git -C $GITHUB_DIR add -A"
run "mkdir -p $GITHUB_WIKI/downloads"
run "cp $BUILD_DIR/$TARGZ_FILENAME $GITHUB_WIKI/downloads/"
if test "$FINAL_RELEASE" = "yes"; then if test "$FINAL_RELEASE" = "yes"; then
SPEC_FILE="$DOWNLOAD_DIR/$TARGZ_FILENAME" SPEC_FILE="$DOWNLOAD_DIR/$TARGZ_FILENAME"
run "rm -f $WEBSITE_DIR/$SPEC_FILE" run "rm -f $WEBSITE_DIR/$SPEC_FILE"
...@@ -284,83 +268,32 @@ case "${STEP}" in ...@@ -284,83 +268,32 @@ case "${STEP}" in
5) 5)
step 5 "COPYING AND STAGING THE DISTRIBUTED MANUALS" step 5 "COPYING AND STAGING THE DISTRIBUTED MANUALS"
PAGE_NAME=Frama-C-${FRAMAC_VERSION_AND_CODENAME}.md PAGE_NAME=Frama-C-${FRAMAC_VERSION_AND_CODENAME}.md
WIKI_PAGE=$GITHUB_WIKI/$PAGE_NAME WIKI_PAGE=$GITLAB_WIKI/$PAGE_NAME
run "mkdir -p $GITHUB_WIKI/manuals" run "mkdir -p $GITLAB_WIKI/manuals"
run "sed -i -e '/<!-- LAST RELEASE -->/a \ run "sed -i -e '/<!-- LAST RELEASE -->/a \
- [${FRAMAC_VERSION} (${FRAMAC_VERSION_CODENAME})](Frama-C-${FRAMAC_VERSION_AND_CODENAME})' $GITHUB_WIKI/Home.md" - [${FRAMAC_VERSION} (${FRAMAC_VERSION_CODENAME})](Frama-C-${FRAMAC_VERSION_AND_CODENAME})' $GITLAB_WIKI/Home.md"
echo "# Frama-C release ${FRAMAC_VERSION} (${FRAMAC_VERSION_CODENAME})" > $WIKI_PAGE echo "# Frama-C release ${FRAMAC_VERSION} (${FRAMAC_VERSION_CODENAME})" > $WIKI_PAGE
echo "## Sources" >> $WIKI_PAGE echo "## Sources" >> $WIKI_PAGE
echo " - [$TARGZ_FILENAME](downloads/$TARGZ_FILENAME)" >> $WIKI_PAGE echo " - [$TARGZ_FILENAME](downloads/$TARGZ_FILENAME)" >> $WIKI_PAGE
echo "" >> $WIKI_PAGE echo "" >> $WIKI_PAGE
echo "## Manuals" >> $WIKI_PAGE echo "## Manuals" >> $WIKI_PAGE
for f in "user-manual" "acsl-implementation" "eva-manual" "plugin-development-guide" "rte-manual" "wp-manual" "metrics-manual" "aorai-manual"; do for fpath in $MANUALS_DIR/*; do
echo "- [$f](manuals/$f-${FRAMAC_VERSION_AND_CODENAME}.pdf)" >> $WIKI_PAGE f=$(basename $fpath)
run "cp $MANUALS_DIR/$f.pdf $GITHUB_WIKI/manuals/$f-${FRAMAC_VERSION_AND_CODENAME}.pdf" f_no_ext=${f%.*}
run "git -C $GITHUB_WIKI add manuals/$f-${FRAMAC_VERSION_AND_CODENAME}.pdf" if [[ $f =~ ^frama-c ]]; then
if test "$FINAL_RELEASE" = "yes"; then echo "Skipping adding link to $f in wiki"
SPEC_FILE="$DOWNLOAD_DIR/$f-${FRAMAC_VERSION_AND_CODENAME}.pdf" continue
RELE_FILE="$DOWNLOAD_DIR/frama-c-$f.pdf" fi
run "rm -f $WEBSITE_DIR/$SPEC_FILE $WEBSITE_DIR/$RELE_FILE" if [[ $f_no_ext = *${FRAMAC_VERSION_AND_CODENAME} ]]; then
run "cp $MANUALS_DIR/$f.pdf $WEBSITE_DIR/$SPEC_FILE"; echo "Skipping adding link to $f in wiki"
run "ln -s $f-${FRAMAC_VERSION_AND_CODENAME}.pdf $WEBSITE_DIR/$RELE_FILE"; continue
run "git -C $WEBSITE_DIR add $SPEC_FILE" fi
run "git -C $WEBSITE_DIR add $RELE_FILE" echo "- [$f](manuals/$f)" >> $WIKI_PAGE
fi run "cp $fpath $GITLAB_WIKI/manuals/"
done run "git -C $GITLAB_WIKI add manuals/$f"
for f in "aorai-example"; do done
if test "$FINAL_RELEASE" = "yes"; then
SPEC_FILE="$DOWNLOAD_DIR/$f-${FRAMAC_VERSION_AND_CODENAME}.tgz"
RELE_FILE="$DOWNLOAD_DIR/frama-c-$f.tgz"
run "rm -f $WEBSITE_DIR/$SPEC_FILE $WEBSITE_DIR/$RELE_FILE"
run "cp $MANUALS_DIR/$f.tgz $WEBSITE_DIR/$SPEC_FILE";
run "ln -s $f-${FRAMAC_VERSION_AND_CODENAME}.tgz $WEBSITE_DIR/$RELE_FILE";
run "git -C $WEBSITE_DIR add $SPEC_FILE"
run "git -C $WEBSITE_DIR add $RELE_FILE"
fi
done
for f in "acsl"; do run "git -C $GITLAB_WIKI add $PAGE_NAME"
ACSL_VERSION=`cat doc/acsl/ACSL_VERSION`
if test "$FINAL_RELEASE" = "yes"; then
SPEC_FILE="$DOWNLOAD_DIR/${f}-${ACSL_VERSION}.pdf"
RELE_FILE="$DOWNLOAD_DIR/$f.pdf"
run "rm -f $WEBSITE_DIR/$SPEC_FILE $WEBSITE_DIR/$RELE_FILE"
run "cp $MANUALS_DIR/$f.pdf $WEBSITE_DIR/$SPEC_FILE";
run "ln -s ${f}-${ACSL_VERSION}.pdf $WEBSITE_DIR/$RELE_FILE";
run "git -C $WEBSITE_DIR add $SPEC_FILE"
run "git -C $WEBSITE_DIR add $RELE_FILE"
fi
done
for f in "e-acsl-manual" "e-acsl-implementation"; do
echo "- [$f](manuals/${f}-${FRAMAC_VERSION_AND_CODENAME}.pdf)" >> $WIKI_PAGE
run "cp src/plugins/e-acsl/doc/manuals/$f.pdf $GITHUB_WIKI/manuals/${f}-${FRAMAC_VERSION_AND_CODENAME}.pdf"
run "git -C $GITHUB_WIKI add manuals/${f}-${FRAMAC_VERSION_AND_CODENAME}.pdf"
if test "$FINAL_RELEASE" = "yes"; then
SPEC_FILE="$DOWNLOAD_DIR/e-acsl/${f}-${FRAMAC_VERSION_AND_CODENAME}.pdf"
RELE_FILE="$DOWNLOAD_DIR/e-acsl/$f.pdf"
run "rm -f $WEBSITE_DIR/$SPEC_FILE $WEBSITE_DIR/$RELE_FILE"
run "cp src/plugins/e-acsl/doc/manuals/$f.pdf $WEBSITE_DIR/$SPEC_FILE"
run "ln -s ${f}-${FRAMAC_VERSION_AND_CODENAME}.pdf $WEBSITE_DIR/$RELE_FILE";
run "git -C $WEBSITE_DIR add $SPEC_FILE"
run "git -C $WEBSITE_DIR add $RELE_FILE"
fi
done
# E-ACSL manuals based on ACSL version number
for f in "e-acsl"; do
echo "- [$f](manuals/${f}-${ACSL_VERSION}.pdf)" >> $WIKI_PAGE
run "cp src/plugins/e-acsl/doc/manuals/$f.pdf $GITHUB_WIKI/manuals/${f}-${ACSL_VERSION}.pdf"
run "git -C $GITHUB_WIKI add manuals/${f}-${ACSL_VERSION}.pdf"
if test "$FINAL_RELEASE" = "yes"; then
SPEC_FILE="$DOWNLOAD_DIR/e-acsl/${f}-${ACSL_VERSION}.pdf"
RELE_FILE="$DOWNLOAD_DIR/e-acsl/$f.pdf"
run "rm -f $WEBSITE_DIR/$SPEC_FILE $WEBSITE_DIR/$RELE_FILE"
run "cp src/plugins/e-acsl/doc/manuals/$f.pdf $WEBSITE_DIR/$SPEC_FILE"
run "ln -s ${f}-${ACSL_VERSION}.pdf $WEBSITE_DIR/$RELE_FILE";
run "git -C $WEBSITE_DIR add $SPEC_FILE"
run "git -C $WEBSITE_DIR add $RELE_FILE"
fi
done
run "git -C $GITHUB_WIKI add $PAGE_NAME"
;; ;;
*) *)
echo "Bad entry: ${STEP}" echo "Bad entry: ${STEP}"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment