ref-manual: classes: fix bin_package description

The previous bin_package description was confusing: it would instruct to
use the git fetcher to extract the content of an RPM package using the
`subpath` option - but that's not possible as the git fetcher can be
used to clone a repository but not to do the extraction.

Update the description by telling what it really does and what it
doesn't do, and by giving an HTTPS+RPM example.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: e201ee883c152555ef4c9bd3fa31c3eb96f6dc2f)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 305f024bf99ba02b153eed0cebe3d36594868497)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
Antonin Godard 2024-11-27 17:01:18 +01:00 committed by Steve Sakoman
parent e4ba8cd69f
commit 0062627f2f

View File

@ -153,27 +153,38 @@ software that includes bash-completion data.
``bin_package``
===============
The :ref:`ref-classes-bin-package` class is a helper class for recipes that extract the
contents of a binary package (e.g. an RPM) and install those contents
rather than building the binary from source. The binary package is
extracted and new packages in the configured output package format are
created. Extraction and installation of proprietary binaries is a good
example use for this class.
The :ref:`ref-classes-bin-package` class is a helper class for recipes, that
disables the :ref:`ref-tasks-configure` and :ref:`ref-tasks-compile` tasks and
copies the content of the :term:`S` directory into the :term:`D` directory. This
is useful for installing binary packages (e.g. RPM packages) by passing the
package in the :term:`SRC_URI` variable and inheriting this class.
For RPMs and other packages that do not contain a subdirectory, you should set
the :term:`SRC_URI` option ``subdir`` to :term:`BP` so that the contents are
extracted to the directory expected by the default value of :term:`S`. For
example::
SRC_URI = "https://example.com/downloads/somepackage.rpm;subdir=${BP}"
This class can also be used for tarballs. For example::
SRC_URI = "file://somepackage.tar.xz;subdir=${BP}"
The :ref:`ref-classes-bin-package` class will copy the extracted content of the
tarball from :term:`S` to :term:`D`.
This class assumes that the content of the package as installed in :term:`S`
mirrors the expected layout once installed on the target, which is generally the
case for binary packages. For example, an RPM package for a library would
usually contain the ``usr/lib`` directory, and should be extracted to
``${S}/usr/lib/<library>.so.<version>`` to be installed in :term:`D` correctly.
.. note::
For RPMs and other packages that do not contain a subdirectory, you
should specify an appropriate fetcher parameter to point to the
subdirectory. For example, if BitBake is using the Git fetcher (``git://``),
the "subpath" parameter limits the checkout to a specific subpath
of the tree. Here is an example where ``${BP}`` is used so that the files
are extracted into the subdirectory expected by the default value of
:term:`S`::
SRC_URI = "git://example.com/downloads/somepackage.rpm;branch=main;subpath=${BP}"
See the ":ref:`bitbake-user-manual/bitbake-user-manual-fetching:fetchers`" section in the BitBake User Manual for
more information on supported BitBake Fetchers.
The extraction of the package passed in :term:`SRC_URI` is not handled by the
:ref:`ref-classes-bin-package` class, but rather by the appropriate
:ref:`fetcher <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
depending on the file extension.
.. _ref-classes-binconfig: