Update Submitter: Online Manual

← Back to the project page


fm-submit - submit project releases to


fm-submit [options] ...

fm-submit --help | --man


fm-submit is a tool to submit project release announcements to via XML-RPC, from the command line.

Release information is accepted from binary packages (RPMs) named in the command line, or from an email-like data block on standard input, or from command-line flags.

If more than one data source is used, command-line values override values read from standard input, which in turn override values read from binary packages.


-d, --delete
Delete the specified release rather than submitting it. With this option, all data other than Project, Branch, and Release are ignored.
-n, --no-stdin
Process command-line options only; don't read data from standard input.
-N, --noemit
Display the merged record from binary package arguments, standard input and command-line options to standard output. Don't ship it.


In the list below, the header line (see below) is shown first if applicable, followed by the command line option used to set it.

Project: -p, --project
Name of the project (freshmeat shortname) to operate on.
Branch: -b, --branch
Name of project branch to operate on; defaults to ``Default''.
Version: -v, --version
Version string to be associated with the release. Conventionally this will look like ``n.n'' or ``n.n.n'', where each ``n'' is an integer number.
Changes: -c, --changes
The Changes field. Plain text, no more than 600 characters. If no Changes field or option is aleady present, the changes text is taken from the body of the RFC-822 message on standard input.
Release-Focus: -r, --release-focus
Purpose of this release. See the table of release-focus types below.
Hide: -x, --hide
If this field is present and has the value ``Y'', this release will not be visible on the main page.
License: -l, --license
The license under which the release is issued. This should ideally be one of the names of the nodes in the license root category on Freshmeat (see but common abbreviations are accepted as well.
Home-Page-URL: -H, --home-page-url
The project home page.
Gzipped-Tar-URL: -G, --gzipped-tar-url
The URL where a gzipped tarball of source can be found.
Bzipped-Tar-URL: -B, --bzipped-tar-url
The URL where a bzipped tarball of source can be found.
Zipped-Tar-URL: -Z, --zipped-tar-url
The URL where a zip of the source can be found.
Changelog-URL: -C, --changelog-url
The URL where the project changelog can be found.
RPM-URL: -R, --rpm-url
The URL where an installable binary RPM can be found.
Debian-URL: -D, --debian-url
The URL where an installable Debian package can be found.
OSX-URL: -O, --osx-url
The URL where an OS/X binary can be found.
BSD-Port-URL: -P, --bsdport-url
The URL where a BSD Ports package can be found.
Purchase-URL: -U, --purchase-url
The URL where the software can be purchased.
CVS-URL: -S, --cvs-url
The URL of the CVS for this package.
Mailing-List-URL: -L, --mailing-list-url
The URL where you can sign up for project mailing lists.
Mirror-Site-URL: -M, --mirror-site-url
The URL where an official mirror site for the project can be found.
Demo-URL: -E, --demo-url
The URL where a demonstration site for the package can be found.

The release focus can be any of the following:

  Initial freshmeat announcement  1
  Documentation                   2
  Code cleanup                    3
  Minor feature enhancements      4
  Major feature enhancements      5
  Minor bug fixes                 6
  Major bug fixes                 7
  Minor security fixes            8
  Major security fixes            9

Either the text (case-insensitive) or the number can be used.


Here is an example of a release information record that could be fed to fm-submit on standard input:

 Project: fm-submit
 Version: 0.0.4
 Release-Focus: Minor feature enhancements
 Hide: N
 Code cleanup. Abbreviations for common licenses are now accepted. Some
 minor documentation improvements were made.

More typically, you will run this program in a directory where you have already made an RPM, giving it the RPM as a file argument. In that case, all you will normally need to supply is the Release-Focus field; the other required fields (including, most notably, the Changes field) will be mined out of the RPM.

Account details for are read from ~/.netrc - see the netrc manual page for details, but for a quick start, just put something like this in your ~/.netrc:

 machine freshmeat


fm-submit returns zero on success, 1 on failure. On failure, an error string is output on standard error.


Andrew Wood <andrew dot wood at ivarch dot com>

Based on the Python script freshmeat-submit by Eric S. Raymond.

← Back to the project page