documentation: remove references to prelink support

Fixing documentation and updating examples containing "prelink"
in their output.

(From yocto-docs rev: 8927b8fff55fac1bd1fefcff2d16141dbd1ebc51)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Michael Opdenacker
2022-02-14 17:20:08 +01:00
committed by Richard Purdie
parent 0966ba1ebb
commit 6df5aa3475
6 changed files with 45 additions and 96 deletions

View File

@@ -2534,13 +2534,6 @@ doing the following:
where you have installed them and whether those files are in
different locations than the defaults.
.. note::
If image prelinking is enabled (e.g. :ref:`image-prelink <ref-classes-image-prelink>` is in :term:`USER_CLASSES`
which it is by default), prelink will change the binaries in the generated images
and this often catches people out. Remove that class to ensure binaries are
preserved exactly if that is necessary.
Following Recipe Style Guidelines
---------------------------------
@@ -8273,26 +8266,39 @@ in a format suitable for use in global configuration (e.g.,
output from this command::
$ buildhistory-collect-srcrevs -a
# i586-poky-linux
SRCREV:pn-glibc = "b8079dd0d360648e4e8de48656c5c38972621072"
SRCREV:pn-glibc-initial = "b8079dd0d360648e4e8de48656c5c38972621072"
SRCREV:pn-opkg-utils = "53274f087565fd45d8452c5367997ba6a682a37a"
SRCREV:pn-kmod = "fd56638aed3fe147015bfa10ed4a5f7491303cb4"
# x86_64-linux
SRCREV:pn-gtk-doc-stub-native = "1dea266593edb766d6d898c79451ef193eb17cfa"
SRCREV:pn-dtc-native = "65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf"
SRCREV:pn-update-rc.d-native = "eca680ddf28d024954895f59a241a622dd575c11"
SRCREV_glibc:pn-cross-localedef-native = "b8079dd0d360648e4e8de48656c5c38972621072"
SRCREV_localedef:pn-cross-localedef-native = "c833367348d39dad7ba018990bfdaffaec8e9ed3"
SRCREV:pn-prelink-native = "faa069deec99bf61418d0bab831c83d7c1b797ca"
SRCREV:pn-opkg-utils-native = "53274f087565fd45d8452c5367997ba6a682a37a"
SRCREV:pn-kern-tools-native = "23345b8846fe4bd167efdf1bd8a1224b2ba9a5ff"
SRCREV:pn-kmod-native = "fd56638aed3fe147015bfa10ed4a5f7491303cb4"
# qemux86-poky-linux
SRCREV_machine:pn-linux-yocto = "38cd560d5022ed2dbd1ab0dca9642e47c98a0aa1"
SRCREV_meta:pn-linux-yocto = "a227f20eff056e511d504b2e490f3774ab260d6f"
# all-poky-linux
SRCREV:pn-update-rc.d = "eca680ddf28d024954895f59a241a622dd575c11"
SRCREV:pn-ca-certificates = "07de54fdcc5806bde549e1edf60738c6bccf50e8"
SRCREV:pn-update-rc.d = "8636cf478d426b568c1be11dbd9346f67e03adac"
# core2-64-poky-linux
SRCREV:pn-binutils = "87d4632d36323091e731eb07b8aa65f90293da66"
SRCREV:pn-btrfs-tools = "8ad326b2f28c044cb6ed9016d7c3285e23b673c8"
SRCREV_bzip2-tests:pn-bzip2 = "f9061c030a25de5b6829e1abf373057309c734c0"
SRCREV:pn-e2fsprogs = "02540dedd3ddc52c6ae8aaa8a95ce75c3f8be1c0"
SRCREV:pn-file = "504206e53a89fd6eed71aeaf878aa3512418eab1"
SRCREV_glibc:pn-glibc = "24962427071fa532c3c48c918e9d64d719cc8a6c"
SRCREV:pn-gnome-desktop-testing = "e346cd4ed2e2102c9b195b614f3c642d23f5f6e7"
SRCREV:pn-init-system-helpers = "dbd9197569c0935029acd5c9b02b84c68fd937ee"
SRCREV:pn-kmod = "b6ecfc916a17eab8f93be5b09f4e4f845aabd3d1"
SRCREV:pn-libnsl2 = "82245c0c58add79a8e34ab0917358217a70e5100"
SRCREV:pn-libseccomp = "57357d2741a3b3d3e8425889a6b79a130e0fa2f3"
SRCREV:pn-libxcrypt = "50cf2b6dd4fdf04309445f2eec8de7051d953abf"
SRCREV:pn-ncurses = "51d0fd9cc3edb975f04224f29f777f8f448e8ced"
SRCREV:pn-procps = "19a508ea121c0c4ac6d0224575a036de745eaaf8"
SRCREV:pn-psmisc = "5fab6b7ab385080f1db725d6803136ec1841a15f"
SRCREV:pn-ptest-runner = "bcb82804daa8f725b6add259dcef2067e61a75aa"
SRCREV:pn-shared-mime-info = "18e558fa1c8b90b86757ade09a4ba4d6a6cf8f70"
SRCREV:pn-zstd = "e47e674cd09583ff0503f0f6defd6d23d8b718d3"
# qemux86_64-poky-linux
SRCREV_machine:pn-linux-yocto = "20301aeb1a64164b72bc72af58802b315e025c9c"
SRCREV_meta:pn-linux-yocto = "2d38a472b21ae343707c8bd64ac68a9eaca066a0"
# x86_64-linux
SRCREV:pn-binutils-cross-x86_64 = "87d4632d36323091e731eb07b8aa65f90293da66"
SRCREV_glibc:pn-cross-localedef-native = "24962427071fa532c3c48c918e9d64d719cc8a6c"
SRCREV_localedef:pn-cross-localedef-native = "794da69788cbf9bf57b59a852f9f11307663fa87"
SRCREV:pn-debianutils-native = "de14223e5bffe15e374a441302c528ffc1cbed57"
SRCREV:pn-libmodulemd-native = "ee80309bc766d781a144e6879419b29f444d94eb"
SRCREV:pn-virglrenderer-native = "363915595e05fb252e70d6514be2f0c0b5ca312b"
SRCREV:pn-zstd-native = "e47e674cd09583ff0503f0f6defd6d23d8b718d3"
.. note::
@@ -8354,21 +8360,18 @@ Here is an example of ``image-info.txt``:
.. code-block:: none
DISTRO = poky
DISTRO_VERSION = 1.7
USER_CLASSES = buildstats image-prelink
IMAGE_CLASSES = image_types
DISTRO_VERSION = 3.4+snapshot-a0245d7be08f3d24ea1875e9f8872aa6bbff93be
USER_CLASSES = buildstats
IMAGE_CLASSES = qemuboot qemuboot license_image
IMAGE_FEATURES = debug-tweaks
IMAGE_LINGUAS =
IMAGE_INSTALL = packagegroup-core-boot run-postinsts
IMAGE_INSTALL = packagegroup-core-boot speex speexdsp
BAD_RECOMMENDATIONS =
NO_RECOMMENDATIONS =
PACKAGE_EXCLUDE =
ROOTFS_POSTPROCESS_COMMAND = write_package_manifest; license_create_manifest; \
write_image_manifest ; buildhistory_list_installed_image ; \
buildhistory_get_image_installed ; ssh_allow_empty_password; \
postinst_enable_logging; rootfs_update_timestamp ; ssh_disable_dns_lookup ;
IMAGE_POSTPROCESS_COMMAND = buildhistory_get_imageinfo ;
IMAGESIZE = 6900
ROOTFS_POSTPROCESS_COMMAND = write_package_manifest; license_create_manifest; cve_check_write_rootfs_manifest; ssh_allow_empty_password; ssh_allow_root_login; postinst_enable_logging; rootfs_update_timestamp; write_image_test_data; empty_var_volatile; sort_passwd; rootfs_reproducible;
IMAGE_POSTPROCESS_COMMAND = buildhistory_get_imageinfo ;
IMAGESIZE = 9265
Other than ``IMAGESIZE``,
which is the total size of the files in the image in Kbytes, the

View File

@@ -1036,12 +1036,10 @@ for example, to determine whether or not to run specific tests. See the
:term:`IMAGE_MANIFEST`
variable for additional information.
Optimizing processes that are run across the image include ``mklibs``,
``prelink``, and any other post-processing commands as defined by the
Optimizing processes that are run across the image include ``mklibs``
and any other post-processing commands as defined by the
:term:`ROOTFS_POSTPROCESS_COMMAND`
variable. The ``mklibs`` process optimizes the size of the libraries,
while the ``prelink`` process optimizes the dynamic linking of shared
libraries to reduce start up time of executables.
variable. The ``mklibs`` process optimizes the size of the libraries.
After the root filesystem is built, processing begins on the image
through the :ref:`ref-tasks-image`

View File

@@ -387,39 +387,6 @@ Yocto Project:
You can learn more about the AutoBuilder used by the Yocto Project
Autobuilder :doc:`here </test-manual/understand-autobuilder>`.
- *Cross-Prelink:* Prelinking is the process of pre-computing the load
addresses and link tables generated by the dynamic linker as compared
to doing this at runtime. Doing this ahead of time results in
performance improvements when the application is launched and reduced
memory usage for libraries shared by many applications.
Historically, cross-prelink is a variant of prelink, which was
conceived by `Jakub
Jelínek <https://people.redhat.com/jakub/prelink.pdf>`__ a number of
years ago. Both prelink and cross-prelink are maintained in the same
repository albeit on separate branches. By providing an emulated
runtime dynamic linker (i.e. ``glibc``-derived ``ld.so`` emulation),
the cross-prelink project extends the prelink software's ability to
prelink a sysroot environment. Additionally, the cross-prelink
software enables the ability to work in sysroot style environments.
The dynamic linker determines standard load address calculations
based on a variety of factors such as mapping addresses, library
usage, and library function conflicts. The prelink tool uses this
information, from the dynamic linker, to determine unique load
addresses for executable and linkable format (ELF) binaries that are
shared libraries and dynamically linked. The prelink tool modifies
these ELF binaries with the pre-computed information. The result is
faster loading and often lower memory consumption because more of the
library code can be re-used from shared Copy-On-Write (COW) pages.
The original upstream prelink project only supports running prelink
on the end target device due to the reliance on the target device's
dynamic linker. This restriction causes issues when developing a
cross-compiled system. The cross-prelink adds a synthesized dynamic
loader that runs on the host, thus permitting cross-prelinking
without ever having to run on a read-write target filesystem.
- *Pseudo:* Pseudo is the Yocto Project implementation of
`fakeroot <http://man.he.net/man1/fakeroot>`__, which is used to run
commands in an environment that seemingly has root privileges.

View File

@@ -953,21 +953,6 @@ specified by :term:`EFI_PROVIDER` if
Normally, you do not use this class directly. Instead, you add "live" to
:term:`IMAGE_FSTYPES`.
.. _ref-classes-image-prelink:
``image-prelink.bbclass``
=========================
The ``image-prelink`` class enables the use of the ``prelink`` utility
during the :ref:`ref-tasks-rootfs` task, which optimizes
the dynamic linking of shared libraries to reduce executable startup
time.
By default, the class is enabled in the ``local.conf.template`` using
the :term:`USER_CLASSES` variable as follows::
USER_CLASSES ?= "buildstats image-prelink"
.. _ref-classes-insane:
``insane.bbclass``

View File

@@ -455,7 +455,4 @@ changing it?
**A:** The first most obvious change is the system stripping debug symbols from
it. Setting :term:`INHIBIT_PACKAGE_STRIP` to stop debug symbols being stripped and/or
:term:`INHIBIT_PACKAGE_DEBUG_SPLIT` to stop debug symbols being split into a separate
file will ensure the binary is unchanged. The other less obvious thing that can
happen is prelinking of the image. This is set by default in local.conf via
:term:`USER_CLASSES` which can contain 'image-prelink'. If you remove that, the
image will not be prelinked meaning the binaries would be unchanged.
file will ensure the binary is unchanged.

View File

@@ -8537,12 +8537,11 @@ system and gives an overview of their function and contents.
:term:`USER_CLASSES`
A list of classes to globally inherit. These classes are used by the
OpenEmbedded build system to enable extra features (e.g.
``buildstats``, ``image-prelink``, and so forth).
OpenEmbedded build system to enable extra features.
The default list is set in your ``local.conf`` file::
USER_CLASSES ?= "buildstats image-prelink"
USER_CLASSES ?= "buildstats"
For more information, see
``meta-poky/conf/local.conf.sample`` in the :term:`Source Directory`.