aboutsummaryrefslogtreecommitdiffstats
path: root/oe-init-build-env
diff options
context:
space:
mode:
Diffstat (limited to 'oe-init-build-env')
-rwxr-xr-xoe-init-build-env44
1 files changed, 44 insertions, 0 deletions
diff --git a/oe-init-build-env b/oe-init-build-env
new file mode 100755
index 0000000000..87929d119d
--- /dev/null
+++ b/oe-init-build-env
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# Poky Build Enviroment Setup Script
+#
+# Copyright (C) 2006-2007 OpenedHand Ltd.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+#
+# Normally this is called as '. ./poky-init-buildenv builddir'
+#
+# This works in most shells (not dash), but not all of them pass arg1 when
+# being sourced. To workaround the shell limitation use "set arg1" prior
+# to sourcing this script.
+#
+if [ -z "$ZSH_NAME" ] && [ "x$0" = "x./oe-init-build-env" ]; then
+ echo "Error: This script needs to be sourced. Please run as '. ./oe-init-build-env'"
+else
+ if [ -n "$BASH_SOURCE" ]; then
+ OEROOT="`dirname $BASH_SOURCE`"
+ else
+ OEROOT="`pwd`"
+ fi
+ OEROOT=`readlink -f "$OEROOT"`
+ export OEROOT
+ . $OEROOT/scripts/oe-buildenv-internal
+ $OEROOT/scripts/poky-setup-builddir
+ unset OEROOT
+ unset BBPATH
+ [ -n "$BUILDDIR" ] && cd $BUILDDIR
+fi
+
Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
<!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; ] >

<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>.rms</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 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'>Packaging - <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 <filename>ipk</filename> 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 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 <filename>&lt;sysroot_dir&gt;</filename>.
        Finally, have an OPKG configuration file <filename>&lt;conf_file&gt;</filename>
        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 &lt;conf_file&gt; -o &lt;sysroot_dir&gt; update
     $ opkg-cl –f &lt;cconf_file&gt; -o &lt;sysroot_dir&gt; \
        --force-overwrite install libglade
     $ opkg-cl –f &lt;cconf_file&gt; -o &lt;sysroot_dir&gt; \
        --force-overwrite install libglade-dbg
     $ opkg-cl –f &lt;conf_file&gt; -o &lt;sysroot_dir&gt; \
        --force-overwrite install libglade-dev
        </literallayout>
    </para>
</section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->