From 65bc6969e240545c3123c455a7f226d859873d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Tue, 16 May 2017 15:36:05 +0200 Subject: [PATCH] docs: Add a basic info about gathering packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lubomír Sedlář --- doc/gathering.rst | 69 +++++++++++++++++++++++++++++++++++++++++++++++ doc/index.rst | 1 + doc/phases.rst | 2 +- 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 doc/gathering.rst diff --git a/doc/gathering.rst b/doc/gathering.rst new file mode 100644 index 00000000..a81702fb --- /dev/null +++ b/doc/gathering.rst @@ -0,0 +1,69 @@ +================== +Gathering packages +================== + +A compose created by Pungi consists of one or more variants. A variant contains +a subset of the content targeted at a particular use case. + +There are different types of variants. The type affects how packages are +gathered into the variant. + +The inputs for gathering are defined by the ``gather_source`` option. It +provides a list of package names, comps groups names and a list of packages +that should be filtered out. + +Next, ``gather_method`` defines how the list is processed. For ``nodeps``, the +results from source are used pretty much as is [#]_. For ``deps`` method, a +process will be launched to figure out what dependencies are needed and those +will be pulled in. + +.. [#] The lists are filtered based on what packages are available in the + package set, but nothing else will be pulled in. + + +Variant types +============= + +*Variant* + is a base type that has no special behaviour. + +*Addon* + is built on top of a regular variant. Any packages that should go to both + the addon and its parent will be removed from addon. Packages that are only + in addon but pulled in because of ``gather_fulltree`` option will be moved + to parent. + +*Integrated Layered Product* + works similarly to *addon*. Additionally, all packages from addons on the + same parent variant are removed integrated layered products. + + The main difference between an *addon* and *integrated layered product* is + that *integrated layered product* has its own identity in the metadata + (defined with product name and version). + + .. note:: + There's also *Layered Product* as a term, but this is not related to + variants. It's used to describe a product that is not a standalone + operating system and is instead meant to be used on some other base + system. + +*Optional* + contains packages that complete the base variants' package set. It always + has ``fulltree`` and ``selfhosting`` enabled, so it contains build + dependencies and packages which were not specifically requested for base + variant. + + +Some configuration options are overridden for particular variant types. + +.. table:: Depsolving configuration + + +-----------+--------------+--------------+ + | Variant | Fulltree | Selfhosting | + +===========+==============+==============+ + | base | configurable | configurable | + +-----------+--------------+--------------+ + | addon/ILP | enabled | disabled | + +-----------+--------------+--------------+ + | optional | enabled | enabled | + +-----------+--------------+--------------+ diff --git a/doc/index.rst b/doc/index.rst index 81bcab75..031495b7 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -18,3 +18,4 @@ Contents: configuration messaging phases + gathering diff --git a/doc/phases.rst b/doc/phases.rst index b6203c57..713e8ddb 100644 --- a/doc/phases.rst +++ b/doc/phases.rst @@ -47,7 +47,7 @@ Gather This phase uses data collected by ``pkgset`` phase and figures out what packages should be in each variant. The basic mapping can come from comps file, a JSON mapping or ``additional_packages`` config option. This inputs can then -be enriched by adding all dependencies. +be enriched by adding all dependencies. See :doc:`gathering` for details. Once the mapping is finalized, the packages are linked to appropriate places and the ``rpms.json`` manifest is created.