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