source: Dev/branches/rest-dojo-ui/client/util/buildscripts/build_release.sh @ 275

Last change on this file since 275 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

  • Property svn:executable set to *
File size: 6.2 KB
Line 
1#!/bin/bash
2
3#version should be something like 0.9.0beta or 0.9.0
4version=$1
5#svnUserName is the name you use to connect to Dojo's subversion.
6svnUserName=$2
7#The svn revision number to use for tag. Should be a number, like 11203
8svnRevision=$3
9
10#If no svnRevision number, get the latest one from the repo.
11if [ "$svnRevision" = "" ]; then
12        svnRevision=`svn info http://svn.dojotoolkit.org/src/branches/1.7/util/buildscripts/build_release.sh | grep Revision | sed 's/Revision: //'`
13fi
14
15tagName=release-$version
16buildName=dojo-$tagName
17
18echo "This is a RELEASE build for Dojo, you probably meant to run build.sh"
19read -p "If you mean to create a tag for Dojo $version from r$svnRevision ... press a key to continue."
20
21#Make the SVN tag.
22svn mkdir -m "Using r$svnRevision to create a tag for the $version release." https://svn.dojotoolkit.org/src/tags/$tagName
23svn copy -r $svnRevision https://svn.dojotoolkit.org/src/branches/1.7/dojo  https://svn.dojotoolkit.org/src/tags/$tagName/dojo -m "Using r$svnRevision to create a tag for the $version release."
24svn copy -r $svnRevision https://svn.dojotoolkit.org/src/branches/1.7/dijit https://svn.dojotoolkit.org/src/tags/$tagName/dijit -m "Using r$svnRevision to create a tag for the $version release."
25svn copy -r $svnRevision https://svn.dojotoolkit.org/src/branches/1.7/dojox https://svn.dojotoolkit.org/src/tags/$tagName/dojox -m "Using r$svnRevision to create a tag for the $version release."
26svn copy -r $svnRevision https://svn.dojotoolkit.org/src/branches/1.7/util  https://svn.dojotoolkit.org/src/tags/$tagName/util -m "Using r$svnRevision to create a tag for the $version release."
27svn copy -r $svnRevision https://svn.dojotoolkit.org/src/branches/1.7/demos https://svn.dojotoolkit.org/src/tags/$tagName/demos -m "Using r$svnRevision to create a tag for the $version release."
28
29#Check out the tag
30mkdir ../../build
31cd ../../build
32svn co https://svn.dojotoolkit.org/src/tags/$tagName $buildName
33cd $buildName/util/buildscripts
34
35#Update the dojo version in the tag
36java -jar ../shrinksafe/js.jar changeVersion.js $version ../../dojo/_base/kernel.js
37java -jar ../shrinksafe/js.jar changeVersion.js $version ../../dojo/package.json
38java -jar ../shrinksafe/js.jar changeVersion.js $version ../../dijit/package.json
39java -jar ../shrinksafe/js.jar changeVersion.js $version ../../dojox/package.json
40cd ../../dojo
41svn commit -m "Updating dojo version for the tag. \!strict" package.json _base/kernel.js
42cd ../dijit
43svn commit -m "Updating dijit version for the tag. \!strict" package.json
44cd ../dojox
45svn commit -m "Updating dojox version for the tag. \!strict" package.json
46
47#Erase the SVN dir and replace with an exported SVN contents.
48cd ../..
49rm -rf ./$buildName/
50svn export http://svn.dojotoolkit.org/src/tags/$tagName $buildName
51
52# clobber cruft that we don't want in builds
53rm -rf ./$buildName/dijit/themes/noir
54rm -rf ./$buildName/dijit/bench
55
56#Make a shrinksafe bundle
57shrinksafeName=$buildName-shrinksafe
58cp -r $buildName/util/shrinksafe $buildName/util/$shrinksafeName
59cd $buildName/util
60zip -rq $shrinksafeName.zip $shrinksafeName/
61tar -zcf $shrinksafeName.tar.gz $shrinksafeName/
62mv $shrinksafeName.zip ../../
63mv $shrinksafeName.tar.gz ../../
64cd ../..
65rm -rf $buildName/util/$shrinksafeName
66
67#Make a -demos bundle (note, this is before build. Build profile=demos-all if you want to release them)
68# the -demos archives are meant to be extracted from the same folder -src or release archives, and have
69# a matching prefixed folder in the archive
70demoName=$buildName-demos
71zip -rq $demoName.zip $buildName/demos/
72tar -zcf $demoName.tar.gz $buildName/demos/
73# prevent demos/ from appearing in the -src build
74rm -rf $buildName/demos
75
76#Make a src bundle
77srcName=$buildName-src
78mv $buildName $srcName
79zip -rq $srcName.zip $srcName/
80tar -zcf $srcName.tar.gz $srcName/
81mv $srcName $buildName
82
83#Run the build.
84cd $buildName/util/buildscripts/
85chmod +x ./build.sh
86./build.sh profile=standard version=$1 releaseName=$buildName cssOptimize=comments.keepLines optimize=shrinksafe.keepLines action=release insertAbsMids=1
87# remove tests and demos, but only for the actual release:
88chmod +x ./clean_release.sh
89./clean_release.sh ../../release $buildName
90cd ../../release/
91
92#Pause to allow manual process of packing Dojo.
93currDir=`pwd`
94echo "You can find dojo in $currDir/$buildName/dojo/dojo.js"
95read -p "Build Done. If you want to pack Dojo manually, do it now, then press Enter to continue build packaging..."
96
97#Continuing with packaging up the release.
98zip -rq $buildName.zip $buildName/
99tar -zcf $buildName.tar.gz $buildName/
100mv $buildName.zip ../../
101mv $buildName.tar.gz ../../
102
103#copy compressed and uncompressed Dojo to the root
104cp $buildName/dojo/dojo.js* ../../
105
106# remove the testless release build, and unpack a -src archive to rebuild from
107cd ../../
108rm -rf $buildName/
109tar -xzvf $srcName.tar.gz
110cd $srcName/util/buildscripts/
111
112# build the version that will be extracted and live on downloads.dojotoolkit.org (with tests)
113./build.sh action=release version=$1 profile=standard cssOptimize=comments.keepLines releaseName=$buildName copyTests=true mini=false insertAbsMids=1
114
115# cleanup the -src extraction, moving the newly built tree into place.
116cd ../../release
117mv $buildName ../../
118cd ..
119rm -rf release/
120
121# generate api.xml and api.json
122cd util/docscripts/
123php -q generate.php
124mv cache/api.* ../../../../build/
125cd ../../../../
126
127# make a folder structure appropriate for directly extracting on downloads.dojotoolkit.org
128mv build release-$1
129rm -rf release-$1/$srcName/
130cd release-$1
131
132# md5sum the release files -- OSX doesn't have md5sum, foundation servers don't have md5
133md5=`which md5`
134if [[ -n $md5 && -x $md5 ]]; then
135        echo "Found $md5";
136else
137        md5=`which md5sum`
138fi
139
140if [[ -n $md5 && -x $md5 ]]; then
141        for i in *.zip; do $md5 $i > $i.md5; done
142        for i in *.gz; do $md5 $i > $i.md5; done
143        for i in *.js; do $md5 $i > $i.md5; done
144else
145        echo "ERROR: Failed to generate md5 checksums"
146fi
147
148# pack up the whole thing for easy copying
149cd ..
150tar -czvf dj-$1-dtk.tar.gz release-$1
151
152#Finished.
153outDirName=`pwd`
154echo "Build complete. Files are in: $outDirName"
155echo "A copy/paste command to push files to download.dojotoolkit.org with permission:"
156echo "scp dj-$1-dtk.tar.gz download.dojotoolkit.org:/srv/www/vhosts.d/download.dojotoolkit.org"
157echo "... then extract in place and rm dj-$1-dtk.tar.gz"
158cd ../util/buildscripts
Note: See TracBrowser for help on using the repository browser.