diff options
Diffstat (limited to 'documentation/dev-manual')
-rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index d33cef6d89..be95c0f405 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
@@ -2668,6 +2668,7 @@ | |||
2668 | <listitem><para>Using an Autotooled package</para></listitem> | 2668 | <listitem><para>Using an Autotooled package</para></listitem> |
2669 | <listitem><para>Using a Makefile-based package</para></listitem> | 2669 | <listitem><para>Using a Makefile-based package</para></listitem> |
2670 | <listitem><para>Splitting an application into multiple packages</para></listitem> | 2670 | <listitem><para>Splitting an application into multiple packages</para></listitem> |
2671 | <listitem><para>Adding binaries to an image</para></listitem> | ||
2671 | </itemizedlist> | 2672 | </itemizedlist> |
2672 | </para> | 2673 | </para> |
2673 | 2674 | ||
@@ -2868,6 +2869,96 @@ | |||
2868 | does not include the above listed files. | 2869 | does not include the above listed files. |
2869 | </para> | 2870 | </para> |
2870 | </section> | 2871 | </section> |
2872 | |||
2873 | <section id='packaging-externally-produced-binaries'> | ||
2874 | <title>Packaging Externally Produced Binaries</title> | ||
2875 | |||
2876 | <para> | ||
2877 | Sometimes, you need to add pre-compiled binaries to an | ||
2878 | image. | ||
2879 | For example, suppose that binaries for proprietary code | ||
2880 | exist, which are created by a particular division of a | ||
2881 | company. | ||
2882 | Your part of the company needs to use those binaries as | ||
2883 | part of an image that you are building using the | ||
2884 | OpenEmbedded build system. | ||
2885 | Since you only have the binaries and not the source code, | ||
2886 | you cannot use a typical recipe that expects to fetch the | ||
2887 | source specified in | ||
2888 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> | ||
2889 | and then compile it. | ||
2890 | </para> | ||
2891 | |||
2892 | <para> | ||
2893 | One method is to package the binaries and then install them | ||
2894 | as part of the image. | ||
2895 | Generally, it is not a good idea to package binaries | ||
2896 | since, among other things, it can hinder the ability to | ||
2897 | reproduce builds and could lead to compatibility problems | ||
2898 | with ABI in the future. | ||
2899 | However, sometimes you have no choice. | ||
2900 | </para> | ||
2901 | |||
2902 | <para> | ||
2903 | The easiest solution is to create a recipe that uses | ||
2904 | the | ||
2905 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-bin-package'><filename>bin_package</filename></ulink> | ||
2906 | class and to be sure that you are using default locations | ||
2907 | for build artifacts. | ||
2908 | In most cases, the <filename>bin_package</filename> class | ||
2909 | handles "skipping" the configure and compile steps as well | ||
2910 | as sets things up to grab packages from the appropriate | ||
2911 | area. | ||
2912 | In particular, this class sets <filename>noexec</filename> | ||
2913 | on both the | ||
2914 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-configure'><filename>do_configure</filename></ulink> | ||
2915 | and | ||
2916 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile</filename></ulink> | ||
2917 | tasks, sets | ||
2918 | <filename>FILES_${PN}</filename> to "/" so that it picks | ||
2919 | up all files, and sets up a | ||
2920 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink> | ||
2921 | task, which effectively copies all files from | ||
2922 | <filename>${S}</filename> to <filename>${D}</filename>. | ||
2923 | For more information on these variables, see the | ||
2924 | <ulink url='&YOCTO_DOCS_REF_URL;#var-FILES'><filename>FILES</filename></ulink>, | ||
2925 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink>, | ||
2926 | <ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>, | ||
2927 | and | ||
2928 | <ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink> | ||
2929 | variables in the Yocto Project Reference Manual's variable | ||
2930 | glossary. | ||
2931 | </para> | ||
2932 | |||
2933 | <para> | ||
2934 | If you can't use the <filename>bin_package</filename> | ||
2935 | class, you need to be sure you are doing the following: | ||
2936 | <itemizedlist> | ||
2937 | <listitem><para>Create a recipe where the | ||
2938 | <filename>do_configure</filename> and | ||
2939 | <filename>do_compile</filename> tasks do nothing: | ||
2940 | <literallayout class='monospaced'> | ||
2941 | do_configure[noexec] = "1" | ||
2942 | do_compile[noexec] = "1" | ||
2943 | </literallayout> | ||
2944 | Alternatively, you can make these tasks an empty | ||
2945 | function. | ||
2946 | </para></listitem> | ||
2947 | <listitem><para>make sure your | ||
2948 | <filename>do_install</filename> task installs the | ||
2949 | binaries appropriately. | ||
2950 | </para></listitem> | ||
2951 | <listitem><para>Ensure that you set up | ||
2952 | <filename>FILES</filename> (usually | ||
2953 | <filename>FILES_${PN}</filename>) to point to the | ||
2954 | files you have installed, which of course depends | ||
2955 | on where you have installed them and whether | ||
2956 | those files are in different locations than the | ||
2957 | defaults. | ||
2958 | </para></listitem> | ||
2959 | </itemizedlist> | ||
2960 | </para> | ||
2961 | </section> | ||
2871 | </section> | 2962 | </section> |
2872 | </section> | 2963 | </section> |
2873 | 2964 | ||