[RFC] bzr-packagers team

Gordon Tyler gordon at doxxx.net
Tue Mar 9 01:34:56 GMT 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 3/8/2010 1:12 AM, Ian Clatworthy wrote:
> I spend a large amount of last week fighting our Windows installer
> scripts to find and correct some problems. In the process, I was
> reminded about the technical debt we have in that space. To be more
> explicit, the knowledge about what components make up a particular
> installer are scattered across multiple places: a buildout.cfg script, a
> bat file template (man I hate maintaining bat files) and an installer
> configuration file. Adding new plugins, dependencies (e.g. subvertpy)
> and help files is currently a fragile, buggy process. :-(

The Mac OS X installers use a custom-written build system, the majority
of which was written by Guillermo Gonzalez and Jean-Francois Roy and has
been tweaked by me. It has the following structure:

config.py - Basically just dicts in a known structure which describe
packages, versions, where to download the tarball or branch from.

fetch-externals.py - Knows how to download tarballs and PDF docs based
on the config.

build.py - Extracts, compiles and installs each package (including pyqt)
into its own dist directory, then runs the Packages tool to build the
Mac OS X Installer file and finally combines that and the PDF docs into
a internet-enabled compressed disk image.

There are some ancillary files like rtf docs for the Welcome, Readme and
Conclusion pages of the installer.

Building can be as simple as:

$ python build.py

or as complicated as:

$ python fetch-externals -d -p && python build.py

It expects the Qt framework to be installed on the build machine and
grabs a copy of the QtCore and QtGui frameworks to be included in the
installer.

> I've started work on a DRY[#], One-Click Build approach: a single file
> called bazaar_releases.py that contains the metadata for what
> constitutes each installer. When complete, adding new components to our
> Windows builds will be as simple as ...
> 
> 1. edit bazaar_releases.py
> 2. ./build.py installers [which installers]

Nice idea. Having one definition of which plugins are included in a
release would be nice. Currently, I've subscribed to the
bzr-windows-installer branch and update the Mac installer config
accordingly.

> Under the covers, buildout, setup.py and Inno will still be used but the

Or the Mac build script?

Ciao,
Gordon

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJLlaXAAAoJEIrPJfWinA2u6ZAIAIj4TV7Ax27C1kPn60yzjMdF
HFwa+htievBHxl+Kw/ki2nYkfks/Iqa8jI0n7aZ4X1cItYaJWldv+TNUjzDN7cYB
ZBW5wmldlAWaqPqtJ0Y8o/xOkIqBgeH9G/RWo3kw9D8mmp/AhZF5l9czIbsFHpQ5
AyNm8uKmVmKEd3s6rnRFfS6UUPYXSQfxAwsnrGgFxOSyxVK9xvWwzRYY0eC7sO7N
+3AuMgSOZkhpsnIuRhURXFOMMAsCsaCY5IS3UL+txlW/DUnl7KxEOmHOiGpMPFXM
XlLAJx5GpDSaoEK+cqJw1RhOLgM+inBabeP8fYAiQ81Xu5Gl7dwQzjt7+5jtPz4=
=VFCg
-----END PGP SIGNATURE-----



More information about the bazaar mailing list