diff options
author | Jani Laakso <jani.laakso@itmill.com> | 2007-03-14 08:30:38 +0000 |
---|---|---|
committer | Jani Laakso <jani.laakso@itmill.com> | 2007-03-14 08:30:38 +0000 |
commit | 1291b0a6f1c5480eff2a3b49298fd93ccec29cfd (patch) | |
tree | b62e640cba67a8d18e1cf211c2b43decd32a1e2a /build | |
parent | 0e26439120390041d9f722ead158e11a1ae82dce (diff) | |
download | vaadin-framework-1291b0a6f1c5480eff2a3b49298fd93ccec29cfd.tar.gz vaadin-framework-1291b0a6f1c5480eff2a3b49298fd93ccec29cfd.zip |
make-release.pl now tested and works correctly under Jani Laakso's environment.
svn changeset:893/svn branch:trunk
Diffstat (limited to 'build')
-rw-r--r-- | build/make-release.pl | 94 |
1 files changed, 74 insertions, 20 deletions
diff --git a/build/make-release.pl b/build/make-release.pl index 4f74e16bec..cc81558eb6 100644 --- a/build/make-release.pl +++ b/build/make-release.pl @@ -2,17 +2,26 @@ use strict; +# +# NOTE: tested only with Jani Laakso's environment +# + +# working directory to make releases +my $WORKDIR = "/home/jani/crypt/tk"; + +# directory prefix where release package zip file is stored +my $SVN_ROOT = "https://svn.itmill.com/svn/itmill-toolkit"; +my $SVN_URL_BUILDS = $SVN_ROOT."/builds"; + my $usage = "Usage: make-release.sh <branch> <version> <dir>\n". " <branch> is new major.minor version, e.g. 4.0\n". " <version> is new version, e.g. 4.0.1-rc3\n". - " <dir> is dir to store release zip file, e.g. internal/4.0.1-rc/\n"; - -die ("This is not yet tested, do not use.\n"); + " <target> is directory to store release zip file, e.g. internal/4.0.1-rc/\n"; my $BRANCH = shift(@ARGV) || die($usage); my $VERSION = shift(@ARGV) || die($usage); -my $DIR = shift(@ARGV) || die($usage); +my $TARGET = shift(@ARGV) || die($usage); my $t = ""; @@ -29,38 +38,83 @@ if ( "(0-999) and optional release candidate number {m}=(0-99).\n"); } if ( - (!$DIR =~ /release\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}/) && - (!$DIR =~ /internal\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}-rc[0-9]{1,2}/) + (!$TARGET =~ /release\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}/) && + (!$TARGET =~ /internal\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}-rc[0-9]{1,2}/) ) { die ("<dir> must be e.g. internal/4.0.1-rc/ or release/4.0.\n"); } +print "Make sure $WORKDIR directory\n"; +print "BRANCH [$BRANCH]\nVERSION [$VERSION]\nDIR [$SVN_URL_BUILDS$TARGET]\n"; + +&proceed("Initializing repositories"); # go to directory where repository working copies (WC) are -`cd ~/toolkit`; +chdir($WORKDIR); +# delete old repo +&execute("rm -rf $BRANCH"); +# checkout (if missing) build repository +&execute("svn co $SVN_ROOT/builds"); # it's safest to replace 4.0 from trunk (but you could use also merging) -`svn rm https://svn.itmill.com/svn/itmill-toolkit/branches/$BRANCH -m "Recreating $BRANCH branch from trunk. Removing old $BRANCH."`; -`svn copy https://svn.itmill.com/svn/itmill-toolkit/trunk https://svn.itmill.com/svn/itmill-toolkit/branches/$BRANCH -m "Recreating $BRANCH branch from trunk. Copying new $BRANCH."`; +&execute( + "svn rm $SVN_ROOT/branches/$BRANCH ". + "-m \"Recreating $BRANCH branch from trunk. Removing old $BRANCH.\"" +); +&execute( + "svn copy $SVN_ROOT/trunk $SVN_ROOT/branches/$BRANCH ". + "-m \"Recreating $BRANCH branch from trunk. Copying new $BRANCH.\"" +); # checkout $BRANCH -`svn co https://svn.itmill.com/svn/itmill-toolkit/branches/$BRANCH`; +&execute("svn co $SVN_ROOT/branches/$BRANCH"); +&proceed("Changing VERSION"); # go to $BRANCH directory -chdir("$BRANCH"); +chdir("$WORKDIR/$BRANCH"); # fix links as VERSION changes -`sed s/cat build/VERSION | cut -f2 -d'='/$VERSION/ index.html >index.html`; +&execute( + "sed s/`cat build/VERSION | cut -f2 -d'='`/$VERSION/ ". + "index.html >/tmp/index.html" +); +&execute("diff index.html /tmp/index.html"); +&execute("cp /tmp/index.html index.html"); # increment VERSION -`echo "version=$VERSION" >build/VERSION`; +&execute("echo \"version=$VERSION\" >build/VERSION"); +&proceed("Commit changes"); # commit changes -`svn ci -m "Building <VERSION> release."`; +&execute("svn ci -m \"Building $VERSION release.\""); +&proceed("Executing ant"); # execute build script, takes 5-40 minutes depending on hw -`ant`; +chdir("$WORKDIR/$BRANCH/build"); +&execute("ant"); +&proceed("Copying branch 4.0 under tags branch"); # copy branch 4.0 into tags directory (some may interpret this as tagging) -`svn copy https://svn.itmill.com/svn/itmill-toolkit/branches/4.0 https://svn.itmill.com/svn/itmill-toolkit/tags/<VERSION> -m "Copying $VERSION into tags."`; +&execute( + "svn copy $SVN_ROOT/branches/4.0 $SVN_ROOT/tags/$VERSION ". + "-m \"Copying $VERSION release into tags.\"" +); +&proceed("Committing release package zip file to builds dir"); # commit release package zip to SVN -`cp result/itmill-toolkit-$VERSION.zip ~/toolkit/builds/$DIR`; -chdir("~/toolkit/builds/$DIR"); -`svn add itmill-toolkit-$VERSION.zip`; -`svn ci -m "Added $VERSION release."`; +&execute("cp result/itmill-toolkit-$VERSION.zip $WORKDIR/builds/$TARGET"); +chdir("$WORKDIR/builds/$TARGET"); +&execute("svn add itmill-toolkit-$VERSION.zip"); +&execute("svn ci -m \"Added $VERSION release package.\""); + +print "Done.\n"; +exit; + +sub proceed() { + my $msg = shift; + $msg = "\n\n*** ".$msg.", press any key to continue ***"; + print $msg; + <STDIN>; +} + +sub execute() { + my $cmd = shift; + print " $cmd\n"; + my $result = `$cmd`; + print $result."\n"; +} |