#!/bin/sh # # $Id$ # vim: expandtab sw=4 ts=4 sts=4: # # More documentation about making a release is available at: # http://wiki.phpmyadmin.net/pma/Devel:Releasing # Fail on undefined variables set -u # Fail on failure set -e KITS="all-languages english" COMPRESSIONS="zip-7z tbz tgz 7z" if [ $# -lt 2 ] then echo "Usages:" echo " create-release.sh [--tag]" echo "" echo "If --tag is specified, relase tag is automatically created" echo "" echo "Examples:" echo " create-release.sh 2.9.0-rc1 QA_2_9" echo " create-release.sh 2.9.0 MAINT_2_9_0 --tag" exit 65 fi # Checks whether remote branch has local tracking branch ensure_local_branch() { if ! git branch | grep -q '^..'"$1"'$' ; then git branch --track $1 origin/$1 fi } # Marks current head of given branch as head of other branch # Used for STABLE/TESTING tracking mark_as_release() { branch=$1 rel_branch=$2 echo "* Marking release as $rel_branch" ensure_local_branch $rel_branch git checkout $rel_branch git merge -s recursive -X theirs $branch } # Read required parameters version=$1 shift branch=$1 shift cat <set( 'PMA_VERSION', '$version' ); " - in Documentation.html the 2 lines " phpMyAdmin $version - Documentation " "

phpMyAdmin $version Documentation

" - in translators.html - in README 2. checked that all language files are valid (use the "./scripts/check_lang.php" script to do it). Continue (y/n)? END read do_release if [ "$do_release" != 'y' ]; then exit 100 fi # Ensure we have tracking branch ensure_local_branch $branch # Create working copy mkdir -p release workdir=release/phpMyAdmin-$version if [ -d $workdir ] ; then echo "Working directory '$workdir' already exists, please move it out of way" exit 1 fi git clone --local . $workdir cd $workdir # Checkout branch ensure_local_branch $branch git checkout $branch # Check release version if ! grep -q "'PMA_VERSION', '$version'" libraries/Config.class.php ; then echo "There seems to be wrong version in libraries/Config.class.php!" exit 2 fi if ! grep -q "phpMyAdmin $version - Documentation" Documentation.html ; then echo "There seems to be wrong version in Documentation.html" exit 2 fi if ! grep -q "phpMyAdmin $version - Official translators" translators.html ; then echo "There seems to be wrong version in translators.html" exit 2 fi if ! grep -q "Version $version\$" README ; then echo "There seems to be wrong version in README" exit 2 fi # Cleanup release dir LC_ALL=C date -u > RELEASE-DATE-${version} # Building Documentation.txt echo "* Generating Documentation.txt" LC_ALL=C w3m -dump Documentation.html > Documentation.txt # Check for gettext support if [ -d po ] ; then GETTEXT=1 else GETTEXT=0 fi # Generate mo files if [ $GETTEXT -eq 1 ] ; then echo "* Generating mo files" ./scripts/generate-mo fi if [ -f ./scripts/compress-js ] ; then echo "* Compressing javascript files" ./scripts/compress-js fi # Remove test directory from package to avoid Path disclosure messages # if someone runs /test/wui.php and there are test failures rm -rf test # Remove javascript compiler, no need to ship it rm -rf scripts/google-javascript-compiler/ # Remove git metadata rm -rf .git cd .. # Prepare all kits for kit in $KITS ; do # Copy all files name=phpMyAdmin-$version-$kit cp -r phpMyAdmin-$version $name # Cleanup translations cd phpMyAdmin-$version-$kit scripts/lang-cleanup.sh $kit cd .. # Prepare distributions for comp in $COMPRESSIONS ; do case $comp in tbz|tgz) echo "* Creating $name.tar" tar cf $name.tar $name if [ $comp = tbz ] ; then echo "* Creating $name.tar.bz2" bzip2 -9k $name.tar fi if [ $comp = tgz ] ; then echo "* Creating $name.tar.gz" gzip -9c $name.tar > $name.tar.gz fi rm $name.tar ;; zip) echo "* Creating $name.zip" zip -q -9 -r $name.zip $name ;; zip-7z) echo "* Creating $name.zip" 7za a -bd -tzip $name.zip $name > /dev/null ;; 7z) echo "* Creating $name.7z" 7za a -bd $name.7z $name > /dev/null ;; *) echo "WARNING: ignoring compression '$comp', not known!" ;; esac done # Remove directory with current dist set rm -rf $name done # Cleanup rm -rf phpMyAdmin-${version} echo "" echo "" echo "" echo "Files:" echo "------" ls -la *.gz *.zip *.bz2 *.7z cd .. if [ $# -gt 0 ] ; then echo echo "Additional tasks:" while [ $# -gt 0 ] ; do param=$1 case $1 in --tag) tagname=RELEASE_`echo $version | tr . _ | tr '[:lower:]' '[:upper:]' | tr -d -` echo "* Tagging release as $tagname" git tag -a -m "Released $version" $tagname $branch if echo $version | grep '[a-z_-]' ; then mark_as_release $branch TESTING else # We update both branches here # As it does not make sense to have older testing than stable mark_as_release $branch TESTING mark_as_release $branch STABLE fi echo " Dont forget to push tags using: git push --tags" ;; *) echo "Unknown parameter: $1!" exit 1 esac shift done echo fi cat <set( 'PMA_VERSION', '2.7.1-dev' ); " - in Documentation.html the 2 lines " phpMyAdmin 2.2.2-rc1 - Documentation " "

phpMyAdmin 2.2.2-rc1 Documentation

" - in translators.html 8. add a group for bug tracking this new version, at https://sourceforge.net/tracker/admin/index.php?group_id=23067&atid=377408&add_group=1 9. the end :-) END