Drop the icecc class and related variables

Dropped by commit ecf8c386cf83 ("classes/recipes-devtools: Drop icecc
from OE-Core") in OE-Core.

Remove documentation for the class and the related variables. Remove the
references to this class.

(From yocto-docs rev: 30c9413c5106bcbcc1600ef16b8d0cece86d8158)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Antonin Godard
2025-07-29 11:56:40 +02:00
committed by Richard Purdie
parent 16d3f5b3b0
commit a15109ab52
4 changed files with 9 additions and 168 deletions

View File

@@ -33,11 +33,11 @@ The following variables have changed their names:
- ``BB_SETSCENE_ENFORCE_WHITELIST`` became ``BB_SETSCENE_ENFORCE_IGNORE_TASKS``
- ``CVE_CHECK_PN_WHITELIST`` became :term:`CVE_CHECK_SKIP_RECIPE`
- ``CVE_CHECK_WHITELIST`` became :term:`CVE_CHECK_IGNORE`
- ``ICECC_USER_CLASS_BL`` became :term:`ICECC_CLASS_DISABLE`
- ``ICECC_SYSTEM_CLASS_BL`` became :term:`ICECC_CLASS_DISABLE`
- ``ICECC_USER_PACKAGE_WL`` became :term:`ICECC_RECIPE_ENABLE`
- ``ICECC_USER_PACKAGE_BL`` became :term:`ICECC_RECIPE_DISABLE`
- ``ICECC_SYSTEM_PACKAGE_BL`` became :term:`ICECC_RECIPE_DISABLE`
- ``ICECC_USER_CLASS_BL`` became ``ICECC_CLASS_DISABLE``
- ``ICECC_SYSTEM_CLASS_BL`` became ``ICECC_CLASS_DISABLE``
- ``ICECC_USER_PACKAGE_WL`` became ``ICECC_RECIPE_ENABLE``
- ``ICECC_USER_PACKAGE_BL`` became ``ICECC_RECIPE_DISABLE``
- ``ICECC_SYSTEM_PACKAGE_BL`` became ``ICECC_RECIPE_DISABLE``
- ``LICENSE_FLAGS_WHITELIST`` became :term:`LICENSE_FLAGS_ACCEPTED`
- ``MULTI_PROVIDER_WHITELIST`` became :term:`BB_MULTI_PROVIDER_ALLOWED`
- ``PNBLACKLIST`` became :term:`SKIP_RECIPE`

View File

@@ -1143,80 +1143,6 @@ The :ref:`ref-classes-gzipnative` class enables the use of different native vers
``gzip`` and ``pigz`` rather than the versions of these tools from the
build host.
.. _ref-classes-icecc:
``icecc``
=========
The :ref:`ref-classes-icecc` class supports
`Icecream <https://github.com/icecc/icecream>`__, which facilitates
taking compile jobs and distributing them among remote machines.
The class stages directories with symlinks from ``gcc`` and ``g++`` to
``icecc``, for both native and cross compilers. Depending on each
configure or compile, the OpenEmbedded build system adds the directories
at the head of the ``PATH`` list and then sets the ``ICECC_CXX`` and
``ICECC_CC`` variables, which are the paths to the ``g++`` and ``gcc``
compilers, respectively.
For the cross compiler, the class creates a ``tar.gz`` file that
contains the Yocto Project toolchain and sets ``ICECC_VERSION``, which
is the version of the cross-compiler used in the cross-development
toolchain, accordingly.
The class handles all three different compile stages (i.e native,
cross-kernel and target) and creates the necessary environment
``tar.gz`` file to be used by the remote machines. The class also
supports SDK generation.
If :term:`ICECC_PATH` is not set in your
``local.conf`` file, then the class tries to locate the ``icecc`` binary
using ``which``. If :term:`ICECC_ENV_EXEC` is set
in your ``local.conf`` file, the variable should point to the
``icecc-create-env`` script provided by the user. If you do not point to
a user-provided script, the build system uses the default script
provided by the recipe :oe_git:`icecc-create-env_0.1.bb
</openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>`.
.. note::
This script is a modified version and not the one that comes with
``icecream``.
If you do not want the Icecream distributed compile support to apply to
specific recipes or classes, you can ask them to be ignored by Icecream
by listing the recipes and classes using the
:term:`ICECC_RECIPE_DISABLE` and
:term:`ICECC_CLASS_DISABLE` variables,
respectively, in your ``local.conf`` file. Doing so causes the
OpenEmbedded build system to handle these compilations locally.
Additionally, you can list recipes using the
:term:`ICECC_RECIPE_ENABLE` variable in
your ``local.conf`` file to force ``icecc`` to be enabled for recipes
using an empty :term:`PARALLEL_MAKE` variable.
Inheriting the :ref:`ref-classes-icecc` class changes all sstate signatures.
Consequently, if a development team has a dedicated build system that
populates :term:`SSTATE_MIRRORS` and they want to
reuse sstate from :term:`SSTATE_MIRRORS`, then all developers and the build
system need to either inherit the :ref:`ref-classes-icecc` class or nobody should.
At the distribution level, you can inherit the :ref:`ref-classes-icecc` class to be
sure that all builders start with the same sstate signatures. After
inheriting the class, you can then disable the feature by setting the
:term:`ICECC_DISABLED` variable to "1" as follows::
INHERIT_DISTRO:append = " icecc"
ICECC_DISABLED ??= "1"
This practice
makes sure everyone is using the same signatures but also requires
individuals that do want to use Icecream to enable the feature
individually as follows in your ``local.conf`` file::
ICECC_DISABLED = ""
.. _ref-classes-image:
``image``

View File

@@ -9,7 +9,7 @@ system and gives an overview of their function and contents.
:term:`A <ABIEXTENSION>` :term:`B` :term:`C <CACHE>`
:term:`D` :term:`E <EFI_PROVIDER>` :term:`F <FAKEROOT>`
:term:`G <GCCPIE>` :term:`H <HGDIR>` :term:`I <ICECC_CLASS_DISABLE>`
:term:`G <GCCPIE>` :term:`H <HGDIR>` :term:`I <IMAGE_BASENAME>`
:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>`
:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P`
:term:`Q <QA_EMPTY_DIRS>` :term:`R <RANLIB>` :term:`S` :term:`T`
@@ -2686,7 +2686,7 @@ system and gives an overview of their function and contents.
:ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
default value::
ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc"
ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory"
Some classes are not generally applicable within the extensible SDK
context. You can use this variable to disable those classes.
@@ -3818,91 +3818,6 @@ system and gives an overview of their function and contents.
:term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can
use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools.
:term:`ICECC_CLASS_DISABLE`
Identifies user classes that you do not want the Icecream distributed
compile support to consider. This variable is used by the
:ref:`ref-classes-icecc` class. You set this variable in
your ``local.conf`` file.
When you list classes using this variable, the recipes inheriting
those classes will not benefit from distributed compilation across
remote hosts. Instead they will be built locally.
:term:`ICECC_DISABLED`
Disables or enables the ``icecc`` (Icecream) function. For more
information on this function and best practices for using this
variable, see the ":ref:`ref-classes-icecc`"
section.
Setting this variable to "1" in your ``local.conf`` disables the
function::
ICECC_DISABLED ??= "1"
To enable the function, set the variable as follows::
ICECC_DISABLED = ""
:term:`ICECC_ENV_EXEC`
Points to the ``icecc-create-env`` script that you provide. This
variable is used by the :ref:`ref-classes-icecc` class. You
set this variable in your ``local.conf`` file.
If you do not point to a script that you provide, the OpenEmbedded
build system uses the default script provided by the
:oe_git:`icecc-create-env_0.1.bb
</openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>`
recipe, which is a modified version and not the one that comes with
``icecream``.
:term:`ICECC_PARALLEL_MAKE`
Extra options passed to the ``make`` command during the
:ref:`ref-tasks-compile` task that specify parallel
compilation. This variable usually takes the form of "-j x", where x
represents the maximum number of parallel threads ``make`` can run.
.. note::
The options passed affect builds on all enabled machines on the
network, which are machines running the ``iceccd`` daemon.
If your enabled machines support multiple cores, coming up with the
maximum number of parallel threads that gives you the best
performance could take some experimentation since machine speed,
network lag, available memory, and existing machine loads can all
affect build time. Consequently, unlike the
:term:`PARALLEL_MAKE` variable, there is no
rule-of-thumb for setting :term:`ICECC_PARALLEL_MAKE` to achieve optimal
performance.
If you do not set :term:`ICECC_PARALLEL_MAKE`, the build system does not
use it (i.e. the system does not detect and assign the number of
cores as is done with :term:`PARALLEL_MAKE`).
:term:`ICECC_PATH`
The location of the ``icecc`` binary. You can set this variable in
your ``local.conf`` file. If your ``local.conf`` file does not define
this variable, the :ref:`ref-classes-icecc` class attempts
to define it by locating ``icecc`` using ``which``.
:term:`ICECC_RECIPE_DISABLE`
Identifies user recipes that you do not want the Icecream distributed
compile support to consider. This variable is used by the
:ref:`ref-classes-icecc` class. You set this variable in
your ``local.conf`` file.
When you list recipes using this variable, you are excluding them
from distributed compilation across remote hosts. Instead they will
be built locally.
:term:`ICECC_RECIPE_ENABLE`
Identifies user recipes that use an empty
:term:`PARALLEL_MAKE` variable that you want to
force remote distributed compilation on using the Icecream
distributed compile support. This variable is used by the
:ref:`ref-classes-icecc` class. You set this variable in
your ``local.conf`` file.
:term:`IMAGE_BASENAME`
The base name of image output files. This variable defaults to the
recipe name (``${``\ :term:`PN`\ ``}``).

View File

@@ -48,8 +48,8 @@ build system applies them against ``local.conf`` and ``auto.conf``:
:term:`ESDK_CLASS_INHERIT_DISABLE` are disabled. Using
:term:`ESDK_CLASS_INHERIT_DISABLE` to disable these classes is the typical
method to disable classes that are problematic or unnecessary in the SDK
context. The default value disables the
:ref:`ref-classes-buildhistory` and :ref:`ref-classes-icecc` classes.
context. The default value disables the :ref:`ref-classes-buildhistory`
class.
Additionally, the contents of ``conf/sdk-extra.conf``, when present, are
appended to the end of ``conf/local.conf`` within the produced SDK,