[Swift-devel] Example of a binary release build process from the OpenMX team
Michael Wilde
wilde at mcs.anl.gov
Wed Feb 23 11:30:54 CST 2011
Attached is a note from Michael Spiegel on how they build OpenMx releases. Just fyi.
OpenMx has a much harder job than us because they build binaries compiled for specific platforms. As a pure Java product, we avoid much of this.
But the attached doc has some release workflow examples that may be useful to us, including building the doc set and updating their web with a notice about the new release.
They dont automate this; we have I think some automation of our process but it needs to be dusted off, adjusted, and documented.
- Mike
----- Forwarded Message -----
From: "Michael Spiegel" <michael.m.spiegel at gmail.com>
To: "OpenMx Developers" <openmx-developers at list.mail.virginia.edu>
Sent: Tuesday, February 22, 2011 3:54:00 PM
Subject: [[openmx-dev]] binary release instructions
These instructions are primarily for Ross. But I figured we should
keep a record of this information somewhere. I do not recommend
attempting to automate this process, unless you are very good at
writing error handling routines for shell scripts. Invariably,
something will go wrong in the build process. When running this
process by hand, a person can stop and attempt to correct the problem.
An automated script is likely to push the website into an
inconsistent state.
--Michael
--
Michael Wilde
Computation Institute, University of Chicago
Mathematics and Computer Science Division
Argonne National Laboratory
-------------- next part --------------
There are four possible build types when creating an OpenMx binary
release. These four types are the cross-product of: (a) either building
a "dev" release from /trunk or a "stable" release from /tag. And (b) either
building the online documentation or not. Never lose track of which build
type you currently creating.
The following definitions are used in these notes:
SERVER = "openmx.psyc.virginia.edu"
SERVER_ROOT = "/var/openmx/newrelease"
SVN_REPO = either the "trunk" directory or a "tags/stable-XX" directory
I. On your local machine, we are run several tests on the code.
When the tests have passed, we will commit some changes to
the svn repository that indicate a new binary version has been released.
- In SVN_REPO, run "make install".
- In SVN_REPO, run "make test". Optionally use the CPUS=n argument.
All these tests MUST PASS.
- In SVN_REPO, run "make check". Ignore the warning for missing documentation
entires. All other warnings must be corrected.
- Go to http://openmx.psyc.virginia.edu/dev/timeline. Let R* be the revision number
in the top left panel. The next revision number R = R* + 1. The full version number
of a "dev" release is VERSION = 999.0.0-R. The full version number of a stable release is
VERSION = X.Y.Z-R.
- In SVN_REPO/Makefile, change the TARGET to OpenMx_[VERSION].tar.gz.
In SVN_REPO/DESCRIPTION, change the "Version:" field and the "Date:" field.
In SVN_REPO/CHANGES, rename the first line from "trunk" to "Release [VERSION] (Today's date)".
In SVN_REPO/CHANGES, make sure to update the "=====" to the correct length. That eliminates a warning message.
If you are building the documentation, then in docs/source/conf.py update release and version information.
- Commit these changes to the SVN repository. Step (I) is completed.
II. ssh to SERVER and go to the directory SERVER_ROOT. Run the script ./cleanup.sh.
You are going to build the binary release on various machines. For each build,
you will copy the result into a subdirectory of SERVER_ROOT. Each row of the following
table has a hostname, a makefile target, the output file on the hostname, and the
destination directory on SERVER.
hostname make target output file destination directory
euterpe build32 build/OpenMx**.tar.gz macosx-intel-32-2.12
euterpe build64 build/OpenMx**.tar.gz macosx-intel-64-2.12
euterpe buildppc build/OpenMx**.tar.gz macosx-intel-ppc-2.12
euterpe srcbuild build/OpenMx**.tar.gz source
euterpe pdf build/OpenMx.pdf docs-api-pdf
polymnia build32 build/OpenMx**.tar.gz macosx-intel-32-2.11
polymnia build64 build/OpenMx**.tar.gz macosx-intel-64-2.11
polymnia buildppc build/OpenMx**.tar.gz macosx-intel-ppc-2.11
win R 2.11 winbuild32 build/OpenMx**.tar.gz windows-32-2.11
win R 2.12 winbuild32 build/OpenMx**.tar.gz windows-32-2.12
You will need to rely on me to generate the windows builds until somebody else
on the team procures a reasonable development machine that is running windows.
If you are building the documentation, then first run "make html" on euterpe.
Then enter the docs/ directory and run "make latex". Finally enter the
docs/build/latex directory and run "make all-pdf". You want to scp the file
docs/build/latex/OpenMx.pdf into the destination directory "docs-userguide-pdf".
You want to recursively copy all the contents of docs/build/html into the
destination directory "docs-userguide-html".
Now ssh into SERVER and go to SERVER_ROOT. Type "ls -l *" to see that each directory
has some files. You want to edit the script "go.sh". Change the version number
to the correct version number of this binary release. Next select the values you want for
the TARGETDIR and MAKEDOCS variables. Comment out the values you don't want.
Run ./go.sh and see if any errors are reported.
Finally, go to the website and test the installation of the binary release on your laptop.
Then logon to the website and click on "Create Story" under "Publicist" in the left-hand panel.
Create an announcement of the new binary release. You may copy/paste the top of the CHANGES
file into this annoucement.
More information about the Swift-devel
mailing list