Translation update done using Pootle.
[phpmyadmin/crack.git] / scripts / create-release.sh
blob3fb94c05f4f1c892dc6fb0ab152b2251e789438f
1 #!/bin/sh
3 # vim: expandtab sw=4 ts=4 sts=4:
6 # More documentation about making a release is available at:
7 # http://wiki.phpmyadmin.net/pma/Devel:Releasing
9 # Fail on undefined variables
10 set -u
11 # Fail on failure
12 set -e
14 KITS="all-languages english"
15 COMPRESSIONS="zip-7z tbz txz tgz 7z"
17 if [ $# -lt 2 ]
18 then
19 echo "Usages:"
20 echo " create-release.sh <version> <from_branch> [--tag]"
21 echo ""
22 echo "If --tag is specified, relase tag is automatically created"
23 echo ""
24 echo "Examples:"
25 echo " create-release.sh 2.9.0-rc1 QA_2_9"
26 echo " create-release.sh 2.9.0 MAINT_2_9_0 --tag"
27 exit 65
31 # Checks whether remote branch has local tracking branch
32 ensure_local_branch() {
33 if ! git branch | grep -q '^..'"$1"'$' ; then
34 git branch --track $1 origin/$1
38 # Marks current head of given branch as head of other branch
39 # Used for STABLE/TESTING tracking
40 mark_as_release() {
41 branch=$1
42 rel_branch=$2
43 echo "* Marking release as $rel_branch"
44 ensure_local_branch $rel_branch
45 git checkout $rel_branch
46 git merge -s recursive -X theirs $branch
49 # Read required parameters
50 version=$1
51 shift
52 branch=$1
53 shift
55 cat <<END
57 Please ensure you have:
58 1. incremented rc count or version in the repository :
59 - in libraries/Config.class.php PMA_Config::__constructor() the line
60 " \$this->set( 'PMA_VERSION', '$version' ); "
61 - in Documentation.html the 2 lines
62 " <title>phpMyAdmin $version - Documentation</title> "
63 " <h1>phpMyAdmin $version Documentation</h1> "
64 - in translators.html
65 - in README
66 2. checked that all language files are valid (use
67 the "./scripts/check_lang.php" script to do it).
69 Continue (y/n)?
70 END
71 read do_release
73 if [ "$do_release" != 'y' ]; then
74 exit 100
77 # Ensure we have tracking branch
78 ensure_local_branch $branch
80 # Create working copy
81 mkdir -p release
82 workdir=release/phpMyAdmin-$version
83 if [ -d $workdir ] ; then
84 echo "Working directory '$workdir' already exists, please move it out of way"
85 exit 1
87 git clone --local . $workdir
88 cd $workdir
90 # Checkout branch
91 ensure_local_branch $branch
92 git checkout $branch
94 # Check release version
95 if ! grep -q "'PMA_VERSION', '$version'" libraries/Config.class.php ; then
96 echo "There seems to be wrong version in libraries/Config.class.php!"
97 exit 2
99 if ! grep -q "phpMyAdmin $version - Documentation" Documentation.html ; then
100 echo "There seems to be wrong version in Documentation.html"
101 exit 2
103 if ! grep -q "phpMyAdmin $version - Official translators" translators.html ; then
104 echo "There seems to be wrong version in translators.html"
105 exit 2
107 if ! grep -q "Version $version\$" README ; then
108 echo "There seems to be wrong version in README"
109 exit 2
112 # Cleanup release dir
113 LC_ALL=C date -u > RELEASE-DATE-${version}
115 # Building Documentation.txt
116 echo "* Generating Documentation.txt"
117 LC_ALL=C w3m -dump Documentation.html > Documentation.txt
119 # Check for gettext support
120 if [ -d po ] ; then
121 GETTEXT=1
122 else
123 GETTEXT=0
126 # Generate mo files
127 if [ $GETTEXT -eq 1 ] ; then
128 echo "* Generating mo files"
129 ./scripts/generate-mo
130 echo "* Removing gettext source files"
131 rm -rf po
134 if [ -f ./scripts/compress-js ] ; then
135 echo "* Compressing javascript files"
136 ./scripts/compress-js
137 rm -rf sources
140 echo "* Removing unneeded files"
142 # Remove test directory from package to avoid Path disclosure messages
143 # if someone runs /test/wui.php and there are test failures
144 rm -rf test
146 # Remove javascript compiler, no need to ship it
147 rm -rf scripts/google-javascript-compiler/
149 # Remove scripts which are not useful for user
150 for s in compress-js create-release.sh generate-mo mergepo.py php2gettext.sh remove_control_m.sh update-po upload-release ; do
151 rm -f scripts/$s
152 done
154 # Remove git metadata
155 rm -rf .git
156 find . -name .gitignore -print0 | xargs -0 -r rm -f
158 cd ..
160 # Prepare all kits
161 for kit in $KITS ; do
162 # Copy all files
163 name=phpMyAdmin-$version-$kit
164 cp -r phpMyAdmin-$version $name
166 # Cleanup translations
167 cd phpMyAdmin-$version-$kit
168 scripts/lang-cleanup.sh $kit
169 rm -f scripts/lang-cleanup.sh
170 cd ..
172 # Remove tar file possibly left from previous run
173 rm -f $name.tar
175 # Prepare distributions
176 for comp in $COMPRESSIONS ; do
177 case $comp in
178 tbz|tgz|txz)
179 if [ ! -f $name.tar ] ; then
180 echo "* Creating $name.tar"
181 tar cf $name.tar $name
183 if [ $comp = tbz ] ; then
184 echo "* Creating $name.tar.bz2"
185 bzip2 -9k $name.tar
187 if [ $comp = txz ] ; then
188 echo "* Creating $name.tar.xz"
189 xz -9k $name.tar
191 if [ $comp = tgz ] ; then
192 echo "* Creating $name.tar.gz"
193 gzip -9c $name.tar > $name.tar.gz
196 zip)
197 echo "* Creating $name.zip"
198 zip -q -9 -r $name.zip $name
200 zip-7z)
201 echo "* Creating $name.zip"
202 7za a -bd -tzip $name.zip $name > /dev/null
205 echo "* Creating $name.7z"
206 7za a -bd $name.7z $name > /dev/null
209 echo "WARNING: ignoring compression '$comp', not known!"
211 esac
213 # Cleanup
214 rm -f $name.tar
215 done
217 # Remove directory with current dist set
218 rm -rf $name
219 done
221 # Cleanup
222 rm -rf phpMyAdmin-${version}
225 echo ""
226 echo ""
227 echo ""
228 echo "Files:"
229 echo "------"
231 ls -la *.gz *.zip *.bz2 *.7z
233 cd ..
236 if [ $# -gt 0 ] ; then
237 echo
238 echo "Additional tasks:"
239 while [ $# -gt 0 ] ; do
240 param=$1
241 case $1 in
242 --tag)
243 tagname=RELEASE_`echo $version | tr . _ | tr '[:lower:]' '[:upper:]' | tr -d -`
244 echo "* Tagging release as $tagname"
245 git tag -a -m "Released $version" $tagname $branch
246 if echo $version | grep -q '^2\.11\.' ; then
247 echo '* 2.11 branch, no STABLE/TESTING update'
248 else
249 if echo $version | grep '[a-z_-]' ; then
250 mark_as_release $branch TESTING
251 else
252 # We update both branches here
253 # As it does not make sense to have older testing than stable
254 mark_as_release $branch TESTING
255 mark_as_release $branch STABLE
257 git checkout master
259 echo " Dont forget to push tags using: git push --tags"
262 echo "Unknown parameter: $1!"
263 exit 1
264 esac
265 shift
266 done
267 echo
270 cat <<END
273 Todo now:
274 ---------
276 1. If not already done, tag the repository with the new revision number
277 for a plain release or a release candidate:
278 version 2.7.0 gets two tags: RELEASE_2_7_0 and STABLE
279 version 2.7.1-rc1 gets RELEASE_2_7_1RC1 and TESTING
281 2. prepare a release/phpMyAdmin-$version-notes.html explaining in short the goal of
282 this release and paste into it the ChangeLog for this release
283 3. upload the files to SF, you can use scripts/upload-release, eg.:
285 ./scripts/upload-release \$USER $version release
286 4. add SF news item to phpMyAdmin project
287 5. announce release on freshmeat (http://freshmeat.net/projects/phpmyadmin/)
288 6. send a short mail (with list of major changes) to
289 phpmyadmin-devel@lists.sourceforge.net
290 phpmyadmin-news@lists.sourceforge.net
291 phpmyadmin-users@lists.sourceforge.net
293 Don't forget to update the Description section in the announcement,
294 based on Documentation.html.
296 7. increment rc count or version in the repository :
297 - in libraries/Config.class.php PMA_Config::__constructor() the line
298 " \$this->set( 'PMA_VERSION', '2.7.1-dev' ); "
299 - in Documentation.html the 2 lines
300 " <title>phpMyAdmin 2.2.2-rc1 - Documentation</title> "
301 " <h1>phpMyAdmin 2.2.2-rc1 Documentation</h1> "
302 - in translators.html
304 8. add a group for bug tracking this new version, at
305 https://sourceforge.net/tracker/admin/index.php?group_id=23067&atid=377408&add_group=1
307 9. the end :-)