
Making Distributions
wxMSW |
wxGTK |
wxMac |
wxX11 |
All |
Docs
These are some notes on the steps involved in making distributions from a
SVN hierarchy.
Making a wxMSW Distribution
The distribution scripts are in the distrib/msw directory. Currently the
distribution needs 4DOS or 4NT, which is a commercial replacement shell
available for 30-day free trial. In future the distribution will be changed to
use MinGW/MSYS and bash scripts.
Requirements
- A wxWidgets hierarchy from SVN.
- A copy of Tex2RTF in your path.
- 32-bit zip and unzip utilities. I use zip 2.0.1 by Mark Adler and
others, and unzip 5.12 by Info-ZIP. I call them zip32 and unzip32 in the
scripts.
- Adobe Acrobat to generate the PDF documentation.
- 4DOS (Windows 9x) or 4NT (W2K and above).
- Several Windows compilers to test out the distribution (see below).
Visual C++ 6 is assumed, for running some of the scripts, e.g. the
makefile for running Tex2RTF.
- To make the setup.exe version of the distribution, a copy of Inno Setup.
- The UPX compression utility, to shrink the sample executables.
- A lot of disk space.
Steps
- Regenerate makefiles from the tmake templates, if necessary. Most
makefiles have a target to do this using the makefile name, or else
'self'.
- Check that distrib/msw/setup.h is a copy of setup0.h and has the
standard options set for distribution (for example, memory debug options
set to zero).
- Make WIN32 release executables of Dialog Editor, the Life! demo (and its
breeder.lif sample file), widgets, Tex2RTF and place them in the
top-level bin directory in your SVN hierarchy. Also make add
.manifest files for the executables for Windows XP look and feel. You
can get some of these files from a previous wxWidgets distribution.
- Ensure that the library and most of the samples/demos compile for the
popular compilers. Currently I check with the following compilers:
VC++ 6.0 (static and DLL), BC++ 4.5 (WIN32), BC++ 5.5 (WIN32), Cygwin,
MinGW 2. For VC++ 6, check compilation using both the makefiles and the
project files. Try all reasonable configurations, including wxUniversal
compilation.
- Ensure that all .rsp files, that list the files to go in the
distribution, are up-to-date. For example, samples or demos may have
been added to the hierarchy.
- Likewise, ensure that vc.rsp contains references to all the sample
project files (that have been generated by projgen).
- Ensure include/wx/version.h specifies the correct wxWidgets version.
- Ensure docs/msw/install.txt is up-to-date (detail any gotchas for
particular compiler versions, etc.).
- Update docs/readme.txt, docs/release.txt, docs/changes.txt.
- Update the date in docs/latex/wx/manual.tex, and build the WinHelp,
HTML, and PDF documentation via the VC++ makefile, src/msw/makefile.vc
using the 'alldocs' target. The PDF documentation is produced from the
Word RTF document, and read into Word. Select all, press F9 to reformat
the fields. Apply the wxWidgets Manual template style from the gallery
(see distrib/msw/wordstyle.dot). Check the table of contents for
overspill from the body of a section into the TOC. If there's a problem,
it's due to the lack of a blank line at the end of the relevant .tex
file. Insert the blank line, regenerate the RTF, and reload into Word.
Then use Adobe Distiller to generate the PDF. This will take several
hours, so do a day or two in advance of release time.
- Edit distrib/msw/zipdistinno.bat and change the version variable
to the appropriate version.
- You need to edit the Inno script to change the version number, and any
other changes you wish to make. For simple changes, you can edit
distrib/msw/innotop.txt and distrib/msw/innobott.txt directly with a
text editor.
- Make a deliver directory in the top-level wxWin hierarchy, change
directory to distrib\msw, and run zipdistinno inno (omit 'inno'
if you don't want to build the setup.exe files).
- You should now have lots of .zip files in your deliver folder,
some setup.* files, plus a wx hierarchy (extracted from the zips)
that you can now delete.
Making a wxGTK Distribution
Please see docs/tech/tn0013.txt in the distribution for notes about making
this distribution. Also, see distrib/msw/makerpm which gives a simplified
interface for building wxGTK, wxBase and wxX11 RPMs, including steps not
necessarily documented in tn0013.txt.
Making a wxMac Distribution
Please see 'Making a wxMSW distribution' for building the wxMac-x.y.z.zip
archive. To build the wxMac-x.y.z.tar.gz archive on Linux (or Darwin), use the
distrib/msw/tardist script, e.g.:
% cd ~/wx/wxWidgets
% mkdir deliver
% distrib/msw/tardist ~/wx/wxWidgets ~/wx/wxWidgets/deliver 2.4.0 --wxmac
Making a wxX11 Distribution
On Linux, use the distrib/msw/tardist script, e.g.:
% cd ~/wx/wxWidgets
% mkdir deliver
% distrib/msw/tardist ~/wx/wxWidgets ~/wx/wxWidgets/deliver 2.4.0 --wxx11
Note that the wxMotif distribution has been rolled into the wxX11
distribution, so only wxX11 is required.
Making a wxAll Distribution
On Linux, use the distrib/msw/tardist script, e.g.:
% cd ~/wx/wxWidgets
% mkdir deliver
% distrib/msw/tardist ~/wx/wxWidgets ~/wx/wxWidgets/deliver 2.4.0 --wxall
This builds wxAll-x.y.z.tar.gz, an archive containing the files necessary
for all ports.
Before running the script, make an 'extra' folder within the 'deliver'
folder and copy wxWidgets-${WXVER}-VC.zip to it, containing an archive of all
.dsp and .dsw project files, since not all of these are in SVN.
You may just wish to use the --all flag to build wxX11, wxAll, wxMac, the
documentation, etc.
Making Documentation Archives
The HTML, MS HTML Help, HTB (wxWidgets HTML Help), WinHelp, PDF
documentation is made and archived in the wxMSW distribution steps (above).
You then need to copy the HTML, HTB and PDF these to a Linux box and unarchive
them under the SVN tree you're using, before doing this:
% cd ~/wx/wxWidgets
% mkdir deliver
% distrib/msw/tardist ~/wx/wxWidgets ~/wx/wxWidgets/deliver 2.4.0 --wxdocs
This will create the HTML, HTB and PDF .tar.gz archives. The
Windows-specific MS HTML Help and WinHelp formats are only distributed in zip
format.
Tagging a Release
wxWidgets has migrated to
SVN. These instructions are no longer
relevant, but kept until updated.
Just before a release, you can tag with a command like this:
% cvs rtag -r WX_2_4_BRANCH -F WX_2_4_0 wxWidgets
This assumes that you are tagging a 2.4.0 release on the WX_2_4_BRANCH. It
creates or moves the WX_2_4_0 tag to the latest revisions on the 2.4 branch.
If you wish to make the tag with the files you have on your disk, then you can
instead do:
% cvs tag WX_2_4_0 wxWidgets
If you have already tagged, but then edit a file and wish to move the tag
to that revision, do something like this:
% cvs tag -F WX_2_4_0 myfile.txt
If you wish to rename a tag, for example because a re-spin was required, do
something like this:
% cvs rtag -r WX_2_4_0 WX_2_4_0_OLD wxWidgets