From 43e3a19c19e2d4f6b1d84c24413df6327540fab9 Mon Sep 17 00:00:00 2001 From: "Robert P. J. Day" Date: Fri, 30 Oct 2020 15:38:30 +0100 Subject: [PATCH] adt-manual: delete obsolete ADT manual, and related content Since the ADT manual has long been superseded by the SDK manual, remove the entire adt-manual directory, and the references to it in the two top-level files "conf.py" and "poky.yaml". (From yocto-docs rev: 64b2e83bddf6af0439ac7089ac95e60faa696cfc) Signed-off-by: Robert P. J. Day Signed-off-by: Nicolas Dechesne Signed-off-by: Richard Purdie --- documentation/adt-manual/adt-command.rst | 180 ----- documentation/adt-manual/adt-intro.rst | 138 ---- documentation/adt-manual/adt-manual-intro.rst | 24 - documentation/adt-manual/adt-manual.rst | 17 - documentation/adt-manual/adt-package.rst | 70 -- documentation/adt-manual/adt-prepare.rst | 752 ------------------ .../adt-manual/figures/adt-title.png | Bin 13498 -> 0 bytes .../figures/using-a-pre-built-image.png | Bin 12733 -> 0 bytes documentation/conf.py | 3 +- documentation/poky.yaml | 1 - 10 files changed, 1 insertion(+), 1184 deletions(-) delete mode 100644 documentation/adt-manual/adt-command.rst delete mode 100644 documentation/adt-manual/adt-intro.rst delete mode 100644 documentation/adt-manual/adt-manual-intro.rst delete mode 100644 documentation/adt-manual/adt-manual.rst delete mode 100644 documentation/adt-manual/adt-package.rst delete mode 100644 documentation/adt-manual/adt-prepare.rst delete mode 100644 documentation/adt-manual/figures/adt-title.png delete mode 100644 documentation/adt-manual/figures/using-a-pre-built-image.png diff --git a/documentation/adt-manual/adt-command.rst b/documentation/adt-manual/adt-command.rst deleted file mode 100644 index d348adfcce..0000000000 --- a/documentation/adt-manual/adt-command.rst +++ /dev/null @@ -1,180 +0,0 @@ -.. SPDX-License-Identifier: CC-BY-SA-2.0-UK - -********************** -Using the Command Line -********************** - -Recall that earlier the manual discussed how to use an existing -toolchain tarball that had been installed into the default installation -directory, ``/opt/poky/DISTRO``, which is outside of the :term:`Build Directory` -(see the section -"`Using a Cross-Toolchain -Tarball) <#using-an-existing-toolchain-tarball>`__". And, that sourcing -your architecture-specific environment setup script initializes a -suitable cross-toolchain development environment. - -During this setup, locations for the compiler, QEMU scripts, QEMU -binary, a special version of ``pkgconfig`` and other useful utilities -are added to the ``PATH`` variable. Also, variables to assist -``pkgconfig`` and ``autotools`` are also defined so that, for example, -``configure.sh`` can find pre-generated test results for tests that need -target hardware on which to run. You can see the "`Setting Up the -Cross-Development -Environment <#setting-up-the-cross-development-environment>`__" section -for the list of cross-toolchain environment variables established by the -script. - -Collectively, these conditions allow you to easily use the toolchain -outside of the OpenEmbedded build environment on both Autotools-based -projects and Makefile-based projects. This chapter provides information -for both these types of projects. - -Autotools-Based Projects -======================== - -Once you have a suitable cross-toolchain installed, it is very easy to -develop a project outside of the OpenEmbedded build system. This section -presents a simple "Helloworld" example that shows how to set up, -compile, and run the project. - -Creating and Running a Project Based on GNU Autotools ------------------------------------------------------ - -Follow these steps to create a simple Autotools-based project: - -1. *Create your directory:* Create a clean directory for your project - and then make that directory your working location: $ mkdir - $HOME/helloworld $ cd $HOME/helloworld - -2. *Populate the directory:* Create ``hello.c``, ``Makefile.am``, and - ``configure.in`` files as follows: - - - For ``hello.c``, include these lines: #include main() { - printf("Hello World!\n"); } - - - For ``Makefile.am``, include these lines: bin_PROGRAMS = hello - hello_SOURCES = hello.c - - - For ``configure.in``, include these lines: AC_INIT(hello.c) - AM_INIT_AUTOMAKE(hello,0.1) AC_PROG_CC AC_PROG_INSTALL - AC_OUTPUT(Makefile) - -3. *Source the cross-toolchain environment setup file:* Installation of - the cross-toolchain creates a cross-toolchain environment setup - script in the directory that the ADT was installed. Before you can - use the tools to develop your project, you must source this setup - script. The script begins with the string "environment-setup" and - contains the machine architecture, which is followed by the string - "poky-linux". Here is an example that sources a script from the - default ADT installation directory that uses the 32-bit Intel x86 - Architecture and the DISTRO_NAME Yocto Project release: $ source - /opt/poky/DISTRO/environment-setup-i586-poky-linux - -4. *Generate the local aclocal.m4 files and create the configure - script:* The following GNU Autotools generate the local - ``aclocal.m4`` files and create the configure script: $ aclocal $ - autoconf - -5. *Generate files needed by GNU coding standards:* GNU coding - standards require certain files in order for the project to be - compliant. This command creates those files: $ touch NEWS README - AUTHORS ChangeLog - -6. *Generate the configure file:* This command generates the - ``configure``: $ automake -a - -7. *Cross-compile the project:* This command compiles the project using - the cross-compiler. The - :term:`CONFIGURE_FLAGS` - environment variable provides the minimal arguments for GNU - configure: $ ./configure ${CONFIGURE_FLAGS} - -8. *Make and install the project:* These two commands generate and - install the project into the destination directory: $ make $ make - install DESTDIR=./tmp - -9. *Verify the installation:* This command is a simple way to verify - the installation of your project. Running the command prints the - architecture on which the binary file can run. This architecture - should be the same architecture that the installed cross-toolchain - supports. $ file ./tmp/usr/local/bin/hello - -10. *Execute your project:* To execute the project in the shell, simply - enter the name. You could also copy the binary to the actual target - hardware and run the project there as well: $ ./hello As expected, - the project displays the "Hello World!" message. - -Passing Host Options --------------------- - -For an Autotools-based project, you can use the cross-toolchain by just -passing the appropriate host option to ``configure.sh``. The host option -you use is derived from the name of the environment setup script found -in the directory in which you installed the cross-toolchain. For -example, the host option for an ARM-based target that uses the GNU EABI -is ``armv5te-poky-linux-gnueabi``. You will notice that the name of the -script is ``environment-setup-armv5te-poky-linux-gnueabi``. Thus, the -following command works to update your project and rebuild it using the -appropriate cross-toolchain tools: $ ./configure ---host=armv5te-poky-linux-gnueabi \\ --with-libtool-sysroot=sysroot_dir - -.. note:: - - If the - configure - script results in problems recognizing the - --with-libtool-sysroot= - sysroot-dir - option, regenerate the script to enable the support by doing the - following and then run the script again: - :: - - $ libtoolize --automake - $ aclocal -I ${OECORE_NATIVE_SYSROOT}/usr/share/aclocal \ - [-I dir_containing_your_project-specific_m4_macros] - $ autoconf - $ autoheader - $ automake -a - - -Makefile-Based Projects -======================= - -For Makefile-based projects, the cross-toolchain environment variables -established by running the cross-toolchain environment setup script are -subject to general ``make`` rules. - -To illustrate this, consider the following four cross-toolchain -environment variables: -:term:`CC`\ =i586-poky-linux-gcc -m32 --march=i586 --sysroot=/opt/poky/1.8/sysroots/i586-poky-linux -:term:`LD`\ =i586-poky-linux-ld ---sysroot=/opt/poky/1.8/sysroots/i586-poky-linux -:term:`CFLAGS`\ =-O2 -pipe -g --feliminate-unused-debug-types -:term:`CXXFLAGS`\ =-O2 -pipe -g --feliminate-unused-debug-types Now, consider the following three cases: - -- *Case 1 - No Variables Set in the ``Makefile``:* Because these - variables are not specifically set in the ``Makefile``, the variables - retain their values based on the environment. - -- *Case 2 - Variables Set in the ``Makefile``:* Specifically setting - variables in the ``Makefile`` during the build results in the - environment settings of the variables being overwritten. - -- *Case 3 - Variables Set when the ``Makefile`` is Executed from the - Command Line:* Executing the ``Makefile`` from the command line - results in the variables being overwritten with command-line content - regardless of what is being set in the ``Makefile``. In this case, - environment variables are not considered unless you use the "-e" flag - during the build: $ make -e file If you use this flag, then the - environment values of the variables override any variables - specifically set in the ``Makefile``. - -.. note:: - - For the list of variables set up by the cross-toolchain environment - setup script, see the " - Setting Up the Cross-Development Environment - " section. diff --git a/documentation/adt-manual/adt-intro.rst b/documentation/adt-manual/adt-intro.rst deleted file mode 100644 index 92c1570992..0000000000 --- a/documentation/adt-manual/adt-intro.rst +++ /dev/null @@ -1,138 +0,0 @@ -.. SPDX-License-Identifier: CC-BY-SA-2.0-UK - -***************************************** -The Application Development Toolkit (ADT) -***************************************** - -Part of the Yocto Project development solution is an Application -Development Toolkit (ADT). The ADT provides you with a custom-built, -cross-development platform suited for developing a user-targeted product -application. - -Fundamentally, the ADT consists of the following: - -- An architecture-specific cross-toolchain and matching sysroot both - built by the :term:`OpenEmbedded Build System`. - The toolchain and - sysroot are based on a `Metadata <&YOCTO_DOCS_DEV_URL;#metadata>`__ - configuration and extensions, which allows you to cross-develop on - the host machine for the target hardware. - -- The Eclipse IDE Yocto Plug-in. - -- The Quick EMUlator (QEMU), which lets you simulate target hardware. - -- Various user-space tools that greatly enhance your application - development experience. - -The Cross-Development Toolchain -=============================== - -The `Cross-Development -Toolchain <&YOCTO_DOCS_DEV_URL;#cross-development-toolchain>`__ consists -of a cross-compiler, cross-linker, and cross-debugger that are used to -develop user-space applications for targeted hardware. This toolchain is -created either by running the ADT Installer script, a toolchain -installer script, or through a :term:`Build Directory` -that is based on -your Metadata configuration or extension for your targeted device. The -cross-toolchain works with a matching target sysroot. - -Sysroot -======= - -The matching target sysroot contains needed headers and libraries for -generating binaries that run on the target architecture. The sysroot is -based on the target root filesystem image that is built by the -OpenEmbedded build system and uses the same Metadata configuration used -to build the cross-toolchain. - -.. _eclipse-overview: - -Eclipse Yocto Plug-in -===================== - -The Eclipse IDE is a popular development environment and it fully -supports development using the Yocto Project. When you install and -configure the Eclipse Yocto Project Plug-in into the Eclipse IDE, you -maximize your Yocto Project experience. Installing and configuring the -Plug-in results in an environment that has extensions specifically -designed to let you more easily develop software. These extensions allow -for cross-compilation, deployment, and execution of your output into a -QEMU emulation session. You can also perform cross-debugging and -profiling. The environment also supports a suite of tools that allows -you to perform remote profiling, tracing, collection of power data, -collection of latency data, and collection of performance data. - -For information about the application development workflow that uses the -Eclipse IDE and for a detailed example of how to install and configure -the Eclipse Yocto Project Plug-in, see the "`Working Within -Eclipse <&YOCTO_DOCS_DEV_URL;#adt-eclipse>`__" section of the Yocto -Project Development Manual. - -The QEMU Emulator -================= - -The QEMU emulator allows you to simulate your hardware while running -your application or image. QEMU is made available a number of ways: - -- If you use the ADT Installer script to install ADT, you can specify - whether or not to install QEMU. - -- If you have cloned the ``poky`` Git repository to create a - :term:`Source Directory` and you have - sourced the environment setup script, QEMU is installed and - automatically available. - -- If you have downloaded a Yocto Project release and unpacked it to - create a :term:`Source Directory` - and you have sourced the environment setup script, QEMU is installed - and automatically available. - -- If you have installed the cross-toolchain tarball and you have - sourced the toolchain's setup environment script, QEMU is also - installed and automatically available. - -User-Space Tools -================ - -User-space tools are included as part of the Yocto Project. You will -find these tools helpful during development. The tools include -LatencyTOP, PowerTOP, OProfile, Perf, SystemTap, and Lttng-ust. These -tools are common development tools for the Linux platform. - -- *LatencyTOP:* LatencyTOP focuses on latency that causes skips in - audio, stutters in your desktop experience, or situations that - overload your server even when you have plenty of CPU power left. - -- *PowerTOP:* Helps you determine what software is using the most - power. You can find out more about PowerTOP at - https://01.org/powertop/. - -- *OProfile:* A system-wide profiler for Linux systems that is capable - of profiling all running code at low overhead. You can find out more - about OProfile at http://oprofile.sourceforge.net/about/. For - examples on how to setup and use this tool, see the - "`OProfile <&YOCTO_DOCS_PROF_URL;#profile-manual-oprofile>`__" - section in the Yocto Project Profiling and Tracing Manual. - -- *Perf:* Performance counters for Linux used to keep track of certain - types of hardware and software events. For more information on these - types of counters see https://perf.wiki.kernel.org/. For - examples on how to setup and use this tool, see the - "`perf <&YOCTO_DOCS_PROF_URL;#profile-manual-perf>`__" section in the - Yocto Project Profiling and Tracing Manual. - -- *SystemTap:* A free software infrastructure that simplifies - information gathering about a running Linux system. This information - helps you diagnose performance or functional problems. SystemTap is - not available as a user-space tool through the Eclipse IDE Yocto - Plug-in. See http://sourceware.org/systemtap for more - information on SystemTap. For examples on how to setup and use this - tool, see the - "`SystemTap <&YOCTO_DOCS_PROF_URL;#profile-manual-systemtap>`__" - section in the Yocto Project Profiling and Tracing Manual. - -- *Lttng-ust:* A User-space Tracer designed to provide detailed - information on user-space activity. See http://lttng.org/ust - for more information on Lttng-ust. diff --git a/documentation/adt-manual/adt-manual-intro.rst b/documentation/adt-manual/adt-manual-intro.rst deleted file mode 100644 index 2c840fdf02..0000000000 --- a/documentation/adt-manual/adt-manual-intro.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. SPDX-License-Identifier: CC-BY-SA-2.0-UK - -************ -Introduction -************ - -Welcome to the Yocto Project Application Developer's Guide. This manual -provides information that lets you begin developing applications using -the Yocto Project. - -The Yocto Project provides an application development environment based -on an Application Development Toolkit (ADT) and the availability of -stand-alone cross-development toolchains and other tools. This manual -describes the ADT and how you can configure and install it, how to -access and use the cross-development toolchains, how to customize the -development packages installation, how to use command-line development -for both Autotools-based and Makefile-based projects, and an -introduction to the Eclipse IDE Yocto Plug-in. - -.. note:: - - The ADT is distribution-neutral and does not require the Yocto - Project reference distribution, which is called Poky. This manual, - however, uses examples that use the Poky distribution. diff --git a/documentation/adt-manual/adt-manual.rst b/documentation/adt-manual/adt-manual.rst deleted file mode 100644 index b61f59e0f0..0000000000 --- a/documentation/adt-manual/adt-manual.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. SPDX-License-Identifier: CC-BY-SA-2.0-UK - -=========================================== -Yocto Project Application Developer's Guide -=========================================== - -| - -.. toctree:: - :caption: Table of Contents - :numbered: - - adt-manual-intro - adt-intro - adt-prepare - adt-package - adt-command diff --git a/documentation/adt-manual/adt-package.rst b/documentation/adt-manual/adt-package.rst deleted file mode 100644 index a722453ec4..0000000000 --- a/documentation/adt-manual/adt-package.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. SPDX-License-Identifier: CC-BY-SA-2.0-UK - -************************************************************ -Optionally Customizing the Development Packages Installation -************************************************************ - -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. - -Package Management Systems -========================== - -The OpenEmbedded build system supports the generation of sysroot files -using three different Package Management Systems (PMS): - -- *OPKG:* A less well known PMS whose use originated in the - OpenEmbedded and OpenWrt embedded Linux projects. This PMS works with - files packaged in an ``.ipk`` format. See - http://en.wikipedia.org/wiki/Opkg for more information about - OPKG. - -- *RPM:* A more widely known PMS intended for GNU/Linux distributions. - This PMS works with files packaged in an ``.rpm`` format. The build - system currently installs through this PMS by default. See - http://en.wikipedia.org/wiki/RPM_Package_Manager for more - information about RPM. - -- *Debian:* The PMS for Debian-based systems is built on many PMS - tools. The lower-level PMS tool ``dpkg`` forms the base of the Debian - PMS. For information on dpkg see - http://en.wikipedia.org/wiki/Dpkg. - -Configuring the PMS -=================== - -Whichever PMS you are using, you need to be sure that the -:term:`PACKAGE_CLASSES` -variable in the ``conf/local.conf`` 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 -``conf/local.conf`` configuration file for details. - -.. note:: - - For build performance information related to the PMS, see the " - package.bbclass - " section in the Yocto Project Reference Manual. - -As an example, consider a scenario where you are using OPKG and you want -to add the ``libglade`` package to the target sysroot. - -First, you should generate the IPK file for the ``libglade`` package and -add it into a working ``opkg`` repository. Use these commands: $ bitbake -libglade $ bitbake package-index - -Next, source the cross-toolchain environment setup script found in the -:term:`Source Directory`. Follow -that by setting up the installation destination to point to your sysroot -as sysroot_dir. Finally, have an OPKG configuration file conf_file that -corresponds to the ``opkg`` repository you have just created. The -following command forms should now work: $ opkg-cl –f conf_file -o -sysroot_dir update $ opkg-cl –f cconf_file -o sysroot_dir \\ ---force-overwrite install libglade $ opkg-cl –f cconf_file -o -sysroot_dir \\ --force-overwrite install libglade-dbg $ opkg-cl –f -conf_file> -osysroot_dir> \\ --force-overwrite install libglade-dev diff --git a/documentation/adt-manual/adt-prepare.rst b/documentation/adt-manual/adt-prepare.rst deleted file mode 100644 index 3e5c6ae94a..0000000000 --- a/documentation/adt-manual/adt-prepare.rst +++ /dev/null @@ -1,752 +0,0 @@ -.. SPDX-License-Identifier: CC-BY-SA-2.0-UK - -************************************* -Preparing for Application Development -************************************* - -In order to develop applications, you need set up your host development -system. Several ways exist that allow you to install cross-development -tools, QEMU, the Eclipse Yocto Plug-in, and other tools. This chapter -describes how to prepare for application development. - -.. _installing-the-adt: - -Installing the ADT and Toolchains -================================= - -The following list describes installation methods that set up varying -degrees of tool availability on your system. Regardless of the -installation method you choose, you must ``source`` the cross-toolchain -environment setup script, which establishes several key environment -variables, before you use a toolchain. See the "`Setting Up the -Cross-Development -Environment <#setting-up-the-cross-development-environment>`__" section -for more information. - -.. note:: - - Avoid mixing installation methods when installing toolchains for - different architectures. For example, avoid using the ADT Installer - to install some toolchains and then hand-installing cross-development - toolchains by running the toolchain installer for different - architectures. Mixing installation methods can result in situations - where the ADT Installer becomes unreliable and might not install the - toolchain. - - If you must mix installation methods, you might avoid problems by - deleting ``/var/lib/opkg``, thus purging the ``opkg`` package - metadata. - -- *Use the ADT installer script:* This method is the recommended way to - install the ADT because it automates much of the process for you. For - example, you can configure the installation to install the QEMU - emulator and the user-space NFS, specify which root filesystem - profiles to download, and define the target sysroot location. - -- *Use an existing toolchain:* Using this method, you select and - download an architecture-specific toolchain installer and then run - the script to hand-install the toolchain. If you use this method, you - just get the cross-toolchain and QEMU - you do not get any of the - other mentioned benefits had you run the ADT Installer script. - -- *Use the toolchain from within the Build Directory:* If you already - have a :term:`Build Directory`, - you can build the cross-toolchain within the directory. However, like - the previous method mentioned, you only get the cross-toolchain and - QEMU - you do not get any of the other benefits without taking - separate steps. - -Using the ADT Installer ------------------------ - -To run the ADT Installer, you need to get the ADT Installer tarball, be -sure you have the necessary host development packages that support the -ADT Installer, and then run the ADT Installer Script. - -For a list of the host packages needed to support ADT installation and -use, see the "ADT Installer Extras" lists in the "`Required Packages for -the Host Development -System <&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system>`__" -section of the Yocto Project Reference Manual. - -Getting the ADT Installer Tarball -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The ADT Installer is contained in the ADT Installer tarball. You can get -the tarball using either of these methods: - -- *Download the Tarball:* You can download the tarball from - ` <&YOCTO_ADTINSTALLER_DL_URL;>`__ into any directory. - -- *Build the Tarball:* You can use - :term:`BitBake` to generate the - tarball inside an existing :term:`Build Directory`. - - If you use BitBake to generate the ADT Installer tarball, you must - ``source`` the environment setup script - (````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or - ```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__) - located in the Source Directory before running the ``bitbake`` - command that creates the tarball. - - The following example commands establish the - :term:`Source Directory`, check out the - current release branch, set up the build environment while also - creating the default Build Directory, and run the ``bitbake`` command - that results in the tarball - ``poky/build/tmp/deploy/sdk/adt_installer.tar.bz2``: - - .. note:: - - Before using BitBake to build the ADT tarball, be sure to make - sure your - local.conf - file is properly configured. See the " - User Configuration - " section in the Yocto Project Reference Manual for general - configuration information. - - $ cd ~ $ git clone git://git.yoctoproject.org/poky $ cd poky $ git - checkout -b DISTRO_NAME origin/DISTRO_NAME $ source oe-init-build-env $ - bitbake adt-installer - -Configuring and Running the ADT Installer Script -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Before running the ADT Installer script, you need to unpack the tarball. -You can unpack the tarball in any directory you wish. For example, this -command copies the ADT Installer tarball from where it was built into -the home directory and then unpacks the tarball into a top-level -directory named ``adt-installer``: $ cd ~ $ cp -poky/build/tmp/deploy/sdk/adt_installer.tar.bz2 $HOME $ tar -xjf -adt_installer.tar.bz2 Unpacking it creates the directory -``adt-installer``, which contains the ADT Installer script -(``adt_installer``) and its configuration file (``adt_installer.conf``). - -Before you run the script, however, you should examine the ADT Installer -configuration file and be sure you are going to get what you want. Your -configurations determine which kernel and filesystem image are -downloaded. - -The following list describes the configurations you can define for the -ADT Installer. For configuration values and restrictions, see the -comments in the ``adt-installer.conf`` file: - -- ``YOCTOADT_REPO``: This area includes the IPKG-based packages and the - root filesystem upon which the installation is based. If you want to - set up your own IPKG repository pointed to by ``YOCTOADT_REPO``, you - need to be sure that the directory structure follows the same layout - as the reference directory set up at - http://adtrepo.yoctoproject.org. Also, your repository needs - to be accessible through HTTP. - -- ``YOCTOADT_TARGETS``: The machine target architectures for which you - want to set up cross-development environments. - -- ``YOCTOADT_QEMU``: Indicates whether or not to install the emulator - QEMU. - -- ``YOCTOADT_NFS_UTIL``: Indicates whether or not to install user-mode - NFS. If you plan to use the Eclipse IDE Yocto plug-in against QEMU, - you should install NFS. - - .. note:: - - To boot QEMU images using our userspace NFS server, you need to be - running - portmap - or - rpcbind - . If you are running - rpcbind - , you will also need to add the - -i - option when - rpcbind - starts up. Please make sure you understand the security - implications of doing this. You might also have to modify your - firewall settings to allow NFS booting to work. - -- ``YOCTOADT_ROOTFS_``\ arch: The root filesystem images you want to - download from the ``YOCTOADT_IPKG_REPO`` repository. - -- ``YOCTOADT_TARGET_SYSROOT_IMAGE_``\ arch: The particular root - filesystem used to extract and create the target sysroot. The value - of this variable must have been specified with - ``YOCTOADT_ROOTFS_``\ arch. For example, if you downloaded both - ``minimal`` and ``sato-sdk`` images by setting - ``YOCTOADT_ROOTFS_``\ arch to "minimal sato-sdk", then - ``YOCTOADT_ROOTFS_``\ arch must be set to either "minimal" or - "sato-sdk". - -- ``YOCTOADT_TARGET_SYSROOT_LOC_``\ arch: The location on the - development host where the target sysroot is created. - -After you have configured the ``adt_installer.conf`` file, run the -installer using the following command: $ cd adt-installer $ -./adt_installer Once the installer begins to run, you are asked to enter -the location for cross-toolchain installation. The default location is -``/opt/poky/``\ release. After either accepting the default location or -selecting your own location, you are prompted to run the installation -script interactively or in silent mode. If you want to closely monitor -the installation, choose "I" for interactive mode rather than "S" for -silent mode. Follow the prompts from the script to complete the -installation. - -Once the installation completes, the ADT, which includes the -cross-toolchain, is installed in the selected installation directory. -You will notice environment setup files for the cross-toolchain in the -installation directory, and image tarballs in the ``adt-installer`` -directory according to your installer configurations, and the target -sysroot located according to the ``YOCTOADT_TARGET_SYSROOT_LOC_``\ arch -variable also in your configuration file. - -.. _using-an-existing-toolchain-tarball: - -Using a Cross-Toolchain Tarball -------------------------------- - -If you want to simply install a cross-toolchain by hand, you can do so -by running the toolchain installer. The installer includes the pre-built -cross-toolchain, the ``runqemu`` script, and support files. If you use -this method to install the cross-toolchain, you might still need to -install the target sysroot by installing and extracting it separately. -For information on how to install the sysroot, see the "`Extracting the -Root Filesystem <#extracting-the-root-filesystem>`__" section. - -Follow these steps: - -1. *Get your toolchain installer using one of the following methods:* - - - Go to ` <&YOCTO_TOOLCHAIN_DL_URL;>`__ and find the folder that - matches your host development system (i.e. ``i686`` for 32-bit - machines or ``x86_64`` for 64-bit machines). - - Go into that folder and download the toolchain installer whose - name includes the appropriate target architecture. The toolchains - provided by the Yocto Project are based off of the - ``core-image-sato`` image and contain libraries appropriate for - developing against that image. For example, if your host - development system is a 64-bit x86 system and you are going to use - your cross-toolchain for a 32-bit x86 target, go into the - ``x86_64`` folder and download the following installer: - poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh - - - Build your own toolchain installer. For cases where you cannot use - an installer from the download area, you can build your own as - described in the "`Optionally Building a Toolchain - Installer <#optionally-building-a-toolchain-installer>`__" - section. - -2. *Once you have the installer, run it to install the toolchain:* - - .. note:: - - You must change the permissions on the toolchain installer script - so that it is executable. - - The following command shows how to run the installer given a - toolchain tarball for a 64-bit x86 development host system and a - 32-bit x86 target architecture. The example assumes the toolchain - installer is located in ``~/Downloads/``. $ - ~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh - The first thing the installer prompts you for is the directory into - which you want to install the toolchain. The default directory used - is ``/opt/poky/DISTRO``. If you do not have write permissions for the - directory into which you are installing the toolchain, the toolchain - installer notifies you and exits. Be sure you have write permissions - in the directory and run the installer again. - - When the script finishes, the cross-toolchain is installed. You will - notice environment setup files for the cross-toolchain in the - installation directory. - -.. _using-the-toolchain-from-within-the-build-tree: - -Using BitBake and the Build Directory -------------------------------------- - -A final way of making the cross-toolchain available is to use BitBake to -generate the toolchain within an existing :term:`Build Directory`. -This method does -not install the toolchain into the default ``/opt`` directory. As with -the previous method, if you need to install the target sysroot, you must -do that separately as well. - -Follow these steps to generate the toolchain into the Build Directory: - -1. *Set up the Build Environment:* Source the OpenEmbedded build - environment setup script (i.e. - ````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or - ```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__) - located in the :term:`Source Directory`. - -2. *Check your Local Configuration File:* At this point, you should be - sure that the :term:`MACHINE` - variable in the ``local.conf`` file found in the ``conf`` directory - of the Build Directory is set for the target architecture. Comments - within the ``local.conf`` file list the values you can use for the - ``MACHINE`` variable. If you do not change the ``MACHINE`` variable, - the OpenEmbedded build system uses ``qemux86`` as the default target - machine when building the cross-toolchain. - - .. note:: - - You can populate the Build Directory with the cross-toolchains for - more than a single architecture. You just need to edit the - MACHINE - variable in the - local.conf - file and re-run the - bitbake - command. - -3. *Make Sure Your Layers are Enabled:* Examine the - ``conf/bblayers.conf`` file and make sure that you have enabled all - the compatible layers for your target machine. The OpenEmbedded build - system needs to be aware of each layer you want included when - building images and cross-toolchains. For information on how to - enable a layer, see the "`Enabling Your - Layer <&YOCTO_DOCS_DEV_URL;#enabling-your-layer>`__" section in the - Yocto Project Development Manual. - -4. *Generate the Cross-Toolchain:* Run ``bitbake meta-ide-support`` to - complete the cross-toolchain generation. Once the ``bitbake`` command - finishes, the cross-toolchain is generated and populated within the - Build Directory. You will notice environment setup files for the - cross-toolchain that contain the string "``environment-setup``" in - the Build Directory's ``tmp`` folder. - - Be aware that when you use this method to install the toolchain, you - still need to separately extract and install the sysroot filesystem. - For information on how to do this, see the "`Extracting the Root - Filesystem <#extracting-the-root-filesystem>`__" section. - -Setting Up the Cross-Development Environment -============================================ - -Before you can develop using the cross-toolchain, you need to set up the -cross-development environment by sourcing the toolchain's environment -setup script. If you used the ADT Installer or hand-installed -cross-toolchain, then you can find this script in the directory you -chose for installation. For this release, the default installation -directory is ````. If you installed the toolchain in the -:term:`Build Directory`, you can find the -environment setup script for the toolchain in the Build Directory's -``tmp`` directory. - -Be sure to run the environment setup script that matches the -architecture for which you are developing. Environment setup scripts -begin with the string "``environment-setup``" and include as part of -their name the architecture. For example, the toolchain environment -setup script for a 64-bit IA-based architecture installed in the default -installation directory would be the following: -YOCTO_ADTPATH_DIR/environment-setup-x86_64-poky-linux When you run the -setup script, many environment variables are defined: -:term:`SDKTARGETSYSROOT` - -The path to the sysroot used for cross-compilation -:term:`PKG_CONFIG_PATH` - The -path to the target pkg-config files -:term:`CONFIG_SITE` - A GNU -autoconf site file preconfigured for the target -:term:`CC` - The minimal command and -arguments to run the C compiler -:term:`CXX` - The minimal command and -arguments to run the C++ compiler -:term:`CPP` - The minimal command and -arguments to run the C preprocessor -:term:`AS` - The minimal command and -arguments to run the assembler :term:`LD` -- The minimal command and arguments to run the linker -:term:`GDB` - The minimal command and -arguments to run the GNU Debugger -:term:`STRIP` - The minimal command and -arguments to run 'strip', which strips symbols -:term:`RANLIB` - The minimal command -and arguments to run 'ranlib' -:term:`OBJCOPY` - The minimal command -and arguments to run 'objcopy' -:term:`OBJDUMP` - The minimal command -and arguments to run 'objdump' :term:`AR` -- The minimal command and arguments to run 'ar' -:term:`NM` - The minimal command and -arguments to run 'nm' -:term:`TARGET_PREFIX` - The -toolchain binary prefix for the target tools -:term:`CROSS_COMPILE` - The -toolchain binary prefix for the target tools -:term:`CONFIGURE_FLAGS` - The -minimal arguments for GNU configure -:term:`CFLAGS` - Suggested C flags -:term:`CXXFLAGS` - Suggested C++ -flags :term:`LDFLAGS` - Suggested -linker flags when you use CC to link -:term:`CPPFLAGS` - Suggested -preprocessor flags - -Securing Kernel and Filesystem Images -===================================== - -You will need to have a kernel and filesystem image to boot using your -hardware or the QEMU emulator. Furthermore, if you plan on booting your -image using NFS or you want to use the root filesystem as the target -sysroot, you need to extract the root filesystem. - -Getting the Images ------------------- - -To get the kernel and filesystem images, you either have to build them -or download pre-built versions. For an example of how to build these -images, see the "`Buiding -Images <&YOCTO_DOCS_QS_URL;#qs-buiding-images>`__" section of the Yocto -Project Quick Start. For an example of downloading pre-build versions, -see the "`Example Using Pre-Built Binaries and -QEMU <#using-pre-built>`__" section. - -The Yocto Project ships basic kernel and filesystem images for several -architectures (``x86``, ``x86-64``, ``mips``, ``powerpc``, and ``arm``) -that you can use unaltered in the QEMU emulator. These kernel images -reside in the release area - ` <&YOCTO_MACHINES_DL_URL;>`__ and are -ideal for experimentation using Yocto Project. For information on the -image types you can build using the OpenEmbedded build system, see the -":ref:`ref-manual/ref-images:Images`" chapter in the Yocto -Project Reference Manual. - -If you are planning on developing against your image and you are not -building or using one of the Yocto Project development images (e.g. -``core-image-*-dev``), you must be sure to include the development -packages as part of your image recipe. - -If you plan on remotely deploying and debugging your application from -within the Eclipse IDE, you must have an image that contains the Yocto -Target Communication Framework (TCF) agent (``tcf-agent``). You can do -this by including the ``eclipse-debug`` image feature. - -.. note:: - - See the " - Image Features - " section in the Yocto Project Reference Manual for information on - image features. - -To include the ``eclipse-debug`` image feature, modify your -``local.conf`` file in the :term:`Build Directory` -so that the -:term:`EXTRA_IMAGE_FEATURES` -variable includes the "eclipse-debug" feature. After modifying the -configuration file, you can rebuild the image. Once the image is -rebuilt, the ``tcf-agent`` will be included in the image and is launched -automatically after the boot. - -Extracting the Root Filesystem ------------------------------- - -If you install your toolchain by hand or build it using BitBake and you -need a root filesystem, you need to extract it separately. If you use -the ADT Installer to install the ADT, the root filesystem is -automatically extracted and installed. - -Here are some cases where you need to extract the root filesystem: - -- You want to boot the image using NFS. - -- You want to use the root filesystem as the target sysroot. For - example, the Eclipse IDE environment with the Eclipse Yocto Plug-in - installed allows you to use QEMU to boot under NFS. - -- You want to develop your target application using the root filesystem - as the target sysroot. - -To extract the root filesystem, first ``source`` the cross-development -environment setup script to establish necessary environment variables. -If you built the toolchain in the Build Directory, you will find the -toolchain environment script in the ``tmp`` directory. If you installed -the toolchain by hand, the environment setup script is located in -``/opt/poky/DISTRO``. - -After sourcing the environment script, use the ``runqemu-extract-sdk`` -command and provide the filesystem image. - -Following is an example. The second command sets up the environment. In -this case, the setup script is located in the ``/opt/poky/DISTRO`` -directory. The third command extracts the root filesystem from a -previously built filesystem that is located in the ``~/Downloads`` -directory. Furthermore, this command extracts the root filesystem into -the ``qemux86-sato`` directory: $ cd ~ $ source -/opt/poky/DISTRO/environment-setup-i586-poky-linux $ runqemu-extract-sdk -\\ ~/Downloads/core-image-sato-sdk-qemux86-2011091411831.rootfs.tar.bz2 -\\ $HOME/qemux86-sato You could now point to the target sysroot at -``qemux86-sato``. - -Optionally Building a Toolchain Installer -========================================= - -As an alternative to locating and downloading a toolchain installer, you -can build the toolchain installer if you have a :term:`Build Directory`. - -.. note:: - - Although not the preferred method, it is also possible to use - bitbake meta-toolchain - to build the toolchain installer. If you do use this method, you must - separately install and extract the target sysroot. For information on - how to install the sysroot, see the " - Extracting the Root Filesystem - " section. - -To build the toolchain installer and populate the SDK image, use the -following command: $ bitbake image -c populate_sdk The command results -in a toolchain installer that contains the sysroot that matches your -target root filesystem. - -Another powerful feature is that the toolchain is completely -self-contained. The binaries are linked against their own copy of -``libc``, which results in no dependencies on the target system. To -achieve this, the pointer to the dynamic loader is configured at install -time since that path cannot be dynamically altered. This is the reason -for a wrapper around the ``populate_sdk`` archive. - -Another feature is that only one set of cross-canadian toolchain -binaries are produced per architecture. This feature takes advantage of -the fact that the target hardware can be passed to ``gcc`` as a set of -compiler options. Those options are set up by the environment script and -contained in variables such as :term:`CC` -and :term:`LD`. This reduces the space -needed for the tools. Understand, however, that a sysroot is still -needed for every target since those binaries are target-specific. - -Remember, before using any BitBake command, you must source the build -environment setup script (i.e. -````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or -```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__) -located in the Source Directory and you must make sure your -``conf/local.conf`` variables are correct. In particular, you need to be -sure the :term:`MACHINE` variable -matches the architecture for which you are building and that the -:term:`SDKMACHINE` variable is -correctly set if you are building a toolchain designed to run on an -architecture that differs from your current development host machine -(i.e. the build machine). - -When the ``bitbake`` command completes, the toolchain installer will be -in ``tmp/deploy/sdk`` in the Build Directory. - -.. note:: - - By default, this toolchain does not build static binaries. If you - want to use the toolchain to build these types of libraries, you need - to be sure your image has the appropriate static development - libraries. Use the - IMAGE_INSTALL - variable inside your - local.conf - file to install the appropriate library packages. Following is an - example using - glibc - static development libraries: - :: - - IMAGE_INSTALL_append = " glibc-staticdev" - - -Optionally Using an External Toolchain -====================================== - -You might want to use an external toolchain as part of your development. -If this is the case, the fundamental steps you need to accomplish are as -follows: - -- Understand where the installed toolchain resides. For cases where you - need to build the external toolchain, you would need to take separate - steps to build and install the toolchain. - -- Make sure you add the layer that contains the toolchain to your - ``bblayers.conf`` file through the - :term:`BBLAYERS` variable. - -- Set the - :term:`EXTERNAL_TOOLCHAIN` - variable in your ``local.conf`` file to the location in which you - installed the toolchain. - -A good example of an external toolchain used with the Yocto Project is -Mentor Graphics Sourcery G++ Toolchain. You can see information on how -to use that particular layer in the ``README`` file at -http://github.com/MentorEmbedded/meta-sourcery/. You can find -further information by reading about the -:term:`TCMODE` variable in the Yocto -Project Reference Manual's variable glossary. - -.. _using-pre-built: - -Example Using Pre-Built Binaries and QEMU -========================================= - -If hardware, libraries and services are stable, you can get started by -using a pre-built binary of the filesystem image, kernel, and toolchain -and run it using the QEMU emulator. This scenario is useful for -developing application software. - -|Using a Pre-Built Image| - -For this scenario, you need to do several things: - -- Install the appropriate stand-alone toolchain tarball. - -- Download the pre-built image that will boot with QEMU. You need to be - sure to get the QEMU image that matches your target machine's - architecture (e.g. x86, ARM, etc.). - -- Download the filesystem image for your target machine's architecture. - -- Set up the environment to emulate the hardware and then start the - QEMU emulator. - -Installing the Toolchain ------------------------- - -You can download a tarball installer, which includes the pre-built -toolchain, the ``runqemu`` script, and support files from the -appropriate directory under ` <&YOCTO_TOOLCHAIN_DL_URL;>`__. Toolchains -are available for 32-bit and 64-bit x86 development systems from the -``i686`` and ``x86_64`` directories, respectively. The toolchains the -Yocto Project provides are based off the ``core-image-sato`` image and -contain libraries appropriate for developing against that image. Each -type of development system supports five or more target architectures. - -The names of the tarball installer scripts are such that a string -representing the host system appears first in the filename and then is -immediately followed by a string representing the target architecture. - -:: - - poky-glibc-host_system-image_type-arch-toolchain-release_version.sh - - Where: - host_system is a string representing your development system: - - i686 or x86_64. - - image_type is a string representing the image you wish to - develop a Software Development Toolkit (SDK) for use against. - The Yocto Project builds toolchain installers using the - following BitBake command: - - bitbake core-image-sato -c populate_sdk - - arch is a string representing the tuned target architecture: - - i586, x86_64, powerpc, mips, armv7a or armv5te - - release_version is a string representing the release number of the - Yocto Project: - - DISTRO, DISTRO+snapshot - - -For example, the following toolchain installer is for a 64-bit -development host system and a i586-tuned target architecture based off -the SDK for ``core-image-sato``: -poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh - -Toolchains are self-contained and by default are installed into -``/opt/poky``. However, when you run the toolchain installer, you can -choose an installation directory. - -The following command shows how to run the installer given a toolchain -tarball for a 64-bit x86 development host system and a 32-bit x86 target -architecture. You must change the permissions on the toolchain installer -script so that it is executable. - -The example assumes the toolchain installer is located in -``~/Downloads/``. - -.. note:: - - If you do not have write permissions for the directory into which you - are installing the toolchain, the toolchain installer notifies you - and exits. Be sure you have write permissions in the directory and - run the installer again. - -$ ~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh - -For more information on how to install tarballs, see the "`Using a -Cross-Toolchain -Tarball <&YOCTO_DOCS_ADT_URL;#using-an-existing-toolchain-tarball>`__" -and "`Using BitBake and the Build -Directory <&YOCTO_DOCS_ADT_URL;#using-the-toolchain-from-within-the-build-tree>`__" -sections in the Yocto Project Application Developer's Guide. - -Downloading the Pre-Built Linux Kernel --------------------------------------- - -You can download the pre-built Linux kernel suitable for running in the -QEMU emulator from ` <&YOCTO_QEMU_DL_URL;>`__. Be sure to use the kernel -that matches the architecture you want to simulate. Download areas exist -for the five supported machine architectures: ``qemuarm``, ``qemumips``, -``qemuppc``, ``qemux86``, and ``qemux86-64``. - -Most kernel files have one of the following forms: \*zImage-qemuarch.bin -vmlinux-qemuarch.bin Where: arch is a string representing the target -architecture: x86, x86-64, ppc, mips, or arm. - -You can learn more about downloading a Yocto Project kernel in the -"`Yocto Project Kernel <&YOCTO_DOCS_DEV_URL;#local-kernel-files>`__" -bulleted item in the Yocto Project Development Manual. - -Downloading the Filesystem --------------------------- - -You can also download the filesystem image suitable for your target -architecture from ` <&YOCTO_QEMU_DL_URL;>`__. Again, be sure to use the -filesystem that matches the architecture you want to simulate. - -The filesystem image has two tarball forms: ``ext3`` and ``tar``. You -must use the ``ext3`` form when booting an image using the QEMU -emulator. The ``tar`` form can be flattened out in your host development -system and used for build purposes with the Yocto Project. -core-image-profile-qemuarch.ext3 core-image-profile-qemuarch.tar.bz2 -Where: profile is the filesystem image's profile: lsb, lsb-dev, lsb-sdk, -lsb-qt3, minimal, minimal-dev, sato, sato-dev, or sato-sdk. For -information on these types of image profiles, see the -":ref:`ref-manual/ref-images:Images`" chapter in the Yocto -Project Reference Manual. arch is a string representing the target -architecture: x86, x86-64, ppc, mips, or arm. - -Setting Up the Environment and Starting the QEMU Emulator ---------------------------------------------------------- - -Before you start the QEMU emulator, you need to set up the emulation -environment. The following command form sets up the emulation -environment. $ source -YOCTO_ADTPATH_DIR/environment-setup-arch-poky-linux-if Where: arch is a -string representing the target architecture: i586, x86_64, ppc603e, -mips, or armv5te. if is a string representing an embedded application -binary interface. Not all setup scripts include this string. - -Finally, this command form invokes the QEMU emulator $ runqemu qemuarch -kernel-image filesystem-image Where: qemuarch is a string representing -the target architecture: qemux86, qemux86-64, qemuppc, qemumips, or -qemuarm. kernel-image is the architecture-specific kernel image. -filesystem-image is the .ext3 filesystem image. - -Continuing with the example, the following two commands setup the -emulation environment and launch QEMU. This example assumes the root -filesystem (``.ext3`` file) and the pre-built kernel image file both -reside in your home directory. The kernel and filesystem are for a -32-bit target architecture. $ cd $HOME $ source -YOCTO_ADTPATH_DIR/environment-setup-i586-poky-linux $ runqemu qemux86 -bzImage-qemux86.bin \\ core-image-sato-qemux86.ext3 - -The environment in which QEMU launches varies depending on the -filesystem image and on the target architecture. For example, if you -source the environment for the ARM target architecture and then boot the -minimal QEMU image, the emulator comes up in a new shell in command-line -mode. However, if you boot the SDK image, QEMU comes up with a GUI. - -.. note:: - - Booting the PPC image results in QEMU launching in the same shell in - command-line mode. - -.. |Using a Pre-Built Image| image:: figures/using-a-pre-built-image.png diff --git a/documentation/adt-manual/figures/adt-title.png b/documentation/adt-manual/figures/adt-title.png deleted file mode 100644 index 6e71e41f1a90e50e45a296613a5498deb331ea66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13498 zcmZX)1z6Ng)HY5m-5?^}wRD4Y*Mh(eaqwX zyzl@2eOwo_^_w|o&di*1?)yxbhPomSCK)CI0s@Y*lAIO-0@4QjeIz;(yw#)Q)`q_z zx@alNAXJW0?7=?(ETz??5fG|luY-==9dtKaSiBH0xUIqCP_dq-pkeB2nN=qc|z_dJ2Y-Sw@lZqzn5GlE^>n)#FyT zs?7JjewoYie%;>~X?Yp~Hkhge*T2egS@!+<@hmf>*t*p1=#9Xk_E$IUqYJ)Ad_+1a zKqvwM4U*jIPLAK*S${|}yZFwXJh_m)Ewz~2dur_xjHh4y(czDdv!UBAw|Wj1_+?kE zOc{tOMlM=nKg_Yc2VgORt#cZ3nf^W}1@J-(NYSmB_q5va!=(y$$T=etvYVe0_4=gp z|2{}!=!HSCMe-Gw3A~quY7F~tj8G{+0Ev-r8tAk5rzh!fMWrO=jDIlMDfL6$Fdt6e ztS3#Eaezt1O(r`Y?@z9*fyWPZuik19{hiaUD!TXiUU6|w+vz}BKTA@!=N(3ImJhD8 z{G`M3-H-WeN&k?IGv;K;$MuMl3WJDW!YaSz2YvtSG52KkJisS<-n_#OCKa&%CfRX6 z0}VlX{4?9J{?fa}eyLRVvEdF@tRq%?ekruFcsi|1{K2g@0XBusBv0^^1PQ|a6J$Jdihm$4K%CE4v+AoY`U%DT^5cD2vvu`=N;&|KOp||XPP=UqOY`eI5 z-x4Sv?0PpFi+guJEG?@Llhfolfl{W^kDAoyBjF<3vPL ze44@Sv{^F2GV9GUuj;q6bPZ57>UfBFdvZe={(|2Y5Q@vYe!I1r*R62uIf7A3ZP-%x z^1Dp4Iq(nEQsu9?Xpjuh{b3`*_A{JW-8f~bVjtc(f88ue>kov{+;dWP$7G135wa&5 zdH>!@!x{@J5-N7+RA;xo>CL5G>Y$!xnp-+;{F$sw{WPNWZ`usQ_hgv3T?PUU*h8 zsEE#gME&pHL?#Hhmb`OJi8kqz>1L3uxtKu5EPK2XN_8o`+oJK7eY{o$HaOBWl_LJt^Ux%garj%kDlFCMRNHs1Z}b$kY1^hKj;T^*_A>ezpO2#{|lcWAyG z`Mg8s70@B7c>Md|z@cjIOUD^B#n7`i8Qo!gu$U7;l@AzDo?Bj>P@L($CjXP6<#)rv zPL6M1mH1VSHwsdhwSC+D=wY-BG#-bNkMQ5ksbIWhnbWmWwN$}-xP1G7|Ec>W1iQFe z3^@;oM(xYcq$-3(I`7$Yk*0Kr;kof$C`RJSqg$*2CC)WErzXdJ;oh&~dYLn8CW-gi z;oACerHA{`8=qgT&F`Y3N+|i9oEbJM+!yDz5a+2Tcul`(`gxzyo2J z6RKOFeaodF9u39Z(Ydy*(2>ou?*c>T63~nZ#M{Mo^KpF&dA+e>weai#jcPHAs@!Vi z^?{D(?<8&U1zB0q2z}ABWH4_M+n45s3_qDpiG0p~)-cEWOZ+-?35KNx z^}G_lj~sOFVoV_uL{Rx8J9>WSqQy&Sm5Pbvq!2~vAQ+|r^DNHFPK*Q(oqkPa*EqkZ z9aDZ6hw*<4y{mF6s9!l1GL{^W`PG-cFpgzlXxf6)?)o$BeSK-xI4eigcg88tE&<3EK_NPfh1rsaKi-FDqIXi2}H$Ecc=-)c?fn>wI7-K59vz%*jkOGT6ZJtVrqWc9y$-$dHXg>l$X~nVDIK$?cb>KW`XYgt-@wa$Zb2 z4a6zZ&ypB<^LV^=4`l;z`n~_G1wjQ%10qd;1`8nYm8zkeWq79^^T!8L&oc=r{qB!C z4lj4}a+sH{#s=N*g?~q%2;EhEmPl$9wBY>DF5>7-52%X*f$oluvdWE*W>(Ccb(fv# zPIv6X5YCSGAs?sdstm6e$T`3w7bSa2&A#`4q~ZRW*uOIpED05kdS!7&ecT8_At_-= z!+eo344G+v^le>Pe4O77qI&S0JX%p}-YHgY^t-+6t1t&rSpOGpOX>VQ;;cic-VLDX zvEPzTirf|^#9__uoHWdq*h6{ih;%bp zR3E+d#*WAA={qLHWp6fryjobIZt`=SR?+Wv5VX%~yy!=!y7AoikzBbPV)|4X z3)`$`b@>}G|2cb>IeyDjJA2KF44WF#4F?S;8#D^UB-I{5#VB#TR6kO~5^Uv;v}YeM z2OTFZhw6ex`iQK0nj<(zY>1;?Z7sR49OTOdwct^Uw>cL<%T+6zCKaaEM_)!UZx{PH z_}tf4*mNBF_QZkYgZO^@%_tBEl<3Fni)-(B^*(MgdkC@l&be#~U)sj9-oR6XuV@)L zA0JSD-PVqZe-X`gKh;?L{%Ej!)m*qw21P3U)GfMHoEYLtV<^me_4TBE!Dnjs==!@W zXDdyJQXGuI=^fI4%L)YG3)&P|MI~$ukoG?lQDQps^KTopyZEI1vp*~mF+tL8ax)w2 zgc&s7+I(xw$Ej0&fu6WE$yN#3YcZosfk~z13q`gdSu_|G;cXpdamq7tw%ib2Z#U}d zRE&;Cff$kb-~G3p@fB9?8iUt4pX)mvJog$ta_`C5$?&`DRz3Zu%B4qEH`~5}??#kZwO01!^iQsui0N1x z{g>a1PP0qLTg{5!#RR|nfUn?MpZ1$8$C}%Vu}}BK zoNpfrKP1y|3F@ylrivYPW|LrsxKTN8Y8uw{yKuGoFX(~vIqZ)WO%G+)D8_Y-F7;Ef zG;_TF>={uTp>lp6zA^GS63}g&H9R>(mG&z!d2nB98MANRP`~Ebk`%vijCpHus=?5H zmb}ouSk;x(aCMKTE_!g7y^|PMZuTNubL4=>9O&7^L-JoTOO2=>JadUXe#O^4)^Te3 zt?}%;P-sZ~E&Zvsu_}sg?J8$e1m{=pt~AS6iw&~oNbjN!P*Q&Qoevgkv1d~tk?%6G zEvU0^1o49LL|p$k)#8eJy_5mD9Z}%QAk!*&9v%`I&^jisz7hPG`68V{!e_fnk>YcI z{@Et&vbP(Nk@wt|aF`txpUiXgPX${|bIgX0XN*`R2B9Q*n)Ip_G??jP@HFS}`2QQW z|2ZNyzW3y{dB_Xi0|biJ<6YBsxdfbpySzsW?BWvSmq;@H{9s(Mn;<+%cEXRdCnrnI z1uo<#bKClJ3iO@Mxg&xtd{gHy?y6LGPMLMf9pyRnT@ih)`O@{7uz>X!V}4FV8?bMj zmkk}VQ@y&KQIVqyE~M{KkSZwt;x>bmuguGrV9)}6*0h<0v zszRkZRW!(=?-t=1++IJG7fT7|6|d=pQw(P(eCGyIGrcJA>cIzvw5 zfK}_S@dMv?^yJ`>3)(N1kf2~9Jw|PRwxlQe_IO9B{4aQ; z@kfYWrukMUT3BHAGmvkL4kSP)1=XTYeJ1~J3XL03kqb&3#w#^7U~G<*`E; z3*D~y%XCB~~|iK*9i zWk7ow(TjnC@7i=%P$EEOi%?;G#kr4qb=JGZn^Sc(cGr%_)P+kiv-6k{Ved7&LH)LD zq=bzS!A*ER}8452kp_~s1twojq|Tv`yAeUQGgLj-xgkSFm|bW?=Qt{;ba0o z3#QB-B$G&9MC$7BO1rddDJ!^qc}>*hmd|yyECxs|(*!)hF3#wh`~BL=40R~w#g*s< zlt1u~dR5@0+mPoFn^@{WcG4H2d^0tfJiaE#mme@KQ14F}b89x++eLl9dowP?Zm&H^ z73D%{no3j#1A#IVi?;rcurAG9M@Omym$pXhau!KEM18>+)k(*nXzo#~G(4Q%w-2|} z=W;x{gaMVpNs-egIW8rgpHg8BT)f2Hy7T>*S9#4;SO=`SoPr251CZ4`46kn*I?e<2 zmVr+ata7~OFrq+3K4e9Y)`8#-Gv*Va+fA@<$4&c(gPF??%m(eK7W((9&Dw#uNx22} zl%<$&x6Vu3hauw%b~QLtx~Z6Me-@(+=)rND%U&Jxd1IElu?%#B0MgGh*(lhA$cynx zyh-x}P$`lCY9YH)0{lh&KsL~6@h*Xx*jp#VFuUv{xEn6nfGM1PMLxR`oN=^ zCr!>_0f*8!bE-;#O3U^*x$x1(AK)}myc|PXF2o6kafW5is^6-_@R=w+zVJ?~d_n&! zInXg2-mRQ{{c4f4)&a-mNQ8&(t6j@PVuC!rF}f)PI}s`9a9~W`I^)(IjAO>6-X~vY zNT5o6|EoO#nu=vtox^xC+COpN!qwz>TD3Id^VlRZ`!$k!>^Yq%=TCWgw*{N2D)DQH z%Sf-|q&<)Vty62oT2IdZtnnnm4TrA7VemNZASH54W8JA zHnJl=-*3xi{j^;Z{S+ahw{V0g&edh-{$M|Tx)h!6c_!y^=s2Ns*i&^*t1`Z zVqP1I@oidk++IgGc~VlDD-bj}T*FBSSE9Sq?mlEZ(R{WI93dJ7v~xUBuRa@x!&BSw z(&;j4Z}Y+Y2rg;Bn0$(1bdD3PA;-~VHzd)XIIaA9@wT8PkYJm^N0&R~2!v^~7xw|f zIvUog)E{Frt^HYNXyWIM&VGWf&SQzZ;Zj=J7kd94UtHl$?kUr`^Q|DoL*Er-zl*e? zCJe>V)G(t!W&b#j#!J7e-#d;UMno*yzhD0TbLqi(1`l&y&Zn+?hD5D!4x?>lrS?Wb z9~cEDc@2?n^Rm;0I{Z^~o*cyU4h(P97iV3gJ1`L8X ztINqm6?2|XQ-IINCz2xd z(`LIYagGWH=EvQS3D%jg+`#2?1JY7cel!hb@2ZplE$nQioF&dPLv#V#vaRONxt6eP zt5DcL1@-E7J**}w93NSy;iGO?9w%cl2Dy=2NsE8(`oQsV_ zzH$_2J24&KTn9Ryy*3#yHccH0D;^Qu$b=t>8$zzxyB}je>s?ZrWEz~HbmI8SYp)&X zG_n-}0x(bwX+FYiz85N2N!K_NM|9!+mY<;7?g+ml`oKzYcuFcKEmJHsaQ+6WvTIXffdGq=s1#qpY}%<+nU)9yZ%mZpte`L|(r z+C>TM8A>jl`^+>;zg@xVcL#etrxin3-oA9tH_OK{i{ zqY&|h0$^S|ri=L_8PNqXpz5~vQ94AfPCj)XPO>Nl@(?l6mduFKUG$O|1$I4gTgek$H{e`EEf_@QLrN`1KoW$Cg#$ct{g5 zNS<@O!a5O``1^eIu2?Z;Nvcu&vh&HQ3AaioSYh5HjZJuACf~8Jae5T8=#@9qwcxaA z3K>mu-e-Tazqdr(rIDef#`Q6aL43KbJ1$6MdW;awz?IjT(fY%py?;)WJUgbJbYOmi zl??9GKzo6pSxHL}BT^t%w2&EtXxPV$==N)wYO;{9G^Gt<(C8OJ5v^RWq3`sxV{9au(8IR~ zn`h(!KK(VK$E=jn_k%4*+_Y~*Tp?!8W#s4Q2+q!4=4`3Mz10_dZl5>X*k7^xoyQhH zV^$pe@S$+p%>UTKbIrcl^33$peKefVo_wP9;Dj(6aUVvmY)tyYJh>a0F~r4isjFDHzt!h+URt7d zhy?6;9Cb4^{U9^4*Unr_YxAQ=XxDO8)PF4V@Q3BbcXcAUYcMwZP3#ZZe;B4E;}7o= zL6?aY7Cx_ttpOEreoiouI|1{M?^9`H`@J?>)5m=6`b}_>lWIa5MF7P3f*(QCQE=cf zUS5eh`;6^b{a0131XQjJn8(a;61|9pH*!hITH=SgrE*#k(yx+pveQ%YHBt~9e_7kA zv8L78Q3x3slN)+e+<>my@q0@e5{F!Xm6@w6 z%6O2x`h|T+Tm=(McD#B=t5QjdI9^&d4WXl2EyosWjD#oNsCCYmd-DQAFq2v1%5G1` zT1g!h4C93aG_8G5lEmt@vH&0NTh$O^8!`(tCrXFeSOA2p_8q3QBpd5?0}2;a?Z~J23;ATBeHo9 ztjK~AtGsd^NVd(;XK{?C38QoX-qoi5iAnZigQGZ|0$Ot#T>-zCcpIw(tPong$WJIf zW<&Q@Q0tSe>7Z@k(qwlYt%yaM%4Obu*3a|&LY#O*i><_UM)cqjW>E!~Zos|1*LSB(pq-;}oz|(%O%dapr#5xRlPg?peE(jCV9rB&Ih?-Ch9 z-nY`O_N%pk;xRPjYRp(@KbO?Nk4B%WV0DcjFDb!pKYCB9%6LV*Yl+pi>lUO;?=|y+ z0$<4f4z#8|VSkG!Y4tq_2u@@dmR6)nOVA{-U%$~mQClH+e;~8Ql+akl_*RceiL6kI zcO!8=e3D2pN)6{+^-I`WCT2qo4%zw=c?4hXk_PrH-t!Gg*$0QH?!ti;m_v_NR&rRF zREIQ8A4EgBt(I0sVtte88^e3jPEru#+ozQnhQziHkQ&CpdK$awSNnIonpI7|ecak1 zHo2T|$wFVf7%tJ@%AMgZ#%9(q8BIH}alU#6nq$LzehM z|8qRA^!V@0E3dwXme|d4(}E{Pl0mWnY@`Zf;F-K~j~#gUBBcvbLp*Z<6mJ}eeSU_T z^Z_DwL16`A^bD~56i#gC8wVRWj`}5`5^aj$uzvVzI2Z%ImcC|WbmPy!VIjhaZ+IJm zVN)elP~FSt;JBTP^)YruIy_V|u(AXSu{#-xyW0SywTrOBi$IOW6GQ|mvgrNRq(^0_5JayQ%@6zYd+-@{_Z?mIgSkoKM}zX`~U@l62EIj-XyJ*4=rJB zp2fQi%8&g$SQAu|&ouFFxk=5A{QtmS$34Fb4(;qF~K;lMUY$IjE zIo+O}_!K*quV6h93m@PR0fZlt;81QyWWU`G^WhjnZ%K71Z(kfNO0Mq6V7!G^)STXEN7;)?-4f57V?eznl zf}3}(Ihn#Fdt)J5KVH|ESqat#E)BA&_q78S==RF2l+^X0T23YJ=@J-7RlG`h)maPD z-UxzhQ^pOJ7%%IQC+QrP140mJeIP1sCJ^#vIPbKP zu&$${EsN9UgwycKYw!MjspiFrRKDTEd#f=5?<=x`*brLwEZsfgn z)F-)!DUi~C4=SWE&1|hNKPueR zeNaGM5`imV2K-aW7*cxSGsJUDKrrV*cQ`YnH23lH156k+0QpnxV==uildA{KKP!JN zQAT2##cbR)Ic~vYek&^Z6gnmfwtE4=#J&t$dp4p|j5oJnBdeF%s z6PX+pgR4mAKWs=CP$W?kimIz&1SBv>a|H37%T}LcJgLQ|3RVZGPXrama017no<$#! z7-IR!*gE&BP=5J7ZZf>#k(Q5Bu^A}9sGy?R!V=gu%LM4cLQDRDO{Q)h*};Gy61)Z3 zyL0^IF=z0OJq;66{<(jts%YeABS_jQL~| z3M)$G*T@iUm7XEEo?+V;c*v_l;{kjH&-6;lm|FtkH)Nt0&iILK(ckOZ#+sx8>=o6J z-lk;Emt~4W;wJ3AFd#{PU((Bm=(2vx^FphnG{Iy*LPiUi;YkVzvhMf-bJwEZ{d96o z11UHDWRe)KpOUHdnV08@!Ou-XkA>9{9{Fk|Z)aEfYEAc*YLax9sH&S07a2dXnNr$- z0Z1vGu;clHYMt1DQjUrObxDND6eDv1=7`J_Cu)U*WDcz8YL-kiU4IB9_KtWkM2hFWHOx%cA>AQ^-IT$-s+g#Uh-dOb+E z@uS`X7l0a<#davb$f`KzxC1)?uQ@#D1fCfC+Z!fjQ-XfDI4fI^fu*v^>fiX+fi+cJD94v!o>e?W@$zLmAGh-MBpMebNj^ptJH)_*}zA%#u;V* z{BP+UfnY$|AH;|zu>D^dNeb{L2q8_y#_=8N|8~QL8%?By2k*Z!3f(vv+|X}=_*DP5 zn=^dqLFp*Ze@yh$HDHED3OY%asfYPL-D01H#(h5``!9j*k6wq0$eT2?I->Qz-6-Hg zJ8PIx{iUa$mR;b-u-{M~mzkD=+0iS@fV z9$=CmK52A++}?zNu4)^7$U{w!7Oq5$s)(*JcC&C_TS@$);9m|jtlsWU7Qh@j_a9x|T*Z8HC0+AzDXJjC2FYgi6H z@a-3(PV|0z)ua;>{ZHlMMHM>46xbKH+%brmrs8Z{M+}z!Xsyp0-_Nh6GXROF48!=x zKGJ|vUSe4teEe~vGe)p-gY8?MB(3FV4x-Qrdk{4KPzfaU&n6Ft8MpMm^YiOX0Wr?i z9CbtR8Q#|IAu~#wo~Aj@=cgu_Thzj(o6Gh`!dD905r7H5Hlf5{{BjAe)@~xbKB=GO z&D=Y4pmJT*QR8+;qZ{%Ba?l;}MQ=pf=M#njYqCq+nGaVXl)Q7a@JNFH7ZV_|vX%nf zF1AYRI$E@?UL=Yy|H1Z(faRijfl%7`34H<|<42(Puj;C0fualv@cJ(t+zgliOIkCx z$PHqy=ob00RZej<2PC}9*o#>7#`EH_(`X4G8J?joVsA!EUZZdDWUb=`Q=QVCK&WXgmp|u|2#YP5hB?qQ| zTgh#%D=5JnuyN|fvk;me(wReEc^~bpNwWHUs;g;k9n?!>c3_$=g`wVxtTY<1!hlA8 zan>57^+?Arwl+wW0b0dyMZ?0ctp4R1s&3FcnV@lPcEgZ zb1(j4)wB{bsj*#U&FRZcu_H|-&lIyNeOsNWy zl6YMUuB#tb>-U6(Jw-@5gXof>G|1L0MeN8fAyEtzWZu|of?W+I#*Qn%&|r${LH{{( zBsQY=0JMm%21p3|H;Qu}hL29mCKFGm4^bSh4T=TBY=J_Iv6R2N6od@pl}8W2>pbXI zBMwZfkU-bivCM5{e;z8Q4oFkk9I-oR$~Xk7E>JAK<)NjtcYQyBOM{+ye(E^cOME!D z>Sx#!=1au6B8f+BObq(|GGuln7wF*o0xHXkaD5Mkw^TWsNe3dL*JgCtN7g!FrgD1ums$KrG=<@j~z z096U>rYcj5rRQe+^Mb<+2+xKo+gTR-;qQb#MloJ%Cr$Lvz2K$)$Kses0(`_m5>iCF z`|{NuoKb}x0DE=!D=BbZ|~V`y*2YveF=N}45$jt zmsFv@%_)vK_x=F$&0GR>vEYA6s0)S-%y6}E=(ZRx($Xu+ahvzQm4{fbXmRxRJe{2Y zYyg=#kSqZssx57HgDzY9Dzb40_e?2xF@+Vg?gH`w$1fgcm0Sfi*;G#`i(xOZ3So4f z19504gNlYU$w;AQbRKlq4@pP;_x`Y++h8muF=5b4-XLSIPYS`7Np?t3<|l{2A0lQ0W!w^9xSoaT~V1(4+zqLYOnJMhnC} zGSf03pl8Rh^NotL<}dlf%I#2{FEw^Gvdm+84DYP|nr(*&yB!wTneiP)Ud+VV;ZKOf*v zSD-FBh(a8c49~Q@&xQfIor9JPU07AyTyTp1xxaIcU(y4iyMFyFt66OskG6574TpxD zc302BdS0N|E+Gz%Wa(0>&iuy*bmDY1sKBtIAuXj|*^WWBLtD1ZtW>pZH`eoZhPTwD zZ;6WYuRklbA58M%5M#}>gf48Uu|3671cDNR02PpYAKGhCcoCCz-Ydr8UWq(`L0K@s z7Yt1dh!gB9vao{_Rv4z^2}zN=>U+vSOvOvX8o)NMRN;4bzX8bm%m;izfpw9T9@2G z2WLuee;_!2WYKF;UX_4?1@i@uvb!443r_s)n0?B-H$$i-PdPZNL)f{QH=an=|~=_mb4shb}BNbg$bjUzNTJ zQ>Shk482W44pyM=K*_+20xre0)|NtAxSfv_TKOt6x|iONLf^m=qs4$~1~+kYfc7V; z#i-fzhT#|A{w9wD3h;zwpcu`>L5yluFE@W2v1orePi1VFGIORVN56U0Ov200orL+fNQv#w&W4E~UL0f*i(^q}ZUoKI{Apkxay9gY)=1 z#`~WLzsU6AxS1I1oObX?tf#OdQ0G`8aT(!{&I0m^HPv4EF+^KiWFZYUhXe+NUE|AUlI+f{Lth|K0PlAB4?H zzV+5=s;QsM9v2oKbp`s6{G8 zTkv_GH&fm+ui~-ur3anjj5w6=;zP3!&2B2ZZXwNiJUN#??@6h(zoBW#TD(45-Y&__ z_~hAXkOSaMPKOU5!Fd8xSU8M4$K|y1y{36E?6o6ui4}Ozl-5P>E3v-z$6(1lu(Y%^ z5+VZ57#1DtlBztYcL*aK)43;HyD|=jkV&H|D_ii)yURuD%pU(_Yp&l_jSofCB{nQS zH{a2izW)a}=zUe#(fd3rB_NE?OCH~DU@Vk>EY&9UA8-;IB83BDq-rc_q)6onG9e{+ z3~>_avB7<=El09B#kFA~04fTVCr(Q?p0aa1%HE7X2gFT(d2JD;HhnF)W%s86I%tp2 z_2%V%{EK;jv>#sh5B;}0JSSq%z!}hc8;^zz5N{IQetC0(?n=$y3pH?Pn3Rgi^gXx8 zReSa=?)NT=K@t9DIv&nt0jhW)YnsZqCq6&+P>EKp-?PTI1j)%GHU{W5Lzle7GzE~p zlEg#J!2ra3=uZFh5M$v8R@Lm1^Z8!eFHKo|F)*vw1gFZp#8DJrlr6nuhV6gzblj&@ zHtfYa-eaU{73RV4;IkLjL%-w*xn2x6S)$bXIpV2~LHM_6zj3s}E2vUE2Vvq;;xF?{Wzs?Jr>Ekjl+~rCL~> z^I3-d8VM8O-<yd!d#!Rh>hTP5cfAQE4YM?I zy)_F3VzlQmP*&3%``z~g$Je8yI*SaNk1ulN>TJ2wdk*t*p?~mk=I{;25H$$KRr2;J z)p+mw-NanY8UyGkYf6OnziJ5Hj41u%%drCN;Y4IpA%)A-oHr@6X2Q7u#-io^MX(C} zoSIn~Yd3meet2rQvaQoFa)p4lj?Cs2;#5mB6U%#CiwHp32JlO{gB$O{`)OL>0(tF+ zcMAXHWk=|B>98ro0AG6UQOF-P0X>4Jub=L#6~R#{D~fJV*dT-qkdpuRmRRl>{F>Ax zr%Q;3CQe67l@N~x4-E~C5DZe%LqkI^MSY*d!9cywHF1if zKG41NR29%_Cg_l;i$@Ofn(}C9^-1`*R#>QOTo2F-FEliw-iH_ZpnIh)8k&F}SV`W% z*Zd&=Chdt~)6Q?=^&Nm)pT=_nq||T4%dw(ME2rZ^|;UI$^9e#*4cA5U3p-ti$ z$>munec}x21}GF~G=ui1B#jM)cm+Y*CDEWR{|^$MfJlRuN4yEAYd80Ep>|55rQ$P>ZhCmU&BdR>7o1Ae zFqwV6WC`U$LM{4J!$K+pSOcC9CHnQB-W*ba*h4Wf9{K5nE3t-;%gVh~6E1H*rlO(3 z_%s&aMH9WAu^-WuncvWp{`3Dt5nAk^;Bj0$$CHdU7ZrhlS?2O zD*Xlh*?OA7BpbwvFPqyXy>h?N18*91(Pvm0q7MIasp0}Ru{1DZZ&4X%=liHM9D3U+ z#ef*j&wr(0O_ZBQE#zF{mu<4zs*P7k$z`9cle0*bMa z8BmeTeep=AhU_Fwt8#0PnF)jkGKM{t9wxd>sj0-yg|3t0VxVV9q@cazKZu_psx1{1 zA*Zl@JE?#GQ+5;P3D}3{syzzr@)!wW$kw0+!O>$+<%(>(hUI{e7f+wWdjTPDl8FM| zXz$U)c7fa&>eqgDTuUt=mV@O&(~ZBc*f~@IyMBGR`!y0#Tiy`UP%t9Hw-nh1Qc~Bz zPEG_UaXDpC2VotYSxA%}-x2#ied)U74o$0Clv%#zvt2O}e?=hR0ckCAM;_ zJM}9a-ho0j4O4Q27@x1)2=FuJcf6x|*bi9~wIw@wJR>@Pw7KVxC=iP>Q=|12lz7DQ zaZwm`ikJP|WRXBVYitbI;JO^{WtFY|L30g`t<_Wf^~!EKFtbaXNEgwMQTka@7oluL zH#ndTPi;19#r`b!<8RelTe*L�-@k@Vj|t^FQmy;{l^LM@1fNdtA@ibQR%@h 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 Pxj+LeYbn(zScd;Ur$T3+ diff --git a/documentation/conf.py b/documentation/conf.py index ebc26aa3bf..9a0186f352 100644 --- a/documentation/conf.py +++ b/documentation/conf.py @@ -53,8 +53,7 @@ templates_path = ['_templates'] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'boilerplate.rst', - 'adt-manual/*.rst'] +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'boilerplate.rst'] # master document name. The default changed from contents to index. so better # set it ourselves. diff --git a/documentation/poky.yaml b/documentation/poky.yaml index 895864b995..e39c403fe9 100644 --- a/documentation/poky.yaml +++ b/documentation/poky.yaml @@ -43,7 +43,6 @@ YOCTO_QEMU_DL_URL : "&YOCTO_MACHINES_DL_URL;/qemu" YOCTO_PYTHON-i686_DL_URL : "&YOCTO_DL_URL;/releases/miscsupport/python-nativesdk-standalone-i686.tar.bz2" YOCTO_PYTHON-x86_64_DL_URL : "&YOCTO_DL_URL;/releases/miscsupport/python-nativesdk-standalone-x86_64.tar.bz2" YOCTO_DOCS_QS_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/yocto-project-qs/yocto-project-qs.html" -YOCTO_DOCS_ADT_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/adt-manual/adt-manual.html" YOCTO_DOCS_REF_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/ref-manual/ref-manual.html" YOCTO_DOCS_BSP_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/bsp-guide/bsp-guide.html" YOCTO_DOCS_DEV_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/dev-manual/dev-manual.html"