From 6babbc3f7b4cafd4192d30d130fd24cd93773df8 Mon Sep 17 00:00:00 2001
From: William Salmon <will.salmon@codethink.co.uk>
Date: Tue, 11 Sep 2018 11:40:56 +0100
Subject: [PATCH] Extended the Documentation to cover out of source builds

---
 buildstream/buildelement.py | 32 ++++++++++++++++++++++++++++++++
 buildstream/source.py       | 13 +++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/buildstream/buildelement.py b/buildstream/buildelement.py
index 5447c13be6..12b867d707 100644
--- a/buildstream/buildelement.py
+++ b/buildstream/buildelement.py
@@ -23,6 +23,38 @@ BuildElement - Abstract class for build elements
 The BuildElement class is a convenience element one can derive from for
 implementing the most common case of element.
 
+Built-in functionality
+----------------------
+
+The BuildElement base class provides built in functionality that could be overridden by the
+individual plugins.
+
+This section will give a brief summary of how some of the common features work, some of them or the variables they
+use will be further detailed in the following sections.
+
+* Location for running commands
+
+ The ``command-subdir`` variable sets where the build commands will be executed, if the directory dose not exist it
+ will be created, it is defined relative to the buildroot.
+
+* Location for configuring the project
+
+ The ``conf-root`` is defined by default as ``.`` and is the location that specific build element can use to look
+ for build configuration files, currently autotools and cmake use this.
+
+ The configuration commands are run in ``command-subdir`` and by default ``conf-root`` is ``.`` so if
+ ``conf-root`` is not set the configuration files in ``command-subdir`` will be used.
+
+ By setting ``conf-root`` to ``"%{build-root}/Source/conf_location"`` and your source elements ``directory`` variable
+ to ``Source`` then the configuration files in the directory ``conf_location`` with in your Source will be used.
+ However the location where your configuration command will be run will still be wherever you set your
+ ``command-subdir`` to be.
+
+* Install Location
+
+  You should not change the ``install-root`` variable as it is a special writeable location in the sandbox but it is
+  useful when writing custom install instructions as it may need to be supplied as the ``DESTDIR``, please see the
+  cmake build element for example.
 
 Abstract method implementations
 -------------------------------
diff --git a/buildstream/source.py b/buildstream/source.py
index e6350161f8..e8f69c2612 100644
--- a/buildstream/source.py
+++ b/buildstream/source.py
@@ -20,6 +20,19 @@
 Source - Base source class
 ==========================
 
+Built-in functionality
+----------------------
+
+The Source base class provides built in functionality that could be overridden by the
+individual plugins.
+
+* Directory
+
+  The ``directory`` variable can be set for all sources of a type in project.conf
+  or per source within a element.
+
+  This sets the location with in the build root that the content of the source will be
+  loaded in to. If the location dose not exist it will be created.
 
 .. _core_source_abstract_methods:
 
-- 
GitLab