diff options
| -rw-r--r-- | documentation/bsp-guide/bsp.xml | 6 | ||||
| -rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 7 | ||||
| -rw-r--r-- | documentation/overview-manual/overview-concepts.xml | 390 | ||||
| -rw-r--r-- | documentation/ref-manual/ref-variables.xml | 12 | ||||
| -rw-r--r-- | documentation/ref-manual/technical-details.xml | 357 |
5 files changed, 403 insertions, 369 deletions
diff --git a/documentation/bsp-guide/bsp.xml b/documentation/bsp-guide/bsp.xml index 6ae3ff9804..7d3345e06a 100644 --- a/documentation/bsp-guide/bsp.xml +++ b/documentation/bsp-guide/bsp.xml | |||
| @@ -1415,9 +1415,9 @@ | |||
| 1415 | Thus, the build system can build the corresponding recipe and include | 1415 | Thus, the build system can build the corresponding recipe and include |
| 1416 | the component in the image. | 1416 | the component in the image. |
| 1417 | See the | 1417 | See the |
| 1418 | "<ulink url='&YOCTO_DOCS_REF_URL;#enabling-commercially-licensed-recipes'>Enabling | 1418 | "<ulink url='&YOCTO_DOCS_OVERVIEW_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>" |
| 1419 | Commercially Licensed Recipes</ulink>" section in the Yocto Project Reference | 1419 | section in the Yocto Project Overview Manual for details on how |
| 1420 | Manual for details on how to use these variables.</para> | 1420 | to use these variables.</para> |
| 1421 | <para>If you build as you normally would, without | 1421 | <para>If you build as you normally would, without |
| 1422 | specifying any recipes in the | 1422 | specifying any recipes in the |
| 1423 | <filename>LICENSE_FLAGS_WHITELIST</filename>, the build stops and | 1423 | <filename>LICENSE_FLAGS_WHITELIST</filename>, the build stops and |
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index b141498763..075d0f6fdf 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
| @@ -2128,8 +2128,8 @@ | |||
| 2128 | containing the current checksum. | 2128 | containing the current checksum. |
| 2129 | For more explanation and examples of how to set the | 2129 | For more explanation and examples of how to set the |
| 2130 | <filename>LIC_FILES_CHKSUM</filename> variable, see the | 2130 | <filename>LIC_FILES_CHKSUM</filename> variable, see the |
| 2131 | "<ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>" | 2131 | "<ulink url='&YOCTO_DOCS_OVERVIEW_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>" |
| 2132 | section in the Yocto Project Reference Manual.</para> | 2132 | section in the Yocto Project Overview Manual.</para> |
| 2133 | <para>To determine the correct checksum string, you | 2133 | <para>To determine the correct checksum string, you |
| 2134 | can list the appropriate files in the | 2134 | can list the appropriate files in the |
| 2135 | <filename>LIC_FILES_CHKSUM</filename> variable with | 2135 | <filename>LIC_FILES_CHKSUM</filename> variable with |
| @@ -3211,7 +3211,8 @@ | |||
| 3211 | The variable | 3211 | The variable |
| 3212 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'>LIC_FILES_CHKSUM</ulink></filename> | 3212 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'>LIC_FILES_CHKSUM</ulink></filename> |
| 3213 | is used to track source license changes as described in the | 3213 | is used to track source license changes as described in the |
| 3214 | "<ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>" section. | 3214 | "<ulink url='&YOCTO_DOCS_OVERVIEW_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>" |
| 3215 | section in the Yocto Project Overview Manual. | ||
| 3215 | You can quickly create Autotool-based recipes in a manner similar to the previous example. | 3216 | You can quickly create Autotool-based recipes in a manner similar to the previous example. |
| 3216 | </para> | 3217 | </para> |
| 3217 | </section> | 3218 | </section> |
diff --git a/documentation/overview-manual/overview-concepts.xml b/documentation/overview-manual/overview-concepts.xml index a7d6d2f6fb..2f5c14eef6 100644 --- a/documentation/overview-manual/overview-concepts.xml +++ b/documentation/overview-manual/overview-concepts.xml | |||
| @@ -1460,6 +1460,396 @@ | |||
| 1460 | </section> | 1460 | </section> |
| 1461 | </section> | 1461 | </section> |
| 1462 | 1462 | ||
| 1463 | <section id="overview-licenses"> | ||
| 1464 | <title>Licenses</title> | ||
| 1465 | |||
| 1466 | <para> | ||
| 1467 | This section describes the mechanism by which the OpenEmbedded | ||
| 1468 | build system tracks changes to licensing text. | ||
| 1469 | The section also describes how to enable commercially licensed | ||
| 1470 | recipes, which by default are disabled. | ||
| 1471 | </para> | ||
| 1472 | |||
| 1473 | <para> | ||
| 1474 | For information that can help you maintain compliance with | ||
| 1475 | various open source licensing during the lifecycle of the product, | ||
| 1476 | see the | ||
| 1477 | "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Project's Lifecycle</ulink>" | ||
| 1478 | section in the Yocto Project Development Tasks Manual. | ||
| 1479 | </para> | ||
| 1480 | |||
| 1481 | <section id="usingpoky-configuring-LIC_FILES_CHKSUM"> | ||
| 1482 | <title>Tracking License Changes</title> | ||
| 1483 | |||
| 1484 | <para> | ||
| 1485 | The license of an upstream project might change in the future. | ||
| 1486 | In order to prevent these changes going unnoticed, the | ||
| 1487 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></ulink> | ||
| 1488 | variable tracks changes to the license text. The checksums are | ||
| 1489 | validated at the end of the configure step, and if the | ||
| 1490 | checksums do not match, the build will fail. | ||
| 1491 | </para> | ||
| 1492 | |||
| 1493 | <section id="usingpoky-specifying-LIC_FILES_CHKSUM"> | ||
| 1494 | <title>Specifying the <filename>LIC_FILES_CHKSUM</filename> Variable</title> | ||
| 1495 | |||
| 1496 | <para> | ||
| 1497 | The <filename>LIC_FILES_CHKSUM</filename> | ||
| 1498 | variable contains checksums of the license text in the | ||
| 1499 | source code for the recipe. | ||
| 1500 | Following is an example of how to specify | ||
| 1501 | <filename>LIC_FILES_CHKSUM</filename>: | ||
| 1502 | <literallayout class='monospaced'> | ||
| 1503 | LIC_FILES_CHKSUM = "file://COPYING;md5=xxxx \ | ||
| 1504 | file://licfile1.txt;beginline=5;endline=29;md5=yyyy \ | ||
| 1505 | file://licfile2.txt;endline=50;md5=zzzz \ | ||
| 1506 | ..." | ||
| 1507 | </literallayout> | ||
| 1508 | <note><title>Notes</title> | ||
| 1509 | <itemizedlist> | ||
| 1510 | <listitem><para> | ||
| 1511 | When using "beginline" and "endline", realize | ||
| 1512 | that line numbering begins with one and not | ||
| 1513 | zero. | ||
| 1514 | Also, the included lines are inclusive (i.e. | ||
| 1515 | lines five through and including 29 in the | ||
| 1516 | previous example for | ||
| 1517 | <filename>licfile1.txt</filename>). | ||
| 1518 | </para></listitem> | ||
| 1519 | <listitem><para> | ||
| 1520 | When a license check fails, the selected license | ||
| 1521 | text is included as part of the QA message. | ||
| 1522 | Using this output, you can determine the exact | ||
| 1523 | start and finish for the needed license text. | ||
| 1524 | </para></listitem> | ||
| 1525 | </itemizedlist> | ||
| 1526 | </note> | ||
| 1527 | </para> | ||
| 1528 | |||
| 1529 | <para> | ||
| 1530 | The build system uses the | ||
| 1531 | <ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink> | ||
| 1532 | variable as the default directory when searching files | ||
| 1533 | listed in <filename>LIC_FILES_CHKSUM</filename>. | ||
| 1534 | The previous example employs the default directory. | ||
| 1535 | </para> | ||
| 1536 | |||
| 1537 | <para> | ||
| 1538 | Consider this next example: | ||
| 1539 | <literallayout class='monospaced'> | ||
| 1540 | LIC_FILES_CHKSUM = "file://src/ls.c;beginline=5;endline=16;\ | ||
| 1541 | md5=bb14ed3c4cda583abc85401304b5cd4e" | ||
| 1542 | LIC_FILES_CHKSUM = "file://${WORKDIR}/license.html;md5=5c94767cedb5d6987c902ac850ded2c6" | ||
| 1543 | </literallayout> | ||
| 1544 | </para> | ||
| 1545 | |||
| 1546 | <para> | ||
| 1547 | The first line locates a file in | ||
| 1548 | <filename>${S}/src/ls.c</filename> and isolates lines five | ||
| 1549 | through 16 as license text. | ||
| 1550 | The second line refers to a file in | ||
| 1551 | <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>. | ||
| 1552 | </para> | ||
| 1553 | |||
| 1554 | <para> | ||
| 1555 | Note that <filename>LIC_FILES_CHKSUM</filename> variable is | ||
| 1556 | mandatory for all recipes, unless the | ||
| 1557 | <filename>LICENSE</filename> variable is set to "CLOSED". | ||
| 1558 | </para> | ||
| 1559 | </section> | ||
| 1560 | |||
| 1561 | <section id="usingpoky-LIC_FILES_CHKSUM-explanation-of-syntax"> | ||
| 1562 | <title>Explanation of Syntax</title> | ||
| 1563 | |||
| 1564 | <para> | ||
| 1565 | As mentioned in the previous section, the | ||
| 1566 | <filename>LIC_FILES_CHKSUM</filename> variable lists all | ||
| 1567 | the important files that contain the license text for the | ||
| 1568 | source code. | ||
| 1569 | It is possible to specify a checksum for an entire file, | ||
| 1570 | or a specific section of a file (specified by beginning and | ||
| 1571 | ending line numbers with the "beginline" and "endline" | ||
| 1572 | parameters, respectively). | ||
| 1573 | The latter is useful for source files with a license | ||
| 1574 | notice header, README documents, and so forth. | ||
| 1575 | If you do not use the "beginline" parameter, then it is | ||
| 1576 | assumed that the text begins on the first line of the file. | ||
| 1577 | Similarly, if you do not use the "endline" parameter, | ||
| 1578 | it is assumed that the license text ends with the last | ||
| 1579 | line of the file. | ||
| 1580 | </para> | ||
| 1581 | |||
| 1582 | <para> | ||
| 1583 | The "md5" parameter stores the md5 checksum of the license | ||
| 1584 | text. | ||
| 1585 | If the license text changes in any way as compared to | ||
| 1586 | this parameter then a mismatch occurs. | ||
| 1587 | This mismatch triggers a build failure and notifies | ||
| 1588 | the developer. | ||
| 1589 | Notification allows the developer to review and address | ||
| 1590 | the license text changes. | ||
| 1591 | Also note that if a mismatch occurs during the build, | ||
| 1592 | the correct md5 checksum is placed in the build log and | ||
| 1593 | can be easily copied to the recipe. | ||
| 1594 | </para> | ||
| 1595 | |||
| 1596 | <para> | ||
| 1597 | There is no limit to how many files you can specify using | ||
| 1598 | the <filename>LIC_FILES_CHKSUM</filename> variable. | ||
| 1599 | Generally, however, every project requires a few | ||
| 1600 | specifications for license tracking. | ||
| 1601 | Many projects have a "COPYING" file that stores the | ||
| 1602 | license information for all the source code files. | ||
| 1603 | This practice allows you to just track the "COPYING" | ||
| 1604 | file as long as it is kept up to date. | ||
| 1605 | <note><title>Tips</title> | ||
| 1606 | <itemizedlist> | ||
| 1607 | <listitem><para> | ||
| 1608 | If you specify an empty or invalid "md5" | ||
| 1609 | parameter, BitBake returns an md5 mis-match | ||
| 1610 | error and displays the correct "md5" parameter | ||
| 1611 | value during the build. | ||
| 1612 | The correct parameter is also captured in | ||
| 1613 | the build log. | ||
| 1614 | </para></listitem> | ||
| 1615 | <listitem><para> | ||
| 1616 | If the whole file contains only license text, | ||
| 1617 | you do not need to use the "beginline" and | ||
| 1618 | "endline" parameters. | ||
| 1619 | </para></listitem> | ||
| 1620 | </itemizedlist> | ||
| 1621 | </note> | ||
| 1622 | </para> | ||
| 1623 | </section> | ||
| 1624 | </section> | ||
| 1625 | |||
| 1626 | <section id="enabling-commercially-licensed-recipes"> | ||
| 1627 | <title>Enabling Commercially Licensed Recipes</title> | ||
| 1628 | |||
| 1629 | <para> | ||
| 1630 | By default, the OpenEmbedded build system disables | ||
| 1631 | components that have commercial or other special licensing | ||
| 1632 | requirements. | ||
| 1633 | Such requirements are defined on a | ||
| 1634 | recipe-by-recipe basis through the | ||
| 1635 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></ulink> | ||
| 1636 | variable definition in the affected recipe. | ||
| 1637 | For instance, the | ||
| 1638 | <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename> | ||
| 1639 | recipe contains the following statement: | ||
| 1640 | <literallayout class='monospaced'> | ||
| 1641 | LICENSE_FLAGS = "commercial" | ||
| 1642 | </literallayout> | ||
| 1643 | Here is a slightly more complicated example that contains both | ||
| 1644 | an explicit recipe name and version (after variable expansion): | ||
| 1645 | <literallayout class='monospaced'> | ||
| 1646 | LICENSE_FLAGS = "license_${PN}_${PV}" | ||
| 1647 | </literallayout> | ||
| 1648 | In order for a component restricted by a | ||
| 1649 | <filename>LICENSE_FLAGS</filename> definition to be enabled and | ||
| 1650 | included in an image, it needs to have a matching entry in the | ||
| 1651 | global | ||
| 1652 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></ulink> | ||
| 1653 | variable, which is a variable typically defined in your | ||
| 1654 | <filename>local.conf</filename> file. | ||
| 1655 | For example, to enable the | ||
| 1656 | <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename> | ||
| 1657 | package, you could add either the string | ||
| 1658 | "commercial_gst-plugins-ugly" or the more general string | ||
| 1659 | "commercial" to <filename>LICENSE_FLAGS_WHITELIST</filename>. | ||
| 1660 | See the | ||
| 1661 | "<link linkend='license-flag-matching'>License Flag Matching</link>" | ||
| 1662 | section for a full | ||
| 1663 | explanation of how <filename>LICENSE_FLAGS</filename> matching | ||
| 1664 | works. | ||
| 1665 | Here is the example: | ||
| 1666 | <literallayout class='monospaced'> | ||
| 1667 | LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly" | ||
| 1668 | </literallayout> | ||
| 1669 | Likewise, to additionally enable the package built from the | ||
| 1670 | recipe containing | ||
| 1671 | <filename>LICENSE_FLAGS = "license_${PN}_${PV}"</filename>, | ||
| 1672 | and assuming that the actual recipe name was | ||
| 1673 | <filename>emgd_1.10.bb</filename>, the following string would | ||
| 1674 | enable that package as well as the original | ||
| 1675 | <filename>gst-plugins-ugly</filename> package: | ||
| 1676 | <literallayout class='monospaced'> | ||
| 1677 | LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly license_emgd_1.10" | ||
| 1678 | </literallayout> | ||
| 1679 | As a convenience, you do not need to specify the complete | ||
| 1680 | license string in the whitelist for every package. | ||
| 1681 | You can use an abbreviated form, which consists | ||
| 1682 | of just the first portion or portions of the license | ||
| 1683 | string before the initial underscore character or characters. | ||
| 1684 | A partial string will match any license that contains the | ||
| 1685 | given string as the first portion of its license. | ||
| 1686 | For example, the following whitelist string will also match | ||
| 1687 | both of the packages previously mentioned as well as any other | ||
| 1688 | packages that have licenses starting with "commercial" or | ||
| 1689 | "license". | ||
| 1690 | <literallayout class='monospaced'> | ||
| 1691 | LICENSE_FLAGS_WHITELIST = "commercial license" | ||
| 1692 | </literallayout> | ||
| 1693 | </para> | ||
| 1694 | |||
| 1695 | <section id="license-flag-matching"> | ||
| 1696 | <title>License Flag Matching</title> | ||
| 1697 | |||
| 1698 | <para> | ||
| 1699 | License flag matching allows you to control what recipes | ||
| 1700 | the OpenEmbedded build system includes in the build. | ||
| 1701 | Fundamentally, the build system attempts to match | ||
| 1702 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></ulink> | ||
| 1703 | strings found in recipes against | ||
| 1704 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></ulink> | ||
| 1705 | strings found in the whitelist. | ||
| 1706 | A match causes the build system to include a recipe in the | ||
| 1707 | build, while failure to find a match causes the build | ||
| 1708 | system to exclude a recipe. | ||
| 1709 | </para> | ||
| 1710 | |||
| 1711 | <para> | ||
| 1712 | In general, license flag matching is simple. | ||
| 1713 | However, understanding some concepts will help you | ||
| 1714 | correctly and effectively use matching. | ||
| 1715 | </para> | ||
| 1716 | |||
| 1717 | <para> | ||
| 1718 | Before a flag | ||
| 1719 | defined by a particular recipe is tested against the | ||
| 1720 | contents of the whitelist, the expanded string | ||
| 1721 | <filename>_${PN}</filename> is appended to the flag. | ||
| 1722 | This expansion makes each | ||
| 1723 | <filename>LICENSE_FLAGS</filename> value recipe-specific. | ||
| 1724 | After expansion, the string is then matched against the | ||
| 1725 | whitelist. | ||
| 1726 | Thus, specifying | ||
| 1727 | <filename>LICENSE_FLAGS = "commercial"</filename> | ||
| 1728 | in recipe "foo", for example, results in the string | ||
| 1729 | <filename>"commercial_foo"</filename>. | ||
| 1730 | And, to create a match, that string must appear in the | ||
| 1731 | whitelist. | ||
| 1732 | </para> | ||
| 1733 | |||
| 1734 | <para> | ||
| 1735 | Judicious use of the <filename>LICENSE_FLAGS</filename> | ||
| 1736 | strings and the contents of the | ||
| 1737 | <filename>LICENSE_FLAGS_WHITELIST</filename> variable | ||
| 1738 | allows you a lot of flexibility for including or excluding | ||
| 1739 | recipes based on licensing. | ||
| 1740 | For example, you can broaden the matching capabilities by | ||
| 1741 | using license flags string subsets in the whitelist. | ||
| 1742 | <note> | ||
| 1743 | When using a string subset, be sure to use the part of | ||
| 1744 | the expanded string that precedes the appended | ||
| 1745 | underscore character (e.g. | ||
| 1746 | <filename>usethispart_1.3</filename>, | ||
| 1747 | <filename>usethispart_1.4</filename>, and so forth). | ||
| 1748 | </note> | ||
| 1749 | For example, simply specifying the string "commercial" in | ||
| 1750 | the whitelist matches any expanded | ||
| 1751 | <filename>LICENSE_FLAGS</filename> definition that starts | ||
| 1752 | with the string "commercial" such as "commercial_foo" and | ||
| 1753 | "commercial_bar", which are the strings the build system | ||
| 1754 | automatically generates for hypothetical recipes named | ||
| 1755 | "foo" and "bar" assuming those recipes simply specify the | ||
| 1756 | following: | ||
| 1757 | <literallayout class='monospaced'> | ||
| 1758 | LICENSE_FLAGS = "commercial" | ||
| 1759 | </literallayout> | ||
| 1760 | Thus, you can choose to exhaustively | ||
| 1761 | enumerate each license flag in the whitelist and | ||
| 1762 | allow only specific recipes into the image, or | ||
| 1763 | you can use a string subset that causes a broader range of | ||
| 1764 | matches to allow a range of recipes into the image. | ||
| 1765 | </para> | ||
| 1766 | |||
| 1767 | <para> | ||
| 1768 | This scheme works even if the | ||
| 1769 | <filename>LICENSE_FLAGS</filename> string already | ||
| 1770 | has <filename>_${PN}</filename> appended. | ||
| 1771 | For example, the build system turns the license flag | ||
| 1772 | "commercial_1.2_foo" into "commercial_1.2_foo_foo" and | ||
| 1773 | would match both the general "commercial" and the specific | ||
| 1774 | "commercial_1.2_foo" strings found in the whitelist, as | ||
| 1775 | expected. | ||
| 1776 | </para> | ||
| 1777 | |||
| 1778 | <para> | ||
| 1779 | Here are some other scenarios: | ||
| 1780 | <itemizedlist> | ||
| 1781 | <listitem><para> | ||
| 1782 | You can specify a versioned string in the recipe | ||
| 1783 | such as "commercial_foo_1.2" in a "foo" recipe. | ||
| 1784 | The build system expands this string to | ||
| 1785 | "commercial_foo_1.2_foo". | ||
| 1786 | Combine this license flag with a whitelist that has | ||
| 1787 | the string "commercial" and you match the flag | ||
| 1788 | along with any other flag that starts with the | ||
| 1789 | string "commercial". | ||
| 1790 | </para></listitem> | ||
| 1791 | <listitem><para> | ||
| 1792 | Under the same circumstances, you can use | ||
| 1793 | "commercial_foo" in the whitelist and the build | ||
| 1794 | system not only matches "commercial_foo_1.2" but | ||
| 1795 | also matches any license flag with the string | ||
| 1796 | "commercial_foo", regardless of the version. | ||
| 1797 | </para></listitem> | ||
| 1798 | <listitem><para> | ||
| 1799 | You can be very specific and use both the | ||
| 1800 | package and version parts in the whitelist (e.g. | ||
| 1801 | "commercial_foo_1.2") to specifically match a | ||
| 1802 | versioned recipe. | ||
| 1803 | </para></listitem> | ||
| 1804 | </itemizedlist> | ||
| 1805 | </para> | ||
| 1806 | </section> | ||
| 1807 | |||
| 1808 | <section id="other-variables-related-to-commercial-licenses"> | ||
| 1809 | <title>Other Variables Related to Commercial Licenses</title> | ||
| 1810 | |||
| 1811 | <para> | ||
| 1812 | Other helpful variables related to commercial | ||
| 1813 | license handling exist and are defined in the | ||
| 1814 | <filename>poky/meta/conf/distro/include/default-distrovars.inc</filename> file: | ||
| 1815 | <literallayout class='monospaced'> | ||
| 1816 | COMMERCIAL_AUDIO_PLUGINS ?= "" | ||
| 1817 | COMMERCIAL_VIDEO_PLUGINS ?= "" | ||
| 1818 | </literallayout> | ||
| 1819 | If you want to enable these components, you can do so by | ||
| 1820 | making sure you have statements similar to the following | ||
| 1821 | in your <filename>local.conf</filename> configuration file: | ||
| 1822 | <literallayout class='monospaced'> | ||
| 1823 | COMMERCIAL_AUDIO_PLUGINS = "gst-plugins-ugly-mad \ | ||
| 1824 | gst-plugins-ugly-mpegaudioparse" | ||
| 1825 | COMMERCIAL_VIDEO_PLUGINS = "gst-plugins-ugly-mpeg2dec \ | ||
| 1826 | gst-plugins-ugly-mpegstream gst-plugins-bad-mpegvideoparse" | ||
| 1827 | LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly commercial_gst-plugins-bad commercial_qmmp" | ||
| 1828 | </literallayout> | ||
| 1829 | Of course, you could also create a matching whitelist | ||
| 1830 | for those components using the more general "commercial" | ||
| 1831 | in the whitelist, but that would also enable all the | ||
| 1832 | other packages with | ||
| 1833 | <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></ulink> | ||
| 1834 | containing "commercial", which you may or may not want: | ||
| 1835 | <literallayout class='monospaced'> | ||
| 1836 | LICENSE_FLAGS_WHITELIST = "commercial" | ||
| 1837 | </literallayout> | ||
| 1838 | </para> | ||
| 1839 | |||
| 1840 | <para> | ||
| 1841 | Specifying audio and video plug-ins as part of the | ||
| 1842 | <filename>COMMERCIAL_AUDIO_PLUGINS</filename> and | ||
| 1843 | <filename>COMMERCIAL_VIDEO_PLUGINS</filename> statements | ||
| 1844 | (along with the enabling | ||
| 1845 | <filename>LICENSE_FLAGS_WHITELIST</filename>) includes the | ||
| 1846 | plug-ins or components into built images, thus adding | ||
| 1847 | support for media formats or components. | ||
| 1848 | </para> | ||
| 1849 | </section> | ||
| 1850 | </section> | ||
| 1851 | </section> | ||
| 1852 | |||
| 1463 | <section id='x32'> | 1853 | <section id='x32'> |
| 1464 | <title>x32 psABI</title> | 1854 | <title>x32 psABI</title> |
| 1465 | 1855 | ||
diff --git a/documentation/ref-manual/ref-variables.xml b/documentation/ref-manual/ref-variables.xml index a971e2a8f9..8baa0c0f07 100644 --- a/documentation/ref-manual/ref-variables.xml +++ b/documentation/ref-manual/ref-variables.xml | |||
| @@ -7908,8 +7908,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" | |||
| 7908 | <link linkend='var-LICENSE'><filename>LICENSE</filename></link> | 7908 | <link linkend='var-LICENSE'><filename>LICENSE</filename></link> |
| 7909 | is set to "CLOSED").</para> | 7909 | is set to "CLOSED").</para> |
| 7910 | <para>For more information, see the | 7910 | <para>For more information, see the |
| 7911 | "<link linkend='usingpoky-configuring-LIC_FILES_CHKSUM'> | 7911 | "<ulink url='&YOCTO_DOCS_OVERVIEW_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>" |
| 7912 | Tracking License Changes</link>" section. | 7912 | section in the Yocto Project Overview Manual. |
| 7913 | </para> | 7913 | </para> |
| 7914 | </glossdef> | 7914 | </glossdef> |
| 7915 | </glossentry> | 7915 | </glossentry> |
| @@ -8044,8 +8044,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" | |||
| 8044 | require additional licenses in order to be used in a | 8044 | require additional licenses in order to be used in a |
| 8045 | commercial product. | 8045 | commercial product. |
| 8046 | For more information, see the | 8046 | For more information, see the |
| 8047 | "<link linkend='enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</link>" | 8047 | "<ulink url='&YOCTO_DOCS_OVERVIEW_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>" |
| 8048 | section. | 8048 | section in the Yocto Project Overview Manual. |
| 8049 | </para> | 8049 | </para> |
| 8050 | </glossdef> | 8050 | </glossdef> |
| 8051 | </glossentry> | 8051 | </glossentry> |
| @@ -8064,8 +8064,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" | |||
| 8064 | This practice is otherwise known as "whitelisting" | 8064 | This practice is otherwise known as "whitelisting" |
| 8065 | license flags. | 8065 | license flags. |
| 8066 | For more information, see the | 8066 | For more information, see the |
| 8067 | <link linkend='enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</link>" | 8067 | <ulink url='&YOCTO_DOCS_OVERVIEW_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>" |
| 8068 | section. | 8068 | section in the Yocto Project Overview Manual. |
| 8069 | </para> | 8069 | </para> |
| 8070 | </glossdef> | 8070 | </glossdef> |
| 8071 | </glossentry> | 8071 | </glossentry> |
diff --git a/documentation/ref-manual/technical-details.xml b/documentation/ref-manual/technical-details.xml index ba0b27ddc9..3827366dcb 100644 --- a/documentation/ref-manual/technical-details.xml +++ b/documentation/ref-manual/technical-details.xml | |||
| @@ -13,363 +13,6 @@ | |||
| 13 | x32, Wayland support, and Licenses. | 13 | x32, Wayland support, and Licenses. |
| 14 | </para> | 14 | </para> |
| 15 | 15 | ||
| 16 | <section id="licenses"> | ||
| 17 | <title>Licenses</title> | ||
| 18 | |||
| 19 | <para> | ||
| 20 | This section describes the mechanism by which the OpenEmbedded build system | ||
| 21 | tracks changes to licensing text. | ||
| 22 | The section also describes how to enable commercially licensed recipes, | ||
| 23 | which by default are disabled. | ||
| 24 | </para> | ||
| 25 | |||
| 26 | <para> | ||
| 27 | For information that can help you maintain compliance with various open | ||
| 28 | source licensing during the lifecycle of the product, see the | ||
| 29 | "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Project's Lifecycle</ulink>" | ||
| 30 | section in the Yocto Project Development Tasks Manual. | ||
| 31 | </para> | ||
| 32 | |||
| 33 | <section id="usingpoky-configuring-LIC_FILES_CHKSUM"> | ||
| 34 | <title>Tracking License Changes</title> | ||
| 35 | |||
| 36 | <para> | ||
| 37 | The license of an upstream project might change in the future. | ||
| 38 | In order to prevent these changes going unnoticed, the | ||
| 39 | <filename><link linkend='var-LIC_FILES_CHKSUM'>LIC_FILES_CHKSUM</link></filename> | ||
| 40 | variable tracks changes to the license text. The checksums are validated at the end of the | ||
| 41 | configure step, and if the checksums do not match, the build will fail. | ||
| 42 | </para> | ||
| 43 | |||
| 44 | <section id="usingpoky-specifying-LIC_FILES_CHKSUM"> | ||
| 45 | <title>Specifying the <filename>LIC_FILES_CHKSUM</filename> Variable</title> | ||
| 46 | |||
| 47 | <para> | ||
| 48 | The <filename>LIC_FILES_CHKSUM</filename> | ||
| 49 | variable contains checksums of the license text in the source | ||
| 50 | code for the recipe. | ||
| 51 | Following is an example of how to specify | ||
| 52 | <filename>LIC_FILES_CHKSUM</filename>: | ||
| 53 | <literallayout class='monospaced'> | ||
| 54 | LIC_FILES_CHKSUM = "file://COPYING;md5=xxxx \ | ||
| 55 | file://licfile1.txt;beginline=5;endline=29;md5=yyyy \ | ||
| 56 | file://licfile2.txt;endline=50;md5=zzzz \ | ||
| 57 | ..." | ||
| 58 | </literallayout> | ||
| 59 | <note><title>Notes</title> | ||
| 60 | <itemizedlist> | ||
| 61 | <listitem><para> | ||
| 62 | When using "beginline" and "endline", realize that | ||
| 63 | line numbering begins with one and not zero. | ||
| 64 | Also, the included lines are inclusive (i.e. lines | ||
| 65 | five through and including 29 in the previous | ||
| 66 | example for <filename>licfile1.txt</filename>). | ||
| 67 | </para></listitem> | ||
| 68 | <listitem><para> | ||
| 69 | When a license check fails, the selected license | ||
| 70 | text is included as part of the QA message. | ||
| 71 | Using this output, you can determine the exact | ||
| 72 | start and finish for the needed license text. | ||
| 73 | </para></listitem> | ||
| 74 | </itemizedlist> | ||
| 75 | </note> | ||
| 76 | </para> | ||
| 77 | |||
| 78 | <para> | ||
| 79 | The build system uses the | ||
| 80 | <filename><link linkend='var-S'>S</link></filename> variable as | ||
| 81 | the default directory when searching files listed in | ||
| 82 | <filename>LIC_FILES_CHKSUM</filename>. | ||
| 83 | The previous example employs the default directory. | ||
| 84 | </para> | ||
| 85 | |||
| 86 | <para> | ||
| 87 | Consider this next example: | ||
| 88 | <literallayout class='monospaced'> | ||
| 89 | LIC_FILES_CHKSUM = "file://src/ls.c;beginline=5;endline=16;\ | ||
| 90 | md5=bb14ed3c4cda583abc85401304b5cd4e" | ||
| 91 | LIC_FILES_CHKSUM = "file://${WORKDIR}/license.html;md5=5c94767cedb5d6987c902ac850ded2c6" | ||
| 92 | </literallayout> | ||
| 93 | </para> | ||
| 94 | |||
| 95 | <para> | ||
| 96 | The first line locates a file in | ||
| 97 | <filename>${S}/src/ls.c</filename> and isolates lines five | ||
| 98 | through 16 as license text. | ||
| 99 | The second line refers to a file in | ||
| 100 | <filename><link linkend='var-WORKDIR'>WORKDIR</link></filename>. | ||
| 101 | </para> | ||
| 102 | <para> | ||
| 103 | Note that <filename>LIC_FILES_CHKSUM</filename> variable is | ||
| 104 | mandatory for all recipes, unless the | ||
| 105 | <filename>LICENSE</filename> variable is set to "CLOSED". | ||
| 106 | </para> | ||
| 107 | </section> | ||
| 108 | |||
| 109 | <section id="usingpoky-LIC_FILES_CHKSUM-explanation-of-syntax"> | ||
| 110 | <title>Explanation of Syntax</title> | ||
| 111 | <para> | ||
| 112 | As mentioned in the previous section, the | ||
| 113 | <filename>LIC_FILES_CHKSUM</filename> variable lists all the | ||
| 114 | important files that contain the license text for the source code. | ||
| 115 | It is possible to specify a checksum for an entire file, or a specific section of a | ||
| 116 | file (specified by beginning and ending line numbers with the "beginline" and "endline" | ||
| 117 | parameters, respectively). | ||
| 118 | The latter is useful for source files with a license notice header, | ||
| 119 | README documents, and so forth. | ||
| 120 | If you do not use the "beginline" parameter, then it is assumed that the text begins on the | ||
| 121 | first line of the file. | ||
| 122 | Similarly, if you do not use the "endline" parameter, it is assumed that the license text | ||
| 123 | ends with the last line of the file. | ||
| 124 | </para> | ||
| 125 | |||
| 126 | <para> | ||
| 127 | The "md5" parameter stores the md5 checksum of the license text. | ||
| 128 | If the license text changes in any way as compared to this parameter | ||
| 129 | then a mismatch occurs. | ||
| 130 | This mismatch triggers a build failure and notifies the developer. | ||
| 131 | Notification allows the developer to review and address the license text changes. | ||
| 132 | Also note that if a mismatch occurs during the build, the correct md5 | ||
| 133 | checksum is placed in the build log and can be easily copied to the recipe. | ||
| 134 | </para> | ||
| 135 | |||
| 136 | <para> | ||
| 137 | There is no limit to how many files you can specify using the | ||
| 138 | <filename>LIC_FILES_CHKSUM</filename> variable. | ||
| 139 | Generally, however, every project requires a few specifications for license tracking. | ||
| 140 | Many projects have a "COPYING" file that stores the license information for all the source | ||
| 141 | code files. | ||
| 142 | This practice allows you to just track the "COPYING" file as long as it is kept up to date. | ||
| 143 | </para> | ||
| 144 | |||
| 145 | <tip> | ||
| 146 | If you specify an empty or invalid "md5" parameter, BitBake returns an md5 mis-match | ||
| 147 | error and displays the correct "md5" parameter value during the build. | ||
| 148 | The correct parameter is also captured in the build log. | ||
| 149 | </tip> | ||
| 150 | |||
| 151 | <tip> | ||
| 152 | If the whole file contains only license text, you do not need to use the "beginline" and | ||
| 153 | "endline" parameters. | ||
| 154 | </tip> | ||
| 155 | </section> | ||
| 156 | </section> | ||
| 157 | |||
| 158 | <section id="enabling-commercially-licensed-recipes"> | ||
| 159 | <title>Enabling Commercially Licensed Recipes</title> | ||
| 160 | |||
| 161 | <para> | ||
| 162 | By default, the OpenEmbedded build system disables | ||
| 163 | components that have commercial or other special licensing | ||
| 164 | requirements. | ||
| 165 | Such requirements are defined on a | ||
| 166 | recipe-by-recipe basis through the | ||
| 167 | <link linkend='var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></link> | ||
| 168 | variable definition in the affected recipe. | ||
| 169 | For instance, the | ||
| 170 | <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename> | ||
| 171 | recipe contains the following statement: | ||
| 172 | <literallayout class='monospaced'> | ||
| 173 | LICENSE_FLAGS = "commercial" | ||
| 174 | </literallayout> | ||
| 175 | Here is a slightly more complicated example that contains both an | ||
| 176 | explicit recipe name and version (after variable expansion): | ||
| 177 | <literallayout class='monospaced'> | ||
| 178 | LICENSE_FLAGS = "license_${PN}_${PV}" | ||
| 179 | </literallayout> | ||
| 180 | In order for a component restricted by a <filename>LICENSE_FLAGS</filename> | ||
| 181 | definition to be enabled and included in an image, it | ||
| 182 | needs to have a matching entry in the global | ||
| 183 | <link linkend='var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></link> | ||
| 184 | variable, which is a variable | ||
| 185 | typically defined in your <filename>local.conf</filename> file. | ||
| 186 | For example, to enable | ||
| 187 | the <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename> | ||
| 188 | package, you could add either the string | ||
| 189 | "commercial_gst-plugins-ugly" or the more general string | ||
| 190 | "commercial" to <filename>LICENSE_FLAGS_WHITELIST</filename>. | ||
| 191 | See the | ||
| 192 | "<link linkend='license-flag-matching'>License Flag Matching</link>" section | ||
| 193 | for a full explanation of how <filename>LICENSE_FLAGS</filename> matching works. | ||
| 194 | Here is the example: | ||
| 195 | <literallayout class='monospaced'> | ||
| 196 | LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly" | ||
| 197 | </literallayout> | ||
| 198 | Likewise, to additionally enable the package built from the recipe containing | ||
| 199 | <filename>LICENSE_FLAGS = "license_${PN}_${PV}"</filename>, and assuming | ||
| 200 | that the actual recipe name was <filename>emgd_1.10.bb</filename>, | ||
| 201 | the following string would enable that package as well as | ||
| 202 | the original <filename>gst-plugins-ugly</filename> package: | ||
| 203 | <literallayout class='monospaced'> | ||
| 204 | LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly license_emgd_1.10" | ||
| 205 | </literallayout> | ||
| 206 | As a convenience, you do not need to specify the complete license string | ||
| 207 | in the whitelist for every package. | ||
| 208 | You can use an abbreviated form, which consists | ||
| 209 | of just the first portion or portions of the license string before | ||
| 210 | the initial underscore character or characters. | ||
| 211 | A partial string will match | ||
| 212 | any license that contains the given string as the first | ||
| 213 | portion of its license. | ||
| 214 | For example, the following | ||
| 215 | whitelist string will also match both of the packages | ||
| 216 | previously mentioned as well as any other packages that have | ||
| 217 | licenses starting with "commercial" or "license". | ||
| 218 | <literallayout class='monospaced'> | ||
| 219 | LICENSE_FLAGS_WHITELIST = "commercial license" | ||
| 220 | </literallayout> | ||
| 221 | </para> | ||
| 222 | |||
| 223 | <section id="license-flag-matching"> | ||
| 224 | <title>License Flag Matching</title> | ||
| 225 | |||
| 226 | <para> | ||
| 227 | License flag matching allows you to control what recipes the | ||
| 228 | OpenEmbedded build system includes in the build. | ||
| 229 | Fundamentally, the build system attempts to match | ||
| 230 | <link linkend='var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></link> | ||
| 231 | strings found in recipes against | ||
| 232 | <link linkend='var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></link> | ||
| 233 | strings found in the whitelist. | ||
| 234 | A match causes the build system to include a recipe in the | ||
| 235 | build, while failure to find a match causes the build system to | ||
| 236 | exclude a recipe. | ||
| 237 | </para> | ||
| 238 | |||
| 239 | <para> | ||
| 240 | In general, license flag matching is simple. | ||
| 241 | However, understanding some concepts will help you | ||
| 242 | correctly and effectively use matching. | ||
| 243 | </para> | ||
| 244 | |||
| 245 | <para> | ||
| 246 | Before a flag | ||
| 247 | defined by a particular recipe is tested against the | ||
| 248 | contents of the whitelist, the expanded string | ||
| 249 | <filename>_${PN}</filename> is appended to the flag. | ||
| 250 | This expansion makes each <filename>LICENSE_FLAGS</filename> | ||
| 251 | value recipe-specific. | ||
| 252 | After expansion, the string is then matched against the | ||
| 253 | whitelist. | ||
| 254 | Thus, specifying | ||
| 255 | <filename>LICENSE_FLAGS = "commercial"</filename> | ||
| 256 | in recipe "foo", for example, results in the string | ||
| 257 | <filename>"commercial_foo"</filename>. | ||
| 258 | And, to create a match, that string must appear in the | ||
| 259 | whitelist. | ||
| 260 | </para> | ||
| 261 | |||
| 262 | <para> | ||
| 263 | Judicious use of the <filename>LICENSE_FLAGS</filename> | ||
| 264 | strings and the contents of the | ||
| 265 | <filename>LICENSE_FLAGS_WHITELIST</filename> variable | ||
| 266 | allows you a lot of flexibility for including or excluding | ||
| 267 | recipes based on licensing. | ||
| 268 | For example, you can broaden the matching capabilities by | ||
| 269 | using license flags string subsets in the whitelist. | ||
| 270 | <note>When using a string subset, be sure to use the part of | ||
| 271 | the expanded string that precedes the appended underscore | ||
| 272 | character (e.g. <filename>usethispart_1.3</filename>, | ||
| 273 | <filename>usethispart_1.4</filename>, and so forth). | ||
| 274 | </note> | ||
| 275 | For example, simply specifying the string "commercial" in | ||
| 276 | the whitelist matches any expanded | ||
| 277 | <filename>LICENSE_FLAGS</filename> definition that starts with | ||
| 278 | the string "commercial" such as "commercial_foo" and | ||
| 279 | "commercial_bar", which are the strings the build system | ||
| 280 | automatically generates for hypothetical recipes named | ||
| 281 | "foo" and "bar" assuming those recipes simply specify the | ||
| 282 | following: | ||
| 283 | <literallayout class='monospaced'> | ||
| 284 | LICENSE_FLAGS = "commercial" | ||
| 285 | </literallayout> | ||
| 286 | Thus, you can choose to exhaustively | ||
| 287 | enumerate each license flag in the whitelist and | ||
| 288 | allow only specific recipes into the image, or | ||
| 289 | you can use a string subset that causes a broader range of | ||
| 290 | matches to allow a range of recipes into the image. | ||
| 291 | </para> | ||
| 292 | |||
| 293 | <para> | ||
| 294 | This scheme works even if the | ||
| 295 | <filename>LICENSE_FLAGS</filename> string already | ||
| 296 | has <filename>_${PN}</filename> appended. | ||
| 297 | For example, the build system turns the license flag | ||
| 298 | "commercial_1.2_foo" into "commercial_1.2_foo_foo" and would | ||
| 299 | match both the general "commercial" and the specific | ||
| 300 | "commercial_1.2_foo" strings found in the whitelist, as | ||
| 301 | expected. | ||
| 302 | </para> | ||
| 303 | |||
| 304 | <para> | ||
| 305 | Here are some other scenarios: | ||
| 306 | <itemizedlist> | ||
| 307 | <listitem><para>You can specify a versioned string in the | ||
| 308 | recipe such as "commercial_foo_1.2" in a "foo" recipe. | ||
| 309 | The build system expands this string to | ||
| 310 | "commercial_foo_1.2_foo". | ||
| 311 | Combine this license flag with a whitelist that has | ||
| 312 | the string "commercial" and you match the flag along | ||
| 313 | with any other flag that starts with the string | ||
| 314 | "commercial".</para></listitem> | ||
| 315 | <listitem><para>Under the same circumstances, you can | ||
| 316 | use "commercial_foo" in the whitelist and the | ||
| 317 | build system not only matches "commercial_foo_1.2" but | ||
| 318 | also matches any license flag with the string | ||
| 319 | "commercial_foo", regardless of the version. | ||
| 320 | </para></listitem> | ||
| 321 | <listitem><para>You can be very specific and use both the | ||
| 322 | package and version parts in the whitelist (e.g. | ||
| 323 | "commercial_foo_1.2") to specifically match a | ||
| 324 | versioned recipe.</para></listitem> | ||
| 325 | </itemizedlist> | ||
| 326 | </para> | ||
| 327 | </section> | ||
| 328 | |||
| 329 | <section id="other-variables-related-to-commercial-licenses"> | ||
| 330 | <title>Other Variables Related to Commercial Licenses</title> | ||
| 331 | |||
| 332 | <para> | ||
| 333 | Other helpful variables related to commercial | ||
| 334 | license handling exist and are defined in the | ||
| 335 | <filename>poky/meta/conf/distro/include/default-distrovars.inc</filename> file: | ||
| 336 | <literallayout class='monospaced'> | ||
| 337 | COMMERCIAL_AUDIO_PLUGINS ?= "" | ||
| 338 | COMMERCIAL_VIDEO_PLUGINS ?= "" | ||
| 339 | </literallayout> | ||
| 340 | If you want to enable these components, you can do so by making sure you have | ||
| 341 | statements similar to the following | ||
| 342 | in your <filename>local.conf</filename> configuration file: | ||
| 343 | <literallayout class='monospaced'> | ||
| 344 | COMMERCIAL_AUDIO_PLUGINS = "gst-plugins-ugly-mad \ | ||
| 345 | gst-plugins-ugly-mpegaudioparse" | ||
| 346 | COMMERCIAL_VIDEO_PLUGINS = "gst-plugins-ugly-mpeg2dec \ | ||
| 347 | gst-plugins-ugly-mpegstream gst-plugins-bad-mpegvideoparse" | ||
| 348 | LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly commercial_gst-plugins-bad commercial_qmmp" | ||
| 349 | </literallayout> | ||
| 350 | Of course, you could also create a matching whitelist | ||
| 351 | for those components using the more general "commercial" | ||
| 352 | in the whitelist, but that would also enable all the | ||
| 353 | other packages with | ||
| 354 | <link linkend='var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></link> | ||
| 355 | containing "commercial", which you may or may not want: | ||
| 356 | <literallayout class='monospaced'> | ||
| 357 | LICENSE_FLAGS_WHITELIST = "commercial" | ||
| 358 | </literallayout> | ||
| 359 | </para> | ||
| 360 | |||
| 361 | <para> | ||
| 362 | Specifying audio and video plug-ins as part of the | ||
| 363 | <filename>COMMERCIAL_AUDIO_PLUGINS</filename> and | ||
| 364 | <filename>COMMERCIAL_VIDEO_PLUGINS</filename> statements | ||
| 365 | (along with the enabling | ||
| 366 | <filename>LICENSE_FLAGS_WHITELIST</filename>) includes the | ||
| 367 | plug-ins or components into built images, thus adding | ||
| 368 | support for media formats or components. | ||
| 369 | </para> | ||
| 370 | </section> | ||
| 371 | </section> | ||
| 372 | </section> | ||
| 373 | </chapter> | 16 | </chapter> |
| 374 | <!-- | 17 | <!-- |
| 375 | vim: expandtab tw=80 ts=4 | 18 | vim: expandtab tw=80 ts=4 |
