Cygwin Package Contributor's Guide

This document is intended for people who upload packages to sourceware.org, to be made available through the standard Cygwin setup program.

Contents

Making a package with cygport

While older, hand-made packages exist, the only accepted way to make a new Cygwin package is using the cygport tool, which automatically handles most packaging requirements and issues for you. It is also strongly recommended to convert existing packages to cygport when updating them; ask on the cygwin-apps list if you need help converting an existing package to use cygport.

The cygport framework improves on previous Cygwin build scripts, and borrows concepts from the Gentoo portage system.

Suppose that the upstream's boffo-1.0.tar.xz source tar file, that you downloaded from the boffo homepage, unpacks into boffo-1.0/.

Further, suppose you've got boffo ported to Cygwin. It took some work, but you've got a patch file, which we will name boffo-1.0-fix-whatever.patch, and with that applied boffo builds and runs.

All that remains is to write a boffo.cygport file which will describe how to unpack, configure, build and package:

# package name
NAME="boffo"
VERSION=1.0
RELEASE=1

# .hint generation
CATEGORY="Games"
SUMMARY="A whackamole simulation in ASCII art"
DESCRIPTION="A whackamole simulation in ASCII art.
Intended for use on VT100 terminals at BAUD rates 1200 and
above.  Uses arrow keys for positioning over moles.  Space
bar whacks the mole.
No actual moles will be harmed during execution of this game."

# source and patch files
SRC_URI="http://boffo.org/downloads/boffo-${VERSION}.tar.xz"
PATCH_URI="boffo-1.0-fix-whatever.patch"

# use the standard src_compile, src_install and src_test

The source and binary packages can then be built and a .hint generated by running cygport, e.g.

$ cygport boffo.cygport fetch
--2017-04-01 11:59:59--  http://boffo.org/downloads/boffo-1.0.tar.xz
Resolving boffo.org... 209.197.75.87
Connecting to boffo.org|209.197.75.87|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 352 [application/x-tar]
Saving to: ‘boffo-1.0.tar.xz.tmp’

boffo-1.0.tar.xz.tmp 100%[===================>]     352  --.-KB/s    in 0s

2017-04-01 11:59:59 (8.06 MB/s) - ‘boffo-1.0.tar.xz.tmp’ saved [352/352]

$ cygport boffo.cygport all
>>> Preparing boffo-1.0-1.x86_64
>>> Unpacking source boffo-1.0.tar.xz
*** Info: applying patch boffo-1.0-fix-whatever.patch:
>>> Preparing working source directory
>>> Compiling boffo-1.0-1.x86_64
[...]
>>> Installing boffo-1.0-1.x86_64
[...]
Fixing symlinks:
Stripping executables:
        usr/bin/boffo.exe
Preparing debuginfo source files:
        1 files
>>> Packaging boffo-1.0-1.x86_64
>>> Creating binary package(s)
>>> boffo-1.0-1.tar.xz
usr/
usr/bin/
usr/bin/boffo.exe
usr/lib/
usr/share/
usr/share/doc/
usr/share/doc/boffo/
usr/share/doc/boffo/README

>>> boffo-debuginfo-1.0-1.tar.xz
usr/lib/debug/
usr/lib/debug/usr/
usr/lib/debug/usr/bin/
usr/lib/debug/usr/bin/boffo.exe.dbg
usr/src/debug/
usr/src/debug/boffo-1.0-1/
usr/src/debug/boffo-1.0-1/boffo.c

>>> Checking packages for missing or duplicate files

>>> Creating source patches
 0 files changed
>>> Creating source package
boffo-1.0-1.src/
boffo-1.0-1.src/boffo-1.0-fix-whatever.patch
boffo-1.0-1.src/boffo-1.0.tar.xz
boffo-1.0-1.src/boffo.cygport

>>> boffo requires: cygwin libncursesw10

For more information on using cygport consult the man page, README, reference manual and sample .cygport files.

Installing your package for testing

Unfortunately, there is no tool for directly installing package files, at the moment. Two common techniques to achieve this:

Submitting a new package

So you've got a package you want to submit. Follow the following checklist before emailing the cygwin-apps mailing list, and you'll almost certainly save time.

Uploading an accepted package

Updating a package

So you've got an updated package you want to submit. You should already have upload privileges, and should be able to do the entire process yourself, by following these instructions. If you encounter any problems, email the cygwin-apps mailing list.

NOTE: On any major version upgrade, you may want to mark the release as Test.

Example announcement


Subject: New package: foo-0.30.2-1
or
Updated: foo-0.30.2-1
Version 0.30.2-1 of "foo" has been uploaded.

(a couple of lines about what "foo" is)
(short changelog of important features or fixes; big emphasis for security fixes)

              *** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***

If you want to unsubscribe from the cygwin-announce mailing list, look at the "List-Unsubscribe: " tag in the email header of this message. Send email to the address specified there. It will be in the format:

cygwin-announce-unsubscribe-you=yourdomain.com <at> cygwin.com

If you need more information on unsubscribing, start reading here:

https://sourceware.org/lists.html#unsubscribe-simple

Please read *all* of the information on unsubscribing that is available starting at this URL.