Differences between revisions 10 and 11
Revision 10 as of 2017-04-22 16:19:56
Size: 3504
Editor: AugieFackler
Comment:
Revision 11 as of 2017-05-02 22:37:06
Size: 3437
Comment: This file doesn't exist anymore
Deletions are marked like this. Additions are marked like this.
Line 24: Line 24:
 * Install [[Source:contrib/mergetools.hgrc]] so merge tools work

Note:

This page is primarily intended for developers of Mercurial.

Packaging

Guidelines for making Mercurial binary packages.

1. Keeping up with Mercurial

There are no official binary releases of Mercurial. All builds are made by volunteers. Source code release are made approximately once a month by Matt Mackall according to the TimeBasedReleasePlan. Packagers should be prepared to make a release on the first of every month. Packagers should be subscribed to the mercurial-packaging list for release announcements and other packaging notes.

2. Priorities

Every package should aim to:

  • make timely major, minor, and release-candidate releases
  • post automated nightly builds
  • publish automated version information

3. Things to note

  • Don't enable any extensions by default

  • Configure ui.pager to a reasonable default for your platform (e.g. more, less, sensible-pager, etc)

  • Consider packaging the hgweb scripts (to help users publish repositories without having to download the scripts separately)

  • Consider packaging relevant items from the contrib directory

  • Run the test suite on your platform
  • List your package on the downloads page

  • Keep up with our time-based releases

4. SSL support

Packagers are encouraged to integrate as well as possible with the platforms existing PKI, for example by distributing a hgrc.d/cacert.rc with configuration of web.cacerts. If the platform doesn't have a suitable CA list you might want to distribute your own - for example the one from cURL/Mozilla. See CACertificates.

5. Make nightly builds available

Nightly builds help users give quick feedback on bugfixes. These should be made from the tip of the stable branch.

6. Version information protocol

Mercurial.selenic.com runs a cron job that polls a set of package publishers to build a set of available binary packages. For instance, it polls http://mercurial.selenic.com/latest.dat, which contains lines of the form:

100     1.7.1   .*      http://mercurial.selenic.com/release/mercurial-1.7.1.tar.gz     Mercurial source release

The fields are:

priority

100

sort order, with 100 being lowest

version number

1.7.1

version of the advertised package

user agent regex

.*

a regex to match against web browser User-Agent strings (the source packages matches all)

url

http://mercurial.selenic.com/release/mercurial-1.7.1.tar.gz

address of the binary to download

name/description

Mercurial source release

description to display in link anchor

The cron job will poll all known sources and build a javascript include that can be used to find the best package for a given user. Typically, this would mean listing the first entry with a matching regex (and possibly any others that matched the same expression).

To add a .dat file to the poll list, mail a URL to mpm.

6.1. Example .dat file URLs

7. Stay in touch

Announcements of releases and code freezes are made on the Mercurial-packaging list.

8. See also


CategoryProject

Packaging (last edited 2017-05-02 23:04:09 by NathanGoldbaum)