From 2854015f709ea342d0f5d3dc44c9fd1f638302f8 Mon Sep 17 00:00:00 2001 From: Antonin Godard Date: Wed, 27 Nov 2024 17:01:18 +0100 Subject: 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 (From yocto-docs rev: 1c60116c666a742838129f0b83007d81f3c0e05d) Signed-off-by: Antonin Godard (cherry picked from commit 305f024bf99ba02b153eed0cebe3d36594868497) Signed-off-by: Antonin Godard Signed-off-by: Steve Sakoman --- documentation/ref-manual/classes.rst | 45 ++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 17 deletions(-) (limited to 'documentation') diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst index b92f4e4f20..1f861328fe 100644 --- a/documentation/ref-manual/classes.rst +++ b/documentation/ref-manual/classes.rst @@ -159,27 +159,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. -.. note:: +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:: - 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 = "file://somepackage.tar.xz;subdir=${BP}" - SRC_URI = "git://example.com/downloads/somepackage.rpm;branch=main;subpath=${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/.so.`` to be installed in :term:`D` correctly. + +.. note:: - 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 ` + depending on the file extension. .. _ref-classes-binconfig: -- cgit v1.2.3-54-g00ecf