109209eecSAndrew Geissler.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
209209eecSAndrew Geissler
309209eecSAndrew Geissler*******************
409209eecSAndrew GeisslerSystem Requirements
509209eecSAndrew Geissler*******************
609209eecSAndrew Geissler
75199d831SAndrew GeisslerWelcome to the Yocto Project Reference Manual. This manual provides
809209eecSAndrew Geisslerreference information for the current release of the Yocto Project, and
909209eecSAndrew Geissleris most effectively used after you have an understanding of the basics
1009209eecSAndrew Geisslerof the Yocto Project. The manual is neither meant to be read as a
1109209eecSAndrew Geisslerstarting point to the Yocto Project, nor read from start to finish.
1209209eecSAndrew GeisslerRather, use this manual to find variable definitions, class
1309209eecSAndrew Geisslerdescriptions, and so forth as needed during the course of using the
1409209eecSAndrew GeisslerYocto Project.
1509209eecSAndrew Geissler
1609209eecSAndrew GeisslerFor introductory information on the Yocto Project, see the
1709209eecSAndrew Geissler:yocto_home:`Yocto Project Website <>` and the
1809209eecSAndrew Geissler":ref:`overview-manual/development-environment:the yocto project development environment`"
1909209eecSAndrew Geisslerchapter in the Yocto Project Overview and Concepts Manual.
2009209eecSAndrew Geissler
2109209eecSAndrew GeisslerIf you want to use the Yocto Project to quickly build an image without
2209209eecSAndrew Geisslerhaving to understand concepts, work through the
2309209eecSAndrew Geissler:doc:`/brief-yoctoprojectqs/index` document. You can find "how-to"
2409209eecSAndrew Geisslerinformation in the :doc:`/dev-manual/index`. You can find Yocto Project overview
2509209eecSAndrew Geisslerand conceptual information in the :doc:`/overview-manual/index`.
2609209eecSAndrew Geissler
2709209eecSAndrew Geissler.. note::
2809209eecSAndrew Geissler
2909209eecSAndrew Geissler   For more information about the Yocto Project Documentation set, see
3009209eecSAndrew Geissler   the :ref:`ref-manual/resources:links and related documentation` section.
3109209eecSAndrew Geissler
328e7b46e2SPatrick WilliamsMinimum Free Disk Space
338e7b46e2SPatrick Williams=======================
348e7b46e2SPatrick Williams
358e7b46e2SPatrick WilliamsTo build an image such as ``core-image-sato`` for the ``qemux86-64`` machine,
368e7b46e2SPatrick Williamsyou need a system with at least &MIN_DISK_SPACE; Gbytes of free disk space.
378e7b46e2SPatrick WilliamsHowever, much more disk space will be necessary to build more complex images,
388e7b46e2SPatrick Williamsto run multiple builds and to cache build artifacts, improving build efficiency.
398e7b46e2SPatrick Williams
408e7b46e2SPatrick WilliamsIf you have a shortage of disk space, see the ":doc:`/dev-manual/disk-space`"
418e7b46e2SPatrick Williamssection of the Development Tasks Manual.
428e7b46e2SPatrick Williams
43b542dec1SPatrick Williams.. _system-requirements-minimum-ram:
44b542dec1SPatrick Williams
458e7b46e2SPatrick WilliamsMinimum System RAM
468e7b46e2SPatrick Williams==================
478e7b46e2SPatrick Williams
488e7b46e2SPatrick WilliamsYou will manage to build an image such as ``core-image-sato`` for the
498e7b46e2SPatrick Williams``qemux86-64`` machine with as little as &MIN_RAM; Gbytes of RAM on an old
508e7b46e2SPatrick Williamssystem with 4 CPU cores, but your builds will be much faster on a system with
518e7b46e2SPatrick Williamsas much RAM and as many CPU cores as possible.
528e7b46e2SPatrick Williams
538e7b46e2SPatrick Williams.. _system-requirements-supported-distros:
5409209eecSAndrew Geissler
5509209eecSAndrew GeisslerSupported Linux Distributions
5609209eecSAndrew Geissler=============================
5709209eecSAndrew Geissler
58*5082cc7fSAndrew GeisslerCurrently, the &DISTRO; release ("&DISTRO_NAME;") of the Yocto Project is
59*5082cc7fSAndrew Geisslersupported on the following distributions:
6009209eecSAndrew Geissler
61ac69b488SWilliam A. Kennington III-  Ubuntu 20.04 (LTS)
6209209eecSAndrew Geissler
632194f503SPatrick Williams-  Ubuntu 22.04 (LTS)
642194f503SPatrick Williams
656aa7eec5SAndrew Geissler-  Fedora 37
669aee5003SAndrew Geissler
67*5082cc7fSAndrew Geissler-  Fedora 38
6809209eecSAndrew Geissler
69*5082cc7fSAndrew Geissler-  CentOS Stream 8
7009209eecSAndrew Geissler
71*5082cc7fSAndrew Geissler-  Debian GNU/Linux 11 (Bullseye)
72*5082cc7fSAndrew Geissler
73*5082cc7fSAndrew Geissler-  Debian GNU/Linux 12 (Bookworm)
74*5082cc7fSAndrew Geissler
75*5082cc7fSAndrew Geissler-  OpenSUSE Leap 15.4
76*5082cc7fSAndrew Geissler
77*5082cc7fSAndrew Geissler-  AlmaLinux 8.8
78*5082cc7fSAndrew Geissler
79*5082cc7fSAndrew Geissler-  AlmaLinux 9.2
80*5082cc7fSAndrew Geissler
81*5082cc7fSAndrew GeisslerThe following distribution versions are still tested (being listed
82*5082cc7fSAndrew Geisslerin :term:`SANITY_TESTED_DISTROS`), even though the organizations
83*5082cc7fSAndrew Geisslerpublishing them no longer make updates publicly available:
84*5082cc7fSAndrew Geissler
85*5082cc7fSAndrew Geissler-  Ubuntu 18.04 (LTS)
86*5082cc7fSAndrew Geissler
87*5082cc7fSAndrew Geissler-  Ubuntu 22.10
8809209eecSAndrew Geissler
899aee5003SAndrew Geissler-  OpenSUSE Leap 15.3
9009209eecSAndrew Geissler
91*5082cc7fSAndrew GeisslerNote that the Yocto Project doesn't have access to private updates
92*5082cc7fSAndrew Geisslerthat some of these versions may have. Therefore, our testing has
93*5082cc7fSAndrew Geisslerlimited value if you have access to such updates.
94*5082cc7fSAndrew Geissler
95*5082cc7fSAndrew GeisslerFinally, here are the distribution versions which were previously
96*5082cc7fSAndrew Geisslertested on former revisions of "&DISTRO_NAME;", but no longer are:
97*5082cc7fSAndrew Geissler
98*5082cc7fSAndrew Geissler*This list is currently empty*
996aa7eec5SAndrew Geissler
10009209eecSAndrew Geissler.. note::
10109209eecSAndrew Geissler
10209209eecSAndrew Geissler   -  While the Yocto Project Team attempts to ensure all Yocto Project
10309209eecSAndrew Geissler      releases are one hundred percent compatible with each officially
104ac69b488SWilliam A. Kennington III      supported Linux distribution, you may still encounter problems
105ac69b488SWilliam A. Kennington III      that happen only with a specific distribution.
10609209eecSAndrew Geissler
10709209eecSAndrew Geissler   -  Yocto Project releases are tested against the stable Linux
10809209eecSAndrew Geissler      distributions in the above list. The Yocto Project should work
10909209eecSAndrew Geissler      on other distributions but validation is not performed against
11009209eecSAndrew Geissler      them.
11109209eecSAndrew Geissler
11209209eecSAndrew Geissler   -  In particular, the Yocto Project does not support and currently
11309209eecSAndrew Geissler      has no plans to support rolling-releases or development
11409209eecSAndrew Geissler      distributions due to their constantly changing nature. We welcome
11509209eecSAndrew Geissler      patches and bug reports, but keep in mind that our priority is on
116517393d9SAndrew Geissler      the supported platforms listed above.
117517393d9SAndrew Geissler
118517393d9SAndrew Geissler   -  If your Linux distribution is not in the above list, we recommend to
119517393d9SAndrew Geissler      get the :term:`buildtools` or :term:`buildtools-extended` tarballs
120517393d9SAndrew Geissler      containing the host tools required by your Yocto Project release,
121517393d9SAndrew Geissler      typically by running ``scripts/install-buildtools`` as explained in
122517393d9SAndrew Geissler      the ":ref:`system-requirements-buildtools`" section.
12309209eecSAndrew Geissler
12409209eecSAndrew Geissler   -  You may use Windows Subsystem For Linux v2 to set up a build host
1252390b1b6SPatrick Williams      using Windows 10 or later, or Windows Server 2019 or later, but validation
1262390b1b6SPatrick Williams      is not performed against build hosts using WSL 2.
12709209eecSAndrew Geissler
1282390b1b6SPatrick Williams      See the
1292390b1b6SPatrick Williams      :ref:`dev-manual/start:setting up to use windows subsystem for linux (wsl 2)`
1302390b1b6SPatrick Williams      section in the Yocto Project Development Tasks Manual for more information.
13109209eecSAndrew Geissler
13209209eecSAndrew Geissler   -  If you encounter problems, please go to :yocto_bugs:`Yocto Project
13309209eecSAndrew Geissler      Bugzilla <>` and submit a bug. We are
13409209eecSAndrew Geissler      interested in hearing about your experience. For information on
13509209eecSAndrew Geissler      how to submit a bug, see the Yocto Project
13609209eecSAndrew Geissler      :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>`
137*5082cc7fSAndrew Geissler      and the ":doc:`../contributor-guide/report-defect`"
138*5082cc7fSAndrew Geissler      section in the Yocto Project and OpenEmbedded Contributor Guide.
13909209eecSAndrew Geissler
14009209eecSAndrew GeisslerRequired Packages for the Build Host
14109209eecSAndrew Geissler====================================
14209209eecSAndrew Geissler
14309209eecSAndrew GeisslerThe list of packages you need on the host development system can be
14409209eecSAndrew Geisslerlarge when covering all build scenarios using the Yocto Project. This
14509209eecSAndrew Geisslersection describes required packages according to Linux distribution and
14609209eecSAndrew Geisslerfunction.
14709209eecSAndrew Geissler
14809209eecSAndrew Geissler.. _ubuntu-packages:
14909209eecSAndrew Geissler
15009209eecSAndrew GeisslerUbuntu and Debian
15109209eecSAndrew Geissler-----------------
15209209eecSAndrew Geissler
153fc113eadSAndrew GeisslerHere are the packages needed to build an image on a headless system
154fc113eadSAndrew Geisslerwith a supported Ubuntu or Debian Linux distribution::
155fc113eadSAndrew Geissler
156fc113eadSAndrew Geissler   $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
15709209eecSAndrew Geissler
15809209eecSAndrew Geissler.. note::
15909209eecSAndrew Geissler
16009209eecSAndrew Geissler   -  If your build system has the ``oss4-dev`` package installed, you
16109209eecSAndrew Geissler      might experience QEMU build failures due to the package installing
16209209eecSAndrew Geissler      its own custom ``/usr/include/linux/soundcard.h`` on the Debian
163ac69b488SWilliam A. Kennington III      system. If you run into this situation, try either of these solutions::
16409209eecSAndrew Geissler
165eff27476SAndrew Geissler         $ sudo apt build-dep qemu
166eff27476SAndrew Geissler         $ sudo apt remove oss4-dev
16709209eecSAndrew Geissler
168fc113eadSAndrew GeisslerHere are the packages needed to build Project documentation manuals::
16909209eecSAndrew Geissler
17092b42cb3SPatrick Williams   $ sudo apt install make python3-pip inkscape texlive-latex-extra
17109209eecSAndrew Geissler   &PIP3_HOST_PACKAGES_DOC;
17209209eecSAndrew Geissler
17309209eecSAndrew GeisslerFedora Packages
17409209eecSAndrew Geissler---------------
17509209eecSAndrew Geissler
176fc113eadSAndrew GeisslerHere are the packages needed to build an image on a headless system
177fc113eadSAndrew Geisslerwith a supported Fedora Linux distribution::
17809209eecSAndrew Geissler
17909209eecSAndrew Geissler   $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL;
18009209eecSAndrew Geissler
181fc113eadSAndrew GeisslerHere are the packages needed to build Project documentation manuals::
18209209eecSAndrew Geissler
18392b42cb3SPatrick Williams   $ sudo dnf install make python3-pip which inkscape texlive-fncychap
18409209eecSAndrew Geissler   &PIP3_HOST_PACKAGES_DOC;
18509209eecSAndrew Geissler
18609209eecSAndrew GeissleropenSUSE Packages
18709209eecSAndrew Geissler-----------------
18809209eecSAndrew Geissler
189fc113eadSAndrew GeisslerHere are the packages needed to build an image on a headless system
190fc113eadSAndrew Geisslerwith a supported openSUSE distribution::
19109209eecSAndrew Geissler
19209209eecSAndrew Geissler   $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL;
19309209eecSAndrew Geissler
194fc113eadSAndrew GeisslerHere are the packages needed to build Project documentation manuals::
19509209eecSAndrew Geissler
19692b42cb3SPatrick Williams   $ sudo zypper install make python3-pip which inkscape texlive-fncychap
19709209eecSAndrew Geissler   &PIP3_HOST_PACKAGES_DOC;
19809209eecSAndrew Geissler
19909209eecSAndrew Geissler
200fc113eadSAndrew GeisslerAlmaLinux Packages
201fc113eadSAndrew Geissler------------------
20209209eecSAndrew Geissler
203fc113eadSAndrew GeisslerHere are the packages needed to build an image on a headless system
204fc113eadSAndrew Geisslerwith a supported AlmaLinux distribution::
20509209eecSAndrew Geissler
206028142bdSAndrew Geissler   $ sudo dnf install &ALMALINUX_HOST_PACKAGES_ESSENTIAL;
20709209eecSAndrew Geissler
20809209eecSAndrew Geissler.. note::
20909209eecSAndrew Geissler
21009209eecSAndrew Geissler   -  Extra Packages for Enterprise Linux (i.e. ``epel-release``) is
21109209eecSAndrew Geissler      a collection of packages from Fedora built on RHEL/CentOS for
21209209eecSAndrew Geissler      easy installation of packages not included in enterprise Linux
21309209eecSAndrew Geissler      by default. You need to install these packages separately.
21409209eecSAndrew Geissler
215fc113eadSAndrew Geissler   -  The ``PowerTools/CRB`` repo provides additional packages such as
21609209eecSAndrew Geissler      ``rpcgen`` and ``texinfo``.
21709209eecSAndrew Geissler
21809209eecSAndrew Geissler   -  The ``makecache`` command consumes additional Metadata from
21909209eecSAndrew Geissler      ``epel-release``.
22009209eecSAndrew Geissler
221fc113eadSAndrew GeisslerHere are the packages needed to build Project documentation manuals::
22209209eecSAndrew Geissler
22392b42cb3SPatrick Williams   $ sudo dnf install make python3-pip which inkscape texlive-fncychap
22409209eecSAndrew Geissler   &PIP3_HOST_PACKAGES_DOC;
22509209eecSAndrew Geissler
226517393d9SAndrew Geissler.. _system-requirements-buildtools:
227517393d9SAndrew Geissler
228615f2f11SAndrew GeisslerRequired Git, tar, Python, make and gcc Versions
229615f2f11SAndrew Geissler================================================
23009209eecSAndrew Geissler
23109209eecSAndrew GeisslerIn order to use the build system, your host development system must meet
23209209eecSAndrew Geisslerthe following version requirements for Git, tar, and Python:
23309209eecSAndrew Geissler
2343b8a17c1SAndrew Geissler-  Git &MIN_GIT_VERSION; or greater
23509209eecSAndrew Geissler
2363b8a17c1SAndrew Geissler-  tar &MIN_TAR_VERSION; or greater
23709209eecSAndrew Geissler
2383b8a17c1SAndrew Geissler-  Python &MIN_PYTHON_VERSION; or greater
23909209eecSAndrew Geissler
240615f2f11SAndrew Geissler-  GNU make &MIN_MAKE_VERSION; or greater
241615f2f11SAndrew Geissler
24209209eecSAndrew GeisslerIf your host development system does not meet all these requirements,
243517393d9SAndrew Geissleryou can resolve this by installing a :term:`buildtools` tarball that
244517393d9SAndrew Geisslercontains these tools. You can either download a pre-built tarball or
245517393d9SAndrew Geissleruse BitBake to build one.
24609209eecSAndrew Geissler
24709209eecSAndrew GeisslerIn addition, your host development system must meet the following
24809209eecSAndrew Geisslerversion requirement for gcc:
24909209eecSAndrew Geissler
2503b8a17c1SAndrew Geissler-  gcc &MIN_GCC_VERSION; or greater
25109209eecSAndrew Geissler
25209209eecSAndrew GeisslerIf your host development system does not meet this requirement, you can
253517393d9SAndrew Geisslerresolve this by installing a :term:`buildtools-extended` tarball that
2543b8a17c1SAndrew Geisslercontains additional tools, the equivalent of the Debian/Ubuntu ``build-essential``
2553b8a17c1SAndrew Geisslerpackage.
2563b8a17c1SAndrew Geissler
2572390b1b6SPatrick WilliamsFor systems with a broken make version (e.g. make 4.2.1 without patches) but
258517393d9SAndrew Geisslerwhere the rest of the host tools are usable, you can use the :term:`buildtools-make`
2592390b1b6SPatrick Williamstarball instead.
2602390b1b6SPatrick Williams
2613b8a17c1SAndrew GeisslerIn the sections that follow, three different methods will be described for
262517393d9SAndrew Geisslerinstalling the :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`
2632390b1b6SPatrick Williamstoolset.
26409209eecSAndrew Geissler
26509209eecSAndrew GeisslerInstalling a Pre-Built ``buildtools`` Tarball with ``install-buildtools`` script
26609209eecSAndrew Geissler--------------------------------------------------------------------------------
26709209eecSAndrew Geissler
26809209eecSAndrew GeisslerThe ``install-buildtools`` script is the easiest of the three methods by
269517393d9SAndrew Geisslerwhich you can get these tools. It downloads a pre-built :term:`buildtools`
27009209eecSAndrew Geisslerinstaller and automatically installs the tools for you:
27109209eecSAndrew Geissler
272517393d9SAndrew Geissler#. Execute the ``install-buildtools`` script. Here is an example::
27309209eecSAndrew Geissler
27409209eecSAndrew Geissler      $ cd poky
2755199d831SAndrew Geissler      $ scripts/install-buildtools \
2765199d831SAndrew Geissler        --without-extended-buildtools \
27709209eecSAndrew Geissler        --base-url &YOCTO_DL_URL;/releases/yocto \
27809209eecSAndrew Geissler        --release yocto-&DISTRO; \
27909209eecSAndrew Geissler        --installer-version &DISTRO;
28009209eecSAndrew Geissler
281517393d9SAndrew Geissler   During execution, the :term:`buildtools` tarball will be downloaded, the
28209209eecSAndrew Geissler   checksum of the download will be verified, the installer will be run
2833b8a17c1SAndrew Geissler   for you, and some basic checks will be run to make sure the
28409209eecSAndrew Geissler   installation is functional.
28509209eecSAndrew Geissler
28609209eecSAndrew Geissler   To avoid the need of ``sudo`` privileges, the ``install-buildtools``
287c926e17cSAndrew Geissler   script will by default tell the installer to install in::
28809209eecSAndrew Geissler
28909209eecSAndrew Geissler      /path/to/poky/buildtools
29009209eecSAndrew Geissler
29109209eecSAndrew Geissler   If your host development system needs the additional tools provided
292517393d9SAndrew Geissler   in the :term:`buildtools-extended` tarball, you can instead execute the
293c926e17cSAndrew Geissler   ``install-buildtools`` script with the default parameters::
29409209eecSAndrew Geissler
29509209eecSAndrew Geissler      $ cd poky
29609209eecSAndrew Geissler      $ scripts/install-buildtools
29709209eecSAndrew Geissler
2982390b1b6SPatrick Williams   Alternatively if your host development system has a broken ``make``
2992390b1b6SPatrick Williams   version such that you only need a known good version of ``make``,
300517393d9SAndrew Geissler   you can use the ``--make-only`` option::
3012390b1b6SPatrick Williams
3022390b1b6SPatrick Williams      $ cd poky
3032390b1b6SPatrick Williams      $ scripts/install-buildtools --make-only
3042390b1b6SPatrick Williams
305517393d9SAndrew Geissler#. Source the tools environment setup script by using a command like the
306c926e17cSAndrew Geissler   following::
30709209eecSAndrew Geissler
30809209eecSAndrew Geissler      $ source /path/to/poky/buildtools/environment-setup-x86_64-pokysdk-linux
30909209eecSAndrew Geissler
31009209eecSAndrew Geissler   After you have sourced the setup script, the tools are added to
31109209eecSAndrew Geissler   ``PATH`` and any other environment variables required to run the
31209209eecSAndrew Geissler   tools are initialized. The results are working versions versions of
31309209eecSAndrew Geissler   Git, tar, Python and ``chrpath``. And in the case of the
314517393d9SAndrew Geissler   :term:`buildtools-extended` tarball, additional working versions of tools
31509209eecSAndrew Geissler   including ``gcc``, ``make`` and the other tools included in
31609209eecSAndrew Geissler   ``packagegroup-core-buildessential``.
31709209eecSAndrew Geissler
31809209eecSAndrew GeisslerDownloading a Pre-Built ``buildtools`` Tarball
31909209eecSAndrew Geissler----------------------------------------------
32009209eecSAndrew Geissler
3213b8a17c1SAndrew GeisslerIf you would prefer not to use the ``install-buildtools`` script, you can instead
322517393d9SAndrew Geisslerdownload and run a pre-built :term:`buildtools` installer yourself with the following
3233b8a17c1SAndrew Geisslersteps:
32409209eecSAndrew Geissler
325517393d9SAndrew Geissler#. Go to :yocto_dl:`/releases/yocto/yocto-&DISTRO;/buildtools/`, locate and
326517393d9SAndrew Geissler   download the ``.sh`` file corresponding to your host architecture
327517393d9SAndrew Geissler   and to :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`.
32809209eecSAndrew Geissler
329517393d9SAndrew Geissler#. Execute the installation script. Here is an example for the
330c926e17cSAndrew Geissler   traditional installer::
33109209eecSAndrew Geissler
332d1e89497SAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
33309209eecSAndrew Geissler
334c926e17cSAndrew Geissler   Here is an example for the extended installer::
33509209eecSAndrew Geissler
336d1e89497SAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
33709209eecSAndrew Geissler
3382390b1b6SPatrick Williams   An example for the make-only installer::
3392390b1b6SPatrick Williams
3402390b1b6SPatrick Williams      $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh
3412390b1b6SPatrick Williams
34209209eecSAndrew Geissler   During execution, a prompt appears that allows you to choose the
34309209eecSAndrew Geissler   installation directory. For example, you could choose the following:
34409209eecSAndrew Geissler   ``/home/your-username/buildtools``
34509209eecSAndrew Geissler
346517393d9SAndrew Geissler#. As instructed by the installer script, you will have to source the tools
347517393d9SAndrew Geissler   environment setup script::
34809209eecSAndrew Geissler
349517393d9SAndrew Geissler      $ source /home/your_username/buildtools/environment-setup-x86_64-pokysdk-linux
35009209eecSAndrew Geissler
35109209eecSAndrew Geissler   After you have sourced the setup script, the tools are added to
35209209eecSAndrew Geissler   ``PATH`` and any other environment variables required to run the
35309209eecSAndrew Geissler   tools are initialized. The results are working versions versions of
35409209eecSAndrew Geissler   Git, tar, Python and ``chrpath``. And in the case of the
355517393d9SAndrew Geissler   :term:`buildtools-extended` tarball, additional working versions of tools
35609209eecSAndrew Geissler   including ``gcc``, ``make`` and the other tools included in
35709209eecSAndrew Geissler   ``packagegroup-core-buildessential``.
35809209eecSAndrew Geissler
35909209eecSAndrew GeisslerBuilding Your Own ``buildtools`` Tarball
36009209eecSAndrew Geissler----------------------------------------
36109209eecSAndrew Geissler
362517393d9SAndrew GeisslerBuilding and running your own :term:`buildtools` installer applies only when you
36309209eecSAndrew Geisslerhave a build host that can already run BitBake. In this case, you use
36409209eecSAndrew Geisslerthat machine to build the ``.sh`` file and then take steps to transfer
36509209eecSAndrew Geisslerand run it on a machine that does not meet the minimal Git, tar, and
36609209eecSAndrew GeisslerPython (or gcc) requirements.
36709209eecSAndrew Geissler
368517393d9SAndrew GeisslerHere are the steps to take to build and run your own :term:`buildtools`
36909209eecSAndrew Geisslerinstaller:
37009209eecSAndrew Geissler
371517393d9SAndrew Geissler#. On the machine that is able to run BitBake, be sure you have set up
37209209eecSAndrew Geissler   your build environment with the setup script
37309209eecSAndrew Geissler   (:ref:`structure-core-script`).
37409209eecSAndrew Geissler
375517393d9SAndrew Geissler#. Run the BitBake command to build the tarball::
37609209eecSAndrew Geissler
37709209eecSAndrew Geissler      $ bitbake buildtools-tarball
37809209eecSAndrew Geissler
379517393d9SAndrew Geissler   or to build the extended tarball::
38009209eecSAndrew Geissler
38109209eecSAndrew Geissler      $ bitbake buildtools-extended-tarball
38209209eecSAndrew Geissler
3832390b1b6SPatrick Williams   or to build the make-only tarball::
3842390b1b6SPatrick Williams
3852390b1b6SPatrick Williams      $ bitbake buildtools-make-tarball
3862390b1b6SPatrick Williams
38709209eecSAndrew Geissler   .. note::
38809209eecSAndrew Geissler
38909209eecSAndrew Geissler      The :term:`SDKMACHINE` variable in your ``local.conf`` file determines
39009209eecSAndrew Geissler      whether you build tools for a 32-bit or 64-bit system.
39109209eecSAndrew Geissler
39209209eecSAndrew Geissler   Once the build completes, you can find the ``.sh`` file that installs
39309209eecSAndrew Geissler   the tools in the ``tmp/deploy/sdk`` subdirectory of the
39409209eecSAndrew Geissler   :term:`Build Directory`. The installer file has the string
395517393d9SAndrew Geissler   "buildtools" or "buildtools-extended" in the name.
39609209eecSAndrew Geissler
397517393d9SAndrew Geissler#. Transfer the ``.sh`` file from the build host to the machine that
39809209eecSAndrew Geissler   does not meet the Git, tar, or Python (or gcc) requirements.
39909209eecSAndrew Geissler
400517393d9SAndrew Geissler#. On this machine, run the ``.sh`` file to install the tools. Here is an
401517393d9SAndrew Geissler   example for the traditional installer::
40209209eecSAndrew Geissler
40309209eecSAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
40409209eecSAndrew Geissler
405517393d9SAndrew Geissler   For the extended installer::
40609209eecSAndrew Geissler
40709209eecSAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
40809209eecSAndrew Geissler
409517393d9SAndrew Geissler   And for the make-only installer::
4102390b1b6SPatrick Williams
4112390b1b6SPatrick Williams      $ sh ~/Downloads/x86_64-buildtools-make-nativesdk-standalone-&DISTRO;.sh
4122390b1b6SPatrick Williams
41309209eecSAndrew Geissler   During execution, a prompt appears that allows you to choose the
41409209eecSAndrew Geissler   installation directory. For example, you could choose the following:
41509209eecSAndrew Geissler   ``/home/your_username/buildtools``
41609209eecSAndrew Geissler
417517393d9SAndrew Geissler#. Source the tools environment setup script by using a command like the
418c926e17cSAndrew Geissler   following::
41909209eecSAndrew Geissler
42009209eecSAndrew Geissler      $ source /home/your_username/buildtools/environment-setup-x86_64-poky-linux
42109209eecSAndrew Geissler
42209209eecSAndrew Geissler   After you have sourced the setup script, the tools are added to
42309209eecSAndrew Geissler   ``PATH`` and any other environment variables required to run the
42409209eecSAndrew Geissler   tools are initialized. The results are working versions versions of
42509209eecSAndrew Geissler   Git, tar, Python and ``chrpath``. And in the case of the
426517393d9SAndrew Geissler   :term:`buildtools-extended` tarball, additional working versions of tools
42709209eecSAndrew Geissler   including ``gcc``, ``make`` and the other tools included in
42809209eecSAndrew Geissler   ``packagegroup-core-buildessential``.
429