summaryrefslogtreecommitdiffstats
path: root/documentation/overview-manual/development-environment.rst
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/overview-manual/development-environment.rst')
-rw-r--r--documentation/overview-manual/development-environment.rst164
1 files changed, 73 insertions, 91 deletions
diff --git a/documentation/overview-manual/development-environment.rst b/documentation/overview-manual/development-environment.rst
index 1decf01e43..d79173ff55 100644
--- a/documentation/overview-manual/development-environment.rst
+++ b/documentation/overview-manual/development-environment.rst
@@ -39,10 +39,9 @@ Linus Torvalds in 1991. Conversely, a good example of a non-open source
project is the Windows family of operating systems developed by
Microsoft Corporation.
-Wikipedia has a good historical description of the Open Source
-Philosophy `here <https://en.wikipedia.org/wiki/Open_source>`__. You can
-also find helpful information on how to participate in the Linux
-Community
+Wikipedia has a good :wikipedia:`historical description of the Open Source
+Philosophy <Open_source>`. You can also find helpful information on how
+to participate in the Linux Community
`here <https://www.kernel.org/doc/html/latest/process/index.html>`__.
The Development Host
@@ -52,7 +51,7 @@ A development host or :term:`Build Host` is key to
using the Yocto Project. Because the goal of the Yocto Project is to
develop images or applications that run on embedded hardware,
development of those images and applications generally takes place on a
-system not intended to run the software - the development host.
+system not intended to run the software --- the development host.
You need to set up a development host in order to use it with the Yocto
Project. Most find that it is best to have a native Linux machine
@@ -71,7 +70,7 @@ section in
the Yocto Project Development Tasks Manual.
If your development host is going to be a system that runs a Linux
-distribution, steps still exist that you must take to prepare the system
+distribution, you must still take steps to prepare the system
for use with the Yocto Project. You need to be sure that the Linux
distribution on the system is one that supports the Yocto Project. You
also need to be sure that the correct set of host packages are installed
@@ -80,8 +79,8 @@ set up a development host that runs Linux, see the
":ref:`dev-manual/start:setting up a native linux host`"
section in the Yocto Project Development Tasks Manual.
-Once your development host is set up to use the Yocto Project, several
-methods exist for you to do work in the Yocto Project environment:
+Once your development host is set up to use the Yocto Project, there
+are several ways of working in the Yocto Project environment:
- *Command Lines, BitBake, and Shells:* Traditional development in the
Yocto Project involves using the :term:`OpenEmbedded Build System`,
@@ -94,7 +93,7 @@ methods exist for you to do work in the Yocto Project environment:
through your Linux distribution and the Yocto Project.
For a general flow of the build procedures, see the
- ":ref:`dev-manual/common-tasks:building a simple image`"
+ ":ref:`dev-manual/building:building a simple image`"
section in the Yocto Project Development Tasks Manual.
- *Board Support Package (BSP) Development:* Development of BSPs
@@ -132,6 +131,14 @@ methods exist for you to do work in the Yocto Project environment:
Toaster and on how to use Toaster in general, see the
:doc:`/toaster-manual/index`.
+- *Using the VSCode Extension:* You can use the `Yocto Project BitBake
+ <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__
+ extension for Visual Studio Code to start your BitBake builds through a
+ graphical user interface.
+
+ Learn more about the VSCode Extension on the `extension's marketplace page
+ <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__.
+
Yocto Project Source Repositories
=================================
@@ -163,49 +170,38 @@ these tarballs gives you a snapshot of the released files.
- Be sure to always work in matching branches for both the selected
BSP repository and the Source Directory (i.e. ``poky``)
- repository. For example, if you have checked out the "master"
+ repository. For example, if you have checked out the "&DISTRO_NAME_NO_CAP;"
branch of ``poky`` and you are going to use ``meta-intel``, be
- sure to checkout the "master" branch of ``meta-intel``.
+ sure to checkout the "&DISTRO_NAME_NO_CAP;" branch of ``meta-intel``.
In summary, here is where you can get the project files needed for
development:
-- :yocto_git:`Source Repositories: <>` This area contains IDE
- Plugins, Matchbox, Poky, Poky Support, Tools, Yocto Linux Kernel, and
- Yocto Metadata Layers. You can create local copies of Git
- repositories for each of these areas.
+- :yocto_git:`Source Repositories: <>` This area contains Poky, Yocto
+ documentation, metadata layers, and Linux kernel. You can create local
+ copies of Git repositories for each of these areas.
.. image:: figures/source-repos.png
- :align: center
+ :width: 100%
For steps on how to view and access these upstream Git repositories,
see the ":ref:`dev-manual/start:accessing source repositories`"
Section in the Yocto Project Development Tasks Manual.
-- :yocto_dl:`Index of /releases: </releases>` This is an index
- of releases such as Poky, Pseudo, installers for cross-development
- toolchains, miscellaneous support and all released versions of Yocto
- Project in the form of images or tarballs. Downloading and extracting
- these files does not produce a local copy of the Git repository but
- rather a snapshot of a particular release or image.
-
- .. image:: figures/index-downloads.png
- :align: center
-
- For steps on how to view and access these files, see the
- ":ref:`dev-manual/start:accessing index of releases`"
- section in the Yocto Project Development Tasks Manual.
-
-- *"DOWNLOADS" page for the* :yocto_home:`Yocto Project Website <>` *:*
+- :yocto_dl:`Yocto release archives: </releases/yocto>` This is where you can
+ download tarballs corresponding to each Yocto Project release. Downloading
+ and extracting these files does not produce a local copy of a Git repository
+ but rather a snapshot corresponding to a particular release.
- The Yocto Project website includes a "DOWNLOADS" page accessible
+- :yocto_home:`DOWNLOADS page </software-overview/downloads/>`:
+ The :yocto_home:`Yocto Project website <>` includes a "DOWNLOADS" page accessible
through the "SOFTWARE" menu that allows you to download any Yocto
Project release, tool, and Board Support Package (BSP) in tarball
- form. The tarballs are similar to those found in the
- :yocto_dl:`Index of /releases: </releases>` area.
+ form. The hyperlinks point to the tarballs under
+ :yocto_dl:`/releases/yocto/`.
.. image:: figures/yp-download.png
- :align: center
+ :width: 100%
For steps on how to use the "DOWNLOADS" page, see the
":ref:`dev-manual/start:using the downloads page`"
@@ -233,8 +229,8 @@ all diverging functionality. Although there is no need to use Git, many
open source projects do so.
For the Yocto Project, a key individual called the "maintainer" is
-responsible for the integrity of the "master" branch of a given Git
-repository. The "master" branch is the "upstream" repository from which
+responsible for the integrity of the development branch of a given Git
+repository. The development branch is the "upstream" repository from which
final or most recent builds of a project occur. The maintainer is
responsible for accepting changes from other developers and for
organizing the underlying branch structure to reflect release strategies
@@ -244,8 +240,8 @@ and so forth.
For information on finding out who is responsible for (maintains) a
particular area of code in the Yocto Project, see the
- ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`"
- section of the Yocto Project Development Tasks Manual.
+ ":doc:`../contributor-guide/identify-component`"
+ section of the Yocto Project and OpenEmbedded Contributor Guide.
The Yocto Project ``poky`` Git repository also has an upstream
contribution Git repository named ``poky-contrib``. You can see all the
@@ -271,23 +267,23 @@ files that are being worked on simultaneously by more than one person.
All this work is done locally on the development host before anything is
pushed to a "contrib" area and examined at the maintainer's level.
-A somewhat formal method exists by which developers commit changes and
+There is a somewhat formal method by which developers commit changes and
push them into the "contrib" area and subsequently request that the
maintainer include them into an upstream branch. This process is called
"submitting a patch" or "submitting a change." For information on
submitting patches and changes, see the
-":ref:`dev-manual/common-tasks:submitting a change to the yocto project`"
-section in the Yocto Project Development Tasks Manual.
+":doc:`../contributor-guide/submit-changes`" section in the Yocto Project
+and OpenEmbedded Contributor Guide.
-In summary, a single point of entry exists for changes into a "master"
-or development branch of the Git repository, which is controlled by the
-project's maintainer. And, a set of developers exist who independently
+In summary, there is a single point of entry for changes into the
+development branch of the Git repository, which is controlled by the
+project's maintainer. A set of developers independently
develop, test, and submit changes to "contrib" areas for the maintainer
to examine. The maintainer then chooses which changes are going to
become a permanent part of the project.
-.. image:: figures/git-workflow.png
- :align: center
+.. image:: svg/git-workflow.*
+ :width: 100%
While each development environment is unique, there are some best
practices or methods that help development run smoothly. The following
@@ -311,7 +307,7 @@ Book <https://book.git-scm.com>`__.
host. You can name these branches anything you like. It is helpful to
give them names associated with the particular feature or change on
which you are working. Once you are done with a feature or change and
- have merged it into your local master branch, simply discard the
+ have merged it into your local development branch, simply discard the
temporary branch.
- *Merge Changes:* The ``git merge`` command allows you to take the
@@ -340,20 +336,19 @@ Book <https://book.git-scm.com>`__.
software on which to develop. The Yocto Project has two scripts named
``create-pull-request`` and ``send-pull-request`` that ship with the
release to facilitate this workflow. You can find these scripts in
- the ``scripts`` folder of the
- :term:`Source Directory`. For information
+ the ``scripts`` folder of the :term:`Source Directory`. For information
on how to use these scripts, see the
- ":ref:`dev-manual/common-tasks:using scripts to push a change upstream and request a pull`"
- section in the Yocto Project Development Tasks Manual.
+ ":ref:`contributor-guide/submit-changes:using scripts to push a change upstream and request a pull`"
+ section in the Yocto Project and OpenEmbedded Contributor Guide.
- *Patch Workflow:* This workflow allows you to notify the maintainer
through an email that you have a change (or patch) you would like
- considered for the "master" branch of the Git repository. To send
+ considered for the development branch of the Git repository. To send
this type of change, you format the patch and then send the email
using the Git commands ``git format-patch`` and ``git send-email``.
For information on how to use these scripts, see the
- ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`"
- section in the Yocto Project Development Tasks Manual.
+ ":doc:`../contributor-guide/submit-changes`" section in the Yocto Project
+ and OpenEmbedded Contributor Guide.
Git
===
@@ -427,23 +422,18 @@ other branches represent offshoots of the "master" branch.
When you create a local copy of a Git repository, the copy has the same
set of branches as the original. This means you can use Git to create a
local working area (also called a branch) that tracks a specific
-development branch from the upstream source Git repository. in other
+development branch from the upstream source Git repository. In other
words, you can define your local Git environment to work on any
development branch in the repository. To help illustrate, consider the
following example Git commands::
$ cd ~
- $ git clone git://git.yoctoproject.org/poky
- $ cd poky
- $ git checkout -b &DISTRO_NAME_NO_CAP; origin/&DISTRO_NAME_NO_CAP;
+ $ git clone git://git.yoctoproject.org/poky -b &DISTRO_NAME_NO_CAP;
In the previous example
after moving to the home directory, the ``git clone`` command creates a
-local copy of the upstream ``poky`` Git repository. By default, Git
-checks out the "master" branch for your work. After changing the working
-directory to the new local repository (i.e. ``poky``), the
-``git checkout`` command creates and checks out a local branch named
-"&DISTRO_NAME_NO_CAP;", which tracks the upstream
+local copy of the upstream ``poky`` Git repository and checks out a
+local branch named "&DISTRO_NAME_NO_CAP;", which tracks the upstream
"origin/&DISTRO_NAME_NO_CAP;" branch. Changes you make while in this
branch would ultimately affect the upstream "&DISTRO_NAME_NO_CAP;" branch
of the ``poky`` repository.
@@ -466,7 +456,7 @@ and clicking on the ``[...]`` link beneath the "Tag" heading.
Some key tags for the ``poky`` repository are ``jethro-14.0.3``,
``morty-16.0.1``, ``pyro-17.0.0``, and
-``&DISTRO_NAME_NO_CAP;-&POKYVERSION;``. These tags represent Yocto Project
+``&DISTRO_NAME_NO_CAP;-&DISTRO;``. These tags represent Yocto Project
releases.
When you create a local copy of the Git repository, you also have access
@@ -555,12 +545,12 @@ descriptions and strategies on how to use these commands:
You need to be in a local branch other than the one you are deleting
in order to delete branch-name.
-- *git pull --rebase:* Retrieves information from an upstream Git
+- *git pull \-\-rebase*: Retrieves information from an upstream Git
repository and places it in your local Git repository. You use this
command to make sure you are synchronized with the repository from
- which you are basing changes (.e.g. the "master" branch). The
- "--rebase" option ensures that any local commits you have in your
- branch are preserved at the top of your local branch.
+ which you are basing changes (e.g. the "&DISTRO_NAME_NO_CAP;"
+ branch). The ``--rebase`` option ensures that any local commits you
+ have in your branch are preserved at the top of your local branch.
- *git push repo-name local-branch:upstream-branch:* Sends
all your committed local changes to the upstream Git repository that
@@ -571,13 +561,13 @@ descriptions and strategies on how to use these commands:
- *git merge:* Combines or adds changes from one local branch of
your repository with another branch. When you create a local Git
- repository, the default branch is named "master". A typical workflow
- is to create a temporary branch that is based off "master" that you
- would use for isolated work. You would make your changes in that
- isolated branch, stage and commit them locally, switch to the
- "master" branch, and then use the ``git merge`` command to apply the
+ repository, the default branch may be named "main". A typical
+ workflow is to create a temporary branch that is based off "main"
+ that you would use for isolated work. You would make your changes in
+ that isolated branch, stage and commit them locally, switch to the
+ "main" branch, and then use the ``git merge`` command to apply the
changes from your isolated branch into the currently checked out
- branch (e.g. "master"). After the merge is complete and if you are
+ branch (e.g. "main"). After the merge is complete and if you are
done with working in that isolated branch, you can safely delete the
isolated branch.
@@ -612,30 +602,22 @@ licensing structures in place. License evolution for both Open Source
and Free Software has an interesting history. If you are interested in
this history, you can find basic information here:
-- `Open source license
- history <https://en.wikipedia.org/wiki/Open-source_license>`__
+- :wikipedia:`Open source license history <Open-source_license>`
-- `Free software license
- history <https://en.wikipedia.org/wiki/Free_software_license>`__
+- :wikipedia:`Free software license history <Free_software_license>`
In general, the Yocto Project is broadly licensed under the
Massachusetts Institute of Technology (MIT) License. MIT licensing
permits the reuse of software within proprietary software as long as the
-license is distributed with that software. MIT is also compatible with
-the GNU General Public License (GPL). Patches to the Yocto Project
+license is distributed with that software. Patches to the Yocto Project
follow the upstream licensing scheme. You can find information on the
-MIT license
-`here <https://www.opensource.org/licenses/mit-license.php>`__. You can
-find information on the GNU GPL
-`here <https://www.opensource.org/licenses/LGPL-3.0>`__.
+MIT license :wikipedia:`here <MIT_License>`.
When you build an image using the Yocto Project, the build process uses
a known list of licenses to ensure compliance. You can find this list in
-the :term:`Source Directory` at
-``meta/files/common-licenses``. Once the build completes, the list of
-all licenses found and used during that build are kept in the
-:term:`Build Directory` at
-``tmp/deploy/licenses``.
+the :term:`Source Directory` at ``meta/files/common-licenses``. Once the
+build completes, the list of all licenses found and used during that build
+are kept in the :term:`Build Directory` at ``tmp/deploy/licenses``.
If a module requires a license that is not in the base list, the build
process generates a warning during the build. These tools make it easier
@@ -660,5 +642,5 @@ Project uses in the ``meta/files/common-licenses`` directory in your
For information that can help you maintain compliance with various open
source licensing during the lifecycle of a product created using the
Yocto Project, see the
-":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`"
+":ref:`dev-manual/licenses:maintaining open source license compliance during your product's lifecycle`"
section in the Yocto Project Development Tasks Manual.