This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Setup process for long-lived projects
- From: Michael Hope <michael dot hope at seabright dot co dot nz>
- To: cygwin-apps at cygwin dot com
- Date: Tue, 19 Jan 2010 21:49:02 +1300
- Subject: Setup process for long-lived projects
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
this?
-- Michael