1*09209eecSAndrew Geissler.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2*09209eecSAndrew Geissler
3*09209eecSAndrew Geissler*******************
4*09209eecSAndrew GeisslerSystem Requirements
5*09209eecSAndrew Geissler*******************
6*09209eecSAndrew Geissler
7*09209eecSAndrew GeisslerWelcome to the Yocto Project Reference Manual! This manual provides
8*09209eecSAndrew Geisslerreference information for the current release of the Yocto Project, and
9*09209eecSAndrew Geissleris most effectively used after you have an understanding of the basics
10*09209eecSAndrew Geisslerof the Yocto Project. The manual is neither meant to be read as a
11*09209eecSAndrew Geisslerstarting point to the Yocto Project, nor read from start to finish.
12*09209eecSAndrew GeisslerRather, use this manual to find variable definitions, class
13*09209eecSAndrew Geisslerdescriptions, and so forth as needed during the course of using the
14*09209eecSAndrew GeisslerYocto Project.
15*09209eecSAndrew Geissler
16*09209eecSAndrew GeisslerFor introductory information on the Yocto Project, see the
17*09209eecSAndrew Geissler:yocto_home:`Yocto Project Website <>` and the
18*09209eecSAndrew Geissler":ref:`overview-manual/development-environment:the yocto project development environment`"
19*09209eecSAndrew Geisslerchapter in the Yocto Project Overview and Concepts Manual.
20*09209eecSAndrew Geissler
21*09209eecSAndrew GeisslerIf you want to use the Yocto Project to quickly build an image without
22*09209eecSAndrew Geisslerhaving to understand concepts, work through the
23*09209eecSAndrew Geissler:doc:`/brief-yoctoprojectqs/index` document. You can find "how-to"
24*09209eecSAndrew Geisslerinformation in the :doc:`/dev-manual/index`. You can find Yocto Project overview
25*09209eecSAndrew Geisslerand conceptual information in the :doc:`/overview-manual/index`.
26*09209eecSAndrew Geissler
27*09209eecSAndrew Geissler.. note::
28*09209eecSAndrew Geissler
29*09209eecSAndrew Geissler   For more information about the Yocto Project Documentation set, see
30*09209eecSAndrew Geissler   the :ref:`ref-manual/resources:links and related documentation` section.
31*09209eecSAndrew Geissler
32*09209eecSAndrew Geissler.. _detailed-supported-distros:
33*09209eecSAndrew Geissler
34*09209eecSAndrew GeisslerSupported Linux Distributions
35*09209eecSAndrew Geissler=============================
36*09209eecSAndrew Geissler
37*09209eecSAndrew GeisslerCurrently, the Yocto Project is supported on the following
38*09209eecSAndrew Geisslerdistributions:
39*09209eecSAndrew Geissler
40*09209eecSAndrew Geissler-  Ubuntu 16.04 (LTS)
41*09209eecSAndrew Geissler
42*09209eecSAndrew Geissler-  Ubuntu 18.04 (LTS)
43*09209eecSAndrew Geissler
44*09209eecSAndrew Geissler-  Ubuntu 20.04
45*09209eecSAndrew Geissler
46*09209eecSAndrew Geissler-  Fedora 30
47*09209eecSAndrew Geissler
48*09209eecSAndrew Geissler-  Fedora 31
49*09209eecSAndrew Geissler
50*09209eecSAndrew Geissler-  Fedora 32
51*09209eecSAndrew Geissler
52*09209eecSAndrew Geissler-  CentOS 7.x
53*09209eecSAndrew Geissler
54*09209eecSAndrew Geissler-  CentOS 8.x
55*09209eecSAndrew Geissler
56*09209eecSAndrew Geissler-  Debian GNU/Linux 8.x (Jessie)
57*09209eecSAndrew Geissler
58*09209eecSAndrew Geissler-  Debian GNU/Linux 9.x (Stretch)
59*09209eecSAndrew Geissler
60*09209eecSAndrew Geissler-  Debian GNU/Linux 10.x (Buster)
61*09209eecSAndrew Geissler
62*09209eecSAndrew Geissler-  OpenSUSE Leap 15.1
63*09209eecSAndrew Geissler
64*09209eecSAndrew Geissler
65*09209eecSAndrew Geissler.. note::
66*09209eecSAndrew Geissler
67*09209eecSAndrew Geissler   -  While the Yocto Project Team attempts to ensure all Yocto Project
68*09209eecSAndrew Geissler      releases are one hundred percent compatible with each officially
69*09209eecSAndrew Geissler      supported Linux distribution, instances might exist where you
70*09209eecSAndrew Geissler      encounter a problem while using the Yocto Project on a specific
71*09209eecSAndrew Geissler      distribution.
72*09209eecSAndrew Geissler
73*09209eecSAndrew Geissler   -  Yocto Project releases are tested against the stable Linux
74*09209eecSAndrew Geissler      distributions in the above list. The Yocto Project should work
75*09209eecSAndrew Geissler      on other distributions but validation is not performed against
76*09209eecSAndrew Geissler      them.
77*09209eecSAndrew Geissler
78*09209eecSAndrew Geissler   -  In particular, the Yocto Project does not support and currently
79*09209eecSAndrew Geissler      has no plans to support rolling-releases or development
80*09209eecSAndrew Geissler      distributions due to their constantly changing nature. We welcome
81*09209eecSAndrew Geissler      patches and bug reports, but keep in mind that our priority is on
82*09209eecSAndrew Geissler      the supported platforms listed below.
83*09209eecSAndrew Geissler
84*09209eecSAndrew Geissler   -  You may use Windows Subsystem For Linux v2 to set up a build host
85*09209eecSAndrew Geissler      using Windows 10, but validation is not performed against build
86*09209eecSAndrew Geissler      hosts using WSLv2.
87*09209eecSAndrew Geissler
88*09209eecSAndrew Geissler   -  The Yocto Project is not compatible with WSLv1, it is
89*09209eecSAndrew Geissler      compatible but not officially supported nor validated with
90*09209eecSAndrew Geissler      WSLv2, if you still decide to use WSL please upgrade to WSLv2.
91*09209eecSAndrew Geissler
92*09209eecSAndrew Geissler   -  If you encounter problems, please go to :yocto_bugs:`Yocto Project
93*09209eecSAndrew Geissler      Bugzilla <>` and submit a bug. We are
94*09209eecSAndrew Geissler      interested in hearing about your experience. For information on
95*09209eecSAndrew Geissler      how to submit a bug, see the Yocto Project
96*09209eecSAndrew Geissler      :yocto_wiki:`Bugzilla wiki page </Bugzilla_Configuration_and_Bug_Tracking>`
97*09209eecSAndrew Geissler      and the ":ref:`dev-manual/common-tasks:submitting a defect against the yocto project`"
98*09209eecSAndrew Geissler      section in the Yocto Project Development Tasks Manual.
99*09209eecSAndrew Geissler
100*09209eecSAndrew Geissler
101*09209eecSAndrew GeisslerRequired Packages for the Build Host
102*09209eecSAndrew Geissler====================================
103*09209eecSAndrew Geissler
104*09209eecSAndrew GeisslerThe list of packages you need on the host development system can be
105*09209eecSAndrew Geisslerlarge when covering all build scenarios using the Yocto Project. This
106*09209eecSAndrew Geisslersection describes required packages according to Linux distribution and
107*09209eecSAndrew Geisslerfunction.
108*09209eecSAndrew Geissler
109*09209eecSAndrew Geissler.. _ubuntu-packages:
110*09209eecSAndrew Geissler
111*09209eecSAndrew GeisslerUbuntu and Debian
112*09209eecSAndrew Geissler-----------------
113*09209eecSAndrew Geissler
114*09209eecSAndrew GeisslerThe following list shows the required packages by function given a
115*09209eecSAndrew Geisslersupported Ubuntu or Debian Linux distribution:
116*09209eecSAndrew Geissler
117*09209eecSAndrew Geissler.. note::
118*09209eecSAndrew Geissler
119*09209eecSAndrew Geissler   -  If your build system has the ``oss4-dev`` package installed, you
120*09209eecSAndrew Geissler      might experience QEMU build failures due to the package installing
121*09209eecSAndrew Geissler      its own custom ``/usr/include/linux/soundcard.h`` on the Debian
122*09209eecSAndrew Geissler      system. If you run into this situation, either of the following
123*09209eecSAndrew Geissler      solutions exist:
124*09209eecSAndrew Geissler      ::
125*09209eecSAndrew Geissler
126*09209eecSAndrew Geissler         $ sudo apt-get build-dep qemu
127*09209eecSAndrew Geissler         $ sudo apt-get remove oss4-dev
128*09209eecSAndrew Geissler
129*09209eecSAndrew Geissler   -  For Debian-8, ``python3-git`` and ``pylint3`` are no longer
130*09209eecSAndrew Geissler      available via ``apt-get``.
131*09209eecSAndrew Geissler      ::
132*09209eecSAndrew Geissler
133*09209eecSAndrew Geissler         $ sudo pip3 install GitPython pylint==1.9.5
134*09209eecSAndrew Geissler
135*09209eecSAndrew Geissler-  *Essentials:* Packages needed to build an image on a headless system:
136*09209eecSAndrew Geissler   ::
137*09209eecSAndrew Geissler
138*09209eecSAndrew Geissler      $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
139*09209eecSAndrew Geissler
140*09209eecSAndrew Geissler-  *Documentation:* Packages needed if you are going to build out the
141*09209eecSAndrew Geissler   Yocto Project documentation manuals:
142*09209eecSAndrew Geissler   ::
143*09209eecSAndrew Geissler
144*09209eecSAndrew Geissler      $ sudo apt-get install make python3-pip
145*09209eecSAndrew Geissler      &PIP3_HOST_PACKAGES_DOC;
146*09209eecSAndrew Geissler
147*09209eecSAndrew Geissler   .. note::
148*09209eecSAndrew Geissler
149*09209eecSAndrew Geissler      It is currently not possible to build out documentation from Debian 8
150*09209eecSAndrew Geissler      (Jessie) because of outdated ``pip3`` and ``python3``. ``python3-sphinx``
151*09209eecSAndrew Geissler      is too outdated.
152*09209eecSAndrew Geissler
153*09209eecSAndrew GeisslerFedora Packages
154*09209eecSAndrew Geissler---------------
155*09209eecSAndrew Geissler
156*09209eecSAndrew GeisslerThe following list shows the required packages by function given a
157*09209eecSAndrew Geisslersupported Fedora Linux distribution:
158*09209eecSAndrew Geissler
159*09209eecSAndrew Geissler-  *Essentials:* Packages needed to build an image for a headless
160*09209eecSAndrew Geissler   system:
161*09209eecSAndrew Geissler   ::
162*09209eecSAndrew Geissler
163*09209eecSAndrew Geissler      $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL;
164*09209eecSAndrew Geissler
165*09209eecSAndrew Geissler-  *Documentation:* Packages needed if you are going to build out the
166*09209eecSAndrew Geissler   Yocto Project documentation manuals:
167*09209eecSAndrew Geissler   ::
168*09209eecSAndrew Geissler
169*09209eecSAndrew Geissler      $ sudo dnf install make python3-pip which
170*09209eecSAndrew Geissler      &PIP3_HOST_PACKAGES_DOC;
171*09209eecSAndrew Geissler
172*09209eecSAndrew GeissleropenSUSE Packages
173*09209eecSAndrew Geissler-----------------
174*09209eecSAndrew Geissler
175*09209eecSAndrew GeisslerThe following list shows the required packages by function given a
176*09209eecSAndrew Geisslersupported openSUSE Linux distribution:
177*09209eecSAndrew Geissler
178*09209eecSAndrew Geissler-  *Essentials:* Packages needed to build an image for a headless
179*09209eecSAndrew Geissler   system:
180*09209eecSAndrew Geissler   ::
181*09209eecSAndrew Geissler
182*09209eecSAndrew Geissler      $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL;
183*09209eecSAndrew Geissler
184*09209eecSAndrew Geissler-  *Documentation:* Packages needed if you are going to build out the
185*09209eecSAndrew Geissler   Yocto Project documentation manuals:
186*09209eecSAndrew Geissler   ::
187*09209eecSAndrew Geissler
188*09209eecSAndrew Geissler      $ sudo zypper install make python3-pip which
189*09209eecSAndrew Geissler      &PIP3_HOST_PACKAGES_DOC;
190*09209eecSAndrew Geissler
191*09209eecSAndrew Geissler
192*09209eecSAndrew GeisslerCentOS-7 Packages
193*09209eecSAndrew Geissler-----------------
194*09209eecSAndrew Geissler
195*09209eecSAndrew GeisslerThe following list shows the required packages by function given a
196*09209eecSAndrew Geisslersupported CentOS-7 Linux distribution:
197*09209eecSAndrew Geissler
198*09209eecSAndrew Geissler-  *Essentials:* Packages needed to build an image for a headless
199*09209eecSAndrew Geissler   system:
200*09209eecSAndrew Geissler   ::
201*09209eecSAndrew Geissler
202*09209eecSAndrew Geissler      $ sudo yum install &CENTOS7_HOST_PACKAGES_ESSENTIAL;
203*09209eecSAndrew Geissler
204*09209eecSAndrew Geissler   .. note::
205*09209eecSAndrew Geissler
206*09209eecSAndrew Geissler      -  Extra Packages for Enterprise Linux (i.e. ``epel-release``) is
207*09209eecSAndrew Geissler         a collection of packages from Fedora built on RHEL/CentOS for
208*09209eecSAndrew Geissler         easy installation of packages not included in enterprise Linux
209*09209eecSAndrew Geissler         by default. You need to install these packages separately.
210*09209eecSAndrew Geissler
211*09209eecSAndrew Geissler      -  The ``makecache`` command consumes additional Metadata from
212*09209eecSAndrew Geissler         ``epel-release``.
213*09209eecSAndrew Geissler
214*09209eecSAndrew Geissler-  *Documentation:* Packages needed if you are going to build out the
215*09209eecSAndrew Geissler   Yocto Project documentation manuals:
216*09209eecSAndrew Geissler   ::
217*09209eecSAndrew Geissler
218*09209eecSAndrew Geissler      $ sudo yum install make python3-pip which
219*09209eecSAndrew Geissler      &PIP3_HOST_PACKAGES_DOC;
220*09209eecSAndrew Geissler
221*09209eecSAndrew GeisslerCentOS-8 Packages
222*09209eecSAndrew Geissler-----------------
223*09209eecSAndrew Geissler
224*09209eecSAndrew GeisslerThe following list shows the required packages by function given a
225*09209eecSAndrew Geisslersupported CentOS-8 Linux distribution:
226*09209eecSAndrew Geissler
227*09209eecSAndrew Geissler-  *Essentials:* Packages needed to build an image for a headless
228*09209eecSAndrew Geissler   system:
229*09209eecSAndrew Geissler   ::
230*09209eecSAndrew Geissler
231*09209eecSAndrew Geissler      $ sudo dnf install &CENTOS8_HOST_PACKAGES_ESSENTIAL;
232*09209eecSAndrew Geissler
233*09209eecSAndrew Geissler   .. note::
234*09209eecSAndrew Geissler
235*09209eecSAndrew Geissler      -  Extra Packages for Enterprise Linux (i.e. ``epel-release``) is
236*09209eecSAndrew Geissler         a collection of packages from Fedora built on RHEL/CentOS for
237*09209eecSAndrew Geissler         easy installation of packages not included in enterprise Linux
238*09209eecSAndrew Geissler         by default. You need to install these packages separately.
239*09209eecSAndrew Geissler
240*09209eecSAndrew Geissler      -  The ``PowerTools`` repo provides additional packages such as
241*09209eecSAndrew Geissler         ``rpcgen`` and ``texinfo``.
242*09209eecSAndrew Geissler
243*09209eecSAndrew Geissler      -  The ``makecache`` command consumes additional Metadata from
244*09209eecSAndrew Geissler         ``epel-release``.
245*09209eecSAndrew Geissler
246*09209eecSAndrew Geissler-  *Documentation:* Packages needed if you are going to build out the
247*09209eecSAndrew Geissler   Yocto Project documentation manuals:
248*09209eecSAndrew Geissler   ::
249*09209eecSAndrew Geissler
250*09209eecSAndrew Geissler      $ sudo dnf install make python3-pip which
251*09209eecSAndrew Geissler      &PIP3_HOST_PACKAGES_DOC;
252*09209eecSAndrew Geissler
253*09209eecSAndrew GeisslerRequired Git, tar, Python and gcc Versions
254*09209eecSAndrew Geissler==========================================
255*09209eecSAndrew Geissler
256*09209eecSAndrew GeisslerIn order to use the build system, your host development system must meet
257*09209eecSAndrew Geisslerthe following version requirements for Git, tar, and Python:
258*09209eecSAndrew Geissler
259*09209eecSAndrew Geissler-  Git 1.8.3.1 or greater
260*09209eecSAndrew Geissler
261*09209eecSAndrew Geissler-  tar 1.28 or greater
262*09209eecSAndrew Geissler
263*09209eecSAndrew Geissler-  Python 3.5.0 or greater
264*09209eecSAndrew Geissler
265*09209eecSAndrew GeisslerIf your host development system does not meet all these requirements,
266*09209eecSAndrew Geissleryou can resolve this by installing a ``buildtools`` tarball that
267*09209eecSAndrew Geisslercontains these tools. You can get the tarball one of two ways: download
268*09209eecSAndrew Geisslera pre-built tarball or use BitBake to build the tarball.
269*09209eecSAndrew Geissler
270*09209eecSAndrew GeisslerIn addition, your host development system must meet the following
271*09209eecSAndrew Geisslerversion requirement for gcc:
272*09209eecSAndrew Geissler
273*09209eecSAndrew Geissler-  gcc 5.0 or greater
274*09209eecSAndrew Geissler
275*09209eecSAndrew GeisslerIf your host development system does not meet this requirement, you can
276*09209eecSAndrew Geisslerresolve this by installing a ``buildtools-extended`` tarball that
277*09209eecSAndrew Geisslercontains additional tools, the equivalent of ``buildtools-essential``.
278*09209eecSAndrew Geissler
279*09209eecSAndrew GeisslerInstalling a Pre-Built ``buildtools`` Tarball with ``install-buildtools`` script
280*09209eecSAndrew Geissler--------------------------------------------------------------------------------
281*09209eecSAndrew Geissler
282*09209eecSAndrew GeisslerThe ``install-buildtools`` script is the easiest of the three methods by
283*09209eecSAndrew Geisslerwhich you can get these tools. It downloads a pre-built buildtools
284*09209eecSAndrew Geisslerinstaller and automatically installs the tools for you:
285*09209eecSAndrew Geissler
286*09209eecSAndrew Geissler1. Execute the ``install-buildtools`` script. Here is an example:
287*09209eecSAndrew Geissler   ::
288*09209eecSAndrew Geissler
289*09209eecSAndrew Geissler      $ cd poky
290*09209eecSAndrew Geissler      $ scripts/install-buildtools --without-extended-buildtools \
291*09209eecSAndrew Geissler        --base-url &YOCTO_DL_URL;/releases/yocto \
292*09209eecSAndrew Geissler        --release yocto-&DISTRO; \
293*09209eecSAndrew Geissler        --installer-version &DISTRO;
294*09209eecSAndrew Geissler
295*09209eecSAndrew Geissler   During execution, the buildtools tarball will be downloaded, the
296*09209eecSAndrew Geissler   checksum of the download will be verified, the installer will be run
297*09209eecSAndrew Geissler   for you, and some basic checks will be run to to make sure the
298*09209eecSAndrew Geissler   installation is functional.
299*09209eecSAndrew Geissler
300*09209eecSAndrew Geissler   To avoid the need of ``sudo`` privileges, the ``install-buildtools``
301*09209eecSAndrew Geissler   script will by default tell the installer to install in:
302*09209eecSAndrew Geissler   ::
303*09209eecSAndrew Geissler
304*09209eecSAndrew Geissler      /path/to/poky/buildtools
305*09209eecSAndrew Geissler
306*09209eecSAndrew Geissler   If your host development system needs the additional tools provided
307*09209eecSAndrew Geissler   in the ``buildtools-extended`` tarball, you can instead execute the
308*09209eecSAndrew Geissler   ``install-buildtools`` script with the default parameters:
309*09209eecSAndrew Geissler   ::
310*09209eecSAndrew Geissler
311*09209eecSAndrew Geissler      $ cd poky
312*09209eecSAndrew Geissler      $ scripts/install-buildtools
313*09209eecSAndrew Geissler
314*09209eecSAndrew Geissler2. Source the tools environment setup script by using a command like the
315*09209eecSAndrew Geissler   following:
316*09209eecSAndrew Geissler   ::
317*09209eecSAndrew Geissler
318*09209eecSAndrew Geissler      $ source /path/to/poky/buildtools/environment-setup-x86_64-pokysdk-linux
319*09209eecSAndrew Geissler
320*09209eecSAndrew Geissler   Of course, you need to supply your installation directory and be sure to
321*09209eecSAndrew Geissler   use the right file (i.e. i586 or x86_64).
322*09209eecSAndrew Geissler
323*09209eecSAndrew Geissler   After you have sourced the setup script, the tools are added to
324*09209eecSAndrew Geissler   ``PATH`` and any other environment variables required to run the
325*09209eecSAndrew Geissler   tools are initialized. The results are working versions versions of
326*09209eecSAndrew Geissler   Git, tar, Python and ``chrpath``. And in the case of the
327*09209eecSAndrew Geissler   ``buildtools-extended`` tarball, additional working versions of tools
328*09209eecSAndrew Geissler   including ``gcc``, ``make`` and the other tools included in
329*09209eecSAndrew Geissler   ``packagegroup-core-buildessential``.
330*09209eecSAndrew Geissler
331*09209eecSAndrew GeisslerDownloading a Pre-Built ``buildtools`` Tarball
332*09209eecSAndrew Geissler----------------------------------------------
333*09209eecSAndrew Geissler
334*09209eecSAndrew GeisslerDownloading and running a pre-built buildtools installer is the easiest
335*09209eecSAndrew Geisslerof the two methods by which you can get these tools:
336*09209eecSAndrew Geissler
337*09209eecSAndrew Geissler1. Locate and download the ``*.sh`` at &YOCTO_RELEASE_DL_URL;/buildtools/
338*09209eecSAndrew Geissler
339*09209eecSAndrew Geissler2. Execute the installation script. Here is an example for the
340*09209eecSAndrew Geissler   traditional installer:
341*09209eecSAndrew Geissler   ::
342*09209eecSAndrew Geissler
343*09209eecSAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-DISTRO.sh
344*09209eecSAndrew Geissler
345*09209eecSAndrew Geissler   Here is an example for the extended installer:
346*09209eecSAndrew Geissler   ::
347*09209eecSAndrew Geissler
348*09209eecSAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-DISTRO.sh
349*09209eecSAndrew Geissler
350*09209eecSAndrew Geissler   During execution, a prompt appears that allows you to choose the
351*09209eecSAndrew Geissler   installation directory. For example, you could choose the following:
352*09209eecSAndrew Geissler   ``/home/your-username/buildtools``
353*09209eecSAndrew Geissler
354*09209eecSAndrew Geissler3. Source the tools environment setup script by using a command like the
355*09209eecSAndrew Geissler   following:
356*09209eecSAndrew Geissler   ::
357*09209eecSAndrew Geissler
358*09209eecSAndrew Geissler      $ source /home/your_username/buildtools/environment-setup-i586-poky-linux
359*09209eecSAndrew Geissler
360*09209eecSAndrew Geissler   Of
361*09209eecSAndrew Geissler   course, you need to supply your installation directory and be sure to
362*09209eecSAndrew Geissler   use the right file (i.e. i585 or x86-64).
363*09209eecSAndrew Geissler
364*09209eecSAndrew Geissler   After you have sourced the setup script, the tools are added to
365*09209eecSAndrew Geissler   ``PATH`` and any other environment variables required to run the
366*09209eecSAndrew Geissler   tools are initialized. The results are working versions versions of
367*09209eecSAndrew Geissler   Git, tar, Python and ``chrpath``. And in the case of the
368*09209eecSAndrew Geissler   ``buildtools-extended`` tarball, additional working versions of tools
369*09209eecSAndrew Geissler   including ``gcc``, ``make`` and the other tools included in
370*09209eecSAndrew Geissler   ``packagegroup-core-buildessential``.
371*09209eecSAndrew Geissler
372*09209eecSAndrew GeisslerBuilding Your Own ``buildtools`` Tarball
373*09209eecSAndrew Geissler----------------------------------------
374*09209eecSAndrew Geissler
375*09209eecSAndrew GeisslerBuilding and running your own buildtools installer applies only when you
376*09209eecSAndrew Geisslerhave a build host that can already run BitBake. In this case, you use
377*09209eecSAndrew Geisslerthat machine to build the ``.sh`` file and then take steps to transfer
378*09209eecSAndrew Geisslerand run it on a machine that does not meet the minimal Git, tar, and
379*09209eecSAndrew GeisslerPython (or gcc) requirements.
380*09209eecSAndrew Geissler
381*09209eecSAndrew GeisslerHere are the steps to take to build and run your own buildtools
382*09209eecSAndrew Geisslerinstaller:
383*09209eecSAndrew Geissler
384*09209eecSAndrew Geissler1. On the machine that is able to run BitBake, be sure you have set up
385*09209eecSAndrew Geissler   your build environment with the setup script
386*09209eecSAndrew Geissler   (:ref:`structure-core-script`).
387*09209eecSAndrew Geissler
388*09209eecSAndrew Geissler2. Run the BitBake command to build the tarball:
389*09209eecSAndrew Geissler   ::
390*09209eecSAndrew Geissler
391*09209eecSAndrew Geissler      $ bitbake buildtools-tarball
392*09209eecSAndrew Geissler
393*09209eecSAndrew Geissler   or run the BitBake command to build the extended tarball:
394*09209eecSAndrew Geissler   ::
395*09209eecSAndrew Geissler
396*09209eecSAndrew Geissler      $ bitbake buildtools-extended-tarball
397*09209eecSAndrew Geissler
398*09209eecSAndrew Geissler   .. note::
399*09209eecSAndrew Geissler
400*09209eecSAndrew Geissler      The :term:`SDKMACHINE` variable in your ``local.conf`` file determines
401*09209eecSAndrew Geissler      whether you build tools for a 32-bit or 64-bit system.
402*09209eecSAndrew Geissler
403*09209eecSAndrew Geissler   Once the build completes, you can find the ``.sh`` file that installs
404*09209eecSAndrew Geissler   the tools in the ``tmp/deploy/sdk`` subdirectory of the
405*09209eecSAndrew Geissler   :term:`Build Directory`. The installer file has the string
406*09209eecSAndrew Geissler   "buildtools" (or "buildtools-extended") in the name.
407*09209eecSAndrew Geissler
408*09209eecSAndrew Geissler3. Transfer the ``.sh`` file from the build host to the machine that
409*09209eecSAndrew Geissler   does not meet the Git, tar, or Python (or gcc) requirements.
410*09209eecSAndrew Geissler
411*09209eecSAndrew Geissler4. On the machine that does not meet the requirements, run the ``.sh``
412*09209eecSAndrew Geissler   file to install the tools. Here is an example for the traditional
413*09209eecSAndrew Geissler   installer:
414*09209eecSAndrew Geissler   ::
415*09209eecSAndrew Geissler
416*09209eecSAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
417*09209eecSAndrew Geissler
418*09209eecSAndrew Geissler   Here is an example for the extended installer:
419*09209eecSAndrew Geissler   ::
420*09209eecSAndrew Geissler
421*09209eecSAndrew Geissler      $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
422*09209eecSAndrew Geissler
423*09209eecSAndrew Geissler   During execution, a prompt appears that allows you to choose the
424*09209eecSAndrew Geissler   installation directory. For example, you could choose the following:
425*09209eecSAndrew Geissler   ``/home/your_username/buildtools``
426*09209eecSAndrew Geissler
427*09209eecSAndrew Geissler5. Source the tools environment setup script by using a command like the
428*09209eecSAndrew Geissler   following:
429*09209eecSAndrew Geissler   ::
430*09209eecSAndrew Geissler
431*09209eecSAndrew Geissler      $ source /home/your_username/buildtools/environment-setup-x86_64-poky-linux
432*09209eecSAndrew Geissler
433*09209eecSAndrew Geissler   Of course, you need to supply your installation directory and be sure to
434*09209eecSAndrew Geissler   use the right file (i.e. i586 or x86_64).
435*09209eecSAndrew Geissler
436*09209eecSAndrew Geissler   After you have sourced the setup script, the tools are added to
437*09209eecSAndrew Geissler   ``PATH`` and any other environment variables required to run the
438*09209eecSAndrew Geissler   tools are initialized. The results are working versions versions of
439*09209eecSAndrew Geissler   Git, tar, Python and ``chrpath``. And in the case of the
440*09209eecSAndrew Geissler   ``buildtools-extended`` tarball, additional working versions of tools
441*09209eecSAndrew Geissler   including ``gcc``, ``make`` and the other tools included in
442*09209eecSAndrew Geissler   ``packagegroup-core-buildessential``.
443