Cygbuild - A Porting tool for making Cygwin Net Releases |
If you are familiar with .deb or .rpm making or Activestate Perl .ppm and .ppd files, the Cygwin Net Release packaging is just another variant of these existing packaging methods. The process is quite straight forward: one must mirror whole system directory structure where the files would go, place the files in the correct directories and finally wrap all aup into a single package package-NN.NN-RELEASE.tar.bz2. The end user installs this premade Cygwin Net install tar package at system root /. In a nutshell this is roughly the methodology of making Cygwin Net Releases. For more information, refer to Cygwin Package Contributor's Guide
Normally the porting process starts by downloading some Unix or Linux package that would be nice to have under Cygwin as well. So the porter must:
All of these steps can be automated in a certain degree at least for Unix/Linux packages that use standard packaging shemes. These packages are:
A person who is interested in porting software to Cygwin uses any tools he sees fit to make the port to happen. Most of the Cygwin application maintainers use some versions of the generic Bourne Shell script as a starting point. That suits to simple porting tasks, but usually requires keeping the script up to date for each new version. Many write additional tools and shell scripts which they use to maintain packages they contribute.
This project aims to help making the porting more automatic and maintaining it in the long term. Cygbuild's core is basicly the same as in the original Bourne Shell script, but with lot of enhancements and external modularity. It's written in Bash, which provides more programming rope than Bourne shell.
Whether a potential new Cygwin porter find Cygbuild's approach too complex at the porting task at hand, he might consider using the generic Bourne Shell script. But most likely the appetite grows and he may soon be porting projects A, B, C, D, E, F, and versions A-1, A-2, A-3, B-1, B-2, ... which mean more maintenance work for all of them when new versions appear. That may eventually become a big and time hogging task to manage if done manually for each package. Even if the ported wrote additional helper scripts, it is not guaranteed that other porter could adapt to them easily in case where porter ceases to maintain the port.
Cygbuild is single utility to handle all subsequent version updates easier and to keep them ported with minimum of efforts. The porting tasks are done in standard and predictable manner. The module structure allows using using external helper scripts (where needed) to provide reproducible results even if the maintainership of a port switches to a new person. Handing over a Cygbuild managed port to another person requires no additional learning of user's private scrips or his directory structure layouts, environment variable settings etc.
Cygbuild tries to help the port to happen in matter if minutes while keeping the maintenance cost at minimum. It is hoped that over the time, the added automatisation and experiences from different ports will help to produce a tool, which will take the unnecessary routine tasks off the porter's shoulders.
git clone git://git.savannah.nongnu.org/cygbuild.git cd cygbuild git checkout --track -b devel origin/devel make install-symlink ... to get new updates from time to time git pull
There no mailing list for the project. Contact maintainer as needed by including "cygbuild" in the subject (otherwise message may be classified as spam by the filters). Report problems to bug tracker. In order to use trackers, a Savannah account is needed.
All files in this project are licensed under GNU GPL. |
This project, as well as many other opensource projects, is hosted by Savannah. |
W3C validated. |