Setup process for long-lived projects

Michael Hope
Tue Jan 19 08:49:00 GMT 2010

Hi there.  We use cygwin quite a bit as part of the build process for
a deeply embedded system with a very long life cycle.  One problem is
maintaining the tools over the life of the product - I'd like to have
a way of installing the same set of packages on new development
machines, having exactly the same set available in five years, and an
easy way of re-basing to later cygwin versions as needed.

I think I can do this as follows:

To prepare:
 * Take a local mirror of the current cygwin version using rsync
 * Export it using a web server
 * Use setup.exe against the mirror to select all the packages needed
 * Take a copy of the local download directory

The mirror gives a stable archive to add new packages from.  The local
download directory gives a standard set of packages to install.

To install on a new machine:
 * Use setup.exe's quiet local install mode to install everything from
the local download stash

To re-base:
 * Update the mirror using rsync
 * Get the list of installed packages by grepping /etc/setup/installed.db
 * Re-create the local download directory by re-getting the needed
packages using the setup.exe named package mode

I'm keen to write up a howto if this works. Is there one already?

I'd also like to prune the mirror of previous versions of a package to
shrink it down a bit.  setup.ini seems easy to parse and a simple
Python script should take care of that.  Is there a tool that does
this already?

If I can parse the meta data then it's tempting to write a combined
installer.  Python should be able to spit out a NSIS installer script
which could be built and then installed offline.  Has anyone attempted

-- Michael

More information about the Cygwin-apps mailing list