Merge branch 'master' of git.onelab.eu:/git/build
[build.git] / README-specfiles.txt
1 Copyright (c) 2003  The Trustees of Princeton University (Trustees).
2
3 $Id$
4
5 Here are some general guidelines for writing spec files.
6
7 * RPM does not allow you to use dashes in version or release
8   numbers. Use dots, or nothing.
9
10 * Most versions of RPM poorly handle version and release numbers that
11   do not begin with a number. Start your version and release number with
12   at least one number. Append as many minor numbers as you want, but
13   leave alphabetic characters at the end of the string.
14
15 * Always define BuildRoot based in %{_tmppath}.
16
17 * In the %install step, always install files based in $RPM_BUILD_ROOT.
18
19 * Don't be overly restrictive with Requires or BuildRequires tags. RPM
20   is already pretty smart about analyzing your package for necessary
21   dependencies. Usually, you only need to specify Requires tags to make
22   sure a set of packages get installed in the right order (if there is
23   one). Otherwise, it's likely your users will end up in awful
24   situations requiring manual bootstrap.
25
26 Here are some specific guidelines for writing spec files for this setup.
27
28 * Write your spec file as you would normally. It should be an
29   operational spec file on its own.
30
31 * Explicitly %define %{name}, %{version}, %{release}, or don't use
32   them. You should do this anyway to support older versions of RPM. This
33   Makefile does not implicitly define these variables (based on the
34   Name:, Version:, and Release: tags) as RPM does.
35
36 * Run cvsps(1) manually on your repository, and synchronize the PatchSet
37   numbers with any Patch: tags in your spec file that you would like
38   explicitly named.
39
40 * This Makefile assumes that the build directory (as specified by the -n
41   option to %setup, or the RPM default %{name}-%{version}) is the
42   basename of the Source file (i.e. without .tar[.gz|.bz2]).
43
44 * Add %{?date:.%{date}} to your %{release} tag. When executed, this
45   Makefile will define the variable to be the current date in YYYY.MM.DD
46   form. This will help automated nightly upgrades. Tagged releases will
47   not define this variable.
48
49 * Unless you have a very good reason not to, use the following tags:
50
51 Vendor: PlanetLab
52 Packager: PlanetLab Central <support@planet-lab.org>
53 Distribution: PlanetLab 2.0
54 URL: http://www.planet-lab.org