From Fedora Project Wiki

The anatomy of a package checkout

There are two all-important modules that are of concern to developers:

  • The common module contains the Makefile rules for downloading, unpacking, building, testing and packaging your rpm as well as various scripts used in the management of a package module.

In the common module, Makefile.common is the workhorse of each rpm build. This file is meant to be included from each module's own Makefile and provides a host of make targets that are explained in detail later in this document.

  • The rpms module is the main container for all the package modules. The structure of a package module is explained below.

General Structure of a checked-out package

All non-tarball/non-large components of a source package will be kept in CVS. All tarball and large components (think: pristine upstream sources) will be kept in the look-aside repository, and an md5sum of their contents will be kept in CVS in the sources file.

|-- F-7
|   |-- Makefile
|   |-- branch
|   |-- sources
|   <code>-- system-config-display.spec
|-- Makefile
|-- common
|   |-- Makefile
|   |-- Makefile.common
|   |-- branches
|   <code>--
|-- devel
|   |-- Makefile
|   |-- sources
|   <code>-- system-config-display.spec
<code>-- import.log

For example, the CVS repository on the F-7 branch for a small package might contain:

Makefile foo.spec branch sources

The ./sources file lists of the sources that are stored in the lookaside cache; in this case, it would just consist of:

3da5afb85bcdce51113d4b32bd79093f foo-1.2.3.tar.gz

The look-aside repository will contain a directory named foo (after the name of the package module) and a copy of the foo-1.2.3.tar.gz file referenced from the sources file. To check out the sources stored in the lookaside cache, you can simply do a

make sources

in the package checkout. make sources is also the default Makefile target, so a simple make will also have the same effect.