.. _source repository:
=================
Source Repository
=================
A source repository is a |version control repository|, that contains the
necessary files to build a package. At the bare minimum this includes a
|PKGBUILD| and a ``.SRCINFO`` file, but may also contain an install script as
well as patches or other arbitrary files.
Using |makepkg|, the sources are used to build a package, which can be
installed with |pacman|. With the help of |package splitting| it is possible to
create more than one package from a single |PKGBUILD|.
.. note::
Due to |dbscripts| and |makepkg| limitations it is currently not possible to
target more than one :ref:`binary repository` with a single |PKGBUILD|.
.. _srcinfo:
.SRCINFO
--------
The ``.SRCINFO`` files contained in a :ref:`source repository` are data
representations of the accompanying |PKGBUILD| files and as such describe the
sources of any :ref:`package` build from it.
The files are read and parsed and can be described by the :ref:`srcinfov1` JSON
schema.
.. _pkgbase section:
Pkgbase section
^^^^^^^^^^^^^^^
This section of a ``.SRCINFO`` file describes the data common to all packages in
the |PKGBUILD| (this is similar to how :ref:`outputpackagebase_schema`
describes the data common to a set of packages in a :ref:`management
repository`).
The section is read and parsed when reading :ref:`srcinfo` files and must
exist. It can be described by the :ref:`pkgbasesectionv1` JSON schema.
.. _pkgname section:
Pkgname section
^^^^^^^^^^^^^^^
This section of a ``.SRCINFO`` file describes the data of a single package in
the |PKGBUILD|, which is different from the common data described by the
:ref:`pkgbase section` (this is similar to how :ref:`outputpackage_schema`
describes the data of a single package in a :ref:`management repository`).
The section may occur multiple times, but must exist at least once. It is read
and parsed when reading :ref:`srcinfo` files and can be described by the
:ref:`pkgnamesectionv1` JSON schema.
.. _srcinfo json schema:
JSON schema
^^^^^^^^^^^
.. _srcinfov1:
SrcInfoV1
"""""""""
.. literalinclude:: ../schema/SrcInfoV1.json
:language: json
.. _pkgbasesectionv1:
PkgBaseSectionV1
""""""""""""""""
.. literalinclude:: ../schema/PkgBaseSectionV1.json
:language: json
.. _pkgnamesectionv1:
PkgNameSectionV1
""""""""""""""""
.. literalinclude:: ../schema/PkgNameSectionV1.json
:language: json
.. |version control repository| raw:: html
version control repository
.. |PKGBUILD| raw:: html
PKGBUILD
.. |makepkg| raw:: html
makepkg
.. |pacman| raw:: html
pacman
.. |package splitting| raw:: html
package splitting
.. |dbscripts| raw:: html
dbscripts