<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->

<chapter id='adt-package'>
<title>Optionally Customizing the Development Packages Installation</title>

    <para>
        Because the Yocto Project is suited for embedded Linux development, it is
        likely that you will need to customize your development packages installation.
        For example, if you are developing a minimal image, then you might not need
        certain packages (e.g. graphics support packages).
        Thus, you would like to be able to remove those packages from your target sysroot.
    </para>

<section id='package-management-systems'>
    <title>Package Management Systems</title>

    <para>
        The OpenEmbedded build system supports the generation of sysroot files using
        three different Package Management Systems (PMS):
        <itemizedlist>
            <listitem><para><emphasis>OPKG:</emphasis> A less well known PMS whose use
                originated in the OpenEmbedded and OpenWrt embedded Linux projects.
                This PMS works with files packaged in an <filename>.ipk</filename> format.
                See <ulink url='http://en.wikipedia.org/wiki/Opkg'></ulink> for more
                information about OPKG.</para></listitem>
            <listitem><para><emphasis>RPM:</emphasis> A more widely known PMS intended for GNU/Linux
                distributions.
                This PMS works with files packaged in an <filename>.rpm</filename> format.
                The build system currently installs through this PMS by default.
                See <ulink url='http://en.wikipedia.org/wiki/RPM_Package_Manager'></ulink>
                for more information about RPM.</para></listitem>
            <listitem><para><emphasis>Debian:</emphasis> The PMS for Debian-based systems
                is built on many PMS tools.
                The lower-level PMS tool <filename>dpkg</filename> forms the base of the Debian PMS.
                For information on dpkg see
                <ulink url='http://en.wikipedia.org/wiki/Dpkg'></ulink>.</para></listitem>
        </itemizedlist>
    </para>
</section>

<section id='configuring-the-pms'>
    <title>Configuring the PMS</title>

    <para>
        Whichever PMS you are using, you need to be sure that the
        <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>
        variable in the <filename>conf/local.conf</filename>
        file is set to reflect that system.
        The first value you choose for the variable specifies the package file format for the root
        filesystem at sysroot.
        Additional values specify additional formats for convenience or testing.
        See the <filename>conf/local.conf</filename> configuration file for
        details.
    </para>

    <note>
        For build performance information related to the PMS, see the
        "<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-package'><filename>package.bbclass</filename></ulink>"
        section in the Yocto Project Reference Manual.
    </note>

    <para>
        As an example, consider a scenario where you are using OPKG and you want to add
        the <filename>libglade</filename> package to the target sysroot.
    </para>

    <para>
        First, you should generate the IPK file for the
        <filename>libglade</filename> package and add it
        into a working <filename>opkg</filename> repository.
        Use these commands:
        <literallayout class='monospaced'>
     $ bitbake libglade
     $ bitbake package-index
        </literallayout>
    </para>

    <para>
        Next, source the cross-toolchain environment setup script found in the
        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
        Follow that by setting up the installation destination to point to your
        sysroot as <replaceable>sysroot_dir</replaceable>.
        Finally, have an OPKG configuration file <replaceable>conf_file</replaceable>
        that corresponds to the <filename>opkg</filename> repository you have just created.
        The following command forms should now work:
        <literallayout class='monospaced'>
     $ opkg-cl –f <replaceable>conf_file</replaceable> -o <replaceable>sysroot_dir</replaceable> update
     $ opkg-cl –f <replaceable>cconf_file</replaceable> -o <replaceable>sysroot_dir</replaceable> \
        --force-overwrite install libglade
     $ opkg-cl –f <replaceable>cconf_file</replaceable> -o <replaceable>sysroot_dir</replaceable> \
        --force-overwrite install libglade-dbg
     $ opkg-cl –f <replaceable>conf_file&gt; -o </replaceable>sysroot_dir&gt; \
        --force-overwrite install libglade-dev
        </literallayout>
    </para>
</section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
