diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2013-12-19 16:53:45 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-01-02 13:16:12 +0000 |
commit | fac99a49df61504ddc5d887892d72a0004473987 (patch) | |
tree | 2d7bd47636756c0bfd99ffac6782e9a04fd08a3c | |
parent | 3b908ee6a8fb920b73ea1974ba62693fb575b7bd (diff) | |
download | poky-fac99a49df61504ddc5d887892d72a0004473987.tar.gz |
dev-manual: First complete draft of the "Writing a New Recipe" section.
(From yocto-docs rev: fe5ca883364c1edbbcd13aacfa972ebdfc3122b9)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 365 |
1 files changed, 306 insertions, 59 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 2356b9fc36..f6184cec32 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
@@ -1183,9 +1183,19 @@ | |||
1183 | <listitem><para><emphasis>Use and modify the following | 1183 | <listitem><para><emphasis>Use and modify the following |
1184 | skeleton recipe:</emphasis> | 1184 | skeleton recipe:</emphasis> |
1185 | <literallayout class='monospaced'> | 1185 | <literallayout class='monospaced'> |
1186 | I need a simple | 1186 | inherit <stuff> |
1187 | skeleton recipe | 1187 | |
1188 | here | 1188 | SUMMARY = "" |
1189 | HOMEPAGE = "" | ||
1190 | LICENSE = "" | ||
1191 | |||
1192 | LIC_FILES_CHKSUM = "" | ||
1193 | |||
1194 | SRC_URI = "" | ||
1195 | SRC_URI[md5sum] = "" | ||
1196 | SRC_URI[sha256sum] = "" | ||
1197 | |||
1198 | S = ${WORKDIR}/${PN}-${PV} | ||
1189 | </literallayout> | 1199 | </literallayout> |
1190 | Modifying this recipe is the recommended method for | 1200 | Modifying this recipe is the recommended method for |
1191 | creating a new recipe. | 1201 | creating a new recipe. |
@@ -1335,16 +1345,48 @@ | |||
1335 | </literallayout></para></listitem> | 1345 | </literallayout></para></listitem> |
1336 | </itemizedlist> | 1346 | </itemizedlist> |
1337 | </para> | 1347 | </para> |
1348 | |||
1349 | <para> | ||
1350 | Also part of the <filename>SRC_URI</filename> variable are the | ||
1351 | <filename>SRC_URI[md5sum] = ""</filename> and | ||
1352 | <filename>SRC_URI[sha256sum] = ""</filename> statements. | ||
1353 | These two checksums ensure that the remote file (and hence | ||
1354 | the source code you are building) has not changed since the | ||
1355 | recipe was written. | ||
1356 | You must provide these two checksums whenever you fetch | ||
1357 | source from anywhere other than an SCM or a local file. | ||
1358 | </para> | ||
1359 | |||
1360 | <para> | ||
1361 | To find these checksums, you can comment the statements out | ||
1362 | and then attempt to build the software. | ||
1363 | The build will produce an error for each missing checksum | ||
1364 | and as part of the error message provide the correct checksum | ||
1365 | string. | ||
1366 | Once you have the correct checksums, simply copy them into your | ||
1367 | recipe for a subsequent build. | ||
1368 | </para> | ||
1338 | </section> | 1369 | </section> |
1339 | 1370 | ||
1340 | <section id='new-recipe-unpacking-code'> | 1371 | <section id='new-recipe-unpacking-code'> |
1341 | <title>Unpacking Code</title> | 1372 | <title>Unpacking Code</title> |
1342 | 1373 | ||
1343 | <para> | 1374 | <para> |
1344 | unpacking: ensure S matches the directory that contains the source. Often the | 1375 | During the build, source code that is fetched needs to be |
1345 | default will work for a source archive, but it depends on how the upstream | 1376 | unpacked. |
1346 | project structures their archive. If SRC_URI specifies to fetch the source from | 1377 | The OpenEmbedded build system uses the |
1347 | an SCM such as git or svn you'll definitely need to set S. | 1378 | <filename>do_unpack</filename> task to organize the source |
1379 | files into the temporary work directory pointed to by | ||
1380 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink><filename>}</filename>. | ||
1381 | </para> | ||
1382 | |||
1383 | <para> | ||
1384 | If you are fetching your source files from an upstream source | ||
1385 | archived tarball then you normally do not need to set | ||
1386 | <filename>S</filename>. | ||
1387 | However, if <filename>SRC_URI</filename> specifies to fetch | ||
1388 | source from an SCM like Git or Subversion, your recipe needs | ||
1389 | to define <filename>S</filename>. | ||
1348 | </para> | 1390 | </para> |
1349 | </section> | 1391 | </section> |
1350 | 1392 | ||
@@ -1352,33 +1394,193 @@ an SCM such as git or svn you'll definitely need to set S. | |||
1352 | <title>Licensing</title> | 1394 | <title>Licensing</title> |
1353 | 1395 | ||
1354 | <para> | 1396 | <para> |
1355 | licensing: set correct values for LICENSE and LIC_FILES_CHKSUM, i.e. look for | 1397 | Your recipe needs to have both the |
1356 | a license statement somewhere (COPYING, LICENSE, part of a README, top of a | 1398 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE'><filename>LICENSE</filename></ulink> |
1357 | source file etc.) and then set the two variables accordingly. You need to go | 1399 | and |
1358 | through this several steps, i.e. look in the directory containing the | 1400 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></ulink> |
1359 | extracted source, then set LIC_FILES_CHKSUM to point to the file without the | 1401 | variables: |
1360 | md5 value specified, and then run bitbake on the recipe again and it will error | 1402 | <itemizedlist> |
1361 | out with the actual md5 value which you can then put into the recipe. I notice | 1403 | <listitem><para><emphasis><filename>LICENSE</filename>:</emphasis> |
1362 | we don't necessarily have a list anywhere of the common values for LICENSE | 1404 | If you do not know the license under which the software |
1363 | either, so maybe we need to add this to the variable reference entry for this | 1405 | you are building is distributed, you can go to the |
1364 | variable. We should also cover what to do if there is no file specifying the | 1406 | source code and look for that information. |
1365 | license shipped with the source. | 1407 | Places that hold this information are the |
1408 | <filename>COPYING</filename>, | ||
1409 | <filename>LICENSE</filename>, and | ||
1410 | <filename>README</filename> files. | ||
1411 | You could also find the information near the top of | ||
1412 | a source file. | ||
1413 | The key is to find something that states the public | ||
1414 | license needed for the software. | ||
1415 | For example, the | ||
1416 | <ulink url='http://sourceforge.net/p/htop/code/HEAD/tree/trunk/COPYING'><filename>COPYING</filename></ulink> | ||
1417 | file for the <filename>htop</filename> software states | ||
1418 | clearly that the software is licensed under the | ||
1419 | "GNU GENERAL PUBLIC LICENSE Version 2, June 1991". | ||
1420 | Consequently, if you were writing a recipe to build | ||
1421 | <filename>htop</filename>, you would include the | ||
1422 | following: | ||
1423 | <literallayout class='monospaced'> | ||
1424 | LICENSE = "GPLv2" | ||
1425 | </literallayout></para></listitem> | ||
1426 | <listitem><para><emphasis><filename>LIC_FILES_CHKSUM</filename>:</emphasis> | ||
1427 | The OpenEmbedded build system uses this variable to | ||
1428 | make sure the license text has not changed. | ||
1429 | If it has, the build produces an error and it affords | ||
1430 | you the chance to figure it out and correct the problem. | ||
1431 | </para> | ||
1432 | <para>You need to specify all applicable licensing | ||
1433 | files for the software. | ||
1434 | At the end of the configuration step, the build process | ||
1435 | will compare the checksums of the files to be sure | ||
1436 | the text has not changed. | ||
1437 | Any differences result in an error with the message | ||
1438 | containing the proper checksum. | ||
1439 | For more explanation and examples of how to set the | ||
1440 | <filename>LIC_FILES_CHKSUM</filename> variable, see the | ||
1441 | "<ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>" | ||
1442 | section in the Yocto Project Reference Manual.</para> | ||
1443 | <para>To determine the correct checksum string, you | ||
1444 | can list the appropriate files in the | ||
1445 | <filename>LIC_FILES_CHKSUM</filename> variable with | ||
1446 | incorrect md5 strings, attempt to build the software, | ||
1447 | and then note the resulting error messages that will | ||
1448 | report the correct md5 strings. | ||
1449 | Here is an example that assumes the software has a | ||
1450 | <filename>COPYING</filename> file: | ||
1451 | <literallayout class='monospaced'> | ||
1452 | LIC_FILES_CHKSUM = "file://COPYING;md5=xxx" | ||
1453 | </literallayout> | ||
1454 | When you try to build the software, the build system | ||
1455 | will produce an error and give you the correct string | ||
1456 | that you can substitute into the recipe file for a | ||
1457 | subsequent build. | ||
1458 | </para></listitem> | ||
1459 | </itemizedlist> | ||
1460 | </para> | ||
1461 | |||
1462 | <!-- | ||
1463 | |||
1464 | <para> | ||
1465 | For trying this out I created a new recipe named | ||
1466 | <filename>htop_1.0.2.bb</filename> and put it in | ||
1467 | <filename>poky/meta/recipes-extended/htop</filename>. | ||
1468 | There are two license type statements in my very simple | ||
1469 | recipe: | ||
1470 | <literallayout class='monospaced'> | ||
1471 | LICENSE = "" | ||
1472 | |||
1473 | LIC_FILES_CHKSUM = "" | ||
1474 | |||
1475 | SRC_URI[md5sum] = "" | ||
1476 | SRC_URI[sha256sum] = "" | ||
1477 | </literallayout> | ||
1478 | Evidently, you need to run a <filename>bitbake -c cleanall htop</filename>. | ||
1479 | Next, you delete or comment out the two <filename>SRC_URI</filename> | ||
1480 | lines at the end and then attempt to build the software with | ||
1481 | <filename>bitbake htop</filename>. | ||
1482 | Doing so causes BitBake to report some errors and and give | ||
1483 | you the actual strings you need for the last two | ||
1484 | <filename>SRC_URI</filename> lines. | ||
1485 | Prior to this, you have to dig around in the home page of the | ||
1486 | source for <filename>htop</filename> and determine that the | ||
1487 | software is released under GPLv2. | ||
1488 | You can provide that in the <filename>LICENSE</filename> | ||
1489 | statement. | ||
1490 | Now you edit your recipe to have those two strings for | ||
1491 | the <filename>SRC_URI</filename> statements: | ||
1492 | <literallayout class='monospaced'> | ||
1493 | LICENSE = "GPLv2" | ||
1494 | |||
1495 | LIC_FILES_CHKSUM = "" | ||
1496 | |||
1497 | SRC_URI = "${SOURCEFORGE_MIRROR}/htop/htop-${PV}.tar.gz" | ||
1498 | SRC_URI[md5sum] = "0d01cca8df3349c74569cefebbd9919e" | ||
1499 | SRC_URI[sha256sum] = "ee60657b044ece0df096c053060df7abf3cce3a568ab34d260049e6a37ccd8a1" | ||
1500 | </literallayout> | ||
1501 | At this point, you can build the software again using the | ||
1502 | <filename>bitbake htop</filename> command. | ||
1503 | There is just a set of errors now associated with the | ||
1504 | empty <filename>LIC_FILES_CHKSUM</filename> variable now. | ||
1366 | </para> | 1505 | </para> |
1506 | --> | ||
1507 | |||
1367 | </section> | 1508 | </section> |
1368 | 1509 | ||
1369 | <section id='new-recipe-configuring-the-recipe'> | 1510 | <section id='new-recipe-configuring-the-recipe'> |
1370 | <title>Configuring the Recipe</title> | 1511 | <title>Configuring the Recipe</title> |
1371 | 1512 | ||
1372 | <para> | 1513 | <para> |
1373 | configure: this depends on whether you're using autotools or not; if you are | 1514 | Configurations for your recipe might include passing in |
1374 | then you should set EXTRA_OECONF to pass any needed configure options specific | 1515 | configuration options in the case of an Autotools or CMake |
1375 | to this recipe. If you are not using autotools, you need to define your own | 1516 | enabled software or tweaking with the |
1376 | do_configure function, assuming there is anything to configure. At this point | 1517 | <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink> |
1377 | you may also need to tweak DEPENDS if the configure scripts complain about any | 1518 | situation. |
1378 | required dependencies being missing, assuming it's not just looking in the | 1519 | Regardless, you need to consider this part of the recipe. |
1379 | wrong place for the dependency in which case it's usually a matter of | 1520 | </para> |
1380 | supplying the appropriate configure options to point to the correct location | 1521 | |
1381 | within the sysroot. | 1522 | <para> |
1523 | If the software you are building uses Autotools or CMake to | ||
1524 | get built, you do not have to create a | ||
1525 | <filename>do_configure</filename> task in your recipe. | ||
1526 | You might still want to make some adjustments however. | ||
1527 | For example, you can set | ||
1528 | <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></ulink> | ||
1529 | to pass any needed configure options that are specific to the | ||
1530 | recipe. | ||
1531 | </para> | ||
1532 | |||
1533 | <para> | ||
1534 | If the source files have a <filename>configure.ac</filename> | ||
1535 | or <filename>CMakeLists.txt</filename> file, then your software | ||
1536 | is built using Autotools or CMake, respectively. | ||
1537 | For either of these cases, you just need to worry about | ||
1538 | tweaking the configuration. | ||
1539 | However, if you don't have these files then your software is | ||
1540 | being built by some other system and you need to provide a | ||
1541 | <filename>do_configure</filename> task in your recipe. | ||
1542 | </para> | ||
1543 | |||
1544 | <para> | ||
1545 | Even if you are using Autotools or CMake and configuration | ||
1546 | succeeds during the build, it is always good practice to look | ||
1547 | at the <filename>log.do_configure</filename> file to ensure | ||
1548 | that nothing needs to be added to | ||
1549 | <filename>DEPENDS</filename>. | ||
1550 | For example, if the configure script reports that it found | ||
1551 | something not mentioned in <filename>DEPENDS</filename>, or that | ||
1552 | it did not find something that it needed for some desired | ||
1553 | optional functionality, then you would need to add | ||
1554 | those to <filename>DEPENDS</filename>. | ||
1555 | Looking at the log might also reveal items being checked for | ||
1556 | and/or enabled that you do not want, or items not being found | ||
1557 | that are in <filename>DEPENDS</filename>, in which case | ||
1558 | you would need to look at passing extra options to the | ||
1559 | configure script as needed using | ||
1560 | <filename>EXTRA_OECONF</filename>. | ||
1561 | </para> | ||
1562 | |||
1563 | <para> | ||
1564 | You should also realize that required build-time or runtime | ||
1565 | dependencies might or might not be noted in the software's | ||
1566 | documentation. | ||
1567 | </para> | ||
1568 | |||
1569 | <para> | ||
1570 | Even if your software is not being built by Autotools or CMake, | ||
1571 | you still might not need to deal with any configuration issues. | ||
1572 | You to determine if configuration is even a required step. | ||
1573 | You might need to modify a Makefile or some configuration file | ||
1574 | used for the build to specify necessary build options. | ||
1575 | Or, perhaps you might need to run a hand-written configuration | ||
1576 | script as opposed to something that | ||
1577 | <filename>autoconf</filename> would run. | ||
1578 | </para> | ||
1579 | |||
1580 | <para> | ||
1581 | For the case involving a hand-written configuration script, you | ||
1582 | would run <filename>./configure --help</filename> and look for | ||
1583 | the options you need to set. | ||
1382 | </para> | 1584 | </para> |
1383 | </section> | 1585 | </section> |
1384 | 1586 | ||
@@ -1386,10 +1588,18 @@ within the sysroot. | |||
1386 | <title>Compiling the Recipe</title> | 1588 | <title>Compiling the Recipe</title> |
1387 | 1589 | ||
1388 | <para> | 1590 | <para> |
1389 | compile: if the recipe passes through do_compile successfully, nothing needs | 1591 | During a build, the <filename>do_compile</filename> task |
1390 | to be done. If not, diagnose the failure. We might be able to highlight common | 1592 | happens after source is fetched, unpacked, and configured. |
1391 | issues here such as parallel build failures, host path usage when building for | 1593 | If the recipe passes through <filename>do_compile</filename> |
1392 | the target, etc. | 1594 | successfully, nothing needs to be done. |
1595 | </para> | ||
1596 | |||
1597 | <para> | ||
1598 | However, if the compile step fails, you need to diagnose the | ||
1599 | failure. | ||
1600 | Some common issues for failure are parallel build failures, | ||
1601 | improper host path usage when building for the target, and | ||
1602 | so forth. | ||
1393 | </para> | 1603 | </para> |
1394 | </section> | 1604 | </section> |
1395 | 1605 | ||
@@ -1397,9 +1607,9 @@ the target, etc. | |||
1397 | <title>Installing</title> | 1607 | <title>Installing</title> |
1398 | 1608 | ||
1399 | <para> | 1609 | <para> |
1400 | During installation, files your recipe builds are copied from | 1610 | During <filename>do_install</filename>, files your recipe builds |
1401 | locations where work is being done to locations on the target | 1611 | are copied from locations where work is being done to locations |
1402 | device. | 1612 | on the target device. |
1403 | The installation process moves the | 1613 | The installation process moves the |
1404 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink><filename>}</filename>, | 1614 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink><filename>}</filename>, |
1405 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-B'><filename>B</filename></ulink><filename>}</filename>, | 1615 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-B'><filename>B</filename></ulink><filename>}</filename>, |
@@ -1409,28 +1619,26 @@ the target, etc. | |||
1409 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename> | 1619 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename> |
1410 | to create the structure as it should appear on the target | 1620 | to create the structure as it should appear on the target |
1411 | system. | 1621 | system. |
1412 | <note> | ||
1413 | During the installation process, some of the files might also | ||
1414 | be modified to suit the target layout as well. | ||
1415 | </note> | ||
1416 | </para> | 1622 | </para> |
1417 | 1623 | ||
1418 | <para> | 1624 | <para> |
1419 | How your software is built affects what you must do to be | 1625 | How your software is built affects what you must do to be |
1420 | sure your software is installed correctly. | 1626 | sure your software is installed correctly. |
1421 | The following list describes what you must do for installation | 1627 | The following list describes what you must do for installation |
1422 | depending on how your recipe builds your software: | 1628 | depending on the type of build system used by the software |
1629 | being built: | ||
1423 | <itemizedlist> | 1630 | <itemizedlist> |
1424 | <listitem><para><emphasis>Autotools and <filename>cmake</filename>:</emphasis> | 1631 | <listitem><para><emphasis>Autotools and CMake:</emphasis> |
1425 | If the software your recipe is building uses Autotools | 1632 | If the software your recipe is building uses Autotools |
1426 | or <filename>cmake</filename>, the OpenEmbedded build | 1633 | or CMake, the OpenEmbedded build |
1427 | system understands how to install the software. | 1634 | system understands how to install the software. |
1428 | Consequently, you do not have to have a | 1635 | Consequently, you do not have to have a |
1429 | <filename>do_install</filename> task as part of your | 1636 | <filename>do_install</filename> task as part of your |
1430 | recipe. | 1637 | recipe. |
1431 | You just need to make sure the install portion of the | 1638 | You just need to make sure the install portion of the |
1432 | build completes with no issues.</para></listitem> | 1639 | build completes with no issues.</para></listitem> |
1433 | <listitem><para><emphasis><filename>make install</filename>:</emphasis> | 1640 | <listitem><para><emphasis>Other (using |
1641 | <filename>make install</filename>):</emphasis> | ||
1434 | You need to define a | 1642 | You need to define a |
1435 | <filename>do_install</filename> function in your | 1643 | <filename>do_install</filename> function in your |
1436 | recipe. | 1644 | recipe. |
@@ -1443,7 +1651,7 @@ the target, etc. | |||
1443 | <filename>PREFIX=${D}</filename>, | 1651 | <filename>PREFIX=${D}</filename>, |
1444 | <filename>INSTALLROOT=${D}</filename>, and so forth). | 1652 | <filename>INSTALLROOT=${D}</filename>, and so forth). |
1445 | </para></listitem> | 1653 | </para></listitem> |
1446 | <listitem><para><emphasis><filename>install</filename>:</emphasis> | 1654 | <listitem><para><emphasis>Manual:</emphasis> |
1447 | You need to define a | 1655 | You need to define a |
1448 | <filename>do_install</filename> function in your | 1656 | <filename>do_install</filename> function in your |
1449 | recipe. | 1657 | recipe. |
@@ -1462,7 +1670,7 @@ the target, etc. | |||
1462 | 1670 | ||
1463 | <para> | 1671 | <para> |
1464 | For the scenarios that do not use Autotools or | 1672 | For the scenarios that do not use Autotools or |
1465 | <filename>cmake</filename>, you need to track the installation | 1673 | CMake, you need to track the installation |
1466 | and diagnose and fix any issues until everything installs | 1674 | and diagnose and fix any issues until everything installs |
1467 | correctly. | 1675 | correctly. |
1468 | You need to look in the default location of | 1676 | You need to look in the default location of |
@@ -1470,20 +1678,39 @@ the target, etc. | |||
1470 | <filename>${WORKDIR}/image</filename>, to be sure your | 1678 | <filename>${WORKDIR}/image</filename>, to be sure your |
1471 | files have been installed correctly. | 1679 | files have been installed correctly. |
1472 | </para> | 1680 | </para> |
1681 | |||
1682 | <note> | ||
1683 | During the installation process, you might need to modify | ||
1684 | some of the installed files to suit the target layout. | ||
1685 | For example, you might need to replace hard-coded paths in an | ||
1686 | initscript with values of variables provided by the build | ||
1687 | system, such as replacing <filename>/usr/bin/</filename> with | ||
1688 | <filename>${bindir}</filename>. | ||
1689 | If you do perform such modifications during | ||
1690 | <filename>do_install</filename>, be sure to modify the | ||
1691 | destination file after copying rather than before copying. | ||
1692 | Modifying after copying ensures that the build system can | ||
1693 | re-execute <filename>do_install</filename> if needed. | ||
1694 | </note> | ||
1695 | |||
1696 | <note> | ||
1697 | <filename>oe_runmake install</filename>, which can be run | ||
1698 | directly or can be run indirectly by the autotools and CMake | ||
1699 | classes, runs make install in parallel. | ||
1700 | Sometimes, a Makefile can have missing dependencies between | ||
1701 | targets that can result in race conditions. | ||
1702 | If you experience intermittent failures during | ||
1703 | <filename>do_install</filename>, you might be able to work | ||
1704 | around them by setting | ||
1705 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PARALLEL_MAKEINST'><filename>PARALLEL_MAKEINST</filename></ulink> | ||
1706 | to and empty string in the recipe. | ||
1707 | </note> | ||
1473 | </section> | 1708 | </section> |
1474 | 1709 | ||
1475 | <section id='new-recipe-optionally-supporting-services'> | 1710 | <section id='new-recipe-optionally-supporting-services'> |
1476 | <title>Supporting Services</title> | 1711 | <title>Supporting Services</title> |
1477 | 1712 | ||
1478 | <para> | 1713 | <para> |
1479 | We'll probably also need some subsections on specific extra functions needed in | ||
1480 | some recipes e.g. how to add support for services (sysvinit and systemd), | ||
1481 | adding PACKAGECONFIG options, dealing with alternatives, etc. There's a | ||
1482 | question in my mind on how some of these will overlap with the class reference | ||
1483 | section though. | ||
1484 | </para> | ||
1485 | |||
1486 | <para> | ||
1487 | If you are adding services and the service initialization | 1714 | If you are adding services and the service initialization |
1488 | script or the service file itself is not installed, you must | 1715 | script or the service file itself is not installed, you must |
1489 | provide for that installation in your recipe using a | 1716 | provide for that installation in your recipe using a |
@@ -1491,6 +1718,9 @@ section though. | |||
1491 | If your recipe already has a <filename>do_install</filename> | 1718 | If your recipe already has a <filename>do_install</filename> |
1492 | function, you will need to be sure to change it so that it | 1719 | function, you will need to be sure to change it so that it |
1493 | handles the installation of your services. | 1720 | handles the installation of your services. |
1721 | </para> | ||
1722 | |||
1723 | <para> | ||
1494 | When you create the installation for your services, you need | 1724 | When you create the installation for your services, you need |
1495 | to accomplish what is normally done by "make install". | 1725 | to accomplish what is normally done by "make install". |
1496 | In other words, make sure your installation puts the output | 1726 | In other words, make sure your installation puts the output |
@@ -1498,17 +1728,32 @@ section though. | |||
1498 | target system. | 1728 | target system. |
1499 | </para> | 1729 | </para> |
1500 | 1730 | ||
1731 | <para> | ||
1732 | <emphasis>Paul</emphasis> - We need to get some detail here on specific extra | ||
1733 | functions needed in some recipes (e.g. how to add support for | ||
1734 | services like sysvinit and systemd, how to add | ||
1735 | <filename>PACKAGECONFIG</filename> options, how to | ||
1736 | deal with alternatives, and so forth). | ||
1737 | </para> | ||
1501 | </section> | 1738 | </section> |
1502 | 1739 | ||
1503 | <section id='new-recipe-packaging'> | 1740 | <section id='new-recipe-packaging'> |
1504 | <title>Packaging</title> | 1741 | <title>Packaging</title> |
1505 | 1742 | ||
1506 | <para> | 1743 | <para> |
1507 | packaging: ensure that the files are packaged correctly. Resolve any package QA | 1744 | The <filename>do_package</filename> task ensures that files |
1508 | issues (we need to have more detailed docs on this, probably as its own | 1745 | are packaged correctly. |
1509 | section). This can also involve looking at packages-split under the work | 1746 | To be sure your packages are correct, examine the |
1510 | directory and checking if files are where they need to be; if not, set | 1747 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}/packages-split</filename> |
1511 | PACKAGES, FILES, do_install(_append) etc. as needed. | 1748 | directory and make sure files are where you expect them to be. |
1749 | </para> | ||
1750 | |||
1751 | <para> | ||
1752 | If you discover problems, you can set | ||
1753 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGES'><filename>PACKAGES</filename></ulink>, | ||
1754 | <ulink url='&YOCTO_DOCS_REF_URL;#var-FILES'><filename>FILES</filename></ulink>, | ||
1755 | <filename>do_install(_append)</filename>, and so forth as | ||
1756 | needed. | ||
1512 | </para> | 1757 | </para> |
1513 | </section> | 1758 | </section> |
1514 | 1759 | ||
@@ -1516,8 +1761,10 @@ PACKAGES, FILES, do_install(_append) etc. as needed. | |||
1516 | <title>Testing</title> | 1761 | <title>Testing</title> |
1517 | 1762 | ||
1518 | <para> | 1763 | <para> |
1519 | runtime testing: add the output package(s) to your image and ensure that they | 1764 | The final step for completing your recipe is to be sure that |
1520 | work at runtime. | 1765 | the software you built runs correctly. |
1766 | To accomplish runtime testing, add the build's output | ||
1767 | packages to your image and test them on the target. | ||
1521 | </para> | 1768 | </para> |
1522 | </section> | 1769 | </section> |
1523 | </section> | 1770 | </section> |