Note that setup.ini is automatically generated for the Cygwin site. This section is intended as a reference for writing software that interoperates with the setup.ini package listing, or who are using a fork of setup elsewhere and want to know what they can achieve with it. It is not aimed at setup.exe end users or Cygwin package maintainers - although you may find it of interest.

setup.exe reads a file called setup.ini that resides on all Cygwin mirrors. The format is quite flexible - it's grown over time. The content of the file drives setup.exe's behaviour. It lists the packages available from a given mirror site (the one it is downloaded from), and what source files each package needs, available versions, dependencies and the like.

The following documentation is for setup's setup-200206 branch.

There are a two global parameters in this file, followed by a list of packages. Any line beginning with # is ignored by setup and can be used to add commentary to the file at any point.

setup-timestamp: number

This line is at the beginning of all setup.ini files. It indicates the time that the setup.ini file was created. Its only purpose is to warn the user when the timestamp is less than the last setup.ini used; i.e. it prevents accidental regression. Use "perl -e 'print time'" to get a timestamp.

setup-version: number

This line follows the setup-timestamp in all setup.ini files. It indicates the version number of the setup.exe for which this setup.ini was generated.

@ package

Lines beginning with the "at" symbol indicate the start of a package section. Each package consists of a name, one or more descriptive texts, package categories, package requirements, and up to three version definitions.

sdesc: "some text"

This is the "short description" of the package. This text, if available, accompanies the package name in package listings.

ldesc: "some text"

This is the "long description" of the package. This text, if available, is used as a supplemental description of the package.

category: name1[ name2...]

The category line indicates the categories that this package belongs to. One package can belong to multiple categories. Multiple categories are separated by spaces. See the description of categories in setup.hint for more information on categories.

requires: package[ package...]

The requires line indicates the packages that this package belongs to. A package can rely on multiple packages. Multiple packages are separated by spaces.

[curr]
[prev]
[test]

These indicate the start of a version description within a package. Note that [curr] is the default and may be omitted if that version happens to be specified before the others. "Curr" indicates the current stable (preferred) version, "prev" is the previous stable version, and "test" indicates a test or experimental version.

version: version

Indicates the version of the package. This is currently derived from the name of the package.

install: filename size-in-bytes MD5 sum

Indicates the file to install for that version, and its size in bytes. The file name must include the full path (relative to setup.ini's directory), and the file size must match the actual file size (setup uses this to verify it got the whole file). The optional MD5 sum is 32 characters from the set 0-9a-f (case matters). If it does not match the locally calculated md5 sum, the package is considered corrupt and won't be installed from by setup.exe.

source: filename size-in-bytes MD5 sum

Like the file to install, this is the corresponding sources.

An example

setup-timestamp: 967844652

@ cygwin
sdesc: "Cygwin Runtime"
ldesc: "A Posix runtime emulator for Windows platforms"
version: 1.1.4
install: release/cygwin/cygwin-1.1.4.tar.bz2 1234567
source: release/cygwin/cygwin-1.1.4.tar.bz2 1341245
[prev]
version: 1.1.3
install: release/cygwin/cygwin-1.1.3.tar.bz2 1234580
source: release/cygwin/cygwin-1.1.3.tar.bz2 1341123

@ bash
[test]
version: 20000901
install: release/bash/bash-20000901.tar.bz2 276403
source:  release/bash/bash-20000901-src.tar.bz2 1892899
[curr]
version: 2.04
install: release/bash/bash-2.04.tar.bz2 277375
source:  release/bash/bash-2.04-src.tar.bz2 1815177