From 1a4b7ee28bf7413af6513fb45ad0d0736048f866 Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Sun, 16 Dec 2018 17:11:34 -0800 Subject: reset upstream subtrees to yocto 2.6 Reset the following subtrees on thud HEAD: poky: 87e3a9739d meta-openembedded: 6094ae18c8 meta-security: 31dc4e7532 meta-raspberrypi: a48743dc36 meta-xilinx: c42016e2e6 Also re-apply backports that didn't make it into thud: poky: 17726d0 systemd-systemctl-native: handle Install wildcards meta-openembedded: 4321a5d libtinyxml2: update to 7.0.1 042f0a3 libcereal: Add native and nativesdk classes e23284f libcereal: Allow empty package 030e8d4 rsyslog: curl-less build with fmhttp PACKAGECONFIG 179a1b9 gtest: update to 1.8.1 Squashed OpenBMC subtree compatibility updates: meta-aspeed: Brad Bishop (1): aspeed: add yocto 2.6 compatibility meta-ibm: Brad Bishop (1): ibm: prepare for yocto 2.6 meta-ingrasys: Brad Bishop (1): ingrasys: set layer compatibility to yocto 2.6 meta-openpower: Brad Bishop (1): openpower: set layer compatibility to yocto 2.6 meta-phosphor: Brad Bishop (3): phosphor: set layer compatibility to thud phosphor: libgpg-error: drop patches phosphor: react to fitimage artifact rename Ed Tanous (4): Dropbear: upgrade options for latest upgrade yocto2.6: update openssl options busybox: remove upstream watchdog patch systemd: Rebase CONFIG_CGROUP_BPF patch Change-Id: I7b1fe71cca880d0372a82d94b5fd785323e3a9e7 Signed-off-by: Brad Bishop --- poky/documentation/dev-manual/dev-manual-start.xml | 448 ++++++++++++--------- 1 file changed, 261 insertions(+), 187 deletions(-) (limited to 'poky/documentation/dev-manual/dev-manual-start.xml') diff --git a/poky/documentation/dev-manual/dev-manual-start.xml b/poky/documentation/dev-manual/dev-manual-start.xml index d8726b485..3f971ba4b 100644 --- a/poky/documentation/dev-manual/dev-manual-start.xml +++ b/poky/documentation/dev-manual/dev-manual-start.xml @@ -10,8 +10,10 @@ This chapter provides procedures related to getting set up to use the Yocto Project. You can learn about creating a team environment that develops using the - Yocto Project, how to set up a build host, how to locate Yocto Project - source repositories, and how to create local Git repositories. + Yocto Project, how to set up a + build host, + how to locate Yocto Project source repositories, and how to create local + Git repositories.
@@ -19,69 +21,71 @@ It might not be immediately clear how you can use the Yocto - Project in a team development environment, or scale it for a large - team of developers. + Project in a team development environment, or how to scale it for a + large team of developers. One of the strengths of the Yocto Project is that it is extremely flexible. Thus, you can adapt it to many different use cases and scenarios. - However, these characteristics can cause a struggle if you are trying + However, this flexibility could cause difficulties if you are trying to create a working setup that scales across a large team. To help you understand how to set up this type of environment, - this section presents a procedure that gives you the information - to learn how to get the results you want. + this section presents a procedure that gives you information + that can help you get the results you want. The procedure is high-level and presents some of the project's most successful experiences, practices, solutions, and available - technologies that work well. + technologies that have proved to work well in the past. Keep in mind, the procedure here is a starting point. - You can build off it and customize it to fit any + You can build off these steps and customize the procedure to fit any particular working environment and set of practices. Determine Who is Going to be Developing: You need to understand who is going to be doing anything related to the Yocto Project and what their roles would be. - Making this determination is essential to completing the + Making this determination is essential to completing steps two and three, which are to get your equipment together and set up your development environment's hardware topology. The following roles exist: - - - Application Development: - These types of developers do application level work - on top of an existing software stack. - - - Core System Development: - These types of developers work on the contents of the - operating system image itself. - - - Build Engineer: - This type of developer manages Autobuilders and - releases. - Not all environments need a Build Engineer. - - - Test Engineer: - This type of developer creates and manages automated - tests needed to ensure all application and core - system development meets desired quality standards. - - + + + Application Developer: + This type of developer does application level work + on top of an existing software stack. + + + Core System Developer: + This type of developer works on the contents of the + operating system image itself. + + + Build Engineer: + This type of developer manages Autobuilders and + releases. + Not all environments need a Build Engineer. + + + Test Engineer: + This type of developer creates and manages automated + tests that are used to ensure all application and + core system development meets desired quality + standards. + + Gather the Hardware: Based on the size and make-up of the team, get the hardware together. - Any development, build, or test engineer should be using - a system that is running a supported Linux distribution. - Systems, in general, should be high performance (e.g. dual, - six-core Xeons with 24 Gbytes of RAM and plenty of disk space). + Ideally, any development, build, or test engineer uses + a system that runs a supported Linux distribution. + These systems, in general, should be high performance + (e.g. dual, six-core Xeons with 24 Gbytes of RAM and plenty + of disk space). You can help ensure efficiency by having any machines used for testing or that run Autobuilders be as high performance as possible. @@ -107,11 +111,12 @@ Use Git as Your Source Control Manager (SCM): Keeping your Metadata - and any software you are developing under the - control of an SCM system that is compatible - with the OpenEmbedded build system is advisable. - Of the SCMs BitBake supports, the - Yocto Project team strongly recommends using + (i.e. recipes, configuration files, classes, and so forth) + and any software you are developing under the control of an SCM + system that is compatible with the OpenEmbedded build system + is advisable. + Of the SCMs BitBake supports, the Yocto Project team strongly + recommends using Git. Git is a distributed system that is easy to backup, allows you to work remotely, and then connects back to the @@ -129,20 +134,19 @@ being used to generate the web interface that lets you view the repositories. The gitolite software identifies users - using SSH keys and allows branch-based - access controls to repositories that you can control as little - or as much as necessary. - + using SSH keys and allows branch-based access controls to + repositories that you can control as little or as much as + necessary. The setup of these services is beyond the scope of this manual. - However, sites such as these exist that describe how to - perform setup: + However, sites such as the following exist that describe + how to perform setup: Git documentation: - Describes how to install gitolite - on the server. + Describes how to install + gitolite on the server. Gitolite: @@ -150,8 +154,8 @@ Interfaces, frontends, and tools: - Documentation on how to create interfaces and frontends - for Git. + Documentation on how to create interfaces and + frontends for Git. @@ -161,23 +165,22 @@ As mentioned earlier, application developers are creating applications on top of existing software stacks. Following are some best practices for setting up machines - that do application development: + used for application development: - Use a pre-built toolchain that - contains the software stack itself. + Use a pre-built toolchain that contains the software + stack itself. Then, develop the application code on top of the stack. This method works well for small numbers of relatively isolated applications. - When possible, use the Yocto Project - plug-in for the + When possible, use the Yocto Project plug-in for the Eclipse IDE and SDK development practices. For more information, see the - "Yocto Project Application Development and the Extensible Software Development Kit (eSDK)" + Yocto Project Application Development and the Extensible Software Development Kit (eSDK) manual. @@ -186,27 +189,29 @@ toolchain downloads or as updates through a package update mechanism using opkg to provide updates to an existing toolchain. - The exact mechanics of how and when to do this are a - question for local policy. + The exact mechanics of how and when to do this depend + on local policy. - Use multiple toolchains installed locally - into different locations to allow development across + Use multiple toolchains installed locally into + different locations to allow development across versions. Set up the Core Development Machines: - As mentioned earlier, these types of developers work on the - contents of the operating system itself. + As mentioned earlier, core developers work on the contents of + the operating system itself. Following are some best practices for setting up machines used for developing images: - Have the Yocto Project build system itself available on - the developer workstations so developers can run their own - builds and directly rebuild the software stack. + Have the + OpenEmbedded build system + available on the developer workstations so developers + can run their own builds and directly rebuild the + software stack. Keep the core system unchanged as much as @@ -228,8 +233,9 @@ Autobuilders are often the core of the development environment. It is here that changes from individual developers are brought - together and centrally tested and subsequent decisions about - releases can be made. + together and centrally tested. + Based on this automated build and test environment, subsequent + decisions about releases can be made. Autobuilders also allow for "continuous integration" style testing of software components and regression identification and tracking. @@ -239,22 +245,23 @@ The Yocto Project team has found this implementation works well in this role. A public example of this is the Yocto Project - Autobuilders, which we use to test the overall health of the - project. + Autobuilders, which the Yocto Project team uses to test the + overall health of the project. The features of this system are: - Highlights when commits break the build. - + Highlights when commits break the build. + - Populates an sstate cache from which - developers can pull rather than requiring local - builds. + Populates an + sstate cache + from which developers can pull rather than requiring + local builds. - Allows commit hook triggers, - which trigger builds when commits are made. + Allows commit hook triggers, which trigger builds when + commits are made. Allows triggering of automated image booting @@ -275,19 +282,19 @@ Allows scheduling of builds so that resources can be used efficiently. - - - - Set up Test Machines: - Use a small number of shared, high performance systems - for testing purposes. - Developers can use these systems for wider, more - extensive testing while they continue to develop - locally using their primary development system. - - - Document Policies and Change Flow: - The Yocto Project itself uses a hierarchical structure and a + + + + Set up Test Machines: + Use a small number of shared, high performance systems + for testing purposes. + Developers can use these systems for wider, more + extensive testing while they continue to develop + locally using their primary development system. + + + Document Policies and Change Flow: + The Yocto Project uses a hierarchical structure and a pull model. Scripts exist to create and send pull requests (i.e. create-pull-request and @@ -330,16 +337,20 @@ Maintain your Metadata in layers that make sense for your situation. - See the "Understanding - and Creating Layers" section for more information on - layers. + See the + "The Yocto Project Layer Model" + section in the Yocto Project Overview and Concepts + Manual and the + "Understanding and Creating Layers" + section for more information on layers. Separate the project's Metadata and code by using separate Git repositories. See the "Yocto Project Source Repositories" - section for information on these repositories. + section in the Yocto Project Overview and Concepts + Manual for information on these repositories. See the "Locating Yocto Project Source Files" section for information on how to set up local Git @@ -360,7 +371,8 @@ The Yocto Project community encourages you - to send patches to the project to fix bugs or add features. + to send patches to the project to fix bugs or add + features. If you do submit patches, follow the project commit guidelines for writing good commit messages. See the "Submitting a Change to the Yocto Project" @@ -369,10 +381,12 @@ Send changes to the core sooner than later as others are likely to run into the same issues. - For some guidance on mailing lists to use, see the list in the + For some guidance on mailing lists to use, see the list + in the "Submitting a Change to the Yocto Project" section. - For a description of the available mailing lists, see the + For a description of the available mailing lists, see + the "Mailing Lists" section in the Yocto Project Reference Manual. @@ -382,22 +396,28 @@
-
+
Preparing the Build Host - This section provides procedures to set up your development host to - use the Yocto Project. - You can use the Yocto Project on a native Linux development host or - you can use + This section provides procedures to set up a system to be used as your + build host + for development using the Yocto Project. + Your build host can be a native Linux machine (recommended) or it can + be a machine (Linux, Mac, or Windows) that uses CROPS, which leverages - Docker Containers, - to prepare any Linux, Mac, or Windows development host. + Docker Containers. + + You cannot use a build host that is using the + Windows Subsystem for Linux + (WSL). + The Yocto Project is not compatible with WSL. + - Once your development host is set up to use the Yocto Project, + Once your build host is set up to use the Yocto Project, further steps are necessary depending on what you want to accomplish. See the following references for information on how to prepare for @@ -432,7 +452,7 @@ Follow these steps to prepare a native Linux machine as your - Yocto Project development host: + Yocto Project Build Host: Use a Supported Linux Distribution: @@ -450,8 +470,8 @@ Have Enough Free Memory: - You should have at least 50 Gbytes of free disk space - for building images. + Your system should have at least 50 Gbytes of free disk + space for building images. Meet Minimal Version Requirements: @@ -480,14 +500,14 @@ Install Development Host Packages: Required development host packages vary depending on your - build machine and what you want to do with the Yocto + build host and what you want to do with the Yocto Project. Collectively, the number of required packages is large if you want to be able to cover all cases. For lists of required packages for all scenarios, see the - "Required Packages for the Host Development System" + "Required Packages for the Build Host" section in the Yocto Project Reference Manual. @@ -514,7 +534,7 @@ With - CROPS, + CROPS, which leverages Docker Containers, you can create a Yocto Project development environment that @@ -525,66 +545,101 @@ Follow these general steps to prepare a Windows, Mac, or Linux - machine as your Yocto Project development host: + machine as your Yocto Project build host: - Go to the Docker Installation Site: + Determine What Your Build Host Needs: Docker is a software container platform that you need to install - on the host development machine. - To start the installation process, see the - Docker Installation - site. + on the build host. + Depending on your build host, you might have to install + different software to support Docker containers. + Go to the Docker installation page and read about the + platform requirements in + "Supported Platforms" + your build host needs to run containers. - Choose Your Docker Edition: - Docker comes in several editions. - For the Yocto Project, the stable community edition - (i.e. "Docker CE Stable") is adequate. - You can learn more about the Docker editions from the - site. + Choose What To Install: + Depending on whether or not your build host meets system + requirements, you need to install "Docker CE Stable" or + the "Docker Toolbox". + Most situations call for Docker CE. + However, if you have a build host that does not meet + requirements (e.g. Pre-Windows 10 or Windows 10 "Home" + version), you must install Docker Toolbox instead. Go to the Install Site for Your Platform: Click the link for the Docker edition associated with - your development host machine's native software. - For example, if your machine is running Microsoft + your build host's native software. + For example, if your build host is running Microsoft Windows Version 10 and you want the Docker CE Stable edition, click that link under "Supported Platforms". - - Understand What You Need: - The install page has pre-requisites your machine must - meet. - Be sure you read through this page and make sure your - machine meets the requirements to run Docker. - If your machine does not meet the requirements, the page - has instructions to handle exceptions. - For example, to run Docker on Windows 10, you must have - the pro version of the operating system. - If you have the home version, you need to install the - Docker Toolbox. - - - Another example is that a Windows machine needs to - have Microsoft Hyper-V. - If you have a legacy version of the the Microsoft - operating system or for any other reason you do not have - Microsoft Hyper-V, you would have to enter the BIOS and - enable virtualization. - Install the Software: Once you have understood all the pre-requisites, you can download and install the appropriate software. Follow the instructions for your specific machine and - the type of the software you need to install. + the type of the software you need to install: + + + Install + Docker CE for Windows + for Windows build hosts that meet requirements. + + + Install + Docker CE for Macs + for Mac build hosts that meet requirements. + + + Install + Docker Toolbox for Windows + for Windows build hosts that do not meet Docker + requirements. + + + Install + Docker Toolbox for MacOS + for Mac build hosts that do not meet Docker + requirements. + + + Install + Docker CE for CentOS + for Linux build hosts running the CentOS + distribution. + + + Install + Docker CE for Debian + for Linux build hosts running the Debian + distribution. + + + Install + Docker CE for Fedora + for Linux build hosts running the Fedora + distribution. + + + Install + Docker CE for Ubuntu + for Linux build hosts running the Ubuntu + distribution. + + Optionally Orient Yourself With Docker: If you are unfamiliar with Docker and the container concept, you can learn more here - . + + + Launch Docker or Docker Toolbox: You should be able to launch Docker or the Docker Toolbox and have a terminal shell on your development host. @@ -593,7 +648,7 @@ Go to and follow the directions for your particular - development host (i.e. Linux, Mac, or Windows). + build host (i.e. Linux, Mac, or Windows). Once you complete the setup instructions for your machine, you have the Poky, Extensible SDK, and Toaster @@ -622,8 +677,8 @@ Locating Yocto Project Source Files - This section contains procedures related to locating Yocto Project - files. + This section shows you how to locate and access the + source files that ship with the Yocto Project. You establish and use these local files to work on projects. Notes @@ -670,7 +725,7 @@ Select the Repository: - Click on the repository in which you are interested (i.e. + Click on the repository in which you are interested (e.g. poky). @@ -704,6 +759,7 @@ The procedure in this section exists should you desire a tarball snapshot of any given component. + Follow these steps to locate and download a particular tarball: Access the Index of Releases: @@ -753,7 +809,10 @@ uses a "DOWNLOADS" page from which you can locate and download tarballs of any Yocto Project release. Rather than Git repositories, these files represent snapshot - tarballs. + tarballs similar to the tarballs located in the Index of Releases + described in the + "Accessing Index of Releases" + section. Tip The recommended method for accessing Yocto Project components is to use Git to clone a repository and work from @@ -771,18 +830,23 @@ Get to the Downloads Area: Select the "DOWNLOADS" item from the pull-down - "SOFTWARE" tab menu. + "SOFTWARE" tab menu near the top of the page. Select a Yocto Project Release: Use the menu next to "RELEASE" to display and choose - a Yocto Project release (e.g. sumo, rocko, pyro, and - so forth. - For a "map" of Yocto Project releases to version numbers, - see the - Releases - wiki page. - + a recent or past supported Yocto Project release + (e.g. &DISTRO_NAME_NO_CAP;, + &DISTRO_NAME_NO_CAP_MINUS_ONE;, and so forth). + Tip + For a "map" of Yocto Project releases to version + numbers, see the + Releases + wiki page. + + You can use the "RELEASE ARCHIVE" link to reveal a menu of + all Yocto Project releases. + Download Tools or Board Support Packages (BSPs): From the "DOWNLOADS" page, you can download tools or @@ -799,8 +863,9 @@ Yocto Project maintains an area for nightly builds that contains tarball releases at . - These builds include Yocto Project releases, SDK installation - scripts, and experimental builds. + These builds include Yocto Project releases ("poky"), + toolchains, Yocto Project plugins for Eclipse, and builds for + supported machines. @@ -808,14 +873,21 @@ Yocto Project component, use the following procedure: - Access the Nightly Builds: + Locate the Index of Nightly Builds: Open a browser and go to to access the Nightly Builds. + + Select a Date: + Click on the date in which you are interested. + If you want the latest builds, use "CURRENT". + Select a Build: - Click on any build by date in which you are interested. + Choose the area in which you are interested. + For example, if you are looking for the most recent + toolchains, select the "toolchain" link. Find the Tarball: @@ -831,27 +903,23 @@
-
+
Cloning and Checking Out Branches - To use the Yocto Project, you need a release of the Yocto Project - locally installed on your development system. - The locally installed set of files is referred to as the + To use the Yocto Project for development, you need a release locally + installed on your development system. + This locally installed set of files is referred to as the Source Directory in the Yocto Project documentation. - You create your Source Directory by using + The preferred method of creating your Source Directory is by using Git to clone a local copy of the upstream poky repository. - Tip - The preferred method of getting the Yocto Project Source - Directory set up is to clone the repository. - - Working from a copy of the upstream repository allows you - to contribute back into the Yocto Project or simply work with + Working from a cloned copy of the upstream repository allows you + to contribute back into the Yocto Project or to simply work with the latest software on a development branch. Because Git maintains and creates an upstream repository with a complete history of changes and you are working with a local @@ -871,21 +939,23 @@ Set Your Directory: - Be in the directory where you want to create your local - copy of poky. + Change your working directory to where you want to + create your local copy of + poky. Clone the Repository: - The following command clones the repository and uses + The following example command clones the + poky repository and uses the default name "poky" for your local repository: $ git clone git://git.yoctoproject.org/poky Cloning into 'poky'... - remote: Counting objects: 367178, done. - remote: Compressing objects: 100% (88161/88161), done. - remote: Total 367178 (delta 272761), reused 366942 (delta 272525) - Receiving objects: 100% (367178/367178), 133.26 MiB | 6.40 MiB/s, done. - Resolving deltas: 100% (272761/272761), done. + remote: Counting objects: 416542, done. + remote: Compressing objects: 100% (98611/98611), done. + remote: Total 416542 (delta 311104), reused 416377 (delta 310939) + Receiving objects: 100% (416542/416542), 150.39 MiB | 15.77 MiB/s, done. + Resolving deltas: 100% (311104/311104), done. Checking connectivity... done. Unless you specify a specific development branch or @@ -900,8 +970,8 @@ Checking Out By Tag in Poky" sections, respectively. - Once the repository is created, you can change to - that directory and check its status. + Once the local repository is created, you can + change to that directory and check its status. Here, the single "master" branch exists on your system and by default, it is checked out: @@ -916,6 +986,10 @@ Your local repository of poky is identical to the upstream poky repository at the time from which it was cloned. + As you work with the local branch, you can periodically + use the git pull ‐‐rebase + command to be sure you are up-to-date with the upstream + branch. -- cgit v1.2.3