Release process notes

From Erights

Revision as of 01:50, 13 May 2009 by Markm (Talk)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

I am seeding this page by jotting down notes on the process of performing the E 0.9.2 release, as a guide to others who may do future releases or more fully automate the process (please!). This information is descriptive; not prescriptive.

At Kevin's suggestion, I did a

 $ svn log -r321:HEAD svn://

to gather all the log entries since the last release. I then summarize them in the Highlights, Features, Bug Fixes, and Other Changes below.

Kevin enumerated the release blockers for the this release:

  • Since r468, help(<int>) shows no methods.
  • Since ???, epatt__quasiParser always throws a parse error.

Fixed them as of r635.

Building the Release

Once all other changes are checked in and ready to go, on a Windows Cygwin shell (with gcc and a sun jdk installed), bring all sources up to date. (svn update, etc).

In e/src/Makefile, change

 DOTVER=0.9.1c to DOTVER=0.9.2a
 TAGVER=0_9_1c to TAGVER=0_9_2a

The DOTVER is used to generate the names of the tarballs and the value of the e.version property. TAGVER is no longer used, but was used for cvs tagging.

In the "e" directory, i.e., the parent of the "e/src" directory, do

 $ chmod -R a+rX .
 $ chmod -R u+w .
 $ rm -rf classes/ dist/ export/ tarballs/
 $ ls -la # verify the directories are actually gone.

None of the above should be necessary, but helps to work around various weirdnesses that seem to crop up on Windows, such as directories that can't be deleted. However, the permissions fixes may only be needed on systems in which Polaris is installed.

 $ cd src
 $ MAKE_PARSERS=true make draft tarballs
 $ ls -la ../tarballs

For reference, this time the output looked like

$ ls -la ../tarballs
total 23888
drwxr-xr-x+ 2 Terry None        0 May 10 20:21 .
drwxr-xr-x+ 9 Terry None        0 May 10 20:17 ..
-rw-r--r--  1 Terry None  3143728 May 10 20:21 E-purej-0.9.2a.tar.gz
-rw-r--r--  1 Terry None 15954776 May 10 20:20 E-src-0.9.2a.tar.gz
-rw-r--r--  1 Terry None  5353732 May 10 20:21

Note that the make can take vastly longer on Windows than it does on Unix. Or maybe it's just our old PC. Or maybe it's a bad interaction with Polaris. We don't know.

For normal development, you normally don't need MAKE_PARSERS. However, this should be on when building a release and prior to the final checkin. If the make succeeds and everything looks good, then try installing the by unpacking it into a fresh directory, where you'd like E installed, such as c:/Program Files/ Make the directory if necessary. Double click on e.jar. If E installs successfully, your should see a monologue box pop up saying "Welcome to E 0.9.2a".

Run whatever other tests you need to feel comfortable that E still works after the changes since the last release. (Ideally, this would be an automated set of tests that are normally all green. We are not yet ready for that.)

If it all checks out, then do an SVN commit.

 $ svn ci

or interactively using Tortoise SVN (recommended). The commit message should state that this corresponds to this release.

Updating the web site

Check out and/or SVN update the website. The following assumes that the "doc" directory is placed under "e" as a sibling to "src".

$ cd ../doc/dowload
$ ls -la

We see an "0-9-1" directory but no "0-9-2" directory. We copy 0-9-1 to make an initial draft 0-9-2, remove all 0-9-2 ".svn" subdirectories, and modify 0-9-2 to reflect the new release.

$ cp -r 0-9-1 0-9-2
$ cd 0-9-2
$ rm -rf `find . -name '.svn'`

Note that this directory copy-and-revise is not a good practice. We should switch towards documenting the current release on, and maintain a single canonical set of install documentation, rather than a per-release copy.

Within the 0-9-2 directory,

  • Replace all occurrences of "0.9.1b" with "0.9.2a".
  • Replace all "0-9-1" with "0-9-2". This will inappropriately change some of the navigation button links at the top and bottom of the page, but we will repair those below.
  • Because I have stupidly temporarily lost access to my account on, I am replacing all "" with nothing, turning the rest of these links into links into the local directory.

(The tool I happen to use for search-and-replace is also my favorite almost-wysiwyg html editor, Dreamweaver.)

Then, back up in the doc directory (the root of the website)

$ cd ../..

I edit toc.txt to include the new 0-9-2 copy of the files. Save. Then rebuild the page navigation buttons

$ make buttons

Next, I revise the text on the pages in this directory to more accurately describe the 0.9.2a release. Kevin reminds me that these pages have carried forward many old issues, like daffE, which are no longer relevant. Since this leads to the removal of several files (README.html, highlights.html, linux-motif-x86-install.html, linux-gtk-x86-install.html, and mac-ppc-install.html), I also remove any that appear in the 0-9-2 section of toc.txt and re "make buttons" as above.

I do an SVN commit of all relevant files.

Uploading and Finishing Touches

Then I build the doc.tar.gz representing the surface of the new website. I use the following private bash function (in my "~/.bashrc" which is not checked in because it hasn't yet been engineered for use by anyone else:

mkdoc () 
   rm -rf ~/efoo/doc;
   echo "starting";
   rune ~/e/src/esrc/scripts/copyOnly.e '~/'e/doc '~/'efoo/doc .html;
   echo "html";
   rune ~/e/src/esrc/scripts/copyOnly.e '~/'e/doc '~/'efoo/doc .gif;
   rune ~/e/src/esrc/scripts/copyOnly.e '~/'e/doc '~/'efoo/doc .jpg;
   rune ~/e/src/esrc/scripts/copyOnly.e '~/'e/doc '~/'efoo/doc .jpeg;
   rune ~/e/src/esrc/scripts/copyOnly.e '~/'e/doc '~/'efoo/doc .png;
   rune ~/e/src/esrc/scripts/copyOnly.e '~/'e/doc '~/'efoo/doc .txt;
   echo "copied";
   rm -rf `find ~/efoo/doc -name .svn`;
   rm -rf ~/efoo/doc/talks/e-overview;
   rm -rf ~/efoo/doc/javadoc;
   echo "prepared";
   ( cd ~/efoo;
   tar czf ~/e/doc/download/doc.tar.gz doc );
   echo "packaged";
   ( cd ~/e/doc/download;
   scp doc.tar.gz );
   ( cd ~/e/doc/download;
   scp doc.tar.gz )

Because I don't currently have access to my account, the last scp above will fail.

Once the scp'ing is done, I then manually ssh into each of these sites (currently just and do

# Remotely at the site
$ cd ~/e
$ tar xzf doc/download/doc.tar.gz

Yes, I know that I can do this directly with ssh commands, but whether out of habit or a false need for hand-on comfort, I don't.

With the new website in place, I finally transfer the E distribution tarballs there. I do so by first copying them into my local 0-9-2 directory, so that my local directory will more faithfully reflect the real site.

# Locally again in my 0-9-2 directory
$ cp ../../../tarballs/*.zip ../../../tarballs/*.gz .
$ scp *.zip *.gz

I use my browser to check that the website looks good and that the download links work. I update ReleaseNotes092 to point at [1]. I update Downloads. Oops. I notice that I forgot to edit the download page to point at the 0-9-2 directory. Go through the edit, SVN commit, mkdoc, scp, ssh, unpack, check cycle again.

And finally I announce on e-lang.

Personal tools
more tools