diff options
author | jmbills <jason.m.bills@intel.com> | 2021-08-03 01:45:08 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-03 01:45:08 +0300 |
commit | 10ad77d5bc86709d8ff7f95e7040e39f1c153903 (patch) | |
tree | 307cedb87f4c0a329740c55ac364ed489d1d8fc2 /poky | |
parent | c6b1c6ba7a01b7987d65d61c262c44c320193108 (diff) | |
parent | 67327ddc580cb9a85219a534844832a1682780d4 (diff) | |
download | openbmc-10ad77d5bc86709d8ff7f95e7040e39f1c153903.tar.xz |
Update
Diffstat (limited to 'poky')
1016 files changed, 16798 insertions, 21328 deletions
diff --git a/poky/README.hardware b/poky/README.hardware deleted file mode 120000 index 8b6258d49..000000000 --- a/poky/README.hardware +++ /dev/null @@ -1 +0,0 @@ -meta-yocto-bsp/README.hardware
\ No newline at end of file diff --git a/poky/README.hardware.md b/poky/README.hardware.md new file mode 120000 index 000000000..0d0745f46 --- /dev/null +++ b/poky/README.hardware.md @@ -0,0 +1 @@ +meta-yocto-bsp/README.hardware.md
\ No newline at end of file diff --git a/poky/README.poky b/poky/README.poky deleted file mode 120000 index 1877dca10..000000000 --- a/poky/README.poky +++ /dev/null @@ -1 +0,0 @@ -meta-poky/README.poky
\ No newline at end of file diff --git a/poky/README.poky.md b/poky/README.poky.md new file mode 120000 index 000000000..15b27a322 --- /dev/null +++ b/poky/README.poky.md @@ -0,0 +1 @@ +meta-poky/README.poky.md
\ No newline at end of file diff --git a/poky/bitbake/bin/bitbake b/poky/bitbake/bin/bitbake index 712755087..f0ff2400f 100755 --- a/poky/bitbake/bin/bitbake +++ b/poky/bitbake/bin/bitbake @@ -26,7 +26,7 @@ from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException if sys.getfilesystemencoding() != "utf-8": sys.exit("Please use a locale setting which supports UTF-8 (such as LANG=en_US.UTF-8).\nPython can't change the filesystem locale after loading so we need a UTF-8 when Python starts or things won't work.") -__version__ = "1.50.0" +__version__ = "1.51.0" if __name__ == "__main__": if __version__ != bb.__version__: diff --git a/poky/bitbake/bin/bitbake-getvar b/poky/bitbake/bin/bitbake-getvar new file mode 100755 index 000000000..942321925 --- /dev/null +++ b/poky/bitbake/bin/bitbake-getvar @@ -0,0 +1,48 @@ +#! /usr/bin/env python3 +# +# Copyright (C) 2021 Richard Purdie +# +# SPDX-License-Identifier: GPL-2.0-only +# + +import argparse +import io +import os +import sys + +bindir = os.path.dirname(__file__) +topdir = os.path.dirname(bindir) +sys.path[0:0] = [os.path.join(topdir, 'lib')] + +import bb.tinfoil + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Bitbake Query Variable") + parser.add_argument("variable", help="variable name to query") + parser.add_argument("-r", "--recipe", help="Recipe name to query", default=None, required=False) + parser.add_argument('-u', '--unexpand', help='Do not expand the value (with --value)', action="store_true") + parser.add_argument('-f', '--flag', help='Specify a variable flag to query (with --value)', default=None) + parser.add_argument('--value', help='Only report the value, no history and no variable name', action="store_true") + args = parser.parse_args() + + if args.unexpand and not args.value: + print("--unexpand only makes sense with --value") + sys.exit(1) + + if args.flag and not args.value: + print("--flag only makes sense with --value") + sys.exit(1) + + with bb.tinfoil.Tinfoil(tracking=True) as tinfoil: + if args.recipe: + tinfoil.prepare(quiet=2) + d = tinfoil.parse_recipe(args.recipe) + else: + tinfoil.prepare(quiet=2, config_only=True) + d = tinfoil.config_data + if args.flag: + print(str(d.getVarFlag(args.variable, args.flag, expand=(not args.unexpand)))) + elif args.value: + print(str(d.getVar(args.variable, expand=(not args.unexpand)))) + else: + bb.data.emit_var(args.variable, d=d, all=True) diff --git a/poky/bitbake/bin/bitbake-server b/poky/bitbake/bin/bitbake-server index ffbc7894e..8e5394736 100755 --- a/poky/bitbake/bin/bitbake-server +++ b/poky/bitbake/bin/bitbake-server @@ -26,12 +26,10 @@ readypipeinfd = int(sys.argv[3]) logfile = sys.argv[4] lockname = sys.argv[5] sockname = sys.argv[6] -timeout = sys.argv[7] +timeout = float(sys.argv[7]) xmlrpcinterface = (sys.argv[8], int(sys.argv[9])) if xmlrpcinterface[0] == "None": xmlrpcinterface = (None, xmlrpcinterface[1]) -if timeout == "None": - timeout = None # Replace standard fds with our own with open('/dev/null', 'r') as si: diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst index 56abf7735..84d65fa9c 100644 --- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst +++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst @@ -16,7 +16,7 @@ data, or simply return information about the execution environment. This chapter describes BitBake's execution process from start to finish when you use it to create an image. The execution process is launched -using the following command form: :: +using the following command form:: $ bitbake target @@ -32,7 +32,7 @@ the BitBake command and its options, see ":ref:`The BitBake Command your project's ``local.conf`` configuration file. A common method to determine this value for your build host is to run - the following: :: + the following:: $ grep processor /proc/cpuinfo @@ -139,7 +139,7 @@ in ``BBPATH`` in the same way as configuration files. A good way to get an idea of the configuration files and the class files used in your execution environment is to run the following BitBake -command: :: +command:: $ bitbake -e > mybb.log @@ -155,7 +155,7 @@ execution environment. pair of curly braces in a shell function, the closing curly brace must not be located at the start of the line without leading spaces. - Here is an example that causes BitBake to produce a parsing error: :: + Here is an example that causes BitBake to produce a parsing error:: fakeroot create_shar() { cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh @@ -185,7 +185,7 @@ During the configuration phase, BitBake will have set :term:`BBFILES`. BitBake now uses it to construct a list of recipes to parse, along with any append files (``.bbappend``) to apply. ``BBFILES`` is a space-separated list of available files and -supports wildcards. An example would be: :: +supports wildcards. An example would be:: BBFILES = "/path/to/bbfiles/*.bb /path/to/appends/*.bbappend" @@ -206,7 +206,7 @@ parses in order any append files found in ``BBFILES``. One common convention is to use the recipe filename to define pieces of metadata. For example, in ``bitbake.conf`` the recipe name and version are used to set the variables :term:`PN` and -:term:`PV`: :: +:term:`PV`:: PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}" PV = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}" @@ -238,7 +238,7 @@ Recipe file collections exist to allow the user to have multiple repositories of ``.bb`` files that contain the same exact package. For example, one could easily use them to make one's own local copy of an upstream repository, but with custom modifications that one does not -want upstream. Here is an example: :: +want upstream. Here is an example:: BBFILES = "/stuff/openembedded/*/*.bb /stuff/openembedded.modified/*/*.bb" BBFILE_COLLECTIONS = "upstream local" @@ -270,7 +270,7 @@ variable, which is optional. When a recipe uses ``PROVIDES``, that recipe's functionality can be found under an alternative name or names other than the implicit ``PN`` name. As an example, suppose a recipe named ``keyboard_1.0.bb`` -contained the following: :: +contained the following:: PROVIDES += "fullkeyboard" @@ -291,7 +291,7 @@ needs to prioritize providers by determining provider preferences. A common example in which a target has multiple providers is "virtual/kernel", which is on the ``PROVIDES`` list for each kernel recipe. Each machine often selects the best kernel provider by using a -line similar to the following in the machine configuration file: :: +line similar to the following in the machine configuration file:: PREFERRED_PROVIDER_virtual/kernel = "linux-yocto" @@ -331,7 +331,7 @@ If the first recipe is named ``a_1.1.bb``, then the Thus, if a recipe named ``a_1.2.bb`` exists, BitBake will choose 1.2 by default. However, if you define the following variable in a ``.conf`` -file that BitBake parses, you can change that preference: :: +file that BitBake parses, you can change that preference:: PREFERRED_VERSION_a = "1.1" @@ -498,7 +498,7 @@ to the task. Like the working directory case, situations exist where dependencies should be ignored. For these cases, you can instruct the build process -to ignore a dependency by using a line like the following: :: +to ignore a dependency by using a line like the following:: PACKAGE_ARCHS[vardepsexclude] = "MACHINE" @@ -508,7 +508,7 @@ even if it does reference it. Equally, there are cases where we need to add dependencies BitBake is not able to find. You can accomplish this by using a line like the -following: :: +following:: PACKAGE_ARCHS[vardeps] = "MACHINE" @@ -536,7 +536,7 @@ configuration file, we can give BitBake some extra information to help it construct the basehash. The following statement effectively results in a list of global variable dependency excludes - variables never included in any checksum. This example uses variables from OpenEmbedded -to help illustrate the concept: :: +to help illustrate the concept:: BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \ SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL \ @@ -557,7 +557,7 @@ OpenEmbedded-Core uses: "OEBasic" and "OEBasicHash". By default, there is a dummy "noop" signature handler enabled in BitBake. This means that behavior is unchanged from previous versions. ``OE-Core`` uses the "OEBasicHash" signature handler by default through this setting in the -``bitbake.conf`` file: :: +``bitbake.conf`` file:: BB_SIGNATURE_HANDLER ?= "OEBasicHash" @@ -648,13 +648,6 @@ compiled binary. To handle this, BitBake calls the each successful setscene task to know whether or not it needs to obtain the dependencies of that task. -Finally, after all the setscene tasks have executed, BitBake calls the -function listed in -:term:`BB_SETSCENE_VERIFY_FUNCTION2` -with the list of tasks BitBake thinks has been "covered". The metadata -can then ensure that this list is correct and can inform BitBake that it -wants specific tasks to be run regardless of the setscene result. - You can find more information on setscene metadata in the :ref:`bitbake-user-manual/bitbake-user-manual-metadata:task checksums and setscene` section. diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst index bd6cc0ef2..bd1fb4fc7 100644 --- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst +++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst @@ -27,7 +27,7 @@ and unpacking the files is often optionally followed by patching. Patching, however, is not covered by this module. The code to execute the first part of this process, a fetch, looks -something like the following: :: +something like the following:: src_uri = (d.getVar('SRC_URI') or "").split() fetcher = bb.fetch2.Fetch(src_uri, d) @@ -37,7 +37,7 @@ This code sets up an instance of the fetch class. The instance uses a space-separated list of URLs from the :term:`SRC_URI` variable and then calls the ``download`` method to download the files. -The instantiation of the fetch class is usually followed by: :: +The instantiation of the fetch class is usually followed by:: rootdir = l.getVar('WORKDIR') fetcher.unpack(rootdir) @@ -72,7 +72,7 @@ URLs by looking for source files in a specific search order: For each URL passed to the fetcher, the fetcher calls the submodule that handles that particular URL type. This behavior can be the source of some confusion when you are providing URLs for the ``SRC_URI`` variable. -Consider the following two URLs: :: +Consider the following two URLs:: http://git.yoctoproject.org/git/poky;protocol=git git://git.yoctoproject.org/git/poky;protocol=http @@ -81,7 +81,7 @@ In the former case, the URL is passed to the ``wget`` fetcher, which does not understand "git". Therefore, the latter case is the correct form since the Git fetcher does know how to use HTTP as a transport. -Here are some examples that show commonly used mirror definitions: :: +Here are some examples that show commonly used mirror definitions:: PREMIRRORS ?= "\ bzr://.*/.\* http://somemirror.org/sources/ \\n \ @@ -111,19 +111,19 @@ File integrity is of key importance for reproducing builds. For non-local archive downloads, the fetcher code can verify SHA-256 and MD5 checksums to ensure the archives have been downloaded correctly. You can specify these checksums by using the ``SRC_URI`` variable with the -appropriate varflags as follows: :: +appropriate varflags as follows:: SRC_URI[md5sum] = "value" SRC_URI[sha256sum] = "value" You can also specify the checksums as -parameters on the ``SRC_URI`` as shown below: :: +parameters on the ``SRC_URI`` as shown below:: SRC_URI = "http://example.com/foobar.tar.bz2;md5sum=4a8e0f237e961fd7785d19d07fdb994d" If multiple URIs exist, you can specify the checksums either directly as in the previous example, or you can name the URLs. The following syntax -shows how you name the URIs: :: +shows how you name the URIs:: SRC_URI = "http://example.com/foobar.tar.bz2;name=foo" SRC_URI[foo.md5sum] = 4a8e0f237e961fd7785d19d07fdb994d @@ -163,9 +163,6 @@ govern the behavior of the unpack stage: - *dos:* Applies to ``.zip`` and ``.jar`` files and specifies whether to use DOS line ending conversion on text files. -- *basepath:* Instructs the unpack stage to strip the specified - directories from the source path when unpacking. - - *subdir:* Unpacks the specific URL to the specified subdirectory within the root directory. @@ -204,7 +201,7 @@ time the ``download()`` method is called. If you specify a directory, the entire directory is unpacked. Here are a couple of example URLs, the first relative and the second -absolute: :: +absolute:: SRC_URI = "file://relativefile.patch" SRC_URI = "file:///Users/ich/very_important_software" @@ -225,7 +222,7 @@ downloaded file is useful for avoiding collisions in :term:`DL_DIR` when dealing with multiple files that have the same name. -Some example URLs are as follows: :: +Some example URLs are as follows:: SRC_URI = "http://oe.handhelds.org/not_there.aac" SRC_URI = "ftp://oe.handhelds.org/not_there_as_well.aac" @@ -235,15 +232,13 @@ Some example URLs are as follows: :: Because URL parameters are delimited by semi-colons, this can introduce ambiguity when parsing URLs that also contain semi-colons, - for example: - :: + for example:: SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git;a=snapshot;h=a5dd47" Such URLs should should be modified by replacing semi-colons with '&' - characters: - :: + characters:: SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&a=snapshot&h=a5dd47" @@ -251,8 +246,7 @@ Some example URLs are as follows: :: In most cases this should work. Treating semi-colons and '&' in queries identically is recommended by the World Wide Web Consortium (W3C). Note that due to the nature of the URL, you may have to - specify the name of the downloaded file as well: - :: + specify the name of the downloaded file as well:: SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&a=snapshot&h=a5dd47;downloadfilename=myfile.bz2" @@ -321,7 +315,7 @@ The supported parameters are as follows: - *"port":* The port to which the CVS server connects. -Some example URLs are as follows: :: +Some example URLs are as follows:: SRC_URI = "cvs://CVSROOT;module=mymodule;tag=some-version;method=ext" SRC_URI = "cvs://CVSROOT;module=mymodule;date=20060126;localdir=usethat" @@ -363,7 +357,7 @@ The supported parameters are as follows: username is different than the username used in the main URL, which is passed to the subversion command. -Following are three examples using svn: :: +Following are three examples using svn:: SRC_URI = "svn://myrepos/proj1;module=vip;protocol=http;rev=667" SRC_URI = "svn://myrepos/proj1;module=opie;protocol=svn+ssh" @@ -436,7 +430,7 @@ This fetcher supports the following parameters: parameter implies no branch and only works when the transfer protocol is ``file://``. -Here are some example URLs: :: +Here are some example URLs:: SRC_URI = "git://git.oe.handhelds.org/git/vip.git;tag=version-1" SRC_URI = "git://git.oe.handhelds.org/git/vip.git;protocol=http" @@ -484,7 +478,7 @@ repository. To use this fetcher, make sure your recipe has proper :term:`SRC_URI`, :term:`SRCREV`, and -:term:`PV` settings. Here is an example: :: +:term:`PV` settings. Here is an example:: SRC_URI = "ccrc://cc.example.org/ccrc;vob=/example_vob;module=/example_module" SRCREV = "EXAMPLE_CLEARCASE_TAG" @@ -506,7 +500,7 @@ Following are options for the ``SRC_URI`` statement: The module and vob options are combined to create the load rule in the view config spec. As an example, consider the vob and module values from the SRC_URI statement at the start of this section. Combining those values - results in the following: :: + results in the following:: load /example_vob/example_module @@ -558,7 +552,7 @@ the server's URL and port number, and you can specify a username and password directly in your recipe within ``SRC_URI``. Here is an example that relies on ``P4CONFIG`` to specify the server URL -and port, username, and password, and fetches the Head Revision: :: +and port, username, and password, and fetches the Head Revision:: SRC_URI = "p4://example-depot/main/source/..." SRCREV = "${AUTOREV}" @@ -566,7 +560,7 @@ and port, username, and password, and fetches the Head Revision: :: S = "${WORKDIR}/p4" Here is an example that specifies the server URL and port, username, and -password, and fetches a Revision based on a Label: :: +password, and fetches a Revision based on a Label:: P4PORT = "tcp:p4server.example.net:1666" SRC_URI = "p4://user:passwd@example-depot/main/source/..." @@ -592,7 +586,7 @@ paths locally is desirable, the fetcher supports two parameters: paths locally for the specified location, even in combination with the ``module`` parameter. -Here is an example use of the the ``module`` parameter: :: +Here is an example use of the the ``module`` parameter:: SRC_URI = "p4://user:passwd@example-depot/main;module=source/..." @@ -600,7 +594,7 @@ In this case, the content of the top-level directory ``source/`` will be fetched to ``${P4DIR}``, including the directory itself. The top-level directory will be accesible at ``${P4DIR}/source/``. -Here is an example use of the the ``remotepath`` parameter: :: +Here is an example use of the the ``remotepath`` parameter:: SRC_URI = "p4://user:passwd@example-depot/main;module=source/...;remotepath=keep" @@ -628,7 +622,7 @@ This fetcher supports the following parameters: - *"manifest":* Name of the manifest file (default: ``default.xml``). -Here are some example URLs: :: +Here are some example URLs:: SRC_URI = "repo://REPOROOT;protocol=git;branch=some_branch;manifest=my_manifest.xml" SRC_URI = "repo://REPOROOT;protocol=file;branch=some_branch;manifest=my_manifest.xml" @@ -651,11 +645,11 @@ Such functionality is set by the variable: delegate access to resources, if this variable is set, the Az Fetcher will use it when fetching artifacts from the cloud. -You can specify the AZ_SAS variable as shown below: :: +You can specify the AZ_SAS variable as shown below:: AZ_SAS = "se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>" -Here is an example URL: :: +Here is an example URL:: SRC_URI = "az://<azure-storage-account>.blob.core.windows.net/<foo_container>/<bar_file>" diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst index e3fd32158..a9c33709a 100644 --- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst +++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst @@ -20,7 +20,7 @@ Obtaining BitBake See the :ref:`bitbake-user-manual/bitbake-user-manual-hello:obtaining bitbake` section for information on how to obtain BitBake. Once you have the source code on -your machine, the BitBake directory appears as follows: :: +your machine, the BitBake directory appears as follows:: $ ls -al total 100 @@ -49,7 +49,7 @@ Setting Up the BitBake Environment First, you need to be sure that you can run BitBake. Set your working directory to where your local BitBake files are and run the following -command: :: +command:: $ ./bin/bitbake --version BitBake Build Tool Core version 1.23.0, bitbake version 1.23.0 @@ -61,14 +61,14 @@ The recommended method to run BitBake is from a directory of your choice. To be able to run BitBake from any directory, you need to add the executable binary to your binary to your shell's environment ``PATH`` variable. First, look at your current ``PATH`` variable by -entering the following: :: +entering the following:: $ echo $PATH Next, add the directory location for the BitBake binary to the ``PATH``. Here is an example that adds the ``/home/scott-lenovo/bitbake/bin`` directory to the front of the -``PATH`` variable: :: +``PATH`` variable:: $ export PATH=/home/scott-lenovo/bitbake/bin:$PATH @@ -116,7 +116,7 @@ Following is the complete "Hello World" example. #. **Create a Project Directory:** First, set up a directory for the "Hello World" project. Here is how you can do so in your home - directory: :: + directory:: $ mkdir ~/hello $ cd ~/hello @@ -127,7 +127,7 @@ Following is the complete "Hello World" example. directory is a good way to isolate your project. #. **Run BitBake:** At this point, you have nothing but a project - directory. Run the ``bitbake`` command and see what it does: :: + directory. Run the ``bitbake`` command and see what it does:: $ bitbake The BBPATH variable is not set and bitbake did not @@ -161,7 +161,7 @@ Following is the complete "Hello World" example. ``BBPATH`` variable up in a configuration file for each project. From your shell, enter the following commands to set and export the - ``BBPATH`` variable: :: + ``BBPATH`` variable:: $ BBPATH="projectdirectory" $ export BBPATH @@ -176,7 +176,7 @@ Following is the complete "Hello World" example. shell would. #. **Run BitBake:** Now that you have ``BBPATH`` defined, run the - ``bitbake`` command again: :: + ``bitbake`` command again:: $ bitbake ERROR: Traceback (most recent call last): @@ -208,13 +208,13 @@ Following is the complete "Hello World" example. http://git.openembedded.org/bitbake/tree/conf/bitbake.conf. Use the following commands to create the ``conf`` directory in the - project directory: :: + project directory:: $ mkdir conf From within the ``conf`` directory, use some editor to create the ``bitbake.conf`` so that it contains - the following: :: + the following:: PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}" @@ -251,7 +251,7 @@ Following is the complete "Hello World" example. glossary. #. **Run BitBake:** After making sure that the ``conf/bitbake.conf`` file - exists, you can run the ``bitbake`` command again: :: + exists, you can run the ``bitbake`` command again:: $ bitbake ERROR: Traceback (most recent call last): @@ -278,7 +278,7 @@ Following is the complete "Hello World" example. in the ``classes`` directory of the project (i.e ``hello/classes`` in this example). - Create the ``classes`` directory as follows: :: + Create the ``classes`` directory as follows:: $ cd $HOME/hello $ mkdir classes @@ -291,7 +291,7 @@ Following is the complete "Hello World" example. environments BitBake is supporting. #. **Run BitBake:** After making sure that the ``classes/base.bbclass`` - file exists, you can run the ``bitbake`` command again: :: + file exists, you can run the ``bitbake`` command again:: $ bitbake Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information. @@ -314,7 +314,7 @@ Following is the complete "Hello World" example. Minimally, you need a recipe file and a layer configuration file in your layer. The configuration file needs to be in the ``conf`` directory inside the layer. Use these commands to set up the layer - and the ``conf`` directory: :: + and the ``conf`` directory:: $ cd $HOME $ mkdir mylayer @@ -322,12 +322,12 @@ Following is the complete "Hello World" example. $ mkdir conf Move to the ``conf`` directory and create a ``layer.conf`` file that has the - following: :: + following:: BBPATH .= ":${LAYERDIR}" - BBFILES += "${LAYERDIR}/\*.bb" + BBFILES += "${LAYERDIR}/*.bb" BBFILE_COLLECTIONS += "mylayer" - `BBFILE_PATTERN_mylayer := "^${LAYERDIR_RE}/" + BBFILE_PATTERN_mylayer := "^${LAYERDIR_RE}/" For information on these variables, click on :term:`BBFILES`, :term:`LAYERDIR`, :term:`BBFILE_COLLECTIONS` or :term:`BBFILE_PATTERN_mylayer <BBFILE_PATTERN>` @@ -335,7 +335,7 @@ Following is the complete "Hello World" example. You need to create the recipe file next. Inside your layer at the top-level, use an editor and create a recipe file named - ``printhello.bb`` that has the following: :: + ``printhello.bb`` that has the following:: DESCRIPTION = "Prints Hello World" PN = 'printhello' @@ -356,7 +356,7 @@ Following is the complete "Hello World" example. follow the links to the glossary. #. **Run BitBake With a Target:** Now that a BitBake target exists, run - the command and provide that target: :: + the command and provide that target:: $ cd $HOME/hello $ bitbake printhello @@ -376,7 +376,7 @@ Following is the complete "Hello World" example. ``hello/conf`` for this example). Set your working directory to the ``hello/conf`` directory and then - create the ``bblayers.conf`` file so that it contains the following: :: + create the ``bblayers.conf`` file so that it contains the following:: BBLAYERS ?= " \ /home/<you>/mylayer \ @@ -386,7 +386,7 @@ Following is the complete "Hello World" example. #. **Run BitBake With a Target:** Now that you have supplied the ``bblayers.conf`` file, run the ``bitbake`` command and provide the - target: :: + target:: $ bitbake printhello Parsing recipes: 100% |##################################################################################| diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst index 6f9d39293..b3cea61ff 100644 --- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst +++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst @@ -248,13 +248,13 @@ underlying, similarly-named recipe files. When you name an append file, you can use the "``%``" wildcard character to allow for matching recipe names. For example, suppose you have an -append file named as follows: :: +append file named as follows:: busybox_1.21.%.bbappend That append file would match any ``busybox_1.21.``\ x\ ``.bb`` version of the recipe. So, -the append file would match the following recipe names: :: +the append file would match the following recipe names:: busybox_1.21.1.bb busybox_1.21.2.bb @@ -290,7 +290,7 @@ You can obtain BitBake several different ways: are using. The metadata is generally backwards compatible but not forward compatible. - Here is an example that clones the BitBake repository: :: + Here is an example that clones the BitBake repository:: $ git clone git://git.openembedded.org/bitbake @@ -298,7 +298,7 @@ You can obtain BitBake several different ways: Git repository into a directory called ``bitbake``. Alternatively, you can designate a directory after the ``git clone`` command if you want to call the new directory something other than ``bitbake``. Here - is an example that names the directory ``bbdev``: :: + is an example that names the directory ``bbdev``:: $ git clone git://git.openembedded.org/bitbake bbdev @@ -317,7 +317,7 @@ You can obtain BitBake several different ways: method for getting BitBake. Cloning the repository makes it easier to update as patches are added to the stable branches. - The following example downloads a snapshot of BitBake version 1.17.0: :: + The following example downloads a snapshot of BitBake version 1.17.0:: $ wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz $ tar zxpvf bitbake-1.17.0.tar.gz @@ -347,7 +347,7 @@ execution examples. Usage and syntax ---------------- -Following is the usage and syntax for BitBake: :: +Following is the usage and syntax for BitBake:: $ bitbake -h Usage: bitbake [options] [recipename/target recipe:do_task ...] @@ -469,11 +469,11 @@ default task, which is "build". BitBake obeys inter-task dependencies when doing so. The following command runs the build task, which is the default task, on -the ``foo_1.0.bb`` recipe file: :: +the ``foo_1.0.bb`` recipe file:: $ bitbake -b foo_1.0.bb -The following command runs the clean task on the ``foo.bb`` recipe file: :: +The following command runs the clean task on the ``foo.bb`` recipe file:: $ bitbake -b foo.bb -c clean @@ -497,13 +497,13 @@ functionality, or when there are multiple versions of a recipe. The ``bitbake`` command, when not using "--buildfile" or "-b" only accepts a "PROVIDES". You cannot provide anything else. By default, a recipe file generally "PROVIDES" its "packagename" as shown in the -following example: :: +following example:: $ bitbake foo This next example "PROVIDES" the package name and also uses the "-c" option to tell BitBake to just -execute the ``do_clean`` task: :: +execute the ``do_clean`` task:: $ bitbake -c clean foo @@ -514,7 +514,7 @@ The BitBake command line supports specifying different tasks for individual targets when you specify multiple targets. For example, suppose you had two targets (or recipes) ``myfirstrecipe`` and ``mysecondrecipe`` and you needed BitBake to run ``taskA`` for the first -recipe and ``taskB`` for the second recipe: :: +recipe and ``taskB`` for the second recipe:: $ bitbake myfirstrecipe:do_taskA mysecondrecipe:do_taskB @@ -540,7 +540,7 @@ produce more readable graphs. This way, you can remove from the graph ``DEPENDS`` from inherited classes such as ``base.bbclass``. Here are two examples that create dependency graphs. The second example -omits depends common in OpenEmbedded from the graph: :: +omits depends common in OpenEmbedded from the graph:: $ bitbake -g foo @@ -582,17 +582,17 @@ accomplished by setting the configuration files for ``target1`` and ``target2`` defined in the build directory. The following statement in the ``local.conf`` file both enables BitBake to perform multiple configuration builds and specifies -the two extra multiconfigs: :: +the two extra multiconfigs:: BBMULTICONFIG = "target1 target2" Once the target configuration files are in place and BitBake has been enabled to perform multiple configuration builds, use the following -command form to start the builds: :: +command form to start the builds:: $ bitbake [mc:multiconfigname:]target [[[mc:multiconfigname:]target] ... ] -Here is an example for two extra multiconfigs: ``target1`` and ``target2``: :: +Here is an example for two extra multiconfigs: ``target1`` and ``target2``:: $ bitbake mc::target mc:target1:target mc:target2:target @@ -613,12 +613,12 @@ multiconfig. To enable dependencies in a multiple configuration build, you must declare the dependencies in the recipe using the following statement -form: :: +form:: task_or_package[mcdepends] = "mc:from_multiconfig:to_multiconfig:recipe_name:task_on_which_to_depend" To better show how to use this statement, consider an example with two -multiconfigs: ``target1`` and ``target2``: :: +multiconfigs: ``target1`` and ``target2``:: image_task[mcdepends] = "mc:target1:target2:image2:rootfs_task" @@ -629,7 +629,7 @@ completion of the rootfs_task used to build out image2, which is associated with the "target2" multiconfig. Once you set up this dependency, you can build the "target1" multiconfig -using a BitBake command as follows: :: +using a BitBake command as follows:: $ bitbake mc:target1:image1 @@ -639,7 +639,7 @@ the ``rootfs_task`` for the "target2" multiconfig build. Having a recipe depend on the root filesystem of another build might not seem that useful. Consider this change to the statement in the image1 -recipe: :: +recipe:: image_task[mcdepends] = "mc:target1:target2:image2:image_task" diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst index d4190c26e..20c330e6a 100644 --- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst +++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst @@ -26,7 +26,7 @@ assignment. :: VARIABLE = "value" As expected, if you include leading or -trailing spaces as part of an assignment, the spaces are retained: :: +trailing spaces as part of an assignment, the spaces are retained:: VARIABLE = " value" VARIABLE = "value " @@ -40,7 +40,7 @@ blank space (i.e. these are not the same values). :: You can use single quotes instead of double quotes when setting a variable's value. Doing so allows you to use values that contain the -double quote character: :: +double quote character:: VARIABLE = 'I have a " in my value' @@ -77,7 +77,7 @@ occurs, you can use BitBake to check the actual value of the suspect variable. You can make these checks for both configuration and recipe level changes: -- For configuration changes, use the following: :: +- For configuration changes, use the following:: $ bitbake -e @@ -91,7 +91,7 @@ level changes: Variables that are exported to the environment are preceded by the string "export" in the command's output. -- For recipe changes, use the following: :: +- For recipe changes, use the following:: $ bitbake recipe -e \| grep VARIABLE=" @@ -105,7 +105,7 @@ Outside of :ref:`functions <bitbake-user-manual/bitbake-user-manual-metadata:fun BitBake joins any line ending in a backslash character ("\") with the following line before parsing statements. The most common use for the "\" character is to split -variable assignments over multiple lines, as in the following example: :: +variable assignments over multiple lines, as in the following example:: FOO = "bar \ baz \ @@ -116,7 +116,7 @@ character that follow it are removed when joining lines. Thus, no newline characters end up in the value of ``FOO``. Consider this additional example where the two assignments both assign -"barbaz" to ``FOO``: :: +"barbaz" to ``FOO``:: FOO = "barbaz" FOO = "bar\ @@ -149,7 +149,7 @@ The "=" operator does not immediately expand variable references in the right-hand side. Instead, expansion is deferred until the variable assigned to is actually used. The result depends on the current values of the referenced variables. The following example should clarify this -behavior: :: +behavior:: A = "${B} baz" B = "${C} bar" @@ -177,7 +177,7 @@ Setting a default value (?=) You can use the "?=" operator to achieve a "softer" assignment for a variable. This type of assignment allows you to define a variable if it is undefined when the statement is parsed, but to leave the value alone -if the variable has a value. Here is an example: :: +if the variable has a value. Here is an example:: A ?= "aval" @@ -199,7 +199,7 @@ by using the "??=" operator. This assignment behaves identical to "?=" except that the assignment is made at the end of the parsing process rather than immediately. Consequently, when multiple "??=" assignments exist, the last one is used. Also, any "=" or "?=" assignment will -override the value set with "??=". Here is an example: :: +override the value set with "??=". Here is an example:: A ??= "somevalue" A ??= "someothervalue" @@ -215,7 +215,7 @@ Immediate variable expansion (:=) --------------------------------- The ":=" operator results in a variable's contents being expanded -immediately, rather than when the variable is actually used: :: +immediately, rather than when the variable is actually used:: T = "123" A := "test ${T}" @@ -241,7 +241,7 @@ the "+=" and "=+" operators. These operators insert a space between the current value and prepended or appended value. These operators take immediate effect during parsing. Here are some -examples: :: +examples:: B = "bval" B += "additionaldata" @@ -260,7 +260,7 @@ If you want to append or prepend values without an inserted space, use the ".=" and "=." operators. These operators take immediate effect during parsing. Here are some -examples: :: +examples:: B = "bval" B .= "additionaldata" @@ -278,7 +278,7 @@ style syntax. When you use this syntax, no spaces are inserted. These operators differ from the ":=", ".=", "=.", "+=", and "=+" operators in that their effects are applied at variable expansion time -rather than being immediately applied. Here are some examples: :: +rather than being immediately applied. Here are some examples:: B = "bval" B_append = " additional data" @@ -309,7 +309,7 @@ syntax. Specifying a value for removal causes all occurrences of that value to be removed from the variable. When you use this syntax, BitBake expects one or more strings. -Surrounding spaces and spacing are preserved. Here is an example: :: +Surrounding spaces and spacing are preserved. Here is an example:: FOO = "123 456 789 123456 123 456 123 456" FOO_remove = "123" @@ -334,27 +334,27 @@ An advantage of the override style operations "_append", "_prepend", and "_remove" as compared to the "+=" and "=+" operators is that the override style operators provide guaranteed operations. For example, consider a class ``foo.bbclass`` that needs to add the value "val" to -the variable ``FOO``, and a recipe that uses ``foo.bbclass`` as follows: :: +the variable ``FOO``, and a recipe that uses ``foo.bbclass`` as follows:: inherit foo FOO = "initial" If ``foo.bbclass`` uses the "+=" operator, as follows, then the final value of ``FOO`` will be "initial", which is -not what is desired: :: +not what is desired:: FOO += "val" If, on the other hand, ``foo.bbclass`` uses the "_append" operator, then the final value of ``FOO`` will be -"initial val", as intended: :: +"initial val", as intended:: FOO_append = " val" .. note:: It is never necessary to use "+=" together with "_append". The following - sequence of assignments appends "barbaz" to FOO: :: + sequence of assignments appends "barbaz" to FOO:: FOO_append = "bar" FOO_append = "baz" @@ -381,7 +381,7 @@ standard syntax operations previously mentioned work for variable flags except for override style syntax (i.e. "_prepend", "_append", and "_remove"). -Here are some examples showing how to set variable flags: :: +Here are some examples showing how to set variable flags:: FOO[a] = "abc" FOO[b] = "123" @@ -393,7 +393,7 @@ respectively. The ``[a]`` flag becomes "abc 456". No need exists to pre-define variable flags. You can simply start using them. One extremely common application is to attach some brief -documentation to a BitBake variable as follows: :: +documentation to a BitBake variable as follows:: CACHE[doc] = "The directory holding the cache of the metadata." @@ -401,7 +401,7 @@ Inline Python Variable Expansion -------------------------------- You can use inline Python variable expansion to set variables. Here is -an example: :: +an example:: DATE = "${@time.strftime('%Y%m%d',time.gmtime())}" @@ -410,7 +410,7 @@ This example results in the ``DATE`` variable being set to the current date. Probably the most common use of this feature is to extract the value of variables from BitBake's internal data dictionary, ``d``. The following lines select the values of a package name and its version number, -respectively: :: +respectively:: PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}" PV = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}" @@ -419,12 +419,12 @@ respectively: :: Inline Python expressions work just like variable expansions insofar as the "=" and ":=" operators are concerned. Given the following assignment, foo() - is called each time FOO is expanded: :: + is called each time FOO is expanded:: FOO = "${@foo()}" Contrast this with the following immediate assignment, where foo() is only - called once, while the assignment is parsed: :: + called once, while the assignment is parsed:: FOO := "${@foo()}" @@ -437,7 +437,7 @@ Unsetting variables It is possible to completely remove a variable or a variable flag from BitBake's internal data dictionary by using the "unset" keyword. Here is -an example: :: +an example:: unset DATE unset do_fetch[noexec] @@ -452,7 +452,7 @@ When specifying pathnames for use with BitBake, do not use the tilde cause BitBake to not recognize the path since BitBake does not expand this character in the same way a shell would. -Instead, provide a fuller path as the following example illustrates: :: +Instead, provide a fuller path as the following example illustrates:: BBLAYERS ?= " \ /home/scott-lenovo/LayerA \ @@ -463,7 +463,7 @@ Exporting Variables to the Environment You can export variables to the environment of running tasks by using the ``export`` keyword. For example, in the following example, the -``do_foo`` task prints "value from the environment" when run: :: +``do_foo`` task prints "value from the environment" when run:: export ENV_VARIABLE ENV_VARIABLE = "value from the environment" @@ -481,7 +481,7 @@ It does not matter whether ``export ENV_VARIABLE`` appears before or after assignments to ``ENV_VARIABLE``. It is also possible to combine ``export`` with setting a value for the -variable. Here is an example: :: +variable. Here is an example:: export ENV_VARIABLE = "variable-value" @@ -518,7 +518,7 @@ variable. to satisfy conditions. Thus, if you have a variable that is conditional on "arm", and "arm" is in ``OVERRIDES``, then the "arm"-specific version of the variable is used rather than the - non-conditional version. Here is an example: :: + non-conditional version. Here is an example:: OVERRIDES = "architecture:os:machine" TEST = "default" @@ -535,7 +535,7 @@ variable. an OpenEmbedded metadata-based Linux kernel recipe file. The following lines from the recipe file first set the kernel branch variable ``KBRANCH`` to a default value, then conditionally override - that value based on the architecture of the build: :: + that value based on the architecture of the build:: KBRANCH = "standard/base" KBRANCH_qemuarm = "standard/arm-versatile-926ejs" @@ -547,7 +547,7 @@ variable. - *Appending and Prepending:* BitBake also supports append and prepend operations to variable values based on whether a specific item is - listed in ``OVERRIDES``. Here is an example: :: + listed in ``OVERRIDES``. Here is an example:: DEPENDS = "glibc ncurses" OVERRIDES = "machine:local" @@ -557,14 +557,14 @@ variable. Again, using an OpenEmbedded metadata-based kernel recipe file as an example, the following lines will conditionally append to the - ``KERNEL_FEATURES`` variable based on the architecture: :: + ``KERNEL_FEATURES`` variable based on the architecture:: KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}" KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" - *Setting a Variable for a Single Task:* BitBake supports setting a - variable just for the duration of a single task. Here is an example: :: + variable just for the duration of a single task. Here is an example:: FOO_task-configure = "val 1" FOO_task-compile = "val 2" @@ -580,7 +580,7 @@ variable. ``do_compile`` task. You can also use this syntax with other combinations (e.g. - "``_prepend``") as shown in the following example: :: + "``_prepend``") as shown in the following example:: EXTRA_OEMAKE_prepend_task-compile = "${PARALLEL_MAKE} " @@ -588,7 +588,7 @@ Key Expansion ------------- Key expansion happens when the BitBake datastore is finalized. To better -understand this, consider the following example: :: +understand this, consider the following example:: A${B} = "X" B = "2" @@ -614,7 +614,7 @@ There is often confusion concerning the order in which overrides and various "append" operators take effect. Recall that an append or prepend operation using "_append" and "_prepend" does not result in an immediate assignment as would "+=", ".=", "=+", or "=.". Consider the following -example: :: +example:: OVERRIDES = "foo" A = "Z" @@ -631,7 +631,7 @@ Applying overrides, however, changes things. Since "foo" is listed in version, which is equal to "X". So effectively, ``A_foo`` replaces ``A``. -This next example changes the order of the override and the append: :: +This next example changes the order of the override and the append:: OVERRIDES = "foo" A = "Z" @@ -644,7 +644,7 @@ appended with "X". Consequently, ``A`` becomes "ZX". Notice that spaces are not appended. This next example has the order of the appends and overrides reversed -back as in the first example: :: +back as in the first example:: OVERRIDES = "foo" A = "Y" @@ -658,7 +658,7 @@ leaving the variable set to "ZX". Finally, applying the override for "foo" results in the conditional variable ``A`` becoming "ZX" (i.e. ``A`` is replaced with ``A_foo``). -This final example mixes in some varying operators: :: +This final example mixes in some varying operators:: A = "1" A_append = "2" @@ -720,7 +720,7 @@ file and then have your recipe inherit that class file. As an example, your recipes could use the following directive to inherit an ``autotools.bbclass`` file. The class file would contain common -functionality for using Autotools that could be shared across recipes: :: +functionality for using Autotools that could be shared across recipes:: inherit autotools @@ -734,7 +734,7 @@ In this case, BitBake would search for the directory If you want to use the directive to inherit multiple classes, separate them with spaces. The following example shows how to inherit both the -``buildhistory`` and ``rm_work`` classes: :: +``buildhistory`` and ``rm_work`` classes:: inherit buildhistory rm_work @@ -742,19 +742,19 @@ An advantage with the inherit directive as compared to both the :ref:`include <bitbake-user-manual/bitbake-user-manual-metadata:\`\`include\`\` directive>` and :ref:`require <bitbake-user-manual/bitbake-user-manual-metadata:\`\`require\`\` directive>` directives is that you can inherit class files conditionally. You can accomplish this by using a variable expression after the ``inherit`` -statement. Here is an example: :: +statement. Here is an example:: inherit ${VARNAME} If ``VARNAME`` is going to be set, it needs to be set before the ``inherit`` statement is parsed. One way to achieve a conditional inherit in this case is to use -overrides: :: +overrides:: VARIABLE = "" VARIABLE_someoverride = "myclass" -Another method is by using anonymous Python. Here is an example: :: +Another method is by using anonymous Python. Here is an example:: python () { if condition == value: @@ -764,7 +764,7 @@ Another method is by using anonymous Python. Here is an example: :: } Alternatively, you could use an in-line Python expression in the -following form: :: +following form:: inherit ${@'classname' if condition else ''} inherit ${@functionname(params)} @@ -790,7 +790,7 @@ encapsulated functionality or configuration that does not suit a ``.bbclass`` file. As an example, suppose you needed a recipe to include some self-test -definitions: :: +definitions:: include test_defs.inc @@ -831,7 +831,7 @@ include file named ``foo.inc`` that contains the common definitions needed to build "foo". You need to be sure ``foo.inc`` is located in the same directory as your two recipe files as well. Once these conditions are set up, you can share the functionality using a ``require`` -directive from within each recipe: :: +directive from within each recipe:: require foo.inc @@ -844,7 +844,7 @@ class. BitBake only supports this directive when used within a configuration file. As an example, suppose you needed to inherit a class file called -``abc.bbclass`` from a configuration file as follows: :: +``abc.bbclass`` from a configuration file as follows:: INHERIT += "abc" @@ -862,7 +862,7 @@ subdirectory in one of the directories specified in ``BBPATH``. If you want to use the directive to inherit multiple classes, you can provide them on the same line in the ``local.conf`` file. Use spaces to separate the classes. The following example shows how to inherit both -the ``autotools`` and ``pkgconfig`` classes: :: +the ``autotools`` and ``pkgconfig`` classes:: INHERIT += "autotools pkgconfig" @@ -895,7 +895,7 @@ Shell Functions Functions written in shell script and executed either directly as functions, tasks, or both. They can also be called by other shell -functions. Here is an example shell function definition: :: +functions. Here is an example shell function definition:: some_function () { echo "Hello World" @@ -912,7 +912,7 @@ can also be applied to shell functions. Most commonly, this application would be used in a ``.bbappend`` file to modify functions in the main recipe. It can also be used to modify functions inherited from classes. -As an example, consider the following: :: +As an example, consider the following:: do_foo() { bbplain first @@ -931,7 +931,7 @@ As an example, consider the following: :: bbplain fourth } -Running ``do_foo`` prints the following: :: +Running ``do_foo`` prints the following:: recipename do_foo: first recipename do_foo: second @@ -952,7 +952,7 @@ BitBake-Style Python Functions These functions are written in Python and executed by BitBake or other Python functions using ``bb.build.exec_func()``. -An example BitBake function is: :: +An example BitBake function is:: python some_python_function () { d.setVar("TEXT", "Hello World") @@ -975,7 +975,7 @@ import these modules. Also in these types of functions, the datastore Similar to shell functions, you can also apply overrides and override-style operators to BitBake-style Python functions. -As an example, consider the following: :: +As an example, consider the following:: python do_foo_prepend() { bb.plain("first") @@ -989,7 +989,7 @@ As an example, consider the following: :: bb.plain("third") } -Running ``do_foo`` prints the following: :: +Running ``do_foo`` prints the following:: recipename do_foo: first recipename do_foo: second @@ -1004,7 +1004,7 @@ Python Functions These functions are written in Python and are executed by other Python code. Examples of Python functions are utility functions that you intend to call from in-line Python or from within other Python functions. Here -is an example: :: +is an example:: def get_depends(d): if d.getVar('SOMECONDITION'): @@ -1056,7 +1056,7 @@ functions and regular Python functions defined with "def": - Regular Python functions are called with the usual Python syntax. BitBake-style Python functions are usually tasks and are called directly by BitBake, but can also be called manually from Python code - by using the ``bb.build.exec_func()`` function. Here is an example: :: + by using the ``bb.build.exec_func()`` function. Here is an example:: bb.build.exec_func("my_bitbake_style_function", d) @@ -1094,7 +1094,7 @@ Sometimes it is useful to set variables or perform other operations programmatically during parsing. To do this, you can define special Python functions, called anonymous Python functions, that run at the end of parsing. For example, the following conditionally sets a variable -based on the value of another variable: :: +based on the value of another variable:: python () { if d.getVar('SOMEVAR') == 'value': @@ -1107,7 +1107,7 @@ the name "__anonymous", rather than no name. Anonymous Python functions always run at the end of parsing, regardless of where they are defined. If a recipe contains many anonymous functions, they run in the same order as they are defined within the -recipe. As an example, consider the following snippet: :: +recipe. As an example, consider the following snippet:: python () { d.setVar('FOO', 'foo 2') @@ -1122,7 +1122,7 @@ recipe. As an example, consider the following snippet: :: BAR = "bar 1" The previous example is conceptually -equivalent to the following snippet: :: +equivalent to the following snippet:: FOO = "foo 1" BAR = "bar 1" @@ -1136,7 +1136,7 @@ available to tasks, which always run after parsing. Overrides and override-style operators such as "``_append``" are applied before anonymous functions run. In the following example, ``FOO`` ends -up with the value "foo from anonymous": :: +up with the value "foo from anonymous":: FOO = "foo" FOO_append = " from outside" @@ -1173,24 +1173,24 @@ version of the function. To make use of this technique, you need the following things in place: -- The class needs to define the function as follows: :: +- The class needs to define the function as follows:: classname_functionname For example, if you have a class file ``bar.bbclass`` and a function named ``do_foo``, the class must - define the function as follows: :: + define the function as follows:: bar_do_foo - The class needs to contain the ``EXPORT_FUNCTIONS`` statement as - follows: :: + follows:: EXPORT_FUNCTIONS functionname For example, continuing with the same example, the statement in the ``bar.bbclass`` would be as - follows: :: + follows:: EXPORT_FUNCTIONS do_foo @@ -1199,7 +1199,7 @@ To make use of this technique, you need the following things in place: class version of the function, it should call ``bar_do_foo``. Assuming ``do_foo`` was a shell function and ``EXPORT_FUNCTIONS`` was used as above, the recipe's function could conditionally call the - class version of the function as follows: :: + class version of the function as follows:: do_foo() { if [ somecondition ] ; then @@ -1233,7 +1233,7 @@ Tasks are either :ref:`shell functions <bitbake-user-manual/bitbake-user-manual- that have been promoted to tasks by using the ``addtask`` command. The ``addtask`` command can also optionally describe dependencies between the task and other tasks. Here is an example that shows how to define a -task and declare some dependencies: :: +task and declare some dependencies:: python do_printdate () { import time @@ -1264,12 +1264,12 @@ Additionally, the ``do_printdate`` task becomes dependent upon the rerun for experimentation purposes, you can make BitBake always consider the task "out-of-date" by using the :ref:`[nostamp] <bitbake-user-manual/bitbake-user-manual-metadata:Variable Flags>` - variable flag, as follows: :: + variable flag, as follows:: do_printdate[nostamp] = "1" You can also explicitly run the task and provide the - -f option as follows: :: + -f option as follows:: $ bitbake recipe -c printdate -f @@ -1278,7 +1278,7 @@ Additionally, the ``do_printdate`` task becomes dependent upon the name. You might wonder about the practical effects of using ``addtask`` -without specifying any dependencies as is done in the following example: :: +without specifying any dependencies as is done in the following example:: addtask printdate @@ -1286,7 +1286,7 @@ In this example, assuming dependencies have not been added through some other means, the only way to run the task is by explicitly selecting it with ``bitbake`` recipe ``-c printdate``. You can use the ``do_listtasks`` task to list all tasks defined in a recipe -as shown in the following example: :: +as shown in the following example:: $ bitbake recipe -c listtasks @@ -1312,7 +1312,7 @@ Deleting a Task As well as being able to add tasks, you can delete them. Simply use the ``deltask`` command to delete a task. For example, to delete the example -task used in the previous sections, you would use: :: +task used in the previous sections, you would use:: deltask printdate @@ -1328,7 +1328,7 @@ to run before ``do_a``. If you want dependencies such as these to remain intact, use the ``[noexec]`` varflag to disable the task instead of using the -``deltask`` command to delete it: :: +``deltask`` command to delete it:: do_b[noexec] = "1" @@ -1356,7 +1356,7 @@ environment, you must take these two steps: example, assume you want to prevent the build system from accessing your ``$HOME/.ccache`` directory. The following command "whitelists" the environment variable ``CCACHE_DIR`` causing BitBake to allow that - variable into the datastore: :: + variable into the datastore:: export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE CCACHE_DIR" @@ -1366,7 +1366,7 @@ environment, you must take these two steps: available in the datastore. To export it to the task environment of every running task, use a command similar to the following in your local configuration file ``local.conf`` or your distribution - configuration file: :: + configuration file:: export CCACHE_DIR @@ -1385,7 +1385,7 @@ environment into a special variable named :term:`BB_ORIGENV`. The ``BB_ORIGENV`` variable returns a datastore object that can be queried using the standard datastore operators such as ``getVar(, False)``. The datastore object is useful, for example, to -find the original ``DISPLAY`` variable. Here is an example: :: +find the original ``DISPLAY`` variable. Here is an example:: origenv = d.getVar("BB_ORIGENV", False) bar = origenv.getVar("BAR", False) @@ -1398,7 +1398,7 @@ Variable Flags Variable flags (varflags) help control a task's functionality and dependencies. BitBake reads and writes varflags to the datastore using -the following command forms: :: +the following command forms:: variable = d.getVarFlags("variable") self.d.setVarFlags("FOO", {"func": True}) @@ -1537,7 +1537,7 @@ intent is to make it easy to do things like email notification on build failures. Following is an example event handler that prints the name of the event -and the content of the ``FILE`` variable: :: +and the content of the ``FILE`` variable:: addhandler myclass_eventhandler python myclass_eventhandler() { @@ -1650,10 +1650,15 @@ user interfaces: Variants - Class Extension Mechanism ==================================== -BitBake supports two features that facilitate creating from a single -recipe file multiple incarnations of that recipe file where all -incarnations are buildable. These features are enabled through the -:term:`BBCLASSEXTEND` and :term:`BBVERSIONS` variables. +BitBake supports multiple incarnations of a recipe file via the +:term:`BBCLASSEXTEND` variable. + +The :term:`BBCLASSEXTEND` variable is a space separated list of classes used +to "extend" the recipe for each variant. Here is an example that results in a +second incarnation of the current recipe being available. This second +incarnation will have the "native" class inherited. :: + + BBCLASSEXTEND = "native" .. note:: @@ -1663,34 +1668,6 @@ incarnations are buildable. These features are enabled through the class. For specific examples, see the OE-Core native , nativesdk , and multilib classes. -- ``BBCLASSEXTEND``: This variable is a space separated list of - classes used to "extend" the recipe for each variant. Here is an - example that results in a second incarnation of the current recipe - being available. This second incarnation will have the "native" class - inherited. :: - - BBCLASSEXTEND = "native" - -- ``BBVERSIONS``: This variable allows a single recipe to build - multiple versions of a project from a single recipe file. You can - also specify conditional metadata (using the - :term:`OVERRIDES` mechanism) for a single - version, or an optionally named range of versions. Here is an - example: :: - - BBVERSIONS = "1.0 2.0 git" - SRC_URI_git = "git://someurl/somepath.git" - - BBVERSIONS = "1.0.[0-6]:1.0.0+ 1.0.[7-9]:1.0.7+" - SRC_URI_append_1.0.7+ = "file://some_patch_which_the_new_versions_need.patch;patch=1" - - The name of the range defaults to the original version of the recipe. For - example, in OpenEmbedded, the recipe file ``foo_1.0.0+.bb`` creates a default - name range of ``1.0.0+``. This is useful because the range name is not only - placed into overrides, but it is also made available for the metadata to use - in the variable that defines the base recipe versions for use in ``file://`` - search paths (:term:`FILESPATH`). - Dependencies ============ @@ -1719,7 +1696,7 @@ Dependencies Internal to the ``.bb`` File BitBake uses the ``addtask`` directive to manage dependencies that are internal to a given recipe file. You can use the ``addtask`` directive to indicate when a task is dependent on other tasks or when other tasks -depend on that recipe. Here is an example: :: +depend on that recipe. Here is an example:: addtask printdate after do_fetch before do_build @@ -1743,7 +1720,7 @@ task depends on the completion of the ``do_printdate`` task. - The directive ``addtask mytask after do_configure`` by itself never causes ``do_mytask`` to run. ``do_mytask`` can still be run - manually as follows: :: + manually as follows:: $ bitbake recipe -c mytask @@ -1757,7 +1734,7 @@ Build Dependencies BitBake uses the :term:`DEPENDS` variable to manage build time dependencies. The ``[deptask]`` varflag for tasks signifies the task of each item listed in ``DEPENDS`` that must complete before -that task can be executed. Here is an example: :: +that task can be executed. Here is an example:: do_configure[deptask] = "do_populate_sysroot" @@ -1799,7 +1776,7 @@ dependencies are discovered and added. The ``[recrdeptask]`` flag is most commonly used in high-level recipes that need to wait for some task to finish "globally". For example, -``image.bbclass`` has the following: :: +``image.bbclass`` has the following:: do_rootfs[recrdeptask] += "do_packagedata" @@ -1808,7 +1785,7 @@ the current recipe and all recipes reachable (by way of dependencies) from the image recipe must run before the ``do_rootfs`` task can run. BitBake allows a task to recursively depend on itself by -referencing itself in the task list: :: +referencing itself in the task list:: do_a[recrdeptask] = "do_a do_b" @@ -1825,7 +1802,7 @@ Inter-Task Dependencies BitBake uses the ``[depends]`` flag in a more generic form to manage inter-task dependencies. This more generic form allows for inter-dependency checks for specific tasks rather than checks for the -data in ``DEPENDS``. Here is an example: :: +data in ``DEPENDS``. Here is an example:: do_patch[depends] = "quilt-native:do_populate_sysroot" @@ -1920,7 +1897,7 @@ To help understand how BitBake does this, the section assumes an OpenEmbedded metadata-based example. These checksums are stored in :term:`STAMP`. You can -examine the checksums using the following BitBake command: :: +examine the checksums using the following BitBake command:: $ bitbake-dumpsigs @@ -1943,10 +1920,6 @@ The following list describes related variables: Specifies a function BitBake calls that determines whether BitBake requires a setscene dependency to be met. -- :term:`BB_SETSCENE_VERIFY_FUNCTION2`: - Specifies a function to call that verifies the list of planned task - execution before the main task execution happens. - - :term:`BB_STAMP_POLICY`: Defines the mode for comparing timestamps of stamp files. diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst index 489fa15fa..2dca52c4a 100644 --- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst +++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst @@ -23,10 +23,6 @@ overview of their function and contents. systems extend the functionality of the variable as it is described here in this glossary. - - Finally, there are variables mentioned in this glossary that do - not appear in the BitBake glossary. These other variables are - variables used in systems that use BitBake. - .. glossary:: :term:`ASSUME_PROVIDED` @@ -130,7 +126,7 @@ overview of their function and contents. you to control the build based on these parameters. Disk space monitoring is disabled by default. When setting this - variable, use the following form: :: + variable, use the following form:: BB_DISKMON_DIRS = "<action>,<dir>,<threshold> [...]" @@ -166,7 +162,7 @@ overview of their function and contents. not specify G, M, or K, Kbytes is assumed by default. Do not use GB, MB, or KB. - Here are some examples: :: + Here are some examples:: BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K" BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G" @@ -207,7 +203,7 @@ overview of their function and contents. BB_DISKMON_WARNINTERVAL = "50M,5K" When specifying the variable in your configuration file, use the - following form: :: + following form:: BB_DISKMON_WARNINTERVAL = "<disk_space_interval>,<disk_inode_interval>" @@ -223,7 +219,7 @@ overview of their function and contents. G, M, or K for Gbytes, Mbytes, or Kbytes, respectively. You cannot use GB, MB, or KB. - Here is an example: :: + Here is an example:: BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K" BB_DISKMON_WARNINTERVAL = "50M,5K" @@ -313,6 +309,16 @@ overview of their function and contents. However, the more accurate the data returned, the more efficient the build will be. + :term:`BB_HASHSERVE` + Specifies the Hash Equivalence server to use. + + If set to ``auto``, BitBake automatically starts its own server + over a UNIX domain socket. + + If set to ``host:port``, BitBake will use a remote server on the + specified host. This allows multiple clients to share the same + hash equivalence data. + :term:`BB_INVALIDCONF` Used in combination with the ``ConfigParsed`` event to trigger re-parsing the base metadata (i.e. all the recipes). The @@ -329,7 +335,7 @@ overview of their function and contents. Specifies the name of the log files saved into ``${``\ :term:`T`\ ``}``. By default, the ``BB_LOGFMT`` variable is undefined and the log file names get created using the - following form: :: + following form:: log.{task}.{pid} @@ -383,7 +389,7 @@ overview of their function and contents. Specifies the name of the executable script files (i.e. run files) saved into ``${``\ :term:`T`\ ``}``. By default, the ``BB_RUNFMT`` variable is undefined and the run file names get - created using the following form: :: + created using the following form:: run.{task}.{pid} @@ -426,17 +432,6 @@ overview of their function and contents. The function specified by this variable returns a "True" or "False" depending on whether the dependency needs to be met. - :term:`BB_SETSCENE_VERIFY_FUNCTION2` - Specifies a function to call that verifies the list of planned task - execution before the main task execution happens. The function is - called once BitBake has a list of setscene tasks that have run and - either succeeded or failed. - - The function allows for a task list check to see if they make sense. - Even if BitBake was planning to skip a task, the returned value of - the function can force BitBake to run the task, which is necessary - under certain metadata defined circumstances. - :term:`BB_SIGNATURE_EXCLUDE_FLAGS` Lists variable flags (varflags) that can be safely excluded from checksum and dependency data for keys in the datastore. When @@ -511,7 +506,7 @@ overview of their function and contents. This variable works similarly to the :term:`BB_TASK_NICE_LEVEL` variable except with a task's I/O priorities. - Set the variable as follows: :: + Set the variable as follows:: BB_TASK_IONICE_LEVEL = "class.prio" @@ -529,7 +524,7 @@ overview of their function and contents. In order for your I/O priority settings to take effect, you need the Completely Fair Queuing (CFQ) Scheduler selected for the backing block device. To select the scheduler, use the following command form where - device is the device (e.g. sda, sdb, and so forth): :: + device is the device (e.g. sda, sdb, and so forth):: $ sudo sh -c "echo cfq > /sys/block/device/queu/scheduler" @@ -570,7 +565,7 @@ overview of their function and contents. To build a different variant of the recipe with a minimal amount of code, it usually is as simple as adding the variable to your recipe. Here are two examples. The "native" variants are from the - OpenEmbedded-Core metadata: :: + OpenEmbedded-Core metadata:: BBCLASSEXTEND =+ "native nativesdk" BBCLASSEXTEND =+ "multilib:multilib_name" @@ -658,12 +653,12 @@ overview of their function and contents. ``.bb`` files in case a layer is not present. Use this avoid hard dependency on those other layers. - Use the following form for ``BBFILES_DYNAMIC``: :: + Use the following form for ``BBFILES_DYNAMIC``:: collection_name:filename_pattern The following example identifies two collection names and two filename - patterns: :: + patterns:: BBFILES_DYNAMIC += "\ clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \ @@ -671,14 +666,14 @@ overview of their function and contents. " When the collection name is prefixed with "!" it will add the file pattern in case - the layer is absent: :: + the layer is absent:: BBFILES_DYNAMIC += "\ !clang-layer:${LAYERDIR}/backfill/meta-clang/*/*/*.bb \ " This next example shows an error message that occurs because invalid - entries are found, which cause parsing to abort: :: + entries are found, which cause parsing to abort:: ERROR: BBFILES_DYNAMIC entries must be of the form {!}<collection name>:<filename pattern>, not: /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend @@ -701,7 +696,7 @@ overview of their function and contents. :term:`BBLAYERS` Lists the layers to enable during the build. This variable is defined in the ``bblayers.conf`` configuration file in the build directory. - Here is an example: :: + Here is an example:: BBLAYERS = " \ /home/scottrif/poky/meta \ @@ -735,13 +730,13 @@ overview of their function and contents. The following example uses a complete regular expression to tell BitBake to ignore all recipe and recipe append files in the - ``meta-ti/recipes-misc/`` directory: :: + ``meta-ti/recipes-misc/`` directory:: BBMASK = "meta-ti/recipes-misc/" If you want to mask out multiple directories or recipes, you can specify multiple regular expression fragments. This next example - masks out multiple directories and individual recipes: :: + masks out multiple directories and individual recipes:: BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/" BBMASK += "/meta-oe/recipes-support/" @@ -762,7 +757,7 @@ overview of their function and contents. ``conf/local.conf`` configuration file. As an example, the following line specifies three multiconfigs, each - having a separate configuration file: :: + having a separate configuration file:: BBMULTIFONFIG = "configA configB configC" @@ -783,7 +778,7 @@ overview of their function and contents. If you run BitBake from a directory outside of the build directory, you must be sure to set ``BBPATH`` to point to the build directory. Set the variable as you would any environment variable and then run - BitBake: :: + BitBake:: $ BBPATH="build_directory" $ export BBPATH @@ -797,16 +792,6 @@ overview of their function and contents. Allows you to use a configuration file to add to the list of command-line target recipes you want to build. - :term:`BBVERSIONS` - Allows a single recipe to build multiple versions of a project from a - single recipe file. You also able to specify conditional metadata - using the :term:`OVERRIDES` mechanism for a - single version or for an optionally named range of versions. - - For more information on ``BBVERSIONS``, see the - ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:variants - class extension mechanism`" - section. - :term:`BITBAKE_UI` Used to specify the UI module to use when running BitBake. Using this variable is equivalent to using the ``-u`` command-line option. @@ -852,7 +837,7 @@ overview of their function and contents. Consider this simple example for two recipes named "a" and "b" that produce similarly named packages. In this example, the ``DEPENDS`` - statement appears in the "a" recipe: :: + statement appears in the "a" recipe:: DEPENDS = "b" @@ -1074,7 +1059,7 @@ overview of their function and contents. recipes provide the same item. You should always suffix the variable with the name of the provided item, and you should set it to the :term:`PN` of the recipe to which you want to give - precedence. Some examples: :: + precedence. Some examples:: PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86" @@ -1086,11 +1071,11 @@ overview of their function and contents. ``PREFERRED_PROVIDERS`` is identical to :term:`PREFERRED_PROVIDER`. However, the ``PREFERRED_PROVIDERS`` variable lets you define preferences for multiple situations using the following - form: :: + form:: PREFERRED_PROVIDERS = "xxx:yyy aaa:bbb ..." - This form is a convenient replacement for the following: :: + This form is a convenient replacement for the following:: PREFERRED_PROVIDER_xxx = "yyy" PREFERRED_PROVIDER_aaa = "bbb" @@ -1106,7 +1091,7 @@ overview of their function and contents. through the "``%``" character. You can use the character to match any number of characters, which can be useful when specifying versions that contain long revision numbers that potentially change. Here are - two examples: :: + two examples:: PREFERRED_VERSION_python = "2.7.3" PREFERRED_VERSION_linux-yocto = "4.12%" @@ -1130,7 +1115,7 @@ overview of their function and contents. Typically, you would add a specific server for the build system to attempt before any others by adding something like the following to - your configuration: :: + your configuration:: PREMIRRORS_prepend = "\ git://.*/.* http://www.yoctoproject.org/sources/ \n \ @@ -1152,7 +1137,7 @@ overview of their function and contents. ``DEPENDS``. Consider the following example ``PROVIDES`` statement from a recipe - file ``libav_0.8.11.bb``: :: + file ``libav_0.8.11.bb``:: PROVIDES += "libpostproc" @@ -1175,7 +1160,7 @@ overview of their function and contents. :term:`PRSERV_HOST` The network based :term:`PR` service host and port. - Following is an example of how the ``PRSERV_HOST`` variable is set: :: + Following is an example of how the ``PRSERV_HOST`` variable is set:: PRSERV_HOST = "localhost:0" @@ -1196,7 +1181,7 @@ overview of their function and contents. you should always use the variable in a form with an attached package name. For example, suppose you are building a development package that depends on the ``perl`` package. In this case, you would use the - following ``RDEPENDS`` statement: :: + following ``RDEPENDS`` statement:: RDEPENDS_${PN}-dev += "perl" @@ -1207,11 +1192,11 @@ overview of their function and contents. BitBake supports specifying versioned dependencies. Although the syntax varies depending on the packaging format, BitBake hides these differences from you. Here is the general syntax to specify versions - with the ``RDEPENDS`` variable: :: + with the ``RDEPENDS`` variable:: RDEPENDS_${PN} = "package (operator version)" - For ``operator``, you can specify the following: :: + For ``operator``, you can specify the following:: = < @@ -1220,7 +1205,7 @@ overview of their function and contents. >= For example, the following sets up a dependency on version 1.2 or - greater of the package ``foo``: :: + greater of the package ``foo``:: RDEPENDS_${PN} = "foo (>= 1.2)" @@ -1249,7 +1234,7 @@ overview of their function and contents. As with all package-controlling variables, you must always use the variable in conjunction with a package name override. Here is an - example: :: + example:: RPROVIDES_${PN} = "widget-abi-2" @@ -1263,11 +1248,11 @@ overview of their function and contents. BitBake supports specifying versioned recommends. Although the syntax varies depending on the packaging format, BitBake hides these differences from you. Here is the general syntax to specify versions - with the ``RRECOMMENDS`` variable: :: + with the ``RRECOMMENDS`` variable:: RRECOMMENDS_${PN} = "package (operator version)" - For ``operator``, you can specify the following: :: + For ``operator``, you can specify the following:: = < @@ -1276,7 +1261,7 @@ overview of their function and contents. >= For example, the following sets up a recommend on version - 1.2 or greater of the package ``foo``: :: + 1.2 or greater of the package ``foo``:: RRECOMMENDS_${PN} = "foo (>= 1.2)" diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py index 9f61dae14..a144bd609 100644 --- a/poky/bitbake/lib/bb/__init__.py +++ b/poky/bitbake/lib/bb/__init__.py @@ -9,7 +9,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -__version__ = "1.50.0" +__version__ = "1.51.0" import sys if sys.version_info < (3, 5, 0): diff --git a/poky/bitbake/lib/bb/asyncrpc/__init__.py b/poky/bitbake/lib/bb/asyncrpc/__init__.py new file mode 100644 index 000000000..b2bec31ab --- /dev/null +++ b/poky/bitbake/lib/bb/asyncrpc/__init__.py @@ -0,0 +1,31 @@ +# +# SPDX-License-Identifier: GPL-2.0-only +# + +import itertools +import json + +# The Python async server defaults to a 64K receive buffer, so we hardcode our +# maximum chunk size. It would be better if the client and server reported to +# each other what the maximum chunk sizes were, but that will slow down the +# connection setup with a round trip delay so I'd rather not do that unless it +# is necessary +DEFAULT_MAX_CHUNK = 32 * 1024 + + +def chunkify(msg, max_chunk): + if len(msg) < max_chunk - 1: + yield ''.join((msg, "\n")) + else: + yield ''.join((json.dumps({ + 'chunk-stream': None + }), "\n")) + + args = [iter(msg)] * (max_chunk - 1) + for m in map(''.join, itertools.zip_longest(*args, fillvalue='')): + yield ''.join(itertools.chain(m, "\n")) + yield "\n" + + +from .client import AsyncClient, Client +from .serv import AsyncServer, AsyncServerConnection diff --git a/poky/bitbake/lib/bb/asyncrpc/client.py b/poky/bitbake/lib/bb/asyncrpc/client.py new file mode 100644 index 000000000..79919c5be --- /dev/null +++ b/poky/bitbake/lib/bb/asyncrpc/client.py @@ -0,0 +1,150 @@ +# +# SPDX-License-Identifier: GPL-2.0-only +# + +import abc +import asyncio +import json +import os +import socket +from . import chunkify, DEFAULT_MAX_CHUNK + + +class AsyncClient(object): + def __init__(self, proto_name, proto_version, logger): + self.reader = None + self.writer = None + self.max_chunk = DEFAULT_MAX_CHUNK + self.proto_name = proto_name + self.proto_version = proto_version + self.logger = logger + + async def connect_tcp(self, address, port): + async def connect_sock(): + return await asyncio.open_connection(address, port) + + self._connect_sock = connect_sock + + async def connect_unix(self, path): + async def connect_sock(): + return await asyncio.open_unix_connection(path) + + self._connect_sock = connect_sock + + async def setup_connection(self): + s = '%s %s\n\n' % (self.proto_name, self.proto_version) + self.writer.write(s.encode("utf-8")) + await self.writer.drain() + + async def connect(self): + if self.reader is None or self.writer is None: + (self.reader, self.writer) = await self._connect_sock() + await self.setup_connection() + + async def close(self): + self.reader = None + + if self.writer is not None: + self.writer.close() + self.writer = None + + async def _send_wrapper(self, proc): + count = 0 + while True: + try: + await self.connect() + return await proc() + except ( + OSError, + ConnectionError, + json.JSONDecodeError, + UnicodeDecodeError, + ) as e: + self.logger.warning("Error talking to server: %s" % e) + if count >= 3: + if not isinstance(e, ConnectionError): + raise ConnectionError(str(e)) + raise e + await self.close() + count += 1 + + async def send_message(self, msg): + async def get_line(): + line = await self.reader.readline() + if not line: + raise ConnectionError("Connection closed") + + line = line.decode("utf-8") + + if not line.endswith("\n"): + raise ConnectionError("Bad message %r" % msg) + + return line + + async def proc(): + for c in chunkify(json.dumps(msg), self.max_chunk): + self.writer.write(c.encode("utf-8")) + await self.writer.drain() + + l = await get_line() + + m = json.loads(l) + if m and "chunk-stream" in m: + lines = [] + while True: + l = (await get_line()).rstrip("\n") + if not l: + break + lines.append(l) + + m = json.loads("".join(lines)) + + return m + + return await self._send_wrapper(proc) + + async def ping(self): + return await self.send_message( + {'ping': {}} + ) + + +class Client(object): + def __init__(self): + self.client = self._get_async_client() + self.loop = asyncio.new_event_loop() + + self._add_methods('connect_tcp', 'close', 'ping') + + @abc.abstractmethod + def _get_async_client(self): + pass + + def _get_downcall_wrapper(self, downcall): + def wrapper(*args, **kwargs): + return self.loop.run_until_complete(downcall(*args, **kwargs)) + + return wrapper + + def _add_methods(self, *methods): + for m in methods: + downcall = getattr(self.client, m) + setattr(self, m, self._get_downcall_wrapper(downcall)) + + def connect_unix(self, path): + # AF_UNIX has path length issues so chdir here to workaround + cwd = os.getcwd() + try: + os.chdir(os.path.dirname(path)) + self.loop.run_until_complete(self.client.connect_unix(os.path.basename(path))) + self.loop.run_until_complete(self.client.connect()) + finally: + os.chdir(cwd) + + @property + def max_chunk(self): + return self.client.max_chunk + + @max_chunk.setter + def max_chunk(self, value): + self.client.max_chunk = value diff --git a/poky/bitbake/lib/bb/asyncrpc/serv.py b/poky/bitbake/lib/bb/asyncrpc/serv.py new file mode 100644 index 000000000..ef20cb71d --- /dev/null +++ b/poky/bitbake/lib/bb/asyncrpc/serv.py @@ -0,0 +1,223 @@ +# +# SPDX-License-Identifier: GPL-2.0-only +# + +import abc +import asyncio +import json +import os +import signal +import socket +import sys +from . import chunkify, DEFAULT_MAX_CHUNK + + +class ClientError(Exception): + pass + + +class ServerError(Exception): + pass + + +class AsyncServerConnection(object): + def __init__(self, reader, writer, proto_name, logger): + self.reader = reader + self.writer = writer + self.proto_name = proto_name + self.max_chunk = DEFAULT_MAX_CHUNK + self.handlers = { + 'chunk-stream': self.handle_chunk, + 'ping': self.handle_ping, + } + self.logger = logger + + async def process_requests(self): + try: + self.addr = self.writer.get_extra_info('peername') + self.logger.debug('Client %r connected' % (self.addr,)) + + # Read protocol and version + client_protocol = await self.reader.readline() + if client_protocol is None: + return + + (client_proto_name, client_proto_version) = client_protocol.decode('utf-8').rstrip().split() + if client_proto_name != self.proto_name: + self.logger.debug('Rejecting invalid protocol %s' % (self.proto_name)) + return + + self.proto_version = tuple(int(v) for v in client_proto_version.split('.')) + if not self.validate_proto_version(): + self.logger.debug('Rejecting invalid protocol version %s' % (client_proto_version)) + return + + # Read headers. Currently, no headers are implemented, so look for + # an empty line to signal the end of the headers + while True: + line = await self.reader.readline() + if line is None: + return + + line = line.decode('utf-8').rstrip() + if not line: + break + + # Handle messages + while True: + d = await self.read_message() + if d is None: + break + await self.dispatch_message(d) + await self.writer.drain() + except ClientError as e: + self.logger.error(str(e)) + finally: + self.writer.close() + + async def dispatch_message(self, msg): + for k in self.handlers.keys(): + if k in msg: + self.logger.debug('Handling %s' % k) + await self.handlers[k](msg[k]) + return + + raise ClientError("Unrecognized command %r" % msg) + + def write_message(self, msg): + for c in chunkify(json.dumps(msg), self.max_chunk): + self.writer.write(c.encode('utf-8')) + + async def read_message(self): + l = await self.reader.readline() + if not l: + return None + + try: + message = l.decode('utf-8') + + if not message.endswith('\n'): + return None + + return json.loads(message) + except (json.JSONDecodeError, UnicodeDecodeError) as e: + self.logger.error('Bad message from client: %r' % message) + raise e + + async def handle_chunk(self, request): + lines = [] + try: + while True: + l = await self.reader.readline() + l = l.rstrip(b"\n").decode("utf-8") + if not l: + break + lines.append(l) + + msg = json.loads(''.join(lines)) + except (json.JSONDecodeError, UnicodeDecodeError) as e: + self.logger.error('Bad message from client: %r' % lines) + raise e + + if 'chunk-stream' in msg: + raise ClientError("Nested chunks are not allowed") + + await self.dispatch_message(msg) + + async def handle_ping(self, request): + response = {'alive': True} + self.write_message(response) + + +class AsyncServer(object): + def __init__(self, logger, loop=None): + if loop is None: + self.loop = asyncio.new_event_loop() + self.close_loop = True + else: + self.loop = loop + self.close_loop = False + + self._cleanup_socket = None + self.logger = logger + + def start_tcp_server(self, host, port): + self.server = self.loop.run_until_complete( + asyncio.start_server(self.handle_client, host, port, loop=self.loop) + ) + + for s in self.server.sockets: + self.logger.debug('Listening on %r' % (s.getsockname(),)) + # Newer python does this automatically. Do it manually here for + # maximum compatibility + s.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) + s.setsockopt(socket.SOL_TCP, socket.TCP_QUICKACK, 1) + + name = self.server.sockets[0].getsockname() + if self.server.sockets[0].family == socket.AF_INET6: + self.address = "[%s]:%d" % (name[0], name[1]) + else: + self.address = "%s:%d" % (name[0], name[1]) + + def start_unix_server(self, path): + def cleanup(): + os.unlink(path) + + cwd = os.getcwd() + try: + # Work around path length limits in AF_UNIX + os.chdir(os.path.dirname(path)) + self.server = self.loop.run_until_complete( + asyncio.start_unix_server(self.handle_client, os.path.basename(path), loop=self.loop) + ) + finally: + os.chdir(cwd) + + self.logger.debug('Listening on %r' % path) + + self._cleanup_socket = cleanup + self.address = "unix://%s" % os.path.abspath(path) + + @abc.abstractmethod + def accept_client(self, reader, writer): + pass + + async def handle_client(self, reader, writer): + # writer.transport.set_write_buffer_limits(0) + try: + client = self.accept_client(reader, writer) + await client.process_requests() + except Exception as e: + import traceback + self.logger.error('Error from client: %s' % str(e), exc_info=True) + traceback.print_exc() + writer.close() + self.logger.debug('Client disconnected') + + def run_loop_forever(self): + try: + self.loop.run_forever() + except KeyboardInterrupt: + pass + + def signal_handler(self): + self.loop.stop() + + def serve_forever(self): + asyncio.set_event_loop(self.loop) + try: + self.loop.add_signal_handler(signal.SIGTERM, self.signal_handler) + + self.run_loop_forever() + self.server.close() + + self.loop.run_until_complete(self.server.wait_closed()) + self.logger.debug('Server shutting down') + finally: + if self.close_loop: + if sys.version_info >= (3, 6): + self.loop.run_until_complete(self.loop.shutdown_asyncgens()) + self.loop.close() + + if self._cleanup_socket is not None: + self._cleanup_socket() diff --git a/poky/bitbake/lib/bb/build.py b/poky/bitbake/lib/bb/build.py index b2715fc53..6ce8f1e6d 100644 --- a/poky/bitbake/lib/bb/build.py +++ b/poky/bitbake/lib/bb/build.py @@ -927,6 +927,11 @@ def add_tasks(tasklist, d): task_deps[name] = {} if name in flags: deptask = d.expand(flags[name]) + if name in ['noexec', 'fakeroot', 'nostamp']: + if deptask != '1': + bb.warn("In a future version of BitBake, setting the '{}' flag to something other than '1' " + "will result in the flag not being set. See YP bug #13808.".format(name)) + task_deps[name][task] = deptask getTask('mcdepends') getTask('depends') diff --git a/poky/bitbake/lib/bb/command.py b/poky/bitbake/lib/bb/command.py index dd77cdd6e..f530cf844 100644 --- a/poky/bitbake/lib/bb/command.py +++ b/poky/bitbake/lib/bb/command.py @@ -20,6 +20,7 @@ Commands are queued in a CommandQueue from collections import OrderedDict, defaultdict +import io import bb.event import bb.cooker import bb.remotedata @@ -500,6 +501,17 @@ class CommandsSync: d = command.remotedatastores[dsindex].varhistory return getattr(d, method)(*args, **kwargs) + def dataStoreConnectorVarHistCmdEmit(self, command, params): + dsindex = params[0] + var = params[1] + oval = params[2] + val = params[3] + d = command.remotedatastores[params[4]] + + o = io.StringIO() + command.remotedatastores[dsindex].varhistory.emit(var, oval, val, o, d) + return o.getvalue() + def dataStoreConnectorIncHistCmd(self, command, params): dsindex = params[0] method = params[1] diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py index cf0201c49..c8e91262a 100644 --- a/poky/bitbake/lib/bb/fetch2/__init__.py +++ b/poky/bitbake/lib/bb/fetch2/__init__.py @@ -562,6 +562,9 @@ def verify_checksum(ud, d, precomputed={}): checksum_expected = getattr(ud, "%s_expected" % checksum_id) + if checksum_expected == '': + checksum_expected = None + return { "id": checksum_id, "name": checksum_name, @@ -612,7 +615,7 @@ def verify_checksum(ud, d, precomputed={}): for ci in checksum_infos: if ci["expected"] and ci["expected"] != ci["data"]: - messages.append("File: '%s' has %s checksum %s when %s was " \ + messages.append("File: '%s' has %s checksum '%s' when '%s' was " \ "expected" % (ud.localpath, ci["id"], ci["data"], ci["expected"])) bad_checksum = ci["data"] diff --git a/poky/bitbake/lib/bb/fetch2/git.py b/poky/bitbake/lib/bb/fetch2/git.py index e3ba80a3f..5e65c83c6 100644 --- a/poky/bitbake/lib/bb/fetch2/git.py +++ b/poky/bitbake/lib/bb/fetch2/git.py @@ -168,7 +168,11 @@ class Git(FetchMethod): if len(branches) != len(ud.names): raise bb.fetch2.ParameterError("The number of name and branch parameters is not balanced", ud.url) - ud.cloneflags = "-s -n" + ud.noshared = d.getVar("BB_GIT_NOSHARED") == "1" + + ud.cloneflags = "-n" + if not ud.noshared: + ud.cloneflags += " -s" if ud.bareclone: ud.cloneflags += " --mirror" @@ -394,7 +398,7 @@ class Git(FetchMethod): tmpdir = tempfile.mkdtemp(dir=d.getVar('DL_DIR')) try: # Do the checkout. This implicitly involves a Git LFS fetch. - self.unpack(ud, tmpdir, d) + Git.unpack(self, ud, tmpdir, d) # Scoop up a copy of any stuff that Git LFS downloaded. Merge them into # the bare clonedir. diff --git a/poky/bitbake/lib/bb/fetch2/s3.py b/poky/bitbake/lib/bb/fetch2/s3.py index ffca73c8e..6b8ffd535 100644 --- a/poky/bitbake/lib/bb/fetch2/s3.py +++ b/poky/bitbake/lib/bb/fetch2/s3.py @@ -18,10 +18,47 @@ The aws tool must be correctly installed and configured prior to use. import os import bb import urllib.request, urllib.parse, urllib.error +import re from bb.fetch2 import FetchMethod from bb.fetch2 import FetchError from bb.fetch2 import runfetchcmd +def convertToBytes(value, unit): + value = float(value) + if (unit == "KiB"): + value = value*1024.0; + elif (unit == "MiB"): + value = value*1024.0*1024.0; + elif (unit == "GiB"): + value = value*1024.0*1024.0*1024.0; + return value + +class S3ProgressHandler(bb.progress.LineFilterProgressHandler): + """ + Extract progress information from s3 cp output, e.g.: + Completed 5.1 KiB/8.8 GiB (12.0 MiB/s) with 1 file(s) remaining + """ + def __init__(self, d): + super(S3ProgressHandler, self).__init__(d) + # Send an initial progress event so the bar gets shown + self._fire_progress(0) + + def writeline(self, line): + percs = re.findall(r'^Completed (\d+.{0,1}\d*) (\w+)\/(\d+.{0,1}\d*) (\w+) (\(.+\)) with\s+', line) + if percs: + completed = (percs[-1][0]) + completedUnit = (percs[-1][1]) + total = (percs[-1][2]) + totalUnit = (percs[-1][3]) + completed = convertToBytes(completed, completedUnit) + total = convertToBytes(total, totalUnit) + progress = (completed/total)*100.0 + rate = percs[-1][4] + self.update(progress, rate) + return False + return True + + class S3(FetchMethod): """Class to fetch urls via 'aws s3'""" @@ -52,7 +89,9 @@ class S3(FetchMethod): cmd = '%s cp s3://%s%s %s' % (ud.basecmd, ud.host, ud.path, ud.localpath) bb.fetch2.check_network_access(d, cmd, ud.url) - runfetchcmd(cmd, d) + + progresshandler = S3ProgressHandler(d) + runfetchcmd(cmd, d, False, log=progresshandler) # Additional sanity checks copied from the wget class (although there # are no known issues which mean these are required, treat the aws cli diff --git a/poky/bitbake/lib/bb/fetch2/svn.py b/poky/bitbake/lib/bb/fetch2/svn.py index 8856ef1c6..80102b44f 100644 --- a/poky/bitbake/lib/bb/fetch2/svn.py +++ b/poky/bitbake/lib/bb/fetch2/svn.py @@ -86,7 +86,7 @@ class Svn(FetchMethod): if command == "info": svncmd = "%s info %s %s://%s/%s/" % (ud.basecmd, " ".join(options), proto, svnroot, ud.module) elif command == "log1": - svncmd = "%s log --limit 1 %s %s://%s/%s/" % (ud.basecmd, " ".join(options), proto, svnroot, ud.module) + svncmd = "%s log --limit 1 --quiet %s %s://%s/%s/" % (ud.basecmd, " ".join(options), proto, svnroot, ud.module) else: suffix = "" diff --git a/poky/bitbake/lib/bb/fetch2/wget.py b/poky/bitbake/lib/bb/fetch2/wget.py index 6d82f3af0..784df70c9 100644 --- a/poky/bitbake/lib/bb/fetch2/wget.py +++ b/poky/bitbake/lib/bb/fetch2/wget.py @@ -472,7 +472,7 @@ class Wget(FetchMethod): version_dir = ['', '', ''] version = ['', '', ''] - dirver_regex = re.compile(r"(?P<pfx>\D*)(?P<ver>(\d+[\.\-_])+(\d+))") + dirver_regex = re.compile(r"(?P<pfx>\D*)(?P<ver>(\d+[\.\-_])*(\d+))") s = dirver_regex.search(dirver) if s: version_dir[1] = s.group('ver') diff --git a/poky/bitbake/lib/bb/progress.py b/poky/bitbake/lib/bb/progress.py index d051ba019..52d704d64 100644 --- a/poky/bitbake/lib/bb/progress.py +++ b/poky/bitbake/lib/bb/progress.py @@ -94,12 +94,15 @@ class LineFilterProgressHandler(ProgressHandler): while True: breakpos = self._linebuffer.find('\n') + 1 if breakpos == 0: - break + # for the case when the line with progress ends with only '\r' + breakpos = self._linebuffer.find('\r') + 1 + if breakpos == 0: + break line = self._linebuffer[:breakpos] self._linebuffer = self._linebuffer[breakpos:] # Drop any line feeds and anything that precedes them lbreakpos = line.rfind('\r') + 1 - if lbreakpos: + if lbreakpos and lbreakpos != breakpos: line = line[lbreakpos:] if self.writeline(filter_color(line)): super().write(line) diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py index cd56a5547..6c41fe6d4 100644 --- a/poky/bitbake/lib/bb/runqueue.py +++ b/poky/bitbake/lib/bb/runqueue.py @@ -2030,8 +2030,6 @@ class RunQueueExecute: logger.debug("%s didn't become valid, skipping setscene" % nexttask) self.sq_task_failoutright(nexttask) return True - else: - self.sqdata.outrightfail.remove(nexttask) if nexttask in self.sqdata.outrightfail: logger.debug2('No package found, so skipping setscene task %s', nexttask) self.sq_task_failoutright(nexttask) @@ -2296,10 +2294,16 @@ class RunQueueExecute: self.updated_taskhash_queue.remove((tid, unihash)) if unihash != self.rqdata.runtaskentries[tid].unihash: - hashequiv_logger.verbose("Task %s unihash changed to %s" % (tid, unihash)) - self.rqdata.runtaskentries[tid].unihash = unihash - bb.parse.siggen.set_unihash(tid, unihash) - toprocess.add(tid) + # Make sure we rehash any other tasks with the same task hash that we're deferred against. + torehash = [tid] + for deftid in self.sq_deferred: + if self.sq_deferred[deftid] == tid: + torehash.append(deftid) + for hashtid in torehash: + hashequiv_logger.verbose("Task %s unihash changed to %s" % (hashtid, unihash)) + self.rqdata.runtaskentries[hashtid].unihash = unihash + bb.parse.siggen.set_unihash(hashtid, unihash) + toprocess.add(hashtid) # Work out all tasks which depend upon these total = set() @@ -2827,6 +2831,8 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s sqdata.stamppresent.remove(tid) if tid in sqdata.valid: sqdata.valid.remove(tid) + if tid in sqdata.outrightfail: + sqdata.outrightfail.remove(tid) noexec, stamppresent = check_setscene_stamps(tid, rqdata, rq, stampcache, noexecstamp=True) @@ -2845,6 +2851,7 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary) sqdata.hashes = {} + sqrq.sq_deferred = {} for mc in sorted(sqdata.multiconfigs): for tid in sorted(sqdata.sq_revdeps): if mc_from_tid(tid) != mc: @@ -2857,10 +2864,13 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, s continue if tid in sqrq.scenequeue_notcovered: continue - sqdata.outrightfail.add(tid) + if tid in sqrq.scenequeue_covered: + continue h = pending_hash_index(tid, rqdata) if h not in sqdata.hashes: + if tid in tids: + sqdata.outrightfail.add(tid) sqdata.hashes[h] = tid else: sqrq.sq_deferred[tid] = sqdata.hashes[h] diff --git a/poky/bitbake/lib/bb/server/process.py b/poky/bitbake/lib/bb/server/process.py index b27b4aefe..155e8d131 100644 --- a/poky/bitbake/lib/bb/server/process.py +++ b/poky/bitbake/lib/bb/server/process.py @@ -367,7 +367,12 @@ class ProcessServer(): self.next_heartbeat = now + self.heartbeat_seconds if hasattr(self.cooker, "data"): heartbeat = bb.event.HeartbeatEvent(now) - bb.event.fire(heartbeat, self.cooker.data) + try: + bb.event.fire(heartbeat, self.cooker.data) + except Exception as exc: + if not isinstance(exc, bb.BBHandledException): + logger.exception('Running heartbeat function') + self.quit = True if nextsleep and now + nextsleep > self.next_heartbeat: # Shorten timeout so that we we wake up in time for # the heartbeat. @@ -509,7 +514,7 @@ class BitBakeServer(object): os.set_inheritable(self.bitbake_lock.fileno(), True) os.set_inheritable(self.readypipein, True) serverscript = os.path.realpath(os.path.dirname(__file__) + "/../../../bin/bitbake-server") - os.execl(sys.executable, "bitbake-server", serverscript, "decafbad", str(self.bitbake_lock.fileno()), str(self.readypipein), self.logfile, self.bitbake_lock.name, self.sockname, str(self.server_timeout), str(self.xmlrpcinterface[0]), str(self.xmlrpcinterface[1])) + os.execl(sys.executable, "bitbake-server", serverscript, "decafbad", str(self.bitbake_lock.fileno()), str(self.readypipein), self.logfile, self.bitbake_lock.name, self.sockname, str(self.server_timeout or 0), str(self.xmlrpcinterface[0]), str(self.xmlrpcinterface[1])) def execServer(lockfd, readypipeinfd, lockname, sockname, server_timeout, xmlrpcinterface): diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py index 0d88c6ec6..07692e673 100644 --- a/poky/bitbake/lib/bb/siggen.py +++ b/poky/bitbake/lib/bb/siggen.py @@ -402,7 +402,7 @@ class SignatureGeneratorBasic(SignatureGenerator): p = pickle.dump(data, stream, -1) stream.flush() os.chmod(tmpfile, 0o664) - os.rename(tmpfile, sigfile) + bb.utils.rename(tmpfile, sigfile) except (OSError, IOError) as err: try: os.unlink(tmpfile) @@ -542,7 +542,7 @@ class SignatureGeneratorUniHashMixIn(object): hashequiv_logger.debug((1, 2)[unihash == taskhash], 'Found unihash %s in place of %s for %s from %s' % (unihash, taskhash, tid, self.server)) else: hashequiv_logger.debug2('No reported unihash for %s:%s from %s' % (tid, taskhash, self.server)) - except hashserv.client.HashConnectionError as e: + except ConnectionError as e: bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e))) self.set_unihash(tid, unihash) @@ -621,7 +621,7 @@ class SignatureGeneratorUniHashMixIn(object): d.setVar('BB_UNIHASH', new_unihash) else: hashequiv_logger.debug('Reported task %s as unihash %s to %s' % (taskhash, unihash, self.server)) - except hashserv.client.HashConnectionError as e: + except ConnectionError as e: bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e))) finally: if sigfile: @@ -661,7 +661,7 @@ class SignatureGeneratorUniHashMixIn(object): # TODO: What to do here? hashequiv_logger.verbose('Task %s unihash reported as unwanted hash %s' % (tid, finalunihash)) - except hashserv.client.HashConnectionError as e: + except ConnectionError as e: bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e))) return False diff --git a/poky/bitbake/lib/bb/tests/fetch.py b/poky/bitbake/lib/bb/tests/fetch.py index ddf6e9743..9291ce4a0 100644 --- a/poky/bitbake/lib/bb/tests/fetch.py +++ b/poky/bitbake/lib/bb/tests/fetch.py @@ -390,6 +390,7 @@ class FetcherTest(unittest.TestCase): if os.environ.get("BB_TMPDIR_NOCLEAN") == "yes": print("Not cleaning up %s. Please remove manually." % self.tempdir) else: + bb.process.run('chmod u+rw -R %s' % self.tempdir) bb.utils.prunedir(self.tempdir) class MirrorUriTest(FetcherTest): @@ -673,12 +674,14 @@ class FetcherLocalTest(FetcherTest): with self.assertRaises(bb.fetch2.UnpackError): self.fetchUnpack(['file://a;subdir=/bin/sh']) - def test_local_gitfetch_usehead(self): + def dummyGitTest(self, suffix): # Create dummy local Git repo src_dir = tempfile.mkdtemp(dir=self.tempdir, prefix='gitfetch_localusehead_') src_dir = os.path.abspath(src_dir) bb.process.run("git init", cwd=src_dir) + bb.process.run("git config user.email 'you@example.com'", cwd=src_dir) + bb.process.run("git config user.name 'Your Name'", cwd=src_dir) bb.process.run("git commit --allow-empty -m'Dummy commit'", cwd=src_dir) # Use other branch than master @@ -690,7 +693,7 @@ class FetcherLocalTest(FetcherTest): # Fetch and check revision self.d.setVar("SRCREV", "AUTOINC") - url = "git://" + src_dir + ";protocol=file;usehead=1" + url = "git://" + src_dir + ";protocol=file;" + suffix fetcher = bb.fetch.Fetch([url], self.d) fetcher.download() fetcher.unpack(self.unpackdir) @@ -699,31 +702,23 @@ class FetcherLocalTest(FetcherTest): unpack_rev = stdout[0].strip() self.assertEqual(orig_rev, unpack_rev) + def test_local_gitfetch_usehead(self): + self.dummyGitTest("usehead=1") + def test_local_gitfetch_usehead_withname(self): - # Create dummy local Git repo - src_dir = tempfile.mkdtemp(dir=self.tempdir, - prefix='gitfetch_localusehead_') - src_dir = os.path.abspath(src_dir) - bb.process.run("git init", cwd=src_dir) - bb.process.run("git commit --allow-empty -m'Dummy commit'", - cwd=src_dir) - # Use other branch than master - bb.process.run("git checkout -b my-devel", cwd=src_dir) - bb.process.run("git commit --allow-empty -m'Dummy commit 2'", - cwd=src_dir) - stdout = bb.process.run("git rev-parse HEAD", cwd=src_dir) - orig_rev = stdout[0].strip() + self.dummyGitTest("usehead=1;name=newName") - # Fetch and check revision - self.d.setVar("SRCREV", "AUTOINC") - url = "git://" + src_dir + ";protocol=file;usehead=1;name=newName" - fetcher = bb.fetch.Fetch([url], self.d) - fetcher.download() - fetcher.unpack(self.unpackdir) - stdout = bb.process.run("git rev-parse HEAD", - cwd=os.path.join(self.unpackdir, 'git')) - unpack_rev = stdout[0].strip() - self.assertEqual(orig_rev, unpack_rev) + def test_local_gitfetch_shared(self): + self.dummyGitTest("usehead=1;name=sharedName") + alt = os.path.join(self.unpackdir, 'git/.git/objects/info/alternates') + self.assertTrue(os.path.exists(alt)) + + def test_local_gitfetch_noshared(self): + self.d.setVar('BB_GIT_NOSHARED', '1') + self.unpackdir += '_noshared' + self.dummyGitTest("usehead=1;name=noSharedName") + alt = os.path.join(self.unpackdir, 'git/.git/objects/info/alternates') + self.assertFalse(os.path.exists(alt)) class FetcherNoNetworkTest(FetcherTest): def setUp(self): @@ -1390,6 +1385,8 @@ class GitMakeShallowTest(FetcherTest): self.gitdir = os.path.join(self.tempdir, 'gitshallow') bb.utils.mkdirhier(self.gitdir) bb.process.run('git init', cwd=self.gitdir) + bb.process.run('git config user.email "you@example.com"', cwd=self.gitdir) + bb.process.run('git config user.name "Your Name"', cwd=self.gitdir) def assertRefs(self, expected_refs): actual_refs = self.git(['for-each-ref', '--format=%(refname)']).splitlines() @@ -1513,6 +1510,8 @@ class GitShallowTest(FetcherTest): bb.utils.mkdirhier(self.srcdir) self.git('init', cwd=self.srcdir) + self.git('config user.email "you@example.com"', cwd=self.srcdir) + self.git('config user.name "Your Name"', cwd=self.srcdir) self.d.setVar('WORKDIR', self.tempdir) self.d.setVar('S', self.gitdir) self.d.delVar('PREMIRRORS') @@ -1594,6 +1593,7 @@ class GitShallowTest(FetcherTest): # fetch and unpack, from the shallow tarball bb.utils.remove(self.gitdir, recurse=True) + bb.process.run('chmod u+w -R "%s"' % ud.clonedir) bb.utils.remove(ud.clonedir, recurse=True) bb.utils.remove(ud.clonedir.replace('gitsource', 'gitsubmodule'), recurse=True) @@ -1746,6 +1746,8 @@ class GitShallowTest(FetcherTest): smdir = os.path.join(self.tempdir, 'gitsubmodule') bb.utils.mkdirhier(smdir) self.git('init', cwd=smdir) + self.git('config user.email "you@example.com"', cwd=smdir) + self.git('config user.name "Your Name"', cwd=smdir) # Make this look like it was cloned from a remote... self.git('config --add remote.origin.url "%s"' % smdir, cwd=smdir) self.git('config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"', cwd=smdir) @@ -1776,6 +1778,8 @@ class GitShallowTest(FetcherTest): smdir = os.path.join(self.tempdir, 'gitsubmodule') bb.utils.mkdirhier(smdir) self.git('init', cwd=smdir) + self.git('config user.email "you@example.com"', cwd=smdir) + self.git('config user.name "Your Name"', cwd=smdir) # Make this look like it was cloned from a remote... self.git('config --add remote.origin.url "%s"' % smdir, cwd=smdir) self.git('config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"', cwd=smdir) @@ -1794,7 +1798,7 @@ class GitShallowTest(FetcherTest): # Set up the mirror mirrordir = os.path.join(self.tempdir, 'mirror') - os.rename(self.dldir, mirrordir) + bb.utils.rename(self.dldir, mirrordir) self.d.setVar('PREMIRRORS', 'gitsm://.*/.* file://%s/\n' % mirrordir) # Fetch from the mirror @@ -1818,8 +1822,8 @@ class GitShallowTest(FetcherTest): self.git('annex init', cwd=self.srcdir) open(os.path.join(self.srcdir, 'c'), 'w').close() self.git('annex add c', cwd=self.srcdir) - self.git('commit -m annex-c -a', cwd=self.srcdir) - bb.process.run('chmod u+w -R %s' % os.path.join(self.srcdir, '.git', 'annex')) + self.git('commit --author "Foo Bar <foo@bar>" -m annex-c -a', cwd=self.srcdir) + bb.process.run('chmod u+w -R %s' % self.srcdir) uri = 'gitannex://%s;protocol=file;subdir=${S}' % self.srcdir fetcher, ud = self.fetch_shallow(uri) @@ -1912,7 +1916,7 @@ class GitShallowTest(FetcherTest): bb.utils.mkdirhier(mirrordir) self.d.setVar('PREMIRRORS', 'git://.*/.* file://%s/\n' % mirrordir) - os.rename(os.path.join(self.dldir, mirrortarball), + bb.utils.rename(os.path.join(self.dldir, mirrortarball), os.path.join(mirrordir, mirrortarball)) # Fetch from the mirror @@ -2094,6 +2098,8 @@ class GitLfsTest(FetcherTest): bb.utils.mkdirhier(self.srcdir) self.git('init', cwd=self.srcdir) + self.git('config user.email "you@example.com"', cwd=self.srcdir) + self.git('config user.name "Your Name"', cwd=self.srcdir) with open(os.path.join(self.srcdir, '.gitattributes'), 'wt') as attrs: attrs.write('*.mp3 filter=lfs -text') self.git(['add', '.gitattributes'], cwd=self.srcdir) @@ -2634,3 +2640,29 @@ class NPMTest(FetcherTest): fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d) fetcher.download() self.assertTrue(os.path.exists(ud.localpath)) + +class GitSharedTest(FetcherTest): + def setUp(self): + super(GitSharedTest, self).setUp() + self.recipe_url = "git://git.openembedded.org/bitbake" + self.d.setVar('SRCREV', '82ea737a0b42a8b53e11c9cde141e9e9c0bd8c40') + + @skipIfNoNetwork() + def test_shared_unpack(self): + fetcher = bb.fetch.Fetch([self.recipe_url], self.d) + + fetcher.download() + fetcher.unpack(self.unpackdir) + alt = os.path.join(self.unpackdir, 'git/.git/objects/info/alternates') + self.assertTrue(os.path.exists(alt)) + + @skipIfNoNetwork() + def test_noshared_unpack(self): + self.d.setVar('BB_GIT_NOSHARED', '1') + self.unpackdir += '_noshared' + fetcher = bb.fetch.Fetch([self.recipe_url], self.d) + + fetcher.download() + fetcher.unpack(self.unpackdir) + alt = os.path.join(self.unpackdir, 'git/.git/objects/info/alternates') + self.assertFalse(os.path.exists(alt)) diff --git a/poky/bitbake/lib/bb/tinfoil.py b/poky/bitbake/lib/bb/tinfoil.py index 796a98f05..27a341541 100644 --- a/poky/bitbake/lib/bb/tinfoil.py +++ b/poky/bitbake/lib/bb/tinfoil.py @@ -52,6 +52,10 @@ class TinfoilDataStoreConnectorVarHistory: def remoteCommand(self, cmd, *args, **kwargs): return self.tinfoil.run_command('dataStoreConnectorVarHistCmd', self.dsindex, cmd, args, kwargs) + def emit(self, var, oval, val, o, d): + ret = self.tinfoil.run_command('dataStoreConnectorVarHistCmdEmit', self.dsindex, var, oval, val, d.dsindex) + o.write(ret) + def __getattr__(self, name): if not hasattr(bb.data_smart.VariableHistory, name): raise AttributeError("VariableHistory has no such method %s" % name) diff --git a/poky/bitbake/lib/bb/ui/knotty.py b/poky/bitbake/lib/bb/ui/knotty.py index 0efa614df..65ff2727d 100644 --- a/poky/bitbake/lib/bb/ui/knotty.py +++ b/poky/bitbake/lib/bb/ui/knotty.py @@ -21,6 +21,7 @@ import fcntl import struct import copy import atexit +from itertools import groupby from bb.ui import uihelper @@ -539,6 +540,13 @@ def main(server, eventHandler, params, tf = TerminalFilter): except OSError: pass + # Add the logging domains specified by the user on the command line + for (domainarg, iterator) in groupby(params.debug_domains): + dlevel = len(tuple(iterator)) + l = logconfig["loggers"].setdefault("BitBake.%s" % domainarg, {}) + l["level"] = logging.DEBUG - dlevel + 1 + l.setdefault("handlers", []).extend(["BitBake.verbconsole"]) + conf = bb.msg.setLoggingConfig(logconfig, logconfigfile) if sys.stdin.isatty() and sys.stdout.isatty(): diff --git a/poky/bitbake/lib/bb/utils.py b/poky/bitbake/lib/bb/utils.py index b282d09ab..6ba1d2a37 100644 --- a/poky/bitbake/lib/bb/utils.py +++ b/poky/bitbake/lib/bb/utils.py @@ -782,7 +782,7 @@ def movefile(src, dest, newmtime = None, sstat = None): if sstat[stat.ST_DEV] == dstat[stat.ST_DEV]: try: - os.rename(src, destpath) + bb.utils.rename(src, destpath) renamefailed = 0 except Exception as e: if e.errno != errno.EXDEV: @@ -796,7 +796,7 @@ def movefile(src, dest, newmtime = None, sstat = None): if stat.S_ISREG(sstat[stat.ST_MODE]): try: # For safety copy then move it over. shutil.copyfile(src, destpath + "#new") - os.rename(destpath + "#new", destpath) + bb.utils.rename(destpath + "#new", destpath) didcopy = 1 except Exception as e: print('movefile: copy', src, '->', dest, 'failed.', e) @@ -874,7 +874,7 @@ def copyfile(src, dest, newmtime = None, sstat = None): # For safety copy then move it over. shutil.copyfile(src, dest + "#new") - os.rename(dest + "#new", dest) + bb.utils.rename(dest + "#new", dest) except Exception as e: logger.warning("copyfile: copy %s to %s failed (%s)" % (src, dest, e)) return False @@ -1669,3 +1669,15 @@ def is_semver(version): return False return True + +# Wrapper around os.rename which can handle cross device problems +# e.g. from container filesystems +def rename(src, dst): + try: + os.rename(src, dst) + except OSError as err: + if err.errno == 18: + # Invalid cross-device link error + shutil.move(src, dst) + else: + raise err diff --git a/poky/bitbake/lib/bblayers/layerindex.py b/poky/bitbake/lib/bblayers/layerindex.py index b2f27b21e..793651620 100644 --- a/poky/bitbake/lib/bblayers/layerindex.py +++ b/poky/bitbake/lib/bblayers/layerindex.py @@ -159,12 +159,17 @@ class LayerIndexPlugin(ActionPlugin): logger.plain(' recommended by: %s' % ' '.join(recommendedby)) if dependencies: - fetchdir = self.tinfoil.config_data.getVar('BBLAYERS_FETCH_DIR') - if not fetchdir: - logger.error("Cannot get BBLAYERS_FETCH_DIR") - return 1 + if args.fetchdir: + fetchdir = args.fetchdir + else: + fetchdir = self.tinfoil.config_data.getVar('BBLAYERS_FETCH_DIR') + if not fetchdir: + logger.error("Cannot get BBLAYERS_FETCH_DIR") + return 1 + if not os.path.exists(fetchdir): os.makedirs(fetchdir) + addlayers = [] for deplayerbranch in dependencies: @@ -206,6 +211,8 @@ class LayerIndexPlugin(ActionPlugin): """ args.show_only = True args.ignore = [] + args.fetchdir = "" + args.shallow = True self.do_layerindex_fetch(args) def register_commands(self, sp): @@ -214,6 +221,7 @@ class LayerIndexPlugin(ActionPlugin): parser_layerindex_fetch.add_argument('-b', '--branch', help='branch name to fetch') parser_layerindex_fetch.add_argument('-s', '--shallow', help='do only shallow clones (--depth=1)', action='store_true') parser_layerindex_fetch.add_argument('-i', '--ignore', help='assume the specified layers do not need to be fetched/added (separate multiple layers with commas, no spaces)', metavar='LAYER') + parser_layerindex_fetch.add_argument('-f', '--fetchdir', help='directory to fetch the layer(s) into (will be created if it does not exist)') parser_layerindex_fetch.add_argument('layername', nargs='+', help='layer to fetch') parser_layerindex_show_depends = self.add_command(sp, 'layerindex-show-depends', self.do_layerindex_show_depends, parserecipes=False) diff --git a/poky/bitbake/lib/hashserv/client.py b/poky/bitbake/lib/hashserv/client.py index e05c1eb56..1a67c6982 100644 --- a/poky/bitbake/lib/hashserv/client.py +++ b/poky/bitbake/lib/hashserv/client.py @@ -3,115 +3,28 @@ # SPDX-License-Identifier: GPL-2.0-only # -import asyncio -import json import logging import socket -import os -from . import chunkify, DEFAULT_MAX_CHUNK, create_async_client +import bb.asyncrpc +from . import create_async_client logger = logging.getLogger("hashserv.client") -class HashConnectionError(Exception): - pass - - -class AsyncClient(object): +class AsyncClient(bb.asyncrpc.AsyncClient): MODE_NORMAL = 0 MODE_GET_STREAM = 1 def __init__(self): - self.reader = None - self.writer = None + super().__init__('OEHASHEQUIV', '1.1', logger) self.mode = self.MODE_NORMAL - self.max_chunk = DEFAULT_MAX_CHUNK - - async def connect_tcp(self, address, port): - async def connect_sock(): - return await asyncio.open_connection(address, port) - - self._connect_sock = connect_sock - - async def connect_unix(self, path): - async def connect_sock(): - return await asyncio.open_unix_connection(path) - - self._connect_sock = connect_sock - - async def connect(self): - if self.reader is None or self.writer is None: - (self.reader, self.writer) = await self._connect_sock() - - self.writer.write("OEHASHEQUIV 1.1\n\n".encode("utf-8")) - await self.writer.drain() - - cur_mode = self.mode - self.mode = self.MODE_NORMAL - await self._set_mode(cur_mode) - - async def close(self): - self.reader = None - - if self.writer is not None: - self.writer.close() - self.writer = None - - async def _send_wrapper(self, proc): - count = 0 - while True: - try: - await self.connect() - return await proc() - except ( - OSError, - HashConnectionError, - json.JSONDecodeError, - UnicodeDecodeError, - ) as e: - logger.warning("Error talking to server: %s" % e) - if count >= 3: - if not isinstance(e, HashConnectionError): - raise HashConnectionError(str(e)) - raise e - await self.close() - count += 1 - - async def send_message(self, msg): - async def get_line(): - line = await self.reader.readline() - if not line: - raise HashConnectionError("Connection closed") - - line = line.decode("utf-8") - - if not line.endswith("\n"): - raise HashConnectionError("Bad message %r" % message) - - return line - - async def proc(): - for c in chunkify(json.dumps(msg), self.max_chunk): - self.writer.write(c.encode("utf-8")) - await self.writer.drain() - - l = await get_line() - - m = json.loads(l) - if m and "chunk-stream" in m: - lines = [] - while True: - l = (await get_line()).rstrip("\n") - if not l: - break - lines.append(l) - - m = json.loads("".join(lines)) - - return m - return await self._send_wrapper(proc) + async def setup_connection(self): + await super().setup_connection() + cur_mode = self.mode + self.mode = self.MODE_NORMAL + await self._set_mode(cur_mode) async def send_stream(self, msg): async def proc(): @@ -119,7 +32,7 @@ class AsyncClient(object): await self.writer.drain() l = await self.reader.readline() if not l: - raise HashConnectionError("Connection closed") + raise ConnectionError("Connection closed") return l.decode("utf-8").rstrip() return await self._send_wrapper(proc) @@ -128,11 +41,11 @@ class AsyncClient(object): if new_mode == self.MODE_NORMAL and self.mode == self.MODE_GET_STREAM: r = await self.send_stream("END") if r != "ok": - raise HashConnectionError("Bad response from server %r" % r) + raise ConnectionError("Bad response from server %r" % r) elif new_mode == self.MODE_GET_STREAM and self.mode == self.MODE_NORMAL: r = await self.send_message({"get-stream": None}) if r != "ok": - raise HashConnectionError("Bad response from server %r" % r) + raise ConnectionError("Bad response from server %r" % r) elif new_mode != self.mode: raise Exception( "Undefined mode transition %r -> %r" % (self.mode, new_mode) @@ -189,12 +102,10 @@ class AsyncClient(object): return (await self.send_message({"backfill-wait": None}))["tasks"] -class Client(object): +class Client(bb.asyncrpc.Client): def __init__(self): - self.client = AsyncClient() - self.loop = asyncio.new_event_loop() - - for call in ( + super().__init__() + self._add_methods( "connect_tcp", "close", "get_unihash", @@ -204,30 +115,7 @@ class Client(object): "get_stats", "reset_stats", "backfill_wait", - ): - downcall = getattr(self.client, call) - setattr(self, call, self._get_downcall_wrapper(downcall)) - - def _get_downcall_wrapper(self, downcall): - def wrapper(*args, **kwargs): - return self.loop.run_until_complete(downcall(*args, **kwargs)) - - return wrapper - - def connect_unix(self, path): - # AF_UNIX has path length issues so chdir here to workaround - cwd = os.getcwd() - try: - os.chdir(os.path.dirname(path)) - self.loop.run_until_complete(self.client.connect_unix(os.path.basename(path))) - self.loop.run_until_complete(self.client.connect()) - finally: - os.chdir(cwd) - - @property - def max_chunk(self): - return self.client.max_chunk - - @max_chunk.setter - def max_chunk(self, value): - self.client.max_chunk = value + ) + + def _get_async_client(self): + return AsyncClient() diff --git a/poky/bitbake/lib/hashserv/server.py b/poky/bitbake/lib/hashserv/server.py index a0dc0c170..8e8498973 100644 --- a/poky/bitbake/lib/hashserv/server.py +++ b/poky/bitbake/lib/hashserv/server.py @@ -6,15 +6,12 @@ from contextlib import closing, contextmanager from datetime import datetime import asyncio -import json import logging import math -import os -import signal -import socket -import sys import time -from . import chunkify, DEFAULT_MAX_CHUNK, create_async_client, TABLE_COLUMNS +from . import create_async_client, TABLE_COLUMNS +import bb.asyncrpc + logger = logging.getLogger('hashserv.server') @@ -109,12 +106,6 @@ class Stats(object): return {k: getattr(self, k) for k in ('num', 'total_time', 'max_time', 'average', 'stdev')} -class ClientError(Exception): - pass - -class ServerError(Exception): - pass - def insert_task(cursor, data, ignore=False): keys = sorted(data.keys()) query = '''INSERT%s INTO tasks_v2 (%s) VALUES (%s)''' % ( @@ -128,7 +119,6 @@ async def copy_from_upstream(client, db, method, taskhash): if d is not None: # Filter out unknown columns d = {k: v for k, v in d.items() if k in TABLE_COLUMNS} - keys = sorted(d.keys()) with closing(db.cursor()) as cursor: insert_task(cursor, d) @@ -141,7 +131,6 @@ async def copy_outhash_from_upstream(client, db, method, outhash, taskhash): if d is not None: # Filter out unknown columns d = {k: v for k, v in d.items() if k in TABLE_COLUMNS} - keys = sorted(d.keys()) with closing(db.cursor()) as cursor: insert_task(cursor, d) @@ -149,7 +138,7 @@ async def copy_outhash_from_upstream(client, db, method, outhash, taskhash): return d -class ServerClient(object): +class ServerClient(bb.asyncrpc.AsyncServerConnection): FAST_QUERY = 'SELECT taskhash, method, unihash FROM tasks_v2 WHERE method=:method AND taskhash=:taskhash ORDER BY created ASC LIMIT 1' ALL_QUERY = 'SELECT * FROM tasks_v2 WHERE method=:method AND taskhash=:taskhash ORDER BY created ASC LIMIT 1' OUTHASH_QUERY = ''' @@ -168,21 +157,19 @@ class ServerClient(object): ''' def __init__(self, reader, writer, db, request_stats, backfill_queue, upstream, read_only): - self.reader = reader - self.writer = writer + super().__init__(reader, writer, 'OEHASHEQUIV', logger) self.db = db self.request_stats = request_stats - self.max_chunk = DEFAULT_MAX_CHUNK + self.max_chunk = bb.asyncrpc.DEFAULT_MAX_CHUNK self.backfill_queue = backfill_queue self.upstream = upstream - self.handlers = { + self.handlers.update({ 'get': self.handle_get, 'get-outhash': self.handle_get_outhash, 'get-stream': self.handle_get_stream, 'get-stats': self.handle_get_stats, - 'chunk-stream': self.handle_chunk, - } + }) if not read_only: self.handlers.update({ @@ -192,56 +179,19 @@ class ServerClient(object): 'backfill-wait': self.handle_backfill_wait, }) + def validate_proto_version(self): + return (self.proto_version > (1, 0) and self.proto_version <= (1, 1)) + async def process_requests(self): if self.upstream is not None: self.upstream_client = await create_async_client(self.upstream) else: self.upstream_client = None - try: - - - self.addr = self.writer.get_extra_info('peername') - logger.debug('Client %r connected' % (self.addr,)) - - # Read protocol and version - protocol = await self.reader.readline() - if protocol is None: - return - - (proto_name, proto_version) = protocol.decode('utf-8').rstrip().split() - if proto_name != 'OEHASHEQUIV': - return - - proto_version = tuple(int(v) for v in proto_version.split('.')) - if proto_version < (1, 0) or proto_version > (1, 1): - return - - # Read headers. Currently, no headers are implemented, so look for - # an empty line to signal the end of the headers - while True: - line = await self.reader.readline() - if line is None: - return + await super().process_requests() - line = line.decode('utf-8').rstrip() - if not line: - break - - # Handle messages - while True: - d = await self.read_message() - if d is None: - break - await self.dispatch_message(d) - await self.writer.drain() - except ClientError as e: - logger.error(str(e)) - finally: - if self.upstream_client is not None: - await self.upstream_client.close() - - self.writer.close() + if self.upstream_client is not None: + await self.upstream_client.close() async def dispatch_message(self, msg): for k in self.handlers.keys(): @@ -255,47 +205,7 @@ class ServerClient(object): await self.handlers[k](msg[k]) return - raise ClientError("Unrecognized command %r" % msg) - - def write_message(self, msg): - for c in chunkify(json.dumps(msg), self.max_chunk): - self.writer.write(c.encode('utf-8')) - - async def read_message(self): - l = await self.reader.readline() - if not l: - return None - - try: - message = l.decode('utf-8') - - if not message.endswith('\n'): - return None - - return json.loads(message) - except (json.JSONDecodeError, UnicodeDecodeError) as e: - logger.error('Bad message from client: %r' % message) - raise e - - async def handle_chunk(self, request): - lines = [] - try: - while True: - l = await self.reader.readline() - l = l.rstrip(b"\n").decode("utf-8") - if not l: - break - lines.append(l) - - msg = json.loads(''.join(lines)) - except (json.JSONDecodeError, UnicodeDecodeError) as e: - logger.error('Bad message from client: %r' % message) - raise e - - if 'chunk-stream' in msg: - raise ClientError("Nested chunks are not allowed") - - await self.dispatch_message(msg) + raise bb.asyncrpc.ClientError("Unrecognized command %r" % msg) async def handle_get(self, request): method = request['method'] @@ -499,74 +409,20 @@ class ServerClient(object): cursor.close() -class Server(object): +class Server(bb.asyncrpc.AsyncServer): def __init__(self, db, loop=None, upstream=None, read_only=False): if upstream and read_only: - raise ServerError("Read-only hashserv cannot pull from an upstream server") + raise bb.asyncrpc.ServerError("Read-only hashserv cannot pull from an upstream server") + + super().__init__(logger, loop) self.request_stats = Stats() self.db = db - - if loop is None: - self.loop = asyncio.new_event_loop() - self.close_loop = True - else: - self.loop = loop - self.close_loop = False - self.upstream = upstream self.read_only = read_only - self._cleanup_socket = None - - def start_tcp_server(self, host, port): - self.server = self.loop.run_until_complete( - asyncio.start_server(self.handle_client, host, port, loop=self.loop) - ) - - for s in self.server.sockets: - logger.info('Listening on %r' % (s.getsockname(),)) - # Newer python does this automatically. Do it manually here for - # maximum compatibility - s.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) - s.setsockopt(socket.SOL_TCP, socket.TCP_QUICKACK, 1) - - name = self.server.sockets[0].getsockname() - if self.server.sockets[0].family == socket.AF_INET6: - self.address = "[%s]:%d" % (name[0], name[1]) - else: - self.address = "%s:%d" % (name[0], name[1]) - - def start_unix_server(self, path): - def cleanup(): - os.unlink(path) - - cwd = os.getcwd() - try: - # Work around path length limits in AF_UNIX - os.chdir(os.path.dirname(path)) - self.server = self.loop.run_until_complete( - asyncio.start_unix_server(self.handle_client, os.path.basename(path), loop=self.loop) - ) - finally: - os.chdir(cwd) - - logger.info('Listening on %r' % path) - - self._cleanup_socket = cleanup - self.address = "unix://%s" % os.path.abspath(path) - - async def handle_client(self, reader, writer): - # writer.transport.set_write_buffer_limits(0) - try: - client = ServerClient(reader, writer, self.db, self.request_stats, self.backfill_queue, self.upstream, self.read_only) - await client.process_requests() - except Exception as e: - import traceback - logger.error('Error from client: %s' % str(e), exc_info=True) - traceback.print_exc() - writer.close() - logger.info('Client disconnected') + def accept_client(self, reader, writer): + return ServerClient(reader, writer, self.db, self.request_stats, self.backfill_queue, self.upstream, self.read_only) @contextmanager def _backfill_worker(self): @@ -597,31 +453,8 @@ class Server(object): else: yield - def serve_forever(self): - def signal_handler(): - self.loop.stop() - - asyncio.set_event_loop(self.loop) - try: - self.backfill_queue = asyncio.Queue() - - self.loop.add_signal_handler(signal.SIGTERM, signal_handler) - - with self._backfill_worker(): - try: - self.loop.run_forever() - except KeyboardInterrupt: - pass - - self.server.close() - - self.loop.run_until_complete(self.server.wait_closed()) - logger.info('Server shutting down') - finally: - if self.close_loop: - if sys.version_info >= (3, 6): - self.loop.run_until_complete(self.loop.shutdown_asyncgens()) - self.loop.close() + def run_loop_forever(self): + self.backfill_queue = asyncio.Queue() - if self._cleanup_socket is not None: - self._cleanup_socket() + with self._backfill_worker(): + super().run_loop_forever() diff --git a/poky/bitbake/lib/hashserv/tests.py b/poky/bitbake/lib/hashserv/tests.py index 1a696481e..e2b762dbf 100644 --- a/poky/bitbake/lib/hashserv/tests.py +++ b/poky/bitbake/lib/hashserv/tests.py @@ -6,7 +6,6 @@ # from . import create_server, create_client -from .client import HashConnectionError import hashlib import logging import multiprocessing @@ -277,7 +276,7 @@ class HashEquivalenceCommonTests(object): outhash2 = '3c979c3db45c569f51ab7626a4651074be3a9d11a84b1db076f5b14f7d39db44' unihash2 = '90e9bc1d1f094c51824adca7f8ea79a048d68824' - with self.assertRaises(HashConnectionError): + with self.assertRaises(ConnectionError): ro_client.report_unihash(taskhash2, self.METHOD, outhash2, unihash2) # Ensure that the database was not modified diff --git a/poky/bitbake/lib/prserv/serv.py b/poky/bitbake/lib/prserv/serv.py index 25dcf8a0e..5e322bf83 100644 --- a/poky/bitbake/lib/prserv/serv.py +++ b/poky/bitbake/lib/prserv/serv.py @@ -5,8 +5,6 @@ import os,sys,logging import signal, time from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler -import threading -import queue import socket import io import sqlite3 @@ -14,14 +12,10 @@ import bb.server.xmlrpcclient import prserv import prserv.db import errno -import select +import multiprocessing logger = logging.getLogger("BitBake.PRserv") -if sys.hexversion < 0x020600F0: - print("Sorry, python 2.6 or later is required.") - sys.exit(1) - class Handler(SimpleXMLRPCRequestHandler): def _dispatch(self,method,params): try: @@ -37,7 +31,7 @@ singleton = None class PRServer(SimpleXMLRPCServer): - def __init__(self, dbfile, logfile, interface, daemon=True): + def __init__(self, dbfile, logfile, interface): ''' constructor ''' try: SimpleXMLRPCServer.__init__(self, interface, @@ -50,57 +44,18 @@ class PRServer(SimpleXMLRPCServer): raise PRServiceConfigError self.dbfile=dbfile - self.daemon=daemon self.logfile=logfile - self.working_thread=None self.host, self.port = self.socket.getsockname() - self.pidfile=PIDPREFIX % (self.host, self.port) self.register_function(self.getPR, "getPR") - self.register_function(self.quit, "quit") self.register_function(self.ping, "ping") self.register_function(self.export, "export") - self.register_function(self.dump_db, "dump_db") self.register_function(self.importone, "importone") self.register_introspection_functions() - self.quitpipein, self.quitpipeout = os.pipe() - - self.requestqueue = queue.Queue() - self.handlerthread = threading.Thread(target = self.process_request_thread) - self.handlerthread.daemon = False - - def process_request_thread(self): - """Same as in BaseServer but as a thread. - - In addition, exception handling is done here. - - """ - iter_count = 1 + self.iter_count = 0 # 60 iterations between syncs or sync if dirty every ~30 seconds - iterations_between_sync = 60 - - bb.utils.set_process_name("PRServ Handler") - - while not self.quitflag: - try: - (request, client_address) = self.requestqueue.get(True, 30) - except queue.Empty: - self.table.sync_if_dirty() - continue - if request is None: - continue - try: - self.finish_request(request, client_address) - self.shutdown_request(request) - iter_count = (iter_count + 1) % iterations_between_sync - if iter_count == 0: - self.table.sync_if_dirty() - except: - self.handle_error(request, client_address) - self.shutdown_request(request) - self.table.sync() - self.table.sync_if_dirty() + self.iterations_between_sync = 60 def sigint_handler(self, signum, stack): if self.table: @@ -109,11 +64,30 @@ class PRServer(SimpleXMLRPCServer): def sigterm_handler(self, signum, stack): if self.table: self.table.sync() - self.quit() - self.requestqueue.put((None, None)) + raise(SystemExit) def process_request(self, request, client_address): - self.requestqueue.put((request, client_address)) + if request is None: + return + try: + self.finish_request(request, client_address) + self.shutdown_request(request) + self.iter_count = (self.iter_count + 1) % self.iterations_between_sync + if self.iter_count == 0: + self.table.sync_if_dirty() + except: + self.handle_error(request, client_address) + self.shutdown_request(request) + self.table.sync() + self.table.sync_if_dirty() + + def serve_forever(self, poll_interval=0.5): + signal.signal(signal.SIGINT, self.sigint_handler) + signal.signal(signal.SIGTERM, self.sigterm_handler) + + self.db = prserv.db.PRData(self.dbfile) + self.table = self.db["PRMAIN"] + return super().serve_forever(poll_interval) def export(self, version=None, pkgarch=None, checksum=None, colinfo=True): try: @@ -122,31 +96,11 @@ class PRServer(SimpleXMLRPCServer): logger.error(str(exc)) return None - def dump_db(self): - """ - Returns a script (string) that reconstructs the state of the - entire database at the time this function is called. The script - language is defined by the backing database engine, which is a - function of server configuration. - Returns None if the database engine does not support dumping to - script or if some other error is encountered in processing. - """ - buff = io.StringIO() - try: - self.table.sync() - self.table.dump_db(buff) - return buff.getvalue() - except Exception as exc: - logger.error(str(exc)) - return None - finally: - buff.close() - def importone(self, version, pkgarch, checksum, value): return self.table.importone(version, pkgarch, checksum, value) def ping(self): - return not self.quitflag + return True def getinfo(self): return (self.host, self.port) @@ -161,144 +115,6 @@ class PRServer(SimpleXMLRPCServer): logger.error(str(exc)) return None - def quit(self): - self.quitflag=True - os.write(self.quitpipeout, b"q") - os.close(self.quitpipeout) - return - - def work_forever(self,): - self.quitflag = False - # This timeout applies to the poll in TCPServer, we need the select - # below to wake on our quit pipe closing. We only ever call into handle_request - # if there is data there. - self.timeout = 0.01 - - bb.utils.set_process_name("PRServ") - - # DB connection must be created after all forks - self.db = prserv.db.PRData(self.dbfile) - self.table = self.db["PRMAIN"] - - logger.info("Started PRServer with DBfile: %s, IP: %s, PORT: %s, PID: %s" % - (self.dbfile, self.host, self.port, str(os.getpid()))) - - self.handlerthread.start() - while not self.quitflag: - ready = select.select([self.fileno(), self.quitpipein], [], [], 30) - if self.quitflag: - break - if self.fileno() in ready[0]: - self.handle_request() - self.handlerthread.join() - self.db.disconnect() - logger.info("PRServer: stopping...") - self.server_close() - os.close(self.quitpipein) - return - - def start(self): - if self.daemon: - pid = self.daemonize() - else: - pid = self.fork() - self.pid = pid - - # Ensure both the parent sees this and the child from the work_forever log entry above - logger.info("Started PRServer with DBfile: %s, IP: %s, PORT: %s, PID: %s" % - (self.dbfile, self.host, self.port, str(pid))) - - def delpid(self): - os.remove(self.pidfile) - - def daemonize(self): - """ - See Advanced Programming in the UNIX, Sec 13.3 - """ - try: - pid = os.fork() - if pid > 0: - os.waitpid(pid, 0) - #parent return instead of exit to give control - return pid - except OSError as e: - raise Exception("%s [%d]" % (e.strerror, e.errno)) - - os.setsid() - """ - fork again to make sure the daemon is not session leader, - which prevents it from acquiring controlling terminal - """ - try: - pid = os.fork() - if pid > 0: #parent - os._exit(0) - except OSError as e: - raise Exception("%s [%d]" % (e.strerror, e.errno)) - - self.cleanup_handles() - os._exit(0) - - def fork(self): - try: - pid = os.fork() - if pid > 0: - self.socket.close() # avoid ResourceWarning in parent - return pid - except OSError as e: - raise Exception("%s [%d]" % (e.strerror, e.errno)) - - bb.utils.signal_on_parent_exit("SIGTERM") - self.cleanup_handles() - os._exit(0) - - def cleanup_handles(self): - signal.signal(signal.SIGINT, self.sigint_handler) - signal.signal(signal.SIGTERM, self.sigterm_handler) - os.chdir("/") - - sys.stdout.flush() - sys.stderr.flush() - - # We could be called from a python thread with io.StringIO as - # stdout/stderr or it could be 'real' unix fd forking where we need - # to physically close the fds to prevent the program launching us from - # potentially hanging on a pipe. Handle both cases. - si = open('/dev/null', 'r') - try: - os.dup2(si.fileno(),sys.stdin.fileno()) - except (AttributeError, io.UnsupportedOperation): - sys.stdin = si - so = open(self.logfile, 'a+') - try: - os.dup2(so.fileno(),sys.stdout.fileno()) - except (AttributeError, io.UnsupportedOperation): - sys.stdout = so - try: - os.dup2(so.fileno(),sys.stderr.fileno()) - except (AttributeError, io.UnsupportedOperation): - sys.stderr = so - - # Clear out all log handlers prior to the fork() to avoid calling - # event handlers not part of the PRserver - for logger_iter in logging.Logger.manager.loggerDict.keys(): - logging.getLogger(logger_iter).handlers = [] - - # Ensure logging makes it to the logfile - streamhandler = logging.StreamHandler() - streamhandler.setLevel(logging.DEBUG) - formatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s") - streamhandler.setFormatter(formatter) - logger.addHandler(streamhandler) - - # write pidfile - pid = str(os.getpid()) - with open(self.pidfile, 'w') as pf: - pf.write("%s\n" % pid) - - self.work_forever() - self.delpid() - class PRServSingleton(object): def __init__(self, dbfile, logfile, interface): self.dbfile = dbfile @@ -308,8 +124,10 @@ class PRServSingleton(object): self.port = None def start(self): - self.prserv = PRServer(self.dbfile, self.logfile, self.interface, daemon=False) - self.prserv.start() + self.prserv = PRServer(self.dbfile, self.logfile, self.interface) + self.process = multiprocessing.Process(target=self.prserv.serve_forever) + self.process.start() + self.host, self.port = self.prserv.getinfo() def getinfo(self): @@ -323,13 +141,6 @@ class PRServerConnection(object): self.port = port self.connection, self.transport = bb.server.xmlrpcclient._create_server(self.host, self.port) - def terminate(self): - try: - logger.info("Terminating PRServer...") - self.connection.quit() - except Exception as exc: - sys.stderr.write("%s\n" % str(exc)) - def getPR(self, version, pkgarch, checksum): return self.connection.getPR(version, pkgarch, checksum) @@ -339,15 +150,82 @@ class PRServerConnection(object): def export(self,version=None, pkgarch=None, checksum=None, colinfo=True): return self.connection.export(version, pkgarch, checksum, colinfo) - def dump_db(self): - return self.connection.dump_db() - def importone(self, version, pkgarch, checksum, value): return self.connection.importone(version, pkgarch, checksum, value) def getinfo(self): return self.host, self.port +def run_as_daemon(func, pidfile, logfile): + """ + See Advanced Programming in the UNIX, Sec 13.3 + """ + try: + pid = os.fork() + if pid > 0: + os.waitpid(pid, 0) + #parent return instead of exit to give control + return pid + except OSError as e: + raise Exception("%s [%d]" % (e.strerror, e.errno)) + + os.setsid() + """ + fork again to make sure the daemon is not session leader, + which prevents it from acquiring controlling terminal + """ + try: + pid = os.fork() + if pid > 0: #parent + os._exit(0) + except OSError as e: + raise Exception("%s [%d]" % (e.strerror, e.errno)) + + os.chdir("/") + + sys.stdout.flush() + sys.stderr.flush() + + # We could be called from a python thread with io.StringIO as + # stdout/stderr or it could be 'real' unix fd forking where we need + # to physically close the fds to prevent the program launching us from + # potentially hanging on a pipe. Handle both cases. + si = open('/dev/null', 'r') + try: + os.dup2(si.fileno(),sys.stdin.fileno()) + except (AttributeError, io.UnsupportedOperation): + sys.stdin = si + so = open(logfile, 'a+') + try: + os.dup2(so.fileno(),sys.stdout.fileno()) + except (AttributeError, io.UnsupportedOperation): + sys.stdout = so + try: + os.dup2(so.fileno(),sys.stderr.fileno()) + except (AttributeError, io.UnsupportedOperation): + sys.stderr = so + + # Clear out all log handlers prior to the fork() to avoid calling + # event handlers not part of the PRserver + for logger_iter in logging.Logger.manager.loggerDict.keys(): + logging.getLogger(logger_iter).handlers = [] + + # Ensure logging makes it to the logfile + streamhandler = logging.StreamHandler() + streamhandler.setLevel(logging.DEBUG) + formatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s") + streamhandler.setFormatter(formatter) + logger.addHandler(streamhandler) + + # write pidfile + pid = str(os.getpid()) + with open(pidfile, 'w') as pf: + pf.write("%s\n" % pid) + + func() + os.remove(pidfile) + os._exit(0) + def start_daemon(dbfile, host, port, logfile): ip = socket.gethostbyname(host) pidfile = PIDPREFIX % (ip, port) @@ -363,7 +241,7 @@ def start_daemon(dbfile, host, port, logfile): return 1 server = PRServer(os.path.abspath(dbfile), os.path.abspath(logfile), (ip,port)) - server.start() + run_as_daemon(server.serve_forever, pidfile, os.path.abspath(logfile)) # Sometimes, the port (i.e. localhost:0) indicated by the user does not match with # the one the server actually is listening, so at least warn the user about it @@ -400,25 +278,13 @@ def stop_daemon(host, port): return 1 try: - PRServerConnection(ip, port).terminate() - except: - logger.critical("Stop PRService %s:%d failed" % (host,port)) - - try: - if pid: - wait_timeout = 0 - print("Waiting for pr-server to exit.") - while is_running(pid) and wait_timeout < 50: - time.sleep(0.1) - wait_timeout += 1 - - if is_running(pid): - print("Sending SIGTERM to pr-server.") - os.kill(pid,signal.SIGTERM) - time.sleep(0.1) + if is_running(pid): + print("Sending SIGTERM to pr-server.") + os.kill(pid, signal.SIGTERM) + time.sleep(0.1) - if os.path.exists(pidfile): - os.remove(pidfile) + if os.path.exists(pidfile): + os.remove(pidfile) except OSError as e: err = str(e) @@ -494,19 +360,14 @@ def auto_start(d): def auto_shutdown(): global singleton - if singleton: - host, port = singleton.getinfo() - try: - PRServerConnection(host, port).terminate() - except: - logger.critical("Stop PRService %s:%d failed" % (host,port)) - - try: - os.waitpid(singleton.prserv.pid, 0) - except ChildProcessError: - pass + if singleton and singleton.process: + singleton.process.terminate() + singleton.process.join() singleton = None def ping(host, port): conn=PRServerConnection(host, port) return conn.ping() + +def connect(host, port): + return PRServerConnection(host, port) diff --git a/poky/documentation/Makefile b/poky/documentation/Makefile index d40f390e2..996f01b7d 100644 --- a/poky/documentation/Makefile +++ b/poky/documentation/Makefile @@ -3,7 +3,7 @@ # You can set these variables from the command line, and also # from the environment for the first two. -SPHINXOPTS ?= -j auto +SPHINXOPTS ?= -W --keep-going -j auto SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build diff --git a/poky/documentation/README b/poky/documentation/README index 176c6db35..f9e803a28 100644 --- a/poky/documentation/README +++ b/poky/documentation/README @@ -32,7 +32,7 @@ these instances. Manual Organization =================== -Folders exist for individual manuals as follows: +Here the folders corresponding to individual manuals: * sdk-manual - The Yocto Project Software Development Kit (SDK) Developer's Guide. * bsp-guide - The Yocto Project Board Support Package (BSP) Developer's Guide @@ -88,8 +88,8 @@ documentation. Yocto Project documentation website =================================== -A new website has been created to host the Yocto Project -documentation, it can be found at: https://docs.yoctoproject.org/. +The website hosting the Yocto Project documentation, can be found +at: https://docs.yoctoproject.org/. The entire Yocto Project documentation, as well as the BitBake manual, is published on this website, including all previously released @@ -167,7 +167,7 @@ The layout of the Yocto Project manuals is organized as follows Section Section -The following headings styles are defined in Sphinx: +Here are the heading styles defined in Sphinx: Book => overline === Chapter => overline *** diff --git a/poky/documentation/brief-yoctoprojectqs/index.rst b/poky/documentation/brief-yoctoprojectqs/index.rst index 974ae5ebc..b92b0d33d 100644 --- a/poky/documentation/brief-yoctoprojectqs/index.rst +++ b/poky/documentation/brief-yoctoprojectqs/index.rst @@ -238,7 +238,7 @@ an entire Linux distribution, including the toolchain, from source. You can significantly speed up your build and guard against fetcher failures by using mirrors. To use mirrors, add these lines to your - local.conf file in the Build directory: :: + local.conf file in the Build directory:: SSTATE_MIRRORS = "\ file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \ @@ -297,7 +297,7 @@ modular development and makes it easier to reuse the layer metadata. Follow these steps to add a hardware layer: -#. **Find a Layer:** Lots of hardware layers exist. The Yocto Project +#. **Find a Layer:** Many hardware layers are available. The Yocto Project :yocto_git:`Source Repositories <>` has many hardware layers. This example adds the `meta-altera <https://github.com/kraj/meta-altera>`__ hardware layer. @@ -318,8 +318,8 @@ Follow these steps to add a hardware layer: Resolving deltas: 100% (13385/13385), done. Checking connectivity... done. - The hardware layer now exists - with other layers inside the Poky reference repository on your build + The hardware layer is now available + next to other layers inside the Poky reference repository on your build host as ``meta-altera`` and contains all the metadata needed to support hardware from Altera, which is owned by Intel. @@ -332,7 +332,7 @@ Follow these steps to add a hardware layer: #. **Change the Configuration to Build for a Specific Machine:** The :term:`MACHINE` variable in the ``local.conf`` file specifies the machine for the build. For this - example, set the ``MACHINE`` variable to ``cyclone5``. These + example, set the :term:`MACHINE` variable to ``cyclone5``. These configurations are used: https://github.com/kraj/meta-altera/blob/master/conf/machine/cyclone5.conf. @@ -431,8 +431,8 @@ information including the website, wiki pages, and user manuals: information. - **Yocto Project Mailing Lists:** Related mailing lists provide a forum - for discussion, patch submission and announcements. Several mailing - lists exist and are grouped according to areas of concern. See the + for discussion, patch submission and announcements. There are several + mailing lists grouped by topic. See the :ref:`ref-manual/resources:mailing lists` section in the Yocto Project Reference Manual for a complete list of Yocto Project mailing lists. diff --git a/poky/documentation/bsp-guide/bsp.rst b/poky/documentation/bsp-guide/bsp.rst index 89f156442..5c43f53d0 100644 --- a/poky/documentation/bsp-guide/bsp.rst +++ b/poky/documentation/bsp-guide/bsp.rst @@ -26,7 +26,7 @@ A BSP consists of a file structure inside a base directory. Collectively, you can think of the base directory, its file structure, and the contents as a BSP layer. Although not a strict requirement, BSP layers in the Yocto Project use the following well-established naming -convention: :: +convention:: meta-bsp_root_name @@ -58,7 +58,7 @@ Each repository is a BSP layer supported by the Yocto Project (e.g. ``meta-raspberrypi`` and ``meta-intel``). Each of these layers is a repository unto itself and clicking on the layer name displays two URLs from which you can clone the layer's repository to your local system. -Here is an example that clones the Raspberry Pi BSP layer: :: +Here is an example that clones the Raspberry Pi BSP layer:: $ git clone git://git.yoctoproject.org/meta-raspberrypi @@ -84,7 +84,7 @@ established after you run the OpenEmbedded build environment setup script (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). Adding the root directory allows the :term:`OpenEmbedded Build System` to recognize the BSP -layer and from it build an image. Here is an example: :: +layer and from it build an image. Here is an example:: BBLAYERS ?= " \ /usr/local/src/yocto/meta \ @@ -95,11 +95,11 @@ layer and from it build an image. Here is an example: :: .. note:: - Ordering and :term:`BBFILE_PRIORITY` for the layers listed in ``BBLAYERS`` + Ordering and :term:`BBFILE_PRIORITY` for the layers listed in :term:`BBLAYERS` matter. For example, if multiple layers define a machine configuration, the OpenEmbedded build system uses the last layer searched given similar layer priorities. The build system works from the top-down through the layers - listed in ``BBLAYERS``. + listed in :term:`BBLAYERS`. Some BSPs require or depend on additional layers beyond the BSP's root layer in order to be functional. In this case, you need to specify these @@ -113,7 +113,7 @@ this type of layer is OpenEmbedded's `meta-openembedded <https://github.com/openembedded/meta-openembedded>`__ layer. The ``meta-openembedded`` layer contains many ``meta-*`` layers. In cases like this, you need to include the names of the actual layers -you want to work with, such as: :: +you want to work with, such as:: BBLAYERS ?= " \ /usr/local/src/yocto/meta \ @@ -193,7 +193,7 @@ section. #. *Check Out the Proper Branch:* The branch you check out for ``meta-intel`` must match the same branch you are using for the - Yocto Project release (e.g. ``&DISTRO_NAME_NO_CAP;``): :: + Yocto Project release (e.g. ``&DISTRO_NAME_NO_CAP;``):: $ cd meta-intel $ git checkout -b &DISTRO_NAME_NO_CAP; remotes/origin/&DISTRO_NAME_NO_CAP; @@ -216,7 +216,7 @@ section. The process is identical to the process used for the ``meta-intel`` layer except for the layer's name. For example, if you determine that your hardware most closely matches the ``meta-raspberrypi``, clone - that layer: :: + that layer:: $ git clone git://git.yoctoproject.org/meta-raspberrypi Cloning into 'meta-raspberrypi'... @@ -267,7 +267,7 @@ maintain the distinction that the BSP layer, a build system, and tools are separate components that could be combined in certain end products. Before looking at the recommended form for the directory structure -inside a BSP layer, you should be aware that some requirements do exist +inside a BSP layer, you should be aware that there are some requirements in order for a BSP layer to be considered compliant with the Yocto Project. For that list of requirements, see the ":ref:`bsp-guide/bsp:released bsp requirements`" section. @@ -451,7 +451,7 @@ The following sections describe each part of the proposed BSP format. License Files ------------- -You can find these files in the BSP Layer at: :: +You can find these files in the BSP Layer at:: meta-bsp_root_name/bsp_license_file @@ -469,7 +469,7 @@ section in the Yocto Project Development Tasks Manual. README File ----------- -You can find this file in the BSP Layer at: :: +You can find this file in the BSP Layer at:: meta-bsp_root_name/README @@ -484,7 +484,7 @@ name of the BSP maintainer with his or her contact information. README.sources File ------------------- -You can find this file in the BSP Layer at: :: +You can find this file in the BSP Layer at:: meta-bsp_root_name/README.sources @@ -503,7 +503,7 @@ used to generate the images that ship with the BSP. Pre-built User Binaries ----------------------- -You can find these files in the BSP Layer at: :: +You can find these files in the BSP Layer at:: meta-bsp_root_name/binary/bootable_images @@ -526,7 +526,7 @@ information on the Metadata. Layer Configuration File ------------------------ -You can find this file in the BSP Layer at: :: +You can find this file in the BSP Layer at:: meta-bsp_root_name/conf/layer.conf @@ -550,7 +550,7 @@ template). :: LAYERDEPENDS_bsp = "intel" To illustrate the string substitutions, here are the corresponding -statements from the Raspberry Pi ``conf/layer.conf`` file: :: +statements from the Raspberry Pi ``conf/layer.conf`` file:: # We have a conf and classes directory, append to BBPATH BBPATH .= ":${LAYERDIR}" @@ -576,7 +576,7 @@ recognize the BSP. Hardware Configuration Options ------------------------------ -You can find these files in the BSP Layer at: :: +You can find these files in the BSP Layer at:: meta-bsp_root_name/conf/machine/*.conf @@ -607,14 +607,14 @@ For example, many ``tune-*`` files (e.g. ``tune-arm1136jf-s.inc``, To use an include file, you simply include them in the machine configuration file. For example, the Raspberry Pi BSP -``raspberrypi3.conf`` contains the following statement: :: +``raspberrypi3.conf`` contains the following statement:: include conf/machine/include/rpi-base.inc Miscellaneous BSP-Specific Recipe Files --------------------------------------- -You can find these files in the BSP Layer at: :: +You can find these files in the BSP Layer at:: meta-bsp_root_name/recipes-bsp/* @@ -624,7 +624,7 @@ Raspberry Pi BSP, there is the ``formfactor_0.0.bbappend`` file, which is an append file used to augment the recipe that starts the build. Furthermore, there are machine-specific settings used during the build that are defined by the ``machconfig`` file further down in the -directory. Here is the ``machconfig`` file for the Raspberry Pi BSP: :: +directory. Here is the ``machconfig`` file for the Raspberry Pi BSP:: HAVE_TOUCHSCREEN=0 HAVE_KEYBOARD=1 @@ -644,7 +644,7 @@ directory. Here is the ``machconfig`` file for the Raspberry Pi BSP: :: Display Support Files --------------------- -You can find these files in the BSP Layer at: :: +You can find these files in the BSP Layer at:: meta-bsp_root_name/recipes-graphics/* @@ -655,7 +655,7 @@ to support a display are kept here. Linux Kernel Configuration -------------------------- -You can find these files in the BSP Layer at: :: +You can find these files in the BSP Layer at:: meta-bsp_root_name/recipes-kernel/linux/linux*.bbappend meta-bsp_root_name/recipes-kernel/linux/*.bb @@ -678,14 +678,14 @@ Suppose you are using the ``linux-yocto_4.4.bb`` recipe to build the kernel. In other words, you have selected the kernel in your ``"bsp_root_name".conf`` file by adding :term:`PREFERRED_PROVIDER` and :term:`PREFERRED_VERSION` -statements as follows: :: +statements as follows:: PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" PREFERRED_VERSION_linux-yocto ?= "4.4%" .. note:: - When the preferred provider is assumed by default, the ``PREFERRED_PROVIDER`` + When the preferred provider is assumed by default, the :term:`PREFERRED_PROVIDER` statement does not appear in the ``"bsp_root_name".conf`` file. You would use the ``linux-yocto_4.4.bbappend`` file to append specific @@ -698,7 +698,7 @@ in the Yocto Project Linux Kernel Development Manual. An alternate scenario is when you create your own kernel recipe for the BSP. A good example of this is the Raspberry Pi BSP. If you examine the -``recipes-kernel/linux`` directory you see the following: :: +``recipes-kernel/linux`` directory you see the following:: linux-raspberrypi-dev.bb linux-raspberrypi.inc @@ -763,8 +763,8 @@ workflow. .. note:: - - Four hardware reference BSPs exist that are part of the Yocto - Project release and are located in the ``poky/meta-yocto-bsp`` + - There are four hardware reference BSPs in the Yocto + Project release, located in the ``poky/meta-yocto-bsp`` BSP layer: - Texas Instruments Beaglebone (``beaglebone-yocto``) @@ -773,8 +773,8 @@ workflow. - Two general IA platforms (``genericx86`` and ``genericx86-64``) - - Three core Intel BSPs exist as part of the Yocto Project - release in the ``meta-intel`` layer: + - There are three core Intel BSPs in the Yocto Project + release, in the ``meta-intel`` layer: - ``intel-core2-32``, which is a BSP optimized for the Core2 family of CPUs as well as all CPUs prior to the Silvermont @@ -832,10 +832,8 @@ workflow. Requirements and Recommendations for Released BSPs ================================================== -Certain requirements exist for a released BSP to be considered compliant -with the Yocto Project. Additionally, recommendations also exist. This -section describes the requirements and recommendations for released -BSPs. +This section describes requirements and recommendations for a released +BSP to be considered compliant with the Yocto Project. Released BSP Requirements ------------------------- @@ -864,7 +862,7 @@ Before looking at BSP requirements, you should consider the following: - It is not required that specific packages or package modifications exist in the BSP layer, beyond the requirements for general - compliance with the Yocto Project. For example, no requirement exists + compliance with the Yocto Project. For example, there is no requirement dictating that a specific kernel or kernel version be used in a given BSP. @@ -900,7 +898,7 @@ Yocto Project: - *License File:* You must include a license file in the ``meta-bsp_root_name`` directory. This license covers the BSP Metadata as a whole. You must specify which license to use since no - default license exists when one is not specified. See the + default license exists. See the :yocto_git:`COPYING.MIT </meta-raspberrypi/tree/COPYING.MIT>` file for the Raspberry Pi BSP in the ``meta-raspberrypi`` BSP layer as an example. @@ -1042,7 +1040,7 @@ BSP-specific configuration file named ``interfaces`` to the also supports several other machines: #. Edit the ``init-ifupdown_1.0.bbappend`` file so that it contains the - following: :: + following:: FILESEXTRAPATHS_prepend := "${THISDIR}/files:" @@ -1050,14 +1048,14 @@ also supports several other machines: directory. #. Create and place the new ``interfaces`` configuration file in the - BSP's layer here: :: + BSP's layer here:: meta-xyz/recipes-core/init-ifupdown/files/xyz-machine-one/interfaces .. note:: If the ``meta-xyz`` layer did not support multiple machines, you would place - the interfaces configuration file in the layer here: :: + the interfaces configuration file in the layer here:: meta-xyz/recipes-core/init-ifupdown/files/interfaces @@ -1107,7 +1105,7 @@ system requirements. unsuitable functionality or quality, you can use an encumbered version. -A couple different methods exist within the OpenEmbedded build system to +There are two different methods within the OpenEmbedded build system to satisfy the licensing requirements for an encumbered BSP. The following list describes them in order of preference: @@ -1123,15 +1121,15 @@ list describes them in order of preference: how to use these variables. If you build as you normally would, without specifying any recipes in - the ``LICENSE_FLAGS_WHITELIST``, the build stops and provides you + the :term:`LICENSE_FLAGS_WHITELIST`, the build stops and provides you with the list of recipes that you have tried to include in the image - that need entries in the ``LICENSE_FLAGS_WHITELIST``. Once you enter + that need entries in the :term:`LICENSE_FLAGS_WHITELIST`. Once you enter the appropriate license flags into the whitelist, restart the build to continue where it left off. During the build, the prompt will not appear again since you have satisfied the requirement. Once the appropriate license flags are on the white list in the - ``LICENSE_FLAGS_WHITELIST`` variable, you can build the encumbered + :term:`LICENSE_FLAGS_WHITELIST` variable, you can build the encumbered image with no change at all to the normal build process. #. *Get a Pre-Built Version of the BSP:* You can get this type of BSP by @@ -1144,7 +1142,7 @@ list describes them in order of preference: click-through license agreements presented by the website. If you want to build the image yourself using the recipes contained within the BSP tarball, you will still need to create an appropriate - ``LICENSE_FLAGS_WHITELIST`` to match the encumbered recipes in the + :term:`LICENSE_FLAGS_WHITELIST` to match the encumbered recipes in the BSP. .. note:: @@ -1186,11 +1184,11 @@ Use these steps to create a BSP layer: - *Create a Machine Configuration File:* Create a ``conf/machine/bsp_root_name.conf`` file. See :yocto_git:`meta-yocto-bsp/conf/machine </poky/tree/meta-yocto-bsp/conf/machine>` - for sample ``bsp_root_name.conf`` files. Other samples such as + for sample ``bsp_root_name.conf`` files. There are other samples such as :yocto_git:`meta-ti </meta-ti/tree/conf/machine>` and :yocto_git:`meta-freescale </meta-freescale/tree/conf/machine>` - exist from other vendors that have more specific machine and tuning + from other vendors that have more specific machine and tuning examples. - *Create a Kernel Recipe:* Create a kernel recipe in @@ -1210,7 +1208,7 @@ BSP Layer Configuration Example ------------------------------- The layer's ``conf`` directory contains the ``layer.conf`` configuration -file. In this example, the ``conf/layer.conf`` is the following: :: +file. In this example, the ``conf/layer.conf`` is the following:: # We have a conf and classes directory, add to BBPATH BBPATH .= ":${LAYERDIR}" @@ -1241,8 +1239,8 @@ As mentioned earlier in this section, the existence of a machine configuration file is what makes a layer a BSP layer as compared to a general or kernel layer. -One or more machine configuration files exist in the -``bsp_layer/conf/machine/`` directory of the layer: :: +There are one or more machine configuration files in the +``bsp_layer/conf/machine/`` directory of the layer:: bsp_layer/conf/machine/machine1\.conf bsp_layer/conf/machine/machine2\.conf @@ -1252,7 +1250,7 @@ One or more machine configuration files exist in the For example, the machine configuration file for the `BeagleBone and BeagleBone Black development boards <https://beagleboard.org/bone>`__ is located in the layer ``poky/meta-yocto-bsp/conf/machine`` and is named -``beaglebone-yocto.conf``: :: +``beaglebone-yocto.conf``:: #@TYPE: Machine #@NAME: Beaglebone-yocto machine @@ -1311,7 +1309,7 @@ Project Reference Manual. - :term:`PREFERRED_PROVIDER_virtual/xserver <PREFERRED_PROVIDER>`: The recipe that provides "virtual/xserver" when more than one provider is found. In this case, the recipe that provides - "virtual/xserver" is "xserver-xorg", which exists in + "virtual/xserver" is "xserver-xorg", available in ``poky/meta/recipes-graphics/xorg-xserver``. - :term:`XSERVER`: The packages that @@ -1326,7 +1324,7 @@ Project Reference Manual. .. tip:: - Many ``MACHINE*`` variables exist that help you configure a particular piece + There are many ``MACHINE*`` variables that help you configure a particular piece of hardware. - :term:`EXTRA_IMAGEDEPENDS`: @@ -1339,9 +1337,9 @@ Project Reference Manual. - :term:`DEFAULTTUNE`: Machines use tunings to optimize machine, CPU, and application performance. These features, which are collectively known as "tuning features", - exist in the :term:`OpenEmbedded-Core (OE-Core)` layer (e.g. + are set in the :term:`OpenEmbedded-Core (OE-Core)` layer (e.g. ``poky/meta/conf/machine/include``). In this example, the default - tuning file is "cortexa8hf-neon". + tuning file is ``cortexa8hf-neon``. .. note:: @@ -1407,7 +1405,7 @@ Project Reference Manual. The BeagleBone development board requires an SPL to boot and that SPL file type must be MLO. Consequently, the machine configuration needs - to define ``SPL_BINARY`` as ``MLO``. + to define :term:`SPL_BINARY` as ``MLO``. .. note:: @@ -1447,7 +1445,7 @@ BSP Kernel Recipe Example ------------------------- The kernel recipe used to build the kernel image for the BeagleBone -device was established in the machine configuration: :: +device was established in the machine configuration:: PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" PREFERRED_VERSION_linux-yocto ?= "5.0%" @@ -1458,7 +1456,7 @@ metadata used to build the kernel. In this case, a kernel append file kernel recipe (i.e. ``linux-yocto_5.0.bb``), which is located in :yocto_git:`/poky/tree/meta/recipes-kernel/linux`. -Following is the contents of the append file: :: +Following is the contents of the append file:: KBRANCH_genericx86 = "v5.0/standard/base" KBRANCH_genericx86-64 = "v5.0/standard/base" diff --git a/poky/documentation/conf.py b/poky/documentation/conf.py index 5a2e25f7b..6c6458fed 100644 --- a/poky/documentation/conf.py +++ b/poky/documentation/conf.py @@ -92,6 +92,9 @@ intersphinx_mapping = { 'bitbake': ('https://docs.yoctoproject.org/bitbake/', None) } +# Suppress "WARNING: unknown mimetype for ..." +suppress_warnings = ['epub.unknown_project_files'] + # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for diff --git a/poky/documentation/dev-manual/common-tasks.rst b/poky/documentation/dev-manual/common-tasks.rst index 176025f9e..762636a17 100644 --- a/poky/documentation/dev-manual/common-tasks.rst +++ b/poky/documentation/dev-manual/common-tasks.rst @@ -49,15 +49,13 @@ Follow these general steps to create your layer without using tools: (e.g. the cloned ``poky`` repository). While not strictly required, prepend the name of the directory with - the string "meta-". For example: - :: + the string "meta-". For example:: meta-mylayer meta-GUI_xyz meta-mymachine - With rare exceptions, a layer's name follows this form: - :: + With rare exceptions, a layer's name follows this form:: meta-root_name @@ -77,8 +75,7 @@ Follow these general steps to create your layer without using tools: :yocto_git:`Source Repositories </poky/tree/meta-yocto-bsp/conf>` demonstrates the required syntax. For your layer, you need to replace "yoctobsp" with a unique identifier for your layer (e.g. "machinexyz" - for a layer named "meta-machinexyz"): - :: + for a layer named "meta-machinexyz"):: # We have a conf and classes directory, add to BBPATH BBPATH .= ":${LAYERDIR}" @@ -97,10 +94,10 @@ Follow these general steps to create your layer without using tools: - :term:`BBPATH`: Adds the layer's root directory to BitBake's search path. Through the use of the - ``BBPATH`` variable, BitBake locates class files (``.bbclass``), + :term:`BBPATH` variable, BitBake locates class files (``.bbclass``), configuration files, and files that are included with ``include`` and ``require`` statements. For these cases, BitBake uses the - first file that matches the name found in ``BBPATH``. This is + first file that matches the name found in :term:`BBPATH`. This is similar to the way the ``PATH`` variable is used for binaries. It is recommended, therefore, that you use unique class and configuration filenames in your custom layer. @@ -195,8 +192,7 @@ following list: machine "one". To do so, you use an append file named ``base-files.bbappend`` and create a dependency on "foo" by altering the :term:`DEPENDS` - variable: - :: + variable:: DEPENDS = "foo" @@ -209,14 +205,12 @@ following list: ``foo``. To make sure your changes apply only when building machine "one", - use a machine override with the ``DEPENDS`` statement: - :: + use a machine override with the :term:`DEPENDS` statement:: DEPENDS_one = "foo" You should follow the same strategy when using ``_append`` - and ``_prepend`` operations: - :: + and ``_prepend`` operations:: DEPENDS_append_one = " foo" DEPENDS_prepend_one = "foo " @@ -224,8 +218,7 @@ following list: As an actual example, here's a snippet from the generic kernel include file ``linux-yocto.inc``, wherein the kernel compile and link options are adjusted in the - case of a subset of the supported architectures: - :: + case of a subset of the supported architectures:: DEPENDS_append_aarch64 = " libgcc" KERNEL_CC_append_aarch64 = " ${TOOLCHAIN_OPTIONS}" @@ -252,8 +245,7 @@ following list: file, you can use an append file to cause the build to use your own version of the file. For example, an append file in your layer at ``meta-one/recipes-core/base-files/base-files.bbappend`` could - extend :term:`FILESPATH` using :term:`FILESEXTRAPATHS` as follows: - :: + extend :term:`FILESPATH` using :term:`FILESEXTRAPATHS` as follows:: FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" @@ -263,7 +255,7 @@ following list: are building for a different machine and the ``bblayers.conf`` file includes the ``meta-one`` layer and the location of your machine-specific file is the first location where that file is - found according to ``FILESPATH``, builds for all machines will + found according to :term:`FILESPATH`, builds for all machines will also use that machine-specific file. You can make sure that a machine-specific file is used for a @@ -354,7 +346,7 @@ The application consists of the following sections: of the Yocto Project for which your layer is compatible. - *Acceptance Criteria:* Provide "Yes" or "No" answers for each of the - items in the checklist. Space exists at the bottom of the form for + items in the checklist. There is space at the bottom of the form for any explanations for items for which you answered "No". - *Recommendations:* Provide answers for the questions regarding Linux @@ -375,8 +367,7 @@ the COMMON and DISTRO related tests. Furthermore, if your layer is a BSP layer, the layer must pass the COMMON and BSP set of tests. To execute the script, enter the following commands from your build -directory: -:: +directory:: $ source oe-init-build-env $ yocto-check-layer your_layer_directory @@ -429,11 +420,10 @@ Enabling Your Layer Before the OpenEmbedded build system can use your new layer, you need to enable it. To enable your layer, simply add your layer's path to the -``BBLAYERS`` variable in your ``conf/bblayers.conf`` file, which is +:term:`BBLAYERS` variable in your ``conf/bblayers.conf`` file, which is found in the :term:`Build Directory`. The following example shows how to enable a layer named -``meta-mylayer``: -:: +``meta-mylayer``:: # POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly @@ -448,7 +438,7 @@ The following example shows how to enable a layer named " BitBake parses each ``conf/layer.conf`` file from the top down as -specified in the ``BBLAYERS`` variable within the ``conf/bblayers.conf`` +specified in the :term:`BBLAYERS` variable within the ``conf/bblayers.conf`` file. During the processing of each ``conf/layer.conf`` file, BitBake adds the recipes, classes and configurations contained within the particular layer to the source directory. @@ -488,8 +478,7 @@ As an example, consider the main formfactor recipe and a corresponding formfactor append file both from the :term:`Source Directory`. Here is the main formfactor recipe, which is named ``formfactor_0.0.bb`` and located in -the "meta" layer at ``meta/recipes-bsp/formfactor``: -:: +the "meta" layer at ``meta/recipes-bsp/formfactor``:: SUMMARY = "Device formfactor information" DESCRIPTION = "A formfactor configuration file provides information about the \ @@ -521,8 +510,7 @@ during the build. Following is the append file, which is named ``formfactor_0.0.bbappend`` and is from the Raspberry Pi BSP Layer named ``meta-raspberrypi``. The -file is in the layer at ``recipes-bsp/formfactor``: -:: +file is in the layer at ``recipes-bsp/formfactor``:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" @@ -543,19 +531,19 @@ have the supporting directory structure set up that will contain any files or patches you will be including from the layer. Using the immediate expansion assignment operator ``:=`` is important -because of the reference to ``THISDIR``. The trailing colon character is +because of the reference to :term:`THISDIR`. The trailing colon character is important as it ensures that items in the list remain colon-separated. .. note:: - BitBake automatically defines the ``THISDIR`` variable. You should + BitBake automatically defines the :term:`THISDIR` variable. You should never set this variable yourself. Using "_prepend" as part of the - ``FILESEXTRAPATHS`` ensures your path will be searched prior to other + :term:`FILESEXTRAPATHS` ensures your path will be searched prior to other paths in the final list. Also, not all append files add extra files. Many append files simply - exist to add build options (e.g. ``systemd``). For these cases, your - append file would not even use the ``FILESEXTRAPATHS`` statement. + allow to add build options (e.g. ``systemd``). For these cases, your + append file would not even use the :term:`FILESEXTRAPATHS` statement. Prioritizing Your Layer ----------------------- @@ -570,8 +558,7 @@ build system to calculate it based on the layer's dependencies. To specify the layer's priority manually, use the :term:`BBFILE_PRIORITY` -variable and append the layer's root name: -:: +variable and append the layer's root name:: BBFILE_PRIORITY_mylayer = "1" @@ -595,8 +582,7 @@ with their paths and priorities and on ``.bbappend`` files and their applicable recipes can help to reveal potential problems. For help on the BitBake layer management tool, use the following -command: -:: +command:: $ bitbake-layers --help NOTE: Starting bitbake server... @@ -676,8 +662,7 @@ The following list describes the available commands: variable values, you need to tidy these up yourself. Consider the following example. Here, the ``bitbake-layers`` command adds the line ``#### bbappended ...`` so that you know where the following - lines originate: - :: + lines originate:: ... DESCRIPTION = "A useful utility" @@ -691,8 +676,7 @@ The following list describes the available commands: EXTRA_OECONF += "--enable-somethingelse" - Ideally, you would tidy up these utilities as follows: - :: + Ideally, you would tidy up these utilities as follows:: ... DESCRIPTION = "Customized utility" @@ -746,14 +730,12 @@ create a layer with the following: In its simplest form, you can use the following command form to create a layer. The command creates a layer whose name corresponds to -"your_layer_name" in the current directory: -:: +"your_layer_name" in the current directory:: $ bitbake-layers create-layer your_layer_name As an example, the following command creates a layer named ``meta-scottrif`` -in your home directory: -:: +in your home directory:: $ cd /usr/home $ bitbake-layers create-layer meta-scottrif @@ -770,8 +752,7 @@ default, you can use the ``--example-recipe-name`` option. The easiest way to see how the ``bitbake-layers create-layer`` command works is to experiment with the script. You can also read the usage -information by entering the following: -:: +information by entering the following:: $ bitbake-layers create-layer --help NOTE: Starting bitbake server... @@ -799,16 +780,14 @@ Once you create your general layer, you must add it to your makes the OpenEmbedded build system aware of your layer so that it can search it for metadata. -Add your layer by using the ``bitbake-layers add-layer`` command: -:: +Add your layer by using the ``bitbake-layers add-layer`` command:: $ bitbake-layers add-layer your_layer_name Here is an example that adds a layer named ``meta-scottrif`` to the configuration file. Following the command that adds the layer is another ``bitbake-layers`` command that -shows the layers that are in your ``bblayers.conf`` file: -:: +shows the layers that are in your ``bblayers.conf`` file:: $ bitbake-layers add-layer meta-scottrif NOTE: Starting bitbake server... @@ -851,8 +830,7 @@ variable changes are in effect for every build and consequently affect all images, which might not be what you require. To add a package to your image using the local configuration file, use -the ``IMAGE_INSTALL`` variable with the ``_append`` operator: -:: +the :term:`IMAGE_INSTALL` variable with the ``_append`` operator:: IMAGE_INSTALL_append = " strace" @@ -870,15 +848,14 @@ takes effect. As shown in its simplest use, ``IMAGE_INSTALL_append`` affects all images. It is possible to extend the syntax so that the variable applies -to a specific image only. Here is an example: -:: +to a specific image only. Here is an example:: IMAGE_INSTALL_append_pn-core-image-minimal = " strace" This example adds ``strace`` to the ``core-image-minimal`` image only. You can add packages using a similar approach through the -``CORE_IMAGE_EXTRA_INSTALL`` variable. If you use this variable, only +:term:`CORE_IMAGE_EXTRA_INSTALL` variable. If you use this variable, only ``core-image-*`` images are affected. Customizing Images Using Custom ``IMAGE_FEATURES`` and ``EXTRA_IMAGE_FEATURES`` @@ -889,18 +866,18 @@ high-level image features by using the :term:`IMAGE_FEATURES` and :term:`EXTRA_IMAGE_FEATURES` variables. Although the functions for both variables are nearly -equivalent, best practices dictate using ``IMAGE_FEATURES`` from within -a recipe and using ``EXTRA_IMAGE_FEATURES`` from within your +equivalent, best practices dictate using :term:`IMAGE_FEATURES` from within +a recipe and using :term:`EXTRA_IMAGE_FEATURES` from within your ``local.conf`` file, which is found in the :term:`Build Directory`. To understand how these features work, the best reference is ``meta/classes/core-image.bbclass``. This class lists out the available -``IMAGE_FEATURES`` of which most map to package groups while some, such +:term:`IMAGE_FEATURES` of which most map to package groups while some, such as ``debug-tweaks`` and ``read-only-rootfs``, resolve as general configuration settings. -In summary, the file looks at the contents of the ``IMAGE_FEATURES`` +In summary, the file looks at the contents of the :term:`IMAGE_FEATURES` variable and then maps or configures the feature accordingly. Based on this information, the build system automatically adds the appropriate packages or configurations to the @@ -908,11 +885,11 @@ packages or configurations to the Effectively, you are enabling extra features by extending the class or creating a custom class for use with specialized image ``.bb`` files. -Use the ``EXTRA_IMAGE_FEATURES`` variable from within your local +Use the :term:`EXTRA_IMAGE_FEATURES` variable from within your local configuration file. Using a separate area from which to enable features with this variable helps you avoid overwriting the features in the image -recipe that are enabled with ``IMAGE_FEATURES``. The value of -``EXTRA_IMAGE_FEATURES`` is added to ``IMAGE_FEATURES`` within +recipe that are enabled with :term:`IMAGE_FEATURES`. The value of +:term:`EXTRA_IMAGE_FEATURES` is added to :term:`IMAGE_FEATURES` within ``meta/conf/bitbake.conf``. To illustrate how you can use these variables to modify your image, @@ -926,8 +903,8 @@ images both include OpenSSH. The ``core-image-minimal`` image does not contain an SSH server. You can customize your image and change these defaults. Edit the -``IMAGE_FEATURES`` variable in your recipe or use the -``EXTRA_IMAGE_FEATURES`` in your ``local.conf`` file so that it +:term:`IMAGE_FEATURES` variable in your recipe or use the +:term:`EXTRA_IMAGE_FEATURES` in your ``local.conf`` file so that it configures the image you are working with to include ``ssh-server-dropbear`` or ``ssh-server-openssh``. @@ -942,15 +919,14 @@ Customizing Images Using Custom .bb Files You can also customize an image by creating a custom recipe that defines additional software as part of the image. The following example shows -the form for the two lines you need: -:: +the form for the two lines you need:: IMAGE_INSTALL = "packagegroup-core-x11-base package1 package2" inherit core-image Defining the software using a custom recipe gives you total control over the contents of the image. It is important to use the correct names of -packages in the ``IMAGE_INSTALL`` variable. You must use the +packages in the :term:`IMAGE_INSTALL` variable. You must use the OpenEmbedded notation and not the Debian notation for the names (e.g. ``glibc-dev`` instead of ``libc6-dev``). @@ -958,8 +934,7 @@ The other method for creating a custom image is to base it on an existing image. For example, if you want to create an image based on ``core-image-sato`` but add the additional package ``strace`` to the image, copy the ``meta/recipes-sato/images/core-image-sato.bb`` to a new -``.bb`` and add the following line to the end of the copy: -:: +``.bb`` and add the following line to the end of the copy:: IMAGE_INSTALL += "strace" @@ -971,27 +946,26 @@ to create a custom package group recipe that is used to build the image or images. A good example of a package group recipe is ``meta/recipes-core/packagegroups/packagegroup-base.bb``. -If you examine that recipe, you see that the ``PACKAGES`` variable lists +If you examine that recipe, you see that the :term:`PACKAGES` variable lists the package group packages to produce. The ``inherit packagegroup`` statement sets appropriate default values and automatically adds ``-dev``, ``-dbg``, and ``-ptest`` complementary packages for each -package specified in the ``PACKAGES`` statement. +package specified in the :term:`PACKAGES` statement. .. note:: The ``inherit packagegroup`` line should be located near the top of the - recipe, certainly before the ``PACKAGES`` statement. + recipe, certainly before the :term:`PACKAGES` statement. -For each package you specify in ``PACKAGES``, you can use ``RDEPENDS`` -and ``RRECOMMENDS`` entries to provide a list of packages the parent +For each package you specify in :term:`PACKAGES`, you can use :term:`RDEPENDS` +and :term:`RRECOMMENDS` entries to provide a list of packages the parent task package should contain. You can see examples of these further down in the ``packagegroup-base.bb`` recipe. Here is a short, fabricated example showing the same basic pieces for a hypothetical packagegroup defined in ``packagegroup-custom.bb``, where -the variable ``PN`` is the standard way to abbreviate the reference to -the full packagegroup name ``packagegroup-custom``: -:: +the variable :term:`PN` is the standard way to abbreviate the reference to +the full packagegroup name ``packagegroup-custom``:: DESCRIPTION = "My Custom Package Groups" @@ -1020,7 +994,7 @@ their dependencies and their recommended package dependencies listed: ``packagegroup-custom-apps``, and ``packagegroup-custom-tools``. To build an image using these package group packages, you need to add ``packagegroup-custom-apps`` and/or ``packagegroup-custom-tools`` to -``IMAGE_INSTALL``. For other forms of image dependencies see the other +:term:`IMAGE_INSTALL`. For other forms of image dependencies see the other areas of this section. Customizing an Image Hostname @@ -1033,13 +1007,11 @@ configured hostname written to ``/etc/hostname`` is "qemux86". You can customize this name by altering the value of the "hostname" variable in the ``base-files`` recipe using either an append file or a -configuration file. Use the following in an append file: -:: +configuration file. Use the following in an append file:: hostname = "myhostname" -Use the following in a configuration file: -:: +Use the following in a configuration file:: hostname_pn-base-files = "myhostname" @@ -1054,8 +1026,7 @@ you can easily reset the default hostname. Another point of interest is that if you unset the variable, the image will have no default hostname in the filesystem. Here is an example that -unsets the variable in a configuration file: -:: +unsets the variable in a configuration file:: hostname_pn-base-files = "" @@ -1089,8 +1060,8 @@ The remainder of the section provides details for the steps. Locate or Automatically Create a Base Recipe -------------------------------------------- -You can always write a recipe from scratch. However, three choices exist -that can help you quickly get a start on a new recipe: +You can always write a recipe from scratch. However, there are three choices +that can help you quickly get started with a new recipe: - ``devtool add``: A command that assists in creating a recipe and an environment conducive to development. @@ -1136,8 +1107,7 @@ To run the tool, you just need to be in your :term:`Build Directory` and have sourced the build environment setup script (i.e. :ref:`structure-core-script`). -To get help on the tool, use the following command: -:: +To get help on the tool, use the following command:: $ recipetool -h NOTE: Starting bitbake server... @@ -1166,22 +1136,20 @@ locates it properly in the layer that contains your source files. Following are some syntax examples: - Use this syntax to generate a recipe based on source. Once generated, - the recipe resides in the existing source code layer: - :: + the recipe resides in the existing source code layer:: recipetool create -o OUTFILE source - Use this syntax to generate a recipe using code that you extract from source. The extracted code is placed in its own layer - defined by ``EXTERNALSRC``. + defined by :term:`EXTERNALSRC`. :: recipetool create -o OUTFILE -x EXTERNALSRC source - Use this syntax to generate a recipe based on source. The options direct ``recipetool`` to generate debugging information. Once generated, - the recipe resides in the existing source code layer: - :: + the recipe resides in the existing source code layer:: recipetool create -d -o OUTFILE source @@ -1236,8 +1204,7 @@ the recipe. recipe through the layer's ``conf/layer.conf`` file and the :term:`BBFILES` variable. This variable sets up a path from which the build system can locate - recipes. Here is the typical use: - :: + recipes. Here is the typical use:: BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ ${LAYERDIR}/recipes-*/*/*.bbappend" @@ -1249,8 +1216,7 @@ the recipe. ":ref:`dev-manual/common-tasks:understanding and creating layers`" section. - *Naming Your Recipe:* When you name your recipe, you need to follow - this naming convention: - :: + this naming convention:: basename_version.bb @@ -1276,8 +1242,7 @@ Assuming you have sourced the build environment setup script (i.e. :ref:`structure-core-script`) and you are in the :term:`Build Directory`, use BitBake to process your recipe. All you need to provide is the -``basename`` of the recipe as described in the previous section: -:: +``basename`` of the recipe as described in the previous section:: $ bitbake basename @@ -1289,8 +1254,7 @@ compilation and packaging files, and so forth. The path to the per-recipe temporary work directory depends on the context in which it is being built. The quickest way to find this path -is to have BitBake return it by running the following: -:: +is to have BitBake return it by running the following:: $ bitbake -e basename | grep ^WORKDIR= @@ -1299,8 +1263,7 @@ top-level folder named ``poky``, a default Build Directory at ``poky/build``, and a ``qemux86-poky-linux`` machine target system. Furthermore, suppose your recipe is named ``foo_1.3.0.bb``. In this case, the work directory the build system uses to build the package -would be as follows: -:: +would be as follows:: poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0 @@ -1325,22 +1288,22 @@ Fetching Code The first thing your recipe must do is specify how to fetch the source files. Fetching is controlled mainly through the :term:`SRC_URI` variable. Your recipe -must have a ``SRC_URI`` variable that points to where the source is +must have a :term:`SRC_URI` variable that points to where the source is located. For a graphical representation of source locations, see the ":ref:`overview-manual/concepts:sources`" section in the Yocto Project Overview and Concepts Manual. The :ref:`ref-tasks-fetch` task uses -the prefix of each entry in the ``SRC_URI`` variable value to determine +the prefix of each entry in the :term:`SRC_URI` variable value to determine which :ref:`fetcher <bitbake:bitbake-user-manual/bitbake-user-manual-fetching:fetchers>` to use to get your -source files. It is the ``SRC_URI`` variable that triggers the fetcher. +source files. It is the :term:`SRC_URI` variable that triggers the fetcher. The :ref:`ref-tasks-patch` task uses the variable after source is fetched to apply patches. The OpenEmbedded build system uses :term:`FILESOVERRIDES` for -scanning directory locations for local files in ``SRC_URI``. +scanning directory locations for local files in :term:`SRC_URI`. -The ``SRC_URI`` variable in your recipe must define each unique location +The :term:`SRC_URI` variable in your recipe must define each unique location for your source files. It is good practice to not hard-code version numbers in a URL used in ``SRC_URI``. Rather than hard-code these values, use ``${``\ :term:`PV`\ ``}``, @@ -1352,12 +1315,11 @@ recipe to match the new version. Here is a simple example from the ``meta/recipes-devtools/strace/strace_5.5.bb`` recipe where the source comes from a single tarball. Notice the use of the -:term:`PV` variable: -:: +:term:`PV` variable:: SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \ -Files mentioned in ``SRC_URI`` whose names end in a typical archive +Files mentioned in :term:`SRC_URI` whose names end in a typical archive extension (e.g. ``.tar``, ``.tar.gz``, ``.tar.bz2``, ``.zip``, and so forth), are automatically extracted during the :ref:`ref-tasks-unpack` task. For @@ -1369,8 +1331,7 @@ you must specify :term:`SRCREV` and you should specify :term:`PV` to include the revision with :term:`SRCPV`. Here is an example from the recipe -``meta/recipes-kernel/blktrace/blktrace_git.bb``: -:: +``meta/recipes-kernel/blktrace/blktrace_git.bb``:: SRCREV = "d6918c8832793b4205ed3bfede78c2f915c23385" @@ -1380,20 +1341,19 @@ is an example from the recipe SRC_URI = "git://git.kernel.dk/blktrace.git \ file://ldflags.patch" -If your ``SRC_URI`` statement includes URLs pointing to individual files +If your :term:`SRC_URI` statement includes URLs pointing to individual files fetched from a remote server other than a version control system, BitBake attempts to verify the files against checksums defined in your recipe to ensure they have not been tampered with or otherwise modified since the recipe was written. Two checksums are used: ``SRC_URI[md5sum]`` and ``SRC_URI[sha256sum]``. -If your ``SRC_URI`` variable points to more than a single URL (excluding +If your :term:`SRC_URI` variable points to more than a single URL (excluding SCM URLs), you need to provide the ``md5`` and ``sha256`` checksums for each URL. For these cases, you provide a name for each URL as part of -the ``SRC_URI`` and then reference that name in the subsequent checksum +the :term:`SRC_URI` and then reference that name in the subsequent checksum statements. Here is an example combining lines from the files -``git.inc`` and ``git_2.24.1.bb``: -:: +``git.inc`` and ``git_2.24.1.bb``:: SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \ ${KERNELORG_MIRROR}/software/scm/git/git-manpages-${PV}.tar.gz;name=manpages" @@ -1409,7 +1369,7 @@ with other signatures on the download page for the upstream source (e.g. OpenEmbedded build system only deals with ``sha256sum`` and ``md5sum``, you should verify all the signatures you find by hand. -If no ``SRC_URI`` checksums are specified when you attempt to build the +If no :term:`SRC_URI` checksums are specified when you attempt to build the recipe, or you provide an incorrect checksum, the build will produce an error for each missing or incorrect checksum. As part of the error message, the build system provides the checksum string corresponding to @@ -1425,7 +1385,7 @@ paste them into your recipe and then run the build again to continue. This final example is a bit more complicated and is from the ``meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.20.bb`` recipe. The -example's ``SRC_URI`` statement identifies multiple files as the source +example's :term:`SRC_URI` statement identifies multiple files as the source files for the recipe: a tarball, a patch file, a desktop file, and an icon. :: @@ -1464,9 +1424,9 @@ If you are fetching your source files from an upstream source archived tarball and the tarball's internal structure matches the common convention of a top-level subdirectory named ``${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``, -then you do not need to set ``S``. However, if ``SRC_URI`` specifies to +then you do not need to set :term:`S`. However, if :term:`SRC_URI` specifies to fetch source from an archive that does not use this convention, or from -an SCM like Git or Subversion, your recipe needs to define ``S``. +an SCM like Git or Subversion, your recipe needs to define :term:`S`. If processing your recipe using BitBake successfully unpacks the source files, you need to be sure that the directory pointed to by ``${S}`` @@ -1476,7 +1436,7 @@ Patching Code ------------- Sometimes it is necessary to patch code after it has been fetched. Any -files mentioned in ``SRC_URI`` whose names end in ``.patch`` or +files mentioned in :term:`SRC_URI` whose names end in ``.patch`` or ``.diff`` or compressed versions of these suffixes (e.g. ``diff.gz`` are treated as patches. The :ref:`ref-tasks-patch` task @@ -1485,7 +1445,7 @@ automatically applies these patches. The build system should be able to apply patches with the "-p1" option (i.e. one directory level in the path will be stripped off). If your patch needs to have more directory levels stripped off, specify the -number of levels using the "striplevel" option in the ``SRC_URI`` entry +number of levels using the "striplevel" option in the :term:`SRC_URI` entry for the patch. Alternatively, if your patch needs to be applied in a specific subdirectory that is not specified in the patch file, use the "patchdir" option in the entry. @@ -1505,25 +1465,24 @@ Your recipe needs to have both the :term:`LIC_FILES_CHKSUM` variables: -- ``LICENSE``: This variable specifies the license for the software. +- :term:`LICENSE`: This variable specifies the license for the software. If you do not know the license under which the software you are building is distributed, you should go to the source code and look for that information. Typical files containing this information - include ``COPYING``, ``LICENSE``, and ``README`` files. You could + include ``COPYING``, :term:`LICENSE`, and ``README`` files. You could also find the information near the top of a source file. For example, given a piece of software licensed under the GNU General Public - License version 2, you would set ``LICENSE`` as follows: - :: + License version 2, you would set :term:`LICENSE` as follows:: LICENSE = "GPLv2" - The licenses you specify within ``LICENSE`` can have any name as long + The licenses you specify within :term:`LICENSE` can have any name as long as you do not use spaces, since spaces are used as separators between license names. For standard licenses, use the names of the files in - ``meta/files/common-licenses/`` or the ``SPDXLICENSEMAP`` flag names + ``meta/files/common-licenses/`` or the :term:`SPDXLICENSEMAP` flag names defined in ``meta/conf/licenses.conf``. -- ``LIC_FILES_CHKSUM``: The OpenEmbedded build system uses this +- :term:`LIC_FILES_CHKSUM`: The OpenEmbedded build system uses this variable to make sure the license text has not changed. If it has, the build produces an error and it affords you the chance to figure it out and correct the problem. @@ -1533,18 +1492,17 @@ variables: the checksums of the files to be sure the text has not changed. Any differences result in an error with the message containing the current checksum. For more explanation and examples of how to set the - ``LIC_FILES_CHKSUM`` variable, see the + :term:`LIC_FILES_CHKSUM` variable, see the ":ref:`dev-manual/common-tasks:tracking license changes`" section. To determine the correct checksum string, you can list the - appropriate files in the ``LIC_FILES_CHKSUM`` variable with incorrect + appropriate files in the :term:`LIC_FILES_CHKSUM` variable with incorrect md5 strings, attempt to build the software, and then note the resulting error messages that will report the correct md5 strings. See the ":ref:`dev-manual/common-tasks:fetching code`" section for additional information. - Here is an example that assumes the software has a ``COPYING`` file: - :: + Here is an example that assumes the software has a ``COPYING`` file:: LIC_FILES_CHKSUM = "file://COPYING;md5=xxx" @@ -1563,8 +1521,8 @@ software is built; and runtime dependencies, which are required to be installed on the target in order for the software to run. Within a recipe, you specify build-time dependencies using the -:term:`DEPENDS` variable. Although -nuances exist, items specified in ``DEPENDS`` should be names of other +:term:`DEPENDS` variable. Although there are nuances, +items specified in :term:`DEPENDS` should be names of other recipes. It is important that you specify all build-time dependencies explicitly. @@ -1631,7 +1589,7 @@ your software is built: - *Autotools:* If your source files have a ``configure.ac`` file, then your software is built using Autotools. If this is the case, you just - need to worry about modifying the configuration. + need to modify the configuration. When using Autotools, your recipe needs to inherit the :ref:`autotools <ref-classes-autotools>` class @@ -1645,7 +1603,7 @@ your software is built: - *CMake:* If your source files have a ``CMakeLists.txt`` file, then your software is built using CMake. If this is the case, you just - need to worry about modifying the configuration. + need to modify the configuration. When you use CMake, your recipe needs to inherit the :ref:`cmake <ref-classes-cmake>` class and your @@ -1681,12 +1639,12 @@ your software is built: Once configuration succeeds, it is always good practice to look at the ``log.do_configure`` file to ensure that the appropriate options have been enabled and no additional build-time dependencies need to be added -to ``DEPENDS``. For example, if the configure script reports that it -found something not mentioned in ``DEPENDS``, or that it did not find +to :term:`DEPENDS`. For example, if the configure script reports that it +found something not mentioned in :term:`DEPENDS`, or that it did not find something that it needed for some desired optional functionality, then -you would need to add those to ``DEPENDS``. Looking at the log might +you would need to add those to :term:`DEPENDS`. Looking at the log might also reveal items being checked for, enabled, or both that you do not -want, or items not being found that are in ``DEPENDS``, in which case +want, or items not being found that are in :term:`DEPENDS`, in which case you would need to look at passing extra options to the configure script as needed. For reference information on configure options specific to the software you are building, you can consult the output of the @@ -1747,8 +1705,7 @@ standard mainline kernel, not your own custom one. When you use custom kernel headers you need to get them from :term:`STAGING_KERNEL_DIR`, which is the directory with kernel headers that are required to build -out-of-tree modules. Your recipe will also need the following: -:: +out-of-tree modules. Your recipe will also need the following:: do_configure[depends] += "virtual/kernel:do_shared_workdir" @@ -1779,8 +1736,7 @@ Here are some common issues that cause failures. To fix the problem, you need to either satisfy the missing dependency in the Makefile or whatever script produced the Makefile, or (as a - workaround) set :term:`PARALLEL_MAKE` to an empty string: - :: + workaround) set :term:`PARALLEL_MAKE` to an empty string:: PARALLEL_MAKE = "" @@ -1806,13 +1762,13 @@ Here are some common issues that cause failures. compilation process notes that files could not be found. In these cases, you need to go back and add additional options to the configure script as well as possibly add additional build-time - dependencies to ``DEPENDS``. + dependencies to :term:`DEPENDS`. Occasionally, it is necessary to apply a patch to the source to ensure the correct paths are used. If you need to specify paths to find files staged into the sysroot from other recipes, use the variables that the OpenEmbedded build system provides (e.g. - ``STAGING_BINDIR``, ``STAGING_INCDIR``, ``STAGING_DATADIR``, and so + :term:`STAGING_BINDIR`, :term:`STAGING_INCDIR`, :term:`STAGING_DATADIR`, and so forth). Installing @@ -1889,8 +1845,7 @@ installed correctly. missing dependencies between targets that can result in race conditions. If you experience intermittent failures during ``do_install``, you might be able to work around them by disabling - parallel Makefile installs by adding the following to the recipe: - :: + parallel Makefile installs by adding the following to the recipe:: PARALLEL_MAKEINST = "" @@ -2006,8 +1961,7 @@ take. The following list describes the process: :term:`MACHINE` value is passed into the configure script or a patch is applied only for a particular machine), you should mark them as such by adding the following to the - recipe: - :: + recipe:: PACKAGE_ARCH = "${MACHINE_ARCH}" @@ -2016,8 +1970,7 @@ take. The following list describes the process: all (e.g. recipes that simply package script files or configuration files), you should use the :ref:`allarch <ref-classes-allarch>` class to - do this for you by adding this to your recipe: - :: + do this for you by adding this to your recipe:: inherit allarch @@ -2061,8 +2014,7 @@ used by the :ref:`ref-tasks-populate_sysroot` task as defined by the the :term:`SYSROOT_DIRS` variable to automatically populate the sysroot. It is possible to modify the list of directories that populate the sysroot. The following example shows how you could add the ``/opt`` directory to -the list of directories within a recipe: -:: +the list of directories within a recipe:: SYSROOT_DIRS += "/opt" @@ -2070,7 +2022,7 @@ the list of directories within a recipe: The `/sysroot-only` is to be used by recipes that generate artifacts that are not included in the target filesystem, allowing them to share - these artifacts without needing to use the ``DEPLOY_DIR``. + these artifacts without needing to use the :term:`DEPLOY_DIR`. For a more complete description of the :ref:`ref-tasks-populate_sysroot` task and its associated functions, see the @@ -2091,13 +2043,12 @@ kernel recipe. Suppose you have three kernel recipes whose in some way uses a :term:`PROVIDES` statement that essentially identifies itself as being able to provide ``virtual/kernel``. Here is one way through the -:ref:`kernel <ref-classes-kernel>` class: -:: +:ref:`kernel <ref-classes-kernel>` class:: PROVIDES += "${@ "virtual/kernel" if (d.getVar("KERNEL_PACKAGE_NAME") == "kernel") else "" }" Any recipe that inherits the ``kernel`` class is -going to utilize a ``PROVIDES`` statement that identifies that recipe as +going to utilize a :term:`PROVIDES` statement that identifies that recipe as being able to provide the ``virtual/kernel`` item. Now comes the time to actually build an image and you need a kernel @@ -2107,8 +2058,7 @@ an example, consider the :yocto_git:`x86-base.inc </poky/tree/meta/conf/machine/include/x86-base.inc>` include file, which is a machine (i.e. :term:`MACHINE`) configuration file. This include file is the reason all x86-based machines use the ``linux-yocto`` kernel. Here are the -relevant lines from the include file: -:: +relevant lines from the include file:: PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto" PREFERRED_VERSION_linux-yocto ??= "4.15%" @@ -2116,24 +2066,22 @@ relevant lines from the include file: When you use a virtual provider, you do not have to "hard code" a recipe name as a build dependency. You can use the :term:`DEPENDS` variable to state the -build is dependent on ``virtual/kernel`` for example: -:: +build is dependent on ``virtual/kernel`` for example:: DEPENDS = "virtual/kernel" During the build, the OpenEmbedded build system picks the correct recipe needed for the ``virtual/kernel`` dependency based on -the ``PREFERRED_PROVIDER`` variable. If you want to use the small kernel +the :term:`PREFERRED_PROVIDER` variable. If you want to use the small kernel mentioned at the beginning of this section, configure your build as -follows: -:: +follows:: PREFERRED_PROVIDER_virtual/kernel ??= "kernel-small" .. note:: - Any recipe that ``PROVIDES`` a ``virtual/*`` item that is ultimately not - selected through ``PREFERRED_PROVIDER`` does not get built. Preventing these + Any recipe that :term:`PROVIDES` a ``virtual/*`` item that is ultimately not + selected through :term:`PREFERRED_PROVIDER` does not get built. Preventing these recipes from building is usually the desired behavior since this mechanism's purpose is to select between mutually exclusive alternative providers. @@ -2178,8 +2126,7 @@ In order to ensure the versions compare properly, the recommended convention is to set :term:`PV` within the recipe to "previous_version+current_version". You can use an additional variable so that you can use the current version elsewhere. Here is an -example: -:: +example:: REALPV = "0.8.16-rc1" PV = "0.8.15+${REALPV}" @@ -2198,8 +2145,7 @@ required, specify ``${``\ :term:`PN`\ ``}`` in place of PACKAGENAME. -A post-installation function has the following structure: -:: +A post-installation function has the following structure:: pkg_postinst_PACKAGENAME() { # Commands to carry out @@ -2237,8 +2183,8 @@ script to first boot is undesirable and for read-only rootfs impossible. .. note:: - Equivalent support for pre-install, pre-uninstall, and post-uninstall - scripts exist by way of ``pkg_preinst``, ``pkg_prerm``, and ``pkg_postrm``, + There is equivalent support for pre-install, pre-uninstall, and post-uninstall + scripts by way of ``pkg_preinst``, ``pkg_prerm``, and ``pkg_postrm``, respectively. These scrips work in exactly the same way as does ``pkg_postinst`` with the exception that they run at different times. Also, because of when they run, they are not applicable to being run at image @@ -2275,8 +2221,8 @@ Single .c File Package (Hello World!) Building an application from a single file that is stored locally (e.g. under ``files``) requires a recipe that has the file listed in the -``SRC_URI`` variable. Additionally, you need to manually write the -``do_compile`` and ``do_install`` tasks. The ``S`` variable defines the +:term:`SRC_URI` variable. Additionally, you need to manually write the +``do_compile`` and ``do_install`` tasks. The :term:`S` variable defines the directory containing the source code, which is set to :term:`WORKDIR` in this case - the directory BitBake uses for the build. @@ -2310,7 +2256,7 @@ Autotooled Package ~~~~~~~~~~~~~~~~~~ Applications that use Autotools such as ``autoconf`` and ``automake`` -require a recipe that has a source archive listed in ``SRC_URI`` and +require a recipe that has a source archive listed in :term:`SRC_URI` and also inherit the :ref:`autotools <ref-classes-autotools>` class, which contains the definitions of all the steps needed to build an @@ -2329,7 +2275,7 @@ Following is one example: (``hello_2.3.bb``) inherit autotools gettext -The variable ``LIC_FILES_CHKSUM`` is used to track source license +The variable :term:`LIC_FILES_CHKSUM` is used to track source license changes as described in the ":ref:`dev-manual/common-tasks:tracking license changes`" section in the Yocto Project Overview and Concepts Manual. You can quickly create @@ -2339,7 +2285,7 @@ Makefile-Based Package ~~~~~~~~~~~~~~~~~~~~~~ Applications that use GNU ``make`` also require a recipe that has the -source archive listed in ``SRC_URI``. You do not need to add a +source archive listed in :term:`SRC_URI`. You do not need to add a ``do_compile`` step since by default BitBake starts the ``make`` command to compile the application. If you need additional ``make`` options, you should store them in the @@ -2351,14 +2297,12 @@ Otherwise, BitBake runs an empty ``do_install`` task by default. Some applications might require extra parameters to be passed to the compiler. For example, the application might need an additional header -path. You can accomplish this by adding to the ``CFLAGS`` variable. The -following example shows this: -:: +path. You can accomplish this by adding to the :term:`CFLAGS` variable. The +following example shows this:: CFLAGS_prepend = "-I ${S}/include " -In the following example, ``mtd-utils`` is a makefile-based package: -:: +In the following example, ``mtd-utils`` is a makefile-based package:: SUMMARY = "Tools for managing memory technology devices" SECTION = "base" @@ -2397,14 +2341,13 @@ In the following example, ``mtd-utils`` is a makefile-based package: Splitting an Application into Multiple Packages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -You can use the variables ``PACKAGES`` and ``FILES`` to split an +You can use the variables :term:`PACKAGES` and :term:`FILES` to split an application into multiple packages. Following is an example that uses the ``libxpm`` recipe. By default, this recipe generates a single package that contains the library along with a few binaries. You can modify the recipe to split the binaries -into separate packages: -:: +into separate packages:: require xorg-lib-common.inc @@ -2422,18 +2365,18 @@ into separate packages: In the previous example, we want to ship the ``sxpm`` and ``cxpm`` binaries in separate packages. Since ``bindir`` would be packaged into -the main ``PN`` package by default, we prepend the ``PACKAGES`` variable +the main :term:`PN` package by default, we prepend the :term:`PACKAGES` variable so additional package names are added to the start of list. This results in the extra ``FILES_*`` variables then containing information that define which files and directories go into which packages. Files included by earlier packages are skipped by latter packages. Thus, the -main ``PN`` package does not include the above listed files. +main :term:`PN` package does not include the above listed files. Packaging Externally Produced Binaries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sometimes, you need to add pre-compiled binaries to an image. For -example, suppose that binaries for proprietary code exist, which are +example, suppose that there are binaries for proprietary code, created by a particular division of a company. Your part of the company needs to use those binaries as part of an image that you are building using the OpenEmbedded build system. Since you only have the binaries @@ -2472,12 +2415,12 @@ Reference Manual's variable glossary. - Using :term:`DEPENDS` is a good idea even for components distributed in binary form, and is often necessary for shared libraries. For a shared library, listing the - library dependencies in ``DEPENDS`` makes sure that the libraries + library dependencies in :term:`DEPENDS` makes sure that the libraries are available in the staging sysroot when other recipes link against the library, which might be necessary for successful linking. - - Using ``DEPENDS`` also allows runtime dependencies between + - Using :term:`DEPENDS` also allows runtime dependencies between packages to be added automatically. See the ":ref:`overview-manual/concepts:automatically added runtime dependencies`" section in the Yocto Project Overview and Concepts Manual for more @@ -2498,8 +2441,7 @@ doing the following: that replaces ``do_configure`` and ``do_compile`` with custom versions, then you can use the ``[``\ :ref:`noexec <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` - flag to turn the tasks into no-ops, as follows: - :: + flag to turn the tasks into no-ops, as follows:: do_configure[noexec] = "1" do_compile[noexec] = "1" @@ -2558,8 +2500,7 @@ chapter of the BitBake User Manual. supported. The following example shows some of the ways you can use variables in - recipes: - :: + recipes:: S = "${WORKDIR}/postfix-${PV}" CFLAGS += "-DNO_ASM" @@ -2572,8 +2513,7 @@ chapter of the BitBake User Manual. syntax, although access to OpenEmbedded variables and internal methods are also available. - The following is an example function from the ``sed`` recipe: - :: + Here is an example function from the ``sed`` recipe:: do_install () { autotools_do_install @@ -2594,16 +2534,14 @@ chapter of the BitBake User Manual. from other files (``include`` and ``require``) and export variables to the environment (``export``). - The following example shows the use of some of these keywords: - :: + The following example shows the use of some of these keywords:: export POSTCONF = "${STAGING_BINDIR}/postconf" inherit autoconf require otherfile.inc - *Comments (#):* Any lines that begin with the hash character (``#``) - are treated as comment lines and are ignored: - :: + are treated as comment lines and are ignored:: # This is a comment @@ -2615,8 +2553,7 @@ in the BitBake User Manual. - *Line Continuation (\\):* Use the backward slash (``\``) character to split a statement over multiple lines. Place the slash character at - the end of the line that is to be continued on the next line: - :: + the end of the line that is to be continued on the next line:: VAR = "A really long \ line" @@ -2627,8 +2564,7 @@ in the BitBake User Manual. slash character. - *Using Variables (${VARNAME}):* Use the ``${VARNAME}`` syntax to - access the contents of a variable: - :: + access the contents of a variable:: SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/zlib-${PV}.tar.gz" @@ -2648,8 +2584,7 @@ in the BitBake User Manual. when you make the assignment, but this is not generally needed. - *Quote All Assignments ("value"):* Use double quotes around values in - all variable assignments (e.g. ``"value"``). Following is an example: - :: + all variable assignments (e.g. ``"value"``). Following is an example:: VAR1 = "${OTHERVAR}" VAR2 = "The version is ${PV}" @@ -2663,13 +2598,11 @@ in the BitBake User Manual. Here is an example where ``VAR1`` is set to "New value" if it is currently empty. However, if ``VAR1`` has already been set, it - remains unchanged: - :: + remains unchanged:: VAR1 ?= "New value" - In this next example, ``VAR1`` is left with the value "Original value": - :: + In this next example, ``VAR1`` is left with the value "Original value":: VAR1 = "Original value" VAR1 ?= "New value" @@ -2682,8 +2615,7 @@ in the BitBake User Manual. This operator adds a space between the existing content of the variable and the new content. - Here is an example: - :: + Here is an example:: SRC_URI += "file://fix-makefile.patch" @@ -2695,8 +2627,7 @@ in the BitBake User Manual. This operator adds a space between the new content and the existing content of the variable. - Here is an example: - :: + Here is an example:: VAR =+ "Starts" @@ -2708,15 +2639,13 @@ in the BitBake User Manual. The following example shows the space being explicitly added to the start to ensure the appended value is not merged with the existing - value: - :: + value:: SRC_URI_append = " file://fix-makefile.patch" You can also use the ``_append`` operator with overrides, which results in the actions - only being performed for the specified target or machine: - :: + only being performed for the specified target or machine:: SRC_URI_append_sh4 = " file://fix-makefile.patch" @@ -2728,15 +2657,13 @@ in the BitBake User Manual. The following example shows the space being explicitly added to the end to ensure the prepended value is not merged with the existing - value: - :: + value:: CFLAGS_prepend = "-I${S}/myincludes " You can also use the ``_prepend`` operator with overrides, which results in the actions - only being performed for the specified target or machine: - :: + only being performed for the specified target or machine:: CFLAGS_prepend_sh4 = "-I${S}/myincludes " @@ -2746,8 +2673,7 @@ in the BitBake User Manual. value to "standard/base" for any target :term:`MACHINE`, except for qemuarm where it should be set to "standard/arm-versatile-926ejs", - you would do the following: - :: + you would do the following:: KBRANCH = "standard/base" KBRANCH_qemuarm = "standard/arm-versatile-926ejs" @@ -2770,8 +2696,7 @@ in the BitBake User Manual. search and replacement on a variable). You indicate Python code using the ``${@python_code}`` syntax for the - variable assignment: - :: + variable assignment:: SRC_URI = "ftp://ftp.info-zip.org/pub/infozip/src/zip${@d.getVar('PV',1).replace('.', '')}.tgz @@ -2822,7 +2747,7 @@ file or include from a lower-level configuration file are as follows: - ``PREFERRED_PROVIDER_virtual/kernel`` -- ``MACHINE_FEATURES`` (e.g. "apm screen wifi") +- :term:`MACHINE_FEATURES` (e.g. "apm screen wifi") You might also need these variables: @@ -2830,7 +2755,7 @@ You might also need these variables: - ``KERNEL_IMAGETYPE`` (e.g. "zImage") -- ``IMAGE_FSTYPES`` (e.g. "tar.gz jffs2") +- :term:`IMAGE_FSTYPES` (e.g. "tar.gz jffs2") You can find full details on these variables in the reference section. You can leverage existing machine ``.conf`` files from @@ -2846,8 +2771,8 @@ examples in the Source Directory at ``meta/recipes-kernel/linux`` that you can use as references. If you are creating a new kernel recipe, normal recipe-writing rules -apply for setting up a ``SRC_URI``. Thus, you need to specify any -necessary patches and set ``S`` to point at the source code. You need to +apply for setting up a :term:`SRC_URI`. Thus, you need to specify any +necessary patches and set :term:`S` to point at the source code. You need to create a ``do_configure`` task that configures the unpacked kernel with a ``defconfig`` file. You can do this by using a ``make defconfig`` command or, more commonly, by copying in a suitable ``defconfig`` file @@ -2860,9 +2785,8 @@ If you are extending an existing kernel recipe, it is usually a matter of adding a suitable ``defconfig`` file. The file needs to be added into a location similar to ``defconfig`` files used for other machines in a given kernel recipe. A possible way to do this is by listing the file in -the ``SRC_URI`` and adding the machine to the expression in -``COMPATIBLE_MACHINE``: -:: +the :term:`SRC_URI` and adding the machine to the expression in +:term:`COMPATIBLE_MACHINE`:: COMPATIBLE_MACHINE = '(qemux86|qemumips)' @@ -2889,8 +2813,7 @@ contains directories for specific machines such as ``qemuarm`` and defaults, see the ``meta/recipes-bsp/formfactor/files/config`` file found in the same area. -Following is an example for "qemuarm" machine: -:: +Following is an example for "qemuarm" machine:: HAVE_TOUCHSCREEN=1 HAVE_KEYBOARD=1 @@ -2909,7 +2832,7 @@ Over time, upstream developers publish new versions for software built by layer recipes. It is recommended to keep recipes up-to-date with upstream version releases. -While several methods exist that allow you upgrade a recipe, you might +While there are several methods to upgrade a recipe, you might consider checking on the upgrade status of a recipe first. You can do so using the ``devtool check-upgrade-status`` command. See the ":ref:`devtool-checking-on-the-upgrade-status-of-a-recipe`" @@ -2938,8 +2861,8 @@ commit messages in the layer's tree for the changes made to recipes. .. note:: - Conditions do exist when you should not use AUH to upgrade recipes - and you should instead use either ``devtool upgrade`` or upgrade your + In some conditions, you should not use AUH to upgrade recipes + and should instead use either ``devtool upgrade`` or upgrade your recipes manually: - When AUH cannot complete the upgrade sequence. This situation @@ -2961,22 +2884,19 @@ The following steps describe how to set up the AUH utility: 2. *Make Sure Git is Configured:* The AUH utility requires Git to be configured because AUH uses Git to save upgrades. Thus, you must have Git user and email configured. The following command shows your - configurations: - :: + configurations:: $ git config --list If you do not have the user and - email configured, you can use the following commands to do so: - :: + email configured, you can use the following commands to do so:: $ git config --global user.name some_name $ git config --global user.email username@domain.com 3. *Clone the AUH Repository:* To use AUH, you must clone the repository onto your development host. The following command uses Git to create - a local copy of the repository on your system: - :: + a local copy of the repository on your system:: $ git clone git://git.yoctoproject.org/auto-upgrade-helper Cloning into 'auto-upgrade-helper'... remote: Counting objects: 768, done. @@ -2992,8 +2912,7 @@ The following steps describe how to set up the AUH utility: 4. *Create a Dedicated Build Directory:* Run the :ref:`structure-core-script` script to create a fresh build directory that you use exclusively for - running the AUH utility: - :: + running the AUH utility:: $ cd poky $ source oe-init-build-env your_AUH_build_directory @@ -3003,15 +2922,14 @@ The following steps describe how to set up the AUH utility: undesirably. 5. *Make Configurations in Your Local Configuration File:* Several - settings need to exist in the ``local.conf`` file in the build + settings are needed in the ``local.conf`` file in the build directory you just created for AUH. Make these following configurations: - If you want to enable :ref:`Build History <dev-manual/common-tasks:maintaining build output quality>`, which is optional, you need the following lines in the - ``conf/local.conf`` file: - :: + ``conf/local.conf`` file:: INHERIT =+ "buildhistory" BUILDHISTORY_COMMIT = "1" @@ -3024,23 +2942,20 @@ The following steps describe how to set up the AUH utility: - If you want to enable testing through the :ref:`testimage <ref-classes-testimage*>` class, which is optional, you need to have the following set in - your ``conf/local.conf`` file: - :: + your ``conf/local.conf`` file:: INHERIT += "testimage" .. note:: If your distro does not enable by default ptest, which Poky - does, you need the following in your ``local.conf`` file: - :: + does, you need the following in your ``local.conf`` file:: DISTRO_FEATURES_append = " ptest" 6. *Optionally Start a vncserver:* If you are running in a server - without an X11 session, you need to start a vncserver: - :: + without an X11 session, you need to start a vncserver:: $ vncserver :1 $ export DISPLAY=:1 @@ -3064,45 +2979,38 @@ The following steps describe how to set up the AUH utility: This next set of examples describes how to use the AUH: - *Upgrading a Specific Recipe:* To upgrade a specific recipe, use the - following form: - :: + following form:: $ upgrade-helper.py recipe_name - For example, this command upgrades the ``xmodmap`` recipe: - :: + For example, this command upgrades the ``xmodmap`` recipe:: $ upgrade-helper.py xmodmap - *Upgrading a Specific Recipe to a Particular Version:* To upgrade a - specific recipe to a particular version, use the following form: - :: + specific recipe to a particular version, use the following form:: $ upgrade-helper.py recipe_name -t version - For example, this command upgrades the ``xmodmap`` recipe to version 1.2.3: - :: + For example, this command upgrades the ``xmodmap`` recipe to version 1.2.3:: $ upgrade-helper.py xmodmap -t 1.2.3 - *Upgrading all Recipes to the Latest Versions and Suppressing Email Notifications:* To upgrade all recipes to their most recent versions - and suppress the email notifications, use the following command: - :: + and suppress the email notifications, use the following command:: $ upgrade-helper.py all - *Upgrading all Recipes to the Latest Versions and Send Email Notifications:* To upgrade all recipes to their most recent versions and send email messages to maintainers for each attempted recipe as - well as a status email, use the following command: - :: + well as a status email, use the following command:: $ upgrade-helper.py -e all Once you have run the AUH utility, you can find the results in the AUH -build directory: -:: +build directory:: ${BUILDDIR}/upgrade-helper/timestamp @@ -3127,15 +3035,13 @@ section in the Yocto Project Application Development and the Extensible Software Development Kit (eSDK) Manual. To see all the command-line options available with ``devtool upgrade``, -use the following help command: -:: +use the following help command:: $ devtool upgrade -h If you want to find out what version a recipe is currently at upstream without any attempt to upgrade your local version of the recipe, you can -use the following command: -:: +use the following command:: $ devtool latest-version recipe_name @@ -3161,15 +3067,13 @@ could add it easily using the ":ref:`bitbake-layers <bsp-guide/bsp:creating a new bsp layer using the \`\`bitbake-layers\`\` script>`" script. For example, suppose you use the ``nano.bb`` recipe from the ``meta-oe`` layer in the ``meta-openembedded`` repository. For this -example, assume that the layer has been cloned into following area: -:: +example, assume that the layer has been cloned into following area:: /home/scottrif/meta-openembedded The following command from your :term:`Build Directory` adds the layer to -your build configuration (i.e. ``${BUILDDIR}/conf/bblayers.conf``): -:: +your build configuration (i.e. ``${BUILDDIR}/conf/bblayers.conf``):: $ bitbake-layers add-layer /home/scottrif/meta-openembedded/meta-oe NOTE: Starting bitbake server... @@ -3210,8 +3114,7 @@ directory automatically upgrades the recipe for you: NOTE: New recipe is /home/scottrif/poky/build/workspace/recipes/nano/nano_2.9.3.bb Continuing with this example, you can use ``devtool build`` to build the -newly upgraded recipe: -:: +newly upgraded recipe:: $ devtool build nano NOTE: Starting bitbake server... @@ -3228,16 +3131,15 @@ newly upgraded recipe: NOTE: nano: compiling from external source tree /home/scottrif/poky/build/workspace/sources/nano NOTE: Tasks Summary: Attempted 520 tasks of which 304 didn't need to be rerun and all succeeded. -Within the ``devtool upgrade`` workflow, opportunity -exists to deploy and test your rebuilt software. For this example, +Within the ``devtool upgrade`` workflow, you can +deploy and test your rebuilt software. For this example, however, running ``devtool finish`` cleans up the workspace once the source in your workspace is clean. This usually means using Git to stage and submit commits for the changes generated by the upgrade process. Once the tree is clean, you can clean things up in this example with the following command from the ``${BUILDDIR}/workspace/sources/nano`` -directory: -:: +directory:: $ devtool finish nano meta-oe NOTE: Starting bitbake server... @@ -3276,9 +3178,9 @@ To manually upgrade recipe versions, follow these general steps: 1. *Change the Version:* Rename the recipe such that the version (i.e. the :term:`PV` part of the recipe name) changes appropriately. If the version is not part of the recipe name, - change the value as it is set for ``PV`` within the recipe itself. + change the value as it is set for :term:`PV` within the recipe itself. -2. *Update* ``SRCREV`` *if Needed*: If the source code your recipe builds +2. *Update* :term:`SRCREV` *if Needed*: If the source code your recipe builds is fetched from Git or some other version control system, update :term:`SRCREV` to point to the commit hash that matches the new version. @@ -3312,7 +3214,7 @@ To manually upgrade recipe versions, follow these general steps: if the recipe is to be released publicly. 5. *Check the Upstream Change Log or Release Notes:* Checking both these - reveals if new features exist that could break + reveals if there are new features that could break backwards-compatibility. If so, you need to take steps to mitigate or eliminate that situation. @@ -3339,30 +3241,27 @@ patches. During a build, the unpacked temporary source code used by recipes to build packages is available in the Build Directory as defined by the :term:`S` variable. Below is the default -value for the ``S`` variable as defined in the +value for the :term:`S` variable as defined in the ``meta/conf/bitbake.conf`` configuration file in the -:term:`Source Directory`: -:: +:term:`Source Directory`:: S = "${WORKDIR}/${BP}" You should be aware that many recipes override the -``S`` variable. For example, recipes that fetch their source from Git -usually set ``S`` to ``${WORKDIR}/git``. +:term:`S` variable. For example, recipes that fetch their source from Git +usually set :term:`S` to ``${WORKDIR}/git``. .. note:: The :term:`BP` represents the base recipe name, which consists of the name - and version: - :: + and version:: BP = "${BPN}-${PV}" The path to the work directory for the recipe (:term:`WORKDIR`) is defined as -follows: -:: +follows:: ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR} @@ -3388,8 +3287,7 @@ As an example, assume a Source Directory top-level folder named ``poky``, a default Build Directory at ``poky/build``, and a ``qemux86-poky-linux`` machine target system. Furthermore, suppose your recipe is named ``foo_1.3.0.bb``. In this case, the work directory the -build system uses to build the package would be as follows: -:: +build system uses to build the package would be as follows:: poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0 @@ -3426,15 +3324,13 @@ Follow these general steps: 3. *Create a New Patch:* Before modifying source code, you need to create a new patch. To create a new patch file, use ``quilt new`` as - below: - :: + below:: $ quilt new my_changes.patch 4. *Notify Quilt and Add Files:* After creating the patch, you need to notify Quilt about the files you plan to edit. You notify Quilt by - adding the files to the patch you just created: - :: + adding the files to the patch you just created:: $ quilt add file1.c file2.c file3.c @@ -3443,8 +3339,7 @@ Follow these general steps: 6. *Test Your Changes:* Once you have modified the source code, the easiest way to test your changes is by calling the ``do_compile`` - task as shown in the following example: - :: + task as shown in the following example:: $ bitbake -c compile -f package @@ -3474,15 +3369,14 @@ Follow these general steps: ``file2.c``, and ``file3.c`` files. You can find the resulting patch file in the ``patches/`` - subdirectory of the source (``S``) directory. + subdirectory of the source (:term:`S`) directory. 8. *Copy the Patch File:* For simplicity, copy the patch file into a directory named ``files``, which you can create in the same directory that holds the recipe (``.bb``) file or the append (``.bbappend``) file. Placing the patch here guarantees that the OpenEmbedded build - system will find the patch. Next, add the patch into the ``SRC_URI`` - of the recipe. Here is an example: - :: + system will find the patch. Next, add the patch into the :term:`SRC_URI` + of the recipe. Here is an example:: SRC_URI += "file://my_changes.patch" @@ -3503,8 +3397,7 @@ this way can be helpful when debugging a build or preparing software to be used with the OpenEmbedded build system. Following is an example that uses ``devshell`` on a target named -``matchbox-desktop``: -:: +``matchbox-desktop``:: $ bitbake matchbox-desktop -c devshell @@ -3533,8 +3426,7 @@ corresponding ``run.*`` script in the directory (e.g., ``run.do_configure.``\ `pid`). If a task's script does not exist, which would be the case if the task was skipped by way of the sstate cache, you can create the task by first running it outside of the -``devshell``: -:: +``devshell``:: $ bitbake -c task @@ -3562,7 +3454,7 @@ terminal window. use the full compiler name such as ``arm-poky-linux-gnueabi-gcc`` instead of just using ``gcc``. The same applies to other applications such as ``binutils``, ``libtool`` and so forth. - BitBake sets up environment variables such as ``CC`` to assist + BitBake sets up environment variables such as :term:`CC` to assist applications, such as ``make`` to find the correct tools. - It is also worth noting that ``devshell`` still works over X11 @@ -3581,8 +3473,7 @@ specified target. Then a new terminal is opened. Additionally, key Python objects and code are available in the same way they are to BitBake tasks, in particular, the data store 'd'. So, commands such as the following are useful when exploring the data store and running -functions: -:: +functions:: pydevshell> d.getVar("STAGING_DIR") '/media/build1/poky/build/tmp/sysroots' @@ -3602,8 +3493,7 @@ helpful when debugging a build or preparing software to be used with the OpenEmbedded build system. Following is an example that uses ``devpyshell`` on a target named -``matchbox-desktop``: -:: +``matchbox-desktop``:: $ bitbake matchbox-desktop -c devpyshell @@ -3627,7 +3517,7 @@ Building a Simple Image In the development environment, you need to build an image whenever you change hardware support, add or change system libraries, or add or -change services that have dependencies. Several methods exist that allow +change services that have dependencies. There are several methods that allow you to build an image within the Yocto Project. This section presents the basic steps you need to build a simple image using BitBake from a build host running Linux. @@ -3664,8 +3554,7 @@ The following figure and list overviews the build process: 2. *Initialize the Build Environment:* Initialize the build environment by sourcing the build environment script (i.e. - :ref:`structure-core-script`): - :: + :ref:`structure-core-script`):: $ source oe-init-build-env [build_dir] @@ -3684,14 +3573,13 @@ The following figure and list overviews the build process: ``conf/local.conf`` configuration file, which is found in the Build Directory, is set up how you want it. This file defines many aspects of the build environment including the target machine architecture - through the ``MACHINE`` variable, the packaging format used during + through the :term:`MACHINE` variable, the packaging format used during the build (:term:`PACKAGE_CLASSES`), and a centralized tarball download directory through the :term:`DL_DIR` variable. -4. *Build the Image:* Build the image using the ``bitbake`` command: - :: +4. *Build the Image:* Build the image using the ``bitbake`` command:: $ bitbake target @@ -3710,8 +3598,7 @@ The following figure and list overviews the build process: Project Reference Manual. As an example, the following command builds the - ``core-image-minimal`` image: - :: + ``core-image-minimal`` image:: $ bitbake core-image-minimal @@ -3759,12 +3646,11 @@ Follow these steps to set up and execute multiple configuration builds: consider a scenario with two different multiconfigs for the same :term:`MACHINE`: "qemux86" built for two distributions such as "poky" and "poky-lsb". In this case, - you might want to use the same ``TMPDIR``. + you might want to use the same :term:`TMPDIR`. Here is an example showing the minimal statements needed in a configuration file for a "qemux86" target whose temporary build - directory is ``tmpmultix86``: - :: + directory is ``tmpmultix86``:: MACHINE = "qemux86" TMPDIR = "${TOPDIR}/tmpmultix86" @@ -3777,7 +3663,7 @@ Follow these steps to set up and execute multiple configuration builds: .. image:: figures/multiconfig_files.png :align: center - The reason for this required file hierarchy is because the ``BBPATH`` + The reason for this required file hierarchy is because the :term:`BBPATH` variable is not constructed until the layers are parsed. Consequently, using the configuration file as a pre-configuration file is not possible unless it is located in the current working @@ -3788,9 +3674,8 @@ Follow these steps to set up and execute multiple configuration builds: :term:`BBMULTICONFIG` variable in your ``conf/local.conf`` configuration file to specify each multiconfig. Continuing with the example from the previous - figure, the ``BBMULTICONFIG`` variable needs to enable two - multiconfigs: "x86" and "arm" by specifying each configuration file: - :: + figure, the :term:`BBMULTICONFIG` variable needs to enable two + multiconfigs: "x86" and "arm" by specifying each configuration file:: BBMULTICONFIG = "x86 arm" @@ -3804,13 +3689,11 @@ Follow these steps to set up and execute multiple configuration builds: with "". - *Launch BitBake*: Use the following BitBake command form to launch - the multiple configuration build: - :: + the multiple configuration build:: $ bitbake [mc:multiconfigname:]target [[[mc:multiconfigname:]target] ... ] - For the example in this section, the following command applies: - :: + For the example in this section, the following command applies:: $ bitbake mc:x86:core-image-minimal mc:arm:core-image-sato mc::core-image-base @@ -3825,7 +3708,7 @@ Follow these steps to set up and execute multiple configuration builds: Support for multiple configuration builds in the Yocto Project &DISTRO; (&DISTRO_NAME;) Release does not include Shared State (sstate) optimizations. Consequently, if a build uses the same object twice - in, for example, two different ``TMPDIR`` + in, for example, two different :term:`TMPDIR` directories, the build either loads from an existing sstate cache for that build at the start or builds the object fresh. @@ -3844,15 +3727,13 @@ essentially that the To enable dependencies in a multiple configuration build, you must declare the dependencies in the recipe using the following statement -form: -:: +form:: task_or_package[mcdepends] = "mc:from_multiconfig:to_multiconfig:recipe_name:task_on_which_to_depend" To better show how to use this statement, consider the example scenario from the first paragraph of this section. The following statement needs -to be added to the recipe that builds the ``core-image-sato`` image: -:: +to be added to the recipe that builds the ``core-image-sato`` image:: do_image[mcdepends] = "mc:x86:arm:core-image-minimal:do_rootfs" @@ -3862,8 +3743,7 @@ task on which the ``do_image`` task in the recipe depends is the with the "arm" multiconfig. Once you set up this dependency, you can build the "x86" multiconfig -using a BitBake command as follows: -:: +using a BitBake command as follows:: $ bitbake mc:x86:core-image-sato @@ -3874,8 +3754,7 @@ dependency, BitBake also executes through the ``do_rootfs`` task for the Having a recipe depend on the root filesystem of another build might not seem that useful. Consider this change to the statement in the -``core-image-sato`` recipe: -:: +``core-image-sato`` recipe:: do_image[mcdepends] = "mc:x86:arm:core-image-minimal:do_image" @@ -3927,7 +3806,7 @@ Follow these steps to create an initramfs image: recipe and the initramfs recipe should the initramfs image include kernel modules. - Setting the ``INITRAMFS_IMAGE_BUNDLE`` flag causes the initramfs + Setting the :term:`INITRAMFS_IMAGE_BUNDLE` flag causes the initramfs image to be unpacked into the ``${B}/usr/`` directory. The unpacked initramfs image is then passed to the kernel's ``Makefile`` using the :term:`CONFIG_INITRAMFS_SOURCE` @@ -3949,7 +3828,7 @@ Follow these steps to create an initramfs image: :term:`PACKAGE_INSTALL` rather than :term:`IMAGE_INSTALL`. - ``PACKAGE_INSTALL`` gives more direct control of what is added to the + :term:`PACKAGE_INSTALL` gives more direct control of what is added to the image as compared to the defaults you might not necessarily want that are set by the :ref:`image <ref-classes-image>` or :ref:`core-image <ref-classes-core-image>` @@ -4033,7 +3912,7 @@ your own distribution that are likely modeled after ``poky-tiny``. .. note:: - To use ``poky-tiny`` in your build, set the ``DISTRO`` variable in your + To use ``poky-tiny`` in your build, set the :term:`DISTRO` variable in your ``local.conf`` file to "poky-tiny" as described in the ":ref:`dev-manual/common-tasks:creating your own distribution`" section. @@ -4091,8 +3970,7 @@ happens, which changes the way you build them. You can also modify the filesystem itself or select a different filesystem. First, find out what is hogging your root filesystem by running the -``dirsize.py`` script from your root directory: -:: +``dirsize.py`` script from your root directory:: $ cd root-directory-of-image $ dirsize.py 100000 > dirsize-100k.log @@ -4107,8 +3985,7 @@ the root filesystem that take up large amounts of memory. You need to be sure that what you eliminate does not cripple the functionality you need. One way to see how packages relate to each other -is by using the Dependency Explorer UI with the BitBake command: -:: +is by using the Dependency Explorer UI with the BitBake command:: $ cd image-directory $ bitbake -u taskexp -g image @@ -4124,8 +4001,7 @@ instead of ``udev``. Use your ``local.conf`` file to make changes. For example, to eliminate ``udev`` and ``glib``, set the following in the local configuration -file: -:: +file:: VIRTUAL-RUNTIME_dev_manager = "" @@ -4153,8 +4029,7 @@ building? Which drivers do you build by default? You can modify the kernel source if you want to help with boot time. Run the ``ksize.py`` script from the top-level Linux build directory to -get an idea of what is making up the kernel: -:: +get an idea of what is making up the kernel:: $ cd top-level-linux-build-directory $ ksize.py > ksize.log @@ -4168,8 +4043,7 @@ in a compressed kernel image. Look to reduce the areas that are large and taking up around the "90% rule." To examine, or drill down, into any particular area, use the ``-d`` -option with the script: -:: +option with the script:: $ ksize.py -d > ksize.log @@ -4282,17 +4156,17 @@ your tunings to best consider build times and package feed maintenance. :term:`TMPDIR` across builds. The Yocto Project supports switching between different :term:`MACHINE` values in the same - ``TMPDIR``. This practice is well supported and regularly used by + :term:`TMPDIR`. This practice is well supported and regularly used by developers when building for multiple machines. When you use the same - ``TMPDIR`` for multiple machine builds, the OpenEmbedded build system + :term:`TMPDIR` for multiple machine builds, the OpenEmbedded build system can reuse the existing native and often cross-recipes for multiple machines. Thus, build time decreases. .. note:: If :term:`DISTRO` settings change or fundamental configuration settings - such as the filesystem layout, you need to work with a clean ``TMPDIR``. - Sharing ``TMPDIR`` under these circumstances might work but since it is + such as the filesystem layout, you need to work with a clean :term:`TMPDIR`. + Sharing :term:`TMPDIR` under these circumstances might work but since it is not guaranteed, you should use a clean ``TMPDIR``. - *Enable the Appropriate Package Architecture:* By default, the @@ -4316,8 +4190,7 @@ your tunings to best consider build times and package feed maintenance. machine-architecture dependent, make sure your recipe enables the "machine" package architecture through the :term:`MACHINE_ARCH` - variable: - :: + variable:: PACKAGE_ARCH = "${MACHINE_ARCH}" @@ -4325,8 +4198,7 @@ your tunings to best consider build times and package feed maintenance. specifically enable a package architecture through the :term:`PACKAGE_ARCH`, The OpenEmbedded build system defaults to the - :term:`TUNE_PKGARCH` setting: - :: + :term:`TUNE_PKGARCH` setting:: PACKAGE_ARCH = "${TUNE_PKGARCH}" @@ -4343,7 +4215,7 @@ your tunings to best consider build times and package feed maintenance. sysroot for each machine is generated, the software is not recompiled and only one package feed exists. -- *Manage Granular Level Packaging:* Sometimes cases exist where +- *Manage Granular Level Packaging:* Sometimes there are cases where injecting another level of package architecture beyond the three higher levels noted earlier can be useful. For example, consider how NXP (formerly Freescale) allows for the easy reuse of binary packages @@ -4409,7 +4281,7 @@ By default, the OpenEmbedded build system uses the code. The build process involves fetching the source files, unpacking them, and then patching them if necessary before the build takes place. -Situations exist where you might want to build software from source +There are situations where you might want to build software from source files that are external to and thus outside of the OpenEmbedded build system. For example, suppose you have a project that includes a new BSP with a heavily customized kernel. And, you want to minimize exposing the @@ -4426,15 +4298,13 @@ to do is inherit the and then set the :term:`EXTERNALSRC` variable to point to your external source code. Here are the statements to put in -your ``local.conf`` file: -:: +your ``local.conf`` file:: INHERIT += "externalsrc" EXTERNALSRC_pn-myrecipe = "path-to-your-source-tree" This next example shows how to accomplish the same thing by setting -``EXTERNALSRC`` in the recipe itself or in the recipe's append file: -:: +:term:`EXTERNALSRC` in the recipe itself or in the recipe's append file:: EXTERNALSRC = "path" EXTERNALSRC_BUILD = "path" @@ -4451,8 +4321,7 @@ directory separate from the external source directory as specified by to have the source built in the same directory in which it resides, or some other nominated directory, you can set :term:`EXTERNALSRC_BUILD` -to point to that directory: -:: +to point to that directory:: EXTERNALSRC_BUILD_pn-myrecipe = "path-to-your-source-tree" @@ -4471,26 +4340,24 @@ Follow these steps to populate your Downloads directory: 1. *Create a Clean Downloads Directory:* Start with an empty downloads directory (:term:`DL_DIR`). You start with an empty downloads directory by either removing the files - in the existing directory or by setting ``DL_DIR`` to point to either + in the existing directory or by setting :term:`DL_DIR` to point to either an empty location or one that does not yet exist. 2. *Generate Tarballs of the Source Git Repositories:* Edit your - ``local.conf`` configuration file as follows: - :: + ``local.conf`` configuration file as follows:: DL_DIR = "/home/your-download-dir/" BB_GENERATE_MIRROR_TARBALLS = "1" During the fetch process in the next step, BitBake gathers the source files - and creates tarballs in the directory pointed to by ``DL_DIR``. See + and creates tarballs in the directory pointed to by :term:`DL_DIR`. See the :term:`BB_GENERATE_MIRROR_TARBALLS` variable for more information. 3. *Populate Your Downloads Directory Without Building:* Use BitBake to - fetch your sources but inhibit the build: - :: + fetch your sources but inhibit the build:: $ bitbake target --runonly=fetch @@ -4527,7 +4394,7 @@ directory: The ``SOURCE_MIRROR_URL`` and ``own-mirror`` class set up the system to use the downloads directory as your "own - mirror". Using the ``BB_NO_NETWORK`` variable makes sure that + mirror". Using the :term:`BB_NO_NETWORK` variable makes sure that BitBake's fetching process in step 3 stays local, which means files from your "own-mirror" are used. @@ -4536,8 +4403,7 @@ directory: ``${``\ :term:`TMPDIR`\ ``}`` directory or using a new :term:`Build Directory`. -3. *Build Your Target:* Use BitBake to build your target: - :: +3. *Build Your Target:* Use BitBake to build your target:: $ bitbake target @@ -4550,32 +4416,31 @@ directory: The offline build does not work if recipes attempt to find the latest version of software by setting :term:`SRCREV` to - ``${``\ :term:`AUTOREV`\ ``}``: - :: + ``${``\ :term:`AUTOREV`\ ``}``:: SRCREV = "${AUTOREV}" - When a recipe sets ``SRCREV`` to + When a recipe sets :term:`SRCREV` to ``${AUTOREV}``, the build system accesses the network in an attempt to determine the latest version of software from the SCM. - Typically, recipes that use ``AUTOREV`` are custom or modified + Typically, recipes that use :term:`AUTOREV` are custom or modified recipes. Recipes that reside in public repositories usually do not - use ``AUTOREV``. + use :term:`AUTOREV`. - If you do have recipes that use ``AUTOREV``, you can take steps to + If you do have recipes that use :term:`AUTOREV`, you can take steps to still use the recipes in an offline build. Do the following: 1. Use a configuration generated by enabling :ref:`build history <dev-manual/common-tasks:maintaining build output quality>`. 2. Use the ``buildhistory-collect-srcrevs`` command to collect the - stored ``SRCREV`` values from the build's history. For more + stored :term:`SRCREV` values from the build's history. For more information on collecting these values, see the ":ref:`dev-manual/common-tasks:build history package information`" section. 3. Once you have the correct source revisions, you can modify - those recipes to set ``SRCREV`` to specific versions of the + those recipes to set :term:`SRCREV` to specific versions of the software. Speeding Up a Build @@ -4670,8 +4535,7 @@ that can help you speed up the build: - Disable static library generation for recipes derived from ``autoconf`` or ``libtool``: Following is an example showing how to disable static libraries and still provide an override to handle - exceptions: - :: + exceptions:: STATICLIBCONF = "--disable-static" STATICLIBCONF_sqlite3-native = "" @@ -4716,7 +4580,7 @@ the built library. The :term:`PACKAGES` and :term:`FILES_* <FILES>` variables in the ``meta/conf/bitbake.conf`` configuration file define how files installed -by the ``do_install`` task are packaged. By default, the ``PACKAGES`` +by the ``do_install`` task are packaged. By default, the :term:`PACKAGES` variable includes ``${PN}-staticdev``, which represents all static library files. @@ -4726,8 +4590,7 @@ library files. static library files through ``${PN}-dev``. Following is part of the BitBake configuration file, where you can see -how the static library files are defined: -:: +how the static library files are defined:: PACKAGE_BEFORE_PN ?= "" PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}" @@ -4785,7 +4648,7 @@ libraries and other binaries to use a different set of libraries. The libraries could differ in architecture, compiler options, or other optimizations. -Several examples exist in the ``meta-skeleton`` layer found in the +There are several examples in the ``meta-skeleton`` layer found in the :term:`Source Directory`: - ``conf/multilib-example.conf`` configuration file @@ -4798,7 +4661,7 @@ Preparing to Use Multilib ~~~~~~~~~~~~~~~~~~~~~~~~~ User-specific requirements drive the Multilib feature. Consequently, -there is no one "out-of-the-box" configuration that likely exists to +there is no one "out-of-the-box" configuration that would meet your needs. In order to enable Multilib, you first need to ensure your recipe is @@ -4833,8 +4696,7 @@ After you have set up the recipes, you need to define the actual combination of multiple libraries you want to build. You accomplish this through your ``local.conf`` configuration file in the :term:`Build Directory`. An example -configuration would be as follows: -:: +configuration would be as follows:: MACHINE = "qemux86-64" require conf/multilib.conf @@ -4850,22 +4712,20 @@ on this particular tuning, see The example then includes ``lib32-glib-2.0`` in all the images, which illustrates one method of including a multiple library dependency. You -can use a normal image build to include this dependency, for example: -:: +can use a normal image build to include this dependency, for example:: $ bitbake core-image-sato You can also build Multilib packages -specifically with a command like this: -:: +specifically with a command like this:: $ bitbake lib32-glib-2.0 Additional Implementation Details ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Generic implementation details as well as details that are specific to -package management systems exist. Following are implementation details +There are generic implementation details as well as details that are specific to +package management systems. Following are implementation details that exist regardless of the package management system: - The typical convention used for the class extension code as used by @@ -4882,8 +4742,7 @@ that exist regardless of the package management system: vendor string presently break Autoconf's ``config.sub``, and other separators are problematic for different reasons. -For the RPM Package Management System, the following implementation -details exist: +Here are the implementation details for the RPM Package Management System: - A unique architecture is defined for the Multilib packages, along with creating a unique deploy folder under ``tmp/deploy/rpm`` in the @@ -4904,8 +4763,7 @@ details exist: - The build system relies on RPM to resolve the identical files in the two (or more) Multilib packages. -For the IPK Package Management System, the following implementation -details exist: +Here are the implementation details for the IPK Package Management System: - The ``${MLPREFIX}`` is not stripped from ``${PN}`` during IPK packaging. The naming for a normal RPM package and a Multilib IPK @@ -4923,9 +4781,9 @@ details exist: Installing Multiple Versions of the Same Library ------------------------------------------------ -Situations can exist where you need to install and use multiple versions -of the same library on the same system at the same time. These -situations almost always exist when a library API changes and you have +There are be situations where you need to install and use multiple versions +of the same library on the same system at the same time. This +almost always happens when a library API changes and you have multiple pieces of software that depend on the separate versions of the library. To accommodate these situations, you can install multiple versions of the same library in parallel on the same system. @@ -4952,8 +4810,7 @@ you have other recipes that depend on a given library, you need to use the :term:`DEPENDS` variable to create the dependency. Continuing with the same example, if you want to have a recipe depend on the 1.8 version of the ``clutter`` library, use -the following in your recipe: -:: +the following in your recipe:: DEPENDS = "clutter-1.8" @@ -4991,13 +4848,12 @@ follows: - You can create and boot ``core-image-minimal`` and ``core-image-sato`` images. -- RPM Package Manager (RPM) support exists for x32 binaries. +- There is RPM Package Manager (RPM) support for x32 binaries. -- Support for large images exists. +- There is support for large images. To use the x32 psABI, you need to edit your ``conf/local.conf`` -configuration file as follows: -:: +configuration file as follows:: MACHINE = "qemux86-64" DEFAULTTUNE = "x86-64-x32" @@ -5006,8 +4862,7 @@ configuration file as follows: Once you have set up your configuration file, use BitBake to build an image that supports -the x32 psABI. Here is an example: -:: +the x32 psABI. Here is an example:: $ bitbake core-image-sato @@ -5061,13 +4916,12 @@ library package involves the following: :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` and that "qemu-usermode" is not in :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`. - If either of these conditions exist, nothing will happen. + In either of these conditions, nothing will happen. 3. Try to build the recipe. If you encounter build errors that look like something is unable to find ``.so`` libraries, check where these libraries are located in the source tree and add the following to the - recipe: - :: + recipe:: GIR_EXTRA_LIBS_PATH = "${B}/something/.libs" @@ -5097,8 +4951,7 @@ perhaps QEMU does not work on your build host and target architecture combination. If so, you can use either of the following methods to disable GIR file generations: -- Add the following to your distro configuration: - :: +- Add the following to your distro configuration:: DISTRO_FEATURES_BACKFILL_CONSIDERED = "gobject-introspection-data" @@ -5106,8 +4959,7 @@ disable GIR file generations: QEMU but will still enable building introspection tools and libraries (i.e. building them does not require the use of QEMU). -- Add the following to your machine configuration: - :: +- Add the following to your machine configuration:: MACHINE_FEATURES_BACKFILL_CONSIDERED = "qemu-usermode" @@ -5140,8 +4992,7 @@ working in an image: 3. Launch a Terminal and then start Python in the terminal. -4. Enter the following in the terminal: - :: +4. Enter the following in the terminal:: >>> from gi.repository import GLib >>> GLib.get_host_name() @@ -5152,7 +5003,7 @@ working in an image: Known Issues ------------ -The following know issues exist for GObject Introspection Support: +Here are know issues in GObject Introspection Support: - ``qemu-ppc64`` immediately crashes. Consequently, you cannot build introspection data on that architecture. @@ -5289,8 +5140,7 @@ system needs to meet the following requirements: form generated by the OpenEmbedded build system. - You must build several native tools, which are built to run on the - build system: - :: + build system:: $ bitbake parted-native dosfstools-native mtools-native @@ -5306,8 +5156,7 @@ Getting Help You can get general help for the ``wic`` command by entering the ``wic`` command by itself or by entering the command with a help argument as -follows: -:: +follows:: $ wic -h $ wic --help @@ -5315,32 +5164,27 @@ follows: Currently, Wic supports seven commands: ``cp``, ``create``, ``help``, ``list``, ``ls``, ``rm``, and ``write``. You can get help for all these -commands except "help" by using the following form: -:: +commands except "help" by using the following form:: $ wic help command For example, the following command returns help for the ``write`` -command: -:: +command:: $ wic help write Wic supports help for three topics: ``overview``, ``plugins``, and -``kickstart``. You can get help for any topic using the following form: -:: +``kickstart``. You can get help for any topic using the following form:: $ wic help topic -For example, the following returns overview help for Wic: -:: +For example, the following returns overview help for Wic:: $ wic help overview -One additional level of help exists for Wic. You can get help on +There is one additional level of help for Wic. You can get help on individual images through the ``list`` command. You can use the ``list`` -command to return the available Wic images as follows: -:: +command to return the available Wic images as follows:: $ wic list images genericx86 Create an EFI disk image for genericx86* @@ -5359,8 +5203,7 @@ command to return the available Wic images as follows: Once you know the list of available Wic images, you can use ``help`` with the command to get help on a particular image. For example, the following command returns help on the -"beaglebone-yocto" image: -:: +"beaglebone-yocto" image:: $ wic list beaglebone-yocto help @@ -5397,8 +5240,7 @@ can point to arbitrary kernel, root filesystem locations, and so forth. Contrast this behavior with cooked mode where Wic looks in the Build Directory (e.g. ``tmp/deploy/images/``\ machine). -The general form of the ``wic`` command in raw mode is: -:: +The general form of the ``wic`` command in raw mode is:: $ wic create wks_file options ... @@ -5456,8 +5298,7 @@ a kickstart file and the name of the image from which to use artifacts by using the "-e" option. Wic looks in the Build Directory (e.g. ``tmp/deploy/images/``\ machine) for artifacts. -The general form of the ``wic`` command using Cooked Mode is as follows: -:: +The general form of the ``wic`` command using Cooked Mode is as follows:: $ wic create wks_file -e IMAGE_NAME @@ -5480,14 +5321,12 @@ Using an Existing Kickstart File If you do not want to create your own kickstart file, you can use an existing file provided by the Wic installation. As shipped, kickstart files can be found in the :ref:`overview-manual/development-environment:yocto project source repositories` in the -following two locations: -:: +following two locations:: poky/meta-yocto-bsp/wic poky/scripts/lib/wic/canned-wks -Use the following command to list the available kickstart files: -:: +Use the following command to list the available kickstart files:: $ wic list images genericx86 Create an EFI disk image for genericx86* @@ -5505,15 +5344,13 @@ Use the following command to list the available kickstart files: When you use an existing file, you do not have to use the ``.wks`` extension. Here is an example in Raw -Mode that uses the ``directdisk`` file: -:: +Mode that uses the ``directdisk`` file:: $ wic create directdisk -r rootfs_dir -b bootimg_dir \ -k kernel_dir -n native_sysroot Here are the actual partition language commands used in the -``genericx86.wks`` file to generate an image: -:: +``genericx86.wks`` file to generate an image:: # short-description: Create an EFI disk image for genericx86* # long-description: Creates a partitioned EFI disk image for genericx86* machines @@ -5571,8 +5408,7 @@ When the Wic implementation needs to invoke a partition-specific implementation, it looks for the plugin with the same name as the ``--source`` parameter used in the kickstart file given to that partition. For example, if the partition is set up using the following -command in a kickstart file: -:: +command in a kickstart file:: part /boot --source bootimg-pcbios --ondisk sda --label boot --active --align 1024 @@ -5583,8 +5419,7 @@ members of the matching source plugin (i.e. ``bootimg-pcbios``) in the To be more concrete, here is the corresponding plugin definition from the ``bootimg-pcbios.py`` file for the previous command along with an example method called by the Wic implementation when it needs to prepare -a partition using an implementation-specific function: -:: +a partition using an implementation-specific function:: . . @@ -5675,8 +5510,7 @@ Generate an Image using an Existing Kickstart File ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This example runs in Cooked Mode and uses the ``mkefidisk`` kickstart -file: -:: +file:: $ wic create mkefidisk -e core-image-minimal INFO: Building wic-tools... @@ -5712,8 +5546,7 @@ and kickstart file information. Continuing with the example, you can now write the image from the Build Directory onto a USB stick, or whatever media for which you built your image, and boot from the media. You can write the image by using -``bmaptool`` or ``dd``: -:: +``bmaptool`` or ``dd``:: $ oe-run-native bmaptool copy mkefidisk-201804191017-sda.direct /dev/sdX @@ -5761,8 +5594,7 @@ the lines that specify the target disk from which to boot. Next, the example modifies the ``directdisksdb-gpt.wks`` file and changes all instances of "``--ondisk sda``" to "``--ondisk sdb``". The example changes the following two lines and leaves the remaining lines -untouched: -:: +untouched:: part /boot --source bootimg-pcbios --ondisk sdb --label boot --active --align 1024 part / --source rootfs --ondisk sdb --fstype=ext4 --label platform --align 1024 --use-uuid @@ -5799,8 +5631,7 @@ Computing (nuc) :term:`MACHINE` the Continuing with the example, you can now directly ``dd`` the image to a USB stick, or whatever media for which you built your image, and boot -the resulting media: -:: +the resulting media:: $ sudo dd if=directdisksdb-gpt-201710090938-sdb.direct of=/dev/sdb 140966+0 records in @@ -5814,8 +5645,7 @@ Using a Modified Kickstart File and Running in Raw Mode This next example manually specifies each build artifact (runs in Raw Mode) and uses a modified kickstart file. The example also uses the ``-o`` option to cause Wic to create the output somewhere other than the -default output directory, which is the current directory: -:: +default output directory, which is the current directory:: $ wic create /home/stephano/my_yocto/test.wks -o /home/stephano/testwic \ --rootfs-dir /home/stephano/build/master/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/rootfs \ @@ -5860,8 +5690,7 @@ The following example examines the contents of the Wic image, deletes the existing kernel, and then inserts a new kernel: 1. *List the Partitions:* Use the ``wic ls`` command to list all the - partitions in the Wic image: - :: + partitions in the Wic image:: $ wic ls tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic Num Start End Size Fstype @@ -5877,8 +5706,7 @@ the existing kernel, and then inserts a new kernel: .. note:: You can get command usage on any Wic command using the following - form: - :: + form:: $ wic help command @@ -5886,14 +5714,12 @@ the existing kernel, and then inserts a new kernel: For example, the following command shows you the various ways to use the wic ls - command: - :: + command:: $ wic help ls - The following command shows what is in partition one: - :: + The following command shows what is in partition one:: $ wic ls tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic:1 Volume in drive : is boot @@ -5915,8 +5741,7 @@ the existing kernel, and then inserts a new kernel: If you see the following error, you need to update or create a ``~/.mtoolsrc`` file and be sure to have the line "mtools_skip_check=1" - in the file. Then, run the Wic command again: - :: + in the file. Then, run the Wic command again:: ERROR: _exec_cmd: /usr/bin/mdir -i /tmp/wic-parttfokuwra ::/ returned '1' instead of 0 output: Total number of sectors (47824) not a multiple of sectors per track (32)! @@ -5924,8 +5749,7 @@ the existing kernel, and then inserts a new kernel: 3. *Remove the Old Kernel:* Use the ``wic rm`` command to remove the - ``vmlinuz`` file (kernel): - :: + ``vmlinuz`` file (kernel):: $ wic rm tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic:1/vmlinuz @@ -5937,8 +5761,7 @@ the existing kernel, and then inserts a new kernel: kernel will be in the ``workspace/sources`` area. The following example assumes ``devtool`` was used to build the - kernel: - :: + kernel:: $ wic cp poky_sdk/tmp/work/qemux86-poky-linux/linux-yocto/4.12.12+git999-r0/linux-yocto-4.12.12+git999/arch/x86/boot/bzImage \ poky/build/tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic:1/vmlinuz @@ -5968,14 +5791,12 @@ system image files much faster. - If you are using Ubuntu or Debian distributions, you can install the ``bmap-tools`` package using the following command and then use the tool without specifying ``PATH`` even from the root - account: - :: + account:: $ sudo apt-get install bmap-tools - If you are unable to install the ``bmap-tools`` package, you will - need to build Bmaptool before using it. Use the following command: - :: + need to build Bmaptool before using it. Use the following command:: $ bitbake bmap-tools-native @@ -5984,15 +5805,13 @@ that while this example uses a Wic image, you can use Bmaptool to flash any type of image. Use these steps to flash an image using Bmaptool: 1. *Update your local.conf File:* You need to have the following set - in your ``local.conf`` file before building your image: - :: + in your ``local.conf`` file before building your image:: IMAGE_FSTYPES += "wic wic.bmap" 2. *Get Your Image:* Either have your image ready (pre-built with the :term:`IMAGE_FSTYPES` - setting previously mentioned) or take the step to build the image: - :: + setting previously mentioned) or take the step to build the image:: $ bitbake image @@ -6000,20 +5819,17 @@ any type of image. Use these steps to flash an image using Bmaptool: depending on your particular setup. The following commands assume the image resides in the Build Directory's ``deploy/images/`` area: - - If you have write access to the media, use this command form: - :: + - If you have write access to the media, use this command form:: $ oe-run-native bmap-tools-native bmaptool copy build-directory/tmp/deploy/images/machine/image.wic /dev/sdX - If you do not have write access to the media, set your permissions - first and then use the same command form: - :: + first and then use the same command form:: $ sudo chmod 666 /dev/sdX $ oe-run-native bmap-tools-native bmaptool copy build-directory/tmp/deploy/images/machine/image.wic /dev/sdX -For help on the ``bmaptool`` command, use the following command: -:: +For help on the ``bmaptool`` command, use the following command:: $ bmaptool --help @@ -6054,8 +5870,8 @@ your image more secure. General Considerations ---------------------- -General considerations exist that help you create more secure images. -You should consider the following suggestions to help make your device +There are general considerations that help you create more secure images. +You should consider the following suggestions to make your device more secure: - Scan additional code you are adding to the system (e.g. application @@ -6107,8 +5923,7 @@ your build output more secure. The security flags are in the Use the following line in your ``local.conf`` file or in your custom distribution configuration file to enable the security compiler and -linker flags for your build: -:: +linker flags for your build:: require conf/distro/include/security_flags.inc @@ -6123,13 +5938,12 @@ system to make your images more secure: When creating a new project, the default is to provide you with an initial ``local.conf`` file that enables this feature using the :term:`EXTRA_IMAGE_FEATURES` - variable with the line: - :: + variable with the line:: EXTRA_IMAGE_FEATURES = "debug-tweaks" To disable that feature, simply comment out that line in your - ``local.conf`` file, or make sure ``IMAGE_FEATURES`` does not contain + ``local.conf`` file, or make sure :term:`IMAGE_FEATURES` does not contain "debug-tweaks" before producing your final image. Among other things, leaving this in place sets the root password as blank, which makes logging in for debugging or inspection easy during development but @@ -6250,8 +6064,7 @@ layer. The following steps provide some more detail: :term:`DISTRO` variable to point to your distribution's configuration file. For example, if your distribution's configuration file is named ``mydistro.conf``, then - you point to it as follows: - :: + you point to it as follows:: DISTRO = "mydistro" @@ -6292,8 +6105,7 @@ The OpenEmbedded build system uses the environment variable configuration information that ultimately ends up in the :term:`Build Directory` ``conf`` directory. By default, ``TEMPLATECONF`` is set as follows in the ``poky`` -repository: -:: +repository:: TEMPLATECONF=${TEMPLATECONF:-meta-poky/conf} @@ -6335,8 +6147,7 @@ display BitBake targets as part of the script output. Customizing this targets appears as part of the script's output. Here is the default list of targets displayed as a result of running -either of the setup scripts: -:: +either of the setup scripts:: You can now run 'bitbake <target>' @@ -6355,8 +6166,7 @@ Conserving Disk Space During Builds To help conserve disk space during builds, you can add the following statement to your project's ``local.conf`` configuration file found in -the :term:`Build Directory`: -:: +the :term:`Build Directory`:: INHERIT += "rm_work" @@ -6398,8 +6208,8 @@ or to not install a package at all. The following list introduces variables you can use to prevent packages from being installed into your image. Each of these variables only works -with IPK and RPM package types. Support for Debian packages does not -exist. Also, you can use these variables from your ``local.conf`` file +with IPK and RPM package types, not for Debian packages. +Also, you can use these variables from your ``local.conf`` file or attach them to a specific image recipe by using a recipe name override. For more detail on the variables, see the descriptions in the Yocto Project Reference Manual's glossary chapter. @@ -6438,20 +6248,20 @@ the following: .. note:: Technically, a third component, the "epoch" (i.e. :term:`PE`) is involved - but this discussion for the most part ignores ``PE``. + but this discussion for the most part ignores :term:`PE`. The version and revision are taken from the :term:`PV` and :term:`PR` variables, respectively. -- ``PV``: The recipe version. ``PV`` represents the version of the - software being packaged. Do not confuse ``PV`` with the binary +- :term:`PV`: The recipe version. :term:`PV` represents the version of the + software being packaged. Do not confuse :term:`PV` with the binary package version. - ``PR``: The recipe revision. - :term:`SRCPV`: The OpenEmbedded - build system uses this string to help define the value of ``PV`` when + build system uses this string to help define the value of :term:`PV` when the source code revision needs to be included in it. - :yocto_wiki:`PR Service </PR_Service>`: A @@ -6461,26 +6271,26 @@ the following: Whenever the binary package content changes, the binary package version must change. Changing the binary package version is accomplished by -changing or "bumping" the ``PR`` and/or ``PV`` values. Increasing these +changing or "bumping" the :term:`PR` and/or :term:`PV` values. Increasing these values occurs one of two ways: - Automatically using a Package Revision Service (PR Service). -- Manually incrementing the ``PR`` and/or ``PV`` variables. +- Manually incrementing the :term:`PR` and/or :term:`PV` variables. Given a primary challenge of any build system and its users is how to maintain a package feed that is compatible with existing package manager applications such as RPM, APT, and OPKG, using an automated system is much preferred over a manual system. In either system, the main requirement is that binary package version numbering increases in a -linear fashion and that a number of version components exist that +linear fashion and that there is a number of version components that support that linear progression. For information on how to ensure package revisioning remains linear, see the ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`" section. The following three sections provide related information on the PR -Service, the manual method for "bumping" ``PR`` and/or ``PV``, and on +Service, the manual method for "bumping" :term:`PR` and/or :term:`PV`, and on how to ensure binary package revisioning remains linear. Working With a PR Service @@ -6510,44 +6320,42 @@ Because the OpenEmbedded build system uses unique to a given build, the build system knows when to rebuild packages. All the inputs into a given task are represented by a signature, which can trigger a rebuild when different. Thus, the build -system itself does not rely on the ``PR``, ``PV``, and ``PE`` numbers to +system itself does not rely on the :term:`PR`, :term:`PV`, and :term:`PE` numbers to trigger a rebuild. The signatures, however, can be used to generate these values. The PR Service works with both ``OEBasic`` and ``OEBasicHash`` -generators. The value of ``PR`` bumps when the checksum changes and the +generators. The value of :term:`PR` bumps when the checksum changes and the different generator mechanisms change signatures under different circumstances. As implemented, the build system includes values from the PR Service -into the ``PR`` field as an addition using the form "``.x``" so ``r0`` +into the :term:`PR` field as an addition using the form "``.x``" so ``r0`` becomes ``r0.1``, ``r0.2`` and so forth. This scheme allows existing -``PR`` values to be used for whatever reasons, which include manual -``PR`` bumps, should it be necessary. +:term:`PR` values to be used for whatever reasons, which include manual +:term:`PR` bumps, should it be necessary. By default, the PR Service is not enabled or running. Thus, the packages generated are just "self consistent". The build system adds and removes packages and there are no guarantees about upgrade paths but images will be consistent and correct with the latest changes. -The simplest form for a PR Service is for it to exist for a single host +The simplest form for a PR Service is for a single host development system that builds the package feed (building system). For this scenario, you can enable a local PR Service by setting :term:`PRSERV_HOST` in your -``local.conf`` file in the :term:`Build Directory`: -:: +``local.conf`` file in the :term:`Build Directory`:: PRSERV_HOST = "localhost:0" Once the service is started, packages will automatically -get increasing ``PR`` values and BitBake takes care of starting and +get increasing :term:`PR` values and BitBake takes care of starting and stopping the server. If you have a more complex setup where multiple host development systems work against a common, shared package feed, you have a single PR Service running and it is connected to each building system. For this scenario, -you need to start the PR Service using the ``bitbake-prserv`` command: -:: +you need to start the PR Service using the ``bitbake-prserv`` command:: bitbake-prserv --host ip --port port --start @@ -6559,8 +6367,7 @@ server and port. It is also recommended you use build history, which adds some sanity checks to binary package versions, in conjunction with the server that is running the PR Service. To enable build history, add the following to -each building system's ``local.conf`` file: -:: +each building system's ``local.conf`` file:: # It is recommended to activate "buildhistory" for testing the PR service INHERIT += "buildhistory" @@ -6572,7 +6379,7 @@ history, see the .. note:: - The OpenEmbedded build system does not maintain ``PR`` information as + The OpenEmbedded build system does not maintain :term:`PR` information as part of the shared state (sstate) packages. If you maintain an sstate feed, it's expected that either all your building systems that contribute to the sstate feed use a shared PR Service, or you do not @@ -6591,27 +6398,27 @@ The alternative to setting up a PR Service is to manually "bump" the If a committed change results in changing the package output, then the value of the PR variable needs to be increased (or "bumped") as part of -that commit. For new recipes you should add the ``PR`` variable and set +that commit. For new recipes you should add the :term:`PR` variable and set its initial value equal to "r0", which is the default. Even though the default value is "r0", the practice of adding it to a new recipe makes it harder to forget to bump the variable when you make changes to the recipe in future. If you are sharing a common ``.inc`` file with multiple recipes, you can -also use the ``INC_PR`` variable to ensure that the recipes sharing the +also use the :term:`INC_PR` variable to ensure that the recipes sharing the ``.inc`` file are rebuilt when the ``.inc`` file itself is changed. The -``.inc`` file must set ``INC_PR`` (initially to "r0"), and all recipes -referring to it should set ``PR`` to "${INC_PR}.0" initially, +``.inc`` file must set :term:`INC_PR` (initially to "r0"), and all recipes +referring to it should set :term:`PR` to "${INC_PR}.0" initially, incrementing the last number when the recipe is changed. If the ``.inc`` -file is changed then its ``INC_PR`` should be incremented. +file is changed then its :term:`INC_PR` should be incremented. -When upgrading the version of a binary package, assuming the ``PV`` -changes, the ``PR`` variable should be reset to "r0" (or "${INC_PR}.0" -if you are using ``INC_PR``). +When upgrading the version of a binary package, assuming the :term:`PV` +changes, the :term:`PR` variable should be reset to "r0" (or "${INC_PR}.0" +if you are using :term:`INC_PR`). Usually, version increases occur only to binary packages. However, if -for some reason ``PV`` changes but does not increase, you can increase -the ``PE`` variable (Package Epoch). The ``PE`` variable defaults to +for some reason :term:`PV` changes but does not increase, you can increase +the :term:`PE` variable (Package Epoch). The :term:`PE` variable defaults to "0". Binary package version numbering strives to follow the `Debian Version @@ -6626,22 +6433,20 @@ Automatically Incrementing a Package Version Number When fetching a repository, BitBake uses the :term:`SRCREV` variable to determine the specific source code revision from which to build. You set the -``SRCREV`` variable to +:term:`SRCREV` variable to :term:`AUTOREV` to cause the OpenEmbedded build system to automatically use the latest revision of -the software: -:: +the software:: SRCREV = "${AUTOREV}" -Furthermore, you need to reference ``SRCPV`` in ``PV`` in order to +Furthermore, you need to reference :term:`SRCPV` in :term:`PV` in order to automatically update the version whenever the revision of the source -code changes. Here is an example: -:: +code changes. Here is an example:: PV = "1.0+git${SRCPV}" -The OpenEmbedded build system substitutes ``SRCPV`` with the following: +The OpenEmbedded build system substitutes :term:`SRCPV` with the following: .. code-block:: none @@ -6674,7 +6479,7 @@ with a number. The number used depends on the state of the PR Service: In summary, the OpenEmbedded build system does not track the history of binary package versions for this purpose. ``AUTOINC``, in this case, is -comparable to ``PR``. If PR server is not enabled, ``AUTOINC`` in the +comparable to :term:`PR`. If PR server is not enabled, ``AUTOINC`` in the package version is simply replaced by "0". If PR server is enabled, the build system keeps track of the package versions and bumps the number when the package revision changes. @@ -6707,8 +6512,7 @@ package for each one it finds by appending to the :term:`PACKAGES` variable and setting the appropriate values for ``FILES_packagename``, ``RDEPENDS_packagename``, ``DESCRIPTION_packagename``, and so forth. -Here is an example from the ``lighttpd`` recipe: -:: +Here is an example from the ``lighttpd`` recipe:: python populate_packages_prepend () { lighttpd_libdir = d.expand('${libdir}') @@ -6739,7 +6543,7 @@ The previous example specifies a number of things in the call to "Lighttpd module for alias". Often, packaging modules is as simple as the previous example. However, -more advanced options exist that you can use within +there are more advanced options that you can use within ``do_split_packages`` to modify its behavior. And, if you need to, you can add more logic by specifying a hook function that is called for each package. It is also perfectly acceptable to call ``do_split_packages`` @@ -6751,8 +6555,7 @@ directory of the ``poky`` :ref:`source repository <overview-manual/development-e also find examples in ``meta/classes/kernel.bbclass``. Following is a reference that shows ``do_split_packages`` mandatory and -optional arguments: -:: +optional arguments:: Mandatory arguments @@ -6840,8 +6643,7 @@ any dependencies on optional modules from other recipes are satisfied by your recipe. You can be sure these dependencies are satisfied by using the :term:`PACKAGES_DYNAMIC` variable. Here is an example that continues with the ``lighttpd`` recipe -shown earlier: -:: +shown earlier:: PACKAGES_DYNAMIC = "lighttpd-module-.*" @@ -6852,7 +6654,7 @@ ensure that any :term:`RDEPENDS` and :term:`RRECOMMENDS` on a package name starting with the prefix are satisfied during build time. If you are using ``do_split_packages`` as described in the previous section, -the value you put in ``PACKAGES_DYNAMIC`` should correspond to the name +the value you put in :term:`PACKAGES_DYNAMIC` should correspond to the name pattern specified in the call to ``do_split_packages``. Using Runtime Package Management @@ -6933,8 +6735,7 @@ variable to specify the format: :term:`Build Directory` (e.g. ``poky/build/conf/local.conf``). -2. Select the desired package format as follows: - :: +2. Select the desired package format as follows:: PACKAGE_CLASSES ?= "package_packageformat" @@ -6968,15 +6769,13 @@ target's package database(s) later once your image is up and running. Whenever you perform any sort of build step that can potentially generate a package or modify existing package, it is always a good idea to re-generate the package index after the build by using the following -command: -:: +command:: $ bitbake package-index It might be tempting to build the package and the package index at the same time with a command such as -the following: -:: +the following:: $ bitbake some-package package-index @@ -7023,9 +6822,8 @@ From within the build directory where you have built an image based on your packaging choice (i.e. the :term:`PACKAGE_CLASSES` setting), simply start the server. The following example assumes a build -directory of ``poky/build/tmp/deploy/rpm`` and a ``PACKAGE_CLASSES`` -setting of "package_rpm": -:: +directory of ``poky/build/tmp/deploy/rpm`` and a :term:`PACKAGE_CLASSES` +setting of "package_rpm":: $ cd poky/build/tmp/deploy/rpm $ python3 -m http.server @@ -7091,8 +6889,7 @@ for all architectures. You cannot do both: architectures. - *Create a Single (Full) Package Index:* Define a single base URL that - identifies where a full package database is located: - :: + identifies where a full package database is located:: [oe-packages] baseurl=http://my.server/rpm @@ -7210,8 +7007,7 @@ Signing RPM Packages To enable signing RPM packages, you must set up the following configurations in either your ``local.config`` or ``distro.config`` -file: -:: +file:: # Inherit sign_rpm.bbclass to enable signing functionality INHERIT += " sign_rpm" @@ -7226,7 +7022,7 @@ file: `passphrase`. Aside from the ``RPM_GPG_NAME`` and ``RPM_GPG_PASSPHRASE`` variables in -the previous example, two optional variables related to signing exist: +the previous example, two optional variables related to signing are available: - *GPG_BIN:* Specifies a ``gpg`` binary/wrapper that is executed when the package is signed. @@ -7242,21 +7038,20 @@ signed package feeds for IPK and RPM packages. The steps you need to take to enable signed package feed use are similar to the steps used to sign RPM packages. You must define the following in -your ``local.config`` or ``distro.config`` file: -:: +your ``local.config`` or ``distro.config`` file:: INHERIT += "sign_package_feed" PACKAGE_FEED_GPG_NAME = "key_name" PACKAGE_FEED_GPG_PASSPHRASE_FILE = "path_to_file_containing_passphrase" -For signed package feeds, the passphrase must exist in a separate file, +For signed package feeds, the passphrase must be specified in a separate file, which is pointed to by the ``PACKAGE_FEED_GPG_PASSPHRASE_FILE`` variable. Regarding security, keeping a plain text passphrase out of the configuration is more secure. Aside from the ``PACKAGE_FEED_GPG_NAME`` and ``PACKAGE_FEED_GPG_PASSPHRASE_FILE`` variables, three optional variables -related to signed package feeds exist: +related to signed package feeds are available: - *GPG_BIN* Specifies a ``gpg`` binary/wrapper that is executed when the package is signed. @@ -7282,8 +7077,7 @@ hand, the test can be anything from a simple shell script that runs a binary and checks the output to an elaborate system of test binaries and data files. -The test generates output in the format used by Automake: -:: +The test generates output in the format used by Automake:: result: testname @@ -7305,8 +7099,7 @@ To add package testing to your build, add the :term:`DISTRO_FEATURES` and :term:`EXTRA_IMAGE_FEATURES` variables to your ``local.conf`` file, which is found in the -:term:`Build Directory`: -:: +:term:`Build Directory`:: DISTRO_FEATURES_append = " ptest" EXTRA_IMAGE_FEATURES += "ptest-pkgs" @@ -7331,16 +7124,14 @@ test. Here is what you have to do for each recipe: - *Be sure the recipe inherits the* :ref:`ptest <ref-classes-ptest>` *class:* - Include the following line in each recipe: - :: + Include the following line in each recipe:: inherit ptest - *Create run-ptest:* This script starts your test. Locate the script where you will refer to it using :term:`SRC_URI`. Here is an - example that starts a test for ``dbus``: - :: + example that starts a test for ``dbus``:: #!/bin/sh cd test @@ -7352,8 +7143,7 @@ test. Here is what you have to do for each recipe: :term:`DEPENDS` and :term:`RDEPENDS` variables in your recipe in order for the package to meet the dependencies. Here - is an example where the package has a runtime dependency on "make": - :: + is an example where the package has a runtime dependency on "make":: RDEPENDS_${PN}-ptest += "make" @@ -7374,8 +7164,7 @@ test. Here is what you have to do for each recipe: Regardless, you still must add a ``do_compile_ptest`` function to build the test suite. Add a function similar to the following to your - recipe: - :: + recipe:: do_compile_ptest() { oe_runmake buildtest-TESTS @@ -7401,7 +7190,7 @@ use this fetcher in combination with :doc:`devtool </ref-manual/devtool-reference>` to create recipes that produce NPM packages. -Two workflows exist that allow you to create NPM packages using +There are two workflows that allow you to create NPM packages using ``devtool``: the NPM registry modules method and the NPM project code method. @@ -7457,8 +7246,7 @@ which is a file browser web application. You must know the ``cute-files`` module version. The first thing you need to do is use ``devtool`` and the NPM fetcher to -create the recipe: -:: +create the recipe:: $ devtool add "npm://registry.npmjs.org;package=cute-files;version=1.0.2" @@ -7486,8 +7274,7 @@ runs. practical way to have the licenses for all of the dependencies represented in the license manifest of the image. -The ``devtool edit-recipe`` command lets you take a look at the recipe: -:: +The ``devtool edit-recipe`` command lets you take a look at the recipe:: $ devtool edit-recipe cute-files SUMMARY = "Turn any folder on your computer into a cute file browser, available on the local network." @@ -7507,7 +7294,7 @@ The ``devtool edit-recipe`` command lets you take a look at the recipe: ... LICENSE_${PN}-vary = "MIT" -Three key points exist in the previous example: +Here are three key points in the previous example: - :term:`SRC_URI` uses the NPM scheme so that the NPM fetcher is used. @@ -7520,8 +7307,7 @@ Three key points exist in the previous example: :ref:`npm <ref-classes-npm>` class to package up all the modules. -You can run the following command to build the ``cute-files`` package: -:: +You can run the following command to build the ``cute-files`` package:: $ devtool build cute-files @@ -7529,8 +7315,7 @@ Remember that ``nodejs`` must be installed on the target before your package. Assuming 192.168.7.2 for the target's IP address, use the following -command to deploy your package: -:: +command to deploy your package:: $ devtool deploy-target -s cute-files root@192.168.7.2 @@ -7569,15 +7354,13 @@ projects method, you provide ``devtool`` with an URL that points to the source files. Replicating the same example, (i.e. ``cute-files``) use the following -command: -:: +command:: $ devtool add https://github.com/martinaglv/cute-files.git The recipe this command generates is very similar to the recipe created in -the previous section. However, the ``SRC_URI`` looks like the following: -:: +the previous section. However, the :term:`SRC_URI` looks like the following:: SRC_URI = " \ git://github.com/martinaglv/cute-files.git;protocol=https \ @@ -7611,7 +7394,7 @@ of precedence is the same as this list: - ``PACKAGE_ADD_METADATA_<PN>`` -- ``PACKAGE_ADD_METADATA`` +- :term:`PACKAGE_ADD_METADATA` `<PKGTYPE>` is a parameter and expected to be a distinct name of specific package type: @@ -7628,9 +7411,8 @@ The variable can contain multiple [one-line] metadata fields separated by the literal sequence '\\n'. The separator can be redefined using the variable flag ``separator``. -The following is an example that adds two custom fields for ipk -packages: -:: +Here is an example that adds two custom fields for ipk +packages:: PACKAGE_ADD_METADATA_IPK = "Vendor: CustomIpk\nGroup:Applications/Spreadsheets" @@ -7660,8 +7442,7 @@ adding statements to your configuration file so that the build process checks local directories first for existing tarballs before checking the Internet. -Here is an efficient way to set it up in your ``local.conf`` file: -:: +Here is an efficient way to set it up in your ``local.conf`` file:: SOURCE_MIRROR_URL ?= "file:///home/you/your-download-dir/" INHERIT += "own-mirrors" @@ -7692,8 +7473,7 @@ download directory :ref:`structure-build-downloads`, which is located with :term:`DL_DIR`. Use the following BitBake command form to fetch all the necessary -sources without starting the build: -:: +sources without starting the build:: $ bitbake target --runall=fetch @@ -7706,7 +7486,7 @@ Selecting an Initialization Manager =================================== By default, the Yocto Project uses SysVinit as the initialization -manager. However, support also exists for systemd, which is a full +manager. However, there is also support for systemd, which is a full replacement for init with parallel starting of services, reduced shell overhead and other features that are used by many distributions. @@ -7740,15 +7520,13 @@ following sections. Using systemd Exclusively ------------------------- -Set these variables in your distribution configuration file as follows: -:: +Set these variables in your distribution configuration file as follows:: DISTRO_FEATURES_append = " systemd" VIRTUAL-RUNTIME_init_manager = "systemd" You can also prevent the SysVinit distribution feature from -being automatically enabled as follows: -:: +being automatically enabled as follows:: DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" @@ -7756,8 +7534,7 @@ Doing so removes any redundant SysVinit scripts. To remove initscripts from your image altogether, set this variable -also: -:: +also:: VIRTUAL-RUNTIME_initscripts = "" @@ -7767,8 +7544,7 @@ For information on the backfill variable, see Using systemd for the Main Image and Using SysVinit for the Rescue Image ------------------------------------------------------------------------ -Set these variables in your distribution configuration file as follows: -:: +Set these variables in your distribution configuration file as follows:: DISTRO_FEATURES_append = " systemd" VIRTUAL-RUNTIME_init_manager = "systemd" @@ -7800,8 +7576,7 @@ Using Persistent and Pre-Populated\ ``/dev`` To use the static method for device population, you need to set the :term:`USE_DEVFS` variable to "0" -as follows: -:: +as follows:: USE_DEVFS = "0" @@ -7812,9 +7587,8 @@ variable defines the Device Table to use and should be set in the machine or distro configuration file. Alternatively, you can set this variable in your ``local.conf`` configuration file. -If you do not define the ``IMAGE_DEVICE_TABLES`` variable, the default -``device_table-minimal.txt`` is used: -:: +If you do not define the :term:`IMAGE_DEVICE_TABLES` variable, the default +``device_table-minimal.txt`` is used:: IMAGE_DEVICE_TABLES = "device_table-mymachine.txt" @@ -7826,8 +7600,7 @@ Using ``devtmpfs`` and a Device Manager To use the dynamic method for device population, you need to use (or be sure to set) the :term:`USE_DEVFS` -variable to "1", which is the default: -:: +variable to "1", which is the default:: USE_DEVFS = "1" @@ -7844,8 +7617,7 @@ To have more control over the device nodes, you can use a device manager like ``udev`` or ``busybox-mdev``. You choose the device manager by defining the ``VIRTUAL-RUNTIME_dev_manager`` variable in your machine or distro configuration file. Alternatively, you can set this variable in -your ``local.conf`` configuration file: -:: +your ``local.conf`` configuration file:: VIRTUAL-RUNTIME_dev_manager = "udev" @@ -7866,14 +7638,12 @@ Subversion (SVN), Git, and Bazaar (BZR) repositories. To enable this behavior, the :term:`PV` of the recipe needs to reference -:term:`SRCPV`. Here is an example: -:: +:term:`SRCPV`. Here is an example:: PV = "1.2.3+git${SRCPV}" Then, you can add the following to your -``local.conf``: -:: +``local.conf``:: SRCREV_pn-PN = "${AUTOREV}" @@ -7881,20 +7651,17 @@ Then, you can add the following to your which you want to enable automatic source revision updating. If you do not want to update your local configuration file, you can add -the following directly to the recipe to finish enabling the feature: -:: +the following directly to the recipe to finish enabling the feature:: SRCREV = "${AUTOREV}" The Yocto Project provides a distribution named ``poky-bleeding``, whose -configuration file contains the line: -:: +configuration file contains the line:: require conf/distro/include/poky-floating-revisions.inc This line pulls in the -listed include file that contains numerous lines of exactly that form: -:: +listed include file that contains numerous lines of exactly that form:: #SRCREV_pn-opkg-native ?= "${AUTOREV}" #SRCREV_pn-opkg-sdk ?= "${AUTOREV}" @@ -7946,15 +7713,13 @@ Creating the Root Filesystem To create the read-only root filesystem, simply add the "read-only-rootfs" feature to your image, normally in one of two ways. The first way is to add the "read-only-rootfs" image feature in the -image's recipe file via the ``IMAGE_FEATURES`` variable: -:: +image's recipe file via the :term:`IMAGE_FEATURES` variable:: IMAGE_FEATURES += "read-only-rootfs" As an alternative, you can add the same feature from within your build directory's ``local.conf`` file with the -associated ``EXTRA_IMAGE_FEATURES`` variable, as in: -:: +associated :term:`EXTRA_IMAGE_FEATURES` variable, as in:: EXTRA_IMAGE_FEATURES = "read-only-rootfs" @@ -8027,7 +7792,7 @@ link to the built library and that library will be pulled into your image along with the new software even if you did not want the library. The :ref:`buildhistory <ref-classes-buildhistory>` -class exists to help you maintain the quality of your build output. You +class helps you maintain the quality of your build output. You can use the class to highlight unexpected and possibly unwanted changes in the build output. When you enable build history, it records information about the contents of each package and image and then @@ -8048,11 +7813,10 @@ Enabling and Disabling Build History ------------------------------------ Build history is disabled by default. To enable it, add the following -``INHERIT`` statement and set the +:term:`INHERIT` statement and set the :term:`BUILDHISTORY_COMMIT` variable to "1" at the end of your ``conf/local.conf`` file found in the -:term:`Build Directory`: -:: +:term:`Build Directory`:: INHERIT += "buildhistory" BUILDHISTORY_COMMIT = "1" @@ -8078,12 +7842,12 @@ Build history information is kept in ``${``\ :term:`TOPDIR`\ ``}/buildhistory`` in the Build Directory as defined by the :term:`BUILDHISTORY_DIR` -variable. The following is an example abbreviated listing: +variable. Here is an example abbreviated listing: .. image:: figures/buildhistory.png :align: center -At the top level, a ``metadata-revs`` file exists that lists the +At the top level, there is a ``metadata-revs`` file that lists the revisions of the repositories for the enabled layers when the build was produced. The rest of the data splits into separate ``packages``, ``images`` and ``sdk`` directories, the contents of which are described @@ -8119,7 +7883,7 @@ The exceptions are ``FILELIST``, which is the actual list of files in the package, and ``PKGSIZE``, which is the total size of files in the package in bytes. -A file also exists that corresponds to the recipe from which the package +There is also a file that corresponds to the recipe from which the package came (e.g. ``buildhistory/packages/i586-poky-linux/busybox/latest``): .. code-block:: none @@ -8134,14 +7898,13 @@ came (e.g. ``buildhistory/packages/i586-poky-linux/busybox/latest``): busybox-staticdev busybox-dev busybox-doc busybox-locale busybox Finally, for those recipes fetched from a version control system (e.g., -Git), a file exists that lists source revisions that are specified in -the recipe and lists the actual revisions used during the build. Listed +Git), there is a file that lists source revisions that are specified in +the recipe and the actual revisions used during the build. Listed and actual revisions might differ when :term:`SRCREV` is set to ${:term:`AUTOREV`}. Here is an example assuming -``buildhistory/packages/qemux86-poky-linux/linux-yocto/latest_srcrev``): -:: +``buildhistory/packages/qemux86-poky-linux/linux-yocto/latest_srcrev``):: # SRCREV_machine = "38cd560d5022ed2dbd1ab0dca9642e47c98a0aa1" SRCREV_machine = "38cd560d5022ed2dbd1ab0dca9642e47c98a0aa1" @@ -8150,12 +7913,11 @@ example assuming You can use the ``buildhistory-collect-srcrevs`` command with the ``-a`` option to -collect the stored ``SRCREV`` values from build history and report them +collect the stored :term:`SRCREV` values from build history and report them in a format suitable for use in global configuration (e.g., ``local.conf`` or a distro include file) to override floating -``AUTOREV`` values to a fixed set of revisions. Here is some example -output from this command: -:: +:term:`AUTOREV` values to a fixed set of revisions. Here is some example +output from this command:: $ buildhistory-collect-srcrevs -a # i586-poky-linux @@ -8183,7 +7945,7 @@ output from this command: Here are some notes on using the ``buildhistory-collect-srcrevs`` command: - - By default, only values where the ``SRCREV`` was not hardcoded + - By default, only values where the :term:`SRCREV` was not hardcoded (usually when ``AUTOREV`` is used) are reported. Use the ``-a`` option to see all ``SRCREV`` values. @@ -8270,8 +8032,7 @@ image. If you are just interested in this information and not interested in collecting specific package or SDK information, you can enable writing only image information without any history by adding the following to your ``conf/local.conf`` file found in the -:term:`Build Directory`: -:: +:term:`Build Directory`:: INHERIT += "buildhistory" BUILDHISTORY_COMMIT = "0" @@ -8370,8 +8131,7 @@ interface. To see any changes that have occurred (assuming you have :term:`BUILDHISTORY_COMMIT` = "1"), you can simply use any Git command that allows you to view the history -of a repository. Here is one method: -:: +of a repository. Here is one method:: $ git log -p @@ -8379,10 +8139,9 @@ You need to realize, however, that this method does show changes that are not significant (e.g. a package's size changing by a few bytes). -A command-line tool called ``buildhistory-diff`` does exist, though, +There is a command-line tool called ``buildhistory-diff``, though, that queries the Git repository and prints just the differences that -might be significant in human-readable form. Here is an example: -:: +might be significant in human-readable form. Here is an example:: $ poky/poky/scripts/buildhistory-diff . HEAD^ Changes to images/qemux86_64/glibc/core-image-minimal (files-in-image.txt): @@ -8402,8 +8161,7 @@ might be significant in human-readable form. Here is an example: .. note:: The ``buildhistory-diff`` tool requires the ``GitPython`` - package. Be sure to install it using Pip3 as follows: - :: + package. Be sure to install it using Pip3 as follows:: $ pip3 install GitPython --user @@ -8473,8 +8231,7 @@ In order to run tests, you need to do the following: with sudo. - The package recipe ``qemu-helper-native`` is required to run - this script. Build the package using the following command: - :: + this script. Build the package using the following command:: $ bitbake qemu-helper-native @@ -8519,7 +8276,7 @@ Once you start running the tests, the following happens: tests run. The full boot log is written to ``${WORKDIR}/testimage/qemu_boot_log``. -5. Each test module loads in the order found in ``TEST_SUITES``. You can +5. Each test module loads in the order found in :term:`TEST_SUITES`. You can find the full output of the commands run over SSH in ``${WORKDIR}/testimgage/ssh_target_log``. @@ -8553,10 +8310,10 @@ addresses written into the image, or set the image to use DHCP and have your DHCP server on the test network assign a known IP address based on the MAC address of the device. -In order to run tests on hardware, you need to set ``TEST_TARGET`` to an +In order to run tests on hardware, you need to set :term:`TEST_TARGET` to an appropriate value. For QEMU, you do not have to change anything, the default value is "qemu". For running tests on hardware, the following -options exist: +options are available: - *"simpleremote":* Choose "simpleremote" if you are going to run tests on a target system that is already running the image to be tested and @@ -8602,15 +8359,14 @@ options exist: Selecting SystemdbootTarget ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you did not set ``TEST_TARGET`` to "SystemdbootTarget", then you do +If you did not set :term:`TEST_TARGET` to "SystemdbootTarget", then you do not need any information in this section. You can skip down to the ":ref:`dev-manual/common-tasks:running tests`" section. -If you did set ``TEST_TARGET`` to "SystemdbootTarget", you also need to +If you did set :term:`TEST_TARGET` to "SystemdbootTarget", you also need to perform a one-time setup of your master image by doing the following: -1. *Set EFI_PROVIDER:* Be sure that ``EFI_PROVIDER`` is as follows: - :: +1. *Set EFI_PROVIDER:* Be sure that :term:`EFI_PROVIDER` is as follows:: EFI_PROVIDER = "systemd-boot" @@ -8644,20 +8400,18 @@ perform a one-time setup of your master image by doing the following: 3. *Install image:* Install the image that you just built on the target system. -The final thing you need to do when setting ``TEST_TARGET`` to +The final thing you need to do when setting :term:`TEST_TARGET` to "SystemdbootTarget" is to set up the test image: 1. *Set up your local.conf file:* Make sure you have the following - statements in your ``local.conf`` file: - :: + statements in your ``local.conf`` file:: IMAGE_FSTYPES += "tar.gz" INHERIT += "testimage" TEST_TARGET = "SystemdbootTarget" TEST_TARGET_IP = "192.168.2.3" -2. *Build your test image:* Use BitBake to build the image: - :: +2. *Build your test image:* Use BitBake to build the image:: $ bitbake core-image-sato @@ -8667,12 +8421,11 @@ Power Control For most hardware targets other than "simpleremote", you can control power: -- You can use ``TEST_POWERCONTROL_CMD`` together with - ``TEST_POWERCONTROL_EXTRA_ARGS`` as a command that runs on the host +- You can use :term:`TEST_POWERCONTROL_CMD` together with + :term:`TEST_POWERCONTROL_EXTRA_ARGS` as a command that runs on the host and does power cycling. The test code passes one argument to that command: off, on or cycle (off then on). Here is an example that - could appear in your ``local.conf`` file: - :: + could appear in your ``local.conf`` file:: TEST_POWERCONTROL_CMD = "powercontrol.exp test 10.11.12.1 nuc1" @@ -8688,8 +8441,8 @@ power: .. note:: - You need to customize ``TEST_POWERCONTROL_CMD`` and - ``TEST_POWERCONTROL_EXTRA_ARGS`` for your own setup. The one requirement + You need to customize :term:`TEST_POWERCONTROL_CMD` and + :term:`TEST_POWERCONTROL_EXTRA_ARGS` for your own setup. The one requirement is that it accepts "on", "off", and "cycle" as the last argument. - When no command is defined, it connects to the device over SSH and @@ -8705,8 +8458,7 @@ wish to experiment with automated hardware testing, you can use the the required power action. This script requires either KDialog or Zenity to be installed. To use this script, set the :term:`TEST_POWERCONTROL_CMD` -variable as follows: -:: +variable as follows:: TEST_POWERCONTROL_CMD = "${COREBASE}/scripts/contrib/dialog-power-control" @@ -8728,8 +8480,7 @@ connecting to a remote console server. Regardless of the case, the command simply needs to connect to the serial console and forward that connection to standard input and output as any normal terminal program does. For example, to use the picocom terminal program on serial device -``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows: -:: +``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows:: TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200" @@ -8737,8 +8488,7 @@ For local devices where the serial port device disappears when the device reboots, an additional "serdevtry" wrapper script is provided. To use this wrapper, simply prefix the terminal command with -``${COREBASE}/scripts/contrib/serdevtry``: -:: +``${COREBASE}/scripts/contrib/serdevtry``:: TEST_SERIALCONTROL_CMD = "${COREBASE}/scripts/contrib/serdevtry picocom -b 115200 /dev/ttyUSB0" @@ -8752,27 +8502,23 @@ You can start the tests automatically or manually: set the :term:`TESTIMAGE_AUTO` variable to "1" in your ``local.conf`` file in the - :term:`Build Directory`: - :: + :term:`Build Directory`:: TESTIMAGE_AUTO = "1" Next, build your image. If the image successfully builds, the - tests run: - :: + tests run:: bitbake core-image-sato - *Manually running tests:* To manually run the tests, first globally inherit the :ref:`testimage <ref-classes-testimage*>` class - by editing your ``local.conf`` file: - :: + by editing your ``local.conf`` file:: INHERIT += "testimage" - Next, use BitBake to run the tests: - :: + Next, use BitBake to run the tests:: bitbake -c testimage image @@ -8794,14 +8540,14 @@ the ``local.conf`` file as normal. Be sure that tests reside in You can change the set of tests run by appending or overriding :term:`TEST_SUITES` variable in -``local.conf``. Each name in ``TEST_SUITES`` represents a required test -for the image. Test modules named within ``TEST_SUITES`` cannot be +``local.conf``. Each name in :term:`TEST_SUITES` represents a required test +for the image. Test modules named within :term:`TEST_SUITES` cannot be skipped even if a test is not suitable for an image (e.g. running the RPM tests on an image without ``rpm``). Appending "auto" to -``TEST_SUITES`` causes the build system to try to run all tests that are +:term:`TEST_SUITES` causes the build system to try to run all tests that are suitable for the image (i.e. each test module may elect to skip itself). -The order you list tests in ``TEST_SUITES`` is important and influences +The order you list tests in :term:`TEST_SUITES` is important and influences test dependencies. Consequently, tests that depend on other tests should be added after the test on which they depend. For example, since the ``ssh`` test depends on the ``ping`` test, "ssh" needs to come after @@ -8815,18 +8561,15 @@ handling. Here are some things to keep in mind when running tests: -- The default tests for the image are defined as: - :: +- The default tests for the image are defined as:: DEFAULT_TEST_SUITES_pn-image = "ping ssh df connman syslog xorg scp vnc date rpm dnf dmesg" -- Add your own test to the list of the by using the following: - :: +- Add your own test to the list of the by using the following:: TEST_SUITES_append = " mytest" -- Run a specific list of tests as follows: - :: +- Run a specific list of tests as follows:: TEST_SUITES = "test1 test2 test3" @@ -8842,46 +8585,40 @@ test execution off to a scheduler. You can only export tests that are defined in :term:`TEST_SUITES`. If your image is already built, make sure the following are set in your -``local.conf`` file: -:: +``local.conf`` file:: INHERIT += "testexport" TEST_TARGET_IP = "IP-address-for-the-test-target" TEST_SERVER_IP = "IP-address-for-the-test-server" You can then export the tests with the -following BitBake command form: -:: +following BitBake command form:: $ bitbake image -c testexport Exporting the tests places them in the :term:`Build Directory` in ``tmp/testexport/``\ image, which is controlled by the -``TEST_EXPORT_DIR`` variable. +:term:`TEST_EXPORT_DIR` variable. -You can now run the tests outside of the build environment: -:: +You can now run the tests outside of the build environment:: $ cd tmp/testexport/image $ ./runexported.py testdata.json Here is a complete example that shows IP addresses and uses the -``core-image-sato`` image: -:: +``core-image-sato`` image:: INHERIT += "testexport" TEST_TARGET_IP = "192.168.7.2" TEST_SERVER_IP = "192.168.7.1" -Use BitBake to export the tests: -:: +Use BitBake to export the tests:: $ bitbake core-image-sato -c testexport Run the tests outside of -the build environment using the following: -:: +the build environment using the following:: $ cd tmp/testexport/core-image-sato $ ./runexported.py testdata.json @@ -8900,7 +8637,7 @@ layer's ``layer.conf`` file as normal). Just remember the following: - Do not use module names that collide with existing core tests. -- Minimally, an empty ``__init__.py`` file must exist in the runtime +- Minimally, an empty ``__init__.py`` file must be present in the runtime directory. To create a new test, start by copying an existing module (e.g. @@ -8980,7 +8717,7 @@ Class attributes are as follows: Instance Attributes ~~~~~~~~~~~~~~~~~~~ -A single instance attribute exists, which is ``target``. The ``target`` +There is a single instance attribute, which is ``target``. The ``target`` instance attribute is identical to the class attribute of the same name, which is described in the previous section. This attribute exists as both an instance and class attribute so tests can use @@ -9157,14 +8894,12 @@ variables>` did not work out as expected. BitBake's ``-e`` option is used to display variable values after parsing. The following command displays the variable values after the configuration files (i.e. ``local.conf``, ``bblayers.conf``, -``bitbake.conf`` and so forth) have been parsed: -:: +``bitbake.conf`` and so forth) have been parsed:: $ bitbake -e The following command displays variable values after a specific recipe has -been parsed. The variables include those from the configuration as well: -:: +been parsed. The variables include those from the configuration as well:: $ bitbake -e recipename @@ -9187,8 +8922,7 @@ variable flags (varflags) set on the variable. The output can be very helpful during debugging. Variables that are exported to the environment are preceded by -``export`` in the output of ``bitbake -e``. See the following example: -:: +``export`` in the output of ``bitbake -e``. See the following example:: export CC="i586-poky-linux-gcc -m32 -march=i586 --sysroot=/home/ulf/poky/build/tmp/sysroots/qemux86" @@ -9250,8 +8984,7 @@ Following are a few of the available ``oe-pkgdata-util`` subcommands. - ``oe-pkgdata-util find-path path ...``: Lists the names of the packages that contain the given paths. For example, the following tells us that ``/usr/share/man/man1/make.1`` is contained in the - ``make-doc`` package: - :: + ``make-doc`` package:: $ oe-pkgdata-util find-path /usr/share/man/man1/make.1 make-doc: /usr/share/man/man1/make.1 @@ -9260,8 +8993,7 @@ Following are a few of the available ``oe-pkgdata-util`` subcommands. of the recipes that produce the given packages. For more information on the ``oe-pkgdata-util`` command, use the help -facility: -:: +facility:: $ oe-pkgdata-util --help $ oe-pkgdata-util subcommand --help @@ -9274,8 +9006,7 @@ before the one you have specified. Dependency information can help you understand why a recipe is built. To generate dependency information for a recipe, run the following -command: -:: +command:: $ bitbake -g recipename @@ -9305,8 +9036,7 @@ format and can be converted to images (e.g. using the ``dot`` tool from provide useful information. As an example, the ``task-depends.dot`` file contains lines such - as the following: - :: + as the following:: "libxslt.do_configure" -> "libxml2.do_populate_sysroot" @@ -9323,8 +9053,7 @@ format and can be converted to images (e.g. using the ``dot`` tool from displays paths between graph nodes. You can use a different method to view dependency information by using -the following command: -:: +the following command:: $ bitbake -g -u taskexp recipename @@ -9350,8 +9079,7 @@ If you are unsure whether a variable dependency is being picked up automatically for a given task, you can list the variable dependencies BitBake has determined by doing the following: -1. Build the recipe containing the task: -:: +1. Build the recipe containing the task:: $ bitbake recipename @@ -9362,8 +9090,7 @@ BitBake has determined by doing the following: checksum for the task. As an example, for the :ref:`ref-tasks-fetch` task of the ``db`` recipe, the ``sigdata`` file might be found in the following - location: - :: + location:: ${BUILDDIR}/tmp/stamps/i586-poky-linux/db/6.0.30-r1.do_fetch.sigdata.7c048c18222b16ff0bcee2000ef648b1 @@ -9375,8 +9102,7 @@ BitBake has determined by doing the following: same information as ``sigdata`` files. 3. Run ``bitbake-dumpsig`` on the ``sigdata`` or ``siginfo`` file. Here - is an example: - :: + is an example:: $ bitbake-dumpsig ${BUILDDIR}/tmp/stamps/i586-poky-linux/db/6.0.30-r1.do_fetch.sigdata.7c048c18222b16ff0bcee2000ef648b1 @@ -9406,8 +9132,7 @@ call ``bitbake-diffsigs`` with just one file, the command behaves like You can also use BitBake to dump out the signature construction information without executing tasks by using either of the following -BitBake command-line options: -:: +BitBake command-line options:: ‐‐dump-signatures=SIGNATURE_HANDLER -S SIGNATURE_HANDLER @@ -9494,8 +9219,7 @@ behavior in most cases is: ``do_fetch``, ``do_unpack``, ``do_patch``, ``do_build`` and any tasks on which it depends build first. Some tasks, such as ``do_devshell``, are not part of the default build chain. If you wish to run a task that is not part of the default build chain, you can -use the ``-c`` option in BitBake. Here is an example: -:: +use the ``-c`` option in BitBake. Here is an example:: $ bitbake matchbox-desktop -c devshell @@ -9520,8 +9244,7 @@ out), then you can use the ``-f`` option. [\ :ref:`nostamp <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ] variable flag is already set for the task. -The following example shows one way you can use the ``-f`` option: -:: +The following example shows one way you can use the ``-f`` option:: $ bitbake matchbox-desktop . @@ -9550,8 +9273,7 @@ Using this option invalidates the given task and then runs the :ref:`ref-tasks-build` task, which is the default task if no task is given, and the tasks on which it depends. You could replace the final two commands in the previous example with -the following single command: -:: +the following single command:: $ bitbake matchbox-desktop -C compile @@ -9575,16 +9297,14 @@ task dependency mechanisms. and build output might not be in the clean state they would be in for a "normal" build, depending on what actions you took. To get rid of such warnings, you can remove the work directory and rebuild the - recipe, as follows: - :: + recipe, as follows:: $ bitbake matchbox-desktop -c clean $ bitbake matchbox-desktop You can view a list of tasks in a given package by running the -``do_listtasks`` task as follows: -:: +``do_listtasks`` task as follows:: $ bitbake matchbox-desktop -c listtasks @@ -9608,8 +9328,7 @@ Building with No Dependencies ----------------------------- To build a specific recipe (``.bb`` file), you can use the following -command form: -:: +command form:: $ bitbake -b somepath/somerecipe.bb @@ -9627,7 +9346,7 @@ Recipe Logging Mechanisms The Yocto Project provides several logging functions for producing debugging output and reporting errors and warnings. For Python -functions, the following logging functions exist. All of these functions +functions, the following logging functions are available. All of these functions log to ``${T}/log.do_``\ `task`, and can also log to standard output (stdout) with the right settings: @@ -9678,8 +9397,7 @@ in the log, use the "debug" loglevel. Following is an example written in Python. The code handles logging for a function that determines the number of tasks needed to be run. See the ":ref:`ref-tasks-listtasks`" -section for additional information: -:: +section for additional information:: python do_listtasks() { bb.debug(2, "Starting to figure out the task list") @@ -9734,8 +9452,8 @@ A parallel ``make`` race occurs when the build consists of several parts that are run simultaneously and a situation occurs when the output or result of one part is not ready for use with a different part of the build that depends on that output. Parallel make races are annoying and -can sometimes be difficult to reproduce and fix. However, some simple -tips and tricks exist that can help you debug and fix them. This section +can sometimes be difficult to reproduce and fix. However, there are some simple +tips and tricks that can help you debug and fix them. This section presents a real-world example of an error encountered on the Yocto Project autobuilder and the process used to fix it. @@ -9840,31 +9558,27 @@ So the first thing to do is build "neard" locally. Before you start the build, set the :term:`PARALLEL_MAKE` variable in your ``local.conf`` file to a high number (e.g. "-j 20"). Using a -high value for ``PARALLEL_MAKE`` increases the chances of the race -condition showing up: -:: +high value for :term:`PARALLEL_MAKE` increases the chances of the race +condition showing up:: $ bitbake neard -Once the local build for "neard" completes, start a ``devshell`` build: -:: +Once the local build for "neard" completes, start a ``devshell`` build:: $ bitbake neard -c devshell For information on how to use a ``devshell``, see the ":ref:`dev-manual/common-tasks:using a development shell`" section. -In the ``devshell``, do the following: -:: +In the ``devshell``, do the following:: $ make clean $ make tools/snep-send.o The ``devshell`` commands cause the failure to clearly -be visible. In this case, a missing dependency exists for the "neard" +be visible. In this case, there is a missing dependency for the ``neard`` Makefile target. Here is some abbreviated, sample output with the -missing dependency clearly visible at the end: -:: +missing dependency clearly visible at the end:: i586-poky-linux-gcc -m32 -march=i586 --sysroot=/home/scott-lenovo/...... . @@ -9885,8 +9599,7 @@ Creating a Patch for the Fix Because there is a missing dependency for the Makefile target, you need to patch the ``Makefile.am`` file, which is generated from -``Makefile.in``. You can use Quilt to create the patch: -:: +``Makefile.in``. You can use Quilt to create the patch:: $ quilt new parallelmake.patch Patch patches/parallelmake.patch is now on top @@ -9898,23 +9611,19 @@ For more information on using Quilt, see the At this point you need to make the edits to ``Makefile.am`` to add the missing dependency. For our example, you have to add the following line -to the file: -:: +to the file:: tools/snep-send.$(OBJEXT): include/near/dbus.h Once you have edited the file, use the ``refresh`` command to create the -patch: -:: +patch:: $ quilt refresh Refreshed patch patches/parallelmake.patch -Once -the patch file exists, you need to add it back to the originating recipe -folder. Here is an example assuming a top-level -:term:`Source Directory` named ``poky``: -:: +Once the patch file is created, you need to add it back to the originating +recipe folder. Here is an example assuming a top-level +:term:`Source Directory` named ``poky``:: $ cp patches/parallelmake.patch poky/meta/recipes-connectivity/neard/neard @@ -9922,8 +9631,7 @@ The final thing you need to do to implement the fix in the build is to update the "neard" recipe (i.e. ``neard-0.14.bb``) so that the :term:`SRC_URI` statement includes the patch file. The recipe file is in the folder above the patch. Here -is what the edited ``SRC_URI`` statement would look like: -:: +is what the edited :term:`SRC_URI` statement would look like:: SRC_URI = "${KERNELORG_MIRROR}/linux/network/nfc/${BPN}-${PV}.tar.xz \ file://neard.in \ @@ -9932,8 +9640,7 @@ is what the edited ``SRC_URI`` statement would look like: " With the patch complete and moved to the correct folder and the -``SRC_URI`` statement updated, you can exit the ``devshell``: -:: +:term:`SRC_URI` statement updated, you can exit the ``devshell``:: $ exit @@ -9941,16 +9648,14 @@ Testing the Build ~~~~~~~~~~~~~~~~~ With everything in place, you can get back to trying the build again -locally: -:: +locally:: $ bitbake neard This build should succeed. Now you can open up a ``devshell`` again and repeat the clean and make -operations as follows: -:: +operations as follows:: $ bitbake neard -c devshell $ make clean @@ -9997,42 +9702,47 @@ methods you can use: running a debuginfod server and using gdbserver. Using the debuginfod server method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -"debuginfod" from "elfutils" is a way to distribute "debuginfo" files. -Running a "debuginfod" server makes debug symbols readily available, +``debuginfod`` from ``elfutils`` is a way to distribute ``debuginfo`` files. +Running a ``debuginfod`` server makes debug symbols readily available, which means you don't need to download debugging information and the binaries of the process being debugged. You can just fetch debug symbols from the server. -To run a debuginfod server, you need to do the following: +To run a ``debuginfod`` server, you need to do the following: -- Ensure that this variable is set in your ``local.conf`` file: - :: +- Ensure that ``debuginfod`` is present in :term:`DISTRO_FEATURES` + (it already is in ``OpenEmbedded-core`` defaults and ``poky`` reference distribution). + If not, set in your distro config file or in ``local.conf``:: - PACKAGECONFIG_pn-elfutils-native = "debuginfod libdebuginfod" + DISTRO_FEATURES_append = " debuginfod" - This :term:`PACKAGECONFIG` option enables debuginfod and libdebuginfod for - "elfutils-native". + This distro feature enables the server and client library in ``elfutils``, + and enables ``debuginfod`` support in clients (at the moment, ``gdb`` and ``binutils``). -- Run the following commands to set up the "debuginfod" server: - :: +- Run the following commands to launch the ``debuginfod`` server on the host:: $ oe-debuginfod +- To use ``debuginfod`` on the target, you need to know the ip:port where + ``debuginfod`` is listening on the host (port defaults to 8002), and export + that into the shell environment, for example in ``qemu``:: -To use debuginfod on the target, you need the following: + root@qemux86-64:~# export DEBUGINFOD_URLS="http://192.168.7.1:8002/" -- Ensure that this variable is set in your ``local.conf`` file: - :: - - DEBUGINFOD_URLS = "http://localhost:8002/" +- Then debug info fetching should simply work when running the target ``gdb``, + ``readelf`` or ``objdump``, for example:: - This :term:`DEBUGINFOD_URLS` option does the client configuration. + root@qemux86-64:~# gdb /bin/cat + ... + Reading symbols from /bin/cat... + Downloading separate debug info for /bin/cat... + Reading symbols from /home/root/.cache/debuginfod_client/923dc4780cfbc545850c616bffa884b6b5eaf322/debuginfo... - :: +- It's also possible to use ``debuginfod-find`` to just query the server:: - PACKAGECONFIG_pn-gdb = "debuginfod" + root@qemux86-64:~# debuginfod-find debuginfo /bin/ls + /home/root/.cache/debuginfod_client/356edc585f7f82d46f94fcb87a86a3fe2d2e60bd/debuginfo - This :term:`PACKAGECONFIG` option enables "debuginfod" for "gdb". Using the gdbserver method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -10069,8 +9779,7 @@ debugger. 1. *Configure your build system to construct the companion debug filesystem:* - In your ``local.conf`` file, set the following: - :: + In your ``local.conf`` file, set the following:: IMAGE_GEN_DEBUGFS = "1" IMAGE_FSTYPES_DEBUGFS = "tar.bz2" @@ -10090,8 +9799,7 @@ debugger. 2. *Configure the system to include gdbserver in the target filesystem:* Make the following addition in either your ``local.conf`` file or in - an image recipe: - :: + an image recipe:: IMAGE_INSTALL_append = " gdbserver" @@ -10101,29 +9809,25 @@ debugger. 3. *Build the environment:* Use the following command to construct the image and the companion - Debug Filesystem: - :: + Debug Filesystem:: $ bitbake image Build the cross GDB component and make it available for debugging. Build the SDK that matches the image. Building the SDK is best for a production build that can be - used later for debugging, especially during long term maintenance: - :: + used later for debugging, especially during long term maintenance:: $ bitbake -c populate_sdk image Alternatively, you can build the minimal toolchain components that match the target. Doing so creates a smaller than typical SDK and only contains a minimal set of components with which to build simple - test applications, as well as run the debugger: - :: + test applications, as well as run the debugger:: $ bitbake meta-toolchain - A final method is to build Gdb itself within the build system: - :: + A final method is to build Gdb itself within the build system:: $ bitbake gdb-cross-<architecture> @@ -10140,8 +9844,7 @@ debugger. 4. *Set up the* ``debugfs``\ *:* - Run the following commands to set up the ``debugfs``: - :: + Run the following commands to set up the ``debugfs``:: $ mkdir debugfs $ cd debugfs @@ -10180,8 +9883,7 @@ debugger. Documentation <https://www.gnu.org/software/gdb/documentation/>`__. After running gdbserver on the target, you need to run Gdb on the - host and configure it and connect to the target. Use these commands: - :: + host and configure it and connect to the target. Use these commands:: $ cd directory-holding-the-debugfs-directory $ arch-gdb @@ -10212,8 +9914,7 @@ debugger. If the binary is processed through the debug splitting in OpenEmbedded, you should also copy the debug items (i.e. ``.debug`` contents and corresponding ``/usr/src/debug`` files) from the work - directory. Here is an example: - :: + directory. Here is an example:: $ bitbake bash $ bitbake -c devshell bash @@ -10234,25 +9935,21 @@ debug on the target hardware. To support this kind of debugging, you need do the following: - Ensure that GDB is on the target. You can do this by adding "gdb" to - :term:`IMAGE_INSTALL`: - :: + :term:`IMAGE_INSTALL`:: IMAGE_INSTALL_append = " gdb" - Alternatively, you can add "tools-debug" to :term:`IMAGE_FEATURES`: - :: + Alternatively, you can add "tools-debug" to :term:`IMAGE_FEATURES`:: IMAGE_FEATURES_append = " tools-debug" - Ensure that debug symbols are present. You can make sure these - symbols are present by installing ``-dbg``: - :: + symbols are present by installing ``-dbg``:: IMAGE_INSTALL_append = "packagename-dbg" Alternatively, you can do the following to include - all the debug symbols: - :: + all the debug symbols:: IMAGE_FEATURES_append = " dbg-pkgs" @@ -10262,8 +9959,7 @@ To support this kind of debugging, you need do the following: of optimization used by the compiler. For example, when adding the following line to your ``local.conf`` file, you will reduce optimization from :term:`FULL_OPTIMIZATION` of "-O2" to :term:`DEBUG_OPTIMIZATION` - of "-O -fno-omit-frame-pointer": - :: + of "-O -fno-omit-frame-pointer":: DEBUG_BUILD = "1" @@ -10289,14 +9985,14 @@ Here are some other tips that you might find useful: - Removing :term:`TMPDIR` (usually ``tmp/``, within the :term:`Build Directory`) can often fix - temporary build issues. Removing ``TMPDIR`` is usually a relatively + temporary build issues. Removing :term:`TMPDIR` is usually a relatively cheap operation, because task output will be cached in :term:`SSTATE_DIR` (usually ``sstate-cache/``, which is also in the Build Directory). .. note:: - Removing ``TMPDIR`` might be a workaround rather than a fix. + Removing :term:`TMPDIR` might be a workaround rather than a fix. Consequently, trying to determine the underlying cause of an issue before removing the directory is a good idea. @@ -10307,8 +10003,7 @@ Here are some other tips that you might find useful: Using GNU Grep, you can use the following shell function to recursively search through common recipe-related files, skipping binary files, ``.git`` directories, and the Build Directory (assuming - its name starts with "build"): - :: + its name starts with "build"):: g() { grep -Ir \ @@ -10321,8 +10016,7 @@ Here are some other tips that you might find useful: "$@" } - Following are some usage examples: - :: + Following are some usage examples:: $ g FOO # Search recursively for "FOO" $ g -i foo # Search recursively for "foo", ignoring case @@ -10422,7 +10116,7 @@ specific uses. The Yocto Project uses a mailing list and a patch-based workflow that is similar to the Linux kernel but contains important differences. In -general, a mailing list exists through which you can submit patches. You +general, there is a mailing list through which you can submit patches. You should send patches to the appropriate mailing list so that they can be reviewed and merged by the appropriate maintainer. The specific mailing list you need to use depends on the location of the code you are @@ -10581,8 +10275,7 @@ Preparing Changes for Submission specific convention for bug references - any commit that addresses a specific bug should use the following form for the detailed description. Be sure to use the actual bug-tracking ID from - Bugzilla for bug-id: - :: + Bugzilla for bug-id:: Fixes [YOCTO #bug-id] @@ -10608,8 +10301,7 @@ without using the scripts once the steps in provide the command, you must include a revision list or a number of patches as part of the command. For example, either of these two commands takes your most recent single commit and formats it as an - email message in the current directory: - :: + email message in the current directory:: $ git format-patch -1 @@ -10701,8 +10393,7 @@ been followed: 1. *Push Your Commits to a "Contrib" Upstream:* If you have arranged for permissions to push to an upstream contrib repository, push the - change to that repository: - :: + change to that repository:: $ git push upstream_remote_repo local_branch_name @@ -10711,8 +10402,7 @@ been followed: working in a local branch named `your_name`\ ``/README``. The following command pushes your local commits to the ``meta-intel-contrib`` upstream repository and puts the commit in a branch named - `your_name`\ ``/README``: - :: + `your_name`\ ``/README``:: $ git push meta-intel-contrib your_name/README @@ -10729,8 +10419,7 @@ been followed: - *Search by File:* Using :ref:`overview-manual/development-environment:git`, you can enter the following command to bring up a short list of all - commits against a specific file: - :: + commits against a specific file:: git shortlog -- filename @@ -10764,8 +10453,7 @@ been followed: First, create the pull request. For example, the following command runs the script, specifies the upstream repository in the contrib directory into which you pushed the change, and provides a subject - line in the created patch files: - :: + line in the created patch files:: $ poky/scripts/create-pull-request -u meta-intel-contrib -s "Updated Manual Section Reference in README" @@ -10778,8 +10466,7 @@ been followed: editing the cover letter, send the pull request. For example, the following command runs the script and specifies the patch directory and email address. In this example, the email address is a mailing - list: - :: + list:: $ poky/scripts/send-pull-request -p ~/meta-intel/pull-10565 -t meta-intel@yoctoproject.org @@ -10788,8 +10475,7 @@ been followed: .. note:: For help on using these scripts, simply provide the ``-h`` - argument as follows: - :: + argument as follows:: $ poky/scripts/create-pull-request -h $ poky/scripts/send-pull-request -h @@ -10899,10 +10585,9 @@ build will fail. Specifying the ``LIC_FILES_CHKSUM`` Variable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The ``LIC_FILES_CHKSUM`` variable contains checksums of the license text +The :term:`LIC_FILES_CHKSUM` variable contains checksums of the license text in the source code for the recipe. Following is an example of how to -specify ``LIC_FILES_CHKSUM``: -:: +specify :term:`LIC_FILES_CHKSUM`:: LIC_FILES_CHKSUM = "file://COPYING;md5=xxxx \ file://licfile1.txt;beginline=5;endline=29;md5=yyyy \ @@ -10922,11 +10607,10 @@ specify ``LIC_FILES_CHKSUM``: The build system uses the :term:`S` variable as the default directory when searching files listed in -``LIC_FILES_CHKSUM``. The previous example employs the default +:term:`LIC_FILES_CHKSUM`. The previous example employs the default directory. -Consider this next example: -:: +Consider this next example:: LIC_FILES_CHKSUM = "file://src/ls.c;beginline=5;endline=16;\ md5=bb14ed3c4cda583abc85401304b5cd4e" @@ -10936,13 +10620,13 @@ The first line locates a file in ``${S}/src/ls.c`` and isolates lines five through 16 as license text. The second line refers to a file in :term:`WORKDIR`. -Note that ``LIC_FILES_CHKSUM`` variable is mandatory for all recipes, -unless the ``LICENSE`` variable is set to "CLOSED". +Note that :term:`LIC_FILES_CHKSUM` variable is mandatory for all recipes, +unless the :term:`LICENSE` variable is set to "CLOSED". Explanation of Syntax ~~~~~~~~~~~~~~~~~~~~~ -As mentioned in the previous section, the ``LIC_FILES_CHKSUM`` variable +As mentioned in the previous section, the :term:`LIC_FILES_CHKSUM` variable lists all the important files that contain the license text for the source code. It is possible to specify a checksum for an entire file, or a specific section of a file (specified by beginning and ending line @@ -10962,7 +10646,7 @@ build, the correct md5 checksum is placed in the build log and can be easily copied to the recipe. There is no limit to how many files you can specify using the -``LIC_FILES_CHKSUM`` variable. Generally, however, every project +:term:`LIC_FILES_CHKSUM` variable. Generally, however, every project requires a few specifications for license tracking. Many projects have a "COPYING" file that stores the license information for all the source code files. This practice allows you to just track the "COPYING" file as @@ -10988,31 +10672,28 @@ are defined on a recipe-by-recipe basis through the :term:`LICENSE_FLAGS` variable definition in the affected recipe. For instance, the ``poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly`` recipe -contains the following statement: -:: +contains the following statement:: LICENSE_FLAGS = "commercial" Here is a slightly more complicated example that contains both an explicit recipe -name and version (after variable expansion): -:: +name and version (after variable expansion):: LICENSE_FLAGS = "license_${PN}_${PV}" In order for a component restricted by a -``LICENSE_FLAGS`` definition to be enabled and included in an image, it +:term:`LICENSE_FLAGS` definition to be enabled and included in an image, it needs to have a matching entry in the global :term:`LICENSE_FLAGS_WHITELIST` variable, which is a variable typically defined in your ``local.conf`` file. For example, to enable the ``poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly`` package, you could add either the string "commercial_gst-plugins-ugly" or the more -general string "commercial" to ``LICENSE_FLAGS_WHITELIST``. See the +general string "commercial" to :term:`LICENSE_FLAGS_WHITELIST`. See the ":ref:`dev-manual/common-tasks:license flag matching`" section for a full -explanation of how ``LICENSE_FLAGS`` matching works. Here is the -example: -:: +explanation of how :term:`LICENSE_FLAGS` matching works. Here is the +example:: LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly" @@ -11020,8 +10701,7 @@ Likewise, to additionally enable the package built from the recipe containing ``LICENSE_FLAGS = "license_${PN}_${PV}"``, and assuming that the actual recipe name was ``emgd_1.10.bb``, the following string would enable that package as well as the original ``gst-plugins-ugly`` -package: -:: +package:: LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly license_emgd_1.10" @@ -11043,8 +10723,8 @@ License Flag Matching License flag matching allows you to control what recipes the OpenEmbedded build system includes in the build. Fundamentally, the -build system attempts to match ``LICENSE_FLAGS`` strings found in -recipes against ``LICENSE_FLAGS_WHITELIST`` strings found in the +build system attempts to match :term:`LICENSE_FLAGS` strings found in +recipes against :term:`LICENSE_FLAGS_WHITELIST` strings found in the whitelist. A match causes the build system to include a recipe in the build, while failure to find a match causes the build system to exclude a recipe. @@ -11054,14 +10734,14 @@ concepts will help you correctly and effectively use matching. Before a flag defined by a particular recipe is tested against the contents of the whitelist, the expanded string ``_${PN}`` is appended to -the flag. This expansion makes each ``LICENSE_FLAGS`` value +the flag. This expansion makes each :term:`LICENSE_FLAGS` value recipe-specific. After expansion, the string is then matched against the whitelist. Thus, specifying ``LICENSE_FLAGS = "commercial"`` in recipe "foo", for example, results in the string ``"commercial_foo"``. And, to create a match, that string must appear in the whitelist. -Judicious use of the ``LICENSE_FLAGS`` strings and the contents of the -``LICENSE_FLAGS_WHITELIST`` variable allows you a lot of flexibility for +Judicious use of the :term:`LICENSE_FLAGS` strings and the contents of the +:term:`LICENSE_FLAGS_WHITELIST` variable allows you a lot of flexibility for including or excluding recipes based on licensing. For example, you can broaden the matching capabilities by using license flags string subsets in the whitelist. @@ -11073,12 +10753,11 @@ in the whitelist. ``usethispart_1.3``, ``usethispart_1.4``, and so forth). For example, simply specifying the string "commercial" in the whitelist -matches any expanded ``LICENSE_FLAGS`` definition that starts with the +matches any expanded :term:`LICENSE_FLAGS` definition that starts with the string "commercial" such as "commercial_foo" and "commercial_bar", which are the strings the build system automatically generates for hypothetical recipes named "foo" and "bar" assuming those recipes simply -specify the following: -:: +specify the following:: LICENSE_FLAGS = "commercial" @@ -11088,7 +10767,7 @@ only specific recipes into the image, or you can use a string subset that causes a broader range of matches to allow a range of recipes into the image. -This scheme works even if the ``LICENSE_FLAGS`` string already has +This scheme works even if the :term:`LICENSE_FLAGS` string already has ``_${PN}`` appended. For example, the build system turns the license flag "commercial_1.2_foo" into "commercial_1.2_foo_foo" and would match both the general "commercial" and the specific "commercial_1.2_foo" @@ -11114,10 +10793,9 @@ Here are some other scenarios: Other Variables Related to Commercial Licenses ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Other helpful variables related to commercial license handling exist and -are defined in the -``poky/meta/conf/distro/include/default-distrovars.inc`` file: -:: +There are other helpful variables related to commercial license handling, +defined in the +``poky/meta/conf/distro/include/default-distrovars.inc`` file:: COMMERCIAL_AUDIO_PLUGINS ?= "" COMMERCIAL_VIDEO_PLUGINS ?= "" @@ -11125,8 +10803,7 @@ are defined in the If you want to enable these components, you can do so by making sure you have statements similar to the following in your ``local.conf`` configuration -file: -:: +file:: COMMERCIAL_AUDIO_PLUGINS = "gst-plugins-ugly-mad \ gst-plugins-ugly-mpegaudioparse" @@ -11137,15 +10814,14 @@ file: Of course, you could also create a matching whitelist for those components using the more general "commercial" in the whitelist, but -that would also enable all the other packages with ``LICENSE_FLAGS`` -containing "commercial", which you may or may not want: -:: +that would also enable all the other packages with :term:`LICENSE_FLAGS` +containing "commercial", which you may or may not want:: LICENSE_FLAGS_WHITELIST = "commercial" Specifying audio and video plugins as part of the ``COMMERCIAL_AUDIO_PLUGINS`` and ``COMMERCIAL_VIDEO_PLUGINS`` statements -(along with the enabling ``LICENSE_FLAGS_WHITELIST``) includes the +(along with the enabling :term:`LICENSE_FLAGS_WHITELIST`) includes the plugins or components into built images, thus adding support for media formats or components. @@ -11162,7 +10838,7 @@ requirements during a software release. With hundreds of different open source licenses that the Yocto Project tracks, it is difficult to know the requirements of each and every license. However, the requirements of the major FLOSS licenses can begin -to be covered by assuming that three main areas of concern exist: +to be covered by assuming that there are three main areas of concern: - Source code must be provided. @@ -11211,7 +10887,7 @@ accidental release of proprietary software. The Yocto Project provides an :ref:`archiver <ref-classes-archiver>` class to help avoid some of these concerns. -Before you employ ``DL_DIR`` or the ``archiver`` class, you need to +Before you employ :term:`DL_DIR` or the ``archiver`` class, you need to decide how you choose to provide source. The source ``archiver`` class can generate tarballs and SRPMs and can create them with various levels of compliance in mind. @@ -11219,8 +10895,7 @@ of compliance in mind. One way of doing this (but certainly not the only way) is to release just the source as a tarball. You can do this by adding the following to the ``local.conf`` file found in the -:term:`Build Directory`: -:: +:term:`Build Directory`:: INHERIT += "archiver" ARCHIVER_MODE[src] = "original" @@ -11276,8 +10951,7 @@ One requirement that is often overlooked is inclusion of license text. This requirement also needs to be dealt with prior to generating the final image. Some licenses require the license text to accompany the binary. You can achieve this by adding the following to your -``local.conf`` file: -:: +``local.conf`` file:: COPY_LIC_MANIFEST = "1" COPY_LIC_DIRS = "1" @@ -11344,8 +11018,7 @@ thing a development organization might want to consider for end-user convenience is to modify ``meta-poky/conf/bblayers.conf.sample`` to ensure that when the end user utilizes the released build system to build an image, the development organization's layers are included in -the ``bblayers.conf`` file automatically: -:: +the ``bblayers.conf`` file automatically:: # POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly @@ -11382,7 +11055,7 @@ this function, you have to follow the following steps: 3. Meta-spdxscanner provides several methods within the bbclass to create spdx files. Please choose one that you want to use and enable the spdx task. You have to add some config options in ``local.conf`` file in your :term:`Build - Directory`. The following is an example showing how to generate spdx files + Directory`. Here is an example showing how to generate spdx files during bitbake using the fossology-python.bbclass:: # Select fossology-python.bbclass. @@ -11412,9 +11085,8 @@ package, by using the variable. Using this variable also avoids QA errors when you use a non-common, non-CLOSED license in a recipe. -The following is an example that uses the ``LICENSE.Abilis.txt`` file as -the license from the fetched source: -:: +Here is an example that uses the ``LICENSE.Abilis.txt`` file as +the license from the fetched source:: NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt" @@ -11430,9 +11102,9 @@ portion is integrated with the installed Yocto Project The server receives the information collected and saves it in a database. -A live instance of the error reporting server exists at -https://errors.yoctoproject.org. This server exists so that when -you want to get help with build failures, you can submit all of the +There is a live instance of the error reporting server at +https://errors.yoctoproject.org. +When you want to get help with build failures, you can submit all of the information on the failure easily and then point to the URL in your bug report or send an email to the mailing list. @@ -11457,8 +11129,7 @@ class by adding the following statement to the end of your By default, the error reporting feature stores information in ``${``\ :term:`LOG_DIR`\ ``}/error-report``. However, you can specify a directory to use by adding the following to -your ``local.conf`` file: -:: +your ``local.conf`` file:: ERR_REPORT_DIR = "path" @@ -11467,8 +11138,7 @@ reporting causes the build process to collect the errors and store them in a file as previously described. When the build system encounters an error, it includes a command as part of the console output. You can run the command to send the error file to the server. For example, the -following command sends the errors to an upstream server: -:: +following command sends the errors to an upstream server:: $ send-error-report /home/brandusa/project/poky/build/tmp/log/error-report/error_report_201403141617.txt @@ -11476,8 +11146,7 @@ In the previous example, the errors are sent to a public database available at https://errors.yoctoproject.org, which is used by the entire community. If you specify a particular server, you can send the errors to a different database. Use the following command for more -information on available options: -:: +information on available options:: $ send-error-report --help @@ -11557,8 +11226,7 @@ Wayland with Kernel Mode Setting (`KMS <https://wiki.archlinux.org/index.php/Kernel_Mode_Setting>`__) support, include the "wayland" flag in the :term:`DISTRO_FEATURES` -statement in your ``local.conf`` file: -:: +statement in your ``local.conf`` file:: DISTRO_FEATURES_append = " wayland" @@ -11573,8 +11241,7 @@ Installing Wayland and Weston To install the Wayland feature into an image, you must include the following :term:`CORE_IMAGE_EXTRA_INSTALL` -statement in your ``local.conf`` file: -:: +statement in your ``local.conf`` file:: CORE_IMAGE_EXTRA_INSTALL += "wayland weston" @@ -11589,14 +11256,12 @@ Alternatively, you can run Weston through the command-line interpretor (CLI), which is better suited for development work. To run Weston under the CLI, you need to do the following after your image is built: -1. Run these commands to export ``XDG_RUNTIME_DIR``: - :: +1. Run these commands to export ``XDG_RUNTIME_DIR``:: mkdir -p /tmp/$USER-weston chmod 0700 /tmp/$USER-weston export XDG_RUNTIME_DIR=/tmp/$USER-weston -2. Launch Weston in the shell: - :: +2. Launch Weston in the shell:: weston diff --git a/poky/documentation/dev-manual/qemu.rst b/poky/documentation/dev-manual/qemu.rst index 92799d6d2..88a63c180 100644 --- a/poky/documentation/dev-manual/qemu.rst +++ b/poky/documentation/dev-manual/qemu.rst @@ -55,16 +55,14 @@ available. Follow these general steps to run QEMU: - If you cloned the ``poky`` repository or you downloaded and unpacked a Yocto Project release tarball, you can source the build - environment script (i.e. :ref:`structure-core-script`): - :: + environment script (i.e. :ref:`structure-core-script`):: $ cd poky $ source oe-init-build-env - If you installed a cross-toolchain, you can run the script that initializes the toolchain. For example, the following commands run - the initialization script from the default ``poky_sdk`` directory: - :: + the initialization script from the default ``poky_sdk`` directory:: . poky_sdk/environment-setup-core2-64-poky-linux @@ -86,8 +84,7 @@ available. Follow these general steps to run QEMU: Extensible Software Development Kit (eSDK) manual for information on how to extract a root filesystem. -4. *Run QEMU:* The basic ``runqemu`` command syntax is as follows: - :: +4. *Run QEMU:* The basic ``runqemu`` command syntax is as follows:: $ runqemu [option ] [...] @@ -222,18 +219,15 @@ using an NFS server. Should you need to start, stop, or restart the NFS share, you can use the following commands: - - The following command starts the NFS share: - :: + - To start the NFS share:: runqemu-export-rootfs start file-system-location - - The following command stops the NFS share: - :: + - To stop the NFS share:: runqemu-export-rootfs stop file-system-location - - The following command restarts the NFS share: - :: + - To restart the NFS share:: runqemu-export-rootfs restart file-system-location @@ -281,7 +275,7 @@ present, the toolchain is also automatically used. .. note:: - Several mechanisms exist that let you connect to the system running + There are several mechanisms to connect to the system running on the QEMU emulator: - QEMU provides a framebuffer interface that makes standard consoles @@ -292,7 +286,7 @@ present, the toolchain is also automatically used. that port to run a console. The connection uses standard IP networking. - - SSH servers exist in some QEMU images. The ``core-image-sato`` + - SSH servers are available in some QEMU images. The ``core-image-sato`` QEMU image has a Dropbear secure shell (SSH) server that runs with the root password disabled. The ``core-image-full-cmdline`` and ``core-image-lsb`` QEMU images have OpenSSH instead of Dropbear. @@ -313,8 +307,7 @@ present, the toolchain is also automatically used. QEMU Command-Line Syntax ======================== -The basic ``runqemu`` command syntax is as follows: -:: +The basic ``runqemu`` command syntax is as follows:: $ runqemu [option ] [...] @@ -325,8 +318,7 @@ timestamp when it needs to look for an image. Minimally, through the use of options, you must provide either a machine name, a virtual machine image (``*wic.vmdk``), or a kernel image (``*.bin``). -Following is the command-line help output for the ``runqemu`` command: -:: +Following is the command-line help output for the ``runqemu`` command:: $ runqemu --help diff --git a/poky/documentation/dev-manual/start.rst b/poky/documentation/dev-manual/start.rst index 84abf4c51..c3276c950 100644 --- a/poky/documentation/dev-manual/start.rst +++ b/poky/documentation/dev-manual/start.rst @@ -36,7 +36,7 @@ particular working environment and set of practices. equipment together and set up your development environment's hardware topology. - The following roles exist: + Here are possible roles: - *Application Developer:* This type of developer does application level work on top of an existing software stack. @@ -99,8 +99,7 @@ particular working environment and set of practices. .. note:: The setup of these services is beyond the scope of this manual. - However, sites such as the following exist that describe how to - perform setup: + However, here are sites describing how to perform setup: - `Gitolite <https://gitolite.com>`__: Information for ``gitolite``. @@ -190,7 +189,7 @@ particular working environment and set of practices. develop locally using their primary development system. 9. *Document Policies and Change Flow:* The Yocto Project uses a - hierarchical structure and a pull model. Scripts exist to create and + hierarchical structure and a pull model. There are scripts to create and send pull requests (i.e. ``create-pull-request`` and ``send-pull-request``). This model is in line with other open source projects where maintainers are responsible for specific areas of the @@ -215,8 +214,8 @@ particular working environment and set of practices. someone else in the community needs them also. 10. *Development Environment Summary:* Aside from the previous steps, - some best practices exist within the Yocto Project development - environment. Consider the following: + here are best practices within the Yocto Project development + environment: - Use :ref:`overview-manual/development-environment:git` as the source control system. @@ -387,36 +386,28 @@ as your Yocto Project build host: software. Follow the instructions for your specific machine and the type of the software you need to install: - - Install `Docker CE for + - Install `Docker Desktop on Windows <https://docs.docker.com/docker-for-windows/install/#install-docker-desktop-on-windows>`__ for Windows build hosts that meet requirements. - - Install `Docker CE for + - Install `Docker Desktop on MacOs <https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-desktop-on-mac>`__ for Mac build hosts that meet requirements. - - Install `Docker Toolbox for - Windows <https://docs.docker.com/toolbox/toolbox_install_windows/>`__ - for Windows build hosts that do not meet Docker requirements. - - - Install `Docker Toolbox for - MacOS <https://docs.docker.com/toolbox/toolbox_install_mac/>`__ - for Mac build hosts that do not meet Docker requirements. - - - Install `Docker CE for - CentOS <https://docs.docker.com/install/linux/docker-ce/centos/>`__ + - Install `Docker Engine on + CentOS <https://docs.docker.com/engine/install/centos/>`__ for Linux build hosts running the CentOS distribution. - - Install `Docker CE for - Debian <https://docs.docker.com/install/linux/docker-ce/debian/>`__ + - Install `Docker Engine on + Debian <https://docs.docker.com/engine/install/debian/>`__ for Linux build hosts running the Debian distribution. - - Install `Docker CE for - Fedora <https://docs.docker.com/install/linux/docker-ce/fedora/>`__ + - Install `Docker Engine for + Fedora <https://docs.docker.com/engine/install/fedora/>`__ for Linux build hosts running the Fedora distribution. - - Install `Docker CE for - Ubuntu <https://docs.docker.com/install/linux/docker-ce/ubuntu/>`__ + - Install `Docker Engine for + Ubuntu <https://docs.docker.com/engine/install/ubuntu/>`__ for Linux build hosts running the Ubuntu distribution. 5. *Optionally Orient Yourself With Docker:* If you are unfamiliar with @@ -486,8 +477,7 @@ your Yocto Project build host: distribution. 3. *Check your Linux distribution is using WSLv2:* Open a Windows - PowerShell and run: - :: + PowerShell and run:: C:\WINDOWS\system32> wsl -l -v NAME STATE VERSION @@ -514,8 +504,7 @@ your Yocto Project build host: 1. *Find the location of your VHDX file:* First you need to find the distro app package directory, to achieve this open a Windows - Powershell as Administrator and run: - :: + Powershell as Administrator and run:: C:\WINDOWS\system32> Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName PackageFamilyName @@ -525,8 +514,7 @@ your Yocto Project build host: You should now replace the PackageFamilyName and your user on the following path - to find your VHDX file: - :: + to find your VHDX file:: ls C:\Users\myuser\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79abcdefgh\LocalState\ Mode LastWriteTime Length Name @@ -536,8 +524,7 @@ your Yocto Project build host: ``C:\Users\myuser\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79abcdefgh\LocalState\ext4.vhdx`` 2. *Optimize your VHDX file:* Open a Windows Powershell as - Administrator to optimize your VHDX file, shutting down WSL first: - :: + Administrator to optimize your VHDX file, shutting down WSL first:: C:\WINDOWS\system32> wsl --shutdown C:\WINDOWS\system32> optimize-vhd -Path C:\Users\myuser\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79abcdefgh\LocalState\ext4.vhdx -Mode full @@ -619,8 +606,8 @@ of a given component. The recommended method for accessing Yocto Project components is to use Git to clone the upstream repository and work from within that - locally cloned repository. The procedure in this section exists - should you desire a tarball snapshot of any given component. + locally cloned repository. However, this section documents how to + use a tarball snapshot of any given component. Follow these steps to locate and download a particular tarball: @@ -657,13 +644,6 @@ release. Rather than Git repositories, these files represent snapshot tarballs similar to the tarballs located in the Index of Releases described in the ":ref:`dev-manual/start:accessing index of releases`" section. -.. note:: - - The recommended method for accessing Yocto Project components is to - use Git to clone a repository and work from within that local - repository. The procedure in this section exists should you desire a - tarball snapshot of any given component. - 1. *Go to the Yocto Project Website:* Open The :yocto_home:`Yocto Project Website <>` in your browser. @@ -741,8 +721,7 @@ Follow these steps to create a local version of the upstream 2. *Clone the Repository:* The following example command clones the ``poky`` repository and uses the default name "poky" for your local - repository: - :: + repository:: $ git clone git://git.yoctoproject.org/poky Cloning into 'poky'... @@ -763,9 +742,8 @@ Follow these steps to create a local version of the upstream ":ref:`dev-manual/start:checking out by tag in poky`" sections, respectively. Once the local repository is created, you can change to that - directory and check its status. Here, the single "master" branch - exists on your system and by default, it is checked out: - :: + directory and check its status. The ``master`` branch is checked out + by default:: $ cd poky $ git status @@ -826,8 +804,7 @@ and then specifically check out that development branch. 3. *Check out the Branch:* Check out the development branch in which you want to work. For example, to access the files for the Yocto Project - &DISTRO; Release (&DISTRO_NAME;), use the following command: - :: + &DISTRO; Release (&DISTRO_NAME;), use the following command:: $ git checkout -b &DISTRO_NAME_NO_CAP; origin/&DISTRO_NAME_NO_CAP; Branch &DISTRO_NAME_NO_CAP; set up to track remote branch &DISTRO_NAME_NO_CAP; from origin. @@ -839,8 +816,7 @@ and then specifically check out that development branch. The following command displays the branches that are now part of your local poky repository. The asterisk character indicates the branch - that is currently checked out for work: - :: + that is currently checked out for work:: $ git branch master @@ -867,14 +843,12 @@ similar to checking out by branch name except you use tag names. section. 2. *Fetch the Tag Names:* To checkout the branch based on a tag name, - you need to fetch the upstream tags into your local repository: - :: + you need to fetch the upstream tags into your local repository:: $ git fetch --tags $ -3. *List the Tag Names:* You can list the tag names now: - :: +3. *List the Tag Names:* You can list the tag names now:: $ git tag 1.1_M1.final diff --git a/poky/documentation/index.rst b/poky/documentation/index.rst index 6aeeb2197..0fca6ce72 100644 --- a/poky/documentation/index.rst +++ b/poky/documentation/index.rst @@ -38,16 +38,15 @@ Welcome to the Yocto Project Documentation .. toctree:: :maxdepth: 1 - :caption: 'Mega' Manual + :caption: Releases manual + :hidden: - All-in-one 'Mega' Manual <https://docs.yoctoproject.org/singleindex.html> + Release Migration Guides <migration-guides/index> + releases .. toctree:: :maxdepth: 1 - :caption: Manuals/Variable Index + :caption: Documentation Index + :hidden: genindex - Current/Previous Version Specific Manuals <releases> - - - diff --git a/poky/documentation/kernel-dev/advanced.rst b/poky/documentation/kernel-dev/advanced.rst index fb6dfca85..871ec8ae7 100644 --- a/poky/documentation/kernel-dev/advanced.rst +++ b/poky/documentation/kernel-dev/advanced.rst @@ -21,7 +21,7 @@ is the ``yocto-kernel-cache`` Git repository. You can find this repository grouped under the "Yocto Linux Kernel" heading in the :yocto_git:`Yocto Project Source Repositories <>`. -Kernel development tools ("kern-tools") exist also in the Yocto Project +Kernel development tools ("kern-tools") are also available in the Yocto Project Source Repositories under the "Yocto Linux Kernel" heading in the ``yocto-kernel-tools`` Git repository. The recipe that builds these tools is ``meta/recipes-kernel/kern-tools/kern-tools-native_git.bb`` in @@ -46,15 +46,15 @@ linux-yocto recipe. Every linux-yocto style recipe must define the :term:`KMACHINE` variable. This -variable is typically set to the same value as the ``MACHINE`` variable, +variable is typically set to the same value as the :term:`MACHINE` variable, which is used by :term:`BitBake`. However, in some cases, the variable might instead refer to the -underlying platform of the ``MACHINE``. +underlying platform of the :term:`MACHINE`. -Multiple BSPs can reuse the same ``KMACHINE`` name if they are built +Multiple BSPs can reuse the same :term:`KMACHINE` name if they are built using the same BSP description. Multiple Corei7-based BSPs could share -the same "intel-corei7-64" value for ``KMACHINE``. It is important to -realize that ``KMACHINE`` is just for kernel mapping, while ``MACHINE`` +the same "intel-corei7-64" value for :term:`KMACHINE`. It is important to +realize that :term:`KMACHINE` is just for kernel mapping, while :term:`MACHINE` is the machine type within a BSP Layer. Even with this distinction, however, these two variables can hold the same value. See the ":ref:`kernel-dev/advanced:bsp descriptions`" section for more information. @@ -66,9 +66,8 @@ to indicate the branch. .. note:: - You can use the ``KBRANCH`` value to define an alternate branch typically - with a machine override as shown here from the ``meta-yocto-bsp`` layer: - :: + You can use the :term:`KBRANCH` value to define an alternate branch typically + with a machine override as shown here from the ``meta-yocto-bsp`` layer:: KBRANCH_edgerouter = "standard/edgerouter" @@ -82,8 +81,8 @@ variables: :term:`LINUX_KERNEL_TYPE` defines the kernel type to be used in assembling the configuration. If -you do not specify a ``LINUX_KERNEL_TYPE``, it defaults to "standard". -Together with ``KMACHINE``, ``LINUX_KERNEL_TYPE`` defines the search +you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to "standard". +Together with :term:`KMACHINE`, :term:`LINUX_KERNEL_TYPE` defines the search arguments used by the kernel tools to find the appropriate description within the kernel Metadata with which to build out the sources and configuration. The linux-yocto recipes define "standard", "tiny", and @@ -91,35 +90,33 @@ configuration. The linux-yocto recipes define "standard", "tiny", and section for more information on kernel types. During the build, the kern-tools search for the BSP description file -that most closely matches the ``KMACHINE`` and ``LINUX_KERNEL_TYPE`` +that most closely matches the :term:`KMACHINE` and :term:`LINUX_KERNEL_TYPE` variables passed in from the recipe. The tools use the first BSP description they find that matches both variables. If the tools cannot find a match, they issue a warning. -The tools first search for the ``KMACHINE`` and then for the -``LINUX_KERNEL_TYPE``. If the tools cannot find a partial match, they -will use the sources from the ``KBRANCH`` and any configuration +The tools first search for the :term:`KMACHINE` and then for the +:term:`LINUX_KERNEL_TYPE`. If the tools cannot find a partial match, they +will use the sources from the :term:`KBRANCH` and any configuration specified in the :term:`SRC_URI`. You can use the :term:`KERNEL_FEATURES` variable to include features (configuration fragments, patches, or both) -that are not already included by the ``KMACHINE`` and -``LINUX_KERNEL_TYPE`` variable combination. For example, to include a -feature specified as "features/netfilter/netfilter.scc", specify: -:: +that are not already included by the :term:`KMACHINE` and +:term:`LINUX_KERNEL_TYPE` variable combination. For example, to include a +feature specified as "features/netfilter/netfilter.scc", specify:: KERNEL_FEATURES += "features/netfilter/netfilter.scc" To include a feature called "cfg/sound.scc" just for the ``qemux86`` machine, -specify: -:: +specify:: KERNEL_FEATURES_append_qemux86 = " cfg/sound.scc" The value of -the entries in ``KERNEL_FEATURES`` are dependent on their location +the entries in :term:`KERNEL_FEATURES` are dependent on their location within the kernel Metadata itself. The examples here are taken from the ``yocto-kernel-cache`` repository. Each branch of this repository contains "features" and "cfg" subdirectories at the top-level. For more @@ -157,8 +154,7 @@ types to form the final description of what will be assembled and built. While the kernel Metadata syntax does not enforce any logical separation of configuration fragments, patches, features or kernel types, best practices dictate a logical separation of these types of Metadata. The -following Metadata file hierarchy is recommended: -:: +following Metadata file hierarchy is recommended:: base/ bsp/ @@ -222,8 +218,7 @@ used with the ``linux-yocto-4.12`` kernel as defined outside of the recipe space (i.e. ``yocto-kernel-cache``). This Metadata consists of two files: ``smp.scc`` and ``smp.cfg``. You can find these files in the ``cfg`` directory of the ``yocto-4.12`` branch in the -``yocto-kernel-cache`` Git repository: -:: +``yocto-kernel-cache`` Git repository:: cfg/smp.scc: define KFEATURE_DESCRIPTION "Enable SMP for 32 bit builds" @@ -265,8 +260,7 @@ non-hardware fragment. As described in the ":ref:`kernel-dev/common:validating configuration`" section, you can -use the following BitBake command to audit your configuration: -:: +use the following BitBake command to audit your configuration:: $ bitbake linux-yocto -c kernel_configcheck -f @@ -287,8 +281,7 @@ in the ``patches/build`` directory of the ``yocto-4.12`` branch in the ``yocto-kernel-cache`` Git repository. The following listings show the ``build.scc`` file and part of the -``modpost-mask-trivial-warnings.patch`` file: -:: +``modpost-mask-trivial-warnings.patch`` file:: patches/build/build.scc: patch arm-serialize-build-targets.patch @@ -320,7 +313,7 @@ The following listings show the ``build.scc`` file and part of the The description file can include multiple patch statements where each statement handles a single -patch. In the example ``build.scc`` file, five patch statements exist +patch. In the example ``build.scc`` file, there are five patch statements for the five patches in the directory. You can create a typical ``.patch`` file using ``diff -Nurp`` or @@ -334,8 +327,7 @@ Features Features are complex kernel Metadata types that consist of configuration fragments, patches, and possibly other feature description files. As an -example, consider the following generic listing: -:: +example, consider the following generic listing:: features/myfeature.scc define KFEATURE_DESCRIPTION "Enable myfeature" @@ -352,7 +344,7 @@ as how an additional feature description file is included with the Typically, features are less granular than configuration fragments and are more likely than configuration fragments and patches to be the types -of things you want to specify in the ``KERNEL_FEATURES`` variable of the +of things you want to specify in the :term:`KERNEL_FEATURES` variable of the Linux kernel recipe. See the ":ref:`kernel-dev/advanced:using kernel metadata in a recipe`" section earlier in the manual. @@ -371,15 +363,13 @@ the ``linux-yocto_4.12.bb`` kernel recipe found in ``poky/meta/recipes-kernel/linux``, a :ref:`require <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:\`\`require\`\` directive>` directive includes the ``poky/meta/recipes-kernel/linux/linux-yocto.inc`` file, -which has the following statement that defines the default kernel type: -:: +which has the following statement that defines the default kernel type:: LINUX_KERNEL_TYPE ??= "standard" Another example would be the real-time kernel (i.e. ``linux-yocto-rt_4.12.bb``). This kernel recipe directly sets the kernel -type as follows: -:: +type as follows:: LINUX_KERNEL_TYPE = "preempt-rt" @@ -412,8 +402,7 @@ for Linux Yocto kernels: For any given kernel type, the Metadata is defined by the ``.scc`` (e.g. ``standard.scc``). Here is a partial listing for the ``standard.scc`` file, which is found in the ``ktypes/standard`` directory of the -``yocto-kernel-cache`` Git repository: -:: +``yocto-kernel-cache`` Git repository:: # Include this kernel type fragment to get the standard features and # configuration values. @@ -482,15 +471,13 @@ Description Overview For simplicity, consider the following root BSP layer description files for the BeagleBone board. These files employ both a structure and naming convention for consistency. The naming convention for the file is as -follows: -:: +follows:: bsp_root_name-kernel_type.scc Here are some example root layer BSP filenames for the BeagleBone Board BSP, which is supported by the -Yocto Project: -:: +Yocto Project:: beaglebone-standard.scc beaglebone-preempt-rt.scc @@ -498,8 +485,7 @@ Yocto Project: Each file uses the root name (i.e "beaglebone") BSP name followed by the kernel type. -Examine the ``beaglebone-standard.scc`` file: -:: +Examine the ``beaglebone-standard.scc`` file:: define KMACHINE beaglebone define KTYPE standard @@ -523,18 +509,17 @@ description as meeting the criteria set by the recipe being built. This example supports the "beaglebone" machine for the "standard" kernel and the "arm" architecture. -Be aware that a hard link between the ``KTYPE`` variable and a kernel -type description file does not exist. Thus, if you do not have the +Be aware that there is no hard link between the :term:`KTYPE` variable and a kernel +type description file. Thus, if you do not have the kernel type defined in your kernel Metadata as it is here, you only need to ensure that the :term:`LINUX_KERNEL_TYPE` -variable in the kernel recipe and the ``KTYPE`` variable in the BSP +variable in the kernel recipe and the :term:`KTYPE` variable in the BSP description file match. To separate your kernel policy from your hardware configuration, you include a kernel type (``ktype``), such as "standard". In the previous -example, this is done using the following: -:: +example, this is done using the following:: include ktypes/standard/standard.scc @@ -544,13 +529,11 @@ policy. See the ":ref:`kernel-dev/advanced:kernel types`" section for more information. To aggregate common configurations and features specific to the kernel -for `mybsp`, use the following: -:: +for `mybsp`, use the following:: include mybsp.scc -You can see that in the BeagleBone example with the following: -:: +You can see that in the BeagleBone example with the following:: include beaglebone.scc @@ -558,15 +541,13 @@ For information on how to break a complete ``.config`` file into the various configuration fragments, see the ":ref:`kernel-dev/common:creating configuration fragments`" section. Finally, if you have any configurations specific to the hardware that -are not in a ``*.scc`` file, you can include them as follows: -:: +are not in a ``*.scc`` file, you can include them as follows:: kconf hardware mybsp-extra.cfg The BeagleBone example does not include these types of configurations. However, the Malta 32-bit board does -("mti-malta32"). Here is the ``mti-malta32-le-standard.scc`` file: -:: +("mti-malta32"). Here is the ``mti-malta32-le-standard.scc`` file:: define KMACHINE mti-malta32-le define KMACHINE qemumipsel @@ -623,8 +604,7 @@ found on the machine. This ``minnow.scc`` description file is then included in each of the three "minnow" description files for the supported kernel types (i.e. "standard", "preempt-rt", and "tiny"). Consider the "minnow" description for the "standard" kernel type (i.e. -``minnow-standard.scc``): -:: +``minnow-standard.scc``):: define KMACHINE minnow define KTYPE standard @@ -656,8 +636,7 @@ that defines all enabled hardware for the BSP that is common to all kernel types. Using this command significantly reduces duplication. Now consider the "minnow" description for the "tiny" kernel type (i.e. -``minnow-tiny.scc``): -:: +``minnow-tiny.scc``):: define KMACHINE minnow define KTYPE tiny @@ -678,7 +657,7 @@ Notice again the three critical variables: :term:`KMACHINE`, :term:`KTYPE`, and :term:`KARCH`. Of these variables, only -``KTYPE`` has changed to specify the "tiny" kernel type. +:term:`KTYPE` has changed to specify the "tiny" kernel type. Kernel Metadata Location ======================== @@ -714,14 +693,13 @@ directory hierarchy below a linux-yocto recipe or for a Linux kernel recipe derived by copying and modifying ``oe-core/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb`` to -a recipe in your layer, ``FILESEXTRAPATHS`` is typically set to +a recipe in your layer, :term:`FILESEXTRAPATHS` is typically set to ``${``\ :term:`THISDIR`\ ``}/${``\ :term:`PN`\ ``}``. See the ":ref:`kernel-dev/common:modifying an existing recipe`" section for more information. Here is an example that shows a trivial tree of kernel Metadata stored -in recipe-space within a BSP layer: -:: +in recipe-space within a BSP layer:: meta-my_bsp_layer/ `-- recipes-kernel @@ -740,12 +718,11 @@ and fetches any files referenced in the ``.scc`` files by the ``include``, ``patch``, or ``kconf`` commands. Because of this, it is necessary to bump the recipe :term:`PR` value when changing the content of files not explicitly listed in the -``SRC_URI``. +:term:`SRC_URI`. If the BSP description is in recipe space, you cannot simply list the -``*.scc`` in the ``SRC_URI`` statement. You need to use the following -form from your kernel append file: -:: +``*.scc`` in the :term:`SRC_URI` statement. You need to use the following +form from your kernel append file:: SRC_URI_append_myplatform = " \ file://myplatform;type=kmeta;destsuffix=myplatform \ @@ -758,9 +735,8 @@ When stored outside of the recipe-space, the kernel Metadata files reside in a separate repository. The OpenEmbedded build system adds the Metadata to the build as a "type=kmeta" repository through the :term:`SRC_URI` variable. As an -example, consider the following ``SRC_URI`` statement from the -``linux-yocto_4.12.bb`` kernel recipe: -:: +example, consider the following :term:`SRC_URI` statement from the +``linux-yocto_4.12.bb`` kernel recipe:: SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.12.git;name=machine;branch=${KBRANCH}; \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.12;destsuffix=${KMETA}" @@ -768,20 +744,20 @@ example, consider the following ``SRC_URI`` statement from the ``${KMETA}``, in this context, is simply used to name the directory into which the Git fetcher places the Metadata. This behavior is no different -than any multi-repository ``SRC_URI`` statement used in a recipe (e.g. +than any multi-repository :term:`SRC_URI` statement used in a recipe (e.g. see the previous section). You can keep kernel Metadata in a "kernel-cache", which is a directory containing configuration fragments. As with any Metadata kept outside -the recipe-space, you simply need to use the ``SRC_URI`` statement with +the recipe-space, you simply need to use the :term:`SRC_URI` statement with the "type=kmeta" attribute. Doing so makes the kernel Metadata available during the configuration phase. -If you modify the Metadata, you must not forget to update the ``SRCREV`` +If you modify the Metadata, you must not forget to update the :term:`SRCREV` statements in the kernel's recipe. In particular, you need to update the ``SRCREV_meta`` variable to match the commit in the ``KMETA`` branch you wish to use. Changing the data in these branches and not updating the -``SRCREV`` statements to match will cause the build to fetch an older +:term:`SRCREV` statements to match will cause the build to fetch an older commit. Organizing Your Source @@ -800,8 +776,8 @@ patches in every kernel you build (i.e. have the patches as part of the lone "master" branch). It is situations like these that give rise to multiple branches used within a Linux kernel sources Git repository. -Repository organization strategies exist that maximize source reuse, -remove redundancy, and logically order your changes. This section +Here are repository organization strategies maximizing source reuse, +removing redundancy, and logically ordering your changes. This section presents strategies for the following cases: - Encapsulating patches in a feature description and only including the @@ -844,14 +820,12 @@ patches into a feature. Once you have a new branch, you can set up your kernel Metadata to use the branch a couple different ways. In the recipe, you can specify the -new branch as the ``KBRANCH`` to use for the board as follows: -:: +new branch as the :term:`KBRANCH` to use for the board as follows:: KBRANCH = "mynewbranch" Another method is to use the ``branch`` command in the BSP -description: -:: +description:: mybsp.scc: define KMACHINE mybsp @@ -865,15 +839,13 @@ description: If you find yourself with numerous branches, you might consider using a hierarchical branching system similar to what the Yocto Linux Kernel Git -repositories use: -:: +repositories use:: common/kernel_type/machine If you had two kernel types, "standard" and "small" for instance, three machines, and common as ``mydir``, the branches in your Git repository -might look like this: -:: +might look like this:: mydir/base mydir/standard/base @@ -905,8 +877,7 @@ that have to be regularly updated. The Yocto Project Linux kernel tools provide for this with the ``git merge`` command. To merge a feature branch into a BSP, insert the ``git merge`` command -after any ``branch`` commands: -:: +after any ``branch`` commands:: mybsp.scc: define KMACHINE mybsp diff --git a/poky/documentation/kernel-dev/common.rst b/poky/documentation/kernel-dev/common.rst index 56217b9d3..de62df5b1 100644 --- a/poky/documentation/kernel-dev/common.rst +++ b/poky/documentation/kernel-dev/common.rst @@ -54,8 +54,7 @@ section: 1. *Initialize the BitBake Environment:* Before building an extensible SDK, you need to initialize the BitBake build environment by sourcing - the build environment script (i.e. :ref:`structure-core-script`): - :: + the build environment script (i.e. :ref:`structure-core-script`):: $ cd poky $ source oe-init-build-env @@ -71,7 +70,7 @@ section: :term:`MACHINE` variable is set to "qemux86-64", which is fine if you are building for the QEMU emulator in 64-bit mode. However, if you are not, you need to set the - ``MACHINE`` variable appropriately in your ``conf/local.conf`` file + :term:`MACHINE` variable appropriately in your ``conf/local.conf`` file found in the :term:`Build Directory` (i.e. ``poky/build`` in this example). @@ -83,16 +82,14 @@ section: In this example we wish to build for qemux86 so we must set the ``MACHINE`` variable to "qemux86" and also add the "kernel-modules". - As described we do this by appending to ``conf/local.conf``: - :: + As described we do this by appending to ``conf/local.conf``:: MACHINE = "qemux86" MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-modules" 3. *Create a Layer for Patches:* You need to create a layer to hold patches created for the kernel image. You can use the - ``bitbake-layers create-layer`` command as follows: - :: + ``bitbake-layers create-layer`` command as follows:: $ cd poky/build $ bitbake-layers create-layer ../../meta-mylayer @@ -116,8 +113,7 @@ section: 4. *Inform the BitBake Build Environment About Your Layer:* As directed when you created your layer, you need to add the layer to the :term:`BBLAYERS` variable in the - ``bblayers.conf`` file as follows: - :: + ``bblayers.conf`` file as follows:: $ cd poky/build $ bitbake-layers add-layer ../../meta-mylayer @@ -125,16 +121,14 @@ section: $ 5. *Build the Extensible SDK:* Use BitBake to build the extensible SDK - specifically for use with images to be run using QEMU: - :: + specifically for use with images to be run using QEMU:: $ cd poky/build $ bitbake core-image-minimal -c populate_sdk_ext Once the build finishes, you can find the SDK installer file (i.e. - ``*.sh`` file) in the following directory: - :: + ``*.sh`` file) in the following directory:: poky/build/tmp/deploy/sdk @@ -143,8 +137,7 @@ section: 6. *Install the Extensible SDK:* Use the following command to install the SDK. For this example, install the SDK in the default - ``poky_sdk`` directory: - :: + ``poky_sdk`` directory:: $ cd poky/build/tmp/deploy/sdk $ ./poky-glibc-x86_64-core-image-minimal-i586-toolchain-ext-&DISTRO;.sh @@ -172,8 +165,7 @@ section: BitBake shell used to build the installer. After opening a new shell, run the SDK environment setup script as - directed by the output from installing the SDK: - :: + directed by the output from installing the SDK:: $ source poky_sdk/environment-setup-i586-poky-linux "SDK environment now set up; additionally you may now run devtool to perform development tasks. @@ -186,8 +178,7 @@ section: 8. *Build the Clean Image:* The final step in preparing to work on the kernel is to build an initial image using ``devtool`` in the new - terminal you just set up and initialized for SDK work: - :: + terminal you just set up and initialized for SDK work:: $ devtool build-image Parsing recipes: 100% |##########################################| Time: 0:00:05 @@ -257,7 +248,7 @@ section: :term:`MACHINE` variable is set to "qemux86-64", which is fine if you are building for the QEMU emulator in 64-bit mode. However, if you are not, you need to set the - ``MACHINE`` variable appropriately in your ``conf/local.conf`` file + :term:`MACHINE` variable appropriately in your ``conf/local.conf`` file found in the :term:`Build Directory` (i.e. ``poky/build`` in this example). @@ -269,16 +260,14 @@ section: In this example we wish to build for qemux86 so we must set the ``MACHINE`` variable to "qemux86" and also add the "kernel-modules". - As described we do this by appending to ``conf/local.conf``: - :: + As described we do this by appending to ``conf/local.conf``:: MACHINE = "qemux86" MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-modules" 3. *Create a Layer for Patches:* You need to create a layer to hold patches created for the kernel image. You can use the - ``bitbake-layers create-layer`` command as follows: - :: + ``bitbake-layers create-layer`` command as follows:: $ cd poky/build $ bitbake-layers create-layer ../../meta-mylayer @@ -301,8 +290,7 @@ section: 4. *Inform the BitBake Build Environment About Your Layer:* As directed when you created your layer, you need to add the layer to the :term:`BBLAYERS` variable in the - ``bblayers.conf`` file as follows: - :: + ``bblayers.conf`` file as follows:: $ cd poky/build $ bitbake-layers add-layer ../../meta-mylayer @@ -350,8 +338,7 @@ section: the ``yocto-4.12`` branch. The following commands show how to create a local copy of the - ``yocto-kernel-cache`` and be in the ``yocto-4.12`` branch: - :: + ``yocto-kernel-cache`` and switch to the ``yocto-4.12`` branch:: $ cd ~ $ git clone git://git.yoctoproject.org/yocto-kernel-cache --branch yocto-4.12 @@ -394,8 +381,7 @@ following section describes how to create a layer without the aid of tools. These steps assume creation of a layer named ``mylayer`` in your home directory: -1. *Create Structure*: Create the layer's structure: - :: +1. *Create Structure*: Create the layer's structure:: $ mkdir meta-mylayer $ mkdir meta-mylayer/conf @@ -409,8 +395,7 @@ home directory: 2. *Create the Layer Configuration File*: Move to the ``meta-mylayer/conf`` directory and create the ``layer.conf`` file as - follows: - :: + follows:: # We have a conf and classes directory, add to BBPATH BBPATH .= ":${LAYERDIR}" @@ -429,8 +414,7 @@ home directory: ``meta-mylayer/recipes-kernel/linux`` directory and create the kernel's append file. This example uses the ``linux-yocto-4.12`` kernel. Thus, the name of the append file is - ``linux-yocto_4.12.bbappend``: - :: + ``linux-yocto_4.12.bbappend``:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" @@ -483,17 +467,15 @@ The append file should initially extend the :term:`FILESPATH` search path by prepending the directory that contains your files to the :term:`FILESEXTRAPATHS` -variable as follows: -:: +variable as follows:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" The path ``${``\ :term:`THISDIR`\ ``}/${``\ :term:`PN`\ ``}`` expands to "linux-yocto" in the current directory for this example. If you add any new files that modify the kernel recipe and you have -extended ``FILESPATH`` as described above, you must place the files in -your layer in the following area: -:: +extended :term:`FILESPATH` as described above, you must place the files in +your layer in the following area:: your-layer/recipes-kernel/linux/linux-yocto/ @@ -509,7 +491,7 @@ As an example, consider the following append file used by the BSPs in meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend -The following listing shows the file. Be aware that the actual commit ID +Here are the contents of this file. Be aware that the actual commit ID strings in this example listing might be different than the actual strings in the file from the ``meta-yocto-bsp`` layer upstream. :: @@ -571,7 +553,7 @@ the append file. For example, suppose you had some configuration options in a file called ``network_configs.cfg``. You can place that file inside a directory -named ``linux-yocto`` and then add a ``SRC_URI`` statement such as the +named ``linux-yocto`` and then add a :term:`SRC_URI` statement such as the following to the append file. When the OpenEmbedded build system builds the kernel, the configuration options are picked up and applied. :: @@ -581,9 +563,8 @@ the kernel, the configuration options are picked up and applied. To group related configurations into multiple files, you perform a similar procedure. Here is an example that groups separate configurations specifically for Ethernet and graphics into their own -files and adds the configurations by using a ``SRC_URI`` statement like -the following in your append file: -:: +files and adds the configurations by using a :term:`SRC_URI` statement like +the following in your append file:: SRC_URI += "file://myconfig.cfg \ file://eth.cfg \ @@ -597,7 +578,7 @@ recipe is processed. .. note:: - Other methods exist to accomplish grouping and defining configuration + There are other ways of grouping and defining configuration options. For example, if you are working with a local clone of the kernel repository, you could checkout the kernel's ``meta`` branch, make your changes, and then push the changes to the local bare clone @@ -608,8 +589,8 @@ recipe is processed. In general, however, the Yocto Project maintainers take care of moving the ``SRC_URI``-specified configuration options to the - kernel's ``meta`` branch. Not only is it easier for BSP developers to - not have to worry about putting those configurations in the branch, + kernel's ``meta`` branch. Not only is it easier for BSP developers + not to have to put those configurations in the branch, but having the maintainers do it allows them to apply 'global' knowledge about the kinds of common configuration options multiple BSPs in the tree are typically using. This allows for promotion of @@ -627,8 +608,7 @@ reference them in :term:`SRC_URI` statements. For example, you can apply a three-patch series by adding the following -lines to your linux-yocto ``.bbappend`` file in your layer: -:: +lines to your linux-yocto ``.bbappend`` file in your layer:: SRC_URI += "file://0001-first-change.patch" SRC_URI += "file://0002-second-change.patch" @@ -658,19 +638,27 @@ If you have a complete, working Linux kernel ``.config`` file you want to use for the configuration, as before, copy that file to the appropriate ``${PN}`` directory in your layer's ``recipes-kernel/linux`` directory, and rename the copied file to "defconfig". Then, add the -following lines to the linux-yocto ``.bbappend`` file in your layer: -:: +following lines to the linux-yocto ``.bbappend`` file in your layer:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://defconfig" -The ``SRC_URI`` tells the build system how to search +The :term:`SRC_URI` tells the build system how to search for the file, while the :term:`FILESEXTRAPATHS` extends the :term:`FILESPATH` variable (search directories) to include the ``${PN}`` directory you created to hold the configuration changes. +You can also use a regular ``defconfig`` file, as generated by the +:ref:`ref-tasks-savedefconfig` +task instead of a complete ``.config`` file. This only specifies the +non-default configuration values. You need to additionally set +:term:`KCONFIG_MODE` +in the linux-yocto ``.bbappend`` file in your layer:: + + KCONFIG_MODE = "alldefconfig" + .. note:: The build system applies the configurations from the ``defconfig`` @@ -685,8 +673,7 @@ Generally speaking, the preferred approach is to determine the incremental change you want to make and add that as a configuration fragment. For example, if you want to add support for a basic serial console, create a file named ``8250.cfg`` in the ``${PN}`` directory -with the following content (without indentation): -:: +with the following content (without indentation):: CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y @@ -697,9 +684,8 @@ with the following content (without indentation): CONFIG_SERIAL_CORE_CONSOLE=y Next, include this -configuration fragment and extend the ``FILESPATH`` variable in your -``.bbappend`` file: -:: +configuration fragment and extend the :term:`FILESPATH` variable in your +``.bbappend`` file:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://8250.cfg" @@ -718,8 +704,7 @@ It might be desirable to have kernel configuration fragment support through a ``defconfig`` file that is pulled from the kernel source tree for the configured machine. By default, the OpenEmbedded build system looks for ``defconfig`` files in the layer used for Metadata, which is -"out-of-tree", and then configures them using the following: -:: +"out-of-tree", and then configures them using the following:: SRC_URI += "file://defconfig" @@ -732,16 +717,14 @@ append files, you can direct the OpenEmbedded build system to use a ``defconfig`` file that is "in-tree". To specify an "in-tree" ``defconfig`` file, use the following statement -form: -:: +form:: KBUILD_DEFCONFIG_KMACHINE ?= "defconfig_file" Here is an example -that assigns the ``KBUILD_DEFCONFIG`` variable based on "raspberrypi2" +that assigns the :term:`KBUILD_DEFCONFIG` variable based on "raspberrypi2" and provides the path to the "in-tree" ``defconfig`` file to be used for -a Raspberry Pi 2, which is based on the Broadcom 2708/2709 chipset: -:: +a Raspberry Pi 2, which is based on the Broadcom 2708/2709 chipset:: KBUILD_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" @@ -751,7 +734,7 @@ Aside from modifying your kernel recipe and providing your own a kernel's ``linux-``\ `machine`\ ``.inc`` file). In other words, if the build system detects a statement that identifies an "out-of-tree" ``defconfig`` file, that statement will override your -``KBUILD_DEFCONFIG`` variable. +:term:`KBUILD_DEFCONFIG` variable. See the :term:`KBUILD_DEFCONFIG` @@ -792,15 +775,14 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" section for more information. - Use the following ``devtool`` command to check out the code: - :: + Use the following ``devtool`` command to check out the code:: $ devtool modify linux-yocto .. note:: - During the checkout operation, a bug exists that could cause - errors such as the following to appear: + During the checkout operation, there is a bug that could cause + errors such as the following: .. code-block:: none @@ -819,14 +801,12 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se noted where you can find the source files (e.g. ``poky_sdk/workspace/sources/linux-yocto``). Change to where the kernel source code is before making your edits to the - ``calibrate.c`` file: - :: + ``calibrate.c`` file:: $ cd poky_sdk/workspace/sources/linux-yocto 2. *Edit the source file*: Edit the ``init/calibrate.c`` file to have - the following changes: - :: + the following changes:: void calibrate_delay(void) { @@ -846,8 +826,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se . 3. *Build the Updated Kernel Source:* To build the updated kernel - source, use ``devtool``: - :: + source, use ``devtool``:: $ devtool build linux-yocto @@ -872,8 +851,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se using QEMU to verify your changes: 1. *Boot the image*: Boot the modified image in the QEMU emulator - using this command: - :: + using this command:: $ runqemu qemux86 @@ -891,8 +869,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se 6. *Stage and commit your changes*: Within your eSDK terminal, change your working directory to where you modified the ``calibrate.c`` file - and use these Git commands to stage and commit your changes: - :: + and use these Git commands to stage and commit your changes:: $ cd poky_sdk/workspace/sources/linux-yocto $ git status @@ -921,8 +898,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se image that includes your kernel patches. Execute the following command from your :term:`Build Directory` in the terminal - set up to run BitBake: - :: + set up to run BitBake:: $ cd poky/build $ bitbake core-image-minimal @@ -966,14 +942,12 @@ Section. 1. *Change the working directory*: You need to locate the source files in the local copy of the kernel Git repository. Change to where the kernel source code is before making your edits to the - ``calibrate.c`` file: - :: + ``calibrate.c`` file:: $ cd ~/linux-yocto-4.12/init 2. *Edit the source file*: Edit the ``calibrate.c`` file to have the - following changes: - :: + following changes:: void calibrate_delay(void) { @@ -993,8 +967,7 @@ Section. . 2. *Stage and Commit Your Changes:* Use standard Git commands to stage - and commit the changes you just made: - :: + and commit the changes you just made:: $ git add calibrate.c $ git commit -m "calibrate.c - Added some printk statements" @@ -1009,13 +982,11 @@ Section. updated kernel source files. Add :term:`SRC_URI` and :term:`SRCREV` statements similar - to the following to your ``local.conf``: - :: + to the following to your ``local.conf``:: $ cd poky/build/conf - Add the following to the ``local.conf``: - :: + Add the following to the ``local.conf``:: SRC_URI_pn-linux-yocto = "git:///path-to/linux-yocto-4.12;protocol=file;name=machine;branch=standard/base; \ git:///path-to/yocto-kernel-cache;protocol=file;type=kmeta;name=meta;branch=yocto-4.12;destsuffix=${KMETA}" @@ -1031,16 +1002,14 @@ Section. 4. *Build the Image:* With the source modified, your changes staged and committed, and the ``local.conf`` file pointing to the kernel files, - you can now use BitBake to build the image: - :: + you can now use BitBake to build the image:: $ cd poky/build $ bitbake core-image-minimal 5. *Boot the image*: Boot the modified image in the QEMU emulator using this command. When prompted to login to the QEMU console, use "root" - with no password: - :: + with no password:: $ cd poky/build $ runqemu qemux86 @@ -1059,8 +1028,7 @@ Section. 7. *Generate the Patch File:* Once you are sure that your patch works correctly, you can generate a ``*.patch`` file in the kernel source - repository: - :: + repository:: $ cd ~/linux-yocto-4.12/init $ git format-patch -1 @@ -1073,8 +1041,7 @@ Section. ``meta-mylayer``. When the layer was created using the ``yocto-create`` script, no additional hierarchy was created to support patches. Before moving the patch file, you need to add - additional structure to your layer using the following commands: - :: + additional structure to your layer using the following commands:: $ cd ~/meta-mylayer $ mkdir recipes-kernel @@ -1083,8 +1050,7 @@ Section. Once you have created this hierarchy in your layer, you can move the patch file using the - following command: - :: + following command:: $ mv ~/linux-yocto-4.12/init/0001-calibrate.c-Added-some-printk-statements.patch ~/meta-mylayer/recipes-kernel/linux/linux-yocto @@ -1093,8 +1059,7 @@ Section. the OpenEmbedded build system to find the patch. The append file needs to be in your layer's ``recipes-kernel/linux`` directory and it must be named ``linux-yocto_4.12.bbappend`` and have the following - contents: - :: + contents:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI_append = "file://0001-calibrate.c-Added-some-printk-statements.patch" @@ -1113,8 +1078,7 @@ Section. To build ``core-image-minimal`` again and see the effects of your patch, you can essentially eliminate the temporary source files saved in ``poky/build/tmp/work/...`` and residual effects of the build by entering - the following sequence of commands: - :: + the following sequence of commands:: $ cd poky/build $ bitbake -c cleanall yocto-linux @@ -1160,8 +1124,7 @@ environment, you must do the following: - You must be sure of the state of your build's configuration in the :term:`Source Directory`. -- Your build host must have the following two packages installed: - :: +- Your build host must have the following two packages installed:: libncurses5-dev libtinfo-dev @@ -1169,8 +1132,7 @@ environment, you must do the following: The following commands initialize the BitBake environment, run the :ref:`ref-tasks-kernel_configme` task, and launch ``menuconfig``. These commands assume the Source -Directory's top-level folder is ``poky``: -:: +Directory's top-level folder is ``poky``:: $ cd poky $ source oe-init-build-env @@ -1232,8 +1194,7 @@ the ``.config`` file would be: Within the ``.config`` file, you can see the kernel settings. For example, the following entry shows that symmetric multi-processor -support is not set: -:: +support is not set:: # CONFIG_SMP is not set @@ -1274,8 +1235,7 @@ your layer's ``recipes-kernel/linux`` directory, and rename the copied file to "defconfig" (e.g. ``~/meta-mylayer/recipes-kernel/linux/linux-yocto/defconfig``). Then, add the following lines to the linux-yocto ``.bbappend`` file in your -layer: -:: +layer:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://defconfig" @@ -1323,8 +1283,7 @@ appear in the ``.config`` file, which is in the :term:`Build Directory`. It is simple to create a configuration fragment. One method is to use shell commands. For example, issuing the following from the shell creates a configuration fragment file named ``my_smp.cfg`` that enables -multi-processor support within the kernel: -:: +multi-processor support within the kernel:: $ echo "CONFIG_SMP=y" >> my_smp.cfg @@ -1342,18 +1301,16 @@ To create a configuration fragment using this method, follow these steps: 1. *Complete a Build Through Kernel Configuration:* Complete a build at - least through the kernel configuration task as follows: - :: + least through the kernel configuration task as follows:: $ bitbake linux-yocto -c kernel_configme -f This step ensures that you create a - ``.config`` file from a known state. Because situations exist where + ``.config`` file from a known state. Because there are situations where your build state might become unknown, it is best to run this task prior to starting ``menuconfig``. -2. *Launch menuconfig:* Run the ``menuconfig`` command: - :: +2. *Launch menuconfig:* Run the ``menuconfig`` command:: $ bitbake linux-yocto -c menuconfig @@ -1361,8 +1318,7 @@ steps: to prepare a configuration fragment. The resulting file ``fragment.cfg`` is placed in the ``${``\ :term:`WORKDIR`\ ``}`` - directory: - :: + directory:: $ bitbake linux-yocto -c diffconfig @@ -1387,18 +1343,16 @@ options in a file called ``myconfig.cfg``. If you put that file inside a directory named ``linux-yocto`` that resides in the same directory as the kernel's append file within your layer and then add the following statements to the kernel's append file, those configuration options will -be picked up and applied when the kernel is built: -:: +be picked up and applied when the kernel is built:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://myconfig.cfg" As mentioned earlier, you can group related configurations into multiple -files and name them all in the ``SRC_URI`` statement as well. For +files and name them all in the :term:`SRC_URI` statement as well. For example, you could group separate configurations specifically for Ethernet and graphics into their own files and add those by using a -``SRC_URI`` statement like the following in your append file: -:: +:term:`SRC_URI` statement like the following in your append file:: SRC_URI += "file://myconfig.cfg \ file://eth.cfg \ @@ -1409,8 +1363,7 @@ Validating Configuration You can use the :ref:`ref-tasks-kernel_configcheck` -task to provide configuration validation: -:: +task to provide configuration validation:: $ bitbake linux-yocto -c kernel_configcheck -f @@ -1537,8 +1490,7 @@ To streamline the configuration, do the following: successfully. Use this configuration file as your baseline. 2. *Run Configure and Check Tasks:* Separately run the - ``do_kernel_configme`` and ``do_kernel_configcheck`` tasks: - :: + ``do_kernel_configme`` and ``do_kernel_configcheck`` tasks:: $ bitbake linux-yocto -c kernel_configme -f $ bitbake linux-yocto -c kernel_configcheck -f @@ -1572,8 +1524,7 @@ Expanding Variables Sometimes it is helpful to determine what a variable expands to during a build. You can examine the values of variables by examining the output of the ``bitbake -e`` command. The output is long and is more -easily managed in a text file, which allows for easy searches: -:: +easily managed in a text file, which allows for easy searches:: $ bitbake -e virtual/kernel > some_text_file @@ -1585,20 +1536,18 @@ Working with a "Dirty" Kernel Version String ============================================ If you build a kernel image and the version string has a "+" or a -"-dirty" at the end, uncommitted modifications exist in the kernel's +"-dirty" at the end, it means there are uncommitted modifications in the kernel's source directory. Follow these steps to clean up the version string: 1. *Discover the Uncommitted Changes:* Go to the kernel's locally cloned Git repository (source directory) and use the following Git command - to list the files that have been changed, added, or removed: - :: + to list the files that have been changed, added, or removed:: $ git status 2. *Commit the Changes:* You should commit those changes to the kernel source tree regardless of whether or not you will save, export, or - use the changes: - :: + use the changes:: $ git add $ git commit -s -a -m "getting rid of -dirty" @@ -1633,8 +1582,7 @@ linux-yocto custom recipe (``linux-yocto-custom.bb``) that uses ``kernel.org`` sources and the Yocto Project Linux kernel tools for managing kernel Metadata. You can find this recipe in the ``poky`` Git repository of the Yocto Project :yocto_git:`Source Repository <>` -at: -:: +at:: poky/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb @@ -1655,8 +1603,7 @@ Here are some basic steps you can use to work with your own sources: ``defconfig`` file or configuration fragment files in your layer. When you use the ``linux-yocto-custom.bb`` recipe, you must specify a configuration. If you do not have a ``defconfig`` file, you can run - the following: - :: + the following:: $ make defconfig @@ -1668,7 +1615,7 @@ Here are some basic steps you can use to work with your own sources: Running the ``make defconfig`` command results in the default configuration for your architecture as defined by your kernel. - However, no guarantee exists that this configuration is valid for + However, there is no guarantee that this configuration is valid for your use case, or that your board will even boot. This is particularly true for non-x86 architectures. @@ -1681,11 +1628,11 @@ Here are some basic steps you can use to work with your own sources: appropriate for your project: - :term:`SRC_URI`: The - ``SRC_URI`` should specify a Git repository that uses one of the + :term:`SRC_URI` should specify a Git repository that uses one of the supported Git fetcher protocols (i.e. ``file``, ``git``, ``http``, - and so forth). The ``SRC_URI`` variable should also specify either + and so forth). The :term:`SRC_URI` variable should also specify either a ``defconfig`` file or some configuration fragment files. The - skeleton recipe provides an example ``SRC_URI`` as a syntax + skeleton recipe provides an example :term:`SRC_URI` as a syntax reference. - :term:`LINUX_VERSION`: @@ -1703,17 +1650,16 @@ Here are some basic steps you can use to work with your own sources: indicate to the OpenEmbedded build system that the recipe has changed. - - :term:`PV`: The default ``PV`` + - :term:`PV`: The default :term:`PV` assignment is typically adequate. It combines the - ``LINUX_VERSION`` with the Source Control Manager (SCM) revision + :term:`LINUX_VERSION` with the Source Control Manager (SCM) revision as derived from the :term:`SRCPV` variable. The combined results are a string with the following - form: - :: + form:: 3.19.11+git1+68a635bf8dfb64b02263c1ac80c948647cc76d5f_1+218bd8d2022b9852c60d32f0d770931e3cf343e2 - While lengthy, the extra verbosity in ``PV`` helps ensure you are + While lengthy, the extra verbosity in :term:`PV` helps ensure you are using the exact sources from which you intend to build. - :term:`COMPATIBLE_MACHINE`: @@ -1723,8 +1669,7 @@ Here are some basic steps you can use to work with your own sources: triggers an explicit build failure. You must change it to match a list of the machines that your new recipe supports. For example, to support the ``qemux86`` and ``qemux86-64`` machines, use the - following form: - :: + following form:: COMPATIBLE_MACHINE = "qemux86|qemux86-64" @@ -1807,8 +1752,7 @@ Typically, you will need to set the following variables: Depending on the build system used by the module sources, you might need to make some adjustments. For example, a typical module ``Makefile`` -looks much like the one provided with the ``hello-mod`` template: -:: +looks much like the one provided with the ``hello-mod`` template:: obj-m := hello.o @@ -1829,7 +1773,7 @@ information to build modules. If your module ``Makefile`` uses a different variable, you might want to override the :ref:`ref-tasks-compile` step, or create a patch to the ``Makefile`` to work with the more typical -``KERNEL_SRC`` or ``KERNEL_PATH`` variables. +:term:`KERNEL_SRC` or :term:`KERNEL_PATH` variables. After you have prepared your recipe, you will likely want to include the module in your images. To do this, see the documentation for the @@ -1845,8 +1789,7 @@ them appropriately for your machine configuration file: - :term:`MACHINE_EXTRA_RRECOMMENDS` Modules are often not required for boot and can be excluded from certain -build configurations. The following allows for the most flexibility: -:: +build configurations. The following allows for the most flexibility:: MACHINE_EXTRA_RRECOMMENDS += "kernel-module-mymodule" @@ -1895,26 +1838,22 @@ branch. $ git whatchanged origin/standard/base..origin/standard/emenlow -To see short, one line summaries of changes use the ``git log`` command: -:: +To see short, one line summaries of changes use the ``git log`` command:: $ git log --oneline origin/standard/base..origin/standard/emenlow -Use this command to see code differences for the changes: -:: +Use this command to see code differences for the changes:: $ git diff origin/standard/base..origin/standard/emenlow Use this command to see the commit log messages and the text -differences: -:: +differences:: $ git show origin/standard/base..origin/standard/emenlow Use this command to create individual patches for each change. Here is an example that creates patch files for each commit and places them -in your ``Documents`` directory: -:: +in your ``Documents`` directory:: $ git format-patch -o $HOME/Documents origin/standard/base..origin/standard/emenlow @@ -1923,15 +1862,13 @@ Showing a Particular Feature or Branch Change Tags in the Yocto Project kernel tree divide changes for significant features or branches. The ``git show`` tag command shows changes based -on a tag. Here is an example that shows ``systemtap`` changes: -:: +on a tag. Here is an example that shows ``systemtap`` changes:: $ git show systemtap You can use the ``git branch --contains`` tag command to show the branches that contain a particular feature. This command shows -the branches that contain the ``systemtap`` feature: -:: +the branches that contain the ``systemtap`` feature:: $ git branch --contains systemtap @@ -1949,23 +1886,23 @@ build stops. Kernel features are the last elements processed for configuring and patching the kernel. Therefore, adding features in this manner is a way to enforce specific features are present and enabled without needing to do a full audit of any other layer's additions to the -``SRC_URI`` statement. +:term:`SRC_URI` statement. You add a kernel feature by providing the feature as part of the -``KERNEL_FEATURES`` variable and by providing the path to the feature's +:term:`KERNEL_FEATURES` variable and by providing the path to the feature's ``.scc`` file, which is relative to the root of the kernel Metadata. The OpenEmbedded build system searches all forms of kernel Metadata on the -``SRC_URI`` statement regardless of whether the Metadata is in the +:term:`SRC_URI` statement regardless of whether the Metadata is in the "kernel-cache", system kernel Metadata, or a recipe-space Metadata (i.e. part of the kernel recipe). See the ":ref:`kernel-dev/advanced:kernel metadata location`" section for additional information. -When you specify the feature's ``.scc`` file on the ``SRC_URI`` +When you specify the feature's ``.scc`` file on the :term:`SRC_URI` statement, the OpenEmbedded build system adds the directory of that ``.scc`` file along with all its subdirectories to the kernel feature search path. Because subdirectories are searched, you can reference a -single ``.scc`` file in the ``SRC_URI`` statement to reference multiple +single ``.scc`` file in the :term:`SRC_URI` statement to reference multiple kernel features. Consider the following example that adds the "test.scc" feature to the @@ -1973,7 +1910,7 @@ build. 1. *Create the Feature File:* Create a ``.scc`` file and locate it just as you would any other patch file, ``.cfg`` file, or fetcher item you - specify in the ``SRC_URI`` statement. + specify in the :term:`SRC_URI` statement. .. note:: @@ -1986,8 +1923,7 @@ build. searched during the build as potential feature directories. Continuing with the example, suppose the "test.scc" feature you are - adding has a ``test.scc`` file in the following directory: - :: + adding has a ``test.scc`` file in the following directory:: my_recipe | @@ -2001,8 +1937,7 @@ build. a similarly named configuration fragment file ``test.cfg``. 2. *Add the Feature File to SRC_URI:* Add the ``.scc`` file to the - recipe's ``SRC_URI`` statement: - :: + recipe's :term:`SRC_URI` statement:: SRC_URI_append = " file://test.scc" @@ -2010,9 +1945,8 @@ build. appended to the existing path. 3. *Specify the Feature as a Kernel Feature:* Use the - ``KERNEL_FEATURES`` statement to specify the feature as a kernel - feature: - :: + :term:`KERNEL_FEATURES` statement to specify the feature as a kernel + feature:: KERNEL_FEATURES_append = " test.scc" diff --git a/poky/documentation/kernel-dev/concepts-appx.rst b/poky/documentation/kernel-dev/concepts-appx.rst index 4b6dbe5ef..cf2e75d85 100644 --- a/poky/documentation/kernel-dev/concepts-appx.rst +++ b/poky/documentation/kernel-dev/concepts-appx.rst @@ -213,7 +213,7 @@ BSP-specific commits. In other words, the divisions of the kernel are transparent and are not relevant to the developer on a day-to-day basis. From the developer's perspective, this path is the "master" branch in Git terms. The developer does not need to be aware of the existence of -any other branches at all. Of course, value exists in the having these +any other branches at all. Of course, it can make sense to have these branches in the tree, should a person decide to explore them. For example, a comparison between two BSPs at either the commit level or at the line-by-line code ``diff`` level is now a trivial operation. @@ -359,8 +359,7 @@ To determine whether or not a given option is "hardware" or "non-hardware", the kernel Metadata in ``yocto-kernel-cache`` contains files that classify individual or groups of options as either hardware or non-hardware. To better show this, consider a situation where the -``yocto-kernel-cache`` contains the following files: -:: +``yocto-kernel-cache`` contains the following files:: yocto-kernel-cache/features/drm-psb/hardware.cfg yocto-kernel-cache/features/kgdb/hardware.cfg @@ -380,8 +379,7 @@ or non-hardware. To better show this, consider a situation where the yocto-kernel-cache/ktypes/base/hardware.kcf yocto-kernel-cache/bsp/qemu-ppc32/hardware.kcf -The following list -provides explanations for the various files: +Here are explanations for the various files: - ``hardware.kcf``: Specifies a list of kernel Kconfig files that contain hardware options only. @@ -400,8 +398,7 @@ provides explanations for the various files: (i.e. ``hardware.kcf`` or ``non-hardware.kcf``). Here is a specific example using the -``kernel-cache/bsp/mti-malta32/hardware.cfg``: -:: +``kernel-cache/bsp/mti-malta32/hardware.cfg``:: CONFIG_SERIAL_8250 CONFIG_SERIAL_8250_CONSOLE diff --git a/poky/documentation/kernel-dev/faq.rst b/poky/documentation/kernel-dev/faq.rst index c2106f81e..f0a7af37b 100644 --- a/poky/documentation/kernel-dev/faq.rst +++ b/poky/documentation/kernel-dev/faq.rst @@ -7,7 +7,7 @@ Kernel Development FAQ Common Questions and Solutions ============================== -The following lists some solutions for common questions. +Here are some solutions for common questions. How do I use my own Linux kernel ``.config`` file? -------------------------------------------------- @@ -57,8 +57,7 @@ These other variables are useful for installing specific modules: For example, set the following in the ``qemux86.conf`` file to include the ``ab123`` kernel modules with images built for the ``qemux86`` -machine: -:: +machine:: MACHINE_EXTRA_RRECOMMENDS += "kernel-module-ab123" @@ -69,10 +68,9 @@ How do I change the Linux kernel command line? ---------------------------------------------- The Linux kernel command line is -typically specified in the machine config using the ``APPEND`` variable. +typically specified in the machine config using the :term:`APPEND` variable. For example, you can add some helpful debug information doing the -following: -:: +following:: APPEND += "printk.time=y initcall_debug debug" diff --git a/poky/documentation/kernel-dev/intro.rst b/poky/documentation/kernel-dev/intro.rst index 5592f74c8..e406f6e47 100644 --- a/poky/documentation/kernel-dev/intro.rst +++ b/poky/documentation/kernel-dev/intro.rst @@ -66,9 +66,9 @@ from the continual kernel integration and testing performed during development of the Yocto Project. If, instead, you have a very specific Linux kernel source tree and are -unable to align with one of the official Yocto Linux kernel recipes, an -alternative exists by which you can use the Yocto Project Linux kernel -tools with your own kernel sources. +unable to align with one of the official Yocto Linux kernel recipes, +you have a way to use the Yocto Project Linux kernel tools with your +own kernel sources. The remainder of this manual provides instructions for completing specific Linux kernel development tasks. These instructions assume you diff --git a/poky/documentation/kernel-dev/maint-appx.rst b/poky/documentation/kernel-dev/maint-appx.rst index 44c43893e..d968c856f 100644 --- a/poky/documentation/kernel-dev/maint-appx.rst +++ b/poky/documentation/kernel-dev/maint-appx.rst @@ -28,8 +28,7 @@ in the Yocto Project Linux kernel in any clone of the Yocto Project Linux kernel source repository and ``yocto-kernel-cache`` Git trees. For example, the following commands clone the Yocto Project baseline Linux kernel that branches off ``linux.org`` version 4.12 and the -``yocto-kernel-cache``, which contains stores of kernel Metadata: -:: +``yocto-kernel-cache``, which contains stores of kernel Metadata:: $ git clone git://git.yoctoproject.org/linux-yocto-4.12 $ git clone git://git.yoctoproject.org/linux-kernel-cache @@ -42,16 +41,14 @@ section. Once you have cloned the kernel Git repository and the cache of Metadata on your local machine, you can discover the branches that are available -in the repository using the following Git command: -:: +in the repository using the following Git command:: $ git branch -a Checking out a branch allows you to work with a particular Yocto Linux kernel. For example, the following commands check out the "standard/beagleboard" branch of the Yocto Linux kernel repository and -the "yocto-4.12" branch of the ``yocto-kernel-cache`` repository: -:: +the "yocto-4.12" branch of the ``yocto-kernel-cache`` repository:: $ cd ~/linux-yocto-4.12 $ git checkout -b my-kernel-4.12 remotes/origin/standard/beagleboard @@ -107,12 +104,11 @@ patch, or BSP: repository organized under the "Yocto Linux Kernel" heading in the :yocto_git:`Yocto Project Source Repositories <>`. - - Areas pointed to by ``SRC_URI`` statements found in kernel recipes. + - Areas pointed to by :term:`SRC_URI` statements found in kernel recipes. For a typical build, the target of the search is a feature description in an ``.scc`` file whose name follows this format (e.g. - ``beaglebone-standard.scc`` and ``beaglebone-preempt-rt.scc``): - :: + ``beaglebone-standard.scc`` and ``beaglebone-preempt-rt.scc``):: bsp_root_name-kernel_type.scc @@ -179,7 +175,7 @@ Build Strategy Once you have cloned a Yocto Linux kernel repository and the cache repository (``yocto-kernel-cache``) onto your development system, you can consider the compilation phase of kernel development, which is -building a kernel image. Some prerequisites exist that are validated by +building a kernel image. Some prerequisites are validated by the build process before compilation starts: - The :term:`SRC_URI` points to the @@ -198,7 +194,7 @@ the build process before compilation starts: In the previous example, the "yocto-4.12" branch is checked out in the ``yocto-kernel-cache`` repository. -The OpenEmbedded build system makes sure these conditions exist before +The OpenEmbedded build system makes sure these conditions are satisfied before attempting compilation. Other means, however, do exist, such as bootstrapping a BSP. @@ -222,8 +218,7 @@ build process generates a build tree that is separate from your kernel's local Git source repository tree. This build tree has a name that uses the following form, where ``${MACHINE}`` is the metadata name of the machine (BSP) and "kernel_type" is one of the Yocto Project supported -kernel types (e.g. "standard"): -:: +kernel types (e.g. "standard"):: linux-${MACHINE}-kernel_type-build diff --git a/poky/documentation/ref-manual/migration.rst b/poky/documentation/migration-guides/index.rst index a01d4ee14..6304e6318 100644 --- a/poky/documentation/ref-manual/migration.rst +++ b/poky/documentation/migration-guides/index.rst @@ -1,32 +1,34 @@ .. SPDX-License-Identifier: CC-BY-SA-2.0-UK -****************************************** -Migrating to a Newer Yocto Project Release -****************************************** +========================== + Release Migration Guides +========================== -This chapter provides information you can use to migrate work to a newer -Yocto Project release. You can find the same information in the release -notes for a given release. +| + +Each document in this chapter provides information about how +to move to one release of the Yocto Project from the previous one. .. toctree:: migration-general - migration-1.3 - migration-1.4 - migration-1.5 - migration-1.6 - migration-1.7 - migration-1.8 - migration-2.0 - migration-2.1 - migration-2.2 - migration-2.3 - migration-2.4 - migration-2.5 - migration-2.6 - migration-2.7 - migration-3.0 - migration-3.1 - migration-3.2 migration-3.3 + migration-3.2 + migration-3.1 + migration-3.0 + migration-2.7 + migration-2.6 + migration-2.5 + migration-2.4 + migration-2.3 + migration-2.2 + migration-2.1 + migration-2.0 + migration-1.8 + migration-1.7 + migration-1.6 + migration-1.5 + migration-1.4 + migration-1.3 +.. include:: /boilerplate.rst diff --git a/poky/documentation/ref-manual/migration-1.3.rst b/poky/documentation/migration-guides/migration-1.3.rst index 0929f490d..afb868e7c 100644 --- a/poky/documentation/ref-manual/migration-1.3.rst +++ b/poky/documentation/migration-guides/migration-1.3.rst @@ -1,7 +1,7 @@ .. SPDX-License-Identifier: CC-BY-SA-2.0-UK -Moving to the Yocto Project 1.3 Release (danny) -=============================================== +Release 1.3 (danny) +=================== This section provides migration information for moving to the Yocto Project 1.3 Release (codename "danny") from the prior release. @@ -29,7 +29,7 @@ location (either local or remote) and then point to it in :term:`SSTATE_MIRRORS`, you need to append "PATH" to the end of the mirror URL so that the path used by BitBake before the mirror substitution is appended to the path used to access the mirror. -Here is an example: :: +Here is an example:: SSTATE_MIRRORS = "file://.* http://someserver.tld/share/sstate/PATH" @@ -125,7 +125,7 @@ Image recipes that previously included ``apps-console-core`` in :term:`IMAGE_FEATURES` should now include ``splash`` instead to enable the boot-up splash screen. Retaining ``apps-console-core`` will still include the splash screen but generates a -warning. The ``apps-x11-core`` and ``apps-x11-games`` ``IMAGE_FEATURES`` +warning. The ``apps-x11-core`` and ``apps-x11-games`` :term:`IMAGE_FEATURES` features have been removed. .. _migration-1.3-removed-recipes: @@ -181,14 +181,13 @@ Linux Kernel Naming ------------------- The naming scheme for kernel output binaries has been changed to now -include :term:`PE` as part of the filename: -:: +include :term:`PE` as part of the filename:: KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PE}-${PV}-${PR}-${MACHINE}-${DATETIME}" -Because the ``PE`` variable is not set by default, these binary files +Because the :term:`PE` variable is not set by default, these binary files could result with names that include two dash characters. Here is an -example: :: +example:: bzImage--3.10.9+git0+cd502a8814_7144bcc4b8-r0-qemux86-64-20130830085431.bin diff --git a/poky/documentation/ref-manual/migration-1.4.rst b/poky/documentation/migration-guides/migration-1.4.rst index f5fac7a2a..3f980915c 100644 --- a/poky/documentation/ref-manual/migration-1.4.rst +++ b/poky/documentation/migration-guides/migration-1.4.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 1.4 Release (dylan) -=============================================== +Release 1.4 (dylan) +=================== This section provides migration information for moving to the Yocto Project 1.4 Release (codename "dylan") from the prior release. @@ -28,7 +28,7 @@ Differences include the following: and uninstall script functions ``pkg_preinst``, ``pkg_postinst``, ``pkg_prerm``, and ``pkg_postrm`` should always have a package name override. For example, use ``RDEPENDS_${PN}`` for the main package - instead of ``RDEPENDS``. BitBake uses more strict checks when it + instead of :term:`RDEPENDS`. BitBake uses more strict checks when it parses recipes. .. _migration-1.4-build-behavior: @@ -40,8 +40,7 @@ Differences include the following: - *Shared State Code:* The shared state code has been optimized to avoid running unnecessary tasks. For example, the following no longer - populates the target sysroot since that is not necessary: - :: + populates the target sysroot since that is not necessary:: $ bitbake -c rootfs some-image @@ -54,14 +53,14 @@ Differences include the following: :term:`SRC_URI`, the build system now uses :term:`FILESOVERRIDES` instead of :term:`OVERRIDES` for the directory names. In - general, the values previously in ``OVERRIDES`` are now in - ``FILESOVERRIDES`` as well. However, if you relied upon an additional - value you previously added to ``OVERRIDES``, you might now need to - add it to ``FILESOVERRIDES`` unless you are already adding it through + general, the values previously in :term:`OVERRIDES` are now in + :term:`FILESOVERRIDES` as well. However, if you relied upon an additional + value you previously added to :term:`OVERRIDES`, you might now need to + add it to :term:`FILESOVERRIDES` unless you are already adding it through the :term:`MACHINEOVERRIDES` or :term:`DISTROOVERRIDES` variables, as appropriate. For more related changes, see the - ":ref:`ref-manual/migration-1.4:variables`" section. + ":ref:`migration-guides/migration-1.4:variables`" section. .. _migration-1.4-proxies-and-fetching-source: @@ -106,7 +105,7 @@ Variables The following variables have changed: -- ``SANITY_TESTED_DISTROS``: This variable now uses a distribution +- :term:`SANITY_TESTED_DISTROS`: This variable now uses a distribution ID, which is composed of the host distributor ID followed by the release. Previously, :term:`SANITY_TESTED_DISTROS` was @@ -115,7 +114,7 @@ The following variables have changed: you are not specifically setting this variable, or if you are specifically setting it to "". -- ``SRC_URI``: The ``${``\ :term:`PN`\ ``}``, +- :term:`SRC_URI`: The ``${``\ :term:`PN`\ ``}``, ``${``\ :term:`PF`\ ``}``, ``${``\ :term:`P`\ ``}``, and ``FILE_DIRNAME`` directories have been dropped from the default value of the @@ -136,8 +135,7 @@ Target Package Management with RPM If runtime package management is enabled and the RPM backend is selected, Smart is now installed for package download, dependency resolution, and upgrades instead of Zypper. For more information on how -to use Smart, run the following command on the target: -:: +to use Smart, run the following command on the target:: smart --help diff --git a/poky/documentation/ref-manual/migration-1.5.rst b/poky/documentation/migration-guides/migration-1.5.rst index c772e51b5..e956d9fff 100644 --- a/poky/documentation/ref-manual/migration-1.5.rst +++ b/poky/documentation/migration-guides/migration-1.5.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 1.5 Release (dora) -============================================== +Release 1.5 (dora) +================== This section provides migration information for moving to the Yocto Project 1.5 Release (codename "dora") from the prior release. @@ -68,7 +68,7 @@ The following changes have been made that relate to BitBake: - ``${``\ :term:`P`\ ``}`` and ``${``\ :term:`PF`\ ``}`` are no longer added to :term:`PROVIDES` by default in ``bitbake.conf``. - These version-specific ``PROVIDES`` items were seldom used. + These version-specific :term:`PROVIDES` items were seldom used. Attempting to use them could result in two versions being built simultaneously rather than just one version due to the way BitBake resolves dependencies. @@ -84,9 +84,9 @@ The following changes have been made to the package QA checks: :term:`WARN_QA` values in your configuration, check that they contain all of the issues that you wish to be reported. Previous Yocto Project versions contained a bug that meant that any - item not mentioned in ``ERROR_QA`` or ``WARN_QA`` would be treated as + item not mentioned in :term:`ERROR_QA` or :term:`WARN_QA` would be treated as a warning. Consequently, several important items were not already in - the default value of ``WARN_QA``. All of the possible QA checks are + the default value of :term:`WARN_QA`. All of the possible QA checks are now documented in the ":ref:`insane.bbclass <ref-classes-insane>`" section. @@ -97,7 +97,7 @@ The following changes have been made to the package QA checks: - If you are using the ``buildhistory`` class, the check for the package version going backwards is now controlled using a standard QA check. - Thus, if you have customized your ``ERROR_QA`` or ``WARN_QA`` values + Thus, if you have customized your :term:`ERROR_QA` or :term:`WARN_QA` values and still wish to have this check performed, you should add "version-going-backwards" to your value for one or the other variables depending on how you wish it to be handled. See the @@ -129,7 +129,7 @@ The following directory changes exist: - When buildhistory is enabled, its output is now written under the :term:`Build Directory` rather than :term:`TMPDIR`. Doing so makes it easier to delete - ``TMPDIR`` and preserve the build history. Additionally, data for + :term:`TMPDIR` and preserve the build history. Additionally, data for produced SDKs is now split by :term:`IMAGE_NAME`. - The ``pkgdata`` directory produced as part of the packaging process @@ -157,20 +157,20 @@ major issue in the way the values are used. The following changes have been made that relate to :term:`IMAGE_FEATURES`: -- The value of ``IMAGE_FEATURES`` is now validated to ensure invalid +- The value of :term:`IMAGE_FEATURES` is now validated to ensure invalid feature items are not added. Some users mistakenly add package names to this variable instead of using :term:`IMAGE_INSTALL` in order to have the package added to the image, which does not work. This change is - intended to catch those kinds of situations. Valid ``IMAGE_FEATURES`` + intended to catch those kinds of situations. Valid :term:`IMAGE_FEATURES` are drawn from ``PACKAGE_GROUP`` definitions, :term:`COMPLEMENTARY_GLOB` and a new - "validitems" varflag on ``IMAGE_FEATURES``. The "validitems" varflag + "validitems" varflag on :term:`IMAGE_FEATURES`. The "validitems" varflag change allows additional features to be added if they are not provided using the previous two mechanisms. -- The previously deprecated "apps-console-core" ``IMAGE_FEATURES`` item - is no longer supported. Add "splash" to ``IMAGE_FEATURES`` if you +- The previously deprecated "apps-console-core" :term:`IMAGE_FEATURES` item + is no longer supported. Add "splash" to :term:`IMAGE_FEATURES` if you wish to have the splash screen enabled, since this is all that apps-console-core was doing. @@ -285,7 +285,7 @@ Following are changes to ``udev``: ``udev-extraconf`` to your image. - ``udev`` no longer brings in ``pciutils-ids`` or ``usbutils-ids`` - through ``RRECOMMENDS``. These are not needed by ``udev`` itself and + through :term:`RRECOMMENDS`. These are not needed by ``udev`` itself and removing them saves around 350KB. .. _migration-1.5-removed-renamed-recipes: diff --git a/poky/documentation/ref-manual/migration-1.6.rst b/poky/documentation/migration-guides/migration-1.6.rst index 4c6afab1f..eea3d1767 100644 --- a/poky/documentation/ref-manual/migration-1.6.rst +++ b/poky/documentation/migration-guides/migration-1.6.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 1.6 Release (daisy) -=============================================== +Release 1.6 (daisy) +=================== This section provides migration information for moving to the Yocto Project 1.6 Release (codename "daisy") from the prior release. @@ -53,8 +53,7 @@ Matching Branch Requirement for Git Fetching When fetching source from a Git repository using :term:`SRC_URI`, BitBake will now validate the :term:`SRCREV` value against the branch. You can specify -the branch using the following form: -:: +the branch using the following form:: SRC_URI = "git://server.name/repository;branch=branchname" @@ -62,7 +61,7 @@ If you do not specify a branch, BitBake looks in the default "master" branch. Alternatively, if you need to bypass this check (e.g. if you are fetching a revision corresponding to a tag that is not on any branch), -you can add ";nobranch=1" to the end of the URL within ``SRC_URI``. +you can add ";nobranch=1" to the end of the URL within :term:`SRC_URI`. .. _migration-1.6-bitbake-deps: @@ -135,9 +134,9 @@ OpenEmbedded build system variables, see the ":doc:`/ref-manual/variables`" Chap :term:`TMPDIR` can no longer be on an NFS mount. NFS does not offer full POSIX locking and inode consistency and can cause -unexpected issues if used to store ``TMPDIR``. +unexpected issues if used to store :term:`TMPDIR`. -The check for this occurs on startup. If ``TMPDIR`` is detected on an +The check for this occurs on startup. If :term:`TMPDIR` is detected on an NFS mount, an error occurs. .. _migration-1.6-variable-changes-PRINC: @@ -207,7 +206,7 @@ functions to call and not arbitrary shell commands: For migration purposes, you can simply wrap shell commands in a shell -function and then call the function. Here is an example: :: +function and then call the function. Here is an example:: my_postprocess_function() { echo "hello" > ${IMAGE_ROOTFS}/hello.txt @@ -248,8 +247,7 @@ the ``autotools`` or ``autotools_stage``\ classes. ``qemu-native`` now builds without SDL-based graphical output support by default. The following additional lines are needed in your -``local.conf`` to enable it: -:: +``local.conf`` to enable it:: PACKAGECONFIG_pn-qemu-native = "sdl" ASSUME_PROVIDED += "libsdl-native" @@ -276,7 +274,7 @@ In addition to ``core-image-basic`` being renamed, Licensing --------- -The top-level ``LICENSE`` file has been changed to better describe the +The top-level :term:`LICENSE` file has been changed to better describe the license of the various components of :term:`OpenEmbedded-Core (OE-Core)`. However, the licensing itself remains unchanged. @@ -286,7 +284,7 @@ recipes point to this file within ``${COREBASE}/LICENSE``) and thus the accompanying checksum must be changed from 3f40d7994397109285ec7b81fdeb3b58 to 4d92cd373abda3937c2bc47fbc49d690. A better alternative is to have -``LIC_FILES_CHKSUM`` point to a file describing the license that is +:term:`LIC_FILES_CHKSUM` point to a file describing the license that is distributed with the source that the recipe is building, if possible, rather than pointing to ``${COREBASE}/LICENSE``. @@ -299,7 +297,7 @@ The "-fpermissive" option has been removed from the default :term:`CFLAGS` value. You need to take action on individual recipes that fail when building with this option. You need to either patch the recipes to fix the issues reported by the compiler, or -you need to add "-fpermissive" to ``CFLAGS`` in the recipes. +you need to add "-fpermissive" to :term:`CFLAGS` in the recipes. .. _migration-1.6-custom-images: diff --git a/poky/documentation/ref-manual/migration-1.7.rst b/poky/documentation/migration-guides/migration-1.7.rst index 9cf467f28..c3a50eec8 100644 --- a/poky/documentation/ref-manual/migration-1.7.rst +++ b/poky/documentation/migration-guides/migration-1.7.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 1.7 Release (dizzy) -=============================================== +Release 1.7 (dizzy) +=================== This section provides migration information for moving to the Yocto Project 1.7 Release (codename "dizzy") from the prior release. @@ -15,8 +15,7 @@ optional features. The method used to set defaults for these options means that existing ``local.conf`` files will need to be modified to append to ``PACKAGECONFIG`` for ``qemu-native`` and ``nativesdk-qemu`` instead of setting it. In other words, to enable graphical output for -QEMU, you should now have these lines in ``local.conf``: -:: +QEMU, you should now have these lines in ``local.conf``:: PACKAGECONFIG_append_pn-qemu-native = " sdl" PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" @@ -80,8 +79,7 @@ disable the scripts due to the scripts previously requiring error-prone path substitution. Software that links against these libraries using these scripts should use the much more robust ``pkg-config`` instead. The list of recipes changed in this version (and their configuration -scripts) is as follows: -:: +scripts) is as follows:: directfb (directfb-config) freetype (freetype-config) @@ -142,9 +140,9 @@ part of the variable name. This change not only simplifies usage but also allows the values of these variables to be appropriately incorporated into task signatures and thus trigger the appropriate tasks to re-execute when changed. You should replace any references to -``module_autoload_*`` with ``KERNEL_MODULE_AUTOLOAD``, and add any +``module_autoload_*`` with :term:`KERNEL_MODULE_AUTOLOAD`, and add any modules for which ``module_conf_*`` is specified to -``KERNEL_MODULE_PROBECONF``. +:term:`KERNEL_MODULE_PROBECONF`. .. _migration-1.7-qa-check-changes: diff --git a/poky/documentation/ref-manual/migration-1.8.rst b/poky/documentation/migration-guides/migration-1.8.rst index ec2b13879..51a13873e 100644 --- a/poky/documentation/ref-manual/migration-1.8.rst +++ b/poky/documentation/migration-guides/migration-1.8.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 1.8 Release (fido) -============================================== +Release 1.8 (fido) +================== This section provides migration information for moving to the Yocto Project 1.8 Release (codename "fido") from the prior release. @@ -56,7 +56,7 @@ you can now remove them. Additionally, a ``bluetooth`` class has been added to make selection of the appropriate bluetooth support within a recipe a little easier. If you wish to make use of this class in a recipe, add something such as -the following: :: +the following:: inherit bluetooth PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)}" @@ -84,7 +84,7 @@ where the ``linux.inc`` file in ``meta-oe`` was updated. Recipes that rely on the kernel source code and do not inherit the module classes might need to add explicit dependencies on the -``do_shared_workdir`` kernel task, for example: :: +``do_shared_workdir`` kernel task, for example:: do_configure[depends] += "virtual/kernel:do_shared_workdir" @@ -131,7 +131,7 @@ One of the improvements is to attempt to run "make clean" during the ``do_configure`` task if a ``Makefile`` exists. Some software packages do not provide a working clean target within their make files. If you have such recipes, you need to set -:term:`CLEANBROKEN` to "1" within the recipe, for example: :: +:term:`CLEANBROKEN` to "1" within the recipe, for example:: CLEANBROKEN = "1" @@ -153,8 +153,8 @@ The following QA Check and Validation Changes have occurred: instead of ``${D}``. - :term:`S` now needs to be set to a valid value within a - recipe. If ``S`` is not set in the recipe, the directory is not - automatically created. If ``S`` does not point to a directory that + recipe. If :term:`S` is not set in the recipe, the directory is not + automatically created. If :term:`S` does not point to a directory that exists at the time the :ref:`ref-tasks-unpack` task finishes, a warning will be shown. diff --git a/poky/documentation/ref-manual/migration-2.0.rst b/poky/documentation/migration-guides/migration-2.0.rst index 9da60dfdc..721785377 100644 --- a/poky/documentation/ref-manual/migration-2.0.rst +++ b/poky/documentation/migration-guides/migration-2.0.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.0 Release (jethro) -================================================ +Release 2.0 (jethro) +==================== This section provides migration information for moving to the Yocto Project 2.0 Release (codename "jethro") from the prior release. @@ -25,8 +25,7 @@ and the porting guide at https://gcc.gnu.org/gcc-5/porting_to.html. Alternatively, you can switch back to GCC 4.9 or 4.8 by setting -``GCCVERSION`` in your configuration, as follows: -:: +:term:`GCCVERSION` in your configuration, as follows:: GCCVERSION = "4.9%" @@ -91,8 +90,7 @@ unlikely to require any changes to Metadata. However, these minor changes in behavior exist: - All potential overrides are now visible in the variable history as - seen when you run the following: - :: + seen when you run the following:: $ bitbake -e @@ -200,8 +198,7 @@ changes. Additionally, work directories for old versions of recipes are now pruned. If you wish to disable pruning old work directories, you can set -the following variable in your configuration: -:: +the following variable in your configuration:: SSTATE_PRUNE_OBSOLETEWORKDIR = "0" @@ -247,7 +244,7 @@ The following QA checks have been added: - Added an "invalid-packageconfig" check for any options specified in :term:`PACKAGECONFIG` that do not match any - ``PACKAGECONFIG`` option defined for the recipe. + :term:`PACKAGECONFIG` option defined for the recipe. .. _migration-2.0-miscellaneous: diff --git a/poky/documentation/ref-manual/migration-2.1.rst b/poky/documentation/migration-guides/migration-2.1.rst index 1eb9ab552..6c5ed965d 100644 --- a/poky/documentation/ref-manual/migration-2.1.rst +++ b/poky/documentation/migration-guides/migration-2.1.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.1 Release (krogoth) -================================================= +Release 2.1 (krogoth) +===================== This section provides migration information for moving to the Yocto Project 2.1 Release (codename "krogoth") from the prior release. @@ -28,8 +28,8 @@ characters. This practice is now a requirement as BitBake's datastore now assumes lower-case characters in order to give a slight performance boost during parsing. In practical terms, this requirement means that anything that ends up in :term:`OVERRIDES` must now -appear in lower-case characters (e.g. values for ``MACHINE``, -``TARGET_ARCH``, ``DISTRO``, and also recipe names if +appear in lower-case characters (e.g. values for :term:`MACHINE`, +:term:`TARGET_ARCH`, :term:`DISTRO`, and also recipe names if ``_pn-``\ recipename overrides are to be effective). .. _migration-2.1-expand-parameter-to-getvar-and-getvarflag-now-mandatory: @@ -42,8 +42,7 @@ defaulted to False if not specified. Now, however, no default exists so one must be specified. You must change any ``getVar()`` calls that do not specify the final expand parameter to calls that do specify the parameter. You can run the following ``sed`` command at the base of a -layer to make this change: -:: +layer to make this change:: sed -e 's:\(\.getVar([^,()]*\)):\1, False):g' -i `grep -ril getVar *` sed -e 's:\(\.getVarFlag([^,()]*,[^,()]*\)):\1, False):g' -i `grep -ril getVarFlag *` @@ -69,7 +68,7 @@ was a historical accident that has required many classes (e.g. to work with sensible build systems. When upgrading to the release, you must edit any recipe that relies upon this old default by either setting ``EXTRA_OEMAKE`` back to "-e MAKEFLAGS=" or by explicitly setting any -required variable value overrides using ``EXTRA_OEMAKE``, which is +required variable value overrides using :term:`EXTRA_OEMAKE`, which is typically only needed when a Makefile sets a default value for a variable that is inappropriate for cross-compilation using the "=" operator rather than the "?=" operator. @@ -180,7 +179,7 @@ The following recipes have been removed in the 2.1 release: - ``python-pygtk``: Recipe became obsolete. - ``adt-installer``: Recipe became obsolete. See the - ":ref:`ref-manual/migration-2.1:adt removed`" section for more information. + ":ref:`migration-guides/migration-2.1:adt removed`" section for more information. .. _migration-2.1-class-changes: @@ -285,8 +284,7 @@ The following changes have been made for the Poky distribution: Any recipe that needs to opt-out of having the "--disable-static" option specified on the configure command line either because it is not a supported option for the configure script or because static - libraries are needed should set the following variable: - :: + libraries are needed should set the following variable:: DISABLE_STATIC = "" @@ -369,8 +367,7 @@ These additional changes exist: - Previously, the following list of packages were removed if package-management was not in :term:`IMAGE_FEATURES`, regardless of any - dependencies: - :: + dependencies:: update-rc.d base-passwd @@ -379,7 +376,7 @@ These additional changes exist: run-postinsts With the Yocto Project 2.1 release, these packages are - only removed if "read-only-rootfs" is in ``IMAGE_FEATURES``, since + only removed if "read-only-rootfs" is in :term:`IMAGE_FEATURES`, since they might still be needed for a read-write image even in the absence of a package manager (e.g. if users need to be added, modified, or removed at runtime). diff --git a/poky/documentation/ref-manual/migration-2.2.rst b/poky/documentation/migration-guides/migration-2.2.rst index 198181a46..d6dacdf34 100644 --- a/poky/documentation/ref-manual/migration-2.2.rst +++ b/poky/documentation/migration-guides/migration-2.2.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.2 Release (morty) -=============================================== +Release 2.2 (morty) +=================== This section provides migration information for moving to the Yocto Project 2.2 Release (codename "morty") from the prior release. @@ -144,8 +144,7 @@ The new ``runqemu`` is a Python script. Machine knowledge is no longer hardcoded into ``runqemu``. You can choose to use the ``qemuboot`` configuration file to define the BSP's own arguments and to make it bootable with ``runqemu``. If you use a configuration file, use the -following form: -:: +following form:: image-name-machine.qemuboot.conf @@ -160,8 +159,7 @@ rootfs). QEMU boot arguments can be set in BSP's configuration file and the ``qemuboot`` class will save them to ``qemuboot.conf``. If you want to use ``runqemu`` without a configuration file, use the -following command form: -:: +following command form:: $ runqemu machine rootfs kernel [options] @@ -179,7 +177,7 @@ Supported machines are as follows: Consider the following example, which uses the ``qemux86-64`` machine, provides a -root filesystem, provides an image, and uses the ``nographic`` option: :: +root filesystem, provides an image, and uses the ``nographic`` option:: $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.ext4 tmp/deploy/images/qemux86-64/bzImage nographic @@ -241,11 +239,10 @@ to catch recipes that are building software without using the OpenEmbedded :term:`LDFLAGS`. This change could result in seeing some "No GNU_HASH in the elf binary" QA issues when building such recipes. You need to fix these recipes so that they use the expected -``LDFLAGS``. Depending on how the software is built, the build system +:term:`LDFLAGS`. Depending on how the software is built, the build system used by the software (e.g. a Makefile) might need to be patched. However, sometimes making this fix is as simple as adding the following -to the recipe: -:: +to the recipe:: TARGET_CC_ARCH += "${LDFLAGS}" @@ -258,8 +255,7 @@ The ``KERNEL_IMAGE_BASE_NAME`` variable no longer uses the :term:`KERNEL_IMAGETYPE` variable to create the image's base name. Because the OpenEmbedded build system can now build multiple kernel image types, this part of the kernel image base name as -been removed leaving only the following: -:: +been removed leaving only the following:: KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}" @@ -267,6 +263,17 @@ If you have recipes or classes that use ``KERNEL_IMAGE_BASE_NAME`` directly, you might need to update the references to ensure they continue to work. +.. _migration-2.2-imgdeploydir-replaces-deploy-dir-image-for-most-use-cases: + +``IMGDEPLOYDIR`` Replaces ``DEPLOY_DIR_IMAGE`` for Most Use Cases +----------------------------------------------------------------- + +The :term:`IMGDEPLOYDIR` variable was introduced to allow sstate caching of +image creation results. Image recipes defining custom :term:`IMAGE_CMD` or +doing postprocessing on the generated images need to be adapted to use +``IMGDEPLOYDIR`` instead of :term:`DEPLOY_DIR_IMAGE`. ``IMAGE_MANIFEST`` +creation and symlinking of the most recent image file will fail otherwise. + .. _migration-2.2-bitbake-changes: BitBake Changes @@ -284,7 +291,7 @@ The following changes took place for BitBake: :term:`SRC_URI` parameters to specify these. This change is more in-line with how the other fetchers work for source control systems. Recipes that fetch from Perforce will need to be - updated to use ``SRCREV`` in place of specifying the source revision + updated to use :term:`SRCREV` in place of specifying the source revision within ``SRC_URI``. - Some of BitBake's internal code structures for accessing the recipe @@ -368,7 +375,7 @@ The following recipes have been removed: - ``sato-icon-theme``: Became obsolete. - ``swabber-native``: Swabber has been removed. See the :ref:`entry on - Swabber <ref-manual/migration-2.2:swabber has been removed>`. + Swabber <migration-guides/migration-2.2:swabber has been removed>`. - ``tslib``: No longer needed and has been moved to ``meta-oe``. @@ -394,7 +401,7 @@ The following classes have been removed: - ``sip``: Mostly unused. - ``swabber``: See the :ref:`entry on - Swabber <ref-manual/migration-2.2:swabber has been removed>`. + Swabber <migration-guides/migration-2.2:swabber has been removed>`. .. _migration-2.2-minor-packaging-changes: @@ -426,7 +433,7 @@ The following miscellaneous changes have occurred: :term:`SRCREV` by default when fetching from a Git repository. You can override this in either case to use ``${``\ :term:`AUTOREV`\ ``}`` instead by using the - ``-a`` or ``DASHDASHautorev`` command-line option + ``-a`` or ``--autorev`` command-line option - ``distcc``: GTK+ UI is now disabled by default. diff --git a/poky/documentation/ref-manual/migration-2.3.rst b/poky/documentation/migration-guides/migration-2.3.rst index 0541eb3e7..886d579f9 100644 --- a/poky/documentation/ref-manual/migration-2.3.rst +++ b/poky/documentation/migration-guides/migration-2.3.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.3 Release (pyro) -============================================== +Release 2.3 (pyro) +================== This section provides migration information for moving to the Yocto Project 2.3 Release (codename "pyro") from the prior release. @@ -35,7 +35,7 @@ Consider the following: As an example, see the ``dbus`` recipe. You will see that this recipe has a ``pkg_postinst`` that calls ``systemctl`` if "systemd" is in :term:`DISTRO_FEATURES`. In the example, - ``systemd-systemctl-native`` is added to ``PACKAGE_WRITE_DEPS``, + ``systemd-systemctl-native`` is added to :term:`PACKAGE_WRITE_DEPS`, which is also conditional on "systemd" being in ``DISTRO_FEATURES``. - Examine Recipes that Use ``SSTATEPOSTINSTFUNCS``: You need to @@ -114,8 +114,7 @@ Changes to Scripts The following changes to scripts took place: - ``oe-find-native-sysroot``: The usage for the - ``oe-find-native-sysroot`` script has changed to the following: - :: + ``oe-find-native-sysroot`` script has changed to the following:: $ . oe-find-native-sysroot recipe @@ -124,8 +123,7 @@ The following changes to scripts took place: was not necessary to provide the script with the command. - ``oe-run-native``: The usage for the ``oe-run-native`` script has - changed to the following: - :: + changed to the following:: $ oe-run-native native_recipe tool @@ -138,7 +136,7 @@ The following changes to scripts took place: removed because the script was found to be deleting files it should not have, which lead to broken build trees. Rather than trying to delete portions of :term:`TMPDIR` and getting it wrong, - it is recommended that you delete ``TMPDIR`` and have it restored + it is recommended that you delete :term:`TMPDIR` and have it restored from shared state (sstate) on subsequent builds. - ``wipe-sysroot``: The ``wipe-sysroot`` script has been removed as @@ -428,10 +426,10 @@ The following miscellaneous changes have occurred: - If the :term:`DISTRO_VERSION` value contains the value of the :term:`DATE` variable, which is the - default between Poky releases, the ``DATE`` value is explicitly + default between Poky releases, the :term:`DATE` value is explicitly excluded from ``/etc/issue`` and ``/etc/issue.net``, which is displayed at the login prompt, in order to avoid conflicts with - Multilib enabled. Regardless, the ``DATE`` value is inaccurate if the + Multilib enabled. Regardless, the :term:`DATE` value is inaccurate if the ``base-files`` recipe is restored from shared state (sstate) rather than rebuilt. @@ -453,14 +451,11 @@ The following miscellaneous changes have occurred: tools. - The ``USE_LDCONFIG`` variable has been replaced with the "ldconfig" - ``DISTRO_FEATURES`` feature. Distributions that previously set: - :: + :term:`DISTRO_FEATURES` feature. Distributions that previously set:: USE_LDCONFIG = "0" - should now instead use the following: - - :: + should now instead use the following:: DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " ldconfig" @@ -478,8 +473,7 @@ The following miscellaneous changes have occurred: order to allow module packages from multiple kernel versions to co-exist on a target system. If you wish to return to the previous naming scheme that does not include the version suffix, use the - following: - :: + following:: KERNEL_MODULE_PACKAGE_SUFFIX = "" @@ -500,12 +494,12 @@ The following miscellaneous changes have occurred: information. - All native and nativesdk recipes now use a separate - ``DISTRO_FEATURES`` value instead of sharing the value used by + :term:`DISTRO_FEATURES` value instead of sharing the value used by recipes for the target, in order to avoid unnecessary rebuilds. - The ``DISTRO_FEATURES`` for ``native`` recipes is + The :term:`DISTRO_FEATURES` for ``native`` recipes is :term:`DISTRO_FEATURES_NATIVE` added to - an intersection of ``DISTRO_FEATURES`` and + an intersection of :term:`DISTRO_FEATURES` and :term:`DISTRO_FEATURES_FILTER_NATIVE`. For nativesdk recipes, the corresponding variables are diff --git a/poky/documentation/ref-manual/migration-2.4.rst b/poky/documentation/migration-guides/migration-2.4.rst index 2ba17e0ed..07f2bef62 100644 --- a/poky/documentation/ref-manual/migration-2.4.rst +++ b/poky/documentation/migration-guides/migration-2.4.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.4 Release (rocko) -=============================================== +Release 2.4 (rocko) +=================== This section provides migration information for moving to the Yocto Project 2.4 Release (codename "rocko") from the prior release. @@ -63,7 +63,7 @@ occurred: - The ``ionice`` program is now packaged in a separate "util-linux-ionice" package. The main ``util-linux`` package has a - recommended runtime dependency (i.e. ``RRECOMMENDS``) on the + recommended runtime dependency (i.e. :term:`RRECOMMENDS`) on the ``util-linux-ionice`` package. - ``initscripts``: The ``sushell`` program is now packaged in a @@ -71,7 +71,7 @@ occurred: systems to pull ``sushell`` in when ``selinux`` is enabled. The change also eliminates needing to pull in the entire ``initscripts`` package. The main ``initscripts`` package has a runtime dependency - (i.e. ``RDEPENDS``) on the ``sushell`` package when "selinux" is in + (i.e. :term:`RDEPENDS`) on the ``sushell`` package when "selinux" is in ``DISTRO_FEATURES``. - ``glib-2.0``: The ``glib-2.0`` package now has a recommended diff --git a/poky/documentation/ref-manual/migration-2.5.rst b/poky/documentation/migration-guides/migration-2.5.rst index 9ef4b5539..d14580df2 100644 --- a/poky/documentation/ref-manual/migration-2.5.rst +++ b/poky/documentation/migration-guides/migration-2.5.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.5 Release (sumo) -============================================== +Release 2.5 (sumo) +================== This section provides migration information for moving to the Yocto Project 2.5 Release (codename "sumo") from the prior release. @@ -138,13 +138,11 @@ The following are BitBake changes: tree" tasks have been removed (e.g. ``fetchall``, ``checkuriall``, and the ``*all`` tasks provided by the ``distrodata`` and ``archiver`` classes). There is a BitBake option to complete this for - any arbitrary task. For example: - :: + any arbitrary task. For example:: bitbake <target> -c fetchall - should now be replaced with: - :: + should now be replaced with:: bitbake <target> --runall=fetch @@ -169,7 +167,7 @@ one of the packages provided by the Python recipe. You can no longer run ``bitbake python-foo`` or have a :term:`DEPENDS` on ``python-foo``, but doing either of the following causes the package to work as -expected: :: +expected:: IMAGE_INSTALL_append = " python-foo" @@ -283,7 +281,7 @@ The following are additional changes: ``IMAGE_FSTYPES``. - Recipes with an unconditional dependency on ``libpam`` are only - buildable with ``pam`` in ``DISTRO_FEATURES``. If the dependency is + buildable with ``pam`` in :term:`DISTRO_FEATURES`. If the dependency is truly optional then it is recommended that the dependency be conditional upon ``pam`` being in ``DISTRO_FEATURES``. diff --git a/poky/documentation/ref-manual/migration-2.6.rst b/poky/documentation/migration-guides/migration-2.6.rst index aeac50980..3216ed5ae 100644 --- a/poky/documentation/ref-manual/migration-2.6.rst +++ b/poky/documentation/migration-guides/migration-2.6.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.6 Release (thud) -============================================== +Release 2.6 (thud) +================== This section provides migration information for moving to the Yocto Project 2.6 Release (codename "thud") from the prior release. @@ -110,7 +110,7 @@ upon the older ``*proto`` recipes need to be changed to depend on the newer ``xorgproto`` recipe instead. For names of recipes removed because of this repository change, see the -:ref:`ref-manual/migration-2.6:removed recipes` section. +:ref:`migration-guides/migration-2.6:removed recipes` section. .. _migration-2.6-distutils-distutils3-fetching-dependencies: @@ -156,18 +156,16 @@ Image/Kernel Artifact Naming Changes The following changes have been made: - Name variables (e.g. :term:`IMAGE_NAME`) use a new - ``IMAGE_VERSION_SUFFIX`` variable instead of - :term:`DATETIME`. Using ``IMAGE_VERSION_SUFFIX`` + :term:`IMAGE_VERSION_SUFFIX` variable instead of + :term:`DATETIME`. Using :term:`IMAGE_VERSION_SUFFIX` allows easier and more direct changes. - The ``IMAGE_VERSION_SUFFIX`` variable is set in the ``bitbake.conf`` - configuration file as follows: - :: + The :term:`IMAGE_VERSION_SUFFIX` variable is set in the ``bitbake.conf`` + configuration file as follows:: IMAGE_VERSION_SUFFIX = "-${DATETIME}" -- Several variables have changed names for consistency: - :: +- Several variables have changed names for consistency:: Old Variable Name New Variable Name ======================================================== @@ -214,19 +212,19 @@ The following changes have been made: The :term:`SERIAL_CONSOLE` variable has been functionally replaced by the :term:`SERIAL_CONSOLES` variable for some time. -With the Yocto Project 2.6 release, ``SERIAL_CONSOLE`` has been +With the Yocto Project 2.6 release, :term:`SERIAL_CONSOLE` has been officially deprecated. -``SERIAL_CONSOLE`` will continue to work as before for the 2.6 release. +:term:`SERIAL_CONSOLE` will continue to work as before for the 2.6 release. However, for the sake of future compatibility, it is recommended that -you replace all instances of ``SERIAL_CONSOLE`` with -``SERIAL_CONSOLES``. +you replace all instances of :term:`SERIAL_CONSOLE` with +:term:`SERIAL_CONSOLES`. .. note:: - The only difference in usage is that ``SERIAL_CONSOLES`` + The only difference in usage is that :term:`SERIAL_CONSOLES` expects entries to be separated using semicolons as compared to - ``SERIAL_CONSOLE``, which expects spaces. + :term:`SERIAL_CONSOLE`, which expects spaces. .. _migration-2.6-poky-sets-unknown-configure-option-to-qa-error: @@ -292,8 +290,7 @@ avoids the ``systemd`` recipe from becoming machine-specific for cases where machine-specific configurations need to be applied (e.g. for ``qemu*`` machines). -Currently, the new recipe packages the following files: -:: +Currently, the new recipe packages the following files:: ${sysconfdir}/machine-id ${sysconfdir}/systemd/coredump.conf @@ -390,15 +387,14 @@ QEMU (i.e. "qemu-usermode" is in default). If you wish to disable Python profile-guided optimization regardless of -the value of ``MACHINE_FEATURES``, then ensure that +the value of :term:`MACHINE_FEATURES`, then ensure that :term:`PACKAGECONFIG` for the ``python3`` recipe does not contain "pgo". You could accomplish the latter using the -following at the configuration level: -:: +following at the configuration level:: PACKAGECONFIG_remove_pn-python3 = "pgo" -Alternatively, you can set ``PACKAGECONFIG`` using an append file +Alternatively, you can set :term:`PACKAGECONFIG` using an append file for the ``python3`` recipe. .. _migration-2.6-miscellaneous-changes: @@ -411,8 +407,7 @@ The following miscellaneous changes occurred: - Default to using the Thumb-2 instruction set for armv7a and above. If you have any custom recipes that build software that needs to be built with the ARM instruction set, change the recipe to set the - instruction set as follows: - :: + instruction set as follows:: ARM_INSTRUCTION_SET = "arm" diff --git a/poky/documentation/ref-manual/migration-2.7.rst b/poky/documentation/migration-guides/migration-2.7.rst index 1be4d5d5b..25d92296c 100644 --- a/poky/documentation/ref-manual/migration-2.7.rst +++ b/poky/documentation/migration-guides/migration-2.7.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 2.7 Release (warrior) -================================================= +Release 2.7 (warrior) +===================== This section provides migration information for moving to the Yocto Project 2.7 Release (codename "warrior") from the prior release. @@ -91,7 +91,7 @@ This section provides information about packaging changes. package_name\ ``-src``). If you are currently using ``dbg-pkgs`` in :term:`IMAGE_FEATURES` to bring in debug symbols and you still need the sources, you must now also add - ``src-pkgs`` to ``IMAGE_FEATURES``. Source packages remain in the + ``src-pkgs`` to :term:`IMAGE_FEATURES`. Source packages remain in the target portion of the SDK by default, unless you have set your own value for :term:`SDKIMAGE_FEATURES` that does not include ``src-pkgs``. diff --git a/poky/documentation/ref-manual/migration-3.0.rst b/poky/documentation/migration-guides/migration-3.0.rst index f3d20e2ed..163c6201c 100644 --- a/poky/documentation/ref-manual/migration-3.0.rst +++ b/poky/documentation/migration-guides/migration-3.0.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 3.0 Release (zeus) -============================================== +Release 3.0 (zeus) +================== This section provides migration information for moving to the Yocto Project 3.0 Release (codename "zeus") from the prior release. @@ -184,10 +184,9 @@ The following BitBake changes have occurred. exceptions. Remove this argument in any calls to ``bb.build.exec_func()`` in custom classes or scripts. -- The - :term:`bitbake:BB_SETSCENE_VERIFY_FUNCTION2` - is no longer used. In the unlikely event that you have any references - to it, they should be removed. +- The ``BB_SETSCENE_VERIFY_FUNCTION2`` variable is no longer used. In + the unlikely event that you have any references to it, they should be + removed. - The ``RunQueueExecuteScenequeue`` and ``RunQueueExecuteTasks`` events have been removed since setscene tasks are now executed as part of diff --git a/poky/documentation/ref-manual/migration-3.1.rst b/poky/documentation/migration-guides/migration-3.1.rst index 84d32502e..80b8f6baa 100644 --- a/poky/documentation/ref-manual/migration-3.1.rst +++ b/poky/documentation/migration-guides/migration-3.1.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 3.1 Release (dunfell) -================================================= +Release 3.1 (dunfell) +===================== This section provides migration information for moving to the Yocto Project 3.1 Release (codename "dunfell") from the prior release. @@ -71,8 +71,7 @@ when building a simple image such as core-image-minimal. If you do not need runtime tests enabled for core components, then it is recommended that you remove "ptest" from :term:`DISTRO_FEATURES` to save a significant -amount of build time e.g. by adding the following in your configuration: -:: +amount of build time e.g. by adding the following in your configuration:: DISTRO_FEATURES_remove = "ptest" @@ -179,12 +178,12 @@ parameter instead of the earlier ``name`` which overlapped with the generic ``name`` parameter. All recipes using the npm fetcher will need to be changed as a result. -An example of the new scheme: :: +An example of the new scheme:: SRC_URI = "npm://registry.npmjs.org;package=array-flatten;version=1.1.1 \ npmsw://${THISDIR}/npm-shrinkwrap.json" -Another example where the sources are fetched from git rather than an npm repository: :: +Another example where the sources are fetched from git rather than an npm repository:: SRC_URI = "git://github.com/foo/bar.git;protocol=https \ npmsw://${THISDIR}/npm-shrinkwrap.json" @@ -261,7 +260,7 @@ Miscellaneous changes --------------------- - The undocumented ``SRC_DISTRIBUTE_LICENSES`` variable has now been - removed in favour of a new ``AVAILABLE_LICENSES`` variable which is + removed in favour of a new :term:`AVAILABLE_LICENSES` variable which is dynamically set based upon license files found in ``${COMMON_LICENSE_DIR}`` and ``${LICENSE_PATH}``. diff --git a/poky/documentation/ref-manual/migration-3.2.rst b/poky/documentation/migration-guides/migration-3.2.rst index 39743af70..a940f2323 100644 --- a/poky/documentation/ref-manual/migration-3.2.rst +++ b/poky/documentation/migration-guides/migration-3.2.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 3.2 Release (gatesgarth) -==================================================== +Release 3.2 (gatesgarth) +======================== This section provides migration information for moving to the Yocto Project 3.2 Release (codename "gatesgarth") from the prior release. @@ -62,10 +62,10 @@ There is a possible complication where some existing recipe may break, for example, a recipe was found to be writing to ``${B}/install`` for ``make install`` in ``do_install`` and since ``${B}`` is listed as not to be tracked, there were errors trying to ``chown root`` for files in this location. Another -example was the ``tcl`` recipe where the source directory ``S`` is set to a +example was the ``tcl`` recipe where the source directory :term:`S` is set to a subdirectory of the source tree but files were written out to the directory structure above that subdirectory. For these types of cases in your own recipes, -extend ``PSEUDO_IGNORE_PATHS`` to cover additional paths that pseudo should not +extend :term:`PSEUDO_IGNORE_PATHS` to cover additional paths that pseudo should not be monitoring. In addition, pseudo's behaviour on mismatches has now been changed - rather @@ -90,12 +90,12 @@ If you have anonymous python or in-line python conditionally adding dependencies in your custom recipes, and you intend for those recipes to work with multilib, then you will need to ensure that ``${MLPREFIX}`` is prefixed on the package names in the dependencies, for example -(from the ``glibc`` recipe): :: +(from the ``glibc`` recipe):: RRECOMMENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}" This also applies when conditionally adding packages to :term:`PACKAGES` where -those packages have dependencies, for example (from the ``alsa-plugins`` recipe): :: +those packages have dependencies, for example (from the ``alsa-plugins`` recipe):: PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'alsa-plugins-pulseaudio-conf', '', d)}" ... @@ -207,7 +207,7 @@ files into a subdirectory and reference that instead. deploy class now cleans ``DEPLOYDIR`` before ``do_deploy`` ---------------------------------------------------------- -``do_deploy`` as implemented in the :ref:`deploy <ref-classes-deploy>` class now cleans up ${:term:`DEPLOYDIR`} before running, just as ``do_install`` cleans up ${:term:`D`} before running. This reduces the risk of ``DEPLOYDIR`` being accidentally contaminated by files from previous runs, possibly even with different config, in case of incremental builds. +``do_deploy`` as implemented in the :ref:`deploy <ref-classes-deploy>` class now cleans up ${:term:`DEPLOYDIR`} before running, just as ``do_install`` cleans up ${:term:`D`} before running. This reduces the risk of :term:`DEPLOYDIR` being accidentally contaminated by files from previous runs, possibly even with different config, in case of incremental builds. Most recipes and classes that inherit the ``deploy`` class or interact with ``do_deploy`` are unlikely to be affected by this unless they add ``prefuncs`` to ``do_deploy`` *which also* put files into ``${DEPLOYDIR}`` - these should be refactored to use ``do_deploy_prepend`` instead. @@ -229,7 +229,7 @@ needs ``/etc/ld.so.conf`` to be present at image build time: When some recipe installs libraries to a non-standard location, and therefore installs in a file in ``/etc/ld.so.conf.d/foo.conf``, we -need ``/etc/ld.so.conf`` containing: :: +need ``/etc/ld.so.conf`` containing:: include /etc/ld.so.conf.d/*.conf diff --git a/poky/documentation/ref-manual/migration-3.3.rst b/poky/documentation/migration-guides/migration-3.3.rst index 4fb51a39d..28857e820 100644 --- a/poky/documentation/ref-manual/migration-3.3.rst +++ b/poky/documentation/migration-guides/migration-3.3.rst @@ -1,5 +1,5 @@ -Moving to the Yocto Project 3.3 Release (hardknott) -=================================================== +Release 3.3 (hardknott) +======================= This section provides migration information for moving to the Yocto Project 3.3 Release (codename "hardknott") from the prior release. diff --git a/poky/documentation/ref-manual/migration-general.rst b/poky/documentation/migration-guides/migration-general.rst index 182482ec4..182482ec4 100644 --- a/poky/documentation/ref-manual/migration-general.rst +++ b/poky/documentation/migration-guides/migration-general.rst diff --git a/poky/documentation/overview-manual/concepts.rst b/poky/documentation/overview-manual/concepts.rst index ada5143b2..642ef15fe 100644 --- a/poky/documentation/overview-manual/concepts.rst +++ b/poky/documentation/overview-manual/concepts.rst @@ -55,8 +55,7 @@ This section briefly introduces BitBake. If you want more information on BitBake, see the :doc:`BitBake User Manual <bitbake:index>`. To see a list of the options BitBake supports, use either of the -following commands: -:: +following commands:: $ bitbake -h $ bitbake --help @@ -66,8 +65,7 @@ The most common usage for BitBake is ``bitbake recipename``, where to as the "target"). The target often equates to the first part of a recipe's filename (e.g. "foo" for a recipe named ``foo_1.3.0-r0.bb``). So, to process the ``matchbox-desktop_1.2.3.bb`` recipe file, you might -type the following: -:: +type the following:: $ bitbake matchbox-desktop @@ -141,7 +139,7 @@ hardware-specific configurations allows you to share other metadata by using a different layer where that metadata might be common across several pieces of hardware. -Many layers exist that work in the Yocto Project development environment. The +There are many layers working in the Yocto Project development environment. The :yocto_home:`Yocto Project Curated Layer Index </software-overview/layers/>` and :oe_layerindex:`OpenEmbedded Layer Index <>` both contain layers from which you can use or leverage. @@ -334,7 +332,7 @@ created by an autobuilder: One useful scenario for using the ``conf/site.conf`` file is to extend your :term:`BBPATH` variable to include the path to a ``conf/site.conf``. Then, when BitBake looks - for Metadata using ``BBPATH``, it finds the ``conf/site.conf`` file + for Metadata using :term:`BBPATH`, it finds the ``conf/site.conf`` file and applies your common configurations found in the file. To override configurations in a particular build directory, alter the similar configurations within that build directory's ``conf/local.conf`` @@ -372,7 +370,7 @@ BitBake's global behavior. This section takes a closer look at the layers the build system uses to further control the build. These layers provide Metadata for the software, machine, and policies. -In general, three types of layer input exists. You can see them below +In general, there are three types of layer input. You can see them below the "User Configuration" box in the `general workflow figure <overview-manual/concepts:openembedded build system concepts>`: @@ -429,8 +427,8 @@ Repositories <>` also shows layers categorized under "Yocto Metadata Layers." .. note:: - Layers exist in the Yocto Project Source Repositories that cannot be - found in the OpenEmbedded Layer Index. These layers are either + There are layers in the Yocto Project Source Repositories that cannot be + found in the OpenEmbedded Layer Index. Such layers are either deprecated or experimental in nature. BitBake uses the ``conf/bblayers.conf`` file, which is part of the user @@ -491,7 +489,7 @@ the machine (``conf/machine/machine.conf``) and, of course, the layer The remainder of the layer is dedicated to specific recipes by function: ``recipes-bsp``, ``recipes-core``, ``recipes-graphics``, -``recipes-kernel``, and so forth. Metadata can exist for multiple +``recipes-kernel``, and so forth. There can be metadata for multiple formfactors, graphics support systems, and so forth. .. note:: @@ -530,13 +528,11 @@ project that is more dynamic or experimental in nature, a project might keep source files in a repository controlled by a Source Control Manager (SCM) such as Git. Pulling source from a repository allows you to control the point in the repository (the revision) from which you want -to build software. Finally, a combination of the two might exist, which -would give the consumer a choice when deciding where to get source -files. +to build software. A combination of the two is also possible. BitBake uses the :term:`SRC_URI` variable to point to source files regardless of their location. Each -recipe must have a ``SRC_URI`` variable that points to the source. +recipe must have a :term:`SRC_URI` variable that points to the source. Another area that plays a significant role in where source files come from is pointed to by the @@ -544,13 +540,13 @@ from is pointed to by the a cache that can hold previously downloaded source. You can also instruct the OpenEmbedded build system to create tarballs from Git repositories, which is not the default behavior, and store them in the -``DL_DIR`` by using the +:term:`DL_DIR` by using the :term:`BB_GENERATE_MIRROR_TARBALLS` variable. -Judicious use of a ``DL_DIR`` directory can save the build system a trip +Judicious use of a :term:`DL_DIR` directory can save the build system a trip across the Internet when looking for files. A good method for using a -download directory is to have ``DL_DIR`` point to an area outside of +download directory is to have :term:`DL_DIR` point to an area outside of your Build Directory. Doing so allows you to safely delete the Build Directory if needed without fear of removing any downloaded source file. @@ -611,7 +607,7 @@ the specific revision from which to build. Source Mirror(s) ~~~~~~~~~~~~~~~~ -Two kinds of mirrors exist: pre-mirrors and regular mirrors. The +There are two kinds of mirrors: pre-mirrors and regular mirrors. The :term:`PREMIRRORS` and :term:`MIRRORS` variables point to these, respectively. BitBake checks pre-mirrors before looking upstream @@ -669,8 +665,8 @@ package files are kept: variables are used, respectively. - :term:`PACKAGE_ARCH`: Defines - architecture-specific sub-folders. For example, packages could exist - for the i586 or qemux86 architectures. + architecture-specific sub-folders. For example, packages could be + available for the i586 or qemux86 architectures. BitBake uses the :ref:`do_package_write_* <ref-tasks-package_write_deb>` @@ -683,8 +679,8 @@ and ":ref:`ref-tasks-package_write_tar`" sections in the Yocto Project Reference Manual for additional information. As an example, consider a scenario where an IPK packaging -manager is being used and package architecture support for both i586 and -qemux86 exist. Packages for the i586 architecture are placed in +manager is being used and there is package architecture support for both +i586 and qemux86. Packages for the i586 architecture are placed in ``build/tmp/deploy/ipk/i586``, while packages for the qemux86 architecture are placed in ``build/tmp/deploy/ipk/qemux86``. @@ -700,7 +696,7 @@ closer look at each of those areas. .. note:: - Separate documentation exists for the BitBake tool. See the + Documentation for the BitBake tool is available separately. See the BitBake User Manual for reference material on BitBake. @@ -751,7 +747,7 @@ Build Directory's hierarchy: architecture of the built package or packages. Depending on the eventual destination of the package or packages (i.e. machine architecture, :term:`Build Host`, SDK, or - specific machine), ``PACKAGE_ARCH`` varies. See the variable's + specific machine), :term:`PACKAGE_ARCH` varies. See the variable's description for details. - :term:`TARGET_OS`: The operating @@ -760,7 +756,7 @@ Build Directory's hierarchy: - :term:`PN`: The name of the recipe used to build the package. This variable can have multiple meanings. - However, when used in the context of input files, ``PN`` represents + However, when used in the context of input files, :term:`PN` represents the name of the recipe. - :term:`WORKDIR`: The location @@ -777,7 +773,7 @@ Build Directory's hierarchy: files for a given recipe. - :term:`BPN`: The name of the recipe - used to build the package. The ``BPN`` variable is a version of + used to build the package. The :term:`BPN` variable is a version of the ``PN`` variable but with common prefixes and suffixes removed. - :term:`PV`: The version of the @@ -785,12 +781,10 @@ Build Directory's hierarchy: .. note:: - In the previous figure, notice that two sample hierarchies exist: one - based on package architecture (i.e. - PACKAGE_ARCH - ) and one based on a machine (i.e. - MACHINE - ). The underlying structures are identical. The differentiator being + In the previous figure, notice that there are two sample hierarchies: + one based on package architecture (i.e. :term:`PACKAGE_ARCH`) + and one based on a machine (i.e. :term:`MACHINE`). + The underlying structures are identical. The differentiator being what the OpenEmbedded build system is using as a build target (e.g. general architecture, a build host, an SDK, or a specific machine). @@ -809,13 +803,13 @@ and the :term:`FILESPATH` variable to locate applicable patch files. Default processing for patch files assumes the files have either -``*.patch`` or ``*.diff`` file types. You can use ``SRC_URI`` parameters +``*.patch`` or ``*.diff`` file types. You can use :term:`SRC_URI` parameters to change the way the build system recognizes patch files. See the :ref:`ref-tasks-patch` task for more information. BitBake finds and applies multiple patches for a single recipe in the -order in which it locates the patches. The ``FILESPATH`` variable +order in which it locates the patches. The :term:`FILESPATH` variable defines the default set of directories that the build system uses to search for patch files. Once found, patches are applied to the recipe's source files, which are located in the @@ -883,12 +877,12 @@ This step in the build process consists of the following tasks: :ref:`ref-tasks-compile` task. Compilation occurs in the directory pointed to by the :term:`B` variable. Realize that the - ``B`` directory is, by default, the same as the + :term:`B` directory is, by default, the same as the :term:`S` directory. - *do_install*: After compilation completes, BitBake executes the :ref:`ref-tasks-install` task. - This task copies files from the ``B`` directory and places them in a + This task copies files from the :term:`B` directory and places them in a holding area pointed to by the :term:`D` variable. Packaging occurs later using files from this holding directory. @@ -934,7 +928,7 @@ the analysis and package splitting process use several areas: - :term:`PKGDATA_DIR`: A shared, global-state directory that holds packaging metadata generated during the packaging process. The packaging process copies metadata from - ``PKGDESTWORK`` to the ``PKGDATA_DIR`` area where it becomes globally + :term:`PKGDESTWORK` to the :term:`PKGDATA_DIR` area where it becomes globally available. - :term:`STAGING_DIR_HOST`: @@ -965,8 +959,7 @@ that part of the build process. .. note:: - Support for creating feeds directly from the - deploy/\* + Support for creating feeds directly from the ``deploy/*`` directories does not exist. Creating such feeds usually requires some kind of feed maintenance mechanism that would upload the new packages into an official package feed (e.g. the Ångström distribution). This @@ -1015,7 +1008,7 @@ actually install: With :term:`IMAGE_ROOTFS` pointing to the location of the filesystem under construction and the -``PACKAGE_INSTALL`` variable providing the final list of packages to +:term:`PACKAGE_INSTALL` variable providing the final list of packages to install, the root file system is created. Package installation is under control of the package manager (e.g. @@ -1064,19 +1057,17 @@ based on the image types specified in the The process turns everything into an image file or a set of image files and can compress the root filesystem image to reduce the overall size of the image. The formats used for the root filesystem depend on the -``IMAGE_FSTYPES`` variable. Compression depends on whether the formats +:term:`IMAGE_FSTYPES` variable. Compression depends on whether the formats support compression. As an example, a dynamically created task when creating a particular -image type would take the following form: -:: +image type would take the following form:: do_image_type So, if the type -as specified by the ``IMAGE_FSTYPES`` were ``ext4``, the dynamically -generated task would be as follows: -:: +as specified by the :term:`IMAGE_FSTYPES` were ``ext4``, the dynamically +generated task would be as follows:: do_image_ext4 @@ -1160,9 +1151,9 @@ checksum <overview-manual/concepts:checksums (signatures)>`. OpenEmbedded. To determine if a task needs to be rerun, BitBake checks if a stamp file -with a matching input checksum exists for the task. If such a stamp file -exists, the task's output is assumed to exist and still be valid. If the -file does not exist, the task is rerun. +with a matching input checksum exists for the task. In this case, +the task's output is assumed to exist and still be valid. Otherwise, +the task is rerun. .. note:: @@ -1180,9 +1171,9 @@ file does not exist, the task is rerun. the sstate cache mechanism adds is a way to cache task output that can then be shared between build machines. -Since ``STAMPS_DIR`` is usually a subdirectory of ``TMPDIR``, removing -``TMPDIR`` will also remove ``STAMPS_DIR``, which means tasks will -properly be rerun to repopulate ``TMPDIR``. +Since :term:`STAMPS_DIR` is usually a subdirectory of :term:`TMPDIR`, removing +:term:`TMPDIR` will also remove :term:`STAMPS_DIR`, which means tasks will +properly be rerun to repopulate :term:`TMPDIR`. If you want some task to always be considered "out of date", you can mark it with the :ref:`nostamp <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>` @@ -1238,14 +1229,14 @@ to run any of the ``do_fetch``, ``do_unpack``, ``do_patch``, It becomes more complicated if everything can come from an sstate cache because some objects are simply not required at all. For example, you do -not need a compiler or native tools, such as quilt, if nothing exists to -compile or patch. If the ``do_package_write_*`` packages are available +not need a compiler or native tools, such as quilt, if there isn't anything +to compile or patch. If the ``do_package_write_*`` packages are available from sstate, BitBake does not need the ``do_package`` task data. To handle all these complexities, BitBake runs in two phases. The first is the "setscene" stage. During this stage, BitBake first checks the sstate cache for any targets it is planning to build. BitBake does a -fast check to see if the object exists rather than a complete download. +fast check to see if the object exists rather than doing a complete download. If nothing exists, the second phase, which is the setscene stage, completes and the main build proceeds. @@ -1370,9 +1361,9 @@ can initialize the environment before using the tools. All the output files for an SDK are written to the ``deploy/sdk`` folder inside the :term:`Build Directory` as -shown in the previous figure. Depending on the type of SDK, several -variables exist that help configure these files. The following list -shows the variables associated with an extensible SDK: +shown in the previous figure. Depending on the type of SDK, there are +several variables to configure these files. Here are the variables +associated with an extensible SDK: - :term:`DEPLOY_DIR`: Points to the ``deploy`` directory. @@ -1417,7 +1408,7 @@ This next list, shows the variables associated with a standard SDK: - :term:`TOOLCHAIN_HOST_TASK`: Lists packages that make up the host part of the SDK (i.e. the part - that runs on the ``SDKMACHINE``). When you use + that runs on the :term:`SDKMACHINE`). When you use ``bitbake -c populate_sdk imagename`` to create the SDK, a set of default packages apply. This variable allows you to add more packages. @@ -1471,15 +1462,11 @@ cross-compiler that is used internally within BitBake only. .. note:: - The extensible SDK does not use - gcc-cross-canadian + The extensible SDK does not use ``gcc-cross-canadian`` since this SDK ships a copy of the OpenEmbedded build system and the - sysroot within it contains - gcc-cross - . + sysroot within it contains ``gcc-cross``. -The chain of events that occurs when the standard toolchain is bootstrapped: -:: +The chain of events that occurs when the standard toolchain is bootstrapped:: binutils-cross -> linux-libc-headers -> gcc-cross -> libgcc-initial -> glibc -> libgcc -> gcc-runtime @@ -1528,8 +1515,7 @@ might not be the same machine as the Build Host. can take advantage of pre-built images that ship with the Yocto Project and already contain cross-development toolchain installers. -Here is the bootstrap process for the relocatable toolchain: -:: +Here is the bootstrap process for the relocatable toolchain:: gcc -> binutils-crosssdk -> gcc-crosssdk-initial -> linux-libc-headers -> glibc-initial -> nativesdk-glibc -> gcc-crosssdk -> gcc-cross-canadian @@ -1583,8 +1569,8 @@ Shared State Cache By design, the OpenEmbedded build system builds everything from scratch unless :term:`BitBake` can determine that parts do not need to be rebuilt. Fundamentally, building from -scratch is attractive as it means all parts are built fresh and no -possibility of stale data exists that can cause problems. When +scratch is attractive as it means all parts are built fresh and there is +no possibility of stale data that can cause problems. When developers hit problems, they typically default back to building from scratch so they have a know state from the start. @@ -1623,9 +1609,9 @@ them if they are deemed to be valid. - The build system does not maintain :term:`PR` information as part of - the shared state packages. Consequently, considerations exist that + the shared state packages. Consequently, there are considerations that affect maintaining shared state feeds. For information on how the - build system works with packages and can track incrementing ``PR`` + build system works with packages and can track incrementing :term:`PR` information, see the ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`" section in the Yocto Project Development Tasks Manual. @@ -1682,8 +1668,8 @@ objective of making native or cross packages relocatable. build host. However, cross packages generate output for the target architecture. -The checksum therefore needs to exclude ``WORKDIR``. The simplistic -approach for excluding the work directory is to set ``WORKDIR`` to some +The checksum therefore needs to exclude :term:`WORKDIR`. The simplistic +approach for excluding the work directory is to set :term:`WORKDIR` to some fixed value and create the checksum for the "run" script. Another problem results from the "run" scripts containing functions that @@ -1693,7 +1679,7 @@ used to prune the "run" scripts down to the minimum set, thereby alleviating this problem and making the "run" scripts much more readable as a bonus. -So far, solutions for shell scripts exist. What about Python tasks? The +So far, there are solutions for shell scripts. What about Python tasks? The same approach applies even though these tasks are more difficult. The process needs to figure out what variables a Python function accesses and what functions it calls. Again, the incremental build solution @@ -1701,10 +1687,9 @@ contains code that first figures out the variable and function dependencies, and then creates a checksum for the data used as the input to the task. -Like the ``WORKDIR`` case, situations exist where dependencies should be +Like the :term:`WORKDIR` case, there can be situations where dependencies should be ignored. For these situations, you can instruct the build process to -ignore a dependency by using a line like the following: -:: +ignore a dependency by using a line like the following:: PACKAGE_ARCHS[vardepsexclude] = "MACHINE" @@ -1714,13 +1699,12 @@ reference it. Equally, there are cases where you need to add dependencies BitBake is not able to find. You can accomplish this by using a line like the -following: -:: +following:: PACKAGE_ARCHS[vardeps] = "MACHINE" This example explicitly -adds the ``MACHINE`` variable as a dependency for ``PACKAGE_ARCHS``. +adds the :term:`MACHINE` variable as a dependency for :term:`PACKAGE_ARCHS`. As an example, consider a case with in-line Python where BitBake is not able to figure out dependencies. When running in debug mode (i.e. using @@ -1740,13 +1724,12 @@ to add is a policy decision. However, the effect is to generate a master checksum that combines the basehash and the hashes of the task's dependencies. -At the code level, a variety of ways exist by which both the basehash +At the code level, there are multiple ways by which both the basehash and the dependent task hashes can be influenced. Within the BitBake configuration file, you can give BitBake some extra information to help it construct the basehash. The following statement effectively results in a list of global variable dependency excludes (i.e. variables never -included in any checksum): -:: +included in any checksum):: BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \\ SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \\ @@ -1771,12 +1754,11 @@ desired. This file defines the two basic signature generators "OEBasicHash". By default, a dummy "noop" signature handler is enabled in BitBake. This means that behavior is unchanged from previous versions. OE-Core uses the "OEBasicHash" signature handler by default -through this setting in the ``bitbake.conf`` file: -:: +through this setting in the ``bitbake.conf`` file:: BB_SIGNATURE_HANDLER ?= "OEBasicHash" -The "OEBasicHash" ``BB_SIGNATURE_HANDLER`` is the same +The "OEBasicHash" :term:`BB_SIGNATURE_HANDLER` is the same as the "OEBasic" version but adds the task hash to the :ref:`stamp files <overview-manual/concepts:stamp files and the rerunning of tasks>`. This results in any metadata change that changes the task hash, automatically causing @@ -1797,7 +1779,7 @@ the build. This information includes: - ``BBHASHDEPS_``\ filename\ ``:``\ taskname: The task dependencies for each task. -- ``BB_TASKHASH``: The hash of the currently running task. +- :term:`BB_TASKHASH`: The hash of the currently running task. Shared State ------------ @@ -1826,8 +1808,7 @@ The Yocto Project team has tried to keep the details of the implementation hidden in ``sstate`` class. From a user's perspective, adding shared state wrapping to a task is as simple as this :ref:`ref-tasks-deploy` example taken -from the :ref:`deploy <ref-classes-deploy>` class: -:: +from the :ref:`deploy <ref-classes-deploy>` class:: DEPLOYDIR = "${WORKDIR}/deploy-${PN}" SSTATETASKS += "do_deploy" @@ -1867,12 +1848,11 @@ The following list explains the previous example: ``do_deploy`` is in the shared state cache and its signature indicates that the cached output is still valid (i.e. if no relevant task inputs have changed), then the contents of the shared state cache copies - directly to ${``DEPLOY_DIR_IMAGE``} by the ``do_deploy_setscene`` task + directly to ${:term:`DEPLOY_DIR_IMAGE`} by the ``do_deploy_setscene`` task instead, skipping the ``do_deploy`` task. - The following task definition is glue logic needed to make the - previous settings effective: - :: + previous settings effective:: python do_deploy_setscene () { sstate_setscene(d) @@ -1898,8 +1878,7 @@ The following list explains the previous example: In cases where ``sstate-inputdirs`` and ``sstate-outputdirs`` would be the same, you can use ``sstate-plaindirs``. For example, to preserve the ${:term:`PKGD`} and ${:term:`PKGDEST`} output from the ``do_package`` - task, use the following: - :: + task, use the following:: do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}" @@ -1915,26 +1894,23 @@ The following list explains the previous example: - ``sstate-inputdirs`` and ``sstate-outputdirs`` can also be used with multiple directories. For example, the following declares - ``PKGDESTWORK`` and ``SHLIBWORK`` as shared state input directories, - which populates the shared state cache, and ``PKGDATA_DIR`` and - ``SHLIBSDIR`` as the corresponding shared state output directories: - :: + :term:`PKGDESTWORK` and ``SHLIBWORK`` as shared state input directories, + which populates the shared state cache, and :term:`PKGDATA_DIR` and + ``SHLIBSDIR`` as the corresponding shared state output directories:: do_package[sstate-inputdirs] = "${PKGDESTWORK} ${SHLIBSWORKDIR}" do_package[sstate-outputdirs] = "${PKGDATA_DIR} ${SHLIBSDIR}" - These methods also include the ability to take a lockfile when manipulating shared state directory structures, for cases where file - additions or removals are sensitive: - :: + additions or removals are sensitive:: do_package[sstate-lockfile] = "${PACKAGELOCK}" Behind the scenes, the shared state code works by looking in :term:`SSTATE_DIR` and :term:`SSTATE_MIRRORS` for -shared state files. Here is an example: -:: +shared state files. Here is an example:: SSTATE_MIRRORS ?= "\ file://.\* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ @@ -1946,7 +1922,7 @@ shared state files. Here is an example: subdirectories, where the subdirectory names are based on the first two characters of the hash. If the shared state directory structure for a mirror has the same structure - as ``SSTATE_DIR``, you must specify "PATH" as part of the URI to enable the build + as :term:`SSTATE_DIR`, you must specify "PATH" as part of the URI to enable the build system to map to the appropriate subdirectory. The shared state package validity can be detected just by looking at the @@ -1977,8 +1953,8 @@ Automatically Added Runtime Dependencies The OpenEmbedded build system automatically adds common types of runtime dependencies between packages, which means that you do not need to explicitly declare the packages using -:term:`RDEPENDS`. Three automatic -mechanisms exist (``shlibdeps``, ``pcdeps``, and ``depchains``) that +:term:`RDEPENDS`. There are three automatic +mechanisms (``shlibdeps``, ``pcdeps``, and ``depchains``) that handle shared libraries, package configuration (pkg-config) modules, and ``-dev`` and ``-dbg`` packages, respectively. For other types of runtime dependencies, you must manually declare the dependencies. @@ -1997,7 +1973,7 @@ dependencies, you must manually declare the dependencies. Simultaneously, all executables and shared libraries installed by the recipe are inspected to see what shared libraries they link against. - For each shared library dependency that is found, ``PKGDATA_DIR`` is + For each shared library dependency that is found, :term:`PKGDATA_DIR` is queried to see if some package (likely from a different recipe) contains the shared library. If such a package is found, a runtime dependency is added from the package that depends on the shared @@ -2006,7 +1982,7 @@ dependencies, you must manually declare the dependencies. The automatically added runtime dependency also includes a version restriction. This version restriction specifies that at least the current version of the package that provides the shared library must - be used, as if "package (>= version)" had been added to ``RDEPENDS``. + be used, as if "package (>= version)" had been added to :term:`RDEPENDS`. This forces an upgrade of the package containing the shared library when installing the package that depends on the library, if needed. @@ -2020,14 +1996,14 @@ dependencies, you must manually declare the dependencies. pkg-config modules (``*.pc`` files) installed by the recipe are located. For each module, the package that contains the module is registered as providing the module. The resulting module-to-package - mapping is saved globally in ``PKGDATA_DIR`` by the + mapping is saved globally in :term:`PKGDATA_DIR` by the ``do_packagedata`` task. Simultaneously, all pkg-config modules installed by the recipe are inspected to see what other pkg-config modules they depend on. A module is seen as depending on another module if it contains a "Requires:" line that specifies the other module. For each module - dependency, ``PKGDATA_DIR`` is queried to see if some package + dependency, :term:`PKGDATA_DIR` is queried to see if some package contains the module. If such a package is found, a runtime dependency is added from the package that depends on the module to the package that contains the module. @@ -2067,7 +2043,7 @@ recipe in :term:`DEPENDS` through use of a ``[``\ :ref:`deptask <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` declaration, which guarantees that the required shared-library/module-to-package mapping information will be available -when needed as long as ``DEPENDS`` has been correctly set. +when needed as long as :term:`DEPENDS` has been correctly set. Fakeroot and Pseudo =================== @@ -2116,8 +2092,7 @@ accomplished using fakeroot. under fakeroot. Otherwise, the task cannot run root-only operations, and cannot see the fake file ownership and permissions set by the other task. You need to also add a dependency on - ``virtual/fakeroot-native:do_populate_sysroot``, giving the following: - :: + ``virtual/fakeroot-native:do_populate_sysroot``, giving the following:: fakeroot do_mytask () { ... diff --git a/poky/documentation/overview-manual/development-environment.rst b/poky/documentation/overview-manual/development-environment.rst index a33f89e4f..ab155dc3b 100644 --- a/poky/documentation/overview-manual/development-environment.rst +++ b/poky/documentation/overview-manual/development-environment.rst @@ -71,7 +71,7 @@ section in the Yocto Project Development Tasks Manual. If your development host is going to be a system that runs a Linux -distribution, steps still exist that you must take to prepare the system +distribution, you must still take steps to prepare the system for use with the Yocto Project. You need to be sure that the Linux distribution on the system is one that supports the Yocto Project. You also need to be sure that the correct set of host packages are installed @@ -80,8 +80,8 @@ set up a development host that runs Linux, see the ":ref:`dev-manual/start:setting up a native linux host`" section in the Yocto Project Development Tasks Manual. -Once your development host is set up to use the Yocto Project, several -methods exist for you to do work in the Yocto Project environment: +Once your development host is set up to use the Yocto Project, there +are several ways of working in the Yocto Project environment: - *Command Lines, BitBake, and Shells:* Traditional development in the Yocto Project involves using the :term:`OpenEmbedded Build System`, @@ -271,7 +271,7 @@ files that are being worked on simultaneously by more than one person. All this work is done locally on the development host before anything is pushed to a "contrib" area and examined at the maintainer's level. -A somewhat formal method exists by which developers commit changes and +There is a somewhat formal method by which developers commit changes and push them into the "contrib" area and subsequently request that the maintainer include them into an upstream branch. This process is called "submitting a patch" or "submitting a change." For information on @@ -279,9 +279,9 @@ submitting patches and changes, see the ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`" section in the Yocto Project Development Tasks Manual. -In summary, a single point of entry exists for changes into a "master" +In summary, there is a single point of entry for changes into a "master" or development branch of the Git repository, which is controlled by the -project's maintainer. And, a set of developers exist who independently +project's maintainer. A set of developers independently develop, test, and submit changes to "contrib" areas for the maintainer to examine. The maintainer then chooses which changes are going to become a permanent part of the project. @@ -430,8 +430,7 @@ local working area (also called a branch) that tracks a specific development branch from the upstream source Git repository. in other words, you can define your local Git environment to work on any development branch in the repository. To help illustrate, consider the -following example Git commands: -:: +following example Git commands:: $ cd ~ $ git clone git://git.yoctoproject.org/poky @@ -476,8 +475,7 @@ create and checkout a local working Git branch based on a tag name. When you do this, you get a snapshot of the Git repository that reflects the state of the files when the change was made associated with that tag. The most common use is to checkout a working branch that matches a -specific Yocto Project release. Here is an example: -:: +specific Yocto Project release. Here is an example:: $ cd ~ $ git clone git://git.yoctoproject.org/poky diff --git a/poky/documentation/overview-manual/intro.rst b/poky/documentation/overview-manual/intro.rst index a2afe7756..a8091771f 100644 --- a/poky/documentation/overview-manual/intro.rst +++ b/poky/documentation/overview-manual/intro.rst @@ -12,7 +12,7 @@ introduces the Yocto Project by providing concepts, software overviews, best-known-methods (BKMs), and any other high-level introductory information suitable for a new Yocto Project user. -The following list describes what you can get from this manual: +Here is what you can get from this manual: - :ref:`overview-manual/yp-intro:introducing the yocto project`\ *:* This chapter provides an introduction to the Yocto Project. You will learn diff --git a/poky/documentation/overview-manual/yp-intro.rst b/poky/documentation/overview-manual/yp-intro.rst index fca02e4ce..d20a4ab09 100644 --- a/poky/documentation/overview-manual/yp-intro.rst +++ b/poky/documentation/overview-manual/yp-intro.rst @@ -38,8 +38,7 @@ to the Yocto Project. Features -------- -The following list describes features and advantages of the Yocto -Project: +Here are features and advantages of the Yocto Project: - *Widely Adopted Across the Industry:* Many semiconductor, operating system, software, and service vendors adopt and support the Yocto @@ -137,13 +136,11 @@ Project: Challenges ---------- -The following list presents challenges you might encounter when -developing using the Yocto Project: +Here are challenges you might encounter when developing using the Yocto Project: - *Steep Learning Curve:* The Yocto Project has a steep learning curve and has many different ways to accomplish similar tasks. It can be - difficult to choose how to proceed when varying methods exist by - which to accomplish a given task. + difficult to choose between such ways. - *Understanding What Changes You Need to Make For Your Design Requires Some Research:* Beyond the simple tutorial stage, understanding what @@ -158,7 +155,7 @@ developing using the Yocto Project: workflow <overview-manual/development-environment:the yocto project development environment>` could be confusing if you are used to traditional desktop and server software development. - In a desktop development environment, mechanisms exist to easily pull + In a desktop development environment, there are mechanisms to easily pull and install new packages, which are typically pre-compiled binaries from servers accessible over the Internet. Using the Yocto Project, you must modify your configuration and rebuild to add additional @@ -251,8 +248,7 @@ accomplish this through a recipe that is a BitBake append .. note:: For general information on BSP layer structure, see the - :doc:`/bsp-guide/index` - . + :doc:`/bsp-guide/index`. The :term:`Source Directory` contains both general layers and BSP layers right out of the box. You @@ -292,8 +288,8 @@ associated with the Yocto Project. Development Tools ----------------- -The following list consists of tools that help you develop images and -applications using the Yocto Project: +Here are tools that help you develop images and applications using +the Yocto Project: - *CROPS:* `CROPS <https://github.com/crops/poky-container/>`__ is an open source, cross-platform development framework that leverages @@ -347,8 +343,8 @@ applications using the Yocto Project: Production Tools ---------------- -The following list consists of tools that help production related -activities using the Yocto Project: +Here are tools that help with production related activities using the +Yocto Project: - *Auto Upgrade Helper:* This utility when used in conjunction with the :term:`OpenEmbedded Build System` @@ -432,8 +428,8 @@ activities using the Yocto Project: require system administrator privileges. For example, file ownership or permissions might need to be defined. Pseudo is a tool that you can either use directly or through the environment variable - ``LD_PRELOAD``. Either method allows these operations to succeed as - if system administrator privileges exist even when they do not. + ``LD_PRELOAD``. Either method allows these operations to succeed + even without system administrator privileges. Thanks to Pseudo, the Yocto Project never needs root privileges to build images for your target system. @@ -444,8 +440,7 @@ activities using the Yocto Project: Open-Embedded Build System Components ------------------------------------- -The following list consists of components associated with the -:term:`OpenEmbedded Build System`: +Here are components associated with the :term:`OpenEmbedded Build System`: - *BitBake:* BitBake is a core component of the Yocto Project and is used by the OpenEmbedded build system to build images. While BitBake @@ -511,8 +506,7 @@ section. Packages for Finished Targets ----------------------------- -The following lists components associated with packages for finished -targets: +Here are components associated with packages for finished targets: - *Matchbox:* Matchbox is an Open Source, base environment for the X Window System running on non-desktop, embedded platforms such as @@ -583,8 +577,7 @@ software. This section provides an introduction to the choices or development methods you have when setting up your Build Host. Depending on your particular workflow preference and the type of operating system your -Build Host runs, several choices exist that allow you to use the Yocto -Project. +Build Host runs, you have several choices. .. note:: @@ -794,7 +787,7 @@ Some Basic Terms ================ It helps to understand some basic fundamental terms when learning the -Yocto Project. Although a list of terms exists in the ":doc:`Yocto Project +Yocto Project. Although there is a list of terms in the ":doc:`Yocto Project Terms </ref-manual/terms>`" section of the Yocto Project Reference Manual, this section provides the definitions of some terms helpful for getting started: diff --git a/poky/documentation/poky.yaml b/poky/documentation/poky.yaml index 8ccb359e0..3bfc35b6f 100644 --- a/poky/documentation/poky.yaml +++ b/poky/documentation/poky.yaml @@ -1,12 +1,12 @@ -DISTRO : "3.2.3" -DISTRO_NAME_NO_CAP : "gatesgarth" -DISTRO_NAME : "Gatesgarth" -DISTRO_NAME_NO_CAP_MINUS_ONE : "dunfell" +DISTRO : "3.3.1" +DISTRO_NAME_NO_CAP : "hardknott" +DISTRO_NAME : "Hardknott" +DISTRO_NAME_NO_CAP_MINUS_ONE : "gatesgarth" DISTRO_NAME_NO_CAP_LTS : "dunfell" -YOCTO_DOC_VERSION : "3.2.3" -YOCTO_DOC_VERSION_MINUS_ONE : "3.1.6" -DISTRO_REL_TAG : "yocto-3.2.3" -POKYVERSION : "24.0.3" +YOCTO_DOC_VERSION : "3.3.1" +YOCTO_DOC_VERSION_MINUS_ONE : "3.2.4" +DISTRO_REL_TAG : "yocto-3.3.1" +POKYVERSION : "25.0.1" YOCTO_POKY : "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;" YOCTO_DL_URL : "https://downloads.yoctoproject.org" YOCTO_AB_URL : "https://autobuilder.yoctoproject.org" @@ -19,7 +19,8 @@ FEDORA_HOST_PACKAGES_ESSENTIAL : "gawk make wget tar bzip2 gzip python3 unzip pe diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \ ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-bignum socat \ python3-pexpect findutils which file cpio python python3-pip xz python3-GitPython \ - python3-jinja2 SDL-devel xterm rpcgen mesa-libGL-devel" + python3-jinja2 SDL-devel xterm rpcgen mesa-libGL-devel perl-FindBin perl-File-Compare \ + perl-File-Copy perl-locale" OPENSUSE_HOST_PACKAGES_ESSENTIAL : "python gcc gcc-c++ git chrpath make wget python-xml \ diffstat makeinfo python-curses patch socat python3 python3-curses tar python3-pip \ python3-pexpect xz which python3-Jinja2 Mesa-libEGL1 libSDL-devel xterm rpcgen Mesa-dri-devel diff --git a/poky/documentation/profile-manual/intro.rst b/poky/documentation/profile-manual/intro.rst index 4e1008b05..9c8fa3dbf 100644 --- a/poky/documentation/profile-manual/intro.rst +++ b/poky/documentation/profile-manual/intro.rst @@ -39,12 +39,12 @@ an 'sdk' image e.g. :: $ bitbake core-image-sato-sdk or alternatively by adding 'tools-profile' to the EXTRA_IMAGE_FEATURES line in -your local.conf: :: +your local.conf:: EXTRA_IMAGE_FEATURES = "debug-tweaks tools-profile" If you use the 'tools-profile' method, you don't need to build an sdk image - -the tracing and profiling tools will be included in non-sdk images as well e.g.: :: +the tracing and profiling tools will be included in non-sdk images as well e.g.:: $ bitbake core-image-sato @@ -55,7 +55,7 @@ the tracing and profiling tools will be included in non-sdk images as well e.g.: You can prevent that by setting the :term:`INHIBIT_PACKAGE_STRIP` - variable to "1" in your ``local.conf`` when you build the image: :: + variable to "1" in your ``local.conf`` when you build the image:: INHIBIT_PACKAGE_STRIP = "1" @@ -65,11 +65,11 @@ If you've already built a stripped image, you can generate debug packages (xxx-dbg) which you can manually install as needed. To generate debug info for packages, you can add dbg-pkgs to -EXTRA_IMAGE_FEATURES in local.conf. For example: :: +EXTRA_IMAGE_FEATURES in local.conf. For example:: EXTRA_IMAGE_FEATURES = "debug-tweaks tools-profile dbg-pkgs" Additionally, in order to generate the right type of debuginfo, we also need to -set :term:`PACKAGE_DEBUG_SPLIT_STYLE` in the ``local.conf`` file: :: +set :term:`PACKAGE_DEBUG_SPLIT_STYLE` in the ``local.conf`` file:: PACKAGE_DEBUG_SPLIT_STYLE = 'debug-file-directory' diff --git a/poky/documentation/profile-manual/usage.rst b/poky/documentation/profile-manual/usage.rst index c42f5b64b..825290c3f 100644 --- a/poky/documentation/profile-manual/usage.rst +++ b/poky/documentation/profile-manual/usage.rst @@ -48,7 +48,7 @@ For this section, we'll assume you've already performed the basic setup outlined in the ":ref:`profile-manual/intro:General Setup`" section. In particular, you'll get the most mileage out of perf if you profile an -image built with the following in your ``local.conf`` file: :: +image built with the following in your ``local.conf`` file:: INHIBIT_PACKAGE_STRIP = "1" @@ -62,7 +62,7 @@ Basic Perf Usage The perf tool is pretty much self-documenting. To remind yourself of the available commands, simply type 'perf', which will show you basic usage -along with the available perf subcommands: :: +along with the available perf subcommands:: root@crownbay:~# perf @@ -110,7 +110,7 @@ applets in Yocto. :: The quickest and easiest way to get some basic overall data about what's going on for a particular workload is to profile it using 'perf stat'. 'perf stat' basically profiles using a few default counters and displays -the summed counts at the end of the run: :: +the summed counts at the end of the run:: root@crownbay:~# perf stat wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 Connecting to downloads.yoctoproject.org (140.211.169.59:80) @@ -139,7 +139,7 @@ Also, note that 'perf stat' isn't restricted to a fixed set of counters - basically any event listed in the output of 'perf list' can be tallied by 'perf stat'. For example, suppose we wanted to see a summary of all the events related to kernel memory allocation/freeing along with cache -hits and misses: :: +hits and misses:: root@crownbay:~# perf stat -e kmem:* -e cache-references -e cache-misses wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 Connecting to downloads.yoctoproject.org (140.211.169.59:80) @@ -191,7 +191,7 @@ directory. :: To see the results in a 'text-based UI' (tui), simply run 'perf report', which will read the perf.data file in the current working directory and display the results -in an interactive UI: :: +in an interactive UI:: root@crownbay:~# perf report @@ -217,7 +217,7 @@ Before we do that, however, let's try running a different profile, one which shows something a little more interesting. The only difference between the new profile and the previous one is that we'll add the -g option, which will record not just the address of a sampled function, -but the entire callchain to the sampled function as well: :: +but the entire callchain to the sampled function as well:: root@crownbay:~# perf record -g wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 Connecting to downloads.yoctoproject.org (140.211.169.59:80) @@ -293,7 +293,7 @@ busybox binary, which is actually stripped out by the Yocto build system. One way around that is to put the following in your ``local.conf`` file -when you build the image: :: +when you build the image:: INHIBIT_PACKAGE_STRIP = "1" @@ -302,26 +302,26 @@ what can we do to get perf to resolve the symbols? Basically we need to install the debuginfo for the BusyBox package. To generate the debug info for the packages in the image, we can add -``dbg-pkgs`` to :term:`EXTRA_IMAGE_FEATURES` in ``local.conf``. For example: :: +``dbg-pkgs`` to :term:`EXTRA_IMAGE_FEATURES` in ``local.conf``. For example:: EXTRA_IMAGE_FEATURES = "debug-tweaks tools-profile dbg-pkgs" Additionally, in order to generate the type of debuginfo that perf understands, we also need to set :term:`PACKAGE_DEBUG_SPLIT_STYLE` -in the ``local.conf`` file: :: +in the ``local.conf`` file:: PACKAGE_DEBUG_SPLIT_STYLE = 'debug-file-directory' Once we've done that, we can install the debuginfo for BusyBox. The debug packages once built can be found in ``build/tmp/deploy/rpm/*`` on the host system. Find the busybox-dbg-...rpm -file and copy it to the target. For example: :: +file and copy it to the target. For example:: [trz@empanada core2]$ scp /home/trz/yocto/crownbay-tracing-dbg/build/tmp/deploy/rpm/core2_32/busybox-dbg-1.20.2-r2.core2_32.rpm root@192.168.1.31: busybox-dbg-1.20.2-r2.core2_32.rpm 100% 1826KB 1.8MB/s 00:01 -Now install the debug rpm on the target: :: +Now install the debug rpm on the target:: root@crownbay:~# rpm -i busybox-dbg-1.20.2-r2.core2_32.rpm @@ -382,7 +382,7 @@ traditional tools can also make use of the expanded possibilities now available to them, and in some cases have, as mentioned previously). We can get a list of the available events that can be used to profile a -workload via 'perf list': :: +workload via 'perf list':: root@crownbay:~# perf list @@ -525,7 +525,7 @@ workload via 'perf list': :: Only a subset of these would be of interest to us when looking at this workload, so let's choose the most likely subsystems (identified by the string before the colon in the Tracepoint events) and do a 'perf stat' -run using only those wildcarded subsystems: :: +run using only those wildcarded subsystems:: root@crownbay:~# perf stat -e skb:* -e net:* -e napi:* -e sched:* -e workqueue:* -e irq:* -e syscalls:* wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 Performance counter stats for 'wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2': @@ -587,7 +587,7 @@ run using only those wildcarded subsystems: :: Let's pick one of these tracepoints -and tell perf to do a profile using it as the sampling event: :: +and tell perf to do a profile using it as the sampling event:: root@crownbay:~# perf record -g -e sched:sched_wakeup wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 @@ -644,14 +644,14 @@ individual steps that go into the higher-level behavior exposed by the coarse-grained profiling data. As a concrete example, we can trace all the events we think might be -applicable to our workload: :: +applicable to our workload:: root@crownbay:~# perf record -g -e skb:* -e net:* -e napi:* -e sched:sched_switch -e sched:sched_wakeup -e irq:* -e syscalls:sys_enter_read -e syscalls:sys_exit_read -e syscalls:sys_enter_write -e syscalls:sys_exit_write wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 We can look at the raw trace output using 'perf script' with no -arguments: :: +arguments:: root@crownbay:~# perf script @@ -735,7 +735,7 @@ two programming language bindings, one for Python and one for Perl. Now that we have the trace data in perf.data, we can use 'perf script -g' to generate a skeleton script with handlers for the read/write -entry/exit events we recorded: :: +entry/exit events we recorded:: root@crownbay:~# perf script -g python generated Python script: perf-script.py @@ -755,7 +755,7 @@ with its parameters. For example: print "skbaddr=%u, len=%u, name=%s\n" % (skbaddr, len, name), We can run that script directly to print all of the events contained in the -perf.data file: :: +perf.data file:: root@crownbay:~# perf script -s perf-script.py @@ -833,7 +833,7 @@ result of all the per-event tallies. For that, we use the special for event_name, count in counts.iteritems(): print "%-40s %10s\n" % (event_name, count) -The end result is a summary of all the events recorded in the trace: :: +The end result is a summary of all the events recorded in the trace:: skb__skb_copy_datagram_iovec 13148 irq__softirq_entry 4796 @@ -877,13 +877,13 @@ To do system-wide profiling or tracing, you typically use the -a flag to 'perf record'. To demonstrate this, open up one window and start the profile using the --a flag (press Ctrl-C to stop tracing): :: +-a flag (press Ctrl-C to stop tracing):: root@crownbay:~# perf record -g -a ^C[ perf record: Woken up 6 times to write data ] [ perf record: Captured and wrote 1.400 MB perf.data (~61172 samples) ] -In another window, run the wget test: :: +In another window, run the wget test:: root@crownbay:~# wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2 Connecting to downloads.yoctoproject.org (140.211.169.59:80) @@ -903,7 +903,7 @@ unresolvable symbols in the expanded Xorg callchain). Note also that we have both kernel and userspace entries in the above snapshot. We can also tell perf to focus on userspace but providing a modifier, in this case 'u', to the 'cycles' hardware counter when we -record a profile: :: +record a profile:: root@crownbay:~# perf record -g -a -e cycles:u ^C[ perf record: Woken up 2 times to write data ] @@ -923,13 +923,13 @@ the entries associated with the libc-xxx.so DSO. :align: center We can also use the system-wide -a switch to do system-wide tracing. -Here we'll trace a couple of scheduler events: :: +Here we'll trace a couple of scheduler events:: root@crownbay:~# perf record -a -e sched:sched_switch -e sched:sched_wakeup ^C[ perf record: Woken up 38 times to write data ] [ perf record: Captured and wrote 9.780 MB perf.data (~427299 samples) ] -We can look at the raw output using 'perf script' with no arguments: :: +We can look at the raw output using 'perf script' with no arguments:: root@crownbay:~# perf script @@ -952,7 +952,7 @@ do with what we're interested in, namely events that schedule 'perf' itself in and out or that wake perf up. We can get rid of those by using the '--filter' option - for each event we specify using -e, we can add a --filter after that to filter out trace events that contain fields with -specific values: :: +specific values:: root@crownbay:~# perf record -a -e sched:sched_switch --filter 'next_comm != perf && prev_comm != perf' -e sched:sched_wakeup --filter 'comm != perf' ^C[ perf record: Woken up 38 times to write data ] @@ -1017,7 +1017,7 @@ perf isn't restricted to the fixed set of static tracepoints listed by 'perf list'. Users can also add their own 'dynamic' tracepoints anywhere in the kernel. For instance, suppose we want to define our own tracepoint on do_fork(). We can do that using the 'perf probe' perf -subcommand: :: +subcommand:: root@crownbay:~# perf probe do_fork Added new event: @@ -1031,7 +1031,7 @@ Adding a new tracepoint via 'perf probe' results in an event with all the expected files and format in /sys/kernel/debug/tracing/events, just the same as for static tracepoints (as discussed in more detail in the trace events subsystem -section: :: +section:: root@crownbay:/sys/kernel/debug/tracing/events/probe/do_fork# ls -al drwxr-xr-x 2 root root 0 Oct 28 11:42 . @@ -1056,7 +1056,7 @@ section: :: print fmt: "(%lx)", REC->__probe_ip We can list all dynamic tracepoints currently in -existence: :: +existence:: root@crownbay:~# perf probe -l probe:do_fork (on do_fork) @@ -1064,13 +1064,13 @@ existence: :: Let's record system-wide ('sleep 30' is a trick for recording system-wide but basically do nothing and then wake -up after 30 seconds): :: +up after 30 seconds):: root@crownbay:~# perf record -g -a -e probe:do_fork sleep 30 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.087 MB perf.data (~3812 samples) ] -Using 'perf script' we can see each do_fork event that fired: :: +Using 'perf script' we can see each do_fork event that fired:: root@crownbay:~# perf script @@ -1163,7 +1163,7 @@ addressed by a Yocto bug: :yocto_bugs:`Bug 3388 - perf: enable man pages for basic 'help' functionality </show_bug.cgi?id=3388>`. The man pages in text form, along with some other files, such as a set -of examples, can be found in the 'perf' directory of the kernel tree: :: +of examples, can be found in the 'perf' directory of the kernel tree:: tools/perf/Documentation @@ -1197,7 +1197,7 @@ Basic ftrace usage 'ftrace' essentially refers to everything included in the /tracing directory of the mounted debugfs filesystem (Yocto follows the standard convention and mounts it at /sys/kernel/debug). Here's a listing of all -the files found in /sys/kernel/debug/tracing on a Yocto system: :: +the files found in /sys/kernel/debug/tracing on a Yocto system:: root@sugarbay:/sys/kernel/debug/tracing# ls README kprobe_events trace @@ -1222,12 +1222,12 @@ the ftrace documentation. We'll start by looking at some of the available built-in tracers. -cat'ing the 'available_tracers' file lists the set of available tracers: :: +cat'ing the 'available_tracers' file lists the set of available tracers:: root@sugarbay:/sys/kernel/debug/tracing# cat available_tracers blk function_graph function nop -The 'current_tracer' file contains the tracer currently in effect: :: +The 'current_tracer' file contains the tracer currently in effect:: root@sugarbay:/sys/kernel/debug/tracing# cat current_tracer nop @@ -1237,7 +1237,7 @@ The above listing of current_tracer shows that the there's actually no tracer currently in effect. echo'ing one of the available_tracers into current_tracer makes the -specified tracer the current tracer: :: +specified tracer the current tracer:: root@sugarbay:/sys/kernel/debug/tracing# echo function > current_tracer root@sugarbay:/sys/kernel/debug/tracing# cat current_tracer @@ -1247,7 +1247,7 @@ The above sets the current tracer to be the 'function tracer'. This tracer traces every function call in the kernel and makes it available as the contents of the 'trace' file. Reading the 'trace' file lists the currently buffered function calls that have been traced by the function -tracer: :: +tracer:: root@sugarbay:/sys/kernel/debug/tracing# cat trace | less @@ -1306,7 +1306,7 @@ great way to learn about how the kernel code works in a dynamic sense. It is a little more difficult to follow the call chains than it needs to be - luckily there's a variant of the function tracer that displays the -callchains explicitly, called the 'function_graph' tracer: :: +callchains explicitly, called the 'function_graph' tracer:: root@sugarbay:/sys/kernel/debug/tracing# echo function_graph > current_tracer root@sugarbay:/sys/kernel/debug/tracing# cat trace | less @@ -1442,7 +1442,7 @@ One especially important directory contained within the /sys/kernel/debug/tracing directory is the 'events' subdirectory, which contains representations of every tracepoint in the system. Listing out the contents of the 'events' subdirectory, we see mainly another set of -subdirectories: :: +subdirectories:: root@sugarbay:/sys/kernel/debug/tracing# cd events root@sugarbay:/sys/kernel/debug/tracing/events# ls -al @@ -1491,7 +1491,7 @@ subdirectories: :: Each one of these subdirectories corresponds to a 'subsystem' and contains yet again more subdirectories, each one of those finally corresponding to a tracepoint. For example, -here are the contents of the 'kmem' subsystem: :: +here are the contents of the 'kmem' subsystem:: root@sugarbay:/sys/kernel/debug/tracing/events# cd kmem root@sugarbay:/sys/kernel/debug/tracing/events/kmem# ls -al @@ -1513,7 +1513,7 @@ here are the contents of the 'kmem' subsystem: :: drwxr-xr-x 2 root root 0 Nov 14 23:19 mm_page_pcpu_drain Let's see what's inside the subdirectory for a -specific tracepoint, in this case the one for kmalloc: :: +specific tracepoint, in this case the one for kmalloc:: root@sugarbay:/sys/kernel/debug/tracing/events/kmem# cd kmalloc root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# ls -al @@ -1529,7 +1529,7 @@ tracepoint describes the event in memory, which is used by the various tracing tools that now make use of these tracepoint to parse the event and make sense of it, along with a 'print fmt' field that allows tools like ftrace to display the event as text. Here's what the format of the -kmalloc event looks like: :: +kmalloc event looks like:: root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# cat format name: kmalloc @@ -1568,20 +1568,20 @@ The 'enable' file in the tracepoint directory is what allows the user (or tools such as trace-cmd) to actually turn the tracepoint on and off. When enabled, the corresponding tracepoint will start appearing in the ftrace 'trace' file -described previously. For example, this turns on the kmalloc tracepoint: :: +described previously. For example, this turns on the kmalloc tracepoint:: root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# echo 1 > enable At the moment, we're not interested in the function tracer or some other tracer that might be in effect, so we first turn it off, but if we do that, we still need to turn tracing on in order to see the -events in the output buffer: :: +events in the output buffer:: root@sugarbay:/sys/kernel/debug/tracing# echo nop > current_tracer root@sugarbay:/sys/kernel/debug/tracing# echo 1 > tracing_on Now, if we look at the 'trace' file, we see nothing -but the kmalloc events we just turned on: :: +but the kmalloc events we just turned on:: root@sugarbay:/sys/kernel/debug/tracing# cat trace | less # tracer: nop @@ -1627,7 +1627,7 @@ but the kmalloc events we just turned on: :: <idle>-0 [000] ..s3 18156.400660: kmalloc: call_site=ffffffff81619b36 ptr=ffff88006d554800 bytes_req=512 bytes_alloc=512 gfp_flags=GFP_ATOMIC matchbox-termin-1361 [001] ...1 18156.552800: kmalloc: call_site=ffffffff81614050 ptr=ffff88006db34800 bytes_req=576 bytes_alloc=1024 gfp_flags=GFP_KERNEL|GFP_REPEAT -To again disable the kmalloc event, we need to send 0 to the enable file: :: +To again disable the kmalloc event, we need to send 0 to the enable file:: root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# echo 0 > enable @@ -1669,12 +1669,12 @@ a per-CPU graphical display. It directly uses 'trace-cmd' as the plumbing that accomplishes all that underneath the covers (and actually displays the trace-cmd command it uses, as we'll see). -To start a trace using kernelshark, first start kernelshark: :: +To start a trace using kernelshark, first start kernelshark:: root@sugarbay:~# kernelshark Then bring up the 'Capture' dialog by -choosing from the kernelshark menu: :: +choosing from the kernelshark menu:: Capture | Record @@ -1724,12 +1724,12 @@ ftrace Documentation -------------------- The documentation for ftrace can be found in the kernel Documentation -directory: :: +directory:: Documentation/trace/ftrace.txt The documentation for the trace event subsystem can also be found in the kernel -Documentation directory: :: +Documentation directory:: Documentation/trace/events.txt @@ -1784,7 +1784,7 @@ which it extracts from the open syscall's argstr. Normally, to execute this probe, you'd simply install systemtap on the system you want to probe, and directly run the probe on that system e.g. assuming the name of the -file containing the above text is trace_open.stp: :: +file containing the above text is trace_open.stp:: # stap trace_open.stp @@ -1825,7 +1825,7 @@ target, with arguments if necessary. In order to do this from a remote host, however, you need to have access to the build for the image you booted. The 'crosstap' script provides details on how to do this if you run the script on the host without -having done a build: :: +having done a build:: $ crosstap root@192.168.1.88 trace_open.stp @@ -1885,7 +1885,7 @@ Running a Script on a Target ---------------------------- Once you've done that, you should be able to run a systemtap script on -the target: :: +the target:: $ cd /path/to/yocto $ source oe-init-build-env @@ -1903,17 +1903,17 @@ the target: :: You can also run generated QEMU images with a command like 'runqemu qemux86-64' Once you've done that, you can cd to whatever -directory contains your scripts and use 'crosstap' to run the script: :: +directory contains your scripts and use 'crosstap' to run the script:: $ cd /path/to/my/systemap/script $ crosstap root@192.168.7.2 trace_open.stp -If you get an error connecting to the target e.g.: :: +If you get an error connecting to the target e.g.:: $ crosstap root@192.168.7.2 trace_open.stp error establishing ssh connection on remote 'root@192.168.7.2' -Try ssh'ing to the target and see what happens: :: +Try ssh'ing to the target and see what happens:: $ ssh root@192.168.7.2 @@ -2038,7 +2038,7 @@ tracing. Collecting and viewing a trace on the target (inside a shell) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -First, from the host, ssh to the target: :: +First, from the host, ssh to the target:: $ ssh -l root 192.168.1.47 The authenticity of host '192.168.1.47 (192.168.1.47)' can't be established. @@ -2047,30 +2047,30 @@ First, from the host, ssh to the target: :: Warning: Permanently added '192.168.1.47' (RSA) to the list of known hosts. root@192.168.1.47's password: -Once on the target, use these steps to create a trace: :: +Once on the target, use these steps to create a trace:: root@crownbay:~# lttng create Spawning a session daemon Session auto-20121015-232120 created. Traces will be written in /home/root/lttng-traces/auto-20121015-232120 -Enable the events you want to trace (in this case all kernel events): :: +Enable the events you want to trace (in this case all kernel events):: root@crownbay:~# lttng enable-event --kernel --all All kernel events are enabled in channel channel0 -Start the trace: :: +Start the trace:: root@crownbay:~# lttng start Tracing started for session auto-20121015-232120 And then stop the trace after awhile or after running a particular workload that -you want to trace: :: +you want to trace:: root@crownbay:~# lttng stop Tracing stopped for session auto-20121015-232120 -You can now view the trace in text form on the target: :: +You can now view the trace in text form on the target:: root@crownbay:~# lttng view [23:21:56.989270399] (+?.?????????) sys_geteuid: { 1 }, { } @@ -2116,14 +2116,14 @@ You can now view the trace in text form on the target: :: You can now safely destroy the trace session (note that this doesn't delete the trace - it's still there in -~/lttng-traces): :: +~/lttng-traces):: root@crownbay:~# lttng destroy Session auto-20121015-232120 destroyed at /home/root Note that the trace is saved in a directory of the same name as returned by 'lttng create', under the ~/lttng-traces directory (note that you can change this by -supplying your own name to 'lttng create'): :: +supplying your own name to 'lttng create'):: root@crownbay:~# ls -al ~/lttng-traces drwxrwx--- 3 root root 1024 Oct 15 23:21 . @@ -2139,18 +2139,18 @@ generated by the lttng-ust build. The 'hello' test program isn't installed on the rootfs by the lttng-ust build, so we need to copy it over manually. First cd into the build -directory that contains the hello executable: :: +directory that contains the hello executable:: $ cd build/tmp/work/core2_32-poky-linux/lttng-ust/2.0.5-r0/git/tests/hello/.libs -Copy that over to the target machine: :: +Copy that over to the target machine:: $ scp hello root@192.168.1.20: You now have the instrumented lttng 'hello world' test program on the target, ready to test. -First, from the host, ssh to the target: :: +First, from the host, ssh to the target:: $ ssh -l root 192.168.1.47 The authenticity of host '192.168.1.47 (192.168.1.47)' can't be established. @@ -2159,35 +2159,35 @@ First, from the host, ssh to the target: :: Warning: Permanently added '192.168.1.47' (RSA) to the list of known hosts. root@192.168.1.47's password: -Once on the target, use these steps to create a trace: :: +Once on the target, use these steps to create a trace:: root@crownbay:~# lttng create Session auto-20190303-021943 created. Traces will be written in /home/root/lttng-traces/auto-20190303-021943 -Enable the events you want to trace (in this case all userspace events): :: +Enable the events you want to trace (in this case all userspace events):: root@crownbay:~# lttng enable-event --userspace --all All UST events are enabled in channel channel0 -Start the trace: :: +Start the trace:: root@crownbay:~# lttng start Tracing started for session auto-20190303-021943 -Run the instrumented hello world program: :: +Run the instrumented hello world program:: root@crownbay:~# ./hello Hello, World! Tracing... done. And then stop the trace after awhile or after running a particular workload -that you want to trace: :: +that you want to trace:: root@crownbay:~# lttng stop Tracing stopped for session auto-20190303-021943 -You can now view the trace in text form on the target: :: +You can now view the trace in text form on the target:: root@crownbay:~# lttng view [02:31:14.906146544] (+?.?????????) hello:1424 ust_tests_hello:tptest: { cpu_id = 1 }, { intfield = 0, intfield2 = 0x0, longfield = 0, netintfield = 0, netintfieldhex = 0x0, arrfield1 = [ [0] = 1, [1] = 2, [2] = 3 ], arrfield2 = "test", _seqfield1_length = 4, seqfield1 = [ [0] = 116, [1] = 101, [2] = 115, [3] = 116 ], _seqfield2_length = 4, seqfield2 = "test", stringfield = "test", floatfield = 2222, doublefield = 2, boolfield = 1 } @@ -2199,7 +2199,7 @@ You can now view the trace in text form on the target: :: . You can now safely destroy the trace session (note that this doesn't delete the -trace - it's still there in ~/lttng-traces): :: +trace - it's still there in ~/lttng-traces):: root@crownbay:~# lttng destroy Session auto-20190303-021943 destroyed at /home/root @@ -2244,7 +2244,7 @@ Basic blktrace Usage -------------------- To record a trace, simply run the 'blktrace' command, giving it the name -of the block device you want to trace activity on: :: +of the block device you want to trace activity on:: root@crownbay:~# blktrace /dev/sdc @@ -2265,7 +2265,7 @@ dumps them to userspace for blkparse to merge and sort later). :: Total: 8660 events (dropped 0), 406 KiB data If you examine the files saved to disk, you see multiple files, one per CPU and -with the device name as the first part of the filename: :: +with the device name as the first part of the filename:: root@crownbay:~# ls -al drwxr-xr-x 6 root root 1024 Oct 27 22:39 . @@ -2275,7 +2275,7 @@ with the device name as the first part of the filename: :: To view the trace events, simply invoke 'blkparse' in the directory containing the trace files, giving it the device name that forms the -first part of the filenames: :: +first part of the filenames:: root@crownbay:~# blkparse sdc @@ -2373,7 +2373,7 @@ Live Mode blktrace and blkparse are designed from the ground up to be able to operate together in a 'pipe mode' where the stdout of blktrace can be -fed directly into the stdin of blkparse: :: +fed directly into the stdin of blkparse:: root@crownbay:~# blktrace /dev/sdc -o - | blkparse -i - @@ -2386,7 +2386,7 @@ identify and capture conditions of interest. There's actually another blktrace command that implements the above pipeline as a single command, so the user doesn't have to bother typing -in the above command sequence: :: +in the above command sequence:: root@crownbay:~# btrace /dev/sdc @@ -2401,19 +2401,19 @@ the traced device at all by providing native support for sending all trace data over the network. To have blktrace operate in this mode, start blktrace on the target -system being traced with the -l option, along with the device to trace: :: +system being traced with the -l option, along with the device to trace:: root@crownbay:~# blktrace -l /dev/sdc server: waiting for connections... On the host system, use the -h option to connect to the target system, -also passing it the device to trace: :: +also passing it the device to trace:: $ blktrace -d /dev/sdc -h 192.168.1.43 blktrace: connecting to 192.168.1.43 blktrace: connected! -On the target system, you should see this: :: +On the target system, you should see this:: server: connection from 192.168.1.43 @@ -2424,7 +2424,7 @@ In another shell, execute a workload you want to trace. :: linux-2.6.19.2.tar.b 100% \|*******************************\| 41727k 0:00:00 ETA When it's done, do a Ctrl-C on the host system to stop the -trace: :: +trace:: ^C=== sdc === CPU 0: 7691 events, 361 KiB data @@ -2432,7 +2432,7 @@ trace: :: Total: 11800 events (dropped 0), 554 KiB data On the target system, you should also see a trace summary for the trace -just ended: :: +just ended:: server: end of run for 192.168.1.43:sdc === sdc === @@ -2441,20 +2441,20 @@ just ended: :: Total: 11800 events (dropped 0), 554 KiB data The blktrace instance on the host will -save the target output inside a hostname-timestamp directory: :: +save the target output inside a hostname-timestamp directory:: $ ls -al drwxr-xr-x 10 root root 1024 Oct 28 02:40 . drwxr-sr-x 4 root root 1024 Oct 26 18:24 .. drwxr-xr-x 2 root root 1024 Oct 28 02:40 192.168.1.43-2012-10-28-02:40:56 -cd into that directory to see the output files: :: +cd into that directory to see the output files:: $ ls -l -rw-r--r-- 1 root root 369193 Oct 28 02:44 sdc.blktrace.0 -rw-r--r-- 1 root root 197278 Oct 28 02:44 sdc.blktrace.1 -And run blkparse on the host system using the device name: :: +And run blkparse on the host system using the device name:: $ blkparse sdc @@ -2517,25 +2517,25 @@ userspace tools. To enable tracing for a given device, use /sys/block/xxx/trace/enable, where xxx is the device name. This for example enables tracing for -/dev/sdc: :: +/dev/sdc:: root@crownbay:/sys/kernel/debug/tracing# echo 1 > /sys/block/sdc/trace/enable Once you've selected the device(s) you want -to trace, selecting the 'blk' tracer will turn the blk tracer on: :: +to trace, selecting the 'blk' tracer will turn the blk tracer on:: root@crownbay:/sys/kernel/debug/tracing# cat available_tracers blk function_graph function nop root@crownbay:/sys/kernel/debug/tracing# echo blk > current_tracer -Execute the workload you're interested in: :: +Execute the workload you're interested in:: root@crownbay:/sys/kernel/debug/tracing# cat /media/sdc/testfile.txt And look at the output (note here that we're using 'trace_pipe' instead of trace to capture this trace - this allows us to wait around on the pipe -for data to appear): :: +for data to appear):: root@crownbay:/sys/kernel/debug/tracing# cat trace_pipe cat-3587 [001] d..1 3023.276361: 8,32 Q R 1699848 + 8 [cat] @@ -2554,7 +2554,7 @@ for data to appear): :: cat-3587 [001] d..1 3023.276497: 8,32 m N cfq3587 activate rq, drv=1 cat-3587 [001] d..2 3023.276500: 8,32 D R 1699848 + 8 [cat] -And this turns off tracing for the specified device: :: +And this turns off tracing for the specified device:: root@crownbay:/sys/kernel/debug/tracing# echo 0 > /sys/block/sdc/trace/enable @@ -2572,6 +2572,6 @@ section can be found here: The above manpages, along with manpages for the other blktrace utilities (btt, blkiomon, etc) can be found in the /doc directory of the blktrace -tools git repo: :: +tools git repo:: $ git clone git://git.kernel.dk/blktrace.git diff --git a/poky/documentation/ref-manual/classes.rst b/poky/documentation/ref-manual/classes.rst index 52a50faf6..09878c480 100644 --- a/poky/documentation/ref-manual/classes.rst +++ b/poky/documentation/ref-manual/classes.rst @@ -50,7 +50,7 @@ splitting out of debug symbols during packaging). ``do_package_write_*`` tasks to have different signatures for the machines with different tunings. Additionally, unnecessary rebuilds occur every time an image for a - different ``MACHINE`` is built even when the recipe never changes. + different :term:`MACHINE` is built even when the recipe never changes. By default, all recipes inherit the :ref:`base <ref-classes-base>` and :ref:`package <ref-classes-package>` classes, which enable @@ -110,7 +110,7 @@ It's useful to have some idea of how the tasks defined by the - :ref:`ref-tasks-configure` - Regenerates the configure script (using ``autoreconf``) and then launches it with a standard set of arguments used during cross-compilation. You can pass - additional parameters to ``configure`` through the ``EXTRA_OECONF`` + additional parameters to ``configure`` through the :term:`EXTRA_OECONF` or :term:`PACKAGECONFIG_CONFARGS` variables. @@ -168,8 +168,7 @@ example use for this class. 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 - ``S``: - :: + :term:`S`:: SRC_URI = "git://example.com/downloads/somepackage.rpm;subpath=${BP}" @@ -221,8 +220,7 @@ each recipe you wish to blacklist. Specify the :term:`PN` value as a variable flag (varflag) and provide a reason, which is reported, if the package is requested to be built as the value. For example, if you want to blacklist a recipe called "exoticware", you add -the following to your ``local.conf`` or distribution configuration: -:: +the following to your ``local.conf`` or distribution configuration:: INHERIT += "blacklist" PNBLACKLIST[exoticware] = "Not supported by our organization." @@ -258,7 +256,7 @@ Collecting build statistics is enabled by default through the :term:`USER_CLASSES` variable from your ``local.conf`` file. Consequently, you do not have to do anything to enable the class. However, if you want to disable the class, simply -remove "buildstats" from the ``USER_CLASSES`` list. +remove "buildstats" from the :term:`USER_CLASSES` list. .. _ref-classes-buildstats-summary: @@ -291,21 +289,6 @@ is used during the build process for ``nativesdk``, ``cross``, and ``cross-canadian`` recipes to change ``RPATH`` records within binaries in order to make them relocatable. -.. _ref-classes-clutter: - -``clutter.bbclass`` -=================== - -The ``clutter`` class consolidates the major and minor version naming -and other common items used by Clutter and related recipes. - -.. note:: - - Unlike some other classes related to specific libraries, recipes - building other software that uses Clutter do not need to inherit this - class unless they use the same recipe versioning scheme that the - Clutter and related recipes do. - .. _ref-classes-cmake: ``cmake.bbclass`` @@ -450,7 +433,7 @@ deployed to :term:`DEPLOYDIR`, and use ``addtask`` to add the task at the appropriate place, which is usually after :ref:`ref-tasks-compile` or :ref:`ref-tasks-install`. The class then takes care of -staging the files from ``DEPLOYDIR`` to ``DEPLOY_DIR_IMAGE``. +staging the files from :term:`DEPLOYDIR` to :term:`DEPLOY_DIR_IMAGE`. .. _ref-classes-devshell: @@ -470,8 +453,7 @@ information about using ``devshell``. The ``devupstream`` class uses :term:`BBCLASSEXTEND` to add a variant of the recipe that fetches from an alternative URI (e.g. Git) instead of a -tarball. Following is an example: -:: +tarball. Following is an example:: BBCLASSEXTEND = "devupstream:target" SRC_URI_class-devupstream = "git://git.example.com/example" @@ -481,8 +463,7 @@ Adding the above statements to your recipe creates a variant that has :term:`DEFAULT_PREFERENCE` set to "-1". Consequently, you need to select the variant of the recipe to use it. Any development-specific adjustments can be done by using the -``class-devupstream`` override. Here is an example: -:: +``class-devupstream`` override. Here is an example:: DEPENDS_append_class-devupstream = " gperf-native" do_configure_prepend_class-devupstream() { @@ -493,7 +474,7 @@ The class currently only supports creating a development variant of the target recipe, not ``native`` or ``nativesdk`` variants. -The ``BBCLASSEXTEND`` syntax (i.e. ``devupstream:target``) provides +The :term:`BBCLASSEXTEND` syntax (i.e. ``devupstream:target``) provides support for ``native`` and ``nativesdk`` variants. Consequently, this functionality can be added in a future release. @@ -538,14 +519,13 @@ and to build it, respectively. When your recipe inherits the ``externalsrc`` class, you use the :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD` variables to -ultimately define ``S`` and ``B``. +ultimately define :term:`S` and :term:`B`. By default, this class expects the source code to support recipe builds that use the :term:`B` variable to point to the directory in which the OpenEmbedded build system places the generated objects built -from the recipes. By default, the ``B`` directory is set to the -following, which is separate from the source directory (``S``): -:: +from the recipes. By default, the :term:`B` directory is set to the +following, which is separate from the source directory (:term:`S`):: ${WORKDIR}/${BPN}/{PV}/ @@ -581,8 +561,7 @@ be performed using the useradd class to add user and group configuration to a specific recipe. -Here is an example that uses this class in an image recipe: -:: +Here is an example that uses this class in an image recipe:: inherit extrausers EXTRA_USERS_PARAMS = "\ @@ -595,8 +574,7 @@ Here is an example that uses this class in an image recipe: " Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns -passwords: -:: +passwords:: inherit extrausers EXTRA_USERS_PARAMS = "\ @@ -604,8 +582,7 @@ passwords: useradd -P tester01 tester-sue; \ " -Finally, here is an example that sets the root password to "1876*18": -:: +Finally, here is an example that sets the root password to "1876*18":: inherit extrausers EXTRA_USERS_PARAMS = "\ @@ -712,8 +689,8 @@ introspection. This functionality is only enabled if the .. note:: This functionality is backfilled by default and, if not applicable, - should be disabled through ``DISTRO_FEATURES_BACKFILL_CONSIDERED`` or - ``MACHINE_FEATURES_BACKFILL_CONSIDERED``, respectively. + should be disabled through :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` or + :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`, respectively. .. _ref-classes-grub-efi: @@ -861,14 +838,13 @@ using an empty :term:`PARALLEL_MAKE` variable. Inheriting the ``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 ``SSTATE_MIRRORS``, then all developers and the build +reuse sstate from :term:`SSTATE_MIRRORS`, then all developers and the build system need to either inherit the ``icecc`` class or nobody should. At the distribution level, you can inherit the ``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: -:: +:term:`ICECC_DISABLED` variable to "1" as follows:: INHERIT_DISTRO_append = " icecc" ICECC_DISABLED ??= "1" @@ -876,8 +852,7 @@ inheriting the class, you can then disable the feature by setting the 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: -:: +individually as follows in your ``local.conf`` file:: ICECC_DISABLED = "" @@ -891,10 +866,10 @@ First, the root filesystem is created from packages using one of the ``rootfs*.bbclass`` files (depending on the package format used) and then one or more image files are created. -- The ``IMAGE_FSTYPES`` variable controls the types of images to +- The :term:`IMAGE_FSTYPES` variable controls the types of images to generate. -- The ``IMAGE_INSTALL`` variable controls the list of packages to +- The :term:`IMAGE_INSTALL` variable controls the list of packages to install into the image. For information on customizing images, see the @@ -925,8 +900,7 @@ types. By default, the :ref:`image <ref-classes-image>` class automatically enables the ``image_types`` class. The ``image`` class uses the -``IMGCLASSES`` variable as follows: -:: +``IMGCLASSES`` variable as follows:: IMGCLASSES = "rootfs_${IMAGE_PKGTYPE} image_types ${IMAGE_CLASSES}" IMGCLASSES += "${@['populate_sdk_base', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}" @@ -942,7 +916,7 @@ The ``image_types`` class also handles conversion and compression of images. .. note:: To build a VMware VMDK image, you need to add "wic.vmdk" to - ``IMAGE_FSTYPES``. This would also be similar for Virtual Box Virtual Disk + :term:`IMAGE_FSTYPES`. This would also be similar for Virtual Box Virtual Disk Image ("vdi") and QEMU Copy On Write Version 2 ("qcow2") images. .. _ref-classes-image-live: @@ -968,8 +942,7 @@ during the :ref:`ref-tasks-rootfs` task, which optimizes the size of libraries contained in the image. By default, the class is enabled in the ``local.conf.template`` using -the :term:`USER_CLASSES` variable as follows: -:: +the :term:`USER_CLASSES` variable as follows:: USER_CLASSES ?= "buildstats image-mklibs image-prelink" @@ -984,8 +957,7 @@ 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: -:: +the :term:`USER_CLASSES` variable as follows:: USER_CLASSES ?= "buildstats image-mklibs image-prelink" @@ -1014,16 +986,15 @@ configuration). However, to skip one or more checks in recipes, you should use :term:`INSANE_SKIP`. For example, to skip the check for symbolic link ``.so`` files in the main package of a recipe, add the following to the recipe. You need to realize that the -package name override, in this example ``${PN}``, must be used: -:: +package name override, in this example ``${PN}``, must be used:: INSANE_SKIP_${PN} += "dev-so" Please keep in mind that the QA checks -exist in order to detect real or potential problems in the packaged +are meant to detect real or potential problems in the packaged output. So exercise caution when disabling these checks. -The following list shows the tests you can list with the ``WARN_QA`` and +Here are the tests you can list with the :term:`WARN_QA` and ``ERROR_QA`` variables: - ``already-stripped:`` Checks that produced binaries have not @@ -1099,8 +1070,8 @@ The following list shows the tests you can list with the ``WARN_QA`` and - ``dev-so:`` Checks that the ``.so`` symbolic links are in the ``-dev`` package and not in any of the other packages. In general, these symlinks are only useful for development purposes. Thus, the - ``-dev`` package is the correct location for them. Some very rare - cases do exist for dynamically loaded modules where these symlinks + ``-dev`` package is the correct location for them. In very rare + cases, such as dynamically loaded modules, these symlinks are needed instead in the main package. - ``file-rdeps:`` Checks that file-level dependencies identified by @@ -1152,18 +1123,17 @@ The following list shows the tests you can list with the ``WARN_QA`` and - ``invalid-packageconfig:`` Checks that no undefined features are being added to :term:`PACKAGECONFIG`. For - example, any name "foo" for which the following form does not exist: - :: + example, any name "foo" for which the following form does not exist:: PACKAGECONFIG[foo] = "..." -- ``la:`` Checks ``.la`` files for any ``TMPDIR`` paths. Any ``.la`` +- ``la:`` Checks ``.la`` files for any :term:`TMPDIR` paths. Any ``.la`` file containing these paths is incorrect since ``libtool`` adds the correct sysroot prefix when using the files automatically itself. - ``ldflags:`` Ensures that the binaries were linked with the :term:`LDFLAGS` options provided by the build system. - If this test fails, check that the ``LDFLAGS`` variable is being + If this test fails, check that the :term:`LDFLAGS` variable is being passed to the linker command. - ``libdir:`` Checks for libraries being installed into incorrect @@ -1203,7 +1173,7 @@ The following list shows the tests you can list with the ``WARN_QA`` and invalid characters (i.e. characters other than 0-9, a-z, ., +, and -). -- ``pkgv-undefined:`` Checks to see if the ``PKGV`` variable is +- ``pkgv-undefined:`` Checks to see if the :term:`PKGV` variable is undefined during :ref:`ref-tasks-package`. - ``pkgvarcheck:`` Checks through the variables @@ -1223,8 +1193,8 @@ The following list shows the tests you can list with the ``WARN_QA`` and - ``pn-overrides:`` Checks that a recipe does not have a name (:term:`PN`) value that appears in :term:`OVERRIDES`. If a recipe is named such that - its ``PN`` value matches something already in ``OVERRIDES`` (e.g. - ``PN`` happens to be the same as :term:`MACHINE` or + its :term:`PN` value matches something already in :term:`OVERRIDES` (e.g. + :term:`PN` happens to be the same as :term:`MACHINE` or :term:`DISTRO`), it can have unexpected consequences. For example, assignments such as ``FILES_${PN} = "xyz"`` effectively turn into ``FILES = "xyz"``. @@ -1275,8 +1245,8 @@ The following list shows the tests you can list with the ``WARN_QA`` and .. note:: - If you are not using runtime package management on your target - system, then you do not need to worry about this situation. + This is only relevant when you are using runtime package management + on your target system. - ``xorg-driver-abi:`` Checks that all packages containing Xorg drivers have ABI dependencies. The ``xserver-xorg`` recipe provides @@ -1636,8 +1606,7 @@ a couple different ways: .. note:: When creating a recipe this way, the recipe name must follow this - naming convention: - :: + naming convention:: myrecipe-native.bb @@ -1645,8 +1614,7 @@ a couple different ways: Not using this naming convention can lead to subtle problems caused by existing code that depends on that naming convention. -- Create or modify a target recipe that contains the following: - :: +- Create or modify a target recipe that contains the following:: BBCLASSEXTEND = "native" @@ -1677,8 +1645,7 @@ couple different ways: inherit statement in the recipe after all other inherit statements so that the ``nativesdk`` class is inherited last. -- Create a ``nativesdk`` variant of any recipe by adding the following: - :: +- Create a ``nativesdk`` variant of any recipe by adding the following:: BBCLASSEXTEND = "nativesdk" @@ -1689,13 +1656,12 @@ couple different ways: .. note:: - When creating a recipe, you must follow this naming convention: - :: + When creating a recipe, you must follow this naming convention:: nativesdk-myrecipe.bb - Not doing so can lead to subtle problems because code exists that + Not doing so can lead to subtle problems because there is code that depends on the naming convention. Although applied differently, the ``nativesdk`` class is used with both @@ -1733,10 +1699,10 @@ section in the Yocto Project Development Tasks Manual. ``oelint.bbclass`` ================== -The ``oelint`` class is an obsolete lint checking tool that exists in +The ``oelint`` class is an obsolete lint checking tool available in ``meta/classes`` in the :term:`Source Directory`. -A number of classes exist that could be generally useful in OE-Core but +There are some classes that could be generally useful in OE-Core but are never actually used within OE-Core itself. The ``oelint`` class is one such example. However, being aware of this class can reduce the proliferation of different versions of similar classes across multiple @@ -1753,14 +1719,13 @@ before attempting to fetch it from the upstream specified in :term:`SRC_URI` within each recipe. To use this class, inherit it globally and specify -:term:`SOURCE_MIRROR_URL`. Here is an example: -:: +:term:`SOURCE_MIRROR_URL`. Here is an example:: INHERIT += "own-mirrors" SOURCE_MIRROR_URL = "http://example.com/my-source-mirror" You can specify only a single URL -in ``SOURCE_MIRROR_URL``. +in :term:`SOURCE_MIRROR_URL`. .. _ref-classes-package: @@ -1784,7 +1749,7 @@ package-specific classes: use this class. You can control the list of resulting package formats by using the -``PACKAGE_CLASSES`` variable defined in your ``conf/local.conf`` +:term:`PACKAGE_CLASSES` variable defined in your ``conf/local.conf`` configuration file, which is located in the :term:`Build Directory`. When defining the variable, you can specify one or more package types. Since images are generated from @@ -1805,7 +1770,7 @@ the same or similar package. This comparison takes into account a complete build of the package with all dependencies previously built. The reason for this discrepancy is because the RPM package manager creates and processes more :term:`Metadata` than the IPK package -manager. Consequently, you might consider setting ``PACKAGE_CLASSES`` to +manager. Consequently, you might consider setting :term:`PACKAGE_CLASSES` to "package_ipk" if you are building smaller systems. Before making your package manager decision, however, you should @@ -1887,7 +1852,7 @@ variable in the ``local.conf`` file. .. note:: You cannot specify the ``package_tar`` class first using the - ``PACKAGE_CLASSES`` variable. You must use ``.deb``, ``.ipk``, or ``.rpm`` + :term:`PACKAGE_CLASSES` variable. You must use ``.deb``, ``.ipk``, or ``.rpm`` file formats for your image or SDK. .. _ref-classes-packagedata: @@ -1909,7 +1874,7 @@ This class is enabled by default because it is inherited by the ======================== The ``packagegroup`` class sets default values appropriate for package -group recipes (e.g. ``PACKAGES``, ``PACKAGE_ARCH``, ``ALLOW_EMPTY``, and +group recipes (e.g. :term:`PACKAGES`, :term:`PACKAGE_ARCH`, :term:`ALLOW_EMPTY`, and so forth). It is highly recommended that all package group recipes inherit this class. @@ -2017,8 +1982,7 @@ established and then populates the SDK. After populating the SDK, the contains the cross-compiler and associated tooling, and the target, which contains a target root filesystem that is configured for the SDK usage. These two images reside in :term:`SDK_OUTPUT`, -which consists of the following: -:: +which consists of the following:: ${SDK_OUTPUT}/${SDK_ARCH}-nativesdk-pkgs ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/target-pkgs @@ -2180,8 +2144,7 @@ installed by ``libtool``. Removing these files results in them being absent from both the sysroot and target packages. If a recipe needs the ``.la`` files to be installed, then the recipe can -override the removal by setting ``REMOVE_LIBTOOL_LA`` to "0" as follows: -:: +override the removal by setting ``REMOVE_LIBTOOL_LA`` to "0" as follows:: REMOVE_LIBTOOL_LA = "0" @@ -2230,9 +2193,8 @@ modifying and building source code out of the work directory for a recipe, enabling ``rm_work`` will potentially result in your changes to the source being lost. To exclude some recipes from having their work directories deleted by ``rm_work``, you can add the names of the recipe -or recipes you are working on to the ``RM_WORK_EXCLUDE`` variable, which -can also be set in your ``local.conf`` file. Here is an example: -:: +or recipes you are working on to the :term:`RM_WORK_EXCLUDE` variable, which +can also be set in your ``local.conf`` file. Here is an example:: RM_WORK_EXCLUDE += "busybox glibc" @@ -2346,11 +2308,11 @@ results so these tests can be skipped over but still make the correct values available. The ``meta/site directory`` contains test results sorted into different categories such as architecture, endianness, and the ``libc`` used. Site information provides a list of files containing -data relevant to the current build in the ``CONFIG_SITE`` variable that +data relevant to the current build in the :term:`CONFIG_SITE` variable that Autotools automatically picks up. -The class also provides variables like ``SITEINFO_ENDIANNESS`` and -``SITEINFO_BITS`` that can be used elsewhere in the metadata. +The class also provides variables like :term:`SITEINFO_ENDIANNESS` and +:term:`SITEINFO_BITS` that can be used elsewhere in the metadata. .. _ref-classes-sstate: @@ -2401,7 +2363,7 @@ stages: .. note:: Additionally, a recipe can customize the files further by - declaring a processing function in the ``SYSROOT_PREPROCESS_FUNCS`` + declaring a processing function in the :term:`SYSROOT_PREPROCESS_FUNCS` variable. A shared state (sstate) object is built from these files and the @@ -2443,11 +2405,11 @@ stages: recommended for general use, the files do allow some issues such as user creation and module indexes to be addressed. - Because recipes can have other dependencies outside of ``DEPENDS`` + Because recipes can have other dependencies outside of :term:`DEPENDS` (e.g. ``do_unpack[depends] += "tar-native:do_populate_sysroot"``), the sysroot creation function ``extend_recipe_sysroot`` is also added as a pre-function for those tasks whose dependencies are not through - ``DEPENDS`` but operate similarly. + :term:`DEPENDS` but operate similarly. When installing dependencies into the sysroot, the code traverses the dependency graph and processes dependencies in exactly the same way @@ -2531,8 +2493,7 @@ You should set :term:`SYSTEMD_SERVICE` to the name of the service file. You should also use a package name override to indicate the package to which the value applies. If the value applies to the recipe's main package, use ``${``\ :term:`PN`\ ``}``. Here -is an example from the connman recipe: -:: +is an example from the connman recipe:: SYSTEMD_SERVICE_${PN} = "connman.service" @@ -2608,8 +2569,7 @@ The tests are commands that run on the target system over ``ssh``. Each test is written in Python and makes use of the ``unittest`` module. The ``testimage.bbclass`` runs tests on an image when called using the -following: -:: +following:: $ bitbake -c testimage image @@ -2628,8 +2588,7 @@ section in the Yocto Project Development Tasks Manual. This class supports running automated tests against software development kits (SDKs). The ``testsdk`` class runs tests on an SDK when called -using the following: -:: +using the following:: $ bitbake -c testsdk image @@ -2684,8 +2643,7 @@ the environment for installed SDKs. The ``typecheck`` class provides support for validating the values of variables set at the configuration level against their defined types. The OpenEmbedded build system allows you to define the type of a -variable using the "type" varflag. Here is an example: -:: +variable using the "type" varflag. Here is an example:: IMAGE_FEATURES[type] = "list" @@ -2695,14 +2653,12 @@ variable using the "type" varflag. Here is an example: ======================== The ``uboot-config`` class provides support for U-Boot configuration for -a machine. Specify the machine in your recipe as follows: -:: +a machine. Specify the machine in your recipe as follows:: UBOOT_CONFIG ??= <default> UBOOT_CONFIG[foo] = "config,images" -You can also specify the machine using this method: -:: +You can also specify the machine using this method:: UBOOT_MACHINE = "config" @@ -2779,8 +2735,8 @@ initialization script on behalf of the package. The OpenEmbedded build system takes care of details such as making sure the script is stopped before a package is removed and started when the package is installed. -Three variables control this class: ``INITSCRIPT_PACKAGES``, -``INITSCRIPT_NAME`` and ``INITSCRIPT_PARAMS``. See the variable links +Three variables control this class: :term:`INITSCRIPT_PACKAGES`, +:term:`INITSCRIPT_NAME` and :term:`INITSCRIPT_PARAMS`. See the variable links for details. .. _ref-classes-useradd: @@ -2834,9 +2790,9 @@ additional information. .. note:: You do not use the ``useradd-staticids`` class directly. You either enable - or disable the class by setting the ``USERADDEXTENSION`` variable. If you + or disable the class by setting the :term:`USERADDEXTENSION` variable. If you enable or disable the class in a configured system, :term:`TMPDIR` might - contain incorrect ``uid`` and ``gid`` values. Deleting the ``TMPDIR`` + contain incorrect ``uid`` and ``gid`` values. Deleting the :term:`TMPDIR` directory will correct this condition. .. _ref-classes-utility-tasks: diff --git a/poky/documentation/ref-manual/devtool-reference.rst b/poky/documentation/ref-manual/devtool-reference.rst index 629aa2ffb..1862c481d 100644 --- a/poky/documentation/ref-manual/devtool-reference.rst +++ b/poky/documentation/ref-manual/devtool-reference.rst @@ -22,8 +22,7 @@ Getting Help The ``devtool`` command line is organized similarly to Git in that it has a number of sub-commands for each function. You can run -``devtool --help`` to see all the commands: -:: +``devtool --help`` to see all the commands:: $ devtool -h NOTE: Starting bitbake server... @@ -79,8 +78,7 @@ has a number of sub-commands for each function. You can run As directed in the general help output, you can get more syntax on a specific command by providing the command name and -using "--help": -:: +using "--help":: $ devtool add --help NOTE: Starting bitbake server... @@ -172,8 +170,7 @@ you. The source files the recipe uses should exist in an external area. The following example creates and adds a new recipe named ``jackson`` to a workspace layer the tool creates. The source code built by the recipes -resides in ``/home/user/sources/jackson``: -:: +resides in ``/home/user/sources/jackson``:: $ devtool add jackson /home/user/sources/jackson @@ -201,8 +198,7 @@ unpacking files from a remote URI. In some cases, you might want to specify a source revision by branch, tag, or commit hash. You can specify these options when using the ``devtool add`` command: -- To specify a source branch, use the ``--srcbranch`` option: - :: +- To specify a source branch, use the ``--srcbranch`` option:: $ devtool add --srcbranch &DISTRO_NAME_NO_CAP; jackson /home/user/sources/jackson @@ -210,8 +206,7 @@ specify these options when using the ``devtool add`` command: branch. - To specify a specific tag or commit hash, use the ``--srcrev`` - option: - :: + option:: $ devtool add --srcrev &DISTRO_REL_TAG; jackson /home/user/sources/jackson $ devtool add --srcrev some_commit_hash /home/user/sources/jackson @@ -269,8 +264,7 @@ The ``devtool modify`` command extracts the source for a recipe, sets it up as a Git repository if the source had not already been fetched from Git, checks out a branch for development, and applies any patches from the recipe as commits on top. You can use the following command to -checkout the source files: -:: +checkout the source files:: $ devtool modify recipe @@ -309,8 +303,7 @@ compile, and test the code. When you are satisfied with the results and you have committed your changes to the Git repository, you can then run the -``devtool update-recipe`` to create the patches and update the recipe: -:: +``devtool update-recipe`` to create the patches and update the recipe:: $ devtool update-recipe recipe @@ -321,8 +314,7 @@ Often, you might want to apply customizations made to your software in your own layer rather than apply them to the original recipe. If so, you can use the ``-a`` or ``--append`` option with the ``devtool update-recipe`` command. These options allow you to specify -the layer into which to write an append file: -:: +the layer into which to write an append file:: $ devtool update-recipe recipe -a base-layer-directory @@ -358,8 +350,7 @@ particular recipe. recipe's latest version tag. As with all ``devtool`` commands, you can get help on the individual -command: -:: +command:: $ devtool check-upgrade-status -h NOTE: Starting bitbake server... @@ -412,8 +403,8 @@ Upgrading a Recipe As software matures, upstream recipes are upgraded to newer versions. As a developer, you need to keep your local recipes up-to-date with the -upstream version releases. Several methods exist by which you can -upgrade recipes. You can read about them in the ":ref:`dev-manual/common-tasks:upgrading recipes`" +upstream version releases. There are several ways of upgrading recipes. +You can read about them in the ":ref:`dev-manual/common-tasks:upgrading recipes`" section of the Yocto Project Development Tasks Manual. This section overviews the ``devtool upgrade`` command. @@ -462,8 +453,7 @@ files have been modified, the command preserves the modified files in a separate "attic" subdirectory under the workspace layer. Here is an example that resets the workspace directory that contains the -``mtr`` recipe: -:: +``mtr`` recipe:: $ devtool reset mtr NOTE: Cleaning sysroot for recipe mtr... @@ -482,8 +472,7 @@ Use the ``devtool build`` command to build your recipe. The When you use the ``devtool build`` command, you must supply the root name of the recipe (i.e. do not provide versions, paths, or extensions). You can use either the "-s" or the "--disable-parallel-make" options to -disable parallel makes during the build. Here is an example: -:: +disable parallel makes during the build. Here is an example:: $ devtool build recipe @@ -499,8 +488,7 @@ device for testing. For proper integration into a final image, you need to edit your custom image recipe appropriately. When you use the ``devtool build-image`` command, you must supply the -name of the image. This command has no command line options: -:: +name of the image. This command has no command line options:: $ devtool build-image image @@ -510,8 +498,7 @@ Deploying Your Software on the Target Machine ============================================= Use the ``devtool deploy-target`` command to deploy the recipe's build -output to the live target machine: -:: +output to the live target machine:: $ devtool deploy-target recipe target @@ -529,8 +516,8 @@ you do, the package manager is bypassed. should never use it to update an image that will be used in production. -Some conditions exist that could prevent a deployed application from -behaving as expected. When both of the following conditions exist, your +Some conditions could prevent a deployed application from +behaving as expected. When both of the following conditions are met, your application has the potential to not behave correctly when run on the target: @@ -541,7 +528,7 @@ target: - The target does not physically have the packages on which the application depends installed. -If both of these conditions exist, your application will not behave as +If both of these conditions are met, your application will not behave as expected. The reason for this misbehavior is because the ``devtool deploy-target`` command does not deploy the packages (e.g. libraries) on which your new application depends. The assumption is that @@ -582,15 +569,13 @@ new workspace layer, it is populated with the ``README`` file and the ``conf`` directory only. The following example creates a new workspace layer in your current -working and by default names the workspace layer "workspace": -:: +working and by default names the workspace layer "workspace":: $ devtool create-workspace You can create a workspace layer anywhere by supplying a pathname with the command. The following command creates a new workspace layer named -"new-workspace": -:: +"new-workspace":: $ devtool create-workspace /home/scottrif/new-workspace @@ -603,15 +588,13 @@ Use the ``devtool status`` command to list the recipes currently in your workspace. Information includes the paths to their respective external source trees. -The ``devtool status`` command has no command-line options: -:: +The ``devtool status`` command has no command-line options:: $ devtool status Following is sample output after using :ref:`devtool add <ref-manual/devtool-reference:adding a new recipe to the workspace layer>` -to create and add the ``mtr_0.86.bb`` recipe to the ``workspace`` directory: -:: +to create and add the ``mtr_0.86.bb`` recipe to the ``workspace`` directory:: $ devtool status mtr:/home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb) diff --git a/poky/documentation/ref-manual/faq.rst b/poky/documentation/ref-manual/faq.rst index 64fdfdf75..640ef77d0 100644 --- a/poky/documentation/ref-manual/faq.rst +++ b/poky/documentation/ref-manual/faq.rst @@ -108,10 +108,10 @@ the team can place sources there so builds continue to work. but the package is being marked as machine-specific in all cases, how do I prevent this? -**A:** Set ``SRC_URI_OVERRIDES_PACKAGE_ARCH`` = "0" in the ``.bb`` file +**A:** Set :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` = "0" in the ``.bb`` file but make sure the package is manually marked as machine-specific for the case that needs it. The code that handles -``SRC_URI_OVERRIDES_PACKAGE_ARCH`` is in the +:term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` is in the ``meta/classes/base.bbclass`` file. **Q:** I'm behind a firewall and need to use a proxy server. How do I do @@ -125,7 +125,7 @@ file. Following is the applicable code for setting various proxy types in the ``.wgetrc`` file. By default, these settings are disabled with comments. -To use them, remove the comments: :: +To use them, remove the comments:: # You can set the default proxies for Wget to use for http, https, and ftp. # They will override the value in the environment. @@ -209,8 +209,7 @@ section in the Yocto Project Development Tasks Manual. **A:** You need to create a form factor file as described in the ":ref:`bsp-guide/bsp:miscellaneous bsp-specific recipe files`" section in the Yocto Project Board Support Packages (BSP) Developer's Guide. Set -the ``HAVE_TOUCHSCREEN`` variable equal to one as follows: -:: +the ``HAVE_TOUCHSCREEN`` variable equal to one as follows:: HAVE_TOUCHSCREEN=1 @@ -224,7 +223,7 @@ to add a BSP-specific netbase that includes an interfaces file. See the the Yocto Project Board Support Packages (BSP) Developer's Guide for information on creating these types of miscellaneous recipe files. -For example, add the following files to your layer: :: +For example, add the following files to your layer:: meta-MACHINE/recipes-bsp/netbase/netbase/MACHINE/interfaces meta-MACHINE/recipes-bsp/netbase/netbase_5.0.bbappend @@ -251,7 +250,7 @@ size, you need to set various configurations: :term:`IMAGE_ROOTFS_EXTRA_SPACE` variable to add additional free space to the image. The build system adds this space to the image after it determines its - ``IMAGE_ROOTFS_SIZE``. + :term:`IMAGE_ROOTFS_SIZE`. **Q:** Why don't you support directories with spaces in the pathnames? @@ -263,11 +262,11 @@ situation changes, the team will not support spaces in pathnames. **Q:** How do I use an external toolchain? **A:** The toolchain configuration is very flexible and customizable. It -is primarily controlled with the ``TCMODE`` variable. This variable +is primarily controlled with the :term:`TCMODE` variable. This variable controls which ``tcmode-*.inc`` file to include from the ``meta/conf/distro/include`` directory within the :term:`Source Directory`. -The default value of ``TCMODE`` is "default", which tells the +The default value of :term:`TCMODE` is "default", which tells the OpenEmbedded build system to use its internally built toolchain (i.e. ``tcmode-default.inc``). However, other patterns are accepted. In particular, "external-\*" refers to external toolchains. One example is @@ -300,7 +299,7 @@ fail. As an example, you could add a specific server for the build system to attempt before any others by adding something like the following to the -``local.conf`` configuration file: :: +``local.conf`` configuration file:: PREMIRRORS_prepend = "\ git://.*/.* http://www.yoctoproject.org/sources/ \n \ @@ -313,8 +312,7 @@ HTTPS requests and direct them to the ``http://`` sources mirror. You can use ``file://`` URLs to point to local directories or network shares as well. -Aside from the previous technique, these options also exist: -:: +Here are other options:: BB_NO_NETWORK = "1" @@ -322,17 +320,15 @@ This statement tells BitBake to issue an error instead of trying to access the Internet. This technique is useful if you want to ensure code builds only from local sources. -Here is another technique: -:: +Here is another technique:: BB_FETCH_PREMIRRORONLY = "1" This statement -limits the build system to pulling source from the ``PREMIRRORS`` only. +limits the build system to pulling source from the :term:`PREMIRRORS` only. Again, this technique is useful for reproducing builds. -Here is another technique: -:: +Here is another technique:: BB_GENERATE_MIRROR_TARBALLS = "1" @@ -343,7 +339,7 @@ however, the technique can simply waste time during the build. Finally, consider an example where you are behind an HTTP-only firewall. You could make the following changes to the ``local.conf`` configuration -file as long as the ``PREMIRRORS`` server is current: :: +file as long as the :term:`PREMIRRORS` server is current:: PREMIRRORS_prepend = "\ ftp://.*/.* http://www.yoctoproject.org/sources/ \n \ @@ -353,7 +349,7 @@ file as long as the ``PREMIRRORS`` server is current: :: These changes would cause the build system to successfully fetch source over HTTP and any network accesses to anything other than the -``PREMIRRORS`` would fail. +:term:`PREMIRRORS` would fail. The build system also honors the standard shell environment variables ``http_proxy``, ``ftp_proxy``, ``https_proxy``, and ``all_proxy`` to diff --git a/poky/documentation/ref-manual/features.rst b/poky/documentation/ref-manual/features.rst index 89c06eb65..ded653221 100644 --- a/poky/documentation/ref-manual/features.rst +++ b/poky/documentation/ref-manual/features.rst @@ -10,10 +10,10 @@ can select, and a reference on feature backfilling. Features provide a mechanism for working out which packages should be included in the generated images. Distributions can select which -features they want to support through the ``DISTRO_FEATURES`` variable, +features they want to support through the :term:`DISTRO_FEATURES` variable, which is set or appended to in a distribution's configuration file such as ``poky.conf``, ``poky-tiny.conf``, ``poky-lsb.conf`` and so forth. -Machine features are set in the ``MACHINE_FEATURES`` variable, which is +Machine features are set in the :term:`MACHINE_FEATURES` variable, which is set in the machine configuration file and specifies the hardware features for a given machine. @@ -26,8 +26,7 @@ One method you can use to determine which recipes are checking to see if a particular feature is contained or not is to ``grep`` through the :term:`Metadata` for the feature. Here is an example that discovers the recipes whose build is potentially changed based on a -given feature: -:: +given feature:: $ cd poky $ git grep 'contains.*MACHINE_FEATURES.*feature' @@ -197,7 +196,7 @@ you can add several different predefined packages such as development utilities or packages with debug information needed to investigate application problems or profile applications. -The following image features are available for all images: +Here are the image features available for all images: - *allow-empty-password:* Allows Dropbear and OpenSSH to accept root logins and logins from accounts having an empty password string. @@ -268,7 +267,7 @@ these valid features is as follows: - *ssh-server-openssh:* Installs the OpenSSH SSH server, which is more full-featured than Dropbear. Note that if both the OpenSSH SSH server and the Dropbear minimal SSH server are present in - ``IMAGE_FEATURES``, then OpenSSH will take precedence and Dropbear + :term:`IMAGE_FEATURES`, then OpenSSH will take precedence and Dropbear will not be installed. - *tools-debug:* Installs debugging tools such as ``strace`` and @@ -324,27 +323,27 @@ Here are two examples to help illustrate feature backfilling: - *The "pulseaudio" distro feature option*: Previously, PulseAudio support was enabled within the Qt and GStreamer frameworks. Because of this, the feature is backfilled and thus enabled for all distros - through the ``DISTRO_FEATURES_BACKFILL`` variable in the + through the :term:`DISTRO_FEATURES_BACKFILL` variable in the ``meta/conf/bitbake.conf`` file. However, your distro needs to disable the feature. You can disable the feature without affecting other existing distro configurations that need PulseAudio support by - adding "pulseaudio" to ``DISTRO_FEATURES_BACKFILL_CONSIDERED`` in + adding "pulseaudio" to :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` in your distro's ``.conf`` file. Adding the feature to this variable - when it also exists in the ``DISTRO_FEATURES_BACKFILL`` variable + when it also exists in the :term:`DISTRO_FEATURES_BACKFILL` variable prevents the build system from adding the feature to your - configuration's ``DISTRO_FEATURES``, effectively disabling the + configuration's :term:`DISTRO_FEATURES`, effectively disabling the feature for that particular distro. - *The "rtc" machine feature option*: Previously, real time clock (RTC) support was enabled for all target devices. Because of this, the feature is backfilled and thus enabled for all machines through the - ``MACHINE_FEATURES_BACKFILL`` variable in the + :term:`MACHINE_FEATURES_BACKFILL` variable in the ``meta/conf/bitbake.conf`` file. However, your target device does not have this capability. You can disable RTC support for your device without affecting other machines that need RTC support by adding the - feature to your machine's ``MACHINE_FEATURES_BACKFILL_CONSIDERED`` + feature to your machine's :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` list in the machine's ``.conf`` file. Adding the feature to this - variable when it also exists in the ``MACHINE_FEATURES_BACKFILL`` + variable when it also exists in the :term:`MACHINE_FEATURES_BACKFILL` variable prevents the build system from adding the feature to your - configuration's ``MACHINE_FEATURES``, effectively disabling RTC + configuration's :term:`MACHINE_FEATURES`, effectively disabling RTC support for that particular machine. diff --git a/poky/documentation/ref-manual/images.rst b/poky/documentation/ref-manual/images.rst index cf5cc1109..c6a7239c7 100644 --- a/poky/documentation/ref-manual/images.rst +++ b/poky/documentation/ref-manual/images.rst @@ -18,8 +18,7 @@ image you want. are going to build an image using non-GPLv3 and similarly licensed components, you must make the following changes in the ``local.conf`` file before using the BitBake command to build the minimal or base - image: - :: + image:: 1. Comment out the EXTRA_IMAGE_FEATURES line 2. Set INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0" @@ -27,7 +26,7 @@ image you want. From within the ``poky`` Git repository, you can use the following command to display the list of directories within the :term:`Source Directory` -that contain image recipe files: :: +that contain image recipe files:: $ ls meta*/recipes*/images/*.bb @@ -47,10 +46,6 @@ Following is a list of supported recipes: - ``core-image-base``: A console-only image that fully supports the target device hardware. -- ``core-image-clutter``: An image with support for the Open GL-based - toolkit Clutter, which enables development of rich and animated - graphical user interfaces. - - ``core-image-full-cmdline``: A console-only image with more full-featured Linux system functionality installed. diff --git a/poky/documentation/ref-manual/index.rst b/poky/documentation/ref-manual/index.rst index deb0383cf..5cf10c5c2 100644 --- a/poky/documentation/ref-manual/index.rst +++ b/poky/documentation/ref-manual/index.rst @@ -13,7 +13,6 @@ Yocto Project Reference Manual system-requirements terms release-process - migration structure classes tasks diff --git a/poky/documentation/ref-manual/kickstart.rst b/poky/documentation/ref-manual/kickstart.rst index b87cdc13b..a7443f9ea 100644 --- a/poky/documentation/ref-manual/kickstart.rst +++ b/poky/documentation/ref-manual/kickstart.rst @@ -30,8 +30,7 @@ Command: part or partition ========================== Either of these commands creates a partition on the system and uses the -following syntax: -:: +following syntax:: part [mntpoint] partition [mntpoint] @@ -59,8 +58,7 @@ must also provide one of the ``--ondrive``, ``--ondisk``, or versions of these application are currently excluded. Here is an example that uses "/" as the mountpoint. The command uses -``--ondisk`` to force the partition onto the ``sdb`` disk: -:: +``--ondisk`` to force the partition onto the ``sdb`` disk:: part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024 @@ -108,13 +106,15 @@ the ``part`` and ``partition`` commands: - ``--fstype``: Sets the file system type for the partition. Valid values are: - - ``ext4`` + - ``btrfs`` - - ``ext3`` + - ``erofs`` - ``ext2`` - - ``btrfs`` + - ``ext3`` + + - ``ext4`` - ``squashfs`` @@ -212,5 +212,5 @@ supports the following options: - ``--configfile``: Specifies a user-defined configuration file for the bootloader. You can provide a full pathname for the file or a - file that exists in the ``canned-wks`` folder. This option overrides + file located in the ``canned-wks`` folder. This option overrides all other bootloader options. diff --git a/poky/documentation/ref-manual/qa-checks.rst b/poky/documentation/ref-manual/qa-checks.rst index 6cb767d93..a105acc2c 100644 --- a/poky/documentation/ref-manual/qa-checks.rst +++ b/poky/documentation/ref-manual/qa-checks.rst @@ -88,7 +88,7 @@ Errors and Warnings A file-level dependency has been identified from the specified package on the specified files, but there is no explicit corresponding entry in :term:`RDEPENDS`. If - particular files are required at runtime then ``RDEPENDS`` should be + particular files are required at runtime then :term:`RDEPENDS` should be declared in the recipe to ensure the packages providing them are built. @@ -97,14 +97,14 @@ Errors and Warnings - ``<packagename1> rdepends on <packagename2>, but it isn't a build dependency? [build-deps]`` - A runtime dependency exists between the two specified packages, but + There is a runtime dependency between the two specified packages, but there is nothing explicit within the recipe to enable the OpenEmbedded build system to ensure that dependency is satisfied. This condition is usually triggered by an :term:`RDEPENDS` value being added at the packaging stage rather than up front, which is usually automatic based on the contents of the package. In most cases, you should change the recipe - to add an explicit ``RDEPENDS`` for the dependency. + to add an explicit :term:`RDEPENDS` for the dependency. .. _qa-check-dev-so: @@ -152,7 +152,7 @@ Errors and Warnings not explicitly add the ``.debug`` directory to the ``-dbg`` package. If this is the case, add the ``.debug`` directory explicitly to ``FILES_${PN}-dbg``. See :term:`FILES` for additional - information on ``FILES``. + information on :term:`FILES`. .. _qa-check-arch: @@ -221,8 +221,7 @@ Errors and Warnings Typically, the way to solve this performance issue is to add "-fPIC" or "-fpic" to the compiler command-line options. For example, given software that reads :term:`CFLAGS` when you build it, - you could add the following to your recipe: - :: + you could add the following to your recipe:: CFLAGS_append = " -fPIC " @@ -236,12 +235,11 @@ Errors and Warnings This indicates that binaries produced when building the recipe have not been linked with the :term:`LDFLAGS` options - provided by the build system. Check to be sure that the ``LDFLAGS`` + provided by the build system. Check to be sure that the :term:`LDFLAGS` variable is being passed to the linker command. A common workaround - for this situation is to pass in ``LDFLAGS`` using + for this situation is to pass in :term:`LDFLAGS` using :term:`TARGET_CC_ARCH` within the recipe as - follows: - :: + follows:: TARGET_CC_ARCH += "${LDFLAGS}" @@ -265,8 +263,7 @@ Errors and Warnings The ``/usr/share/info/dir`` should not be packaged. Add the following line to your :ref:`ref-tasks-install` task or to your - ``do_install_append`` within the recipe as follows: - :: + ``do_install_append`` within the recipe as follows:: rm ${D}${infodir}/dir @@ -306,7 +303,7 @@ Errors and Warnings - ``<packagename> rdepends on <debug_packagename> [debug-deps]`` - A dependency exists between the specified non-dbg package (i.e. a + There is a dependency between the specified non-dbg package (i.e. a package whose name does not end in ``-dbg``) and a package that is a ``dbg`` package. The ``dbg`` packages contain debug symbols and are brought in using several different methods: @@ -329,7 +326,7 @@ Errors and Warnings - ``<packagename> rdepends on <dev_packagename> [dev-deps]`` - A dependency exists between the specified non-dev package (a package + There is a dependency between the specified non-dev package (a package whose name does not end in ``-dev``) and a package that is a ``dev`` package. The ``dev`` packages contain development headers and are usually brought in using several different methods: @@ -406,7 +403,7 @@ Errors and Warnings If your recipe name does not match this, or you add packages to :term:`PACKAGES` that do not conform to the convention, then you will receive this error. Rename your recipe. Or, - if you have added a non-conforming package name to ``PACKAGES``, + if you have added a non-conforming package name to :term:`PACKAGES`, change the package name appropriately. @@ -434,13 +431,13 @@ Errors and Warnings The specified recipe has a name (:term:`PN`) value that appears in :term:`OVERRIDES`. If a recipe is named - such that its ``PN`` value matches something already in ``OVERRIDES`` - (e.g. ``PN`` happens to be the same as :term:`MACHINE` + such that its :term:`PN` value matches something already in :term:`OVERRIDES` + (e.g. :term:`PN` happens to be the same as :term:`MACHINE` or :term:`DISTRO`), it can have unexpected consequences. For example, assignments such as ``FILES_${PN} = "xyz"`` effectively turn into ``FILES = "xyz"``. - Rename your recipe (or if ``PN`` is being set explicitly, change the - ``PN`` value) so that the conflict does not occur. See + Rename your recipe (or if :term:`PN` is being set explicitly, change the + :term:`PN` value) so that the conflict does not occur. See :term:`FILES` for additional information. @@ -467,7 +464,7 @@ Errors and Warnings This check looks for instances of setting ``DEPENDS_${PN}`` which is erroneous (:term:`DEPENDS` is a recipe-wide variable and thus it is not correct to specify it for a particular package, nor will such - an assignment actually work.) Set ``DEPENDS`` instead. + an assignment actually work.) Set :term:`DEPENDS` instead. .. _qa-check-already-stripped: @@ -502,7 +499,7 @@ Errors and Warnings Package names must appear only once in the :term:`PACKAGES` variable. You might receive this - error if you are attempting to add a package to ``PACKAGES`` that is + error if you are attempting to add a package to :term:`PACKAGES` that is already in the variable's value. @@ -526,7 +523,7 @@ Errors and Warnings in an image later on in the build process. You need to do one of the following: - - Add the files to ``FILES`` for the package you want them to appear + - Add the files to :term:`FILES` for the package you want them to appear in (e.g. ``FILES_${``\ :term:`PN`\ ``}`` for the main package). @@ -675,7 +672,7 @@ Errors and Warnings task. Patch fuzz is a situation when the ``patch`` tool ignores some of the context lines in order to apply the patch. Consider this example: - Patch to be applied: :: + Patch to be applied:: --- filename +++ filename @@ -687,7 +684,7 @@ Errors and Warnings context line 5 context line 6 - Original source code: :: + Original source code:: different context line 1 different context line 2 @@ -696,7 +693,7 @@ Errors and Warnings different context line 5 different context line 6 - Outcome (after applying patch with fuzz): :: + Outcome (after applying patch with fuzz):: different context line 1 different context line 2 @@ -716,14 +713,14 @@ Errors and Warnings *How to eliminate patch fuzz warnings* Use the ``devtool`` command as explained by the warning. First, unpack the - source into devtool workspace: :: + source into devtool workspace:: devtool modify <recipe> This will apply all of the patches, and create new commits out of them in the workspace - with the patch context updated. - Then, replace the patches in the recipe layer: :: + Then, replace the patches in the recipe layer:: devtool finish --force-patch-refresh <recipe> <layer_path> @@ -756,6 +753,6 @@ how to work with the QA checks, see the .. note:: - Please keep in mind that the QA checks exist in order to detect real + Please keep in mind that the QA checks are meant to detect real or potential problems in the packaged output. So exercise caution when disabling these checks. diff --git a/poky/documentation/ref-manual/release-process.rst b/poky/documentation/ref-manual/release-process.rst index 93ab6ed08..ab143f7df 100644 --- a/poky/documentation/ref-manual/release-process.rst +++ b/poky/documentation/ref-manual/release-process.rst @@ -62,8 +62,10 @@ codename are likely to be compatible and thus work together. Releases are given a nominal release version as well but the codename is used in repositories for this reason. You can find information on Yocto -Project releases and codenames at -:yocto_wiki:`/Releases`. +Project releases and codenames at :yocto_wiki:`/Releases`. + +Our :doc:`/migration-guides/index` detail how to migrate from one release of +the Yocto Project to the next. Stable Release Process ====================== @@ -82,14 +84,14 @@ stable release. bug fixes and security fixes only. Policy dictates that features are not backported to a stable release. This policy means generic recipe version upgrades are unlikely to be accepted for backporting. The - exception to this policy occurs when a strong reason exists such as + exception to this policy occurs when there is a strong reason such as the fix happens to also be the preferred upstream approach. Stable release branches have strong maintenance for about a year after their initial release. Should significant issues be found for any release regardless of its age, fixes could be backported to older releases. For issues that are not backported given an older release, -Community LTS trees and branches exist where community members share +Community LTS trees and branches allow community members to share patches for older releases. However, these types of patches do not go through the same release process as do point releases. You can find more information about stable branch maintenance at @@ -164,9 +166,8 @@ repository. .. note:: - You can find all these branches in the Yocto Project - Source Repositories - . + You can find all these branches in the + :ref:`overview-manual/development-environment:yocto project source repositories`. Testing within these public branches ensures in a publicly visible way that all of the main supposed architectures and recipes in OE-Core diff --git a/poky/documentation/ref-manual/resources.rst b/poky/documentation/ref-manual/resources.rst index 663f0d96d..5ffd2b399 100644 --- a/poky/documentation/ref-manual/resources.rst +++ b/poky/documentation/ref-manual/resources.rst @@ -10,7 +10,7 @@ Introduction ============ The Yocto Project team is happy for people to experiment with the Yocto -Project. A number of places exist to find help if you run into +Project. There is a number of places where you can find help if you run into difficulties or find bugs. This presents information about contributing and participating in the Yocto Project. @@ -43,8 +43,7 @@ the Yocto Project itself (e.g. when discovering an issue with some component of the build system that acts contrary to the documentation or your expectations). -A general procedure and guidelines exist for when you use Bugzilla to -submit a bug. For information on how to use Bugzilla to submit a bug +For a general procedure and guidelines on how to use Bugzilla to submit a bug against the Yocto Project, see the following: - The ":ref:`dev-manual/common-tasks:submitting a defect against the yocto project`" @@ -59,7 +58,7 @@ For information on Bugzilla in general, see https://www.bugzilla.org/about/. Mailing lists ============= -A number of mailing lists maintained by the Yocto Project exist as well +There are multiple mailing lists maintained by the Yocto Project as well as related OpenEmbedded mailing lists for discussion, patch submission and announcements. To subscribe to one of the following mailing lists, click on the appropriate URL in the following list and follow the @@ -156,9 +155,8 @@ Here is a list of resources you might find helpful: - :yocto_docs:`Yocto Project Mega-Manual </singleindex.html>`\ *:* This manual is simply a single HTML file comprised of the bulk of the Yocto - Project manuals. The Mega-Manual primarily exists as a vehicle by - which you can easily search for phrases and terms used in the Yocto - Project documentation set. + Project manuals. It makes it easy to search for phrases and terms used + in the Yocto Project documentation set. - :doc:`/profile-manual/index` *:* This manual presents a set of common and generally useful tracing and profiling schemes along with diff --git a/poky/documentation/ref-manual/structure.rst b/poky/documentation/ref-manual/structure.rst index 0f2093a8d..5f00edb06 100644 --- a/poky/documentation/ref-manual/structure.rst +++ b/poky/documentation/ref-manual/structure.rst @@ -38,7 +38,7 @@ usually matches the current stable BitBake release from the BitBake project. BitBake, a :term:`Metadata` interpreter, reads the Yocto Project Metadata and runs the tasks defined by that data. Failures are usually caused by errors in your Metadata and not from BitBake -itself; consequently, most users do not need to worry about BitBake. +itself. When you run the ``bitbake`` command, the main BitBake executable (which resides in the ``bitbake/bin/`` directory) starts. Sourcing the @@ -153,8 +153,7 @@ When you run this script, your Yocto Project environment is set up, a :term:`Build Directory` is created, your working directory becomes the Build Directory, and you are presented with some simple suggestions as to what to do next, including a list of some -possible targets to build. Here is an example: -:: +possible targets to build. Here is an example:: $ source oe-init-build-env @@ -185,8 +184,7 @@ creates the ``build/`` directory in your current working directory. If you provide a Build Directory argument when you ``source`` the script, you direct the OpenEmbedded build system to create a Build Directory of your choice. For example, the following command creates a Build -Directory named ``mybuilds/`` that is outside of the :term:`Source Directory`: -:: +Directory named ``mybuilds/`` that is outside of the :term:`Source Directory`:: $ source oe-init-build-env ~/mybuilds @@ -253,9 +251,9 @@ variables are hard-coded for various reasons but such variables are relatively rare. At a minimum, you would normally edit this file to select the target -``MACHINE``, which package types you wish to use +:term:`MACHINE`, which package types you wish to use (:term:`PACKAGE_CLASSES`), and the location from -which you want to access downloaded files (``DL_DIR``). +which you want to access downloaded files (:term:`DL_DIR`). If ``local.conf`` is not present when you start the build, the OpenEmbedded build system creates it from ``local.conf.sample`` when you @@ -269,8 +267,7 @@ and to ``meta/conf/`` when you are building from the OpenEmbedded-Core environment. Because the script variable points to the source of the ``local.conf.sample`` file, this implies that you can configure your build environment from any layer by setting the variable in the -top-level build environment setup script as follows: -:: +top-level build environment setup script as follows:: TEMPLATECONF=your_layer/conf @@ -282,7 +279,7 @@ file, it uses ``sed`` to substitute final .. note:: You can see how the ``TEMPLATECONF`` variable is used by looking at the - ``scripts/oe-setup-builddir``` script in the :term:`Source Directory`. + ``scripts/oe-setup-builddir`` script in the :term:`Source Directory`. You can find the Yocto Project version of the ``local.conf.sample`` file in the ``meta-poky/conf`` directory. @@ -309,8 +306,7 @@ Project development environment, and to ``meta/conf/`` when you are building from the OpenEmbedded-Core environment. Because the script variable points to the source of the ``bblayers.conf.sample`` file, this implies that you can base your build from any layer by setting the -variable in the top-level build environment setup script as follows: -:: +variable in the top-level build environment setup script as follows:: TEMPLATECONF=your_layer/conf @@ -340,7 +336,7 @@ the build. This directory contains downloaded upstream source tarballs. You can reuse the directory for multiple builds or move the directory to another location. You can control the location of this directory through the -``DL_DIR`` variable. +:term:`DL_DIR` variable. .. _structure-build-sstate-cache: @@ -350,7 +346,7 @@ location. You can control the location of this directory through the This directory contains the shared state cache. You can reuse the directory for multiple builds or move the directory to another location. You can control the location of this directory through the -``SSTATE_DIR`` variable. +:term:`SSTATE_DIR` variable. .. _structure-build-tmp: @@ -463,8 +459,7 @@ image again. If you do accidentally delete files here, you will need to force them to be re-created. In order to do that, you will need to know the target that produced them. For example, these commands rebuild and re-create -the kernel files: -:: +the kernel files:: $ bitbake -c clean virtual/kernel $ bitbake virtual/kernel @@ -515,8 +510,8 @@ should be automatic, and recipes should not directly reference ----------------------- Previous versions of the OpenEmbedded build system used to create a -global shared sysroot per machine along with a native sysroot. Beginning -with the 2.3 version of the Yocto Project, sysroots exist in +global shared sysroot per machine along with a native sysroot. Since +the 2.3 version of the Yocto Project, there are sysroots in recipe-specific :term:`WORKDIR` directories. Thus, the ``build/tmp/sysroots/`` directory is unused. @@ -535,8 +530,7 @@ recipe-specific :term:`WORKDIR` directories. Thus, the This directory holds information that BitBake uses for accounting purposes to track what tasks have run and when they have run. The directory is sub-divided by architecture, package name, and version. -Following is an example: -:: +Following is an example:: stamps/all-poky-linux/distcc-config/1.0-r0.do_build-2fdd....2do @@ -554,7 +548,7 @@ section in the Yocto Project Overview and Concepts Manual. ------------------ This directory contains general logs that are not otherwise placed using -the package's ``WORKDIR``. Examples of logs are the output from the +the package's :term:`WORKDIR`. Examples of logs are the output from the ``do_check_pkg`` or ``do_distro_check`` tasks. Running a build does not necessarily mean this directory is created. @@ -575,7 +569,7 @@ It is worth considering the structure of a typical work directory. As an example, consider ``linux-yocto-kernel-3.0`` on the machine ``qemux86`` built within the Yocto Project. For this package, a work directory of ``tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+<.....>``, referred -to as the ``WORKDIR``, is created. Within this directory, the source is +to as the :term:`WORKDIR`, is created. Within this directory, the source is unpacked to ``linux-qemux86-standard-build`` and then patched by Quilt. (See the ":ref:`dev-manual/common-tasks:using quilt in your workflow`" section in the Yocto Project Development Tasks Manual for more information.) Within @@ -583,7 +577,7 @@ the ``linux-qemux86-standard-build`` directory, standard Quilt directories ``linux-3.0/patches`` and ``linux-3.0/.pc`` are created, and standard Quilt commands can be used. -There are other directories generated within ``WORKDIR``. The most +There are other directories generated within :term:`WORKDIR`. The most important directory is ``WORKDIR/temp/``, which has log files for each task (``log.do_*.pid``) and contains the scripts BitBake runs for each task (``run.do_*.pid``). The ``WORKDIR/image/`` directory is where "make @@ -607,7 +601,7 @@ constructed using the architecture of the given build (e.g. name, and the version of the recipe (i.e. :term:`PE`\ ``:``\ :term:`PV`\ ``-``\ :term:`PR`). -A number of key subdirectories exist within each recipe work directory: +Here are key subdirectories within each recipe work directory: - ``${WORKDIR}/temp``: Contains the log files of each task executed for this recipe, the "run" files for each executed task, which contain @@ -630,7 +624,7 @@ A number of key subdirectories exist within each recipe work directory: - ``${WORKDIR}/packages-split``: Contains the output of the ``do_package`` task after the output has been split into individual - packages. Subdirectories exist for each individual package created by + packages. There are subdirectories for each individual package created by the recipe. - ``${WORKDIR}/recipe-sysroot``: A directory populated with the target @@ -715,7 +709,7 @@ support for a new machine to the Yocto Project, look in this directory. The contents of this directory controls any distribution-specific configurations. For the Yocto Project, the ``defaultsetup.conf`` is the -main file here. This directory includes the versions and the ``SRCDATE`` +main file here. This directory includes the versions and the :term:`SRCDATE` definitions for applications that are configured here. An example of an alternative configuration might be ``poky-bleeding.conf``. Although this file mainly inherits its configuration from Poky. @@ -789,7 +783,7 @@ system. The tools, however, can also be used on targets. This directory contains non-essential applications that add features compared to the alternatives in core. You might need this directory for -full tool functionality or for Linux Standard Base (LSB) compliance. +full tool functionality. .. _structure-meta-recipes-gnome: @@ -815,14 +809,6 @@ libraries. This directory contains the kernel and generic applications and libraries that have strong kernel dependencies. -.. _structure-meta-recipes-lsb4: - -``meta/recipes-lsb4/`` ----------------------- - -This directory contains recipes specifically added to support the Linux -Standard Base (LSB) version 4.x. - .. _structure-meta-recipes-multimedia: ``meta/recipes-multimedia/`` diff --git a/poky/documentation/ref-manual/system-requirements.rst b/poky/documentation/ref-manual/system-requirements.rst index 80378cedb..e9d995c61 100644 --- a/poky/documentation/ref-manual/system-requirements.rst +++ b/poky/documentation/ref-manual/system-requirements.rst @@ -41,7 +41,7 @@ distributions: - Ubuntu 18.04 (LTS) -- Ubuntu 20.04 +- Ubuntu 20.04 (LTS) - Fedora 30 @@ -66,9 +66,8 @@ distributions: - While the Yocto Project Team attempts to ensure all Yocto Project releases are one hundred percent compatible with each officially - supported Linux distribution, instances might exist where you - encounter a problem while using the Yocto Project on a specific - distribution. + supported Linux distribution, you may still encounter problems + that happen only with a specific distribution. - Yocto Project releases are tested against the stable Linux distributions in the above list. The Yocto Project should work @@ -111,7 +110,7 @@ function. Ubuntu and Debian ----------------- -The following list shows the required packages by function given a +Here are the required packages by function given a supported Ubuntu or Debian Linux distribution: .. note:: @@ -119,9 +118,7 @@ supported Ubuntu or Debian Linux distribution: - If your build system has the ``oss4-dev`` package installed, you might experience QEMU build failures due to the package installing its own custom ``/usr/include/linux/soundcard.h`` on the Debian - system. If you run into this situation, either of the following - solutions exist: - :: + system. If you run into this situation, try either of these solutions:: $ sudo apt-get build-dep qemu $ sudo apt-get remove oss4-dev @@ -132,14 +129,12 @@ supported Ubuntu or Debian Linux distribution: $ sudo pip3 install GitPython pylint==1.9.5 -- *Essentials:* Packages needed to build an image on a headless system: - :: +- *Essentials:* Packages needed to build an image on a headless system:: $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL; - *Documentation:* Packages needed if you are going to build out the - Yocto Project documentation manuals: - :: + Yocto Project documentation manuals:: $ sudo apt-get install make python3-pip &PIP3_HOST_PACKAGES_DOC; @@ -153,18 +148,16 @@ supported Ubuntu or Debian Linux distribution: Fedora Packages --------------- -The following list shows the required packages by function given a +Here are the required packages by function given a supported Fedora Linux distribution: - *Essentials:* Packages needed to build an image for a headless - system: - :: + system:: $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL; - *Documentation:* Packages needed if you are going to build out the - Yocto Project documentation manuals: - :: + Yocto Project documentation manuals:: $ sudo dnf install make python3-pip which &PIP3_HOST_PACKAGES_DOC; @@ -172,18 +165,16 @@ supported Fedora Linux distribution: openSUSE Packages ----------------- -The following list shows the required packages by function given a +Here are the required packages by function given a supported openSUSE Linux distribution: - *Essentials:* Packages needed to build an image for a headless - system: - :: + system:: $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL; - *Documentation:* Packages needed if you are going to build out the - Yocto Project documentation manuals: - :: + Yocto Project documentation manuals:: $ sudo zypper install make python3-pip which &PIP3_HOST_PACKAGES_DOC; @@ -192,12 +183,11 @@ supported openSUSE Linux distribution: CentOS-7 Packages ----------------- -The following list shows the required packages by function given a +Here are the required packages by function given a supported CentOS-7 Linux distribution: - *Essentials:* Packages needed to build an image for a headless - system: - :: + system:: $ sudo yum install &CENTOS7_HOST_PACKAGES_ESSENTIAL; @@ -212,8 +202,7 @@ supported CentOS-7 Linux distribution: ``epel-release``. - *Documentation:* Packages needed if you are going to build out the - Yocto Project documentation manuals: - :: + Yocto Project documentation manuals:: $ sudo yum install make python3-pip which &PIP3_HOST_PACKAGES_DOC; @@ -221,12 +210,11 @@ supported CentOS-7 Linux distribution: CentOS-8 Packages ----------------- -The following list shows the required packages by function given a +Here are the required packages by function given a supported CentOS-8 Linux distribution: - *Essentials:* Packages needed to build an image for a headless - system: - :: + system:: $ sudo dnf install &CENTOS8_HOST_PACKAGES_ESSENTIAL; @@ -244,8 +232,7 @@ supported CentOS-8 Linux distribution: ``epel-release``. - *Documentation:* Packages needed if you are going to build out the - Yocto Project documentation manuals: - :: + Yocto Project documentation manuals:: $ sudo dnf install make python3-pip which &PIP3_HOST_PACKAGES_DOC; @@ -287,8 +274,7 @@ The ``install-buildtools`` script is the easiest of the three methods by which you can get these tools. It downloads a pre-built buildtools installer and automatically installs the tools for you: -1. Execute the ``install-buildtools`` script. Here is an example: - :: +1. Execute the ``install-buildtools`` script. Here is an example:: $ cd poky $ scripts/install-buildtools --without-extended-buildtools \ @@ -302,22 +288,19 @@ installer and automatically installs the tools for you: installation is functional. To avoid the need of ``sudo`` privileges, the ``install-buildtools`` - script will by default tell the installer to install in: - :: + script will by default tell the installer to install in:: /path/to/poky/buildtools If your host development system needs the additional tools provided in the ``buildtools-extended`` tarball, you can instead execute the - ``install-buildtools`` script with the default parameters: - :: + ``install-buildtools`` script with the default parameters:: $ cd poky $ scripts/install-buildtools 2. Source the tools environment setup script by using a command like the - following: - :: + following:: $ source /path/to/poky/buildtools/environment-setup-x86_64-pokysdk-linux @@ -342,13 +325,11 @@ steps: 1. Locate and download the ``*.sh`` at &YOCTO_RELEASE_DL_URL;/buildtools/ 2. Execute the installation script. Here is an example for the - traditional installer: - :: + traditional installer:: $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh - Here is an example for the extended installer: - :: + Here is an example for the extended installer:: $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh @@ -357,8 +338,7 @@ steps: ``/home/your-username/buildtools`` 3. Source the tools environment setup script by using a command like the - following: - :: + following:: $ source /home/your_username/buildtools/environment-setup-i586-poky-linux @@ -390,13 +370,11 @@ installer: your build environment with the setup script (:ref:`structure-core-script`). -2. Run the BitBake command to build the tarball: - :: +2. Run the BitBake command to build the tarball:: $ bitbake buildtools-tarball - or run the BitBake command to build the extended tarball: - :: + or run the BitBake command to build the extended tarball:: $ bitbake buildtools-extended-tarball @@ -415,13 +393,11 @@ installer: 4. On the machine that does not meet the requirements, run the ``.sh`` file to install the tools. Here is an example for the traditional - installer: - :: + installer:: $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh - Here is an example for the extended installer: - :: + Here is an example for the extended installer:: $ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh @@ -430,8 +406,7 @@ installer: ``/home/your_username/buildtools`` 5. Source the tools environment setup script by using a command like the - following: - :: + following:: $ source /home/your_username/buildtools/environment-setup-x86_64-poky-linux diff --git a/poky/documentation/ref-manual/tasks.rst b/poky/documentation/ref-manual/tasks.rst index 9fe1c296a..970b08394 100644 --- a/poky/documentation/ref-manual/tasks.rst +++ b/poky/documentation/ref-manual/tasks.rst @@ -57,7 +57,7 @@ the current working directory set to ``${``\ :term:`B`\ ``}``. The default behavior of this task is to run ``oe_runmake clean`` if a makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found and :term:`CLEANBROKEN` is not set to "1". If no such -file is found or the ``CLEANBROKEN`` variable is set to "1", the +file is found or the :term:`CLEANBROKEN` variable is set to "1", the ``do_configure`` task does nothing. .. _ref-tasks-configure_ptest_base: @@ -93,8 +93,7 @@ output from ``${DEPLOYDIR}`` to ``${DEPLOY_DIR_IMAGE}``. The ``do_deploy`` task is not added as a task by default and consequently needs to be added manually. If you want the task to run after :ref:`ref-tasks-compile`, you can add it by doing -the following: -:: +the following:: addtask deploy after do_compile @@ -103,8 +102,7 @@ Adding ``do_deploy`` after other tasks works the same way. .. note:: You do not need to add ``before do_build`` to the ``addtask`` command - (though it is harmless), because the ``base`` class contains the following: - :: + (though it is harmless), because the ``base`` class contains the following:: do_build[recrdeptask] += "do_deploy" @@ -302,29 +300,26 @@ Patch files, by default, are ``*.patch`` and ``*.diff`` files created and kept in a subdirectory of the directory holding the recipe file. For example, consider the :yocto_git:`bluez5 </poky/tree/meta/recipes-connectivity/bluez5>` -recipe from the OE-Core layer (i.e. ``poky/meta``): -:: +recipe from the OE-Core layer (i.e. ``poky/meta``):: poky/meta/recipes-connectivity/bluez5 -This recipe has two patch files located here: -:: +This recipe has two patch files located here:: poky/meta/recipes-connectivity/bluez5/bluez5 -In the ``bluez5`` recipe, the ``SRC_URI`` statements point to the source +In the ``bluez5`` recipe, the :term:`SRC_URI` statements point to the source and patch files needed to build the package. .. note:: - In the case for the ``bluez5_5.48.bb`` recipe, the ``SRC_URI`` statements + In the case for the ``bluez5_5.48.bb`` recipe, the :term:`SRC_URI` statements are from an include file ``bluez5.inc``. As mentioned earlier, the build system treats files whose file types are ``.patch`` and ``.diff`` as patch files. However, you can use the -"apply=yes" parameter with the ``SRC_URI`` statement to indicate any -file as a patch file: -:: +"apply=yes" parameter with the :term:`SRC_URI` statement to indicate any +file as a patch file:: SRC_URI = " \ git://path_to_repo/some_package \ @@ -334,8 +329,7 @@ file as a patch file: Conversely, if you have a directory full of patch files and you want to exclude some so that the ``do_patch`` task does not apply them during the patch phase, you can use the "apply=no" parameter with the -``SRC_URI`` statement: -:: +:term:`SRC_URI` statement:: SRC_URI = " \ git://path_to_repo/some_package \ @@ -436,7 +430,7 @@ variable also plays a role in where unpacked source files ultimately reside. For more information on how source files are unpacked, see the ":ref:`overview-manual/concepts:source fetching`" section in the Yocto Project Overview and Concepts Manual and also see -the ``WORKDIR`` and ``S`` variable descriptions. +the :term:`WORKDIR` and :term:`S` variable descriptions. Manually Called Tasks ===================== @@ -455,8 +449,7 @@ of the recipe exists upstream and a status of not updated, updated, or unknown. To check the upstream version and status of a recipe, use the following -devtool commands: -:: +devtool commands:: $ devtool latest-version $ devtool check-upgrade-status @@ -467,8 +460,7 @@ chapter for more information on section for information on checking the upgrade status of a recipe. To build the ``checkpkg`` task, use the ``bitbake`` command with the -"-c" option and task name: -:: +"-c" option and task name:: $ bitbake core-image-minimal -c checkpkg @@ -494,8 +486,7 @@ Removes all output files for a target from the :ref:`ref-tasks-install`, and :ref:`ref-tasks-package`). -You can run this task using BitBake as follows: -:: +You can run this task using BitBake as follows:: $ bitbake -c clean recipe @@ -519,8 +510,7 @@ downloaded source files for a target (i.e. the contents of identical to the :ref:`ref-tasks-cleansstate` task with the added removal of downloaded source files. -You can run this task using BitBake as follows: -:: +You can run this task using BitBake as follows:: $ bitbake -c cleanall recipe @@ -540,8 +530,7 @@ target. Essentially, the ``do_cleansstate`` task is identical to the shared state (:ref:`sstate <overview-manual/concepts:shared state cache>`) cache. -You can run this task using BitBake as follows: -:: +You can run this task using BitBake as follows:: $ bitbake -c cleansstate recipe @@ -553,8 +542,7 @@ scratch is guaranteed. The ``do_cleansstate`` task cannot remove sstate from a remote sstate mirror. If you need to build a target from scratch using remote mirrors, use - the "-f" option as follows: - :: + the "-f" option as follows:: $ bitbake -f -c do_cleansstate target @@ -687,8 +675,7 @@ changes made by the user with other methods (i.e. using (:ref:`ref-tasks-kernel_menuconfig`). Once the file of differences is created, it can be used to create a config fragment that only contains the differences. You can invoke this task -from the command line as follows: -:: +from the command line as follows:: $ bitbake linux-yocto -c diffconfig @@ -718,8 +705,7 @@ Validates the configuration produced by the configuration does not appear in the final ``.config`` file or when you override a policy configuration in a hardware configuration fragment. You can run this task explicitly and view the output by using the -following command: -:: +following command:: $ bitbake linux-yocto -c kernel_configcheck -f @@ -750,8 +736,7 @@ tool, which you then use to modify the kernel configuration. .. note:: - You can also invoke this tool from the command line as follows: - :: + You can also invoke this tool from the command line as follows:: $ bitbake linux-yocto -c menuconfig @@ -793,8 +778,7 @@ instead of the default defconfig. The saved defconfig contains the differences between the default defconfig and the changes made by the user using other methods (i.e. the :ref:`ref-tasks-kernel_menuconfig` task. You -can invoke the task using the following command: -:: +can invoke the task using the following command:: $ bitbake linux-yocto -c savedefconfig @@ -839,6 +823,5 @@ sections from a size-sensitive configuration. After the kernel is unpacked but before it is patched, this task makes sure that the machine and metadata branches as specified by the :term:`SRCREV` variables actually exist on the specified -branches. If these branches do not exist and -:term:`AUTOREV` is not being used, the +branches. Otherwise, if :term:`AUTOREV` is not being used, the ``do_validate_branches`` task fails during the build. diff --git a/poky/documentation/ref-manual/terms.rst b/poky/documentation/ref-manual/terms.rst index 32bb75b27..54469e507 100644 --- a/poky/documentation/ref-manual/terms.rst +++ b/poky/documentation/ref-manual/terms.rst @@ -26,8 +26,7 @@ universal, the list includes them just in case: When you name an append file, you can use the "``%``" wildcard character to allow for matching recipe names. For example, suppose you have an - append file named as follows: - :: + append file named as follows:: busybox_1.21.%.bbappend @@ -98,11 +97,11 @@ universal, the list includes them just in case: .. note:: By default, the Build Directory contains :term:`TMPDIR`, which is a - temporary directory the build system uses for its work. ``TMPDIR`` cannot + temporary directory the build system uses for its work. :term:`TMPDIR` cannot be under NFS. Thus, by default, the Build Directory cannot be under NFS. However, if you need the Build Directory to be under NFS, you can - set this up by setting ``TMPDIR`` in your ``local.conf`` file to use a local - drive. Doing so effectively separates ``TMPDIR`` from :term:`TOPDIR`, which is the + set this up by setting :term:`TMPDIR` in your ``local.conf`` file to use a local + drive. Doing so effectively separates :term:`TMPDIR` from :term:`TOPDIR`, which is the Build Directory. :term:`Build Host` diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst index 74ac12bf9..71c2e11d9 100644 --- a/poky/documentation/ref-manual/variables.rst +++ b/poky/documentation/ref-manual/variables.rst @@ -24,8 +24,7 @@ system and gives an overview of their function and contents. ABI extensions are set in the machine include files. For example, the ``meta/conf/machine/include/arm/arch-arm.inc`` file sets the - following extension: - :: + following extension:: ABIEXTENSION = "eabi" @@ -37,8 +36,7 @@ system and gives an overview of their function and contents. requirement on the existence of the package. Like all package-controlling variables, you must always use them in - conjunction with a package name override, as in: - :: + conjunction with a package name override, as in:: ALLOW_EMPTY_${PN} = "1" ALLOW_EMPTY_${PN}-dev = "1" @@ -51,11 +49,9 @@ system and gives an overview of their function and contents. alternatives system to create a different binary naming scheme so the commands can co-exist. - To use the variable, list out the package's commands that also exist - as part of another package. For example, if the ``busybox`` package - has four commands that also exist as part of another package, you - identify them as follows: - :: + To use the variable, list out the package's commands that are also + provided by another package. For example, if the ``busybox`` package + has four such commands, you identify them as follows:: ALTERNATIVE_busybox = "sh sed test bracket" @@ -67,9 +63,8 @@ system and gives an overview of their function and contents. Used by the alternatives system to map duplicated commands to actual locations. For example, if the ``bracket`` command provided by the ``busybox`` package is duplicated through another package, you must - use the ``ALTERNATIVE_LINK_NAME`` variable to specify the actual - location: - :: + use the :term:`ALTERNATIVE_LINK_NAME` variable to specify the actual + location:: ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/[" @@ -78,7 +73,7 @@ system and gives an overview of their function and contents. .. note:: - If ``ALTERNATIVE_LINK_NAME`` is not defined, it defaults to ``${bindir}/name``. + If :term:`ALTERNATIVE_LINK_NAME` is not defined, it defaults to ``${bindir}/name``. For more information on the alternatives system, see the ":ref:`update-alternatives.bbclass <ref-classes-update-alternatives>`" @@ -90,8 +85,7 @@ system and gives an overview of their function and contents. default regardless of the command name or package, a default for specific duplicated commands regardless of the package, or a default for specific commands tied to particular packages. Here are the - available syntax forms: - :: + available syntax forms:: ALTERNATIVE_PRIORITY = "priority" ALTERNATIVE_PRIORITY[name] = "priority" @@ -107,8 +101,7 @@ system and gives an overview of their function and contents. default location for all duplicated commands regardless of the command name or package, a default for specific duplicated commands regardless of the package, or a default for specific commands tied to - particular packages. Here are the available syntax forms: - :: + particular packages. Here are the available syntax forms:: ALTERNATIVE_TARGET = "target" ALTERNATIVE_TARGET[name] = "target" @@ -116,11 +109,11 @@ system and gives an overview of their function and contents. .. note:: - If ``ALTERNATIVE_TARGET`` is not defined, it inherits the value + If :term:`ALTERNATIVE_TARGET` is not defined, it inherits the value from the :term:`ALTERNATIVE_LINK_NAME` variable. - If ``ALTERNATIVE_LINK_NAME`` and ``ALTERNATIVE_TARGET`` are the - same, the target for ``ALTERNATIVE_TARGET`` has "``.{BPN}``" + If :term:`ALTERNATIVE_LINK_NAME` and :term:`ALTERNATIVE_TARGET` are the + same, the target for :term:`ALTERNATIVE_TARGET` has "``.{BPN}``" appended to it. Finally, if the file referenced has not been renamed, the @@ -138,8 +131,8 @@ system and gives an overview of their function and contents. class, this variable identifies a list of distribution features where at least one must be enabled in the current configuration in order for the OpenEmbedded build system to build the recipe. In other words, - if none of the features listed in ``ANY_OF_DISTRO_FEATURES`` - appear in ``DISTRO_FEATURES`` within the current configuration, then + if none of the features listed in :term:`ANY_OF_DISTRO_FEATURES` + appear in :term:`DISTRO_FEATURES` within the current configuration, then the recipe will be skipped, and if the build system attempts to build the recipe then an error will be triggered. @@ -159,8 +152,7 @@ system and gives an overview of their function and contents. determines the type of information used to create a released archive. You can use this variable to create archives of patched source, original source, configured source, and so forth by employing the - following variable flags (varflags): - :: + following variable flags (varflags):: ARCHIVER_MODE[src] = "original" # Uses original (unpacked) source files. ARCHIVER_MODE[src] = "patched" # Uses patched source files. This is the default. @@ -182,7 +174,7 @@ system and gives an overview of their function and contents. attempt to build. Instead, BitBake assumes these recipes have already been built. - In OpenEmbedded-Core, ``ASSUME_PROVIDED`` mostly specifies native + In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native tools that should not be built. An example is ``git-native``, which when specified, allows for the Git binary from the host to be used rather than building ``git-native``. @@ -193,14 +185,12 @@ system and gives an overview of their function and contents. system. Separate multiple entries using spaces. As an example, use the following form to add an ``shlib`` provider of - shlibname in packagename with the optional version: - :: + shlibname in packagename with the optional version:: shlibname:packagename[_version] Here is an example that adds a shared library named ``libEGL.so.1`` - as being provided by the ``libegl-implementation`` package: - :: + as being provided by the ``libegl-implementation`` package:: ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation" @@ -210,7 +200,7 @@ system and gives an overview of their function and contents. :term:`AUTO_LIBNAME_PKGS` When the :ref:`debian <ref-classes-debian>` class is inherited, - which is the default behavior, ``AUTO_LIBNAME_PKGS`` specifies which + which is the default behavior, :term:`AUTO_LIBNAME_PKGS` specifies which packages should be checked for libraries and renamed according to Debian library package naming. @@ -223,9 +213,8 @@ system and gives an overview of their function and contents. :ref:`syslinux <ref-classes-syslinux>` class checks this variable. :term:`AUTOREV` - When ``SRCREV`` is set to the value of this variable, it specifies to - use the latest source revision in the repository. Here is an example: - :: + When :term:`SRCREV` is set to the value of this variable, it specifies to + use the latest source revision in the repository. Here is an example:: SRCREV = "${AUTOREV}" @@ -235,7 +224,7 @@ system and gives an overview of their function and contents. have a kernel recipe that inherits the :ref:`kernel <ref-classes-kernel>` class and you use the previous statement. In this example, ``${SRCPV}`` does not automatically get - into ``PV``. Consequently, you need to change ``PV`` in your recipe + into :term:`PV`. Consequently, you need to change :term:`PV` in your recipe so that it does contain ``${SRCPV}``. For more information see the @@ -249,8 +238,8 @@ system and gives an overview of their function and contents. .. note:: - It is assumed that all changes to ``COMMON_LICENSE_DIR`` and - ``LICENSE_PATH`` have been done before ``AVAILABLE_LICENSES`` + It is assumed that all changes to :term:`COMMON_LICENSE_DIR` and + :term:`LICENSE_PATH` have been done before :term:`AVAILABLE_LICENSES` is defined (in :ref:`ref-classes-license`). :term:`AVAILTUNES` @@ -286,12 +275,11 @@ system and gives an overview of their function and contents. The directory within the :term:`Build Directory` in which the OpenEmbedded build system places generated objects during a recipe's build process. By default, this directory is the same as the - :term:`S` directory, which is defined as: - :: + :term:`S` directory, which is defined as:: S = "${WORKDIR}/${BP}" - You can separate the (``S``) directory and the directory pointed to + You can separate the (:term:`S`) directory and the directory pointed to by the ``B`` variable. Most Autotools-based recipes support separating these directories. The build system defaults to using separate directories for ``gcc`` and some kernel recipes. @@ -301,15 +289,13 @@ system and gives an overview of their function and contents. packages are packages installed only through the :term:`RRECOMMENDS` variable. You can prevent any of these "recommended" packages from being installed by listing them - with the ``BAD_RECOMMENDATIONS`` variable: - :: + with the :term:`BAD_RECOMMENDATIONS` variable:: BAD_RECOMMENDATIONS = "package_name package_name package_name ..." You can set this variable globally in your ``local.conf`` file or you can attach it to a specific image recipe by using the recipe name - override: - :: + override:: BAD_RECOMMENDATIONS_pn-target_image = "package_name" @@ -319,8 +305,8 @@ system and gives an overview of their function and contents. variable), the OpenEmbedded build system ignores your request and will install the packages to avoid dependency errors. - Support for this variable exists only when using the IPK and RPM - packaging backend. Support does not exist for DEB. + This variable is supported only when using the IPK and RPM + packaging backends. DEB is not supported. See the :term:`NO_RECOMMENDATIONS` and the :term:`PACKAGE_EXCLUDE` variables for related @@ -328,12 +314,12 @@ system and gives an overview of their function and contents. :term:`BASE_LIB` The library directory name for the CPU or Application Binary - Interface (ABI) tune. The ``BASE_LIB`` applies only in the Multilib + Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib context. See the ":ref:`dev-manual/common-tasks:combining multiple versions of library files into one image`" section in the Yocto Project Development Tasks Manual for information on Multilib. - The ``BASE_LIB`` variable is defined in the machine include files in + The :term:`BASE_LIB` variable is defined in the machine include files in the :term:`Source Directory`. If Multilib is not being used, the value defaults to "lib". @@ -346,11 +332,11 @@ system and gives an overview of their function and contents. to use to obtain the required source code. Following are considerations surrounding this variable: - - This host list is only used if ``BB_NO_NETWORK`` is either not set + - This host list is only used if :term:`BB_NO_NETWORK` is either not set or set to "0". - - Limited support for wildcard matching against the beginning of - host names exists. For example, the following setting matches + - There is limited support for wildcard matching against the beginning of + host names. For example, the following setting matches ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``. :: @@ -371,14 +357,14 @@ system and gives an overview of their function and contents. - Attempts to access networks not in the host list cause a failure. - Using ``BB_ALLOWED_NETWORKS`` in conjunction with + Using :term:`BB_ALLOWED_NETWORKS` in conjunction with :term:`PREMIRRORS` is very useful. Adding the host - you want to use to ``PREMIRRORS`` results in the source code being + you want to use to :term:`PREMIRRORS` results in the source code being fetched from an allowed location and avoids raising an error when a host that is not allowed is in a :term:`SRC_URI` statement. This is because the fetcher does not attempt to use the - host listed in ``SRC_URI`` after a successful fetch from the - ``PREMIRRORS`` occurs. + host listed in :term:`SRC_URI` after a successful fetch from the + :term:`PREMIRRORS` occurs. :term:`BB_DANGLINGAPPENDS_WARNONLY` Defines how BitBake handles situations where an append file @@ -394,8 +380,7 @@ system and gives an overview of their function and contents. You can change the default behavior by setting this variable to "1", "yes", or "true" in your ``local.conf`` file, which is located in the - :term:`Build Directory`: Here is an example: - :: + :term:`Build Directory`: Here is an example:: BB_DANGLINGAPPENDS_WARNONLY = "1" @@ -404,7 +389,7 @@ system and gives an overview of their function and contents. you to control the build based on these parameters. Disk space monitoring is disabled by default. To enable monitoring, - add the ``BB_DISKMON_DIRS`` variable to your ``conf/local.conf`` file + add the :term:`BB_DISKMON_DIRS` variable to your ``conf/local.conf`` file found in the :term:`Build Directory`. Use the following form: @@ -444,8 +429,7 @@ system and gives an overview of their function and contents. not specify G, M, or K, Kbytes is assumed by default. Do not use GB, MB, or KB. - Here are some examples: - :: + Here are some examples:: BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K" BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G" @@ -460,7 +444,7 @@ system and gives an overview of their function and contents. variable, the build system also issue a warning when the disk space in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number of free inodes drops below 100 Kbytes. Subsequent warnings are issued - during intervals as defined by the ``BB_DISKMON_WARNINTERVAL`` + during intervals as defined by the :term:`BB_DISKMON_WARNINTERVAL` variable. The second example stops the build after all currently executing @@ -477,16 +461,15 @@ system and gives an overview of their function and contents. intervals, define the variable in your ``conf/local.conf`` file in the :term:`Build Directory`. - If you are going to use the ``BB_DISKMON_WARNINTERVAL`` variable, you + If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you must also use the :term:`BB_DISKMON_DIRS` variable and define its action as "WARN". During the build, subsequent warnings are issued each time disk space or number of free inodes further reduces by the respective interval. - If you do not provide a ``BB_DISKMON_WARNINTERVAL`` variable and you - do use ``BB_DISKMON_DIRS`` with the "WARN" action, the disk - monitoring interval defaults to the following: - :: + If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you + do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk + monitoring interval defaults to the following:: BB_DISKMON_WARNINTERVAL = "50M,5K" @@ -509,8 +492,7 @@ system and gives an overview of their function and contents. G, M, or K for Gbytes, Mbytes, or Kbytes, respectively. You cannot use GB, MB, or KB. - Here is an example: - :: + Here is an example:: BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K" BB_DISKMON_WARNINTERVAL = "50M,5K" @@ -539,7 +521,7 @@ system and gives an overview of their function and contents. ``local.conf`` file in the :term:`Build Directory`. Once you have the tarballs containing your source files, you can - clean up your ``DL_DIR`` directory by deleting any Git or other + clean up your :term:`DL_DIR` directory by deleting any Git or other source control work directories. :term:`BB_NUMBER_THREADS` @@ -547,13 +529,13 @@ system and gives an overview of their function and contents. time. The OpenEmbedded build system automatically configures this variable to be equal to the number of cores on the build system. For example, a system with a dual core processor that also uses - hyper-threading causes the ``BB_NUMBER_THREADS`` variable to default + hyper-threading causes the :term:`BB_NUMBER_THREADS` variable to default to "4". For single socket systems (i.e. one CPU), you should not have to override this variable to gain optimal parallelism during builds. However, if you have very large systems that employ multiple physical - CPUs, you might want to make sure the ``BB_NUMBER_THREADS`` variable + CPUs, you might want to make sure the :term:`BB_NUMBER_THREADS` variable is not set higher than "20". For more information on speeding up builds, see the @@ -562,12 +544,11 @@ system and gives an overview of their function and contents. :term:`BB_SERVER_TIMEOUT` Specifies the time (in seconds) after which to unload the BitBake - server due to inactivity. Set ``BB_SERVER_TIMEOUT`` to determine how + server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how long the BitBake server stays resident between invocations. For example, the following statement in your ``local.conf`` file - instructs the server to be unloaded after 20 seconds of inactivity: - :: + instructs the server to be unloaded after 20 seconds of inactivity:: BB_SERVER_TIMEOUT = "20" @@ -576,30 +557,29 @@ system and gives an overview of their function and contents. :term:`BBCLASSEXTEND` Allows you to extend a recipe so that it builds variants of the - software. Common variants for recipes exist such as "natives" like + software. There are common variants for recipes as "natives" like ``quilt-native``, which is a copy of Quilt built to run on the build system; "crosses" such as ``gcc-cross``, which is a compiler built to run on the build machine but produces binaries that run on the target :term:`MACHINE`; "nativesdk", which targets the SDK - machine instead of ``MACHINE``; and "mulitlibs" in the form + machine instead of :term:`MACHINE`; and "mulitlibs" in the form "``multilib:``\ multilib_name". To build a different variant of the recipe with a minimal amount of - code, it usually is as simple as adding the following to your recipe: - :: + code, it usually is as simple as adding the following to your recipe:: BBCLASSEXTEND =+ "native nativesdk" BBCLASSEXTEND =+ "multilib:multilib_name" .. note:: - Internally, the ``BBCLASSEXTEND`` mechanism generates recipe + Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe variants by rewriting variable values and applying overrides such as ``_class-native``. For example, to generate a native version of a recipe, a :term:`DEPENDS` on "foo" is rewritten to a ``DEPENDS`` on "foo-native". - Even when using ``BBCLASSEXTEND``, the recipe is only parsed once. + Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once. Parsing once adds some limitations. For example, it is not possible to include a different file depending on the variant, since ``include`` statements are processed when the recipe is @@ -625,14 +605,14 @@ system and gives an overview of their function and contents. - effectively letting you control the precedence for the multiple layers. The precedence established through this variable stands regardless of a recipe's version (:term:`PV` variable). For - example, a layer that has a recipe with a higher ``PV`` value but for - which the ``BBFILE_PRIORITY`` is set to have a lower precedence still + example, a layer that has a recipe with a higher :term:`PV` value but for + which the :term:`BBFILE_PRIORITY` is set to have a lower precedence still has a lower precedence. - A larger value for the ``BBFILE_PRIORITY`` variable results in a + A larger value for the :term:`BBFILE_PRIORITY` variable results in a higher precedence. For example, the value 6 has a higher precedence - than the value 5. If not specified, the ``BBFILE_PRIORITY`` variable - is set based on layer dependencies (see the ``LAYERDEPENDS`` variable + than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable + is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable for more information. The default priority, if unspecified for a layer with no dependencies, is the lowest defined priority + 1 (or 1 if no priorities are defined). @@ -655,15 +635,14 @@ system and gives an overview of their function and contents. Activates content when identified layers are present. You identify the layers by the collections that the layers define. - Use the ``BBFILES_DYNAMIC`` variable to avoid ``.bbappend`` files + Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files whose corresponding ``.bb`` file is in a layer that attempts to modify other layers through ``.bbappend`` but does not want to introduce a hard dependency on those other layers. - Use the following form for ``BBFILES_DYNAMIC``: + Use the following form for :term:`BBFILES_DYNAMIC`: collection_name:filename_pattern The following example identifies two - collection names and two filename patterns: - :: + collection names and two filename patterns:: BBFILES_DYNAMIC += " \ clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \ @@ -685,14 +664,13 @@ system and gives an overview of their function and contents. :term:`BBINCLUDELOGS_LINES` If :term:`BBINCLUDELOGS` is set, specifies the maximum number of lines from the task log file to print when - reporting a failed task. If you do not set ``BBINCLUDELOGS_LINES``, + reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`, the entire log is printed. :term:`BBLAYERS` Lists the layers to enable during the build. This variable is defined in the ``bblayers.conf`` configuration file in the :term:`Build Directory`. - Here is an example: - :: + Here is an example:: BBLAYERS = " \ /home/scottrif/poky/meta \ @@ -707,7 +685,7 @@ system and gives an overview of their function and contents. :term:`BBMASK` Prevents BitBake from processing recipes and recipe append files. - You can use the ``BBMASK`` variable to "hide" these ``.bb`` and + You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and ``.bbappend`` files. BitBake ignores any recipe or recipe append files that match any of the expressions. It is as if BitBake does not see them at all. Consequently, matching files are not parsed or @@ -721,14 +699,13 @@ system and gives an overview of their function and contents. The following example uses a complete regular expression to tell BitBake to ignore all recipe and recipe append files in the - ``meta-ti/recipes-misc/`` directory: - :: + ``meta-ti/recipes-misc/`` directory:: BBMASK = "meta-ti/recipes-misc/" If you want to mask out multiple directories or recipes, you can specify multiple regular expression fragments. This next example - masks out multiple directories and individual recipes: :: + masks out multiple directories and individual recipes:: BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/" BBMASK += "/meta-oe/recipes-support/" @@ -746,8 +723,7 @@ system and gives an overview of their function and contents. building targets with multiple configurations. Use this variable in your ``conf/local.conf`` configuration file. Specify a multiconfigname for each configuration file you are using. For - example, the following line specifies three configuration files: - :: + example, the following line specifies three configuration files:: BBMULTICONFIG = "configA configB configC" @@ -756,7 +732,7 @@ system and gives an overview of their function and contents. ``conf/multiconfig`` directory (e.g. build_directory\ ``/conf/multiconfig/configA.conf``). - For information on how to use ``BBMULTICONFIG`` in an environment + For information on how to use :term:`BBMULTICONFIG` in an environment that supports building targets with multiple configurations, see the ":ref:`dev-manual/common-tasks:building images for multiple targets using multiple configurations`" section in the Yocto Project Development Tasks Manual. @@ -768,10 +744,9 @@ system and gives an overview of their function and contents. .. note:: If you run BitBake from a directory outside of the - :term:`Build Directory`, you must be sure to set ``BBPATH`` + :term:`Build Directory`, you must be sure to set :term:`BBPATH` to point to the Build Directory. Set the variable as you would any - environment variable and then run BitBake: - :: + environment variable and then run BitBake:: $ BBPATH = "build_directory" $ export BBPATH @@ -779,18 +754,17 @@ system and gives an overview of their function and contents. :term:`BBSERVER` - If defined in the BitBake environment, ``BBSERVER`` points to the + If defined in the BitBake environment, :term:`BBSERVER` points to the BitBake remote server. Use the following format to export the variable to the BitBake - environment: - :: + environment:: export BBSERVER=localhost:$port - By default, ``BBSERVER`` also appears in + By default, :term:`BBSERVER` also appears in :term:`bitbake:BB_HASHBASE_WHITELIST`. - Consequently, ``BBSERVER`` is excluded from checksum and dependency + Consequently, :term:`BBSERVER` is excluded from checksum and dependency data. :term:`BINCONFIG` @@ -803,8 +777,7 @@ system and gives an overview of their function and contents. replaced. To add multiple scripts, separate them by spaces. Here is an example - from the ``libpng`` recipe: - :: + from the ``libpng`` recipe:: BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" @@ -818,7 +791,7 @@ system and gives an overview of their function and contents. .. note:: - The ``BINCONFIG_GLOB`` variable uses + The :term:`BINCONFIG_GLOB` variable uses `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__, which is recognition and expansion of wildcards during pattern matching. Shell globbing is very similar to @@ -833,9 +806,8 @@ system and gives an overview of their function and contents. :term:`BP` The base recipe name and version but without any special recipe name - suffix (i.e. ``-native``, ``lib64-``, and so forth). ``BP`` is - comprised of the following: - :: + suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is + comprised of the following:: ${BPN}-${PV} @@ -856,23 +828,23 @@ system and gives an overview of their function and contents. :term:`BUILD_ARCH` Specifies the architecture of the build host (e.g. ``i686``). The - OpenEmbedded build system sets the value of ``BUILD_ARCH`` from the + OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the machine name reported by the ``uname`` command. :term:`BUILD_AS_ARCH` Specifies the architecture-specific assembler flags for the build - host. By default, the value of ``BUILD_AS_ARCH`` is empty. + host. By default, the value of :term:`BUILD_AS_ARCH` is empty. :term:`BUILD_CC_ARCH` Specifies the architecture-specific C compiler flags for the build - host. By default, the value of ``BUILD_CC_ARCH`` is empty. + host. By default, the value of :term:`BUILD_CC_ARCH` is empty. :term:`BUILD_CCLD` Specifies the linker command to be used for the build host when the C - compiler is being used as the linker. By default, ``BUILD_CCLD`` + compiler is being used as the linker. By default, :term:`BUILD_CCLD` points to GCC and passes as arguments the value of :term:`BUILD_CC_ARCH`, assuming - ``BUILD_CC_ARCH`` is set. + :term:`BUILD_CC_ARCH` is set. :term:`BUILD_CFLAGS` Specifies the flags to pass to the C compiler when building for the @@ -894,19 +866,19 @@ system and gives an overview of their function and contents. :term:`BUILD_FC` Specifies the Fortran compiler command for the build host. By - default, ``BUILD_FC`` points to Gfortran and passes as arguments the + default, :term:`BUILD_FC` points to Gfortran and passes as arguments the value of :term:`BUILD_CC_ARCH`, assuming - ``BUILD_CC_ARCH`` is set. + :term:`BUILD_CC_ARCH` is set. :term:`BUILD_LD` Specifies the linker command for the build host. By default, - ``BUILD_LD`` points to the GNU linker (ld) and passes as arguments + :term:`BUILD_LD` points to the GNU linker (ld) and passes as arguments the value of :term:`BUILD_LD_ARCH`, assuming - ``BUILD_LD_ARCH`` is set. + :term:`BUILD_LD_ARCH` is set. :term:`BUILD_LD_ARCH` Specifies architecture-specific linker flags for the build host. By - default, the value of ``BUILD_LD_ARCH`` is empty. + default, the value of :term:`BUILD_LD_ARCH` is empty. :term:`BUILD_LDFLAGS` Specifies the flags to pass to the linker when building for the build @@ -931,13 +903,13 @@ system and gives an overview of their function and contents. :term:`BUILD_PREFIX` The toolchain binary prefix used for native recipes. The OpenEmbedded - build system uses the ``BUILD_PREFIX`` value to set the + build system uses the :term:`BUILD_PREFIX` value to set the :term:`TARGET_PREFIX` when building for ``native`` recipes. :term:`BUILD_STRIP` Specifies the command to be used to strip debugging symbols from - binaries produced for the build host. By default, ``BUILD_STRIP`` + binaries produced for the build host. By default, :term:`BUILD_STRIP` points to ``${``\ :term:`BUILD_PREFIX`\ ``}strip``. @@ -950,7 +922,7 @@ system and gives an overview of their function and contents. on :term:`BUILD_ARCH`, :term:`BUILD_VENDOR`, and :term:`BUILD_OS`. You do not need to set the - ``BUILD_SYS`` variable yourself. + :term:`BUILD_SYS` variable yourself. :term:`BUILD_VENDOR` Specifies the vendor name to use when building for the build host. @@ -961,7 +933,7 @@ system and gives an overview of their function and contents. You can define this directory indirectly through the :ref:`structure-core-script` script by passing in a Build Directory path when you run the script. If you run the script and do - not provide a Build Directory path, the ``BUILDDIR`` defaults to + not provide a Build Directory path, the :term:`BUILDDIR` defaults to ``build`` in the current directory. :term:`BUILDHISTORY_COMMIT` @@ -975,25 +947,23 @@ system and gives an overview of their function and contents. you should set this value to "1". By default, the ``buildhistory`` class does not commit the build - history output in a local Git repository: - :: + history output in a local Git repository:: BUILDHISTORY_COMMIT ?= "0" :term:`BUILDHISTORY_COMMIT_AUTHOR` When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` class, this variable specifies the author to use for each Git commit. - In order for the ``BUILDHISTORY_COMMIT_AUTHOR`` variable to work, the + In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the :term:`BUILDHISTORY_COMMIT` variable must be set to "1". Git requires that the value you provide for the - ``BUILDHISTORY_COMMIT_AUTHOR`` variable takes the form of "name + :term:`BUILDHISTORY_COMMIT_AUTHOR` variable takes the form of "name email@host". Providing an email address or host that is not valid does not produce an error. - By default, the ``buildhistory`` class sets the variable as follows: - :: + By default, the ``buildhistory`` class sets the variable as follows:: BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>" @@ -1003,8 +973,7 @@ system and gives an overview of their function and contents. information is kept. For more information on how the variable works, see the ``buildhistory.class``. - By default, the ``buildhistory`` class sets the directory as follows: - :: + By default, the ``buildhistory`` class sets the directory as follows:: BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory" @@ -1032,8 +1001,7 @@ system and gives an overview of their function and contents. each file staged (i.e. the output of the task). By default, the ``buildhistory`` class enables the following - features: - :: + features:: BUILDHISTORY_FEATURES ?= "image package sdk" @@ -1049,8 +1017,7 @@ system and gives an overview of their function and contents. Consequently, you can include files that might not always be present. By default, the ``buildhistory`` class provides paths to the - following files: - :: + following files:: BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group" @@ -1058,7 +1025,7 @@ system and gives an overview of their function and contents. When inheriting the :ref:`buildhistory <ref-classes-buildhistory>` class, this variable optionally specifies a remote repository to which build history pushes Git changes. In order for - ``BUILDHISTORY_PUSH_REPO`` to work, + :term:`BUILDHISTORY_PUSH_REPO` to work, :term:`BUILDHISTORY_COMMIT` must be set to "1". @@ -1067,8 +1034,7 @@ system and gives an overview of their function and contents. that you have set up manually using ``git remote`` within the local repository. - By default, the ``buildhistory`` class sets the variable as follows: - :: + By default, the ``buildhistory`` class sets the variable as follows:: BUILDHISTORY_PUSH_REPO ?= "" @@ -1100,7 +1066,7 @@ system and gives an overview of their function and contents. Points to the location of the directory that holds build statistics when you use and enable the :ref:`buildstats <ref-classes-buildstats>` class. The - ``BUILDSTATS_BASE`` directory defaults to + :term:`BUILDSTATS_BASE` directory defaults to ``${``\ :term:`TMPDIR`\ ``}/buildstats/``. :term:`BUSYBOX_SPLIT_SUID` @@ -1109,7 +1075,7 @@ system and gives an overview of their function and contents. ``setuid root``, and one for the remaining features (i.e. those that do not require ``setuid root``). - The ``BUSYBOX_SPLIT_SUID`` variable defaults to "1", which results in + The :term:`BUSYBOX_SPLIT_SUID` variable defaults to "1", which results in splitting the output executable file. Set the variable to "0" to get a single output executable file. @@ -1126,7 +1092,7 @@ system and gives an overview of their function and contents. exported to an environment variable and thus made visible to the software being built during the compilation step. - Default initialization for ``CFLAGS`` varies depending on what is + Default initialization for :term:`CFLAGS` varies depending on what is being built: - :term:`TARGET_CFLAGS` when building for the @@ -1152,8 +1118,7 @@ system and gives an overview of their function and contents. ``bitbake.conf`` file. As an example, the following override allows you to install extra - files, but only when building for the target: - :: + files, but only when building for the target:: do_install_append_class-target() { install my-extra-file ${D}${sysconfdir} @@ -1161,18 +1126,17 @@ system and gives an overview of their function and contents. Here is an example where ``FOO`` is set to "native" when building for the build host, and to "other" when not - building for the build host: - :: + building for the build host:: FOO_class-native = "native" FOO = "other" - The underlying mechanism behind ``CLASSOVERRIDE`` is simply + The underlying mechanism behind :term:`CLASSOVERRIDE` is simply that it is included in the default value of :term:`OVERRIDES`. :term:`CLEANBROKEN` - If set to "1" within a recipe, ``CLEANBROKEN`` specifies that the + If set to "1" within a recipe, :term:`CLEANBROKEN` specifies that the ``make clean`` command does not work for the software being built. Consequently, the OpenEmbedded build system will not try to run ``make clean`` during the :ref:`ref-tasks-configure` @@ -1221,7 +1185,7 @@ system and gives an overview of their function and contents. .. note:: - The ``COMPLEMENTARY_GLOB`` variable uses Unix filename pattern matching + The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__), which is similar to the Unix style pathname pattern expansion (`glob <https://docs.python.org/3/library/glob.html>`__). @@ -1229,14 +1193,13 @@ system and gives an overview of their function and contents. The resulting list of complementary packages is associated with an item that can be added to :term:`IMAGE_FEATURES`. An example usage of - this is the "dev-pkgs" item that when added to ``IMAGE_FEATURES`` + this is the "dev-pkgs" item that when added to :term:`IMAGE_FEATURES` will install -dev packages (containing headers and other development files) for every package in the image. To add a new feature item pointing to a wildcard, use a variable flag to specify the feature item name and use the value to specify the - wildcard. Here is an example: - :: + wildcard. Here is an example:: COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev' @@ -1252,7 +1215,7 @@ system and gives an overview of their function and contents. :term:`CONF_VERSION` Tracks the version of the local configuration file (i.e. - ``local.conf``). The value for ``CONF_VERSION`` increments each time + ``local.conf``). The value for :term:`CONF_VERSION` increments each time ``build/conf/`` compatibility changes. :term:`CONFFILES` @@ -1262,29 +1225,28 @@ system and gives an overview of their function and contents. files you have changed after the original installation and that you now want to remain unchanged are overwritten. In other words, editable files might exist in the package that you do not want reset - as part of the package update process. You can use the ``CONFFILES`` + as part of the package update process. You can use the :term:`CONFFILES` variable to list the files in the package that you wish to prevent the PMS from overwriting during this update process. - To use the ``CONFFILES`` variable, provide a package name override + To use the :term:`CONFFILES` variable, provide a package name override that identifies the resulting package. Then, provide a - space-separated list of files. Here is an example: - :: + space-separated list of files. Here is an example:: CONFFILES_${PN} += "${sysconfdir}/file1 \ ${sysconfdir}/file2 ${sysconfdir}/file3" - A relationship exists between the ``CONFFILES`` and ``FILES`` - variables. The files listed within ``CONFFILES`` must be a subset of - the files listed within ``FILES``. Because the configuration files - you provide with ``CONFFILES`` are simply being identified so that + There is a relationship between the :term:`CONFFILES` and :term:`FILES` + variables. The files listed within :term:`CONFFILES` must be a subset of + the files listed within :term:`FILES`. Because the configuration files + you provide with :term:`CONFFILES` are simply being identified so that the PMS will not overwrite them, it makes sense that the files must - already be included as part of the package through the ``FILES`` + already be included as part of the package through the :term:`FILES` variable. .. note:: - When specifying paths as part of the ``CONFFILES`` variable, it is + When specifying paths as part of the :term:`CONFFILES` variable, it is good practice to use appropriate path variables. For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}`` rather than ``/usr/bin``. You can find a list of these variables at @@ -1297,7 +1259,7 @@ system and gives an overview of their function and contents. variable as an environment variable. By default, the variable is set to null (""). - The ``CONFIG_INITRAMFS_SOURCE`` can be either a single cpio archive + The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive with a ``.cpio`` suffix or a space-separated list of directories and files for building the initramfs image. A cpio archive should contain a filesystem archive to be used as an initramfs image. Directories @@ -1325,8 +1287,8 @@ system and gives an overview of their function and contents. :ref:`features_check <ref-classes-features_check>` class, this variable identifies distribution features that would be in conflict should the recipe be built. In other words, if the - ``CONFLICT_DISTRO_FEATURES`` variable lists a feature that also - appears in ``DISTRO_FEATURES`` within the current configuration, then + :term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also + appears in :term:`DISTRO_FEATURES` within the current configuration, then the recipe will be skipped, and if the build system attempts to build the recipe then an error will be triggered. @@ -1335,16 +1297,16 @@ system and gives an overview of their function and contents. archived by the :ref:`archiver <ref-classes-archiver>` class. In other words, if a license in a recipe's :term:`LICENSE` value is in the value of - ``COPYLEFT_LICENSE_EXCLUDE``, then its source is not archived by the + :term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the class. .. note:: - The ``COPYLEFT_LICENSE_EXCLUDE`` variable takes precedence over the + The :term:`COPYLEFT_LICENSE_EXCLUDE` variable takes precedence over the :term:`COPYLEFT_LICENSE_INCLUDE` variable. The default value, which is "CLOSED Proprietary", for - ``COPYLEFT_LICENSE_EXCLUDE`` is set by the + :term:`COPYLEFT_LICENSE_EXCLUDE` is set by the :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which is inherited by the ``archiver`` class. @@ -1352,7 +1314,7 @@ system and gives an overview of their function and contents. A space-separated list of licenses to include in the source archived by the :ref:`archiver <ref-classes-archiver>` class. In other words, if a license in a recipe's :term:`LICENSE` - value is in the value of ``COPYLEFT_LICENSE_INCLUDE``, then its + value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its source is archived by the class. The default value is set by the @@ -1363,28 +1325,28 @@ system and gives an overview of their function and contents. :term:`COPYLEFT_PN_EXCLUDE` A list of recipes to exclude in the source archived by the :ref:`archiver <ref-classes-archiver>` class. The - ``COPYLEFT_PN_EXCLUDE`` variable overrides the license inclusion and + :term:`COPYLEFT_PN_EXCLUDE` variable overrides the license inclusion and exclusion caused through the :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE` variables, respectively. The default value, which is "" indicating to not explicitly exclude - any recipes by name, for ``COPYLEFT_PN_EXCLUDE`` is set by the + any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which is inherited by the ``archiver`` class. :term:`COPYLEFT_PN_INCLUDE` A list of recipes to include in the source archived by the :ref:`archiver <ref-classes-archiver>` class. The - ``COPYLEFT_PN_INCLUDE`` variable overrides the license inclusion and + :term:`COPYLEFT_PN_INCLUDE` variable overrides the license inclusion and exclusion caused through the :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE` variables, respectively. The default value, which is "" indicating to not explicitly include - any recipes by name, for ``COPYLEFT_PN_INCLUDE`` is set by the + any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which is inherited by the ``archiver`` class. @@ -1394,7 +1356,7 @@ system and gives an overview of their function and contents. Recipe types are ``target``, ``native``, ``nativesdk``, ``cross``, ``crosssdk``, and ``cross-canadian``. - The default value, which is "target*", for ``COPYLEFT_RECIPE_TYPES`` + The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES` is set by the :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which is inherited by the ``archiver`` class. @@ -1408,7 +1370,7 @@ system and gives an overview of their function and contents. .. note:: - The ``COPY_LIC_DIRS`` does not offer a path for adding licenses for + The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for newly installed packages to an image, which might be most suitable for read-only filesystems that cannot be upgraded. See the :term:`LICENSE_CREATE_PACKAGE` variable for additional information. @@ -1424,7 +1386,7 @@ system and gives an overview of their function and contents. .. note:: - The ``COPY_LIC_MANIFEST`` does not offer a path for adding licenses for + The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for newly installed packages to an image, which might be most suitable for read-only filesystems that cannot be upgraded. See the :term:`LICENSE_CREATE_PACKAGE` variable for additional information. @@ -1444,24 +1406,24 @@ system and gives an overview of their function and contents. Specifies the parent directory of the OpenEmbedded-Core Metadata layer (i.e. ``meta``). - It is an important distinction that ``COREBASE`` points to the parent + It is an important distinction that :term:`COREBASE` points to the parent of this layer and not the layer itself. Consider an example where you have cloned the Poky Git repository and retained the ``poky`` name - for your local copy of the repository. In this case, ``COREBASE`` + for your local copy of the repository. In this case, :term:`COREBASE` points to the ``poky`` folder because it is the parent directory of the ``poky/meta`` layer. :term:`COREBASE_FILES` Lists files from the :term:`COREBASE` directory that should be copied other than the layers listed in the - ``bblayers.conf`` file. The ``COREBASE_FILES`` variable exists for - the purpose of copying metadata from the OpenEmbedded build system + ``bblayers.conf`` file. The :term:`COREBASE_FILES` variable allows + to copy metadata from the OpenEmbedded build system into the extensible SDK. - Explicitly listing files in ``COREBASE`` is needed because it + Explicitly listing files in :term:`COREBASE` is needed because it typically contains build directories and other files that should not normally be copied into the extensible SDK. Consequently, the value - of ``COREBASE_FILES`` is used in order to only copy the files that + of :term:`COREBASE_FILES` is used in order to only copy the files that are actually needed. :term:`CPP` @@ -1473,7 +1435,7 @@ system and gives an overview of their function and contents. variable and thus made visible to the software being built during the compilation step. - Default initialization for ``CPPFLAGS`` varies depending on what is + Default initialization for :term:`CPPFLAGS` varies depending on what is being built: - :term:`TARGET_CPPFLAGS` when building for @@ -1487,12 +1449,12 @@ system and gives an overview of their function and contents. :term:`CROSS_COMPILE` The toolchain binary prefix for the target tools. The - ``CROSS_COMPILE`` variable is the same as the + :term:`CROSS_COMPILE` variable is the same as the :term:`TARGET_PREFIX` variable. .. note:: - The OpenEmbedded build system sets the ``CROSS_COMPILE`` + The OpenEmbedded build system sets the :term:`CROSS_COMPILE` variable only in certain contexts (e.g. when building for kernel and kernel module recipes). @@ -1508,7 +1470,7 @@ system and gives an overview of their function and contents. exported to an environment variable and thus made visible to the software being built during the compilation step. - Default initialization for ``CXXFLAGS`` varies depending on what is + Default initialization for :term:`CXXFLAGS` varies depending on what is being built: - :term:`TARGET_CXXFLAGS` when building for @@ -1524,8 +1486,7 @@ system and gives an overview of their function and contents. The destination directory. The location in the :term:`Build Directory` where components are installed by the :ref:`ref-tasks-install` task. This location defaults - to: - :: + to:: ${WORKDIR}/image @@ -1544,37 +1505,29 @@ system and gives an overview of their function and contents. :term:`DEBIAN_NOAUTONAME` When the :ref:`debian <ref-classes-debian>` class is inherited, - which is the default behavior, ``DEBIAN_NOAUTONAME`` specifies a + which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a particular package should not be renamed according to Debian library package naming. You must use the package name as an override when you - set this variable. Here is an example from the ``fontconfig`` recipe: - :: + set this variable. Here is an example from the ``fontconfig`` recipe:: DEBIAN_NOAUTONAME_fontconfig-utils = "1" :term:`DEBIANNAME` When the :ref:`debian <ref-classes-debian>` class is inherited, - which is the default behavior, ``DEBIANNAME`` allows you to override + which is the default behavior, :term:`DEBIANNAME` allows you to override the library name for an individual package. Overriding the library name in these cases is rare. You must use the package name as an override when you set this variable. Here is an example from the - ``dbus`` recipe: - :: + ``dbus`` recipe:: DEBIANNAME_${PN} = "dbus-1" - :term:`DEBUGINFOD_URLS` - Points to the URL of the "debuginfod" server. Such that for every - debugging information lookup, the debuginfod client will query the - server and return the requested information. You set this variable - in your ``local.conf`` file. - :term:`DEBUG_BUILD` Specifies to build packages with debugging information. This - influences the value of the ``SELECTED_OPTIMIZATION`` variable. + influences the value of the :term:`SELECTED_OPTIMIZATION` variable. :term:`DEBUG_OPTIMIZATION` - The options to pass in ``TARGET_CFLAGS`` and ``CFLAGS`` when + The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when compiling a system for debugging. This variable defaults to "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe". @@ -1584,19 +1537,19 @@ system and gives an overview of their function and contents. The most common usage of this is variable is to set it to "-1" within a recipe for a development version of a piece of software. Using the variable in this way causes the stable version of the recipe to build - by default in the absence of ``PREFERRED_VERSION`` being used to + by default in the absence of :term:`PREFERRED_VERSION` being used to build the development version. .. note:: - The bias provided by ``DEFAULT_PREFERENCE`` is weak and is overridden + The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden by :term:`BBFILE_PRIORITY` if that variable is different between two layers that contain different versions of the same recipe. :term:`DEFAULTTUNE` The default CPU and Application Binary Interface (ABI) tunings (i.e. the "tune") used by the OpenEmbedded build system. The - ``DEFAULTTUNE`` helps define + :term:`DEFAULTTUNE` helps define :term:`TUNE_FEATURES`. The default tune is either implicitly or explicitly set by the @@ -1610,8 +1563,7 @@ system and gives an overview of their function and contents. needed by the recipe at build time. As an example, consider a recipe ``foo`` that contains the following - assignment: - :: + assignment:: DEPENDS = "bar" @@ -1622,21 +1574,20 @@ system and gives an overview of their function and contents. :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is implemented by having ``do_configure`` depend on the :ref:`ref-tasks-populate_sysroot` task of - each recipe listed in ``DEPENDS``, through a + each recipe listed in :term:`DEPENDS`, through a ``[``\ :ref:`deptask <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` declaration in the :ref:`base <ref-classes-base>` class. .. note:: - It seldom is necessary to reference, for example, ``STAGING_DIR_HOST`` + It seldom is necessary to reference, for example, :term:`STAGING_DIR_HOST` explicitly. The standard classes and build-related variables are configured to automatically use the appropriate staging sysroots. - As another example, ``DEPENDS`` can also be used to add utilities + As another example, :term:`DEPENDS` can also be used to add utilities that run on the build machine during the build. For example, a recipe that makes use of a code generator built by the recipe ``codegen`` - might have the following: - :: + might have the following:: DEPENDS = "codegen-native" @@ -1646,15 +1597,15 @@ system and gives an overview of their function and contents. .. note:: - - ``DEPENDS`` is a list of recipe names. Or, to be more precise, + - :term:`DEPENDS` is a list of recipe names. Or, to be more precise, it is a list of :term:`PROVIDES` names, which usually match recipe names. Putting a package name such as - "foo-dev" in ``DEPENDS`` does not make sense. Use "foo" + "foo-dev" in :term:`DEPENDS` does not make sense. Use "foo" instead, as this will put files from all the packages that make up ``foo``, which includes those from ``foo-dev``, into the sysroot. - - One recipe having another recipe in ``DEPENDS`` does not by + - One recipe having another recipe in :term:`DEPENDS` does not by itself add any runtime dependencies between the packages produced by the two recipes. However, as explained in the ":ref:`overview-manual/concepts:automatically added runtime dependencies`" @@ -1662,12 +1613,12 @@ system and gives an overview of their function and contents. runtime dependencies will often be added automatically, meaning ``DEPENDS`` alone is sufficient for most recipes. - - Counterintuitively, ``DEPENDS`` is often necessary even for + - Counterintuitively, :term:`DEPENDS` is often necessary even for recipes that install precompiled components. For example, if ``libfoo`` is a precompiled library that links against ``libbar``, then linking against ``libfoo`` requires both ``libfoo`` and ``libbar`` to be available in the sysroot. - Without a ``DEPENDS`` from the recipe that installs ``libfoo`` + Without a :term:`DEPENDS` from the recipe that installs ``libfoo`` to the recipe that installs ``libbar``, other recipes might fail to link against ``libfoo``. @@ -1702,13 +1653,12 @@ system and gives an overview of their function and contents. The BitBake configuration file initially defines the ``DEPLOY_DIR_DEB`` variable as a sub-folder of - :term:`DEPLOY_DIR`: - :: + :term:`DEPLOY_DIR`:: DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb" The :ref:`package_deb <ref-classes-package_deb>` class uses the - ``DEPLOY_DIR_DEB`` variable to make sure the + :term:`DEPLOY_DIR_DEB` variable to make sure the :ref:`ref-tasks-package_write_deb` task writes Debian packages into the appropriate folder. For more information on how packaging works, see the @@ -1723,6 +1673,13 @@ system and gives an overview of their function and contents. resides within the :term:`Build Directory` as ``${DEPLOY_DIR}/images/${MACHINE}/``. + It must not be used directly in recipes when deploying files. Instead, + it's only useful when a recipe needs to "read" a file already deployed + by a dependency. So, it should be filled with the contents of + :term:`DEPLOYDIR` by the :ref:`deploy <ref-classes-deploy>` class or + with the contents of :term:`IMGDEPLOYDIR` by the :ref:`image + <ref-classes-image>` class. + For more information on the structure of the Build Directory, see ":ref:`ref-manual/structure:the build directory - \`\`build/\`\``" section. For more detail on the contents of the ``deploy`` directory, see the @@ -1738,13 +1695,12 @@ system and gives an overview of their function and contents. "package_ipk". The BitBake configuration file initially defines this variable as a - sub-folder of :term:`DEPLOY_DIR`: - :: + sub-folder of :term:`DEPLOY_DIR`:: DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk" The :ref:`package_ipk <ref-classes-package_ipk>` class uses the - ``DEPLOY_DIR_IPK`` variable to make sure the + :term:`DEPLOY_DIR_IPK` variable to make sure the :ref:`ref-tasks-package_write_ipk` task writes IPK packages into the appropriate folder. For more information on how packaging works, see the @@ -1759,13 +1715,12 @@ system and gives an overview of their function and contents. "package_rpm". The BitBake configuration file initially defines this variable as a - sub-folder of :term:`DEPLOY_DIR`: - :: + sub-folder of :term:`DEPLOY_DIR`:: DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm" The :ref:`package_rpm <ref-classes-package_rpm>` class uses the - ``DEPLOY_DIR_RPM`` variable to make sure the + :term:`DEPLOY_DIR_RPM` variable to make sure the :ref:`ref-tasks-package_write_rpm` task writes RPM packages into the appropriate folder. For more information on how packaging works, see the @@ -1780,13 +1735,12 @@ system and gives an overview of their function and contents. "package_tar". The BitBake configuration file initially defines this variable as a - sub-folder of :term:`DEPLOY_DIR`: - :: + sub-folder of :term:`DEPLOY_DIR`:: DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar" The :ref:`package_tar <ref-classes-package_tar>` class uses the - ``DEPLOY_DIR_TAR`` variable to make sure the + :term:`DEPLOY_DIR_TAR` variable to make sure the :ref:`ref-tasks-package_write_tar` task writes TAR packages into the appropriate folder. For more information on how packaging works, see the @@ -1795,20 +1749,19 @@ system and gives an overview of their function and contents. :term:`DEPLOYDIR` When inheriting the :ref:`deploy <ref-classes-deploy>` class, the - ``DEPLOYDIR`` points to a temporary work area for deployed files that - is set in the ``deploy`` class as follows: - :: + :term:`DEPLOYDIR` points to a temporary work area for deployed files that + is set in the ``deploy`` class as follows:: DEPLOYDIR = "${WORKDIR}/deploy-${PN}" Recipes inheriting the ``deploy`` class should copy files to be - deployed into ``DEPLOYDIR``, and the class will take care of copying + deployed into :term:`DEPLOYDIR`, and the class will take care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards. :term:`DESCRIPTION` The package description used by package managers. If not set, - ``DESCRIPTION`` takes the value of the :term:`SUMMARY` + :term:`DESCRIPTION` takes the value of the :term:`SUMMARY` variable. :term:`DISTRO` @@ -1816,27 +1769,26 @@ system and gives an overview of their function and contents. of the distribution, see the :term:`DISTRO_NAME` variable. - The ``DISTRO`` variable corresponds to a distribution configuration + The :term:`DISTRO` variable corresponds to a distribution configuration file whose root name is the same as the variable's argument and whose filename extension is ``.conf``. For example, the distribution configuration file for the Poky distribution is named ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory of the :term:`Source Directory`. - Within that ``poky.conf`` file, the ``DISTRO`` variable is set as - follows: - :: + Within that ``poky.conf`` file, the :term:`DISTRO` variable is set as + follows:: DISTRO = "poky" Distribution configuration files are located in a ``conf/distro`` directory within the :term:`Metadata` that contains the - distribution configuration. The value for ``DISTRO`` must not contain + distribution configuration. The value for :term:`DISTRO` must not contain spaces, and is typically all lower-case. .. note:: - If the ``DISTRO`` variable is blank, a set of default configurations + If the :term:`DISTRO` variable is blank, a set of default configurations are used, which are specified within ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. @@ -1863,11 +1815,11 @@ system and gives an overview of their function and contents. configuration file. In most cases, the presence or absence of a feature in - ``DISTRO_FEATURES`` is translated to the appropriate option supplied + :term:`DISTRO_FEATURES` is translated to the appropriate option supplied to the configure script during the :ref:`ref-tasks-configure` task for recipes that optionally support the feature. For example, specifying "x11" in - ``DISTRO_FEATURES``, causes every piece of software built for the + :term:`DISTRO_FEATURES`, causes every piece of software built for the target that can optionally support X11 to have its X11 support enabled. @@ -1876,8 +1828,8 @@ system and gives an overview of their function and contents. provide with this variable, see the ":ref:`ref-features-distro`" section. :term:`DISTRO_FEATURES_BACKFILL` - Features to be added to ``DISTRO_FEATURES`` if not also present in - ``DISTRO_FEATURES_BACKFILL_CONSIDERED``. + Features to be added to :term:`DISTRO_FEATURES` if not also present in + :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`. This variable is set in the ``meta/conf/bitbake.conf`` file. It is not intended to be user-configurable. It is best to just reference @@ -1886,8 +1838,8 @@ system and gives an overview of their function and contents. for more information. :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` - Features from ``DISTRO_FEATURES_BACKFILL`` that should not be - backfilled (i.e. added to ``DISTRO_FEATURES``) during the build. See + Features from :term:`DISTRO_FEATURES_BACKFILL` that should not be + backfilled (i.e. added to :term:`DISTRO_FEATURES`) during the build. See the ":ref:`ref-features-backfill`" section for more information. :term:`DISTRO_FEATURES_DEFAULT` @@ -1899,15 +1851,14 @@ system and gives an overview of their function and contents. able to reuse the default :term:`DISTRO_FEATURES` options without the need to write out the full set. Here is an example that uses - ``DISTRO_FEATURES_DEFAULT`` from a custom distro configuration file: - :: + :term:`DISTRO_FEATURES_DEFAULT` from a custom distro configuration file:: DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature" :term:`DISTRO_FEATURES_FILTER_NATIVE` Specifies a list of features that if present in the target :term:`DISTRO_FEATURES` value should be - included in ``DISTRO_FEATURES`` when building native recipes. This + included in :term:`DISTRO_FEATURES` when building native recipes. This variable is used in addition to the features filtered using the :term:`DISTRO_FEATURES_NATIVE` variable. @@ -1915,7 +1866,7 @@ system and gives an overview of their function and contents. :term:`DISTRO_FEATURES_FILTER_NATIVESDK` Specifies a list of features that if present in the target :term:`DISTRO_FEATURES` value should be - included in ``DISTRO_FEATURES`` when building nativesdk recipes. This + included in :term:`DISTRO_FEATURES` when building nativesdk recipes. This variable is used in addition to the features filtered using the :term:`DISTRO_FEATURES_NATIVESDK` variable. @@ -1940,16 +1891,15 @@ system and gives an overview of their function and contents. The long name of the distribution. For information on the short name of the distribution, see the :term:`DISTRO` variable. - The ``DISTRO_NAME`` variable corresponds to a distribution + The :term:`DISTRO_NAME` variable corresponds to a distribution configuration file whose root name is the same as the variable's argument and whose filename extension is ``.conf``. For example, the distribution configuration file for the Poky distribution is named ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory of the :term:`Source Directory`. - Within that ``poky.conf`` file, the ``DISTRO_NAME`` variable is set - as follows: - :: + Within that ``poky.conf`` file, the :term:`DISTRO_NAME` variable is set + as follows:: DISTRO_NAME = "Poky (Yocto Project Reference Distro)" @@ -1959,7 +1909,7 @@ system and gives an overview of their function and contents. .. note:: - If the ``DISTRO_NAME`` variable is blank, a set of default + If the :term:`DISTRO_NAME` variable is blank, a set of default configurations are used, which are specified within ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. @@ -1971,10 +1921,10 @@ system and gives an overview of their function and contents. distribution. By default, this list includes the value of :term:`DISTRO`. - You can extend ``DISTROOVERRIDES`` to add extra overrides that should + You can extend :term:`DISTROOVERRIDES` to add extra overrides that should apply to the distribution. - The underlying mechanism behind ``DISTROOVERRIDES`` is simply that it + The underlying mechanism behind :term:`DISTROOVERRIDES` is simply that it is included in the default value of :term:`OVERRIDES`. @@ -1993,13 +1943,13 @@ system and gives an overview of their function and contents. :term:`DL_DIR` The central download directory used by the build process to store - downloads. By default, ``DL_DIR`` gets files suitable for mirroring + downloads. By default, :term:`DL_DIR` gets files suitable for mirroring for everything except Git repositories. If you want tarballs of Git repositories, use the :term:`BB_GENERATE_MIRROR_TARBALLS` variable. - You can set this directory by defining the ``DL_DIR`` variable in the + You can set this directory by defining the :term:`DL_DIR` variable in the ``conf/local.conf`` file. This directory is self-maintaining and you should not have to touch it. By default, the directory is ``downloads`` in the :term:`Build Directory`. @@ -2013,7 +1963,7 @@ system and gives an overview of their function and contents. During a first build, the system downloads many different source code tarballs from various upstream projects. Downloading can take a while, particularly if your network connection is slow. Tarballs are - all stored in the directory defined by ``DL_DIR`` and the build + all stored in the directory defined by :term:`DL_DIR` and the build system looks there first to find source tarballs. .. note:: @@ -2042,7 +1992,7 @@ system and gives an overview of their function and contents. :term:`EFI_PROVIDER` When building bootable images (i.e. where ``hddimg``, ``iso``, or ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the - ``EFI_PROVIDER`` variable specifies the EFI bootloader to use. The + :term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The default is "grub-efi", but "systemd-boot" can be used instead. See the :ref:`systemd-boot <ref-classes-systemd-boot>` and @@ -2063,10 +2013,9 @@ system and gives an overview of their function and contents. database. By default, the value of this variable is ``${``\ :term:`LOG_DIR`\ ``}/error-report``. - You can set ``ERR_REPORT_DIR`` to the path you want the error + You can set :term:`ERR_REPORT_DIR` to the path you want the error reporting tool to store the debug files as follows in your - ``local.conf`` file: - :: + ``local.conf`` file:: ERR_REPORT_DIR = "path" @@ -2089,13 +2038,12 @@ system and gives an overview of their function and contents. libraries resolver might implicitly define some dependencies between packages. - The ``EXCLUDE_FROM_SHLIBS`` variable is similar to the + The :term:`EXCLUDE_FROM_SHLIBS` variable is similar to the :term:`PRIVATE_LIBS` variable, which excludes a package's particular libraries only and not the whole package. - Use the ``EXCLUDE_FROM_SHLIBS`` variable by setting it to "1" for a - particular package: - :: + Use the :term:`EXCLUDE_FROM_SHLIBS` variable by setting it to "1" for a + particular package:: EXCLUDE_FROM_SHLIBS = "1" @@ -2110,18 +2058,18 @@ system and gives an overview of their function and contents. .. note:: - Recipes added to ``EXCLUDE_FROM_WORLD`` may still be built during a + Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a world build in order to satisfy dependencies of other recipes. Adding - a recipe to ``EXCLUDE_FROM_WORLD`` only ensures that the recipe is not + a recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not explicitly added to the list of build targets in a world build. :term:`EXTENDPE` Used with file and pathnames to create a prefix for a recipe's - version based on the recipe's :term:`PE` value. If ``PE`` - is set and greater than zero for a recipe, ``EXTENDPE`` becomes that - value (e.g if ``PE`` is equal to "1" then ``EXTENDPE`` becomes "1"). - If a recipe's ``PE`` is not set (the default) or is equal to zero, - ``EXTENDPE`` becomes "". + version based on the recipe's :term:`PE` value. If :term:`PE` + is set and greater than zero for a recipe, :term:`EXTENDPE` becomes that + value (e.g if :term:`PE` is equal to "1" then :term:`EXTENDPE` becomes "1"). + If a recipe's :term:`PE` is not set (the default) or is equal to zero, + :term:`EXTENDPE` becomes "". See the :term:`STAMP` variable for an example. @@ -2129,8 +2077,7 @@ system and gives an overview of their function and contents. The full package version specification as it appears on the final packages produced by a recipe. The variable's value is normally used to fix a runtime dependency to the exact same version of another - package in the same recipe: - :: + package in the same recipe:: RDEPENDS_${PN}-additional-module = "${PN} (= ${EXTENDPKGV})" @@ -2138,11 +2085,11 @@ system and gives an overview of their function and contents. manager to upgrade these types of packages in lock-step. :term:`EXTERNAL_KERNEL_TOOLS` - When set, the ``EXTERNAL_KERNEL_TOOLS`` variable indicates that these + When set, the :term:`EXTERNAL_KERNEL_TOOLS` variable indicates that these tools are not in the source tree. When kernel tools are available in the tree, they are preferred over - any externally installed tools. Setting the ``EXTERNAL_KERNEL_TOOLS`` + any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS` variable tells the OpenEmbedded build system to prefer the installed external tools. See the :ref:`kernel-yocto <ref-classes-kernel-yocto>` class in @@ -2177,7 +2124,7 @@ system and gives an overview of their function and contents. :term:`EXTRA_AUTORECONF` For recipes inheriting the :ref:`autotools <ref-classes-autotools>` - class, you can use ``EXTRA_AUTORECONF`` to specify extra options to + class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to pass to the ``autoreconf`` command that is executed during the :ref:`ref-tasks-configure` task. @@ -2230,8 +2177,7 @@ system and gives an overview of their function and contents. Specifies additional options for the image creation command that has been specified in :term:`IMAGE_CMD`. When setting this variable, use an override for the associated image type. Here is - an example: - :: + an example:: EXTRA_IMAGECMD_ext3 ?= "-i 4096" @@ -2240,7 +2186,7 @@ system and gives an overview of their function and contents. installing into the root filesystem. Sometimes a recipe is required to build the final image but is not - needed in the root filesystem. You can use the ``EXTRA_IMAGEDEPENDS`` + needed in the root filesystem. You can use the :term:`EXTRA_IMAGEDEPENDS` variable to list these recipes and thus specify the dependencies. A typical example is a required bootloader in a machine configuration. @@ -2255,8 +2201,7 @@ system and gives an overview of their function and contents. added to the beginning of the environment variable ``PATH``. As an example, the following prepends "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to - ``PATH``: - :: + ``PATH``:: EXTRANATIVEPATH = "foo bar" @@ -2272,12 +2217,12 @@ system and gives an overview of their function and contents. :term:`EXTRA_OEMAKE` Additional GNU ``make`` options. - Because the ``EXTRA_OEMAKE`` defaults to "", you need to set the + Because the :term:`EXTRA_OEMAKE` defaults to "", you need to set the variable to specify any required GNU options. :term:`PARALLEL_MAKE` and :term:`PARALLEL_MAKEINST` also make use of - ``EXTRA_OEMAKE`` to pass the required flags. + :term:`EXTRA_OEMAKE` to pass the required flags. :term:`EXTRA_OESCONS` When inheriting the :ref:`scons <ref-classes-scons>` class, this @@ -2293,9 +2238,8 @@ system and gives an overview of their function and contents. group configurations to a specific recipe. The set list of commands you can configure using the - ``EXTRA_USERS_PARAMS`` is shown in the ``extrausers`` class. These - commands map to the normal Unix commands of the same names: - :: + :term:`EXTRA_USERS_PARAMS` is shown in the ``extrausers`` class. These + commands map to the normal Unix commands of the same names:: # EXTRA_USERS_PARAMS = "\ # useradd -p '' tester; \ @@ -2320,20 +2264,19 @@ system and gives an overview of their function and contents. :term:`FEATURE_PACKAGES` Defines one or more packages to include in an image when a specific item is included in :term:`IMAGE_FEATURES`. - When setting the value, ``FEATURE_PACKAGES`` should have the name of - the feature item as an override. Here is an example: - :: + When setting the value, :term:`FEATURE_PACKAGES` should have the name of + the feature item as an override. Here is an example:: FEATURE_PACKAGES_widget = "package1 package2" - In this example, if "widget" were added to ``IMAGE_FEATURES``, + In this example, if "widget" were added to :term:`IMAGE_FEATURES`, package1 and package2 would be included in the image. .. note:: - Packages installed by features defined through ``FEATURE_PACKAGES`` + Packages installed by features defined through :term:`FEATURE_PACKAGES` are often package groups. While similarly named, you should not - confuse the ``FEATURE_PACKAGES`` variable with package groups, which + confuse the :term:`FEATURE_PACKAGES` variable with package groups, which are discussed elsewhere in the documentation. :term:`FEED_DEPLOYDIR_BASE_URI` @@ -2342,8 +2285,7 @@ system and gives an overview of their function and contents. OPKG to support runtime package management of IPK packages. You set this variable in your ``local.conf`` file. - Consider the following example: - :: + Consider the following example:: FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir" @@ -2359,11 +2301,10 @@ system and gives an overview of their function and contents. :term:`PACKAGES` variable lists the packages generated by a recipe. - To use the ``FILES`` variable, provide a package name override that + To use the :term:`FILES` variable, provide a package name override that identifies the resulting package. Then, provide a space-separated list of files or paths that identify the files you want included as - part of the resulting package. Here is an example: - :: + part of the resulting package. Here is an example:: FILES_${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile" @@ -2375,7 +2316,7 @@ system and gives an overview of their function and contents. syntax. For details on the syntax, see the documentation by following the previous link. - - When specifying paths as part of the ``FILES`` variable, it is + - When specifying paths as part of the :term:`FILES` variable, it is good practice to use appropriate path variables. For example, use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}`` rather than ``/usr/bin``. You can find a list of these @@ -2384,7 +2325,7 @@ system and gives an overview of their function and contents. find the default values of the various ``FILES_*`` variables in this file. - If some of the files you provide with the ``FILES`` variable are + If some of the files you provide with the :term:`FILES` variable are editable and you know they should not be overwritten during the package update process by the Package Management System (PMS), you can identify these files so that the PMS will not overwrite them. See @@ -2394,12 +2335,11 @@ system and gives an overview of their function and contents. :term:`FILES_SOLIBSDEV` Defines the file specification to match :term:`SOLIBSDEV`. In other words, - ``FILES_SOLIBSDEV`` defines the full path name of the development + :term:`FILES_SOLIBSDEV` defines the full path name of the development symbolic link (symlink) for shared libraries on the target platform. The following statement from the ``bitbake.conf`` shows how it is - set: - :: + set:: FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}" @@ -2408,13 +2348,12 @@ system and gives an overview of their function and contents. looking for files and patches as it processes recipes and append files. The default directories BitBake uses when it processes recipes are initially defined by the :term:`FILESPATH` - variable. You can extend ``FILESPATH`` variable by using - ``FILESEXTRAPATHS``. + variable. You can extend :term:`FILESPATH` variable by using + :term:`FILESEXTRAPATHS`. Best practices dictate that you accomplish this by using - ``FILESEXTRAPATHS`` from within a ``.bbappend`` file and that you - prepend paths as follows: - :: + :term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you + prepend paths as follows:: FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" @@ -2424,7 +2363,7 @@ system and gives an overview of their function and contents. .. note:: - When extending ``FILESEXTRAPATHS``, be sure to use the immediate + When extending :term:`FILESEXTRAPATHS`, be sure to use the immediate expansion (``:=``) operator. Immediate expansion makes sure that BitBake evaluates :term:`THISDIR` at the time the directive is encountered rather than at some later time when @@ -2436,24 +2375,21 @@ system and gives an overview of their function and contents. are directing BitBake to extend the path by prepending directories to the search path. - Here is another common use: - :: + Here is another common use:: FILESEXTRAPATHS_prepend := "${THISDIR}/files:" In this example, the build system extends the - ``FILESPATH`` variable to include a directory named ``files`` that is + :term:`FILESPATH` variable to include a directory named ``files`` that is in the same directory as the corresponding append file. - This next example specifically adds three paths: - :: + This next example specifically adds three paths:: FILESEXTRAPATHS_prepend := "path_1:path_2:path_3:" A final example shows how you can extend the search path and include a :term:`MACHINE`-specific override, which is useful - in a BSP layer: - :: + in a BSP layer:: FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:" @@ -2467,7 +2403,7 @@ system and gives an overview of their function and contents. .. note:: For a layer that supports a single BSP, the override could just be - the value of ``MACHINE``. + the value of :term:`MACHINE`. By prepending paths in ``.bbappend`` files, you allow multiple append files that reside in different layers but are used for the same @@ -2476,7 +2412,7 @@ system and gives an overview of their function and contents. :term:`FILESOVERRIDES` A subset of :term:`OVERRIDES` used by the OpenEmbedded build system for creating - :term:`FILESPATH`. The ``FILESOVERRIDES`` variable + :term:`FILESPATH`. The :term:`FILESOVERRIDES` variable uses overrides to automatically extend the :term:`FILESPATH` variable. For an example of how that works, see the :term:`FILESPATH` variable @@ -2485,14 +2421,13 @@ system and gives an overview of their function and contents. ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`" section of the BitBake User Manual. - By default, the ``FILESOVERRIDES`` variable is defined as: - :: + By default, the :term:`FILESOVERRIDES` variable is defined as:: FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}" .. note:: - Do not hand-edit the ``FILESOVERRIDES`` variable. The values match up + Do not hand-edit the :term:`FILESOVERRIDES` variable. The values match up with expected overrides and are used in an expected manner by the build system. @@ -2501,49 +2436,47 @@ system and gives an overview of their function and contents. when searching for patches and files. During the build process, BitBake searches each directory in - ``FILESPATH`` in the specified order when looking for files and + :term:`FILESPATH` in the specified order when looking for files and patches specified by each ``file://`` URI in a recipe's :term:`SRC_URI` statements. - The default value for the ``FILESPATH`` variable is defined in the + The default value for the :term:`FILESPATH` variable is defined in the ``base.bbclass`` class found in ``meta/classes`` in the - :term:`Source Directory`: - :: + :term:`Source Directory`:: FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \ "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}" The - ``FILESPATH`` variable is automatically extended using the overrides + :term:`FILESPATH` variable is automatically extended using the overrides from the :term:`FILESOVERRIDES` variable. .. note:: - - Do not hand-edit the ``FILESPATH`` variable. If you want the + - Do not hand-edit the :term:`FILESPATH` variable. If you want the build system to look in directories other than the defaults, - extend the ``FILESPATH`` variable by using the + extend the :term:`FILESPATH` variable by using the :term:`FILESEXTRAPATHS` variable. - - Be aware that the default ``FILESPATH`` directories do not map + - Be aware that the default :term:`FILESPATH` directories do not map to directories in custom layers where append files (``.bbappend``) are used. If you want the build system to find patches or files that reside with your append files, you need - to extend the ``FILESPATH`` variable by using the - ``FILESEXTRAPATHS`` variable. + to extend the :term:`FILESPATH` variable by using the + :term:`FILESEXTRAPATHS` variable. You can take advantage of this searching behavior in useful ways. For - example, consider a case where the following directory structure - exists for general and machine-specific configurations: - :: + example, consider a case where there is the following directory structure + for general and machine-specific configurations:: files/defconfig files/MACHINEA/defconfig files/MACHINEB/defconfig - Also in the example, the ``SRC_URI`` statement contains + Also in the example, the :term:`SRC_URI` statement contains "file://defconfig". Given this scenario, you can set :term:`MACHINE` to "MACHINEA" and cause the build - system to use files from ``files/MACHINEA``. Set ``MACHINE`` to + system to use files from ``files/MACHINEA``. Set :term:`MACHINE` to "MACHINEB" and the build system uses files from ``files/MACHINEB``. Finally, for any machine other than "MACHINEA" and "MACHINEB", the build system uses files from ``files/defconfig``. @@ -2568,7 +2501,7 @@ system and gives an overview of their function and contents. permissions setting table, you should place it in your layer or the distro's layer. - You define the ``FILESYSTEM_PERMS_TABLES`` variable in the + You define the :term:`FILESYSTEM_PERMS_TABLES` variable in the ``conf/local.conf`` file, which is found in the :term:`Build Directory`, to point to your custom ``fs-perms.txt``. You can specify more than a single file permissions @@ -2587,7 +2520,7 @@ system and gives an overview of their function and contents. :term:`FIT_GENERATE_KEYS` Decides whether to generate the keys for signing fitImage if they - don't already exist. The keys are created in ``UBOOT_SIGN_KEYDIR``. + don't already exist. The keys are created in :term:`UBOOT_SIGN_KEYDIR`. The default value is 0. :term:`FIT_HASH_ALG` @@ -2652,7 +2585,7 @@ system and gives an overview of their function and contents. Set the variable to "1" to force the removal of these packages. :term:`FULL_OPTIMIZATION` - The options to pass in ``TARGET_CFLAGS`` and ``CFLAGS`` when + The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when compiling an optimized system. This variable defaults to "-O2 -pipe ${DEBUG_FLAGS}". @@ -2662,16 +2595,14 @@ system and gives an overview of their function and contents. Programming (ROP) attacks much more difficult to execute. By default the ``security_flags.inc`` file enables PIE by setting the - variable as follows: - :: + variable as follows:: GCCPIE ?= "--enable-default-pie" :term:`GCCVERSION` Specifies the default version of the GNU C Compiler (GCC) used for - compilation. By default, ``GCCVERSION`` is set to "8.x" in the - ``meta/conf/distro/include/tcmode-default.inc`` include file: - :: + compilation. By default, :term:`GCCVERSION` is set to "8.x" in the + ``meta/conf/distro/include/tcmode-default.inc`` include file:: GCCVERSION ?= "8.%" @@ -2694,7 +2625,7 @@ system and gives an overview of their function and contents. If you specifically remove the locale ``en_US.UTF-8``, you must set :term:`IMAGE_LINGUAS` appropriately. - You can set ``GLIBC_GENERATE_LOCALES`` in your ``local.conf`` file. + You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file. By default, all locales are generated. :: @@ -2706,8 +2637,7 @@ system and gives an overview of their function and contents. passed to the ``groupadd`` command if you wish to add a group to the system when the package is installed. - Here is an example from the ``dbus`` recipe: - :: + Here is an example from the ``dbus`` recipe:: GROUPADD_PARAM_${PN} = "-r netdev" @@ -2737,7 +2667,7 @@ system and gives an overview of their function and contents. configuration. Use a semi-colon character (``;``) to separate multiple options. - The ``GRUB_OPTS`` variable is optional. See the + The :term:`GRUB_OPTS` variable is optional. See the :ref:`grub-efi <ref-classes-grub-efi>` class for more information on how this variable is used. @@ -2745,7 +2675,7 @@ system and gives an overview of their function and contents. Specifies the timeout before executing the default ``LABEL`` in the GNU GRand Unified Bootloader (GRUB). - The ``GRUB_TIMEOUT`` variable is optional. See the + The :term:`GRUB_TIMEOUT` variable is optional. See the :ref:`grub-efi <ref-classes-grub-efi>` class for more information on how this variable is used. @@ -2779,7 +2709,7 @@ system and gives an overview of their function and contents. Specifies architecture-specific compiler flags that are passed to the C compiler. - Default initialization for ``HOST_CC_ARCH`` varies depending on what + Default initialization for :term:`HOST_CC_ARCH` varies depending on what is being built: - :term:`TARGET_CC_ARCH` when building for the @@ -2799,7 +2729,7 @@ system and gives an overview of their function and contents. "linux-musleabi" values possible. :term:`HOST_PREFIX` - Specifies the prefix for the cross-compile toolchain. ``HOST_PREFIX`` + Specifies the prefix for the cross-compile toolchain. :term:`HOST_PREFIX` is normally the same as :term:`TARGET_PREFIX`. :term:`HOST_SYS` @@ -2828,7 +2758,7 @@ system and gives an overview of their function and contents. A space-separated list (filter) of tools on the build host that should be allowed to be called from within build tasks. Using this filter helps reduce the possibility of host contamination. If a tool - specified in the value of ``HOSTTOOLS`` is not found on the build + specified in the value of :term:`HOSTTOOLS` is not found on the build host, the OpenEmbedded build system produces an error and the build is not started. @@ -2841,11 +2771,11 @@ system and gives an overview of their function and contents. filter helps reduce the possibility of host contamination. Unlike :term:`HOSTTOOLS`, the OpenEmbedded build system does not produce an error if a tool specified in the value of - ``HOSTTOOLS_NONFATAL`` is not found on the build host. Thus, you can - use ``HOSTTOOLS_NONFATAL`` to filter optional host tools. + :term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can + use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools. :term:`HOST_VENDOR` - Specifies the name of the vendor. ``HOST_VENDOR`` is normally the + Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the same as :term:`TARGET_VENDOR`. :term:`ICECC_DISABLED` @@ -2855,13 +2785,11 @@ system and gives an overview of their function and contents. section. Setting this variable to "1" in your ``local.conf`` disables the - function: - :: + function:: ICECC_DISABLED ??= "1" - To enable the function, set the variable as follows: - :: + To enable the function, set the variable as follows:: ICECC_DISABLED = "" @@ -2892,12 +2820,12 @@ system and gives an overview of their function and contents. 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 ``ICECC_PARALLEL_MAKE`` to achieve optimal + rule-of-thumb for setting :term:`ICECC_PARALLEL_MAKE` to achieve optimal performance. - If you do not set ``ICECC_PARALLEL_MAKE``, the build system does not + 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 ``PARALLEL_MAKE``). + cores as is done with :term:`PARALLEL_MAKE`). :term:`ICECC_PATH` The location of the ``icecc`` binary. You can set this variable in @@ -2946,8 +2874,7 @@ system and gives an overview of their function and contents. installed name, separate it from the original name with a semi-colon (;). Source files need to be located in :term:`DEPLOY_DIR_IMAGE`. Here are two - examples: - :: + examples:: IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2" IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio" @@ -2956,8 +2883,7 @@ system and gives an overview of their function and contents. this case, the destination file must have the same name as the base name of the source file path. To install files into a directory within the target location, pass its name after a semi-colon (;). - Here are two examples: - :: + Here are two examples:: IMAGE_EFI_BOOT_FILES = "boot/loader/*" IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/" @@ -2982,8 +2908,7 @@ system and gives an overview of their function and contents. installed name, separate it from the original name with a semi-colon (;). Source files need to be located in :term:`DEPLOY_DIR_IMAGE`. Here are two - examples: - :: + examples:: IMAGE_BOOT_FILES = "u-boot.img uImage;kernel" IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}" @@ -2992,8 +2917,7 @@ system and gives an overview of their function and contents. this case, the destination file must have the same name as the base name of the source file path. To install files into a directory within the target location, pass its name after a semi-colon (;). - Here are two examples: - :: + Here are two examples:: IMAGE_BOOT_FILES = "bcm2835-bootfiles/*" IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/" @@ -3014,7 +2938,7 @@ system and gives an overview of their function and contents. this variable to specify the list of classes that register the different types of images the OpenEmbedded build system creates. - The default value for ``IMAGE_CLASSES`` is ``image_types``. You can + The default value for :term:`IMAGE_CLASSES` is ``image_types``. You can set this variable in your ``local.conf`` or in a distribution configuration file. @@ -3026,11 +2950,10 @@ system and gives an overview of their function and contents. type, which corresponds to the value set in :term:`IMAGE_FSTYPES`, (e.g. ``ext3``, ``btrfs``, and so forth). When setting this variable, you should use - an override for the associated type. Here is an example: - :: + an override for the associated type. Here is an example:: - IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} \ - --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ + IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \ + --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 \ ${EXTRA_IMAGECMD}" You typically do not need to set this variable unless you are adding @@ -3042,7 +2965,7 @@ system and gives an overview of their function and contents. Specifies one or more files that contain custom device tables that are passed to the ``makedevs`` command as part of creating an image. These files list basic device nodes that should be created under - ``/dev`` within the image. If ``IMAGE_DEVICE_TABLES`` is not set, + ``/dev`` within the image. If :term:`IMAGE_DEVICE_TABLES` is not set, ``files/device_table-minimal.txt`` is used, which is located by :term:`BBPATH`. For details on how you should write device table files, see ``meta/files/device_table-minimal.txt`` as an @@ -3070,9 +2993,8 @@ system and gives an overview of their function and contents. :term:`IMAGE_FSTYPES` Specifies the formats the OpenEmbedded build system uses during the build when creating the root filesystem. For example, setting - ``IMAGE_FSTYPES`` as follows causes the build system to create root - filesystems using two formats: ``.ext3`` and ``.tar.bz2``: - :: + :term:`IMAGE_FSTYPES` as follows causes the build system to create root + filesystems using two formats: ``.ext3`` and ``.tar.bz2``:: IMAGE_FSTYPES = "ext3 tar.bz2" @@ -3082,29 +3004,28 @@ system and gives an overview of their function and contents. .. note:: - If an image recipe uses the "inherit image" line and you are - setting ``IMAGE_FSTYPES`` inside the recipe, you must set + setting :term:`IMAGE_FSTYPES` inside the recipe, you must set ``IMAGE_FSTYPES`` prior to using the "inherit image" line. - Due to the way the OpenEmbedded build system processes this variable, you cannot update its contents by using ``_append`` or ``_prepend``. You must use the ``+=`` operator to add one or - more options to the ``IMAGE_FSTYPES`` variable. + more options to the :term:`IMAGE_FSTYPES` variable. :term:`IMAGE_INSTALL` Used by recipes to specify the packages to install into an image through the :ref:`image <ref-classes-image>` class. Use the - ``IMAGE_INSTALL`` variable with care to avoid ordering issues. + :term:`IMAGE_INSTALL` variable with care to avoid ordering issues. - Image recipes set ``IMAGE_INSTALL`` to specify the packages to + Image recipes set :term:`IMAGE_INSTALL` to specify the packages to install into an image through ``image.bbclass``. Additionally, - "helper" classes such as the - :ref:`core-image <ref-classes-core-image>` class exist that can - take lists used with ``IMAGE_FEATURES`` and turn them into - auto-generated entries in ``IMAGE_INSTALL`` in addition to its + there are "helper" classes such as the + :ref:`core-image <ref-classes-core-image>` class which can + take lists used with :term:`IMAGE_FEATURES` and turn them into + auto-generated entries in :term:`IMAGE_INSTALL` in addition to its default contents. - When you use this variable, it is best to use it as follows: - :: + When you use this variable, it is best to use it as follows:: IMAGE_INSTALL_append = " package-name" @@ -3116,24 +3037,24 @@ system and gives an overview of their function and contents. - When working with a :ref:`core-image-minimal-initramfs <ref-manual/images:images>` - image, do not use the ``IMAGE_INSTALL`` variable to specify + image, do not use the :term:`IMAGE_INSTALL` variable to specify packages for installation. Instead, use the :term:`PACKAGE_INSTALL` variable, which allows the initial RAM filesystem (initramfs) recipe to use a - fixed set of packages and not be affected by ``IMAGE_INSTALL``. + fixed set of packages and not be affected by :term:`IMAGE_INSTALL`. For information on creating an initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section in the Yocto Project Development Tasks Manual. - - Using ``IMAGE_INSTALL`` with the + - Using :term:`IMAGE_INSTALL` with the :ref:`+= <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>` BitBake operator within the ``/conf/local.conf`` file or from within an image recipe is not recommended. Use of this operator in these ways can cause ordering issues. Since - ``core-image.bbclass`` sets ``IMAGE_INSTALL`` to a default + ``core-image.bbclass`` sets :term:`IMAGE_INSTALL` to a default value using the :ref:`?= <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>` - operator, using a ``+=`` operation against ``IMAGE_INSTALL`` + operator, using a ``+=`` operation against :term:`IMAGE_INSTALL` results in unexpected behavior when used within ``conf/local.conf``. Furthermore, the same operation from within an image recipe may or may not succeed depending on the @@ -3144,11 +3065,10 @@ system and gives an overview of their function and contents. Specifies the list of locales to install into the image during the root filesystem construction process. The OpenEmbedded build system automatically splits locale files, which are used for localization, - into separate packages. Setting the ``IMAGE_LINGUAS`` variable + into separate packages. Setting the :term:`IMAGE_LINGUAS` variable ensures that any locale packages that correspond to packages already selected for installation into the image are also installed. Here is - an example: - :: + an example:: IMAGE_LINGUAS = "pt-br de-de" @@ -3167,8 +3087,7 @@ system and gives an overview of their function and contents. The name of the output image symlink (which does not include the version part as :term:`IMAGE_NAME` does). The default value is derived using the :term:`IMAGE_BASENAME` and :term:`MACHINE` - variables: - :: + variables:: IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}-${MACHINE}" @@ -3176,19 +3095,17 @@ system and gives an overview of their function and contents. :term:`IMAGE_MANIFEST` The manifest file for the image. This file lists all the installed packages that make up the image. The file contains package - information on a line-per-package basis as follows: - :: + information on a line-per-package basis as follows:: packagename packagearch version - The :ref:`image <ref-classes-image>` class defines the manifest - file as follows: - :: + The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class defines the manifest + file as follows:: - IMAGE_MANIFEST ="${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest" + IMAGE_MANIFEST ="${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest" The location is - derived using the :term:`DEPLOY_DIR_IMAGE` + derived using the :term:`IMGDEPLOYDIR` and :term:`IMAGE_NAME` variables. You can find information on how the image is created in the ":ref:`overview-manual/concepts:image generation`" section in the Yocto Project Overview and Concepts Manual. @@ -3197,8 +3114,7 @@ system and gives an overview of their function and contents. The name of the output image files minus the extension. This variable is derived using the :term:`IMAGE_BASENAME`, :term:`MACHINE`, and :term:`IMAGE_VERSION_SUFFIX` - variables: - :: + variables:: IMAGE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}" @@ -3213,7 +3129,7 @@ system and gives an overview of their function and contents. Defines a multiplier that the build system applies to the initial image size for cases when the multiplier times the returned disk usage value for the image is greater than the sum of - ``IMAGE_ROOTFS_SIZE`` and ``IMAGE_ROOTFS_EXTRA_SPACE``. The result of + :term:`IMAGE_ROOTFS_SIZE` and :term:`IMAGE_ROOTFS_EXTRA_SPACE`. The result of the multiplier applied to the initial image size creates free disk space in the image as overhead. By default, the build process uses a multiplier of 1.3 for this variable. This default value results in @@ -3222,20 +3138,19 @@ system and gives an overview of their function and contents. post install scripts and the package management system uses disk space inside this overhead area. Consequently, the multiplier does not produce an image with all the theoretical free disk space. See - ``IMAGE_ROOTFS_SIZE`` for information on how the build system + :term:`IMAGE_ROOTFS_SIZE` for information on how the build system determines the overall image size. The default 30% free disk space typically gives the image enough room to boot and allows for basic post installs while still leaving a small amount of free disk space. If 30% free space is inadequate, you can increase the default value. For example, the following setting - gives you 50% free space added to the image: - :: + gives you 50% free space added to the image:: IMAGE_OVERHEAD_FACTOR = "1.5" Alternatively, you can ensure a specific amount of free disk space is - added to the image by using the ``IMAGE_ROOTFS_EXTRA_SPACE`` + added to the image by using the :term:`IMAGE_ROOTFS_EXTRA_SPACE` variable. :term:`IMAGE_PKGTYPE` @@ -3252,10 +3167,10 @@ system and gives an overview of their function and contents. recommended that you do not use it. The :ref:`populate_sdk_* <ref-classes-populate-sdk-*>` and - :ref:`image <ref-classes-image>` classes use the ``IMAGE_PKGTYPE`` + :ref:`image <ref-classes-image>` classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs. - You should not set the ``IMAGE_PKGTYPE`` manually. Rather, the + You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the variable is set indirectly through the appropriate :ref:`package_* <ref-classes-package>` class using the :term:`PACKAGE_CLASSES` variable. The @@ -3271,8 +3186,7 @@ system and gives an overview of their function and contents. :term:`IMAGE_POSTPROCESS_COMMAND` Specifies a list of functions to call once the OpenEmbedded build system creates the final image output files. You can specify - functions separated by semicolons: - :: + functions separated by semicolons:: IMAGE_POSTPROCESS_COMMAND += "function; ... " @@ -3285,8 +3199,7 @@ system and gives an overview of their function and contents. :term:`IMAGE_PREPROCESS_COMMAND` Specifies a list of functions to call before the OpenEmbedded build system creates the final image output files. You can specify - functions separated by semicolons: - :: + functions separated by semicolons:: IMAGE_PREPROCESS_COMMAND += "function; ... " @@ -3312,19 +3225,17 @@ system and gives an overview of their function and contents. Defines additional free disk space created in the image in Kbytes. By default, this variable is set to "0". This free disk space is added to the image after the build system determines the image size as - described in ``IMAGE_ROOTFS_SIZE``. + described in :term:`IMAGE_ROOTFS_SIZE`. This variable is particularly useful when you want to ensure that a specific amount of free disk space is available on a device after an image is installed and running. For example, to be sure 5 Gbytes of - free disk space is available, set the variable as follows: - :: + free disk space is available, set the variable as follows:: IMAGE_ROOTFS_EXTRA_SPACE = "5242880" For example, the Yocto Project Build Appliance specifically requests - 40 Gbytes of extra space with the line: - :: + 40 Gbytes of extra space with the line:: IMAGE_ROOTFS_EXTRA_SPACE = "41943040" @@ -3335,8 +3246,7 @@ system and gives an overview of their function and contents. the generated image, a requested size for the image, and requested additional free disk space to be added to the image. Programatically, the build system determines the final size of the generated image as - follows: - :: + follows:: if (image-du * overhead) < rootfs-size: internal-rootfs-size = rootfs-size + xspace @@ -3355,8 +3265,7 @@ system and gives an overview of their function and contents. :term:`IMAGE_TYPEDEP` Specifies a dependency from one image type on another. Here is an - example from the :ref:`image-live <ref-classes-image-live>` class: - :: + example from the :ref:`image-live <ref-classes-image-live>` class:: IMAGE_TYPEDEP_live = "ext3" @@ -3377,6 +3286,9 @@ system and gives an overview of their function and contents. - cpio.lzma - cpio.xz - cramfs + - erofs + - erofs-lz4 + - erofs-lz4hc - ext2 - ext2.bz2 - ext2.gz @@ -3419,6 +3331,18 @@ system and gives an overview of their function and contents. desired, and this suffix would then be used consistently across the build artifacts. + :term:`IMGDEPLOYDIR` + When inheriting the :ref:`image <ref-classes-image>` class directly or + through the :ref:`core-image <ref-classes-core-image>` class, the + ``IMGDEPLOYDIR`` points to a temporary work area for deployed files + that is set in the ``image`` class as follows:: + + IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete" + + Recipes inheriting the ``image`` class should copy files to be + deployed into ``IMGDEPLOYDIR``, and the class will take care of + copying them into :term:`DEPLOY_DIR_IMAGE` afterwards. + :term:`INC_PR` Helps define the recipe revision for recipes that share a common ``include`` file. You can think of this variable as part of the @@ -3434,17 +3358,16 @@ system and gives an overview of their function and contents. common functionality are upgraded to a new revision. A more efficient way of dealing with this situation is to set the - ``INC_PR`` variable inside the ``include`` files that the recipes - share and then expand the ``INC_PR`` variable within the recipes to + :term:`INC_PR` variable inside the ``include`` files that the recipes + share and then expand the :term:`INC_PR` variable within the recipes to help define the recipe revision. The following provides an example that shows how to use the - ``INC_PR`` variable given a common ``include`` file that defines the + :term:`INC_PR` variable given a common ``include`` file that defines the variable. Once the variable is defined in the ``include`` file, you - can use the variable to set the ``PR`` values in each recipe. You - will notice that when you set a recipe's ``PR`` you can provide more - granular revisioning by appending values to the ``INC_PR`` variable: - :: + can use the variable to set the :term:`PR` values in each recipe. You + will notice that when you set a recipe's :term:`PR` you can provide more + granular revisioning by appending values to the :term:`INC_PR` variable:: recipes-graphics/xorg-font/xorg-font-common.inc:INC_PR = "r2" recipes-graphics/xorg-font/encodings_1.0.4.bb:PR = "${INC_PR}.1" @@ -3455,7 +3378,7 @@ system and gives an overview of their function and contents. first line of the example establishes the baseline revision to be used for all recipes that use the ``include`` file. The remaining lines in the example are from individual recipes and show how the - ``PR`` value is set. + :term:`PR` value is set. :term:`INCOMPATIBLE_LICENSE` Specifies a space-separated list of license names (as they would @@ -3467,8 +3390,7 @@ system and gives an overview of their function and contents. .. note:: This functionality is only regularly tested using the following - setting: - :: + setting:: INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0" @@ -3482,13 +3404,12 @@ system and gives an overview of their function and contents. It is possible to define a list of licenses that are allowed to be used instead of the licenses that are excluded. To do this, define a variable ``COMPATIBLE_LICENSES`` with the names of the licenses - that are allowed. Then define ``INCOMPATIBLE_LICENSE`` as: - :: + that are allowed. Then define :term:`INCOMPATIBLE_LICENSE` as:: INCOMPATIBLE_LICENSE = "${@' '.join(sorted(set(d.getVar('AVAILABLE_LICENSES').split()) - set(d.getVar('COMPATIBLE_LICENSES').split())))}" - This will result in ``INCOMPATIBLE_LICENSE`` containing the names of + This will result in :term:`INCOMPATIBLE_LICENSE` containing the names of all licenses from :term:`AVAILABLE_LICENSES` except the ones specified in ``COMPATIBLE_LICENSES``, thus only allowing the latter licenses to be used. @@ -3497,9 +3418,9 @@ system and gives an overview of their function and contents. Causes the named class or classes to be inherited globally. Anonymous functions in the class or classes are not executed for the base configuration and in each individual recipe. The OpenEmbedded build - system ignores changes to ``INHERIT`` in individual recipes. + system ignores changes to :term:`INHERIT` in individual recipes. - For more information on ``INHERIT``, see the + For more information on :term:`INHERIT`, see the :ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`" section in the Bitbake User Manual. @@ -3508,8 +3429,7 @@ system and gives an overview of their function and contents. unlikely that you want to edit this variable. The default value of the variable is set as follows in the - ``meta/conf/distro/defaultsetup.conf`` file: - :: + ``meta/conf/distro/defaultsetup.conf`` file:: INHERIT_DISTRO ?= "debian devshell sstate license" @@ -3532,9 +3452,8 @@ system and gives an overview of their function and contents. variable. To prevent the build system from splitting out debug information - during packaging, set the ``INHIBIT_PACKAGE_DEBUG_SPLIT`` variable as - follows: - :: + during packaging, set the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable as + follows:: INHIBIT_PACKAGE_DEBUG_SPLIT = "1" @@ -3545,7 +3464,7 @@ system and gives an overview of their function and contents. By default, the OpenEmbedded build system strips binaries and puts the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``. - Consequently, you should not set ``INHIBIT_PACKAGE_STRIP`` when you + Consequently, you should not set :term:`INHIBIT_PACKAGE_STRIP` when you plan to debug in general. :term:`INHIBIT_SYSROOT_STRIP` @@ -3554,7 +3473,7 @@ system and gives an overview of their function and contents. By default, the OpenEmbedded build system strips binaries in the resulting sysroot. When you specifically set the - ``INHIBIT_SYSROOT_STRIP`` variable to "1" in your recipe, you inhibit + :term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit this stripping. If you want to use this variable, include the @@ -3564,11 +3483,11 @@ system and gives an overview of their function and contents. .. note:: - Use of the ``INHIBIT_SYSROOT_STRIP`` variable occurs in rare and + Use of the :term:`INHIBIT_SYSROOT_STRIP` variable occurs in rare and special circumstances. For example, suppose you are building bare-metal firmware by using an external GCC toolchain. Furthermore, - even if the toolchain's binaries are strippable, other files exist - that are needed for the build that are not strippable. + even if the toolchain's binaries are strippable, there are other files + needed for the build that are not strippable. :term:`INITRAMFS_FSTYPES` Defines the format for the output image of an initial RAM filesystem @@ -3586,7 +3505,7 @@ system and gives an overview of their function and contents. :term:`INITRAMFS_IMAGE` Specifies the :term:`PROVIDES` name of an image recipe that is used to build an initial RAM filesystem (initramfs) - image. In other words, the ``INITRAMFS_IMAGE`` variable causes an + image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an additional recipe to be built as a dependency to whatever root filesystem recipe you might be using (e.g. ``core-image-sato``). The initramfs image recipe you provide should set @@ -3602,16 +3521,16 @@ system and gives an overview of their function and contents. See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb`` recipe in the :term:`Source Directory` for an example initramfs recipe. To select this sample recipe as - the one built to provide the initramfs image, set ``INITRAMFS_IMAGE`` + the one built to provide the initramfs image, set :term:`INITRAMFS_IMAGE` to "core-image-minimal-initramfs". You can also find more information by referencing the ``meta-poky/conf/local.conf.sample.extended`` configuration file in the Source Directory, the :ref:`image <ref-classes-image>` class, and the :ref:`kernel <ref-classes-kernel>` class to see how to use - the ``INITRAMFS_IMAGE`` variable. + the :term:`INITRAMFS_IMAGE` variable. - If ``INITRAMFS_IMAGE`` is empty, which is the default, then no + If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no initramfs image is built. For more information, you can also see the @@ -3646,21 +3565,19 @@ system and gives an overview of their function and contents. Setting the variable to "1" in a configuration file causes the OpenEmbedded build system to generate a kernel image with the - initramfs specified in ``INITRAMFS_IMAGE`` bundled within: - :: + initramfs specified in :term:`INITRAMFS_IMAGE` bundled within:: INITRAMFS_IMAGE_BUNDLE = "1" By default, the :ref:`kernel <ref-classes-kernel>` class sets this variable to a - null string as follows: - :: + null string as follows:: INITRAMFS_IMAGE_BUNDLE ?= "" .. note:: - You must set the ``INITRAMFS_IMAGE_BUNDLE`` variable in a + You must set the :term:`INITRAMFS_IMAGE_BUNDLE` variable in a configuration file. You cannot set the variable in a recipe file. See the @@ -3672,15 +3589,13 @@ system and gives an overview of their function and contents. :term:`INITRAMFS_LINK_NAME` The link name of the initial RAM filesystem image. This variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as - follows: - :: + follows:: INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}" The value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same - file, has the following value: - :: + file, has the following value:: KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" @@ -3690,14 +3605,12 @@ system and gives an overview of their function and contents. :term:`INITRAMFS_NAME` The base name of the initial RAM filesystem image. This variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as - follows: - :: + follows:: INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}" The value of the :term:`KERNEL_ARTIFACT_NAME` - variable, which is set in the same file, has the following value: - :: + variable, which is set in the same file, has the following value:: KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" @@ -3705,13 +3618,13 @@ system and gives an overview of their function and contents. Indicates list of filesystem images to concatenate and use as an initial RAM disk (``initrd``). - The ``INITRD`` variable is an optional variable used with the + The :term:`INITRD` variable is an optional variable used with the :ref:`image-live <ref-classes-image-live>` class. :term:`INITRD_IMAGE` When building a "live" bootable image (i.e. when :term:`IMAGE_FSTYPES` contains "live"), - ``INITRD_IMAGE`` specifies the image recipe that should be built to + :term:`INITRD_IMAGE` specifies the image recipe that should be built to provide the initial RAM disk image. The default value is "core-image-minimal-initramfs". @@ -3735,8 +3648,7 @@ system and gives an overview of their function and contents. variable. :term:`INITSCRIPT_PARAMS` - Specifies the options to pass to ``update-rc.d``. Here is an example: - :: + Specifies the options to pass to ``update-rc.d``. Here is an example:: INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ." @@ -3746,7 +3658,7 @@ system and gives an overview of their function and contents. The variable's default value is "defaults", which is set in the :ref:`update-rc.d <ref-classes-update-rc.d>` class. - The value in ``INITSCRIPT_PARAMS`` is passed through to the + The value in :term:`INITSCRIPT_PARAMS` is passed through to the ``update-rc.d`` command. For more information on valid parameters, please see the ``update-rc.d`` manual page at https://manpages.debian.org/buster/init-system-helpers/update-rc.d.8.en.html @@ -3756,8 +3668,7 @@ system and gives an overview of their function and contents. recipe. For example, to skip the check for symbolic link ``.so`` files in the main package of a recipe, add the following to the recipe. The package name override must be used, which in this example - is ``${PN}``: - :: + is ``${PN}``:: INSANE_SKIP_${PN} += "dev-so" @@ -3766,7 +3677,7 @@ system and gives an overview of their function and contents. :term:`INSTALL_TIMEZONE_FILE` By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file. - Set the ``INSTALL_TIMEZONE_FILE`` variable to "0" at the + Set the :term:`INSTALL_TIMEZONE_FILE` variable to "0" at the configuration level to disable this behavior. :term:`IPK_FEED_URIS` @@ -3798,9 +3709,8 @@ system and gives an overview of their function and contents. Values for this variable are set in the kernel's recipe file and the kernel's append file. For example, if you are using the ``linux-yocto_4.12`` kernel, the kernel recipe file is the - ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. ``KBRANCH`` - is set as follows in that kernel recipe file: - :: + ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. :term:`KBRANCH` + is set as follows in that kernel recipe file:: KBRANCH ?= "standard/base" @@ -3812,15 +3722,14 @@ system and gives an overview of their function and contents. Beaglebone, EdgeRouter, and generic versions of both 32 and 64-bit IA machines (``meta-yocto-bsp``) is named ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend``. - Here are the related statements from that append file: - :: + Here are the related statements from that append file:: KBRANCH_genericx86 = "standard/base" KBRANCH_genericx86-64 = "standard/base" KBRANCH_edgerouter = "standard/edgerouter" KBRANCH_beaglebone = "standard/beaglebone" - The ``KBRANCH`` statements + The :term:`KBRANCH` statements identify the kernel branch to use when building for each supported BSP. @@ -3834,32 +3743,67 @@ system and gives an overview of their function and contents. would place patch files and configuration fragment files (i.e. "out-of-tree"). However, if you want to use a ``defconfig`` file that is part of the kernel tree (i.e. "in-tree"), you can use the - ``KBUILD_DEFCONFIG`` variable and append the + :term:`KBUILD_DEFCONFIG` variable and append the :term:`KMACHINE` variable to point to the ``defconfig`` file. To use the variable, set it in the append file for your kernel recipe - using the following form: - :: + using the following form:: KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file - Here is an example from a "raspberrypi2" ``KMACHINE`` build that uses - a ``defconfig`` file named "bcm2709_defconfig": - :: + Here is an example from a "raspberrypi2" :term:`KMACHINE` build that uses + a ``defconfig`` file named "bcm2709_defconfig":: KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig" - As an alternative, you can use the following within your append file: - :: + As an alternative, you can use the following within your append file:: KBUILD_DEFCONFIG_pn-linux-yocto ?= defconfig_file For more - information on how to use the ``KBUILD_DEFCONFIG`` variable, see the + information on how to use the :term:`KBUILD_DEFCONFIG` variable, see the ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`" section in the Yocto Project Linux Kernel Development Manual. + :term:`KCONFIG_MODE` + When used with the :ref:`kernel-yocto <ref-classes-kernel-yocto>` + class, specifies the kernel configuration values to use for options + not specified in the provided ``defconfig`` file. Valid options are:: + + KCONFIG_MODE = "alldefconfig" + KCONFIG_MODE = "allnoconfig" + + In ``alldefconfig`` mode the options not explicitly specified will be + assigned their Kconfig default value. In ``allnoconfig`` mode the + options not explicitly specified will be disabled in the kernel + config. + + In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where + the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file + will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed + in ``${WORKDIR}`` through a meta-layer will be handled in + ``allnoconfig`` mode. + + An "in-tree" ``defconfig`` file can be selected via the + :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to + be explicitly set. + + A ``defconfig`` file compatible with ``allnoconfig`` mode can be + generated by copying the ``.config`` file from a working Linux kernel + build, renaming it to ``defconfig`` and placing it into the Linux + kernel ``${WORKDIR}`` through your meta-layer. :term:`KCONFIG_MODE` does + not need to be explicitly set. + + A ``defconfig`` file compatible with ``alldefconfig`` mode can be + generated using the + :ref:`ref-tasks-savedefconfig` + task and placed into the Linux kernel ``${WORKDIR}`` through your + meta-layer. Explicitely set :term:`KCONFIG_MODE`:: + + KCONFIG_MODE = "alldefconfig" + + :term:`KERNEL_ALT_IMAGETYPE` Specifies an alternate kernel image type for creation in addition to the kernel image type specified using the @@ -3867,13 +3811,12 @@ system and gives an overview of their function and contents. :term:`KERNEL_ARTIFACT_NAME` Specifies the name of all of the build artifacts. You can change the - name of the artifacts by changing the ``KERNEL_ARTIFACT_NAME`` + name of the artifacts by changing the :term:`KERNEL_ARTIFACT_NAME` variable. - The value of ``KERNEL_ARTIFACT_NAME``, which is set in the + The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the ``meta/classes/kernel-artifact-names.bbclass`` file, has the - following default value: - :: + following default value:: KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" @@ -3895,7 +3838,7 @@ system and gives an overview of their function and contents. .. note:: - Legacy support exists for specifying the full path to the device + There is legacy support for specifying the full path to the device tree. However, providing just the ``.dtb`` file is preferred. In order to use this variable, the @@ -3905,15 +3848,13 @@ system and gives an overview of their function and contents. :term:`KERNEL_DTB_LINK_NAME` The link name of the kernel device tree binary (DTB). This variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as - follows: - :: + follows:: KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" The value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in - the same file, has the following value: - :: + the same file, has the following value:: KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" @@ -3923,14 +3864,12 @@ system and gives an overview of their function and contents. :term:`KERNEL_DTB_NAME` The base name of the kernel device tree binary (DTB). This variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as - follows: - :: + follows:: KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}" The value of the :term:`KERNEL_ARTIFACT_NAME` - variable, which is set in the same file, has the following value: - :: + variable, which is set in the same file, has the following value:: KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" @@ -3952,21 +3891,20 @@ system and gives an overview of their function and contents. system, the default Board Support Packages (BSPs) :term:`Metadata` is provided through the :term:`KMACHINE` and :term:`KBRANCH` - variables. You can use the ``KERNEL_FEATURES`` variable from within + variables. You can use the :term:`KERNEL_FEATURES` variable from within the kernel recipe or kernel append file to further add metadata for all BSPs or specific BSPs. The metadata you add through this variable includes config fragments and features descriptions, which usually includes patches as well as - config fragments. You typically override the ``KERNEL_FEATURES`` + config fragments. You typically override the :term:`KERNEL_FEATURES` variable for a specific machine. In this way, you can provide validated, but optional, sets of kernel configurations and features. For example, the following example from the ``linux-yocto-rt_4.12`` kernel recipe adds "netfilter" and "taskstats" features to all BSPs as well as "virtio" configurations to all QEMU machines. The last two - statements add specific configurations to targeted machine types: - :: + statements add specific configurations to targeted machine types:: KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" KERNEL_FEATURES_append = "${KERNEL_EXTRA_FEATURES}" @@ -3977,15 +3915,13 @@ system and gives an overview of their function and contents. :term:`KERNEL_FIT_LINK_NAME` The link name of the kernel flattened image tree (FIT) image. This variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` - file as follows: - :: + file as follows:: KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" The value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same - file, has the following value: - :: + file, has the following value:: KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" @@ -3995,28 +3931,24 @@ system and gives an overview of their function and contents. :term:`KERNEL_FIT_NAME` The base name of the kernel flattened image tree (FIT) image. This variable is set in the ``meta/classes/kernel-artifact-names.bbclass`` - file as follows: - :: + file as follows:: KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}" The value of the :term:`KERNEL_ARTIFACT_NAME` - variable, which is set in the same file, has the following value: - :: + variable, which is set in the same file, has the following value:: KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" :term:`KERNEL_IMAGE_LINK_NAME` The link name for the kernel image. This variable is set in the - ``meta/classes/kernel-artifact-names.bbclass`` file as follows: - :: + ``meta/classes/kernel-artifact-names.bbclass`` file as follows:: KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" The value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same - file, has the following value: - :: + file, has the following value:: KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" @@ -4025,12 +3957,12 @@ system and gives an overview of their function and contents. :term:`KERNEL_IMAGE_MAXSIZE` Specifies the maximum size of the kernel image file in kilobytes. If - ``KERNEL_IMAGE_MAXSIZE`` is set, the size of the kernel image file is + :term:`KERNEL_IMAGE_MAXSIZE` is set, the size of the kernel image file is checked against the set value during the :ref:`ref-tasks-sizecheck` task. The task fails if the kernel image file is larger than the setting. - ``KERNEL_IMAGE_MAXSIZE`` is useful for target devices that have a + :term:`KERNEL_IMAGE_MAXSIZE` is useful for target devices that have a limited amount of space in which the kernel image must be stored. By default, this variable is not set, which means the size of the @@ -4038,15 +3970,13 @@ system and gives an overview of their function and contents. :term:`KERNEL_IMAGE_NAME` The base name of the kernel image. This variable is set in the - ``meta/classes/kernel-artifact-names.bbclass`` file as follows: - :: + ``meta/classes/kernel-artifact-names.bbclass`` file as follows:: KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}" The value of the :term:`KERNEL_ARTIFACT_NAME` variable, - which is set in the same file, has the following value: - :: + which is set in the same file, has the following value:: KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" @@ -4057,7 +3987,7 @@ system and gives an overview of their function and contents. build. If you want to build an alternate kernel image type in addition to that - specified by ``KERNEL_IMAGETYPE``, use the :term:`KERNEL_ALT_IMAGETYPE` + specified by :term:`KERNEL_IMAGETYPE`, use the :term:`KERNEL_ALT_IMAGETYPE` variable. :term:`KERNEL_MODULE_AUTOLOAD` @@ -4068,23 +3998,21 @@ system and gives an overview of their function and contents. This variable replaces the deprecated :term:`module_autoload` variable. - You can use the ``KERNEL_MODULE_AUTOLOAD`` variable anywhere that it + You can use the :term:`KERNEL_MODULE_AUTOLOAD` variable anywhere that it can be recognized by the kernel recipe or by an out-of-tree kernel module recipe (e.g. a machine configuration file, a distribution configuration file, an append file for the recipe, or the recipe itself). - Specify it as follows: - :: + Specify it as follows:: KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3" - Including ``KERNEL_MODULE_AUTOLOAD`` causes the OpenEmbedded build + Including :term:`KERNEL_MODULE_AUTOLOAD` causes the OpenEmbedded build system to populate the ``/etc/modules-load.d/modname.conf`` file with the list of modules to be auto-loaded on boot. The modules appear one-per-line in the file. Here is an example of the most common use - case: - :: + case:: KERNEL_MODULE_AUTOLOAD += "module_name" @@ -4109,7 +4037,7 @@ system and gives an overview of their function and contents. To help maximize compatibility with out-of-tree drivers used to build modules, the OpenEmbedded build system also recognizes and uses the :term:`KERNEL_SRC` variable, which is identical to - the ``KERNEL_PATH`` variable. Both variables are common variables + the :term:`KERNEL_PATH` variable. Both variables are common variables used by external Makefiles to point to the kernel source directory. :term:`KERNEL_SRC` @@ -4123,7 +4051,7 @@ system and gives an overview of their function and contents. To help maximize compatibility with out-of-tree drivers used to build modules, the OpenEmbedded build system also recognizes and uses the :term:`KERNEL_PATH` variable, which is identical - to the ``KERNEL_SRC`` variable. Both variables are common variables + to the :term:`KERNEL_SRC` variable. Both variables are common variables used by external Makefiles to point to the kernel source directory. :term:`KERNEL_VERSION` @@ -4135,10 +4063,10 @@ system and gives an overview of their function and contents. :term:`KERNELDEPMODDEPEND` Specifies whether the data referenced through - :term:`PKGDATA_DIR` is needed or not. The - ``KERNELDEPMODDEPEND`` does not control whether or not that data + :term:`PKGDATA_DIR` is needed or not. + :term:`KERNELDEPMODDEPEND` does not control whether or not that data exists, but simply whether or not it is used. If you do not need to - use the data, set the ``KERNELDEPMODDEPEND`` variable in your + use the data, set the :term:`KERNELDEPMODDEPEND` variable in your ``initramfs`` recipe. Setting the variable there when the data is not needed avoids a potential dependency loop. @@ -4146,8 +4074,7 @@ system and gives an overview of their function and contents. Provides a short description of a configuration fragment. You use this variable in the ``.scc`` file that describes a configuration fragment file. Here is the variable used in a file named ``smp.scc`` - to describe SMP being enabled: - :: + to describe SMP being enabled:: define KFEATURE_DESCRIPTION "Enable SMP" @@ -4158,13 +4085,12 @@ system and gives an overview of their function and contents. OpenEmbedded build system understands as ``core2-32-intel-common`` goes by a different name in the Linux Yocto kernel. The kernel understands that machine as ``intel-core2-32``. For cases like these, - the ``KMACHINE`` variable maps the kernel machine name to the + the :term:`KMACHINE` variable maps the kernel machine name to the OpenEmbedded build system machine name. These mappings between different names occur in the Yocto Linux Kernel's ``meta`` branch. As an example take a look in the - ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file: - :: + ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file:: LINUX_VERSION_core2-32-intel-common = "3.19.0" COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}" @@ -4174,7 +4100,7 @@ system and gives an overview of their function and contents. KBRANCH_core2-32-intel-common = "standard/base" KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}" - The ``KMACHINE`` statement says + The :term:`KMACHINE` statement says that the kernel understands the machine name as "intel-core2-32". However, the OpenEmbedded build system understands the machine as "core2-32-intel-common". @@ -4187,7 +4113,7 @@ system and gives an overview of their function and contents. Yocto Project Linux Kernel Development Manual for more information on kernel types. - You define the ``KTYPE`` variable in the + You define the :term:`KTYPE` variable in the :ref:`kernel-dev/advanced:bsp descriptions`. The value you use must match the value used for the :term:`LINUX_KERNEL_TYPE` value used by the @@ -4202,8 +4128,7 @@ system and gives an overview of their function and contents. :term:`LAYERDEPENDS` Lists the layers, separated by spaces, on which this recipe depends. Optionally, you can specify a specific layer version for a dependency - by adding it to the end of the layer name. Here is an example: - :: + by adding it to the end of the layer name. Here is an example:: LAYERDEPENDS_mylayer = "anotherlayer (=3)" @@ -4228,8 +4153,7 @@ system and gives an overview of their function and contents. Optionally, you can specify a specific layer version for a recommendation by adding the version to the end of the layer name. - Here is an example: - :: + Here is an example:: LAYERRECOMMENDS_mylayer = "anotherlayer (=3)" @@ -4242,7 +4166,7 @@ system and gives an overview of their function and contents. :term:`LAYERSERIES_COMPAT` Lists the versions of the :term:`OpenEmbedded-Core (OE-Core)` for which - a layer is compatible. Using the ``LAYERSERIES_COMPAT`` variable + a layer is compatible. Using the :term:`LAYERSERIES_COMPAT` variable allows the layer maintainer to indicate which combinations of the layer and OE-Core can be expected to work. The variable gives the system a way to detect when a layer has not been tested with new @@ -4253,14 +4177,13 @@ system and gives an overview of their function and contents. For the list, use the Yocto Project :yocto_wiki:`Release Name </Releases>` (e.g. &DISTRO_NAME_NO_CAP;). To specify multiple OE-Core versions for the - layer, use a space-separated list: - :: + layer, use a space-separated list:: LAYERSERIES_COMPAT_layer_root_name = "&DISTRO_NAME_NO_CAP; &DISTRO_NAME_NO_CAP_MINUS_ONE;" .. note:: - Setting ``LAYERSERIES_COMPAT`` is required by the Yocto Project + Setting :term:`LAYERSERIES_COMPAT` is required by the Yocto Project Compatible version 2 standard. The OpenEmbedded build system produces a warning if the variable is not set for any given layer. @@ -4284,7 +4207,7 @@ system and gives an overview of their function and contents. to an environment variable and thus made visible to the software being built during the compilation step. - Default initialization for ``LDFLAGS`` varies depending on what is + Default initialization for :term:`LDFLAGS` varies depending on what is being built: - :term:`TARGET_LDFLAGS` when building for the @@ -4325,8 +4248,8 @@ system and gives an overview of their function and contents. - Separate license names using \| (pipe) when there is a choice between licenses. - - Separate license names using & (ampersand) when multiple licenses - exist that cover different parts of the source. + - Separate license names using & (ampersand) when there are + multiple licenses for different parts of the source. - You can use spaces between license names. @@ -4335,8 +4258,7 @@ system and gives an overview of their function and contents. :term:`SPDXLICENSEMAP` flag names defined in ``meta/conf/licenses.conf``. - Here are some examples: - :: + Here are some examples:: LICENSE = "LGPLv2.1 | GPLv3" LICENSE = "MPL-1 & LGPLv2.1" @@ -4353,15 +4275,14 @@ system and gives an overview of their function and contents. situations where components of the output have different licenses. For example, a piece of software whose code is licensed under GPLv2 but has accompanying documentation licensed under the GNU Free - Documentation License 1.2 could be specified as follows: - :: + Documentation License 1.2 could be specified as follows:: LICENSE = "GFDL-1.2 & GPLv2" LICENSE_${PN} = "GPLv2" LICENSE_${PN}-doc = "GFDL-1.2" :term:`LICENSE_CREATE_PACKAGE` - Setting ``LICENSE_CREATE_PACKAGE`` to "1" causes the OpenEmbedded + Setting :term:`LICENSE_CREATE_PACKAGE` to "1" causes the OpenEmbedded build system to create an extra package (i.e. ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add those packages to the @@ -4406,11 +4327,10 @@ system and gives an overview of their function and contents. :term:`LICENSE_PATH` Path to additional licenses used during the build. By default, the - OpenEmbedded build system uses ``COMMON_LICENSE_DIR`` to define the + OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the directory that holds common license text used during the build. The - ``LICENSE_PATH`` variable allows you to extend that location to other - areas that have additional licenses: - :: + :term:`LICENSE_PATH` variable allows you to extend that location to other + areas that have additional licenses:: LICENSE_PATH += "path-to-additional-common-licenses" @@ -4422,9 +4342,9 @@ system and gives an overview of their function and contents. Yocto Project Linux Kernel Development Manual for more information on kernel types. - If you do not specify a ``LINUX_KERNEL_TYPE``, it defaults to + If you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to "standard". Together with :term:`KMACHINE`, the - ``LINUX_KERNEL_TYPE`` variable defines the search arguments used by + :term:`LINUX_KERNEL_TYPE` variable defines the search arguments used by the kernel tools to find the appropriate description within the kernel :term:`Metadata` with which to build out the sources and configuration. @@ -4434,14 +4354,12 @@ system and gives an overview of their function and contents. being built using the OpenEmbedded build system is based. You define this variable in the kernel recipe. For example, the ``linux-yocto-3.4.bb`` kernel recipe found in - ``meta/recipes-kernel/linux`` defines the variables as follows: - :: + ``meta/recipes-kernel/linux`` defines the variables as follows:: LINUX_VERSION ?= "3.4.24" - The ``LINUX_VERSION`` variable is used to define :term:`PV` - for the recipe: - :: + The :term:`LINUX_VERSION` variable is used to define :term:`PV` + for the recipe:: PV = "${LINUX_VERSION}+git${SRCPV}" @@ -4449,16 +4367,14 @@ system and gives an overview of their function and contents. A string extension compiled into the version string of the Linux kernel built with the OpenEmbedded build system. You define this variable in the kernel recipe. For example, the linux-yocto kernel - recipes all define the variable as follows: - :: + recipes all define the variable as follows:: LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}" Defining this variable essentially sets the Linux kernel configuration item ``CONFIG_LOCALVERSION``, which is visible through the ``uname`` command. Here is an example that shows the extension - assuming it was set as previously shown: - :: + assuming it was set as previously shown:: $ uname -r 3.7.0-rc8-custom @@ -4472,24 +4388,22 @@ system and gives an overview of their function and contents. :term:`MACHINE` Specifies the target device for which the image is built. You define - ``MACHINE`` in the ``local.conf`` file found in the - :term:`Build Directory`. By default, ``MACHINE`` is set to + :term:`MACHINE` in the ``local.conf`` file found in the + :term:`Build Directory`. By default, :term:`MACHINE` is set to "qemux86", which is an x86-based architecture machine to be emulated - using QEMU: - :: + using QEMU:: MACHINE ?= "qemux86" The variable corresponds to a machine configuration file of the same name, through which machine-specific configurations are set. Thus, - when ``MACHINE`` is set to "qemux86" there exists the corresponding - ``qemux86.conf`` machine configuration file, which can be found in + when :term:`MACHINE` is set to "qemux86", the corresponding + ``qemux86.conf`` machine configuration file can be found in the :term:`Source Directory` in ``meta/conf/machine``. The list of machines supported by the Yocto Project as shipped - include the following: - :: + include the following:: MACHINE ?= "qemuarm" MACHINE ?= "qemuarm64" @@ -4509,13 +4423,13 @@ system and gives an overview of their function and contents. .. note:: Adding additional Board Support Package (BSP) layers to your - configuration adds new possible settings for ``MACHINE``. + configuration adds new possible settings for :term:`MACHINE`. :term:`MACHINE_ARCH` Specifies the name of the machine-specific architecture. This variable is set automatically from :term:`MACHINE` or :term:`TUNE_PKGARCH`. You should not hand-edit - the ``MACHINE_ARCH`` variable. + the :term:`MACHINE_ARCH` variable. :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS` A list of required machine-specific packages to install as part of @@ -4527,7 +4441,7 @@ system and gives an overview of their function and contents. image. This variable is similar to the - ``MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS`` variable with the exception + :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` variable with the exception that the image being built has a build dependency on the variable's list of packages. In other words, the image will not build if a file in this list is not found. @@ -4535,8 +4449,7 @@ system and gives an overview of their function and contents. As an example, suppose the machine for which you are building requires ``example-init`` to be run during boot to initialize the hardware. In this case, you would use the following in the machine's - ``.conf`` configuration file: - :: + ``.conf`` configuration file:: MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init" @@ -4549,7 +4462,7 @@ system and gives an overview of their function and contents. on ``packagegroup-core-boot``, including the ``core-image-minimal`` image. - This variable is similar to the ``MACHINE_ESSENTIAL_EXTRA_RDEPENDS`` + This variable is similar to the :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS` variable with the exception that the image being built does not have a build dependency on the variable's list of packages. In other words, the image will still build if a package in this list is not @@ -4567,8 +4480,7 @@ system and gives an overview of their function and contents. "recommends" relationship so that in the latter case, the build will not fail due to the missing package. To accomplish this, assuming the package for the module was called ``kernel-module-ab123``, you would - use the following in the machine's ``.conf`` configuration file: - :: + use the following in the machine's ``.conf`` configuration file:: MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123" @@ -4592,7 +4504,7 @@ system and gives an overview of their function and contents. which does not include the ``core-image-minimal`` or ``core-image-full-cmdline`` images. - The variable is similar to the ``MACHINE_EXTRA_RRECOMMENDS`` variable + The variable is similar to the :term:`MACHINE_EXTRA_RRECOMMENDS` variable with the exception that the image being built has a build dependency on the variable's list of packages. In other words, the image will not build if a file in this list is not found. @@ -4604,8 +4516,7 @@ system and gives an overview of their function and contents. exist, so it is acceptable for the build process to depend upon finding the package. In this case, assuming the package for the firmware was called ``wifidriver-firmware``, you would use the - following in the ``.conf`` file for the machine: - :: + following in the ``.conf`` file for the machine:: MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware" @@ -4618,7 +4529,7 @@ system and gives an overview of their function and contents. which does not include the ``core-image-minimal`` or ``core-image-full-cmdline`` images. - This variable is similar to the ``MACHINE_EXTRA_RDEPENDS`` variable + This variable is similar to the :term:`MACHINE_EXTRA_RDEPENDS` variable with the exception that the image being built does not have a build dependency on the variable's list of packages. In other words, the image will build if a file in this list is not found. @@ -4631,8 +4542,7 @@ system and gives an overview of their function and contents. the build to succeed instead of failing as a result of the package not being found. To accomplish this, assuming the package for the module was called ``kernel-module-examplewifi``, you would use the - following in the ``.conf`` file for the machine: - :: + following in the ``.conf`` file for the machine:: MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi" @@ -4648,8 +4558,8 @@ system and gives an overview of their function and contents. shipped, see the ":ref:`ref-features-machine`" section. :term:`MACHINE_FEATURES_BACKFILL` - Features to be added to ``MACHINE_FEATURES`` if not also present in - ``MACHINE_FEATURES_BACKFILL_CONSIDERED``. + Features to be added to :term:`MACHINE_FEATURES` if not also present in + :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`. This variable is set in the ``meta/conf/bitbake.conf`` file. It is not intended to be user-configurable. It is best to just reference @@ -4658,8 +4568,8 @@ system and gives an overview of their function and contents. section for more information. :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` - Features from ``MACHINE_FEATURES_BACKFILL`` that should not be - backfilled (i.e. added to ``MACHINE_FEATURES``) during the build. See + Features from :term:`MACHINE_FEATURES_BACKFILL` that should not be + backfilled (i.e. added to :term:`MACHINE_FEATURES`) during the build. See the ":ref:`ref-features-backfill`" section for more information. :term:`MACHINEOVERRIDES` @@ -4667,27 +4577,25 @@ system and gives an overview of their function and contents. machine. By default, this list includes the value of :term:`MACHINE`. - You can extend ``MACHINEOVERRIDES`` to add extra overrides that + You can extend :term:`MACHINEOVERRIDES` to add extra overrides that should apply to a machine. For example, all machines emulated in QEMU (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named ``meta/conf/machine/include/qemu.inc`` that prepends the following - override to ``MACHINEOVERRIDES``: - :: + override to :term:`MACHINEOVERRIDES`:: MACHINEOVERRIDES =. "qemuall:" This override allows variables to be overridden for all machines emulated in QEMU, like in the following example from the ``connman-conf`` - recipe: - :: + recipe:: SRC_URI_append_qemuall = " file://wired.config \ file://wired-setup \ " The underlying mechanism behind - ``MACHINEOVERRIDES`` is simply that it is included in the default + :term:`MACHINEOVERRIDES` is simply that it is included in the default value of :term:`OVERRIDES`. :term:`MAINTAINER` @@ -4707,10 +4615,10 @@ system and gives an overview of their function and contents. first tries the local download directory. If that location fails, the build system tries locations defined by :term:`PREMIRRORS`, the upstream source, and then - locations specified by ``MIRRORS`` in that order. + locations specified by :term:`MIRRORS` in that order. Assuming your distribution (:term:`DISTRO`) is "poky", - the default value for ``MIRRORS`` is defined in the + the default value for :term:`MIRRORS` is defined in the ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository. :term:`MLPREFIX` @@ -4718,49 +4626,45 @@ system and gives an overview of their function and contents. special version of a recipe or package (i.e. a Multilib version). The variable is used in places where the prefix needs to be added to or removed from a the name (e.g. the :term:`BPN` variable). - ``MLPREFIX`` gets set when a prefix has been added to ``PN``. + :term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`. .. note:: - The "ML" in ``MLPREFIX`` stands for "MultiLib". This representation is + The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation is historical and comes from a time when ``nativesdk`` was a suffix rather than a prefix on the recipe name. When ``nativesdk`` was turned - into a prefix, it made sense to set ``MLPREFIX`` for it as well. + into a prefix, it made sense to set :term:`MLPREFIX` for it as well. - To help understand when ``MLPREFIX`` might be needed, consider when + To help understand when :term:`MLPREFIX` might be needed, consider when :term:`BBCLASSEXTEND` is used to provide a ``nativesdk`` version of a recipe in addition to the target version. If that recipe declares build-time dependencies on tasks in other recipes by using :term:`DEPENDS`, then a dependency on "foo" will automatically get rewritten to a dependency on "nativesdk-foo". However, dependencies like the following will not - get rewritten automatically: - :: + get rewritten automatically:: do_foo[depends] += "recipe:do_foo" If you want such a dependency to also get transformed, you can do the - following: - :: + following:: do_foo[depends] += "${MLPREFIX}recipe:do_foo" - module_autoload - This variable has been replaced by the ``KERNEL_MODULE_AUTOLOAD`` + :term:`module_autoload` + This variable has been replaced by the :term:`KERNEL_MODULE_AUTOLOAD` variable. You should replace all occurrences of ``module_autoload`` - with additions to ``KERNEL_MODULE_AUTOLOAD``, for example: - :: + with additions to :term:`KERNEL_MODULE_AUTOLOAD`, for example:: module_autoload_rfcomm = "rfcomm" - should now be replaced with: - :: + should now be replaced with:: KERNEL_MODULE_AUTOLOAD += "rfcomm" See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information. - module_conf + :term:`module_conf` Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`_ syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf`` file. @@ -4773,8 +4677,7 @@ system and gives an overview of their function and contents. :term:`KERNEL_MODULE_AUTOLOAD` variable. - Here is the general syntax: - :: + Here is the general syntax:: module_conf_module_name = "modprobe.d-syntax" @@ -4786,8 +4689,7 @@ system and gives an overview of their function and contents. Including ``module_conf`` causes the OpenEmbedded build system to populate the ``/etc/modprobe.d/modname.conf`` file with ``modprobe.d`` syntax lines. Here is an example that adds the options - ``arg1`` and ``arg2`` to a module named ``mymodule``: - :: + ``arg1`` and ``arg2`` to a module named ``mymodule``:: module_conf_mymodule = "options mymodule arg1=val1 arg2=val2" @@ -4801,15 +4703,13 @@ system and gives an overview of their function and contents. :term:`MODULE_TARBALL_LINK_NAME` The link name of the kernel module tarball. This variable is set in - the ``meta/classes/kernel-artifact-names.bbclass`` file as follows: - :: + the ``meta/classes/kernel-artifact-names.bbclass`` file as follows:: MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" The value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the - same file, has the following value: - :: + same file, has the following value:: KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" @@ -4817,14 +4717,12 @@ system and gives an overview of their function and contents. :term:`MODULE_TARBALL_NAME` The base name of the kernel module tarball. This variable is set in - the ``meta/classes/kernel-artifact-names.bbclass`` file as follows: - :: + the ``meta/classes/kernel-artifact-names.bbclass`` file as follows:: MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}" The value of the :term:`KERNEL_ARTIFACT_NAME` variable, - which is set in the same file, has the following value: - :: + which is set in the same file, has the following value:: KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" @@ -4834,14 +4732,13 @@ system and gives an overview of their function and contents. target systems to be put into different subdirectories of the same output directory. - The default value of this variable is: - :: + The default value of this variable is:: ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS} Some classes (e.g. :ref:`cross-canadian <ref-classes-cross-canadian>`) modify the - ``MULTIMACH_TARGET_SYS`` value. + :term:`MULTIMACH_TARGET_SYS` value. See the :term:`STAMP` variable for an example. See the :term:`STAGING_DIR_TARGET` variable for more information. @@ -4866,23 +4763,21 @@ system and gives an overview of their function and contents. :term:`NO_GENERIC_LICENSE` Avoids QA errors when you use a non-common, non-CLOSED license in a - recipe. Packages exist, such as the linux-firmware package, with many + recipe. There are packages, such as the linux-firmware package, with many licenses that are not in any way common. Also, new licenses are added occasionally to avoid introducing a lot of common license files, which are only applicable to a specific package. - ``NO_GENERIC_LICENSE`` is used to allow copying a license that does + :term:`NO_GENERIC_LICENSE` is used to allow copying a license that does not exist in common licenses. - The following example shows how to add ``NO_GENERIC_LICENSE`` to a - recipe: - :: + The following example shows how to add :term:`NO_GENERIC_LICENSE` to a + recipe:: NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source" - The following is an example that + Here is an example that uses the ``LICENSE.Abilis.txt`` file as the license from the fetched - source: - :: + source:: NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt" @@ -4890,13 +4785,13 @@ system and gives an overview of their function and contents. Prevents installation of all "recommended-only" packages. Recommended-only packages are packages installed only through the :term:`RRECOMMENDS` variable). Setting the - ``NO_RECOMMENDATIONS`` variable to "1" turns this feature on: :: + :term:`NO_RECOMMENDATIONS` variable to "1" turns this feature on:: NO_RECOMMENDATIONS = "1" You can set this variable globally in your ``local.conf`` file or you can attach it to a specific image recipe by using the recipe name - override: :: + override:: NO_RECOMMENDATIONS_pn-target_image = "1" @@ -4912,8 +4807,8 @@ system and gives an overview of their function and contents. functionality, such as kernel modules. It is up to you to add packages with the :term:`IMAGE_INSTALL` variable. - Support for this variable exists only when using the IPK and RPM - packaging backend. Support does not exist for DEB. + This variable is only supported when using the IPK and RPM + packaging backends. DEB is not supported. See the :term:`BAD_RECOMMENDATIONS` and the :term:`PACKAGE_EXCLUDE` variables for @@ -4922,15 +4817,21 @@ system and gives an overview of their function and contents. :term:`NOAUTOPACKAGEDEBUG` Disables auto package from splitting ``.debug`` files. If a recipe requires ``FILES_${PN}-dbg`` to be set manually, the - ``NOAUTOPACKAGEDEBUG`` can be defined allowing you to define the - content of the debug package. For example: - :: + :term:`NOAUTOPACKAGEDEBUG` can be defined allowing you to define the + content of the debug package. For example:: NOAUTOPACKAGEDEBUG = "1" FILES_${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*" FILES_${PN}-dbg = "/usr/src/debug/" FILES_${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch" + :term:`NON_MULTILIB_RECIPES` + A list of recipes that should not be built for multilib. OE-Core's + ``multilib.conf`` file defines a reasonable starting point for this + list with:: + + NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot" + :term:`OBJCOPY` The minimal command and arguments to run ``objcopy``. @@ -4966,7 +4867,7 @@ system and gives an overview of their function and contents. value is "oe-init-build-env". If you use a custom script to set up your build environment, set the - ``OE_INIT_ENV_SCRIPT`` variable to its name. + :term:`OE_INIT_ENV_SCRIPT` variable to its name. :term:`OE_TERMINAL` Controls how the OpenEmbedded build system spawns interactive @@ -4989,7 +4890,7 @@ system and gives an overview of their function and contents. The directory from which the top-level build environment setup script is sourced. The Yocto Project provides a top-level build environment setup script: :ref:`structure-core-script`. When you run this - script, the ``OEROOT`` variable resolves to the directory that + script, the :term:`OEROOT` variable resolves to the directory that contains the script. For additional information on how this variable is used, see the @@ -5009,15 +4910,14 @@ system and gives an overview of their function and contents. A colon-separated list of overrides that currently apply. Overrides are a BitBake mechanism that allows variables to be selectively overridden at the end of parsing. The set of overrides in - ``OVERRIDES`` represents the "state" during building, which includes + :term:`OVERRIDES` represents the "state" during building, which includes the current recipe being built, the machine for which it is being built, and so forth. As an example, if the string "an-override" appears as an element in - the colon-separated list in ``OVERRIDES``, then the following + the colon-separated list in :term:`OVERRIDES`, then the following assignment will override ``FOO`` with the value "overridden" at the - end of parsing: - :: + end of parsing:: FOO_an-override = "overridden" @@ -5026,27 +4926,25 @@ system and gives an overview of their function and contents. section in the BitBake User Manual for more information on the overrides mechanism. - The default value of ``OVERRIDES`` includes the values of the + The default value of :term:`OVERRIDES` includes the values of the :term:`CLASSOVERRIDE`, :term:`MACHINEOVERRIDES`, and :term:`DISTROOVERRIDES` variables. Another important override included by default is ``pn-${PN}``. This override allows variables to be set for a single recipe within configuration - (``.conf``) files. Here is an example: - :: + (``.conf``) files. Here is an example:: FOO_pn-myrecipe = "myrecipe-specific value" .. note:: - An easy way to see what overrides apply is to search for ``OVERRIDES`` + An easy way to see what overrides apply is to search for :term:`OVERRIDES` in the output of the ``bitbake -e`` command. See the ":ref:`dev-manual/common-tasks:viewing variable values`" section in the Yocto Project Development Tasks Manual for more information. :term:`P` - The recipe name and version. ``P`` is comprised of the following: - :: + The recipe name and version. :term:`P` is comprised of the following:: ${PN}-${PV} @@ -5081,9 +4979,8 @@ system and gives an overview of their function and contents. However, if your recipe's output packages are built specific to the target machine rather than generally for the architecture of the - machine, you should set ``PACKAGE_ARCH`` to the value of - :term:`MACHINE_ARCH` in the recipe as follows: - :: + machine, you should set :term:`PACKAGE_ARCH` to the value of + :term:`MACHINE_ARCH` in the recipe as follows:: PACKAGE_ARCH = "${MACHINE_ARCH}" @@ -5091,11 +4988,11 @@ system and gives an overview of their function and contents. Specifies a list of architectures compatible with the target machine. This variable is set automatically and should not normally be hand-edited. Entries are separated using spaces and listed in order - of priority. The default value for ``PACKAGE_ARCHS`` is "all any + of priority. The default value for :term:`PACKAGE_ARCHS` is "all any noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}". :term:`PACKAGE_BEFORE_PN` - Enables easily adding packages to ``PACKAGES`` before ``${PN}`` so + Enables easily adding packages to :term:`PACKAGES` before ``${PN}`` so that those added packages can pick up files that would normally be included in the default package. @@ -5119,8 +5016,7 @@ system and gives an overview of their function and contents. The build system uses only the first argument in the list as the package manager when creating your image or SDK. However, packages will be created using any additional packaging classes you specify. - For example, if you use the following in your ``local.conf`` file: - :: + For example, if you use the following in your ``local.conf`` file:: PACKAGE_CLASSES ?= "package_ipk" @@ -5136,7 +5032,7 @@ system and gives an overview of their function and contents. creating ``*-dbg`` packages to be used with the GNU Project Debugger (GDB). - With the ``PACKAGE_DEBUG_SPLIT_STYLE`` variable, you can control + With the :term:`PACKAGE_DEBUG_SPLIT_STYLE` variable, you can control where debug information, which can include or exclude source files, is stored: @@ -5173,20 +5069,18 @@ system and gives an overview of their function and contents. are using :term:`IMAGE_FEATURES` to install ``dev-pkgs``, you might not want to install all packages from a particular multilib. If you find yourself in this situation, you can - use the ``PACKAGE_EXCLUDE_COMPLEMENTARY`` variable to specify regular + use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular expressions to match the packages you want to exclude. :term:`PACKAGE_EXCLUDE` Lists packages that should not be installed into an image. For - example: - :: + example:: PACKAGE_EXCLUDE = "package_name package_name package_name ..." You can set this variable globally in your ``local.conf`` file or you can attach it to a specific image recipe by using the recipe name - override: - :: + override:: PACKAGE_EXCLUDE_pn-target_image = "package_name" @@ -5198,8 +5092,8 @@ system and gives an overview of their function and contents. an iterative development process to remove specific components from a system. - Support for this variable exists only when using the IPK and RPM - packaging backend. Support does not exist for DEB. + This variable is supported only when using the IPK and RPM + packaging backends. DEB is not supported. See the :term:`NO_RECOMMENDATIONS` and the :term:`BAD_RECOMMENDATIONS` variables for @@ -5213,7 +5107,7 @@ system and gives an overview of their function and contents. :term:`PACKAGE_FEED_ARCHS` Optionally specifies the package architectures used as part of the package feed URIs during the build. When used, the - ``PACKAGE_FEED_ARCHS`` variable is appended to the final package feed + :term:`PACKAGE_FEED_ARCHS` variable is appended to the final package feed URI, which is constructed using the :term:`PACKAGE_FEED_URIS` and :term:`PACKAGE_FEED_BASE_PATHS` @@ -5221,17 +5115,16 @@ system and gives an overview of their function and contents. .. note:: - You can use the ``PACKAGE_FEED_ARCHS`` + You can use the :term:`PACKAGE_FEED_ARCHS` variable to whitelist specific package architectures. If you do not need to whitelist specific architectures, which is a common case, you can omit this variable. Omitting the variable results in all available architectures for the current machine being included into remote package feeds. - Consider the following example where the ``PACKAGE_FEED_URIS``, - ``PACKAGE_FEED_BASE_PATHS``, and ``PACKAGE_FEED_ARCHS`` variables are - defined in your ``local.conf`` file: - :: + Consider the following example where the :term:`PACKAGE_FEED_URIS`, + :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are + defined in your ``local.conf`` file:: PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ https://example.com/packagerepos/updates" @@ -5253,15 +5146,14 @@ system and gives an overview of their function and contents. :term:`PACKAGE_FEED_BASE_PATHS` Specifies the base path used when constructing package feed URIs. The - ``PACKAGE_FEED_BASE_PATHS`` variable makes up the middle portion of a + :term:`PACKAGE_FEED_BASE_PATHS` variable makes up the middle portion of a package feed URI used by the OpenEmbedded build system. The base path lies between the :term:`PACKAGE_FEED_URIS` and :term:`PACKAGE_FEED_ARCHS` variables. - Consider the following example where the ``PACKAGE_FEED_URIS``, - ``PACKAGE_FEED_BASE_PATHS``, and ``PACKAGE_FEED_ARCHS`` variables are - defined in your ``local.conf`` file: - :: + Consider the following example where the :term:`PACKAGE_FEED_URIS`, + :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are + defined in your ``local.conf`` file:: PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ https://example.com/packagerepos/updates" @@ -5284,14 +5176,13 @@ system and gives an overview of their function and contents. :term:`PACKAGE_FEED_URIS` Specifies the front portion of the package feed URI used by the OpenEmbedded build system. Each final package feed URI is comprised - of ``PACKAGE_FEED_URIS``, + of :term:`PACKAGE_FEED_URIS`, :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables. - Consider the following example where the ``PACKAGE_FEED_URIS``, - ``PACKAGE_FEED_BASE_PATHS``, and ``PACKAGE_FEED_ARCHS`` variables are - defined in your ``local.conf`` file: - :: + Consider the following example where the :term:`PACKAGE_FEED_URIS`, + :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are + defined in your ``local.conf`` file:: PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ https://example.com/packagerepos/updates" @@ -5316,7 +5207,7 @@ system and gives an overview of their function and contents. installation into the image. Because the package manager controls actual installation of all - packages, the list of packages passed using ``PACKAGE_INSTALL`` is + packages, the list of packages passed using :term:`PACKAGE_INSTALL` is not the final list of packages that are actually installed. This variable is internal to the image construction code. Consequently, in general, you should use the @@ -5324,7 +5215,7 @@ system and gives an overview of their function and contents. packages for installation. The exception to this is when working with the :ref:`core-image-minimal-initramfs <ref-manual/images:images>` image. When working with an initial RAM filesystem (initramfs) image, - use the ``PACKAGE_INSTALL`` variable. For information on creating an + use the :term:`PACKAGE_INSTALL` variable. For information on creating an initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section in the Yocto Project Development Tasks Manual. @@ -5345,7 +5236,7 @@ system and gives an overview of their function and contents. post-installation or pre-installation script can execute at rootfs creation time rather than on the target but depends on a native tool in order to execute, you need to list the tools in - ``PACKAGE_WRITE_DEPS``. + :term:`PACKAGE_WRITE_DEPS`. For information on running post-installation scripts, see the ":ref:`dev-manual/common-tasks:post-installation scripts`" @@ -5353,11 +5244,10 @@ system and gives an overview of their function and contents. :term:`PACKAGECONFIG` This variable provides a means of enabling or disabling features of a - recipe on a per-recipe basis. ``PACKAGECONFIG`` blocks are defined in + recipe on a per-recipe basis. :term:`PACKAGECONFIG` blocks are defined in recipes when you specify features and then arguments that define feature behaviors. Here is the basic block structure (broken over - multiple lines for readability): - :: + multiple lines for readability):: PACKAGECONFIG ??= "f1 f2 f3 ..." PACKAGECONFIG[f1] = "\ @@ -5382,8 +5272,8 @@ system and gives an overview of their function and contents. :term:`PACKAGECONFIG_CONFARGS`) if the feature is enabled. - 2. Extra arguments that should be added to ``EXTRA_OECONF`` or - ``PACKAGECONFIG_CONFARGS`` if the feature is disabled. + 2. Extra arguments that should be added to :term:`EXTRA_OECONF` or + :term:`PACKAGECONFIG_CONFARGS` if the feature is disabled. 3. Additional build dependencies (:term:`DEPENDS`) that should be added if the feature is enabled. @@ -5395,10 +5285,10 @@ system and gives an overview of their function and contents. (:term:`RRECOMMENDS`) that should be added if the feature is enabled. - 6. Any conflicting (that is, mutually exclusive) ``PACKAGECONFIG`` + 6. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG` settings for this feature. - Consider the following ``PACKAGECONFIG`` block taken from the + Consider the following :term:`PACKAGECONFIG` block taken from the ``librsvg`` recipe. In this example the feature is ``gtk``, which has three arguments that determine the feature's behavior. :: @@ -5408,41 +5298,37 @@ system and gives an overview of their function and contents. The ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is enabled. In this case, ``--with-gtk3`` is added to the configure - script argument list and ``gtk+3`` is added to ``DEPENDS``. On the + script argument list and ``gtk+3`` is added to :term:`DEPENDS`. On the other hand, if the feature is disabled say through a ``.bbappend`` file in another layer, then the second argument ``--without-gtk3`` is added to the configure script instead. - The basic ``PACKAGECONFIG`` structure previously described holds true + The basic :term:`PACKAGECONFIG` structure previously described holds true regardless of whether you are creating a block or changing a block. When creating a block, use the structure inside your recipe. - If you want to change an existing ``PACKAGECONFIG`` block, you can do + If you want to change an existing :term:`PACKAGECONFIG` block, you can do so one of two ways: - *Append file:* Create an append file named recipename\ ``.bbappend`` in your layer and override the value of - ``PACKAGECONFIG``. You can either completely override the - variable: - :: + :term:`PACKAGECONFIG`. You can either completely override the + variable:: PACKAGECONFIG = "f4 f5" - Or, you can just append the variable: - :: + Or, you can just append the variable:: PACKAGECONFIG_append = " f4" - *Configuration file:* This method is identical to changing the block through an append file except you edit your ``local.conf`` or ``mydistro.conf`` file. As with append files previously - described, you can either completely override the variable: - :: + described, you can either completely override the variable:: PACKAGECONFIG_pn-recipename = "f4 f5" - Or, you can just amend the variable: - :: + Or, you can just amend the variable:: PACKAGECONFIG_append_pn-recipename = " f4" @@ -5451,32 +5337,31 @@ system and gives an overview of their function and contents. :term:`PACKAGECONFIG` setting. Classes such as :ref:`autotools <ref-classes-autotools>` and - :ref:`cmake <ref-classes-cmake>` use ``PACKAGECONFIG_CONFARGS`` to - pass ``PACKAGECONFIG`` options to ``configure`` and ``cmake``, - respectively. If you are using ``PACKAGECONFIG`` but not a class that + :ref:`cmake <ref-classes-cmake>` use :term:`PACKAGECONFIG_CONFARGS` to + pass :term:`PACKAGECONFIG` options to ``configure`` and ``cmake``, + respectively. If you are using :term:`PACKAGECONFIG` but not a class that handles the ``do_configure`` task, then you need to use - ``PACKAGECONFIG_CONFARGS`` appropriately. + :term:`PACKAGECONFIG_CONFARGS` appropriately. :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` For recipes inheriting the :ref:`packagegroup <ref-classes-packagegroup>` class, setting - ``PACKAGEGROUP_DISABLE_COMPLEMENTARY`` to "1" specifies that the + :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth) should not be automatically created by the ``packagegroup`` recipe, which is the default behavior. :term:`PACKAGES` The list of packages the recipe creates. The default value is the - following: - :: + following:: ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN} During packaging, the :ref:`ref-tasks-package` task - goes through ``PACKAGES`` and uses the :term:`FILES` + goes through :term:`PACKAGES` and uses the :term:`FILES` variable corresponding to each package to assign files to the - package. If a file matches the ``FILES`` variable for more than one - package in ``PACKAGES``, it will be assigned to the earliest + package. If a file matches the :term:`FILES` variable for more than one + package in :term:`PACKAGES`, it will be assigned to the earliest (leftmost) package. Packages in the variable's list that are empty (i.e. where none of @@ -5488,10 +5373,10 @@ system and gives an overview of their function and contents. :term:`PACKAGES_DYNAMIC` A promise that your recipe satisfies runtime dependencies for optional modules that are found in other recipes. - ``PACKAGES_DYNAMIC`` does not actually satisfy the dependencies, it + :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it only states that they should be satisfied. For example, if a hard, runtime dependency (:term:`RDEPENDS`) of another - package is satisfied at build time through the ``PACKAGES_DYNAMIC`` + package is satisfied at build time through the :term:`PACKAGES_DYNAMIC` variable, but a package with the module name is never actually produced, then the other package will be broken. Thus, if you attempt to include that package in an image, you will get a dependency @@ -5501,9 +5386,9 @@ system and gives an overview of their function and contents. Typically, if there is a chance that such a situation can occur and the package that is not created is valid without the dependency being satisfied, then you should use :term:`RRECOMMENDS` - (a soft runtime dependency) instead of ``RDEPENDS``. + (a soft runtime dependency) instead of :term:`RDEPENDS`. - For an example of how to use the ``PACKAGES_DYNAMIC`` variable when + For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when you are splitting packages, see the ":ref:`dev-manual/common-tasks:handling optional module packaging`" section in the Yocto Project Development Tasks Manual. @@ -5527,7 +5412,7 @@ system and gives an overview of their function and contents. .. note:: - In order for ``PARALLEL_MAKE`` to be effective, ``make`` must be + In order for :term:`PARALLEL_MAKE` to be effective, ``make`` must be called with ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy way to ensure this is to use the ``oe_runmake`` function. @@ -5538,7 +5423,7 @@ system and gives an overview of their function and contents. If the software being built experiences dependency issues during the ``do_compile`` task that result in race conditions, you can clear - the ``PARALLEL_MAKE`` variable within the recipe as a workaround. For + the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For information on addressing race conditions, see the ":ref:`dev-manual/common-tasks:debugging parallel make races`" section in the Yocto Project Development Tasks Manual. @@ -5546,7 +5431,7 @@ system and gives an overview of their function and contents. For single socket systems (i.e. one CPU), you should not have to override this variable to gain optimal parallelism during builds. However, if you have very large systems that employ multiple physical - CPUs, you might want to make sure the ``PARALLEL_MAKE`` variable is + CPUs, you might want to make sure the :term:`PARALLEL_MAKE` variable is not set higher than "-j 20". For more information on speeding up builds, see the @@ -5561,14 +5446,14 @@ system and gives an overview of their function and contents. .. note:: - In order for ``PARALLEL_MAKEINST`` to be effective, ``make`` must + In order for :term:`PARALLEL_MAKEINST` to be effective, ``make`` must be called with ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy way to ensure this is to use the ``oe_runmake`` function. If the software being built experiences dependency issues during the ``do_install`` task that result in race conditions, you can - clear the ``PARALLEL_MAKEINST`` variable within the recipe as a + clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a workaround. For information on addressing race conditions, see the ":ref:`dev-manual/common-tasks:debugging parallel make races`" section in the Yocto Project Development Tasks Manual. @@ -5594,8 +5479,7 @@ system and gives an overview of their function and contents. patched, it uses "patch". If you wish to use an alternative patching tool, set the variable in - the recipe using one of the following: - :: + the recipe using one of the following:: PATCHTOOL = "patch" PATCHTOOL = "quilt" @@ -5606,7 +5490,7 @@ system and gives an overview of their function and contents. variable is used to make upgrades possible when the versioning scheme changes in some backwards incompatible way. - ``PE`` is the default value of the :term:`PKGE` variable. + :term:`PE` is the default value of the :term:`PKGE` variable. :term:`PF` Specifies the recipe or package name and includes all version and @@ -5628,7 +5512,7 @@ system and gives an overview of their function and contents. .. note:: - When using the ``PKG`` variable, you must use a package name override. + When using the :term:`PKG` variable, you must use a package name override. For example, when the :ref:`debian <ref-classes-debian>` class renames the output package, it does so by setting @@ -5641,8 +5525,7 @@ system and gives an overview of their function and contents. :term:`PKGD` Points to the destination directory for files to be packaged before they are split into individual packages. This directory defaults to - the following: - :: + the following:: ${WORKDIR}/package @@ -5654,8 +5537,7 @@ system and gives an overview of their function and contents. :ref:`ref-tasks-packagedata` task packages data for each recipe and installs it into this temporary, shared area. This directory defaults to the following, which you should not - change: - :: + change:: ${STAGING_DIR_HOST}/pkgdata @@ -5670,8 +5552,7 @@ system and gives an overview of their function and contents. :term:`PKGDEST` Points to the parent directory for files to be packaged after they have been split into individual packages. This directory defaults to - the following: - :: + the following:: ${WORKDIR}/packages-split @@ -5682,46 +5563,45 @@ system and gives an overview of their function and contents. :term:`PKGDESTWORK` Points to a temporary work area where the :ref:`ref-tasks-package` task saves package metadata. - The ``PKGDESTWORK`` location defaults to the following: - :: + The :term:`PKGDESTWORK` location defaults to the following:: ${WORKDIR}/pkgdata Do not change this default. The :ref:`ref-tasks-packagedata` task copies the - package metadata from ``PKGDESTWORK`` to + package metadata from :term:`PKGDESTWORK` to :term:`PKGDATA_DIR` to make it available globally. :term:`PKGE` - The epoch of the package(s) built by the recipe. By default, ``PKGE`` + The epoch of the package(s) built by the recipe. By default, :term:`PKGE` is set to :term:`PE`. :term:`PKGR` The revision of the package(s) built by the recipe. By default, - ``PKGR`` is set to :term:`PR`. + :term:`PKGR` is set to :term:`PR`. :term:`PKGV` The version of the package(s) built by the recipe. By default, - ``PKGV`` is set to :term:`PV`. + :term:`PKGV` is set to :term:`PV`. :term:`PN` This variable can have two separate functions depending on the context: a recipe name or a resulting package name. - ``PN`` refers to a recipe name in the context of a file used by the + :term:`PN` refers to a recipe name in the context of a file used by the OpenEmbedded build system as input to create a package. The name is normally extracted from the recipe file name. For example, if the - recipe is named ``expat_2.0.1.bb``, then the default value of ``PN`` + recipe is named ``expat_2.0.1.bb``, then the default value of :term:`PN` will be "expat". The variable refers to a package name in the context of a file created or produced by the OpenEmbedded build system. - If applicable, the ``PN`` variable also contains any special suffix + If applicable, the :term:`PN` variable also contains any special suffix or prefix. For example, using ``bash`` to build packages for the native machine, ``PN`` is ``bash-native``. Using ``bash`` to build - packages for the target and for Multilib, ``PN`` would be ``bash`` + packages for the target and for Multilib, :term:`PN` would be ``bash`` and ``lib64-bash``, respectively. :term:`PNBLACKLIST` @@ -5730,18 +5610,16 @@ system and gives an overview of their function and contents. :ref:`blacklist <ref-classes-blacklist>` class, which is inherited globally. - To prevent a recipe from being built, use the ``PNBLACKLIST`` + To prevent a recipe from being built, use the :term:`PNBLACKLIST` variable in your ``local.conf`` file. Here is an example that - prevents ``myrecipe`` from being built: - :: + prevents ``myrecipe`` from being built:: PNBLACKLIST[myrecipe] = "Not supported by our organization." :term:`POPULATE_SDK_POST_HOST_COMMAND` Specifies a list of functions to call once the OpenEmbedded build system has created the host part of the SDK. You can specify - functions separated by semicolons: - :: + functions separated by semicolons:: POPULATE_SDK_POST_HOST_COMMAND += "function; ... " @@ -5753,8 +5631,7 @@ system and gives an overview of their function and contents. :term:`POPULATE_SDK_POST_TARGET_COMMAND` Specifies a list of functions to call once the OpenEmbedded build system has created the target part of the SDK. You can specify - functions separated by semicolons: - :: + functions separated by semicolons:: POPULATE_SDK_POST_TARGET_COMMAND += "function; ... " @@ -5767,30 +5644,30 @@ system and gives an overview of their function and contents. The revision of the recipe. The default value for this variable is "r0". Subsequent revisions of the recipe conventionally have the values "r1", "r2", and so forth. When :term:`PV` increases, - ``PR`` is conventionally reset to "r0". + :term:`PR` is conventionally reset to "r0". .. note:: - The OpenEmbedded build system does not need the aid of ``PR`` + The OpenEmbedded build system does not need the aid of :term:`PR` to know when to rebuild a recipe. The build system uses the task :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the :ref:`stamp <structure-build-tmp-stamps>` and :ref:`overview-manual/concepts:shared state cache` mechanisms. - The ``PR`` variable primarily becomes significant when a package + The :term:`PR` variable primarily becomes significant when a package manager dynamically installs packages on an already built image. In - this case, ``PR``, which is the default value of + this case, :term:`PR`, which is the default value of :term:`PKGR`, helps the package manager distinguish which package is the most recent one in cases where many packages have the - same ``PV`` (i.e. ``PKGV``). A component having many packages with - the same ``PV`` usually means that the packages all install the same - upstream version, but with later (``PR``) version packages including + same :term:`PV` (i.e. :term:`PKGV`). A component having many packages with + the same :term:`PV` usually means that the packages all install the same + upstream version, but with later (:term:`PR`) version packages including packaging fixes. .. note:: - ``PR`` does not need to be increased for changes that do not change the + :term:`PR` does not need to be increased for changes that do not change the package contents or metadata. Because manually managing ``PR`` can be cumbersome and error-prone, @@ -5804,17 +5681,15 @@ system and gives an overview of their function and contents. preferred provider). You should always suffix this variable with the name of the provided item. And, you should define the variable using the preferred recipe's name (:term:`PN`). Here is a common - example: - :: + example:: PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" In the previous example, multiple recipes are providing "virtual/kernel". - The ``PREFERRED_PROVIDER`` variable is set with the name (``PN``) of + The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of the recipe you prefer to provide "virtual/kernel". - Following are more examples: - :: + Following are more examples:: PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86" PREFERRED_PROVIDER_virtual/libgl ?= "mesa" @@ -5825,9 +5700,9 @@ system and gives an overview of their function and contents. .. note:: - If you use a ``virtual/\*`` item with ``PREFERRED_PROVIDER``, then any + If you use a ``virtual/\*`` item with :term:`PREFERRED_PROVIDER`, then any recipe that :term:`PROVIDES` that item but is not selected (defined) - by ``PREFERRED_PROVIDER`` is prevented from building, which is usually + by :term:`PREFERRED_PROVIDER` is prevented from building, which is usually desirable since this mechanism is designed to select between mutually exclusive alternative providers. @@ -5838,12 +5713,11 @@ system and gives an overview of their function and contents. the first example below), and you should specify the :term:`PV` accordingly (`3.4.0` in the example). - The ``PREFERRED_VERSION`` variable supports limited wildcard use + The :term:`PREFERRED_VERSION` variable supports limited wildcard use through the "``%``" character. You can use the character to match any number of characters, which can be useful when specifying versions that contain long revision numbers that potentially change. Here are - two examples: - :: + two examples:: PREFERRED_VERSION_python = "3.4.0" PREFERRED_VERSION_linux-yocto = "5.0%" @@ -5857,42 +5731,37 @@ system and gives an overview of their function and contents. The specified version is matched against :term:`PV`, which does not necessarily match the version part of the recipe's filename. For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb`` - where ``foo_git.bb`` contains the following assignment: - :: + where ``foo_git.bb`` contains the following assignment:: PV = "1.1+git${SRCPV}" In this case, the correct way to select - ``foo_git.bb`` is by using an assignment such as the following: - :: + ``foo_git.bb`` is by using an assignment such as the following:: PREFERRED_VERSION_foo = "1.1+git%" Compare that previous example - against the following incorrect example, which does not work: - :: + against the following incorrect example, which does not work:: PREFERRED_VERSION_foo = "git" - Sometimes the ``PREFERRED_VERSION`` variable can be set by + Sometimes the :term:`PREFERRED_VERSION` variable can be set by configuration files in a way that is hard to change. You can use :term:`OVERRIDES` to set a machine-specific - override. Here is an example: - :: + override. Here is an example:: PREFERRED_VERSION_linux-yocto_qemux86 = "5.0%" Although not recommended, worst case, you can also use the "forcevariable" override, which is the strongest override possible. - Here is an example: - :: + Here is an example:: PREFERRED_VERSION_linux-yocto_forcevariable = "5.0%" .. note:: The ``\_forcevariable`` override is not handled specially. This override - only works because the default value of ``OVERRIDES`` includes "forcevariable". + only works because the default value of :term:`OVERRIDES` includes "forcevariable". If a recipe with the specified version is not available, a warning message will be shown. See :term:`REQUIRED_VERSION` if you want this @@ -5902,19 +5771,18 @@ system and gives an overview of their function and contents. Specifies additional paths from which the OpenEmbedded build system gets source code. When the build system searches for source code, it first tries the local download directory. If that location fails, the - build system tries locations defined by ``PREMIRRORS``, the upstream + build system tries locations defined by :term:`PREMIRRORS`, the upstream source, and then locations specified by :term:`MIRRORS` in that order. Assuming your distribution (:term:`DISTRO`) is "poky", - the default value for ``PREMIRRORS`` is defined in the + the default value for :term:`PREMIRRORS` is defined in the ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository. Typically, you could add a specific server for the build system to attempt before any others by adding something like the following to the ``local.conf`` configuration file in the - :term:`Build Directory`: - :: + :term:`Build Directory`:: PREMIRRORS_prepend = "\ git://.*/.* http://www.yoctoproject.org/sources/ \n \ @@ -5931,12 +5799,12 @@ system and gives an overview of their function and contents. :term:`PRIORITY` Indicates the importance of a package. - ``PRIORITY`` is considered to be part of the distribution policy + :term:`PRIORITY` is considered to be part of the distribution policy because the importance of any given recipe depends on the purpose for - which the distribution is being produced. Thus, ``PRIORITY`` is not + which the distribution is being produced. Thus, :term:`PRIORITY` is not normally set within recipes. - You can set ``PRIORITY`` to "required", "standard", "extra", and + You can set :term:`PRIORITY` to "required", "standard", "extra", and "optional", which is the default. :term:`PRIVATE_LIBS` @@ -5950,8 +5818,7 @@ system and gives an overview of their function and contents. standard version of the library. Libraries specified in this variable should be specified by their - file name. For example, from the Firefox recipe in meta-browser: - :: + file name. For example, from the Firefox recipe in meta-browser:: PRIVATE_LIBS = "libmozjs.so \ libxpcom.so \ @@ -5967,20 +5834,19 @@ system and gives an overview of their function and contents. :term:`PROVIDES` A list of aliases by which a particular recipe can be known. By - default, a recipe's own ``PN`` is implicitly already in its - ``PROVIDES`` list and therefore does not need to mention that it - provides itself. If a recipe uses ``PROVIDES``, the additional + default, a recipe's own :term:`PN` is implicitly already in its + :term:`PROVIDES` list and therefore does not need to mention that it + provides itself. If a recipe uses :term:`PROVIDES`, the additional aliases are synonyms for the recipe and can be useful for satisfying dependencies of other recipes during the build as specified by - ``DEPENDS``. + :term:`DEPENDS`. - Consider the following example ``PROVIDES`` statement from the recipe - file ``eudev_3.2.9.bb``: - :: + Consider the following example :term:`PROVIDES` statement from the recipe + file ``eudev_3.2.9.bb``:: PROVIDES += "udev" - The ``PROVIDES`` statement + The :term:`PROVIDES` statement results in the "eudev" recipe also being available as simply "udev". .. note:: @@ -5990,12 +5856,12 @@ system and gives an overview of their function and contents. strictly necessary it is recommended to avoid confusion. In addition to providing recipes under alternate names, the - ``PROVIDES`` mechanism is also used to implement virtual targets. A + :term:`PROVIDES` mechanism is also used to implement virtual targets. A virtual target is a name that corresponds to some particular functionality (e.g. a Linux kernel). Recipes that provide the - functionality in question list the virtual target in ``PROVIDES``. + functionality in question list the virtual target in :term:`PROVIDES`. Recipes that depend on the functionality in question can include the - virtual target in ``DEPENDS`` to leave the choice of provider open. + virtual target in :term:`DEPENDS` to leave the choice of provider open. Conventionally, virtual targets have names on the form "virtual/function" (e.g. "virtual/kernel"). The slash is simply part @@ -6013,8 +5879,7 @@ system and gives an overview of their function and contents. the component that manages the ``/dev`` directory. Setting the "preferred provider" for runtime dependencies is as - simple as using the following assignment in a configuration file: - :: + simple as using the following assignment in a configuration file:: VIRTUAL-RUNTIME_dev_manager = "udev" @@ -6024,15 +5889,14 @@ system and gives an overview of their function and contents. The ``conf/local.conf.sample.extended`` configuration file in the :term:`Source Directory` shows how the - ``PRSERV_HOST`` variable is set: - :: + :term:`PRSERV_HOST` variable is set:: PRSERV_HOST = "localhost:0" You must set the variable if you want to automatically start a local :ref:`PR service <dev-manual/common-tasks:working with a pr service>`. You can - set ``PRSERV_HOST`` to other values to use a remote PR service. + set :term:`PRSERV_HOST` to other values to use a remote PR service. :term:`PSEUDO_IGNORE_PATHS` @@ -6054,12 +5918,12 @@ system and gives an overview of their function and contents. :term:`PV` The version of the recipe. The version is normally extracted from the recipe filename. For example, if the recipe is named - ``expat_2.0.1.bb``, then the default value of ``PV`` will be "2.0.1". - ``PV`` is generally not overridden within a recipe unless it is + ``expat_2.0.1.bb``, then the default value of :term:`PV` will be "2.0.1". + :term:`PV` is generally not overridden within a recipe unless it is building an unstable (i.e. development) version from a source code repository (e.g. Git or Subversion). - ``PV`` is the default value of the :term:`PKGV` variable. + :term:`PV` is the default value of the :term:`PKGV` variable. :term:`PYTHON_ABI` When used by recipes that inherit the @@ -6081,18 +5945,17 @@ system and gives an overview of their function and contents. When used by recipes that inherit the `distutils3 <ref-classes-distutils3>`, :ref:`setuptools3 <ref-classes-setuptools3>` classes, specifies the - major Python version being built. For Python 3.x, ``PYTHON_PN`` would + major Python version being built. For Python 3.x, :term:`PYTHON_PN` would be "python3". You do not have to set this variable as the OpenEmbedded build system automatically sets it for you. The variable allows recipes to use common infrastructure such as the - following: - :: + following:: DEPENDS += "${PYTHON_PN}-native" In the previous example, - the version of the dependency is ``PYTHON_PN``. + the version of the dependency is :term:`PYTHON_PN`. :term:`RANLIB` The minimal command and arguments to run ``ranlib``. @@ -6102,8 +5965,7 @@ system and gives an overview of their function and contents. will not be installed if conflicting packages are not first removed. Like all package-controlling variables, you must always use them in - conjunction with a package name override. Here is an example: - :: + conjunction with a package name override. Here is an example:: RCONFLICTS_${PN} = "another_conflicting_package_name" @@ -6111,8 +5973,7 @@ system and gives an overview of their function and contents. specifying versioned dependencies. Although the syntax varies depending on the packaging format, BitBake hides these differences from you. Here is the general syntax to specify versions with the - ``RCONFLICTS`` variable: - :: + :term:`RCONFLICTS` variable:: RCONFLICTS_${PN} = "package (operator version)" @@ -6125,8 +5986,7 @@ system and gives an overview of their function and contents. - >= For example, the following sets up a dependency on version 1.2 or - greater of the package ``foo``: - :: + greater of the package ``foo``:: RCONFLICTS_${PN} = "foo (>= 1.2)" @@ -6135,19 +5995,18 @@ system and gives an overview of their function and contents. packages that must be installed in order for the package to function correctly. As an example, the following assignment declares that the package ``foo`` needs the packages ``bar`` and ``baz`` to be - installed: - :: + installed:: RDEPENDS_foo = "bar baz" The most common types of package runtime dependencies are automatically detected and added. Therefore, - most recipes do not need to set ``RDEPENDS``. For more information, + most recipes do not need to set :term:`RDEPENDS`. For more information, see the ":ref:`overview-manual/concepts:automatically added runtime dependencies`" section in the Yocto Project Overview and Concepts Manual. - The practical effect of the above ``RDEPENDS`` assignment is that + The practical effect of the above :term:`RDEPENDS` assignment is that ``bar`` and ``baz`` will be declared as dependencies inside the package ``foo`` when it is written out by one of the :ref:`do_package_write_\* <ref-tasks-package_write_deb>` tasks. @@ -6158,27 +6017,26 @@ system and gives an overview of their function and contents. also install the packages on which it depends. To ensure that the packages ``bar`` and ``baz`` get built, the - previous ``RDEPENDS`` assignment also causes a task dependency to be + previous :term:`RDEPENDS` assignment also causes a task dependency to be added. This dependency is from the recipe's :ref:`ref-tasks-build` (not to be confused with :ref:`ref-tasks-compile`) task to the ``do_package_write_*`` task of the recipes that build ``bar`` and ``baz``. - The names of the packages you list within ``RDEPENDS`` must be the + The names of the packages you list within :term:`RDEPENDS` must be the names of other packages - they cannot be recipe names. Although package names and recipe names usually match, the important point - here is that you are providing package names within the ``RDEPENDS`` + here is that you are providing package names within the :term:`RDEPENDS` variable. For an example of the default list of packages created from a recipe, see the :term:`PACKAGES` variable. - Because the ``RDEPENDS`` variable applies to packages being built, + Because the :term:`RDEPENDS` variable applies to packages being built, you should always use the variable in a form with an attached package name (remember that a single recipe can build multiple packages). For example, suppose you are building a development package that depends on the ``perl`` package. In this case, you would use the following - ``RDEPENDS`` statement: - :: + :term:`RDEPENDS` statement:: RDEPENDS_${PN}-dev += "perl" @@ -6195,20 +6053,19 @@ system and gives an overview of their function and contents. ``${PN}`` when modifying ``RDEPENDS_${PN}-dev``. Use the "+=" operator rather than the "=" operator. - The package names you use with ``RDEPENDS`` must appear as they would - in the ``PACKAGES`` variable. The :term:`PKG` variable + The package names you use with :term:`RDEPENDS` must appear as they would + in the :term:`PACKAGES` variable. The :term:`PKG` variable allows a different name to be used for the final package (e.g. the :ref:`debian <ref-classes-debian>` class uses this to rename packages), but this final package name cannot be used with - ``RDEPENDS``, which makes sense as ``RDEPENDS`` is meant to be + :term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be independent of the package format used. BitBake, which the OpenEmbedded build system uses, supports specifying versioned dependencies. Although the syntax varies depending on the packaging format, BitBake hides these differences from you. Here is the general syntax to specify versions with the - ``RDEPENDS`` variable: - :: + :term:`RDEPENDS` variable:: RDEPENDS_${PN} = "package (operator version)" @@ -6224,12 +6081,11 @@ system and gives an overview of their function and contents. .. note:: - You can use ``EXTENDPKGV`` to provide a full package version + You can use :term:`EXTENDPKGV` to provide a full package version specification. For example, the following sets up a dependency on version 1.2 or - greater of the package ``foo``: - :: + greater of the package ``foo``:: RDEPENDS_${PN} = "foo (>= 1.2)" @@ -6246,8 +6102,8 @@ system and gives an overview of their function and contents. class, this variable identifies distribution features that must exist in the current configuration in order for the OpenEmbedded build system to build the recipe. In other words, if the - ``REQUIRED_DISTRO_FEATURES`` variable lists a feature that does not - appear in ``DISTRO_FEATURES`` within the current configuration, then + :term:`REQUIRED_DISTRO_FEATURES` variable lists a feature that does not + appear in :term:`DISTRO_FEATURES` within the current configuration, then the recipe will be skipped, and if the build system attempts to build the recipe then an error will be triggered. @@ -6270,8 +6126,7 @@ system and gives an overview of their function and contents. :term:`ROOT_HOME` Defines the root home directory. By default, this directory is set as - follows in the BitBake configuration file: - :: + follows in the BitBake configuration file:: ROOT_HOME ??= "/home/root" @@ -6284,8 +6139,7 @@ system and gives an overview of their function and contents. You can override the default by setting the variable in any layer or in the ``local.conf`` file. Because the default is set using a "weak" assignment (i.e. "??="), you can use either of the following forms to - define your override: - :: + define your override:: ROOT_HOME = "/root" ROOT_HOME ?= "/root" @@ -6297,14 +6151,13 @@ system and gives an overview of their function and contents. :term:`ROOTFS` Indicates a filesystem image to include as the root filesystem. - The ``ROOTFS`` variable is an optional variable used with the + The :term:`ROOTFS` variable is an optional variable used with the :ref:`image-live <ref-classes-image-live>` class. :term:`ROOTFS_POSTINSTALL_COMMAND` Specifies a list of functions to call after the OpenEmbedded build system has installed packages. You can specify functions separated by - semicolons: - :: + semicolons:: ROOTFS_POSTINSTALL_COMMAND += "function; ... " @@ -6317,8 +6170,7 @@ system and gives an overview of their function and contents. :term:`ROOTFS_POSTPROCESS_COMMAND` Specifies a list of functions to call once the OpenEmbedded build system has created the root filesystem. You can specify functions - separated by semicolons: - :: + separated by semicolons:: ROOTFS_POSTPROCESS_COMMAND += "function; ... " @@ -6333,8 +6185,7 @@ system and gives an overview of their function and contents. system has removed unnecessary packages. When runtime package management is disabled in the image, several packages are removed including ``base-passwd``, ``shadow``, and ``update-alternatives``. - You can specify functions separated by semicolons: - :: + You can specify functions separated by semicolons:: ROOTFS_POSTUNINSTALL_COMMAND += "function; ... " @@ -6347,8 +6198,7 @@ system and gives an overview of their function and contents. :term:`ROOTFS_PREPROCESS_COMMAND` Specifies a list of functions to call before the OpenEmbedded build system has created the root filesystem. You can specify functions - separated by semicolons: - :: + separated by semicolons:: ROOTFS_PREPROCESS_COMMAND += "function; ... " @@ -6362,16 +6212,15 @@ system and gives an overview of their function and contents. A list of package name aliases that a package also provides. These aliases are useful for satisfying runtime dependencies of other packages both during the build and on the target (as specified by - ``RDEPENDS``). + :term:`RDEPENDS`). .. note:: - A package's own name is implicitly already in its ``RPROVIDES`` list. + A package's own name is implicitly already in its :term:`RPROVIDES` list. As with all package-controlling variables, you must always use the variable in conjunction with a package name override. Here is an - example: - :: + example:: RPROVIDES_${PN} = "widget-abi-2" @@ -6380,44 +6229,42 @@ system and gives an overview of their function and contents. built. The package being built does not depend on this list of packages in order to successfully build, but rather uses them for extended usability. To specify runtime dependencies for packages, see - the ``RDEPENDS`` variable. + the :term:`RDEPENDS` variable. - The package manager will automatically install the ``RRECOMMENDS`` + The package manager will automatically install the :term:`RRECOMMENDS` list of packages when installing the built package. However, you can prevent listed packages from being installed by using the :term:`BAD_RECOMMENDATIONS`, :term:`NO_RECOMMENDATIONS`, and :term:`PACKAGE_EXCLUDE` variables. - Packages specified in ``RRECOMMENDS`` need not actually be produced. - However, a recipe must exist that provides each package, either + Packages specified in :term:`RRECOMMENDS` need not actually be produced. + However, there must be a recipe providing each package, either through the :term:`PACKAGES` or :term:`PACKAGES_DYNAMIC` variables or the :term:`RPROVIDES` variable, or an error will occur during the build. If such a recipe does exist and the package is not produced, the build continues without error. - Because the ``RRECOMMENDS`` variable applies to packages being built, + Because the :term:`RRECOMMENDS` variable applies to packages being built, you should always attach an override to the variable to specify the particular package whose usability is being extended. For example, suppose you are building a development package that is extended to support wireless functionality. In this case, you would use the - following: - :: + following:: RRECOMMENDS_${PN}-dev += "wireless_package_name" In the example, the package name (``${PN}-dev``) must appear as it would in - the ``PACKAGES`` namespace before any renaming of the output package + the :term:`PACKAGES` namespace before any renaming of the output package by classes such as ``debian.bbclass``. BitBake, which the OpenEmbedded build system uses, supports specifying versioned recommends. Although the syntax varies depending on the packaging format, BitBake hides these differences from you. Here is the general syntax to specify versions with the - ``RRECOMMENDS`` variable: - :: + :term:`RRECOMMENDS` variable:: RRECOMMENDS_${PN} = "package (operator version)" @@ -6430,8 +6277,7 @@ system and gives an overview of their function and contents. - >= For example, the following sets up a recommend on version 1.2 or - greater of the package ``foo``: - :: + greater of the package ``foo``:: RRECOMMENDS_${PN} = "foo (>= 1.2)" @@ -6440,11 +6286,10 @@ system and gives an overview of their function and contents. this variable to determine which package should be installed to replace other package(s) during an upgrade. In order to also have the other package(s) removed at the same time, you must add the name of - the other package to the ``RCONFLICTS`` variable. + the other package to the :term:`RCONFLICTS` variable. As with all package-controlling variables, you must use this variable - in conjunction with a package name override. Here is an example: - :: + in conjunction with a package name override. Here is an example:: RREPLACES_${PN} = "other_package_being_replaced" @@ -6452,8 +6297,7 @@ system and gives an overview of their function and contents. specifying versioned replacements. Although the syntax varies depending on the packaging format, BitBake hides these differences from you. Here is the general syntax to specify versions with the - ``RREPLACES`` variable: - :: + :term:`RREPLACES` variable:: RREPLACES_${PN} = "package (operator version)" @@ -6466,8 +6310,7 @@ system and gives an overview of their function and contents. - >= For example, the following sets up a replacement using version 1.2 - or greater of the package ``foo``: - :: + or greater of the package ``foo``:: RREPLACES_${PN} = "foo (>= 1.2)" @@ -6478,8 +6321,7 @@ system and gives an overview of their function and contents. As with all package-controlling variables, you must always use this variable in conjunction with a package name override. Here is an - example: - :: + example:: RSUGGESTS_${PN} = "useful_package another_package" @@ -6491,14 +6333,13 @@ system and gives an overview of their function and contents. version. If the source tarball extracts the code to a directory named anything other than ``${BPN}-${PV}``, or if the source code is fetched from an SCM such as Git or Subversion, then you must set - ``S`` in the recipe so that the OpenEmbedded build system knows where + :term:`S` in the recipe so that the OpenEmbedded build system knows where to find the unpacked source. As an example, assume a :term:`Source Directory` top-level folder named ``poky`` and a default Build Directory at ``poky/build``. In this case, the work directory the build system - uses to keep the unpacked recipe for ``db`` is the following: - :: + uses to keep the unpacked recipe for ``db`` is the following:: poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19 @@ -6507,9 +6348,8 @@ system and gives an overview of their function and contents. This next example assumes a Git repository. By default, Git repositories are cloned to ``${WORKDIR}/git`` during :ref:`ref-tasks-fetch`. Since this path is different - from the default value of ``S``, you must set it specifically so the - source can be located: - :: + from the default value of :term:`S`, you must set it specifically so the + source can be located:: SRC_URI = "git://path/to/repo.git" S = "${WORKDIR}/git" @@ -6525,7 +6365,7 @@ system and gives an overview of their function and contents. been tested against. Identifiers consist of the host distributor ID followed by the release, as reported by the ``lsb_release`` tool or as read from ``/etc/lsb-release``. Separate the list items with - explicit newline characters (``\n``). If ``SANITY_TESTED_DISTROS`` is + explicit newline characters (``\n``). If :term:`SANITY_TESTED_DISTROS` is not empty and the current value of :term:`NATIVELSBSTRING` does not appear in the list, then the build system reports a warning that indicates the @@ -6536,7 +6376,7 @@ system and gives an overview of their function and contents. set this variable. Instead, use :term:`SDKMACHINE`. :term:`SDK_CUSTOM_TEMPLATECONF` - When building the extensible SDK, if ``SDK_CUSTOM_TEMPLATECONF`` is set to + When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to "1" and a ``conf/templateconf.conf`` file exists in the build directory (:term:`TOPDIR`) then this will be copied into the SDK. @@ -6544,8 +6384,7 @@ system and gives an overview of their function and contents. The directory set up and used by the :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the SDK is deployed. The ``populate_sdk_base`` class defines - ``SDK_DEPLOY`` as follows: - :: + :term:`SDK_DEPLOY` as follows:: SDK_DEPLOY = "${TMPDIR}/deploy/sdk" @@ -6553,15 +6392,14 @@ system and gives an overview of their function and contents. The parent directory used by the OpenEmbedded build system when creating SDK output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines - the variable as follows: - :: + the variable as follows:: SDK_DIR = "${WORKDIR}/sdk" .. note:: - The ``SDK_DIR`` directory is a temporary directory as it is part of - ``WORKDIR``. The final output directory is :term:`SDK_DEPLOY`. + The :term:`SDK_DIR` directory is a temporary directory as it is part of + :term:`WORKDIR`. The final output directory is :term:`SDK_DEPLOY`. :term:`SDK_EXT_TYPE` Controls whether or not shared state artifacts are copied into the @@ -6579,14 +6417,12 @@ system and gives an overview of their function and contents. The manifest file for the host part of the SDK. This file lists all the installed packages that make up the host part of the SDK. The file contains package information on a line-per-package basis as - follows: - :: + follows:: packagename packagearch version The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class - defines the manifest file as follows: - :: + defines the manifest file as follows:: SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest" @@ -6602,7 +6438,7 @@ system and gives an overview of their function and contents. .. note:: - Enabling the ``SDK_INCLUDE_PKGDATA`` + Enabling the :term:`SDK_INCLUDE_PKGDATA` variable significantly increases build time because all of world needs to be built. Enabling the variable also slightly increases the size of the extensible SDK. @@ -6616,16 +6452,15 @@ system and gives an overview of their function and contents. IDE or from other tools and you do not want to perform additional steps to install the toolchain. - The ``SDK_INCLUDE_TOOLCHAIN`` variable defaults to "0" if - ``SDK_EXT_TYPE`` is set to "minimal", and defaults to "1" if - ``SDK_EXT_TYPE`` is set to "full". + The :term:`SDK_INCLUDE_TOOLCHAIN` variable defaults to "0" if + :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if + :term:`SDK_EXT_TYPE` is set to "full". :term:`SDK_INHERIT_BLACKLIST` A list of classes to remove from the :term:`INHERIT` value globally within the extensible SDK configuration. The :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the - default value: - :: + default value:: SDK_INHERIT_BLACKLIST ?= "buildhistory icecc" @@ -6645,7 +6480,7 @@ system and gives an overview of their function and contents. build system is running and thus would be potentially problematic within the extensible SDK. - By default, ``SDK_LOCAL_CONF_BLACKLIST`` is set in the + By default, :term:`SDK_LOCAL_CONF_BLACKLIST` is set in the :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and excludes the following variables: @@ -6688,8 +6523,7 @@ system and gives an overview of their function and contents. :term:`DISTRO`, :term:`TCLIBC`, :term:`SDK_ARCH`, :term:`IMAGE_BASENAME`, and - :term:`TUNE_PKGARCH` variables: - :: + :term:`TUNE_PKGARCH` variables:: SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}" @@ -6700,8 +6534,7 @@ system and gives an overview of their function and contents. :term:`SDK_OUTPUT` The location used by the OpenEmbedded build system when creating SDK output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` - class defines the variable as follows: - :: + class defines the variable as follows:: SDK_DIR = "${WORKDIR}/sdk" SDK_OUTPUT = "${SDK_DIR}/image" @@ -6709,7 +6542,7 @@ system and gives an overview of their function and contents. .. note:: - The ``SDK_OUTPUT`` directory is a temporary directory as it is part of + The :term:`SDK_OUTPUT` directory is a temporary directory as it is part of :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is :term:`SDK_DEPLOY`. @@ -6717,7 +6550,7 @@ system and gives an overview of their function and contents. Specifies a list of architectures compatible with the SDK machine. This variable is set automatically and should not normally be hand-edited. Entries are separated using spaces and listed in order - of priority. The default value for ``SDK_PACKAGE_ARCHS`` is "all any + of priority. The default value for :term:`SDK_PACKAGE_ARCHS` is "all any noarch ${SDK_ARCH}-${SDKPKGSUFFIX}". :term:`SDK_POSTPROCESS_COMMAND` @@ -6732,7 +6565,7 @@ system and gives an overview of their function and contents. :term:`SDK_PREFIX` The toolchain binary prefix used for ``nativesdk`` recipes. The - OpenEmbedded build system uses the ``SDK_PREFIX`` value to set the + OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the :term:`TARGET_PREFIX` when building ``nativesdk`` recipes. The default value is "${SDK_SYS}-". @@ -6746,9 +6579,9 @@ system and gives an overview of their function and contents. - do_deploy Despite the default value of "" for the - ``SDK_RECRDEP_TASKS`` variable, the above four tasks are always added + :term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added to the SDK. To specify tasks beyond these four, you need to use the - ``SDK_RECRDEP_TASKS`` variable (e.g. you are defining additional + :term:`SDK_RECRDEP_TASKS` variable (e.g. you are defining additional tasks that are needed in order to build :term:`SDK_TARGETS`). @@ -6759,21 +6592,19 @@ system and gives an overview of their function and contents. The OpenEmbedded build system automatically sets this variable based on :term:`SDK_ARCH`, :term:`SDK_VENDOR`, and - :term:`SDK_OS`. You do not need to set the ``SDK_SYS`` + :term:`SDK_OS`. You do not need to set the :term:`SDK_SYS` variable yourself. :term:`SDK_TARGET_MANIFEST` The manifest file for the target part of the SDK. This file lists all the installed packages that make up the target part of the SDK. The file contains package information on a line-per-package basis as - follows: - :: + follows:: packagename packagearch version The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class - defines the manifest file as follows: - :: + defines the manifest file as follows:: SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest" @@ -6785,7 +6616,7 @@ system and gives an overview of their function and contents. standard or extensible SDK installation. The default value is "${PN}" (i.e. the image from which the SDK is built). - The ``SDK_TARGETS`` variable is an internal variable and typically + The :term:`SDK_TARGETS` variable is an internal variable and typically would not be changed. :term:`SDK_TITLE` @@ -6793,13 +6624,12 @@ system and gives an overview of their function and contents. this title is based on the :term:`DISTRO_NAME` or :term:`DISTRO` variable and is set in the :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as - follows: - :: + follows:: SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK" For the default distribution "poky", - ``SDK_TITLE`` is set to "Poky (Yocto Project Reference Distro)". + :term:`SDK_TITLE` is set to "Poky (Yocto Project Reference Distro)". For information on how to change this default title, see the ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`" @@ -6817,8 +6647,7 @@ system and gives an overview of their function and contents. :term:`SDK_VERSION` Specifies the version of the SDK. The Poky distribution configuration file (``/meta-poky/conf/distro/poky.conf``) sets the default - ``SDK_VERSION`` as follows: - :: + :term:`SDK_VERSION` as follows:: SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}" @@ -6831,13 +6660,12 @@ system and gives an overview of their function and contents. default, this directory is based on the :term:`DISTRO` variable and is set in the :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as - follows: - :: + follows:: SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk" For the - default distribution "poky", the ``SDKEXTPATH`` is set to "poky_sdk". + default distribution "poky", the :term:`SDKEXTPATH` is set to "poky_sdk". For information on how to change this default directory, see the ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`" @@ -6845,16 +6673,15 @@ system and gives an overview of their function and contents. Extensible Software Development Kit (eSDK) manual. :term:`SDKIMAGE_FEATURES` - Equivalent to ``IMAGE_FEATURES``. However, this variable applies to - the SDK generated from an image using the following command: - :: + Equivalent to :term:`IMAGE_FEATURES`. However, this variable applies to + the SDK generated from an image using the following command:: $ bitbake -c populate_sdk imagename :term:`SDKMACHINE` The machine for which the SDK is built. In other words, the SDK is built such that it runs on the target you specify with the - ``SDKMACHINE`` value. The value points to a corresponding ``.conf`` + :term:`SDKMACHINE` value. The value points to a corresponding ``.conf`` file under ``conf/machine-sdk/``. You can use "i686" and "x86_64" as possible values for this variable. @@ -6866,7 +6693,7 @@ system and gives an overview of their function and contents. .. note:: - You cannot set the ``SDKMACHINE`` + You cannot set the :term:`SDKMACHINE` variable in your distribution configuration file. If you do, the configuration will not take affect. @@ -6891,30 +6718,28 @@ system and gives an overview of their function and contents. building for the target. The flags are passed through the default value of the :term:`TARGET_CFLAGS` variable. - The ``SELECTED_OPTIMIZATION`` variable takes the value of - ``FULL_OPTIMIZATION`` unless ``DEBUG_BUILD`` = "1". If that is the - case, the value of ``DEBUG_OPTIMIZATION`` is used. + The :term:`SELECTED_OPTIMIZATION` variable takes the value of + :term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which + case the value of :term:`DEBUG_OPTIMIZATION` is used. :term:`SERIAL_CONSOLE` Defines a serial console (TTY) to enable using `getty <https://en.wikipedia.org/wiki/Getty_(Unix)>`__. Provide a value that specifies the baud rate followed by the TTY device name - separated by a space. You cannot specify more than one TTY device: - :: + separated by a space. You cannot specify more than one TTY device:: SERIAL_CONSOLE = "115200 ttyS0" .. note:: - The ``SERIAL_CONSOLE`` variable is deprecated. Please use the + The :term:`SERIAL_CONSOLE` variable is deprecated. Please use the :term:`SERIAL_CONSOLES` variable. :term:`SERIAL_CONSOLES` Defines a serial console (TTY) to enable using `getty <https://en.wikipedia.org/wiki/Getty_(Unix)>`__. Provide a value that specifies the baud rate followed by the TTY device name - separated by a semicolon. Use spaces to separate multiple devices: - :: + separated by a semicolon. Use spaces to separate multiple devices:: SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1" @@ -6924,17 +6749,21 @@ system and gives an overview of their function and contents. ``/proc/console`` before enabling them using getty. This variable allows aliasing in the format: <device>:<alias>. If a device was listed as "sclp_line0" in ``/dev/`` and "ttyS0" was listed in - ``/proc/console``, you would do the following: :: + ``/proc/console``, you would do the following:: SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0" This variable is currently only supported with SysVinit (i.e. not - with systemd). + with systemd). Note that :term:`SERIAL_CONSOLES_CHECK` also requires + ``/etc/inittab`` to be writable when used with SysVinit. This makes it + incompatible with customizations such as the following:: + + EXTRA_IMAGE_FEATURES += "read-only-rootfs" :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS` A list of recipe dependencies that should not be used to determine signatures of tasks from one recipe when they depend on tasks from - another recipe. For example: :: + another recipe. For example:: SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2" @@ -6942,7 +6771,7 @@ system and gives an overview of their function and contents. You can use the special token ``"*"`` on the left-hand side of the dependency to match all recipes except the one on the right-hand - side. Here is an example: :: + side. Here is an example:: SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native" @@ -7021,7 +6850,7 @@ system and gives an overview of their function and contents. :term:`SOURCE_MIRROR_FETCH` When you are fetching files to create a mirror of sources (i.e. - creating a source mirror), setting ``SOURCE_MIRROR_FETCH`` to "1" in + creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in your ``local.conf`` configuration file ensures the source for all recipes are fetched regardless of whether or not a recipe is compatible with the configuration. A recipe is considered @@ -7033,7 +6862,7 @@ system and gives an overview of their function and contents. .. note:: - Do not set the ``SOURCE_MIRROR_FETCH`` + Do not set the :term:`SOURCE_MIRROR_FETCH` variable unless you are creating a source mirror. In other words, do not set the variable during a normal build. @@ -7044,19 +6873,18 @@ system and gives an overview of their function and contents. To use this variable, you must globally inherit the :ref:`own-mirrors <ref-classes-own-mirrors>` class and then provide - the URL to your mirrors. Here is the general syntax: - :: + the URL to your mirrors. Here is the general syntax:: INHERIT += "own-mirrors" SOURCE_MIRROR_URL = "http://example.com/my_source_mirror" .. note:: - You can specify only a single URL in ``SOURCE_MIRROR_URL``. + You can specify only a single URL in :term:`SOURCE_MIRROR_URL`. :term:`SPDXLICENSEMAP` Maps commonly used license names to their SPDX counterparts found in - ``meta/files/common-licenses/``. For the default ``SPDXLICENSEMAP`` + ``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP` mappings, see the ``meta/conf/licenses.conf`` file. For additional information, see the :term:`LICENSE` @@ -7076,8 +6904,7 @@ system and gives an overview of their function and contents. U-Boot recipe. The SPL file type is set to "null" by default in the ``u-boot.inc`` - file as follows: - :: + file as follows:: # Some versions of u-boot build an SPL (Second Program Loader) image that # should be packaged along with the u-boot binary as well as placed in the @@ -7088,7 +6915,7 @@ system and gives an overview of their function and contents. SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}" SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}" - The ``SPL_BINARY`` variable helps form + The :term:`SPL_BINARY` variable helps form various ``SPL_*`` variables used by the OpenEmbedded build system. See the BeagleBone machine configuration example in the @@ -7101,7 +6928,7 @@ system and gives an overview of their function and contents. OpenEmbedded build system which bits to pull in for the build and how to pull them in. For example, if the recipe or append file only needs to fetch a tarball from the Internet, the recipe or append file uses - a single ``SRC_URI`` entry. On the other hand, if the recipe or + a single :term:`SRC_URI` entry. On the other hand, if the recipe or append file needs to fetch a tarball, apply two patches, and include a custom file, the recipe or append file would include four instances of the variable. @@ -7180,8 +7007,8 @@ system and gives an overview of their function and contents. - ``az://`` - Fetches files from an Azure Storage account. - Standard and recipe-specific options for ``SRC_URI`` exist. Here are - standard options: + There are standard and recipe-specific options for :term:`SRC_URI`. Here are + standard ones: - ``apply`` - Whether to apply the patch or not. The default action is to apply the patch. @@ -7199,19 +7026,19 @@ system and gives an overview of their function and contents. :term:`SRCDATE` is equal to or greater than ``mindate``. - - ``maxdate`` - Apply the patch only if ``SRCDATE`` is not later + - ``maxdate`` - Apply the patch only if :term:`SRCDATE` is not later than ``maxdate``. - - ``minrev`` - Apply the patch only if ``SRCREV`` is equal to or + - ``minrev`` - Apply the patch only if :term:`SRCREV` is equal to or greater than ``minrev``. - - ``maxrev`` - Apply the patch only if ``SRCREV`` is not later + - ``maxrev`` - Apply the patch only if :term:`SRCREV` is not later than ``maxrev``. - - ``rev`` - Apply the patch only if ``SRCREV`` is equal to + - ``rev`` - Apply the patch only if :term:`SRCREV` is equal to ``rev``. - - ``notrev`` - Apply the patch only if ``SRCREV`` is not equal to + - ``notrev`` - Apply the patch only if :term:`SRCREV` is not equal to ``rev``. Here are some additional options worth mentioning: @@ -7224,20 +7051,19 @@ system and gives an overview of their function and contents. the Git fetcher is used. - ``subdir`` - Places the file (or extracts its contents) into the - specified subdirectory of ``WORKDIR`` when the local (``file://``) + specified subdirectory of :term:`WORKDIR` when the local (``file://``) fetcher is used. - ``localdir`` - Places the file (or extracts its contents) into - the specified subdirectory of ``WORKDIR`` when the CVS fetcher is + the specified subdirectory of :term:`WORKDIR` when the CVS fetcher is used. - ``subpath`` - Limits the checkout to a specific subpath of the tree when using the Git fetcher is used. - ``name`` - Specifies a name to be used for association with - ``SRC_URI`` checksums or :term:`SRCREV` when you have more than one - file or git repository specified in ``SRC_URI``. For example: - :: + :term:`SRC_URI` checksums or :term:`SRCREV` when you have more than one + file or git repository specified in :term:`SRC_URI`. For example:: SRC_URI = "git://example.com/foo.git;name=first \ git://example.com/bar.git;name=second \ @@ -7254,7 +7080,7 @@ system and gives an overview of their function and contents. :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` By default, the OpenEmbedded build system automatically detects whether ``SRC_URI`` contains files that are machine-specific. If so, - the build system automatically changes ``PACKAGE_ARCH``. Setting this + the build system automatically changes :term:`PACKAGE_ARCH`. Setting this variable to "0" disables this behavior. :term:`SRCDATE` @@ -7266,18 +7092,16 @@ system and gives an overview of their function and contents. Returns the version string of the current package. This string is used to help define the value of :term:`PV`. - The ``SRCPV`` variable is defined in the ``meta/conf/bitbake.conf`` + The :term:`SRCPV` variable is defined in the ``meta/conf/bitbake.conf`` configuration file in the :term:`Source Directory` as - follows: - :: + follows:: SRCPV = "${@bb.fetch2.get_srcrev(d)}" - Recipes that need to define ``PV`` do so with the help of the - ``SRCPV``. For example, the ``ofono`` recipe (``ofono_git.bb``) + Recipes that need to define :term:`PV` do so with the help of the + :term:`SRCPV`. For example, the ``ofono`` recipe (``ofono_git.bb``) located in ``meta/recipes-connectivity`` in the Source Directory - defines ``PV`` as follows: - :: + defines :term:`PV` as follows:: PV = "0.12-git${SRCPV}" @@ -7286,26 +7110,50 @@ system and gives an overview of their function and contents. variable applies to Subversion, Git, Mercurial, and Bazaar only. Note that if you want to build a fixed revision and you want to avoid performing a query on the remote repository every time BitBake parses - your recipe, you should specify a ``SRCREV`` that is a full revision + your recipe, you should specify a :term:`SRCREV` that is a full revision identifier and not just a tag. .. note:: For information on limitations when inheriting the latest revision - of software using ``SRCREV``, see the :term:`AUTOREV` variable + of software using :term:`SRCREV`, see the :term:`AUTOREV` variable description and the ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`" section, which is in the Yocto Project Development Tasks Manual. + :term:`SRCTREECOVEREDTASKS` + A list of tasks that are typically not relevant (and therefore skipped) + when building using the :ref:`externalsrc <ref-classes-externalsrc>` + class. The default value as set in that class file is the set of tasks + that are rarely needed when using external source:: + + SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch" + + The notable exception is when processing external kernel source as + defined in the :ref:`kernel-yocto <ref-classes-kernel-yocto>` + class file (formatted for aesthetics):: + + SRCTREECOVEREDTASKS += "\ + do_validate_branches \ + do_kernel_configcheck \ + do_kernel_checkout \ + do_fetch \ + do_unpack \ + do_patch \ + " + + See the associated :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD` + variables for more information. + :term:`SSTATE_DIR` The directory for the shared state cache. :term:`SSTATE_MIRROR_ALLOW_NETWORK` If set to "1", allows fetches from mirrors that are specified in :term:`SSTATE_MIRRORS` to work even when - fetching from the network is disabled by setting ``BB_NO_NETWORK`` to - "1". Using the ``SSTATE_MIRROR_ALLOW_NETWORK`` variable is useful if - you have set ``SSTATE_MIRRORS`` to point to an internal server for + fetching from the network is disabled by setting :term:`BB_NO_NETWORK` to + "1". Using the :term:`SSTATE_MIRROR_ALLOW_NETWORK` variable is useful if + you have set :term:`SSTATE_MIRRORS` to point to an internal server for your shared state cache, but you want to disable any other fetching from the network. @@ -7323,13 +7171,12 @@ system and gives an overview of their function and contents. When pointing to sstate build artifacts on another machine that uses a different GCC version for native builds, you must configure - ``SSTATE_MIRRORS`` with a regular expression that maps local search + :term:`SSTATE_MIRRORS` with a regular expression that maps local search paths to server paths. The paths need to take into account :term:`NATIVELSBSTRING` set by the :ref:`uninative <ref-classes-uninative>` class. For example, the following maps the local search path ``universal-4.9`` to the - server-provided path server_url_sstate_path: - :: + server-provided path server_url_sstate_path:: SSTATE_MIRRORS ?= "file://universal-4.9/(.*) http://server_url_sstate_path/universal-4.8/\1 \n" @@ -7353,8 +7200,8 @@ system and gives an overview of their function and contents. (sstate) object during the first stage of preparing the sysroots. That object is scanned for hardcoded paths for original installation locations. The list of files that are scanned for paths is controlled - by the ``SSTATE_SCAN_FILES`` variable. Typically, recipes add files - they want to be scanned to the value of ``SSTATE_SCAN_FILES`` rather + by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files + they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather than the variable being comprehensively set. The :ref:`sstate <ref-classes-sstate>` class specifies the default list of files. @@ -7416,7 +7263,7 @@ system and gives an overview of their function and contents. .. note:: - Recipes should never write files directly under the ``STAGING_DIR`` + Recipes should never write files directly under the :term:`STAGING_DIR` directory because the OpenEmbedded build system manages the directory automatically. Instead, files should be installed to ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install` @@ -7431,7 +7278,7 @@ system and gives an overview of their function and contents. files. Exceptions include ``-native`` recipes, where the ``do_populate_sysroot`` task instead uses :term:`STAGING_DIR_NATIVE`. Depending on - the type of recipe and the build target, ``STAGING_DIR_HOST`` can + the type of recipe and the build target, :term:`STAGING_DIR_HOST` can have the following values: - For recipes building for the target machine, the value is @@ -7449,7 +7296,7 @@ system and gives an overview of their function and contents. standard build environment variables such as :term:`CPPFLAGS` and :term:`CFLAGS` are set up so that both host paths - and ``STAGING_DIR_NATIVE`` are searched for libraries and + and :term:`STAGING_DIR_NATIVE` are searched for libraries and headers using, for example, GCC's ``-isystem`` option. Thus, the emphasis is that the ``STAGING_DIR*`` variables @@ -7457,7 +7304,7 @@ system and gives an overview of their function and contents. :ref:`ref-tasks-configure`, :ref:`ref-tasks-compile`, and :ref:`ref-tasks-install`. Having the real system - root correspond to ``STAGING_DIR_HOST`` makes conceptual sense + root correspond to :term:`STAGING_DIR_HOST` makes conceptual sense for ``-native`` recipes, as they make use of host headers and libraries. @@ -7468,7 +7315,7 @@ system and gives an overview of their function and contents. :term:`STAGING_DIR_TARGET` Specifies the path to the sysroot used for the system for which the component generates code. For components that do not generate code, - which is the majority, ``STAGING_DIR_TARGET`` is set to match + which is the majority, :term:`STAGING_DIR_TARGET` is set to match :term:`STAGING_DIR_HOST`. Some recipes build binaries that can run on the target system but @@ -7477,8 +7324,8 @@ system and gives an overview of their function and contents. primary system is referred to as the "HOST" and the secondary, or different, system is referred to as the "TARGET". Thus, the binaries run on the "HOST" system and generate binaries for the "TARGET" - system. The ``STAGING_DIR_HOST`` variable points to the sysroot used - for the "HOST" system, while ``STAGING_DIR_TARGET`` points to the + system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used + for the "HOST" system, while :term:`STAGING_DIR_TARGET` points to the sysroot used for the "TARGET" system. :term:`STAGING_ETCDIR_NATIVE` @@ -7503,7 +7350,7 @@ system and gives an overview of their function and contents. Points to the directory containing the kernel build artifacts. Recipes building software that needs to access kernel build artifacts (e.g. ``systemtap-uprobes``) can look in the directory specified with - the ``STAGING_KERNEL_BUILDDIR`` variable to find these artifacts + the :term:`STAGING_KERNEL_BUILDDIR` variable to find these artifacts after the kernel has been built. :term:`STAGING_KERNEL_DIR` @@ -7523,9 +7370,8 @@ system and gives an overview of their function and contents. Specifies the base path used to create recipe stamp files. The path to an actual stamp file is constructed by evaluating this string and then appending additional information. Currently, the default - assignment for ``STAMP`` as set in the ``meta/conf/bitbake.conf`` - file is: - :: + assignment for :term:`STAMP` as set in the ``meta/conf/bitbake.conf`` + file is:: STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}" @@ -7551,8 +7397,8 @@ system and gives an overview of their function and contents. :term:`SUMMARY` The short (72 characters or less) summary of the binary package for packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default, - ``SUMMARY`` is used to define the - :term:`DESCRIPTION` variable if ``DESCRIPTION`` is + :term:`SUMMARY` is used to define the + :term:`DESCRIPTION` variable if :term:`DESCRIPTION` is not set in the recipe. :term:`SVNDIR` @@ -7562,8 +7408,7 @@ system and gives an overview of their function and contents. :term:`SYSLINUX_DEFAULT_CONSOLE` Specifies the kernel boot default console. If you want to use a console other than the default, set this variable in your recipe as - follows where "X" is the console number you want to use: - :: + follows where "X" is the console number you want to use:: SYSLINUX_DEFAULT_CONSOLE = "console=ttyX" @@ -7582,8 +7427,7 @@ system and gives an overview of their function and contents. Specifies the alternate serial port or turns it off. To turn off serial, set this variable to an empty string in your recipe. The variable's default value is set in the - :ref:`syslinux <ref-classes-syslinux>` class as follows: - :: + :ref:`syslinux <ref-classes-syslinux>` class as follows:: SYSLINUX_SERIAL ?= "0 115200" @@ -7592,8 +7436,7 @@ system and gives an overview of their function and contents. :term:`SYSLINUX_SERIAL_TTY` Specifies the alternate console=tty... kernel boot argument. The variable's default value is set in the - :ref:`syslinux <ref-classes-syslinux>` class as follows: - :: + :ref:`syslinux <ref-classes-syslinux>` class as follows:: SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200" @@ -7616,8 +7459,7 @@ system and gives an overview of their function and contents. :term:`SYSROOT_DIRS` Directories that are staged into the sysroot by the :ref:`ref-tasks-populate_sysroot` task. By - default, the following directories are staged: - :: + default, the following directories are staged:: SYSROOT_DIRS = " \ ${includedir} \ @@ -7632,8 +7474,7 @@ system and gives an overview of their function and contents. :ref:`ref-tasks-populate_sysroot` task. You can use this variable to exclude certain subdirectories of directories listed in :term:`SYSROOT_DIRS` from - staging. By default, the following directories are not staged: - :: + staging. By default, the following directories are not staged:: SYSROOT_DIRS_BLACKLIST = " \ ${mandir} \ @@ -7650,8 +7491,7 @@ system and gives an overview of their function and contents. :ref:`ref-tasks-populate_sysroot` task for ``-native`` recipes, in addition to those specified in :term:`SYSROOT_DIRS`. By default, the following - extra directories are staged: - :: + extra directories are staged:: SYSROOT_DIRS_NATIVE = " \ ${bindir} \ @@ -7680,8 +7520,7 @@ system and gives an overview of their function and contents. :term:`SYSTEMD_SERVICE` should start automatically or not. By default, the service is enabled to automatically start at boot time. The default setting is in the - :ref:`systemd <ref-classes-systemd>` class as follows: - :: + :ref:`systemd <ref-classes-systemd>` class as follows:: SYSTEMD_AUTO_ENABLE ??= "enable" @@ -7689,11 +7528,10 @@ system and gives an overview of their function and contents. :term:`SYSTEMD_BOOT_CFG` When :term:`EFI_PROVIDER` is set to - "systemd-boot", the ``SYSTEMD_BOOT_CFG`` variable specifies the + "systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the configuration file that should be used. By default, the :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the - ``SYSTEMD_BOOT_CFG`` as follows: - :: + :term:`SYSTEMD_BOOT_CFG` as follows:: SYSTEMD_BOOT_CFG ?= "${:term:`S`}/loader.conf" @@ -7702,12 +7540,11 @@ system and gives an overview of their function and contents. :term:`SYSTEMD_BOOT_ENTRIES` When :term:`EFI_PROVIDER` is set to - "systemd-boot", the ``SYSTEMD_BOOT_ENTRIES`` variable specifies a + "systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a list of entry files (``*.conf``) to install that contain one boot entry per file. By default, the :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the - ``SYSTEMD_BOOT_ENTRIES`` as follows: - :: + :term:`SYSTEMD_BOOT_ENTRIES` as follows:: SYSTEMD_BOOT_ENTRIES ?= "" @@ -7716,11 +7553,10 @@ system and gives an overview of their function and contents. :term:`SYSTEMD_BOOT_TIMEOUT` When :term:`EFI_PROVIDER` is set to - "systemd-boot", the ``SYSTEMD_BOOT_TIMEOUT`` variable specifies the + "systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the boot menu timeout in seconds. By default, the :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the - ``SYSTEMD_BOOT_TIMEOUT`` as follows: - :: + :term:`SYSTEMD_BOOT_TIMEOUT` as follows:: SYSTEMD_BOOT_TIMEOUT ?= "10" @@ -7730,15 +7566,14 @@ system and gives an overview of their function and contents. :term:`SYSTEMD_PACKAGES` When inheriting the :ref:`systemd <ref-classes-systemd>` class, this variable locates the systemd unit files when they are not found - in the main recipe's package. By default, the ``SYSTEMD_PACKAGES`` + in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES` variable is set such that the systemd unit files are assumed to - reside in the recipes main package: - :: + reside in the recipes main package:: SYSTEMD_PACKAGES ?= "${PN}" If these unit files are not in this recipe's main package, you need - to use ``SYSTEMD_PACKAGES`` to list the package or packages in which + to use :term:`SYSTEMD_PACKAGES` to list the package or packages in which the build system can find the systemd unit files. :term:`SYSTEMD_SERVICE` @@ -7747,8 +7582,7 @@ system and gives an overview of their function and contents. When you specify this file in your recipe, use a package name override to indicate the package to which the value applies. Here is - an example from the connman recipe: - :: + an example from the connman recipe:: SYSTEMD_SERVICE_${PN} = "connman.service" @@ -7760,14 +7594,13 @@ system and gives an overview of their function and contents. (allowing login), assuming :term:`USE_VT` is not set to "0". - The default value for ``SYSVINIT_ENABLED_GETTYS`` is "1" (i.e. only + The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only run a getty on the first virtual terminal). :term:`T` This variable points to a directory were BitBake places temporary files, which consist mostly of task logs and scripts, when building a - particular recipe. The variable is typically set as follows: - :: + particular recipe. The variable is typically set as follows:: T = "${WORKDIR}/temp" @@ -7775,7 +7608,7 @@ system and gives an overview of their function and contents. BitBake unpacks and builds the recipe. The default ``bitbake.conf`` file sets this variable. - The ``T`` variable is not to be confused with the + The :term:`T` variable is not to be confused with the :term:`TMPDIR` variable, which points to the root of the directory tree where BitBake places the output of an entire build. @@ -7799,29 +7632,28 @@ system and gives an overview of their function and contents. :term:`TARGET_AS_ARCH` Specifies architecture-specific assembler flags for the target - system. ``TARGET_AS_ARCH`` is initialized from + system. :term:`TARGET_AS_ARCH` is initialized from :term:`TUNE_ASARGS` by default in the BitBake - configuration file (``meta/conf/bitbake.conf``): - :: + configuration file (``meta/conf/bitbake.conf``):: TARGET_AS_ARCH = "${TUNE_ASARGS}" :term:`TARGET_CC_ARCH` Specifies architecture-specific C compiler flags for the target - system. ``TARGET_CC_ARCH`` is initialized from + system. :term:`TARGET_CC_ARCH` is initialized from :term:`TUNE_CCARGS` by default. .. note:: It is a common workaround to append :term:`LDFLAGS` to - ``TARGET_CC_ARCH`` in recipes that build software for the target that - would not otherwise respect the exported ``LDFLAGS`` variable. + :term:`TARGET_CC_ARCH` in recipes that build software for the target that + would not otherwise respect the exported :term:`LDFLAGS` variable. :term:`TARGET_CC_KERNEL_ARCH` This is a specific kernel compiler flag for a CPU or Application Binary Interface (ABI) tune. The flag is used rarely and only for cases where a userspace :term:`TUNE_CCARGS` is not - compatible with the kernel compilation. The ``TARGET_CC_KERNEL_ARCH`` + compatible with the kernel compilation. The :term:`TARGET_CC_KERNEL_ARCH` variable allows the kernel (and associated modules) to use a different configuration. See the ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the @@ -7833,8 +7665,8 @@ system and gives an overview of their function and contents. :term:`CFLAGS` is set to the value of this variable by default. - Additionally, the SDK's environment setup script sets the ``CFLAGS`` - variable in the environment to the ``TARGET_CFLAGS`` value so that + Additionally, the SDK's environment setup script sets the :term:`CFLAGS` + variable in the environment to the :term:`TARGET_CFLAGS` value so that executables built using the SDK also have the flags applied. :term:`TARGET_CPPFLAGS` @@ -7844,7 +7676,7 @@ system and gives an overview of their function and contents. value of this variable by default. Additionally, the SDK's environment setup script sets the - ``CPPFLAGS`` variable in the environment to the ``TARGET_CPPFLAGS`` + :term:`CPPFLAGS` variable in the environment to the :term:`TARGET_CPPFLAGS` value so that executables built using the SDK also have the flags applied. @@ -7855,7 +7687,7 @@ system and gives an overview of their function and contents. by default. Additionally, the SDK's environment setup script sets the - ``CXXFLAGS`` variable in the environment to the ``TARGET_CXXFLAGS`` + :term:`CXXFLAGS` variable in the environment to the :term:`TARGET_CXXFLAGS` value so that executables built using the SDK also have the flags applied. @@ -7867,10 +7699,9 @@ system and gives an overview of their function and contents. :term:`TARGET_LD_ARCH` Specifies architecture-specific linker flags for the target system. - ``TARGET_LD_ARCH`` is initialized from + :term:`TARGET_LD_ARCH` is initialized from :term:`TUNE_LDARGS` by default in the BitBake - configuration file (``meta/conf/bitbake.conf``): - :: + configuration file (``meta/conf/bitbake.conf``):: TARGET_LD_ARCH = "${TUNE_LDARGS}" @@ -7882,14 +7713,14 @@ system and gives an overview of their function and contents. Additionally, the SDK's environment setup script sets the :term:`LDFLAGS` variable in the environment to the - ``TARGET_LDFLAGS`` value so that executables built using the SDK also + :term:`TARGET_LDFLAGS` value so that executables built using the SDK also have the flags applied. :term:`TARGET_OS` Specifies the target's operating system. The variable can be set to "linux" for glibc-based systems (GNU C Library) and to "linux-musl" - for musl libc. For ARM/EABI targets, "linux-gnueabi" and - "linux-musleabi" possible values exist. + for musl libc. For ARM/EABI targets, the possible values are + "linux-gnueabi" and "linux-musleabi". :term:`TARGET_PREFIX` Specifies the prefix used for the toolchain binary target tools. @@ -7904,7 +7735,7 @@ system and gives an overview of their function and contents. value of ``BUILD_PREFIX``. - For native SDK recipes (``nativesdk``), the build system sets the - variable to the value of ``SDK_PREFIX``. + variable to the value of :term:`SDK_PREFIX`. :term:`TARGET_SYS` Specifies the system, including the architecture and the operating @@ -7918,7 +7749,7 @@ system and gives an overview of their function and contents. .. note:: - You do not need to set the ``TARGET_SYS`` variable yourself. + You do not need to set the :term:`TARGET_SYS` variable yourself. Consider these two examples: @@ -7949,11 +7780,11 @@ system and gives an overview of their function and contents. In the ``defaultsetup.conf`` file, the default value of ``TCLIBCAPPEND`` is "-${TCLIBC}". However, distros such as poky, which normally only support one ``libc`` variant, set - ``TCLIBCAPPEND`` to "" in their distro configuration file resulting + :term:`TCLIBCAPPEND` to "" in their distro configuration file resulting in no suffix being applied. :term:`TCMODE` - Specifies the toolchain selector. ``TCMODE`` controls the + Specifies the toolchain selector. :term:`TCMODE` controls the characteristics of the generated packages and images by telling the OpenEmbedded build system which toolchain profile to use. By default, the OpenEmbedded build system builds its own internal toolchain. The @@ -7962,7 +7793,7 @@ system and gives an overview of their function and contents. .. note:: - If ``TCMODE`` is set to a value other than "default", then it is your + If :term:`TCMODE` is set to a value other than "default", then it is your responsibility to ensure that the toolchain is compatible with the default toolchain. Using older or newer versions of these components might cause build problems. See the Release Notes for @@ -7972,7 +7803,7 @@ system and gives an overview of their function and contents. page on the Yocto Project website and click on the "RELEASE INFORMATION" link for the appropriate release. - The ``TCMODE`` variable is similar to :term:`TCLIBC`, + The :term:`TCMODE` variable is similar to :term:`TCLIBC`, which controls the variant of the GNU standard C library (``libc``) used during the build process: ``glibc`` or ``musl``. @@ -7998,7 +7829,7 @@ system and gives an overview of their function and contents. the :term:`TEST_EXPORT_ONLY` variable is set to "1". - The ``TEST_EXPORT_DIR`` variable defaults to + The :term:`TEST_EXPORT_DIR` variable defaults to ``"${TMPDIR}/testimage/${PN}"``. :term:`TEST_EXPORT_ONLY` @@ -8008,7 +7839,7 @@ system and gives an overview of their function and contents. :term:`TEST_LOG_DIR` Holds the SSH log and the boot log for QEMU machines. The - ``TEST_LOG_DIR`` variable defaults to ``"${WORKDIR}/testimage"``. + :term:`TEST_LOG_DIR` variable defaults to ``"${WORKDIR}/testimage"``. .. note:: @@ -8028,7 +7859,7 @@ system and gives an overview of their function and contents. For automated hardware testing, specifies additional arguments to pass through to the command specified in :term:`TEST_POWERCONTROL_CMD`. Setting - ``TEST_POWERCONTROL_EXTRA_ARGS`` is optional. You can use it if you + :term:`TEST_POWERCONTROL_EXTRA_ARGS` is optional. You can use it if you wish, for example, to separate the machine-specific and non-machine-specific parts of the arguments. @@ -8051,8 +7882,7 @@ system and gives an overview of their function and contents. program does. For example, to use the Picocom terminal program on serial device - ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows: - :: + ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows:: TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200" @@ -8060,7 +7890,7 @@ system and gives an overview of their function and contents. For automated hardware testing, specifies additional arguments to pass through to the command specified in :term:`TEST_SERIALCONTROL_CMD`. Setting - ``TEST_SERIALCONTROL_EXTRA_ARGS`` is optional. You can use it if you + :term:`TEST_SERIALCONTROL_EXTRA_ARGS` is optional. You can use it if you wish, for example, to separate the machine-specific and non-machine-specific parts of the command. @@ -8072,7 +7902,7 @@ system and gives an overview of their function and contents. .. note:: - The ``TEST_SERVER_IP`` variable is only used for a small number of + The :term:`TEST_SERVER_IP` variable is only used for a small number of tests such as the "dnf" test suite, which needs to download packages from ``WORKDIR/oe-rootfs-repo``. @@ -8089,9 +7919,8 @@ system and gives an overview of their function and contents. QEMU. Tests include ``ping``, ``ssh``, ``df`` among others. You can add - your own tests to the list of tests by appending ``TEST_SUITES`` as - follows: - :: + your own tests to the list of tests by appending :term:`TEST_SUITES` as + follows:: TEST_SUITES_append = " mytest" @@ -8110,8 +7939,7 @@ system and gives an overview of their function and contents. another test must appear later in the list than the test on which they depend. For example, if you append the list of tests with two tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on - ``test_A``, then you must order the tests as follows: - :: + ``test_A``, then you must order the tests as follows:: TEST_SUITES = "test_A test_B" @@ -8121,8 +7949,7 @@ system and gives an overview of their function and contents. :term:`TEST_TARGET` Specifies the target controller to use when running tests against a - test image. The default controller to use is "qemu": - :: + test image. The default controller to use is "qemu":: TEST_TARGET = "qemu" @@ -8131,7 +7958,7 @@ system and gives an overview of their function and contents. the controllers by adding a module in the layer's ``/lib/oeqa/controllers`` directory and by inheriting the ``BaseTarget`` class, which is an abstract class that cannot be used - as a value of ``TEST_TARGET``. + as a value of :term:`TEST_TARGET`. You can provide the following arguments with ``TEST_TARGET``: @@ -8156,13 +7983,12 @@ system and gives an overview of their function and contents. section in the Yocto Project Development Tasks Manual. :term:`TEST_TARGET_IP` - The IP address of your hardware under test. The ``TEST_TARGET_IP`` + The IP address of your hardware under test. The :term:`TEST_TARGET_IP` variable has no effect when :term:`TEST_TARGET` is set to "qemu". When you specify the IP address, you can also include a port. Here is - an example: - :: + an example:: TEST_TARGET_IP = "192.168.1.4:2201" @@ -8174,7 +8000,7 @@ system and gives an overview of their function and contents. :term:`TESTIMAGE_AUTO` Automatically runs the series of automated tests for images when an - image is successfully built. Setting ``TESTIMAGE_AUTO`` to "1" causes + image is successfully built. Setting :term:`TESTIMAGE_AUTO` to "1" causes any image that successfully builds to automatically boot under QEMU. Using the variable also adds in dependencies so that any SDK for which testing is requested is automatically built first. @@ -8206,24 +8032,23 @@ system and gives an overview of their function and contents. :term:`TMPDIR` This variable is the base directory the OpenEmbedded build system uses for all build output and intermediate files (other than the - shared state cache). By default, the ``TMPDIR`` variable points to + shared state cache). By default, the :term:`TMPDIR` variable points to ``tmp`` within the :term:`Build Directory`. If you want to establish this directory in a location other than the default, you can uncomment and edit the following statement in the - ``conf/local.conf`` file in the :term:`Source Directory`: - :: + ``conf/local.conf`` file in the :term:`Source Directory`:: #TMPDIR = "${TOPDIR}/tmp" - An example use for this scenario is to set ``TMPDIR`` to a local disk, + An example use for this scenario is to set :term:`TMPDIR` to a local disk, which does not use NFS, while having the Build Directory use NFS. - The filesystem used by ``TMPDIR`` must have standard filesystem + The filesystem used by :term:`TMPDIR` must have standard filesystem semantics (i.e. mixed-case files are unique, POSIX file locking, and persistent inodes). Due to various issues with NFS and bugs in some implementations, NFS does not meet this minimum requirement. - Consequently, ``TMPDIR`` cannot be on NFS. + Consequently, :term:`TMPDIR` cannot be on NFS. :term:`TOOLCHAIN_HOST_TASK` This variable lists packages the OpenEmbedded build system uses when @@ -8231,8 +8056,7 @@ system and gives an overview of their function and contents. packages specified by this variable are part of the toolchain set that runs on the :term:`SDKMACHINE`, and each package should usually have the prefix ``nativesdk-``. For example, - consider the following command when building an SDK: - :: + consider the following command when building an SDK:: $ bitbake -c populate_sdk imagename @@ -8253,8 +8077,7 @@ system and gives an overview of their function and contents. :term:`TOOLCHAIN_OUTPUTNAME` This variable defines the name used for the toolchain output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets - the ``TOOLCHAIN_OUTPUTNAME`` variable as follows: - :: + the :term:`TOOLCHAIN_OUTPUTNAME` variable as follows:: TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}" @@ -8290,7 +8113,7 @@ system and gives an overview of their function and contents. variable is used where the architecture is needed in a value where underscores are not allowed, for example within package filenames. In this case, dash characters replace any underscore characters used in - ``TARGET_ARCH``. + :term:`TARGET_ARCH`. Do not edit this variable. @@ -8299,19 +8122,18 @@ system and gives an overview of their function and contents. ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses this value to setup configuration. - ``TUNE_ARCH`` definitions are specific to a given architecture. The + :term:`TUNE_ARCH` definitions are specific to a given architecture. The definitions can be a single static definition, or can be dynamically adjusted. You can see details for a given CPU family by looking at the architecture's ``README`` file. For example, the ``meta/conf/machine/include/mips/README`` file in the :term:`Source Directory` provides information for - ``TUNE_ARCH`` specific to the ``mips`` architecture. + :term:`TUNE_ARCH` specific to the ``mips`` architecture. - ``TUNE_ARCH`` is tied closely to + :term:`TUNE_ARCH` is tied closely to :term:`TARGET_ARCH`, which defines the target machine's architecture. The BitBake configuration file - (``meta/conf/bitbake.conf``) sets ``TARGET_ARCH`` as follows: - :: + (``meta/conf/bitbake.conf``) sets :term:`TARGET_ARCH` as follows:: TARGET_ARCH = "${TUNE_ARCH}" @@ -8329,12 +8151,11 @@ system and gives an overview of their function and contents. :term:`TUNE_ASARGS` Specifies architecture-specific assembler flags for the target system. The set of flags is based on the selected tune features. - ``TUNE_ASARGS`` is set using the tune include files, which are + :term:`TUNE_ASARGS` is set using the tune include files, which are typically under ``meta/conf/machine/include/`` and are influenced through :term:`TUNE_FEATURES`. For example, the ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags - for the x86 architecture as follows: - :: + for the x86 architecture as follows:: TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}" @@ -8347,7 +8168,7 @@ system and gives an overview of their function and contents. :term:`TUNE_CCARGS` Specifies architecture-specific C compiler flags for the target system. The set of flags is based on the selected tune features. - ``TUNE_CCARGS`` is set using the tune include files, which are + :term:`TUNE_CCARGS` is set using the tune include files, which are typically under ``meta/conf/machine/include/`` and are influenced through :term:`TUNE_FEATURES`. @@ -8367,8 +8188,7 @@ system and gives an overview of their function and contents. are not conflicting and that they are supported. The BitBake configuration file (``meta/conf/bitbake.conf``) defines - ``TUNE_FEATURES`` as follows: - :: + :term:`TUNE_FEATURES` as follows:: TUNE_FEATURES ??= "${TUNE_FEATURES_tune-${DEFAULTTUNE}}" @@ -8377,12 +8197,11 @@ system and gives an overview of their function and contents. :term:`TUNE_LDARGS` Specifies architecture-specific linker flags for the target system. The set of flags is based on the selected tune features. - ``TUNE_LDARGS`` is set using the tune include files, which are + :term:`TUNE_LDARGS` is set using the tune include files, which are typically under ``meta/conf/machine/include/`` and are influenced through :term:`TUNE_FEATURES`. For example, the ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags - for the x86 architecture as follows: - :: + for the x86 architecture as follows:: TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}" @@ -8395,27 +8214,25 @@ system and gives an overview of their function and contents. :term:`TUNE_PKGARCH` The package architecture understood by the packaging system to define the architecture, ABI, and tuning of output packages. The specific - tune is defined using the "_tune" override as follows: - :: + tune is defined using the "_tune" override as follows:: TUNE_PKGARCH_tune-tune = "tune" These tune-specific package architectures are defined in the machine include files. Here is an example of the "core2-32" tuning as used in - the ``meta/conf/machine/include/tune-core2.inc`` file: - :: + the ``meta/conf/machine/include/tune-core2.inc`` file:: TUNE_PKGARCH_tune-core2-32 = "core2-32" :term:`TUNEABI` An underlying Application Binary Interface (ABI) used by a particular tuning in a given toolchain layer. Providers that use prebuilt - libraries can use the ``TUNEABI``, + libraries can use the :term:`TUNEABI`, :term:`TUNEABI_OVERRIDE`, and :term:`TUNEABI_WHITELIST` variables to check compatibility of tunings against their selection of libraries. - If ``TUNEABI`` is undefined, then every tuning is allowed. See the + If :term:`TUNEABI` is undefined, then every tuning is allowed. See the :ref:`sanity <ref-classes-sanity>` class to see how the variable is used. @@ -8423,7 +8240,7 @@ system and gives an overview of their function and contents. If set, the OpenEmbedded system ignores the :term:`TUNEABI_WHITELIST` variable. Providers that use prebuilt libraries can use the - ``TUNEABI_OVERRIDE``, ``TUNEABI_WHITELIST``, and + :term:`TUNEABI_OVERRIDE`, :term:`TUNEABI_WHITELIST`, and :term:`TUNEABI` variables to check compatibility of a tuning against their selection of libraries. @@ -8432,9 +8249,9 @@ system and gives an overview of their function and contents. :term:`TUNEABI_WHITELIST` A whitelist of permissible :term:`TUNEABI` values. If - ``TUNEABI_WHITELIST`` is not set, all tunes are allowed. Providers - that use prebuilt libraries can use the ``TUNEABI_WHITELIST``, - :term:`TUNEABI_OVERRIDE`, and ``TUNEABI`` + :term:`TUNEABI_WHITELIST` is not set, all tunes are allowed. Providers + that use prebuilt libraries can use the :term:`TUNEABI_WHITELIST`, + :term:`TUNEABI_OVERRIDE`, and :term:`TUNEABI` variables to check compatibility of a tuning against their selection of libraries. @@ -8449,8 +8266,7 @@ system and gives an overview of their function and contents. the :term:`Source Directory`. Here is an example from the ``meta/conf/machine/include/mips/arch-mips.inc`` include file that lists the "o32" and "n64" features as conflicting with the "n32" - feature: - :: + feature:: TUNECONFLICTS[n32] = "o32 n64" @@ -8459,8 +8275,7 @@ system and gives an overview of their function and contents. feature. The specified feature is stored as a flag. Valid features are specified in the machine include files (e.g. ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example - from that file: - :: + from that file:: TUNEVALID[bigendian] = "Enable big-endian mode." @@ -8481,43 +8296,42 @@ system and gives an overview of their function and contents. UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config" In this example, "sd" is selected as the configuration of the possible four for the - ``UBOOT_MACHINE``. The "sd" configuration defines - "mx6qsabreauto_config" as the value for ``UBOOT_MACHINE``, while the + :term:`UBOOT_MACHINE`. The "sd" configuration defines + "mx6qsabreauto_config" as the value for :term:`UBOOT_MACHINE`, while the "sdcard" specifies the ``IMAGE_FSTYPES`` to use for the U-Boot image. - For more information on how the ``UBOOT_CONFIG`` is handled, see the + For more information on how the :term:`UBOOT_CONFIG` is handled, see the :ref:`uboot-config <ref-classes-uboot-config>` class. :term:`UBOOT_DTB_LOADADDRESS` Specifies the load address for the dtb image used by U-Boot. During FIT - image creation, the ``UBOOT_DTB_LOADADDRESS`` variable is used in + image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the load address to be used in creating the dtb sections of Image Tree Source for the FIT image. :term:`UBOOT_DTBO_LOADADDRESS` Specifies the load address for the dtbo image used by U-Boot. During FIT - image creation, the ``UBOOT_DTBO_LOADADDRESS`` variable is used in + image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the load address to be used in creating the dtbo sections of Image Tree Source for the FIT image. :term:`UBOOT_ENTRYPOINT` Specifies the entry point for the U-Boot image. During U-Boot image - creation, the ``UBOOT_ENTRYPOINT`` variable is passed as a + creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a command-line parameter to the ``uboot-mkimage`` utility. :term:`UBOOT_LOADADDRESS` Specifies the load address for the U-Boot image. During U-Boot image - creation, the ``UBOOT_LOADADDRESS`` variable is passed as a + creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a command-line parameter to the ``uboot-mkimage`` utility. :term:`UBOOT_LOCALVERSION` Appends a string to the name of the local version of the U-Boot image. For example, assuming the version of the U-Boot image built was "2013.10", the full version string reported by U-Boot would be - "2013.10-yocto" given the following statement: - :: + "2013.10-yocto" given the following statement:: UBOOT_LOCALVERSION = "-yocto" @@ -8561,7 +8375,7 @@ system and gives an overview of their function and contents. :term:`UBOOT_RD_ENTRYPOINT` Specifies the entrypoint for the RAM disk image. During FIT image creation, the - ``UBOOT_RD_ENTRYPOINT`` variable is used + :term:`UBOOT_RD_ENTRYPOINT` variable is used in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the entrypoint to be used in creating the Image Tree Source for the FIT image. @@ -8569,7 +8383,7 @@ system and gives an overview of their function and contents. :term:`UBOOT_RD_LOADADDRESS` Specifies the load address for the RAM disk image. During FIT image creation, the - ``UBOOT_RD_LOADADDRESS`` variable is used + :term:`UBOOT_RD_LOADADDRESS` variable is used in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the load address to be used in creating the Image Tree Source for the FIT image. @@ -8607,20 +8421,19 @@ system and gives an overview of their function and contents. configure options are simply not passed to the configure script (e.g. should be removed from :term:`EXTRA_OECONF` or :term:`PACKAGECONFIG_CONFARGS`). - However, common options, for example, exist that are passed to all - configure scripts at a class level that might not be valid for some - configure scripts. It follows that no benefit exists in seeing a - warning about these options. For these cases, the options are added - to ``UNKNOWN_CONFIGURE_WHITELIST``. + However, there are common options that are passed to all + configure scripts at a class level, but might not be valid for some + configure scripts. Therefore warnings about these options are useless. + For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_WHITELIST`. The configure arguments check that uses - ``UNKNOWN_CONFIGURE_WHITELIST`` is part of the + :term:`UNKNOWN_CONFIGURE_WHITELIST` is part of the :ref:`insane <ref-classes-insane>` class and is only enabled if the recipe inherits the :ref:`autotools <ref-classes-autotools>` class. :term:`UPDATERCPN` For recipes inheriting the - :ref:`update-rc.d <ref-classes-update-rc.d>` class, ``UPDATERCPN`` + :ref:`update-rc.d <ref-classes-update-rc.d>` class, :term:`UPDATERCPN` specifies the package that contains the initscript that is enabled. The default value is "${PN}". Given that almost all recipes that @@ -8634,7 +8447,7 @@ system and gives an overview of their function and contents. OpenEmbedded build system determines the latest upstream version by picking the latest tag from the list of all repository tags. - You can use the ``UPSTREAM_CHECK_GITTAGREGEX`` variable to provide a + You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a regular expression to filter only the relevant tags should the default filter not work correctly. :: @@ -8642,7 +8455,7 @@ system and gives an overview of their function and contents. UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex" :term:`UPSTREAM_CHECK_REGEX` - Use the ``UPSTREAM_CHECK_REGEX`` variable to specify a different + Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different regular expression instead of the default one when the package checking system is parsing the page found using :term:`UPSTREAM_CHECK_URI`. @@ -8656,7 +8469,7 @@ system and gives an overview of their function and contents. the source code is provided from tarballs, the latest version is determined by fetching the directory listing where the tarball is and attempting to find a later tarball. When this approach does not work, - you can use ``UPSTREAM_CHECK_URI`` to provide a different URI that + you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that contains the link to the latest tarball. :: @@ -8664,8 +8477,8 @@ system and gives an overview of their function and contents. :term:`USE_DEVFS` Determines if ``devtmpfs`` is used for ``/dev`` population. The - default value used for ``USE_DEVFS`` is "1" when no value is - specifically set. Typically, you would set ``USE_DEVFS`` to "0" for a + default value used for :term:`USE_DEVFS` is "1" when no value is + specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a statically populated ``/dev`` directory. See the ":ref:`dev-manual/common-tasks:selecting a device manager`" section in @@ -8680,8 +8493,8 @@ system and gives an overview of their function and contents. virtual terminals in order to enable logging in through those terminals. - The default value used for ``USE_VT`` is "1" when no default value is - specifically set. Typically, you would set ``USE_VT`` to "0" in the + The default value used for :term:`USE_VT` is "1" when no default value is + specifically set. Typically, you would set :term:`USE_VT` to "0" in the machine configuration file for machines that do not have a graphical display attached and therefore do not need virtual terminal functionality. @@ -8691,8 +8504,7 @@ system and gives an overview of their function and contents. OpenEmbedded build system to enable extra features (e.g. ``buildstats``, ``image-mklibs``, and so forth). - The default list is set in your ``local.conf`` file: - :: + The default list is set in your ``local.conf`` file:: USER_CLASSES ?= "buildstats image-mklibs image-prelink" @@ -8709,11 +8521,10 @@ system and gives an overview of their function and contents. The default behavior for the build system is to dynamically apply ``uid`` and ``gid`` values. Consequently, the - ``USERADD_ERROR_DYNAMIC`` variable is by default not set. If you plan + :term:`USERADD_ERROR_DYNAMIC` variable is by default not set. If you plan on using statically assigned ``gid`` and ``uid`` values, you should - set the ``USERADD_ERROR_DYNAMIC`` variable in your ``local.conf`` - file as follows: - :: + set the :term:`USERADD_ERROR_DYNAMIC` variable in your ``local.conf`` + file as follows:: USERADD_ERROR_DYNAMIC = "error" @@ -8727,7 +8538,7 @@ system and gives an overview of their function and contents. .. note:: There is a difference in behavior between setting - ``USERADD_ERROR_DYNAMIC`` to ``error`` and setting it to ``warn``. + :term:`USERADD_ERROR_DYNAMIC` to ``error`` and setting it to ``warn``. When it is set to ``warn``, the build system will report a warning for every undefined ``uid`` and ``gid`` in any recipe. But when it is set to ``error``, it will only report errors for recipes that are actually @@ -8743,8 +8554,7 @@ system and gives an overview of their function and contents. When applying static group identification (``gid``) values, the OpenEmbedded build system looks in :term:`BBPATH` for a ``files/group`` file and then applies those ``uid`` values. Set the - variable as follows in your ``local.conf`` file: - :: + variable as follows in your ``local.conf`` file:: USERADD_GID_TABLES = "files/group" @@ -8761,14 +8571,13 @@ system and gives an overview of their function and contents. You must set this variable if the recipe inherits the class. For example, the following enables adding a user for the main package in - a recipe: - :: + a recipe:: USERADD_PACKAGES = "${PN}" .. note:: - It follows that if you are going to use the ``USERADD_PACKAGES`` + It follows that if you are going to use the :term:`USERADD_PACKAGES` variable, you need to set one or more of the :term:`USERADD_PARAM`, :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables. @@ -8778,8 +8587,7 @@ system and gives an overview of their function and contents. the ``useradd`` command if you add a user to the system when the package is installed. - Here is an example from the ``dbus`` recipe: - :: + Here is an example from the ``dbus`` recipe:: USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \ --no-create-home --shell /bin/false \ @@ -8797,8 +8605,7 @@ system and gives an overview of their function and contents. When applying static user identification (``uid``) values, the OpenEmbedded build system looks in :term:`BBPATH` for a ``files/passwd`` file and then applies those ``uid`` values. Set the - variable as follows in your ``local.conf`` file: - :: + variable as follows in your ``local.conf`` file:: USERADD_UID_TABLES = "files/passwd" @@ -8833,7 +8640,7 @@ system and gives an overview of their function and contents. Specifies the persistence of the target's ``/var/log`` directory, which is used to house postinstall target log files. - By default, ``VOLATILE_LOG_DIR`` is set to "yes", which means the + By default, :term:`VOLATILE_LOG_DIR` is set to "yes", which means the file is not persistent. You can override this setting by setting the variable to "no" to make the log directory persistent. @@ -8855,22 +8662,21 @@ system and gives an overview of their function and contents. :term:`WKS_FILE_DEPENDS` When placed in the recipe that builds your image, this variable lists - build-time dependencies. The ``WKS_FILE_DEPENDS`` variable is only + build-time dependencies. The :term:`WKS_FILE_DEPENDS` variable is only applicable when Wic images are active (i.e. when :term:`IMAGE_FSTYPES` contains entries related to Wic). If your recipe does not create Wic images, the variable has no effect. - The ``WKS_FILE_DEPENDS`` variable is similar to the + The :term:`WKS_FILE_DEPENDS` variable is similar to the :term:`DEPENDS` variable. When you use the variable in your recipe that builds the Wic image, dependencies you list in the - ``WKS_FILE_DEPENDS`` variable are added to the ``DEPENDS`` variable. + :term:`WKS_FILE_DEPENDS` variable are added to the :term:`DEPENDS` variable. - With the ``WKS_FILE_DEPENDS`` variable, you have the possibility to + With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to specify a list of additional dependencies (e.g. native tools, bootloaders, and so forth), that are required to build Wic images. - Following is an example: - :: + Following is an example:: WKS_FILE_DEPENDS = "some-native-tool" @@ -8884,8 +8690,7 @@ system and gives an overview of their function and contents. :term:`TMPDIR` directory structure and is specific to the recipe being built and the system for which it is being built. - The ``WORKDIR`` directory is defined as follows: - :: + The :term:`WORKDIR` directory is defined as follows:: ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR} @@ -8904,8 +8709,7 @@ system and gives an overview of their function and contents. ``qemux86-poky-linux`` machine target system. Furthermore, suppose your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work directory the build system uses to build the package would be as - follows: - :: + follows:: poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0 @@ -8916,6 +8720,6 @@ system and gives an overview of their function and contents. indirectly, includes "x11-base" in :term:`IMAGE_FEATURES`. - The default value of ``XSERVER``, if not specified in the machine + The default value of :term:`XSERVER`, if not specified in the machine configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev". diff --git a/poky/documentation/releases.rst b/poky/documentation/releases.rst index 6a65b9fb3..890cd037f 100644 --- a/poky/documentation/releases.rst +++ b/poky/documentation/releases.rst @@ -1,20 +1,28 @@ .. SPDX-License-Identifier: CC-BY-SA-2.0-UK -========================= - Current Release Manuals -========================= +=========================== + Supported Release Manuals +=========================== + +****************************** +Release Series 3.3 (hardknott) +****************************** + +- :yocto_docs:`3.3 Documentation </3.3>` +- :yocto_docs:`3.3.1 Documentation </3.3.1>` ******************************* -3.2 'gatesgarth' Release Series +Release Series 3.2 (gatesgarth) ******************************* - :yocto_docs:`3.2 Documentation </3.2>` - :yocto_docs:`3.2.1 Documentation </3.2.1>` - :yocto_docs:`3.2.2 Documentation </3.2.2>` - :yocto_docs:`3.2.3 Documentation </3.2.3>` +- :yocto_docs:`3.2.4 Documentation </3.2.4>` **************************** -3.1 'dunfell' Release Series +Release Series 3.1 (dunfell) **************************** - :yocto_docs:`3.1 Documentation </3.1>` @@ -24,13 +32,15 @@ - :yocto_docs:`3.1.4 Documentation </3.1.4>` - :yocto_docs:`3.1.5 Documentation </3.1.5>` - :yocto_docs:`3.1.6 Documentation </3.1.6>` +- :yocto_docs:`3.1.7 Documentation </3.1.7>` +- :yocto_docs:`3.1.8 Documentation </3.1.8>` ========================== - Previous Release Manuals + Outdated Release Manuals ========================== ************************* -3.0 'zeus' Release Series +Release Series 3.0 (zeus) ************************* - :yocto_docs:`3.0 Documentation </3.0>` @@ -40,7 +50,7 @@ - :yocto_docs:`3.0.4 Documentation </3.0.4>` **************************** -2.7 'warrior' Release Series +Release Series 2.7 (warrior) **************************** - :yocto_docs:`2.7 Documentation </2.7>` @@ -50,7 +60,7 @@ - :yocto_docs:`2.7.4 Documentation </2.7.4>` ************************* -2.6 'thud' Release Series +Release Series 2.6 (thud) ************************* - :yocto_docs:`2.6 Documentation </2.6>` @@ -60,16 +70,16 @@ - :yocto_docs:`2.6.4 Documentation </2.6.4>` ************************* -2.5 'sumo' Release Series +Release Series 2.5 (sumo) ************************* - :yocto_docs:`2.5 Documentation </2.5>` - :yocto_docs:`2.5.1 Documentation </2.5.1>` - :yocto_docs:`2.5.2 Documentation </2.5.2>` - :yocto_docs:`2.5.3 Documentation </2.5.3>` - + ************************** -2.4 'rocko' Release Series +Release Series 2.4 (rocko) ************************** - :yocto_docs:`2.4 Documentation </2.4>` @@ -79,7 +89,7 @@ - :yocto_docs:`2.4.4 Documentation </2.4.4>` ************************* -2.3 'pyro' Release Series +Release Series 2.3 (pyro) ************************* - :yocto_docs:`2.3 Documentation </2.3>` @@ -89,7 +99,7 @@ - :yocto_docs:`2.3.4 Documentation </2.3.4>` ************************** -2.2 'morty' Release Series +Release Series 2.2 (morty) ************************** - :yocto_docs:`2.2 Documentation </2.2>` @@ -98,7 +108,7 @@ - :yocto_docs:`2.2.3 Documentation </2.2.3>` **************************** -2.1 'krogoth' Release Series +Release Series 2.1 (krogoth) **************************** - :yocto_docs:`2.1 Documentation </2.1>` @@ -107,7 +117,7 @@ - :yocto_docs:`2.1.3 Documentation </2.1.3>` *************************** -2.0 'jethro' Release Series +Release Series 2.0 (jethro) *************************** - :yocto_docs:`1.9 Documentation </1.9>` @@ -117,7 +127,7 @@ - :yocto_docs:`2.0.3 Documentation </2.0.3>` ************************* -1.8 'fido' Release Series +Release Series 1.8 (fido) ************************* - :yocto_docs:`1.8 Documentation </1.8>` @@ -125,7 +135,7 @@ - :yocto_docs:`1.8.2 Documentation </1.8.2>` ************************** -1.7 'dizzy' Release Series +Release Series 1.7 (dizzy) ************************** - :yocto_docs:`1.7 Documentation </1.7>` @@ -134,16 +144,16 @@ - :yocto_docs:`1.7.3 Documentation </1.7.3>` ************************** -1.6 'daisy' Release Series +Release Series 1.6 (daisy) ************************** - :yocto_docs:`1.6 Documentation </1.6>` - :yocto_docs:`1.6.1 Documentation </1.6.1>` - :yocto_docs:`1.6.2 Documentation </1.6.2>` - :yocto_docs:`1.6.3 Documentation </1.6.3>` - + ************************* -1.5 'dora' Release Series +Release Series 1.5 (dora) ************************* - :yocto_docs:`1.5 Documentation </1.5>` @@ -153,7 +163,7 @@ - :yocto_docs:`1.5.4 Documentation </1.5.4>` ************************** -1.4 'dylan' Release Series +Release Series 1.4 (dylan) ************************** - :yocto_docs:`1.4 Documentation </1.4>` @@ -162,9 +172,9 @@ - :yocto_docs:`1.4.3 Documentation </1.4.3>` - :yocto_docs:`1.4.4 Documentation </1.4.4>` - :yocto_docs:`1.4.5 Documentation </1.4.5>` - + ************************** -1.3 'danny' Release Series +Release Series 1.3 (danny) ************************** - :yocto_docs:`1.3 Documentation </1.3>` @@ -172,7 +182,7 @@ - :yocto_docs:`1.3.2 Documentation </1.3.2>` *************************** -1.2 'denzil' Release Series +Release Series 1.2 (denzil) *************************** - :yocto_docs:`1.2 Documentation </1.2>` @@ -180,7 +190,7 @@ - :yocto_docs:`1.2.2 Documentation </1.2.2>` *************************** -1.1 'edison' Release Series +Release Series 1.1 (edison) *************************** - :yocto_docs:`1.1 Documentation </1.1>` @@ -188,7 +198,7 @@ - :yocto_docs:`1.1.2 Documentation </1.1.2>` **************************** -1.0 'bernard' Release Series +Release Series 1.0 (bernard) **************************** - :yocto_docs:`1.0 Documentation </1.0>` @@ -196,7 +206,7 @@ - :yocto_docs:`1.0.2 Documentation </1.0.2>` **************************** -0.9 'laverne' Release Series +Release Series 0.9 (laverne) **************************** - :yocto_docs:`0.9 Documentation </0.9>` diff --git a/poky/documentation/sdk-manual/appendix-customizing-standard.rst b/poky/documentation/sdk-manual/appendix-customizing-standard.rst index 90b634529..9bc70cf55 100644 --- a/poky/documentation/sdk-manual/appendix-customizing-standard.rst +++ b/poky/documentation/sdk-manual/appendix-customizing-standard.rst @@ -17,10 +17,10 @@ and variables control the set of packages adding to the SDK. If you want to add individual packages to the toolchain that runs on the -host, simply add those packages to the ``TOOLCHAIN_HOST_TASK`` variable. +host, simply add those packages to the :term:`TOOLCHAIN_HOST_TASK` variable. Similarly, if you want to add packages to the default set that is part of the toolchain that runs on the target, add the packages to the -``TOOLCHAIN_TARGET_TASK`` variable. +:term:`TOOLCHAIN_TARGET_TASK` variable. Adding API Documentation to the Standard SDK ============================================ diff --git a/poky/documentation/sdk-manual/appendix-customizing.rst b/poky/documentation/sdk-manual/appendix-customizing.rst index 8e7115046..44f4334c2 100644 --- a/poky/documentation/sdk-manual/appendix-customizing.rst +++ b/poky/documentation/sdk-manual/appendix-customizing.rst @@ -35,13 +35,13 @@ build system applies them against ``local.conf`` and ``auto.conf``: - Variables listed in :term:`SDK_LOCAL_CONF_WHITELIST` are included. Including a variable in the value of - ``SDK_LOCAL_CONF_WHITELIST`` overrides either of the previous two + :term:`SDK_LOCAL_CONF_WHITELIST` overrides either of the previous two filters. The default value is blank. - Classes inherited globally with :term:`INHERIT` that are listed in :term:`SDK_INHERIT_BLACKLIST` - are disabled. Using ``SDK_INHERIT_BLACKLIST`` to disable these + are disabled. Using :term:`SDK_INHERIT_BLACKLIST` to disable these classes is the typical method to disable classes that are problematic or unnecessary in the SDK context. The default value blacklists the :ref:`buildhistory <ref-classes-buildhistory>` @@ -57,8 +57,7 @@ Adjusting the Extensible SDK to Suit Your Build Host's Setup ============================================================ In most cases, the extensible SDK defaults should work with your :term:`Build -Host`'s setup. -However, some cases exist for which you might consider making +Host`'s setup. However, there are cases when you might consider making adjustments: - If your SDK configuration inherits additional classes using the @@ -75,11 +74,9 @@ adjustments: is set using the "?=" operator. Consequently, you will need to either define the entire list by using the "=" operator, or you will need to append a value using either "_append" or the "+=" - operator. You can learn more about these operators in the " - Basic Syntax - " section of the BitBake User Manual. - - . + operator. You can learn more about these operators in the + ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" + section of the BitBake User Manual. - If you have classes or recipes that add additional tasks to the standard build flow (i.e. the tasks execute as the recipe builds as @@ -96,7 +93,7 @@ adjustments: - Disable the tasks if they are added by a class and you do not need the functionality the class provides in the extensible SDK. To - disable the tasks, add the class to the ``SDK_INHERIT_BLACKLIST`` + disable the tasks, add the class to the :term:`SDK_INHERIT_BLACKLIST` variable as described in the previous section. - Generally, you want to have a shared state mirror set up so users of @@ -129,8 +126,7 @@ adjustments: .. note:: You must also reflect this change in the value used for the - COREBASE_FILES - variable as previously described. + :term:`COREBASE_FILES` variable as previously described. Changing the Extensible SDK Installer Title =========================================== @@ -143,27 +139,25 @@ section. By default, this title is derived from :term:`DISTRO_NAME` when it is -set. If the ``DISTRO_NAME`` variable is not set, the title is derived +set. If the :term:`DISTRO_NAME` variable is not set, the title is derived from the :term:`DISTRO` variable. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` -class defines the default value of the ``SDK_TITLE`` variable as -follows: -:: +class defines the default value of the :term:`SDK_TITLE` variable as +follows:: SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK" -While several ways exist to change this variable, an efficient method is +While there are several ways of changing this variable, an efficient method is to set the variable in your distribution's configuration file. Doing so creates an SDK installer title that applies across your distribution. As an example, assume you have your own layer for your distribution named "meta-mydistro" and you are using the same type of file hierarchy as does the default "poky" distribution. If so, you could update the -``SDK_TITLE`` variable in the +:term:`SDK_TITLE` variable in the ``~/meta-mydistro/conf/distro/mydistro.conf`` file using the following -form: -:: +form:: SDK_TITLE = "your_title" @@ -194,8 +188,7 @@ the installed SDKs to update the installed SDKs by using the 3. Build the extensible SDK normally (i.e., use the ``bitbake -c populate_sdk_ext`` imagename command). -4. Publish the SDK using the following command: - :: +4. Publish the SDK using the following command:: $ oe-publish-sdk some_path/sdk-installer.sh path_to_shared_http_directory @@ -218,26 +211,24 @@ installation directory for the SDK is based on the :term:`SDKEXTPATH` variables from within the :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` -class as follows: -:: +class as follows:: SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk" You can change this default installation directory by specifically setting the -``SDKEXTPATH`` variable. +:term:`SDKEXTPATH` variable. -While a number of ways exist through which you can set this variable, +While there are several ways of setting this variable, the method that makes the most sense is to set the variable in your distribution's configuration file. Doing so creates an SDK installer default directory that applies across your distribution. As an example, assume you have your own layer for your distribution named "meta-mydistro" and you are using the same type of file hierarchy as does the default "poky" distribution. If so, you could update the -``SDKEXTPATH`` variable in the +:term:`SDKEXTPATH` variable in the ``~/meta-mydistro/conf/distro/mydistro.conf`` file using the following -form: -:: +form:: SDKEXTPATH = "some_path_for_your_installed_sdk" @@ -272,13 +263,11 @@ source, you need to do a number of things: 3. Set the appropriate configuration so that the produced SDK knows how to find the configuration. The variable you need to set is - :term:`SSTATE_MIRRORS`: - :: + :term:`SSTATE_MIRRORS`:: SSTATE_MIRRORS = "file://.* http://example.com/some_path/sstate-cache/PATH" - You can set the - ``SSTATE_MIRRORS`` variable in two different places: + You can set the :term:`SSTATE_MIRRORS` variable in two different places: - If the mirror value you are setting is appropriate to be set for both the OpenEmbedded build system that is actually building the @@ -287,23 +276,21 @@ source, you need to do a number of things: side, and its contents will not interfere with the build), then you can set the variable in your ``local.conf`` or custom distro configuration file. You can then "whitelist" the variable through - to the SDK by adding the following: - :: + to the SDK by adding the following:: SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS" - - Alternatively, if you just want to set the ``SSTATE_MIRRORS`` + - Alternatively, if you just want to set the :term:`SSTATE_MIRRORS` variable's value for the SDK alone, create a ``conf/sdk-extra.conf`` file either in your :term:`Build Directory` or within any - layer and put your ``SSTATE_MIRRORS`` setting within that file. + layer and put your :term:`SSTATE_MIRRORS` setting within that file. .. note:: This second option is the safest option should you have any doubts as to which method to use when setting - SSTATE_MIRRORS - . + :term:`SSTATE_MIRRORS` Minimizing the Size of the Extensible SDK Installer Download ============================================================ @@ -313,8 +300,7 @@ everything needed to reconstruct the image for which the SDK was built. This bundling can lead to an SDK installer file that is a Gigabyte or more in size. If the size of this file causes a problem, you can build an SDK that has just enough in it to install and provide access to the -``devtool command`` by setting the following in your configuration: -:: +``devtool command`` by setting the following in your configuration:: SDK_EXT_TYPE = "minimal" @@ -336,14 +322,13 @@ information enables the ``devtool search`` command to return useful results. To facilitate this wider range of information, you would need to set the -following: -:: +following:: SDK_INCLUDE_PKGDATA = "1" See the :term:`SDK_INCLUDE_PKGDATA` variable for additional information. -Setting the ``SDK_INCLUDE_PKGDATA`` variable as shown causes the "world" +Setting the :term:`SDK_INCLUDE_PKGDATA` variable as shown causes the "world" target to be built so that information for all of the recipes included within it are available. Having these recipes available increases build time significantly and increases the size of the SDK installer by 30-80 @@ -360,15 +345,15 @@ in most cases. If you set SDK_EXT_TYPE to "minimal", then providing a shared state mirror is mandatory so - that items can be installed as needed. See the " - Providing Additional Installable Extensible SDK Content - " section for more information. + that items can be installed as needed. See the + :ref:`sdk-manual/appendix-customizing:providing additional installable extensible sdk content` + section for more information. You can explicitly control whether or not to include the toolchain when you build an SDK by setting the :term:`SDK_INCLUDE_TOOLCHAIN` variable to "1". In particular, it is useful to include the toolchain -when you have set ``SDK_EXT_TYPE`` to "minimal", which by default, +when you have set :term:`SDK_EXT_TYPE` to "minimal", which by default, excludes the toolchain. Also, it is helpful if you are building a small SDK for use with an IDE or some other tool where you do not want to take extra steps to install a toolchain. diff --git a/poky/documentation/sdk-manual/appendix-obtain.rst b/poky/documentation/sdk-manual/appendix-obtain.rst index 3c1dc52d1..fc6b8b9d5 100644 --- a/poky/documentation/sdk-manual/appendix-obtain.rst +++ b/poky/documentation/sdk-manual/appendix-obtain.rst @@ -25,8 +25,7 @@ Follow these steps to locate and hand-install the toolchain: download the installer appropriate for your build host, target hardware, and image type. - The installer files (``*.sh``) follow this naming convention: - :: + The installer files (``*.sh``) follow this naming convention:: poky-glibc-host_system-core-image-type-arch-toolchain[-ext]-release.sh @@ -55,15 +54,13 @@ Follow these steps to locate and hand-install the toolchain: For example, if your build host is a 64-bit x86 system and you need an extended SDK for a 64-bit core2 target, go into the ``x86_64`` - folder and download the following installer: - :: + folder and download the following installer:: poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh 4. *Run the Installer:* Be sure you have execution privileges and run the installer. Following is an example from the ``Downloads`` - directory: - :: + directory:: $ ~/Downloads/poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh @@ -132,8 +129,7 @@ build the SDK installer. Follow these steps: using to build the installer. If SDKMACHINE is not set appropriately, the build fails and provides an error - message similar to the following: - :: + message similar to the following:: The extensible SDK can currently only be built for the same architecture as the machine being built on - SDK_ARCH is set to i686 (likely via setting SDKMACHINE) which is different from the architecture of the build machine (x86_64). @@ -142,10 +138,11 @@ build the SDK installer. Follow these steps: 6. *Build the SDK Installer:* To build the SDK installer for a standard SDK and populate the SDK image, use the following command form. Be - sure to replace image with an image (e.g. "core-image-sato"): $ - bitbake image -c populate_sdk You can do the same for the extensible - SDK using this command form: - :: + sure to replace ``image`` with an image (e.g. "core-image-sato"):: + + $ bitbake image -c populate_sdk + + You can do the same for the extensible SDK using this command form:: $ bitbake image -c populate_sdk_ext @@ -170,8 +167,7 @@ build the SDK installer. Follow these steps: libc-staticdev" 7. *Run the Installer:* You can now run the SDK installer from - ``tmp/deploy/sdk`` in the Build Directory. Following is an example: - :: + ``tmp/deploy/sdk`` in the Build Directory. Following is an example:: $ cd poky/build/tmp/deploy/sdk $ ./poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh @@ -211,8 +207,7 @@ Follow these steps to extract the root filesystem: which you can use with QEMU directly. The pre-built root filesystem image files follow these naming - conventions: - :: + conventions:: core-image-profile-arch.tar.bz2 @@ -233,8 +228,7 @@ Follow these steps to extract the root filesystem: For example, if you plan on using a BeagleBone device as your target hardware and your image is a ``core-image-sato-sdk`` image, you can - download the following file: - :: + download the following file:: core-image-sato-sdk-beaglebone-yocto.tar.bz2 @@ -246,8 +240,7 @@ Follow these steps to extract the root filesystem: installed the toolchain (e.g. ``poky_sdk``). Following is an example based on the toolchain installed in the - ":ref:`sdk-manual/appendix-obtain:locating pre-built sdk installers`" section: - :: + ":ref:`sdk-manual/appendix-obtain:locating pre-built sdk installers`" section:: $ source poky_sdk/environment-setup-core2-64-poky-linux @@ -258,12 +251,11 @@ Follow these steps to extract the root filesystem: from a previously built root filesystem image that was downloaded from the :yocto_dl:`Index of Releases </releases/yocto/yocto-&DISTRO;/machines/>`. This command extracts the root filesystem into the ``core2-64-sato`` - directory: - :: + directory:: $ runqemu-extract-sdk ~/Downloads/core-image-sato-sdk-beaglebone-yocto.tar.bz2 ~/beaglebone-sato - You could now point to the target sysroot at ``beablebone-sato``. + You could now point to the target sysroot at ``beaglebone-sato``. Installed Standard SDK Directory Structure ========================================== diff --git a/poky/documentation/sdk-manual/extensible.rst b/poky/documentation/sdk-manual/extensible.rst index baa432ef3..5520a0718 100644 --- a/poky/documentation/sdk-manual/extensible.rst +++ b/poky/documentation/sdk-manual/extensible.rst @@ -15,9 +15,8 @@ hardware, and ease integration into the rest of the .. note:: For a side-by-side comparison of main features supported for an - extensible SDK as compared to a standard SDK, see the " - Introduction - " section. + extensible SDK as compared to a standard SDK, see the + :ref:`sdk-manual/intro:introduction` section. In addition to the functionality available through ``devtool``, you can alternatively make use of the toolchain directly, for example from @@ -59,8 +58,7 @@ The names of the tarball installer scripts are such that a string representing the host system appears first in the filename and then is immediately followed by a string representing the target architecture. An extensible SDK has the string "-ext" as part of the name. Following -is the general form: -:: +is the general form:: poky-glibc-host_system-image_type-arch-toolchain-ext-release_version.sh @@ -83,17 +81,16 @@ is the general form: For example, the following SDK installer is for a 64-bit development host system and a i586-tuned target architecture based off -the SDK for ``core-image-sato`` and using the current &DISTRO; snapshot: -:: +the SDK for ``core-image-sato`` and using the current &DISTRO; snapshot:: poky-glibc-x86_64-core-image-sato-i586-toolchain-ext-&DISTRO;.sh .. note:: As an alternative to downloading an SDK, you can build the SDK - installer. For information on building the installer, see the " - Building an SDK Installer - " section. + installer. For information on building the installer, see the + :ref:`sdk-manual/appendix-obtain:building an sdk installer` + section. The SDK and toolchains are self-contained and by default are installed into the ``poky_sdk`` folder in your home directory. You can choose to @@ -150,8 +147,7 @@ begin with the string "``environment-setup``" and include as part of their name the tuned target architecture. As an example, the following commands set the working directory to where the SDK was installed and then source the environment setup script. In this example, the setup -script is for an IA-based target machine using i586 tuning: -:: +script is for an IA-based target machine using i586 tuning:: $ cd /home/scottrif/poky_sdk $ source environment-setup-core2-64-poky-linux @@ -197,7 +193,7 @@ all the commands. devtool quick reference. -Three ``devtool`` subcommands exist that provide entry-points into +Three ``devtool`` subcommands provide entry-points into development: - *devtool add*: Assists in adding new software to be built. @@ -258,8 +254,7 @@ command: to be extracted. In this situation, the source code is extracted to the default workspace - you do not want the files in some specific location outside of the workspace. Thus, everything you - need will be located in the workspace: - :: + need will be located in the workspace:: $ devtool add recipe fetchuri @@ -280,28 +275,26 @@ command: devtool always creates a Git repository locally during the extraction. - Furthermore, the first positional argument srctree in this case + Furthermore, the first positional argument ``srctree`` in this case identifies where the ``devtool add`` command will locate the extracted code outside of the workspace. You need to specify an - empty directory: - :: + empty directory:: $ devtool add recipe srctree fetchuri In summary, the source code is pulled from fetchuri and extracted into the - location defined by srctree as a local Git repository. + location defined by ``srctree`` as a local Git repository. Within workspace, ``devtool`` creates a recipe named recipe along with an associated append file. - *Right*: The right scenario in the figure represents a situation - where the srctree has been previously prepared outside of the + where the ``srctree`` has been previously prepared outside of the ``devtool`` workspace. The following command provides a new recipe name and identifies - the existing source tree location: - :: + the existing source tree location:: $ devtool add recipe srctree @@ -317,8 +310,7 @@ command: 2. *Edit the Recipe*: You can use ``devtool edit-recipe`` to open up the editor as defined by the ``$EDITOR`` environment variable and modify - the file: - :: + the file:: $ devtool edit-recipe recipe @@ -338,8 +330,7 @@ command: On the other hand, if you want an image to contain the recipe's packages from the workspace for immediate deployment onto a device (e.g. for testing purposes), you can use the ``devtool build-image`` - command: - :: + command:: $ devtool build-image image @@ -435,8 +426,7 @@ command: outside the workspace (i.e. ``meta-``\ layername). The following command identifies the recipe and, by default, - extracts the source files: - :: + extracts the source files:: $ devtool modify recipe @@ -446,9 +436,9 @@ command: locate the source code and any local patch files from other developers. - With this scenario, no srctree argument exists. Consequently, the + With this scenario, there is no ``srctree`` argument. Consequently, the default behavior of the ``devtool modify`` command is to extract - the source files pointed to by the ``SRC_URI`` statements into a + the source files pointed to by the :term:`SRC_URI` statements into a local Git structure. Furthermore, the location for the extracted source is the default area within the ``devtool`` workspace. The result is that the command sets up both the source code and an @@ -456,7 +446,7 @@ command: original location. Additionally, if you have any non-patch local files (i.e. files - referred to with ``file://`` entries in ``SRC_URI`` statement + referred to with ``file://`` entries in :term:`SRC_URI` statement excluding ``*.patch/`` or ``*.diff``), these files are copied to an ``oe-local-files`` folder under the newly created source tree. Copying the files here gives you a convenient area from which you @@ -474,8 +464,7 @@ command: The following command tells ``devtool`` the recipe with which to work and, in this case, identifies a local area for the extracted source files that exists outside of the default ``devtool`` - workspace: - :: + workspace:: $ devtool modify recipe srctree @@ -487,29 +476,28 @@ command: devtool command. - As with all extractions, the command uses the recipe's ``SRC_URI`` + As with all extractions, the command uses the recipe's :term:`SRC_URI` statements to locate the source files and any associated patch files. Non-patch files are copied to an ``oe-local-files`` folder under the newly created source tree. Once the files are located, the command by default extracts them - into srctree. + into ``srctree``. Within workspace, ``devtool`` creates an append file for the recipe. The recipe remains in its original location but the source - files are extracted to the location you provide with srctree. + files are extracted to the location you provide with ``srctree``. - *Right*: The right scenario in the figure represents a situation - where the source tree (srctree) already exists locally as a + where the source tree (``srctree``) already exists locally as a previously extracted Git structure outside of the ``devtool`` workspace. In this example, the recipe also exists elsewhere locally in its own layer. The following command tells ``devtool`` the recipe with which to work, uses the "-n" option to indicate source does not need to be - extracted, and uses srctree to point to the previously extracted - source files: - :: + extracted, and uses ``srctree`` to point to the previously extracted + source files:: $ devtool modify -n recipe srctree @@ -532,8 +520,7 @@ command: depends on what you are going to do with the new code. If you need to eventually move the build output to the target - hardware, use the following ``devtool`` command: - :: + hardware, use the following ``devtool`` command:: $ devtool build recipe @@ -556,8 +543,7 @@ command: development machine. You can deploy your build output to that target hardware by using the - ``devtool deploy-target`` command: - :: + ``devtool deploy-target`` command:: $ devtool deploy-target recipe target @@ -617,11 +603,11 @@ counterparts. .. note:: Several methods exist by which you can upgrade recipes - - devtool upgrade + ``devtool upgrade`` happens to be one. You can read about all the methods by which you - can upgrade recipes in the " - Upgrading Recipes - " section of the Yocto Project Development Tasks Manual. + can upgrade recipes in the + :ref:`dev-manual/common-tasks:upgrading recipes` section + of the Yocto Project Development Tasks Manual. The ``devtool upgrade`` command is flexible enough to allow you to specify source code revision and versioning schemes, extract code into @@ -651,8 +637,7 @@ The following diagram shows the common development flow used with the A common situation is where third-party software has undergone a revision so that it has been upgraded. The recipe you have access to is likely in your own layer. Thus, you need to upgrade the recipe to - use the newer version of the software: - :: + use the newer version of the software:: $ devtool upgrade -V version recipe @@ -660,8 +645,9 @@ The following diagram shows the common development flow used with the code into the ``sources`` directory in the :ref:`devtool-the-workspace-layer-structure`. If you want the code extracted to any other location, you need to - provide the srctree positional argument with the command as follows: - $ devtool upgrade -V version recipe srctree + provide the ``srctree`` positional argument with the command as follows:: + + $ devtool upgrade -V version recipe srctree .. note:: @@ -669,18 +655,18 @@ The following diagram shows the common development flow used with the don't use "-V", the command upgrades the recipe to the latest version. - If the source files pointed to by the ``SRC_URI`` statement in the + If the source files pointed to by the :term:`SRC_URI` statement in the recipe are in a Git repository, you must provide the "-S" option and specify a revision for the software. - Once ``devtool`` locates the recipe, it uses the ``SRC_URI`` variable + Once ``devtool`` locates the recipe, it uses the :term:`SRC_URI` variable to locate the source code and any local patch files from other developers. The result is that the command sets up the source code, the new version of the recipe, and an append file all within the workspace. Additionally, if you have any non-patch local files (i.e. files - referred to with ``file://`` entries in ``SRC_URI`` statement + referred to with ``file://`` entries in :term:`SRC_URI` statement excluding ``*.patch/`` or ``*.diff``), these files are copied to an ``oe-local-files`` folder under the newly created source tree. Copying the files here gives you a convenient area from which you can @@ -688,9 +674,9 @@ The following diagram shows the common development flow used with the are incorporated into the build the next time you build the software just as are other changes you might have made to the source. -2. *Resolve any Conflicts created by the Upgrade*: Conflicts could exist - due to the software being upgraded to a new version. Conflicts occur - if your recipe specifies some patch files in ``SRC_URI`` that +2. *Resolve any Conflicts created by the Upgrade*: Conflicts could happen + after upgrading the software to a new version. Conflicts occur + if your recipe specifies some patch files in :term:`SRC_URI` that conflict with changes made in the new version of the software. For such cases, you need to resolve the conflicts by editing the source and following the normal ``git rebase`` conflict resolution process. @@ -703,16 +689,14 @@ The following diagram shows the common development flow used with the depends on what you are going to do with the new code. If you need to eventually move the build output to the target - hardware, use the following ``devtool`` command: - :: + hardware, use the following ``devtool`` command:: $ devtool build recipe On the other hand, if you want an image to contain the recipe's packages from the workspace for immediate deployment onto a device (e.g. for testing purposes), you can use the ``devtool build-image`` - command: - :: + command:: $ devtool build-image image @@ -828,8 +812,7 @@ name and version, just the name, or just the version as part of the command line. Sometimes the name or version determined from the source tree might be -incorrect. For such a case, you must reset the recipe: -:: +incorrect. For such a case, you must reset the recipe:: $ devtool reset -n recipename @@ -849,12 +832,11 @@ result from naming not being recognized or because the dependency simply is not available. For cases where the dependency is not available, you must use the ``devtool add`` command to add an additional recipe that satisfies the dependency. Once you add that recipe, you need to update -the ``DEPENDS`` variable in the original recipe to include the new +the :term:`DEPENDS` variable in the original recipe to include the new recipe. If you need to add runtime dependencies, you can do so by adding the -following to your recipe: -:: +following to your recipe:: RDEPENDS_${PN} += "dependency1 dependency2 ..." @@ -879,7 +861,7 @@ license. If so, the command sets the :term:`LICENSE` value accordingly. You should double-check the value added by the command against the documentation or source files for the software you are building and, if -necessary, update that ``LICENSE`` value. +necessary, update that :term:`LICENSE` value. The ``devtool add`` command also sets the :term:`LIC_FILES_CHKSUM` @@ -887,16 +869,16 @@ value to point to all files that appear to be license-related. Realize that license statements often appear in comments at the top of source files or within the documentation. In such cases, the command does not recognize those license statements. Consequently, you might need to -amend the ``LIC_FILES_CHKSUM`` variable to point to one or more of those -comments if present. Setting ``LIC_FILES_CHKSUM`` is particularly +amend the :term:`LIC_FILES_CHKSUM` variable to point to one or more of those +comments if present. Setting :term:`LIC_FILES_CHKSUM` is particularly important for third-party software. The mechanism attempts to ensure correct licensing should you upgrade the recipe to a newer upstream version in future. Any change in licensing is detected and you receive an error prompting you to check the license text again. If the ``devtool add`` command cannot determine licensing information, -``devtool`` sets the ``LICENSE`` value to "CLOSED" and leaves the -``LIC_FILES_CHKSUM`` value unset. This behavior allows you to continue +``devtool`` sets the :term:`LICENSE` value to "CLOSED" and leaves the +:term:`LIC_FILES_CHKSUM` value unset. This behavior allows you to continue with development even though the settings are unlikely to be correct in all cases. You should check the documentation or source files for the software you are building to determine the actual license. @@ -922,12 +904,12 @@ mind: hardcoding tools within the toolchain such as ``gcc`` and ``g++``. - The environment in which Make runs is set up with various standard - variables for compilation (e.g. ``CC``, ``CXX``, and so forth) in a + variables for compilation (e.g. :term:`CC`, :term:`CXX`, and so forth) in a similar manner to the environment set up by the SDK's environment setup script. One easy way to see these variables is to run the ``devtool build`` command on the recipe and then look in - ``oe-logs/run.do_compile``. Towards the top of this file, a list of - environment variables exists that are being set. You can take + ``oe-logs/run.do_compile``. Towards the top of this file, there is + a list of environment variables that are set. You can take advantage of these variables within the Makefile. - If the Makefile sets a default for a variable using "=", that default @@ -938,8 +920,7 @@ mind: the command line, add the variable setting to :term:`EXTRA_OEMAKE` or :term:`PACKAGECONFIG_CONFARGS` - within the recipe. Here is an example using ``EXTRA_OEMAKE``: - :: + within the recipe. Here is an example using :term:`EXTRA_OEMAKE`:: EXTRA_OEMAKE += "'CC=${CC}' 'CXX=${CXX}'" @@ -972,7 +953,7 @@ following methods when you run ``devtool add``: Specifying the name like this produces a recipe that only builds for the build host. -- Specify the "DASHDASHalso-native" option with the ``devtool add`` +- Specify the "--also-native" option with the ``devtool add`` command. Specifying this option creates a recipe file that still builds for the target but also creates a variant with a "-native" suffix that builds for the build host. @@ -983,7 +964,7 @@ following methods when you run ``devtool add``: that builds code for the target, you can typically accomplish this by building the native and target parts separately rather than within the same compilation process. Realize though that with the - "DASHDASHalso-native" option, you can add the tool using just one + "--also-native" option, you can add the tool using just one recipe file. Adding Node.js Modules @@ -993,8 +974,7 @@ You can use the ``devtool add`` command two different ways to add Node.js modules: 1) Through ``npm`` and, 2) from a repository or local source. -Use the following form to add Node.js modules through ``npm``: -:: +Use the following form to add Node.js modules through ``npm``:: $ devtool add "npm://registry.npmjs.org;name=forever;version=0.15.1" @@ -1018,8 +998,7 @@ these behaviors ensure the reproducibility and integrity of the build. As mentioned earlier, you can also add Node.js modules directly from a repository or local source tree. To add modules this way, use -``devtool add`` in the following form: -:: +``devtool add`` in the following form:: $ devtool add https://github.com/diversario/node-ssdp @@ -1058,8 +1037,8 @@ If you look at the contents of a recipe, you will see that the recipe does not include complete instructions for building the software. Instead, common functionality is encapsulated in classes inherited with the ``inherit`` directive. This technique leaves the recipe to describe -just the things that are specific to the software being built. A -:ref:`base <ref-classes-base>` class exists that +just the things that are specific to the software being built. There is +a :ref:`base <ref-classes-base>` class that is implicitly inherited by all recipes and provides the functionality that most recipes typically need. @@ -1107,21 +1086,21 @@ extras specified by :term:`EXTRA_OECONF` or :term:`PACKAGECONFIG_CONFARGS` set within the recipe. If you wish to pass additional options, add them -to ``EXTRA_OECONF`` or ``PACKAGECONFIG_CONFARGS``. Other supported build +to :term:`EXTRA_OECONF` or :term:`PACKAGECONFIG_CONFARGS`. Other supported build tools have similar variables (e.g. :term:`EXTRA_OECMAKE` for CMake, :term:`EXTRA_OESCONS` for Scons, and so forth). If you need to pass anything on the ``make`` -command line, you can use ``EXTRA_OEMAKE`` or the +command line, you can use :term:`EXTRA_OEMAKE` or the :term:`PACKAGECONFIG_CONFARGS` variables to do so. You can use the ``devtool configure-help`` command to help you set the arguments listed in the previous paragraph. The command determines the exact options being passed, and shows them to you along with any custom -arguments specified through ``EXTRA_OECONF`` or -``PACKAGECONFIG_CONFARGS``. If applicable, the command also shows you -the output of the configure script's "DASHDASHhelp" option as a +arguments specified through :term:`EXTRA_OECONF` or +:term:`PACKAGECONFIG_CONFARGS`. If applicable, the command also shows you +the output of the configure script's "--help" option as a reference. Sharing Files Between Recipes @@ -1131,9 +1110,9 @@ Recipes often need to use files provided by other recipes on the :term:`Build Host`. For example, an application linking to a common library needs access to the library itself and its associated headers. The way this access is accomplished -within the extensible SDK is through the sysroot. One sysroot exists per +within the extensible SDK is through the sysroot. There is one sysroot per "machine" for which the SDK is being built. In practical terms, this -means a sysroot exists for the target machine, and a sysroot exists for +means there is a sysroot for the target machine, and a sysroot for the build host. Recipes should never write files directly into the sysroot. Instead, @@ -1172,16 +1151,16 @@ the ``oe-workdir/packages-split`` directory, which contains a subdirectory for each package. Apart from some advanced cases, the :term:`PACKAGES` and :term:`FILES` variables controls -splitting. The ``PACKAGES`` variable lists all of the packages to be -produced, while the ``FILES`` variable specifies which files to include +splitting. The :term:`PACKAGES` variable lists all of the packages to be +produced, while the :term:`FILES` variable specifies which files to include in each package by using an override to specify the package. For example, ``FILES_${PN}`` specifies the files to go into the main package (i.e. the main package has the same name as the recipe and ``${``\ :term:`PN`\ ``}`` evaluates to the -recipe name). The order of the ``PACKAGES`` value is significant. For -each installed file, the first package whose ``FILES`` value matches the -file is the package into which the file goes. Defaults exist for both -the ``PACKAGES`` and ``FILES`` variables. Consequently, you might find +recipe name). The order of the :term:`PACKAGES` value is significant. For +each installed file, the first package whose :term:`FILES` value matches the +file is the package into which the file goes. Both the :term:`PACKAGES` and +:term:`FILES` variables have default values. Consequently, you might find you do not even need to set these variables in your recipe unless the software the recipe is building installs files into non-standard locations. @@ -1196,15 +1175,13 @@ need to restore the original files that existed prior to running the ``devtool deploy-target`` command. Because the ``devtool deploy-target`` command backs up any files it overwrites, you can use the ``devtool undeploy-target`` command to restore those files and remove -any other files the recipe deployed. Consider the following example: -:: +any other files the recipe deployed. Consider the following example:: $ devtool undeploy-target lighttpd root@192.168.7.2 If you have deployed multiple applications, you can remove them all using the "-a" option -thus restoring the target device to its original state: -:: +thus restoring the target device to its original state:: $ devtool undeploy-target -a root@192.168.7.2 @@ -1235,28 +1212,25 @@ populated on-demand. Sometimes you must explicitly install extra items into the SDK. If you need these extra items, you can first search for the items using the ``devtool search`` command. For example, suppose you need to link to libGL but you are not sure which recipe provides libGL. -You can use the following command to find out: -:: +You can use the following command to find out:: $ devtool search libGL mesa A free implementation of the OpenGL API Once you know the recipe -(i.e. ``mesa`` in this example), you can install it: -:: +(i.e. ``mesa`` in this example), you can install it:: $ devtool sdk-install mesa By default, the ``devtool sdk-install`` command assumes the item is available in pre-built form from your SDK provider. If the item is not available and it is acceptable to build the item from -source, you can add the "-s" option as follows: -:: +source, you can add the "-s" option as follows:: $ devtool sdk-install -s mesa It is important to remember that building the item from source takes significantly longer than installing the pre-built artifact. Also, -if no recipe exists for the item you want to add to the SDK, you must +if there is no recipe for the item you want to add to the SDK, you must instead add the item using the ``devtool add`` command. Applying Updates to an Installed Extensible SDK @@ -1266,8 +1240,7 @@ If you are working with an installed extensible SDK that gets occasionally updated (e.g. a third-party SDK), then you will need to manually "pull down" the updates into the installed SDK. -To update your installed SDK, use ``devtool`` as follows: -:: +To update your installed SDK, use ``devtool`` as follows:: $ devtool sdk-update diff --git a/poky/documentation/sdk-manual/intro.rst b/poky/documentation/sdk-manual/intro.rst index d966efea7..2f94aaf87 100644 --- a/poky/documentation/sdk-manual/intro.rst +++ b/poky/documentation/sdk-manual/intro.rst @@ -8,8 +8,8 @@ eSDK Introduction ================= Welcome to the Yocto Project Application Development and the Extensible -Software Development Kit (eSDK) manual. This manual provides information -that explains how to use both the Yocto Project extensible and standard +Software Development Kit (eSDK) manual. This manual +explains how to use both the Yocto Project extensible and standard SDKs to develop applications and images. .. note:: @@ -25,12 +25,13 @@ SDKs to develop applications and images. All SDKs consist of the following: - *Cross-Development Toolchain*: This toolchain contains a compiler, - debugger, and various miscellaneous tools. + debugger, and various associated tools. - *Libraries, Headers, and Symbols*: The libraries, headers, and - symbols are specific to the image (i.e. they match the image). + symbols are specific to the image (i.e. they match the image + against which the SDK was built). -- *Environment Setup Script*: This ``*.sh`` file, once run, sets up the +- *Environment Setup Script*: This ``*.sh`` file, once sourced, sets up the cross-development environment by defining variables and preparing for SDK use. @@ -48,14 +49,14 @@ time since that path cannot be dynamically altered. This is the reason for a wrapper around the ``populate_sdk`` and ``populate_sdk_ext`` archives. -Another feature for the SDKs is that only one set of cross-compiler +Another feature of the SDKs is that only one set of cross-compiler toolchain binaries are produced for any given architecture. This feature takes advantage of the fact that the target hardware can be passed to ``gcc`` as a set of compiler options. Those options are set up by the environment script and contained in variables such as :term:`CC` and :term:`LD`. This reduces the space needed -for the tools. Understand, however, that every target still needs a +for the tools. Understand, however, that every target still needs its own sysroot because those binaries are target-specific. The SDK development environment consists of the following: @@ -118,8 +119,8 @@ The Cross-Development Toolchain The :term:`Cross-Development Toolchain` consists of a cross-compiler, cross-linker, and cross-debugger that are used to -develop user-space applications for targeted hardware. Additionally, for -an extensible SDK, the toolchain also has built-in ``devtool`` +develop user-space applications for targeted hardware; in addition, +the extensible SDK comes with built-in ``devtool`` functionality. This toolchain is created by running a SDK installer script or through a :term:`Build Directory` that is based on your metadata configuration or extension for your targeted device. The @@ -138,21 +139,19 @@ The QEMU Emulator ----------------- The QEMU emulator allows you to simulate your hardware while running -your application or image. QEMU is not part of the SDK but is made -available a number of different ways: +your application or image. QEMU is not part of the SDK but is +automatically installed and available if you have done any one of +the following: -- If you have cloned the ``poky`` Git repository to create a - :term:`Source Directory` and you have - sourced the environment setup script, QEMU is installed and - automatically available. +- cloned the ``poky`` Git repository to create a + :term:`Source Directory` and sourced the environment setup script. -- If you have downloaded a Yocto Project release and unpacked it to - create a Source Directory and you have sourced the environment setup - script, QEMU is installed and automatically available. +- downloaded a Yocto Project release and unpacked it to + create a Source Directory and sourced the environment setup + script. -- If you have installed the cross-toolchain tarball and you have - sourced the toolchain's setup environment script, QEMU is also - installed and automatically available. +- installed the cross-toolchain tarball and + sourced the toolchain's setup environment script. SDK Development Model ===================== @@ -202,10 +201,9 @@ You just need to follow these general steps: .. note:: - To use the root filesystem in QEMU, you need to extract it. See - the " - Extracting the Root Filesystem - " section for information on how to extract the root filesystem. + To use the root filesystem in QEMU, you need to extract it. See the + ":ref:`sdk-manual/appendix-obtain:extracting the root filesystem`" + section for information on how to do this extraction. 3. *Develop and Test your Application:* At this point, you have the tools to develop your application. If you need to separately install @@ -216,5 +214,5 @@ You just need to follow these general steps: within the Yocto Project. The remainder of this manual describes how to use the extensible and -standard SDKs. Information also exists in appendix form that describes +standard SDKs. There is also information in appendix form describing how you can build, install, and modify an SDK. diff --git a/poky/documentation/sdk-manual/using.rst b/poky/documentation/sdk-manual/using.rst index 62967f557..301627812 100644 --- a/poky/documentation/sdk-manual/using.rst +++ b/poky/documentation/sdk-manual/using.rst @@ -11,9 +11,8 @@ standard SDK. .. note:: For a side-by-side comparison of main features supported for a - standard SDK as compared to an extensible SDK, see the " - Introduction - " section. + standard SDK as compared to an extensible SDK, see the + ":ref:`sdk-manual/intro:introduction`" section. You can use a standard SDK to work on Makefile and Autotools-based projects. See the @@ -49,7 +48,7 @@ the Index of Releases. Toolchains are available for several 32-bit and 64-bit architectures with the ``x86_64`` directories, respectively. The toolchains the Yocto Project provides are based off the ``core-image-sato`` and ``core-image-minimal`` images and contain -libraries appropriate for developing against that image. +libraries appropriate for developing against the corresponding image. The names of the tarball installer scripts are such that a string representing the host system appears first in the filename and then is @@ -77,17 +76,16 @@ immediately followed by a string representing the target architecture. For example, the following SDK installer is for a 64-bit development host system and a i586-tuned target architecture based off -the SDK for ``core-image-sato`` and using the current DISTRO snapshot: -:: +the SDK for ``core-image-sato`` and using the current DISTRO snapshot:: poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh .. note:: As an alternative to downloading an SDK, you can build the SDK - installer. For information on building the installer, see the " - Building an SDK Installer - " section. + installer. For information on building the installer, see the + ":ref:`sdk-manual/appendix-obtain:building an sdk installer`" + section. The SDK and toolchains are self-contained and by default are installed into the ``poky_sdk`` folder in your home directory. You can choose to @@ -141,8 +139,7 @@ begin with the string "``environment-setup``" and include as part of their name the tuned target architecture. As an example, the following commands set the working directory to where the SDK was installed and then source the environment setup script. In this example, the setup -script is for an IA-based target machine using i586 tuning: -:: +script is for an IA-based target machine using i586 tuning:: $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux diff --git a/poky/documentation/sdk-manual/working-projects.rst b/poky/documentation/sdk-manual/working-projects.rst index f880cbe0d..276daa9bb 100644 --- a/poky/documentation/sdk-manual/working-projects.rst +++ b/poky/documentation/sdk-manual/working-projects.rst @@ -45,16 +45,14 @@ project: respectively. Use the following command to create an empty README file, which is - required by GNU Coding Standards: - :: + required by GNU Coding Standards:: $ touch README Create the remaining three files as follows: - - ``hello.c``: - :: + - ``hello.c``:: #include <stdio.h> @@ -63,8 +61,7 @@ project: printf("Hello World!\n"); } - - ``configure.ac``: - :: + - ``configure.ac``:: AC_INIT(hello,0.1) AM_INIT_AUTOMAKE([foreign]) @@ -72,8 +69,7 @@ project: AC_CONFIG_FILES(Makefile) AC_OUTPUT - - ``Makefile.am``: - :: + - ``Makefile.am``:: bin_PROGRAMS = hello hello_SOURCES = hello.c @@ -87,8 +83,7 @@ project: which is followed by the string "poky-linux". For this example, the command sources a script from the default SDK installation directory that uses the 32-bit Intel x86 Architecture and the &DISTRO; Yocto - Project release: - :: + Project release:: $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux @@ -113,8 +108,7 @@ project: the cross-compiler. The :term:`CONFIGURE_FLAGS` environment variable provides the minimal arguments for GNU - configure: - :: + configure:: $ ./configure ${CONFIGURE_FLAGS} @@ -127,14 +121,12 @@ project: ``armv5te-poky-linux-gnueabi``. You will notice that the name of the script is ``environment-setup-armv5te-poky-linux-gnueabi``. Thus, the following command works to update your project and rebuild it using - the appropriate cross-toolchain tools: - :: + the appropriate cross-toolchain tools:: $ ./configure --host=armv5te-poky-linux-gnueabi --with-libtool-sysroot=sysroot_dir 5. *Make and Install the Project:* These two commands generate and - install the project into the destination directory: - :: + install the project into the destination directory:: $ make $ make install DESTDIR=./tmp @@ -143,9 +135,8 @@ project: To learn about environment variables established when you run the cross-toolchain environment setup script and how they are used or - overridden when the Makefile, see the " - Makefile-Based Projects - " section. + overridden by the Makefile, see the + :ref:`sdk-manual/working-projects:makefile-based projects` section. This next command is a simple way to verify the installation of your project. Running the command prints the architecture on which the @@ -157,8 +148,7 @@ project: 6. *Execute Your Project:* To execute the project, you would need to run it on your target hardware. If your target hardware happens to be - your build host, you could run the project as follows: - :: + your build host, you could run the project as follows:: $ ./tmp/usr/local/bin/hello @@ -203,8 +193,7 @@ regarding variable behavior: .. note:: Regardless of how you set your variables, if you use the "-e" option - with ``make``, the variables from the SDK setup script take precedence: - :: + with ``make``, the variables from the SDK setup script take precedence:: $ make -e target @@ -226,8 +215,7 @@ Running the SDK setup script for a 64-bit build host and an i586-tuned target architecture for a ``core-image-sato`` image using the current &DISTRO; Yocto Project release and then echoing that variable shows the value -established through the script: -:: +established through the script:: $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux $ echo ${CC} @@ -252,8 +240,7 @@ example: Create the three files as follows: - - ``main.c``: - :: + - ``main.c``:: #include "module.h" void sample_func(); @@ -263,14 +250,12 @@ example: return 0; } - - ``module.h``: - :: + - ``module.h``:: #include <stdio.h> void sample_func(); - - ``module.c``: - :: + - ``module.c``:: #include "module.h" void sample_func() @@ -288,17 +273,15 @@ example: which is followed by the string "poky-linux". For this example, the command sources a script from the default SDK installation directory that uses the 32-bit Intel x86 Architecture and the &DISTRO_NAME; Yocto - Project release: - :: + Project release:: $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux 3. *Create the Makefile:* For this example, the Makefile contains - two lines that can be used to set the ``CC`` variable. One line is + two lines that can be used to set the :term:`CC` variable. One line is identical to the value that is set when you run the SDK environment - setup script, and the other line sets ``CC`` to "gcc", the default - GNU compiler on the build host: - :: + setup script, and the other line sets :term:`CC` to "gcc", the default + GNU compiler on the build host:: # CC=i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux # CC="gcc" @@ -314,9 +297,8 @@ example: 4. *Make the Project:* Use the ``make`` command to create the binary output file. Because variables are commented out in the Makefile, the - value used for ``CC`` is the value set when the SDK environment setup - file was run: - :: + value used for :term:`CC` is the value set when the SDK environment setup + file was run:: $ make i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c main.c @@ -324,10 +306,10 @@ example: i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux main.o module.o -o target_bin From the results of the previous command, you can see that - the compiler used was the compiler established through the ``CC`` + the compiler used was the compiler established through the :term:`CC` variable defined in the setup script. - You can override the ``CC`` environment variable with the same + You can override the :term:`CC` environment variable with the same variable as set from the Makefile by uncommenting the line in the Makefile and running ``make`` again. :: @@ -351,8 +333,7 @@ example: variable as part of the command line. Go into the Makefile and re-insert the comment character so that running ``make`` uses the established SDK compiler. However, when you run ``make``, use a - command-line argument to set ``CC`` to "gcc": - :: + command-line argument to set :term:`CC` to "gcc":: $ make clean rm -rf *.o @@ -376,8 +357,7 @@ example: environment variable. In this last case, edit Makefile again to use the "gcc" compiler but - then use the "-e" option on the ``make`` command line: - :: + then use the "-e" option on the ``make`` command line:: $ make clean rm -rf *.o @@ -402,8 +382,7 @@ example: Makefile. 5. *Execute Your Project:* To execute the project (i.e. ``target_bin``), - use the following command: - :: + use the following command:: $ ./target_bin Hello World! diff --git a/poky/documentation/sphinx-static/switchers.js b/poky/documentation/sphinx-static/switchers.js index 7a4edc9e7..301c2315a 100644 --- a/poky/documentation/sphinx-static/switchers.js +++ b/poky/documentation/sphinx-static/switchers.js @@ -2,9 +2,10 @@ 'use strict'; var all_versions = { - 'dev': 'dev (3.3)', - '3.2.3': '3.2.3', - '3.1.6': '3.1.6', + 'dev': 'dev (3.4)', + '3.3.1': '3.3.1', + '3.2.4': '3.2.4', + '3.1.8': '3.1.8', '3.0.4': '3.0.4', '2.7.4': '2.7.4', }; diff --git a/poky/documentation/test-manual/index.rst b/poky/documentation/test-manual/index.rst index e2198c4c3..4c590a6aa 100644 --- a/poky/documentation/test-manual/index.rst +++ b/poky/documentation/test-manual/index.rst @@ -13,6 +13,8 @@ Yocto Project Test Environment Manual intro test-process understand-autobuilder + reproducible-builds + yocto-project-compatible history .. include:: /boilerplate.rst diff --git a/poky/documentation/test-manual/reproducible-builds.rst b/poky/documentation/test-manual/reproducible-builds.rst new file mode 100644 index 000000000..e13583c0b --- /dev/null +++ b/poky/documentation/test-manual/reproducible-builds.rst @@ -0,0 +1,135 @@ +.. SPDX-License-Identifier: CC-BY-SA-2.0-UK + +******************* +Reproducible Builds +******************* + +================ +How we define it +================ + +The Yocto Project defines reproducibility as where a given input build +configuration will give the same binary output regardless of when it is built +(now or in 5 years time), regardless of the path on the filesystem the build is +run in, and regardless of the distro and tools on the underlying host system the +build is running on. + +============== +Why it matters +============== + +The project aligns with the `Reproducible Builds project +<https://reproducible-builds.org/>`_, which shares information about why +reproducibility matters. The primary focus of the project is the ability to +detect security issues being introduced. However, from a Yocto Project +perspective, it is also hugely important that our builds are deterministic. When +you build a given input set of metadata, we expect you to get consistent output. +This has always been a key focus but, :yocto_docs:`since release 3.1 ("dunfell") +</ref-manual/migration-3.1.html#reproducible-builds-now-enabled-by-default>`, +it is now true down to the binary level including timestamps. + +For example, at some point in the future life of a product, you find that you +need to rebuild to add a security fix. If this happens, only the components that +have been modified should change at the binary level. This would lead to much +easier and clearer bounds on where validation is needed. + +This also gives an additional benefit to the project builds themselves, our hash +equivalence for :ref:`Shared State <overview-manual/concepts:Shared State>` +object reuse works much more effectively when the binary output remains the +same. + +.. note:: + + We strongly advise you to make sure your project builds reproducibly + before finalizing your production images. It would be too late if you + only address this issue when the first updates are required. + +=================== +How we implement it +=================== + +There are many different aspects to build reproducibility, but some particular +things we do within the build system to ensure reproducibility include: + +- Adding mappings to the compiler options to ensure debug filepaths are mapped + to consistent target compatible paths. This is done through the + ``DEBUG_PREFIX_MAP`` variable which sets the ``-fmacro-prefix-map`` and + ``-fdebug-prefix-map`` compiler options correctly to map to target paths. +- Being explicit about recipe dependencies and their configuration (no floating + configure options or host dependencies creeping in). In particular this means + making sure :term:`PACKAGECONFIG` coverage covers configure options which may + otherwise try and auto-detect host dependencies. +- Using recipe specific sysroots to isolate recipes so they only see their + dependencies. These are visible as ``recipe-sysroot`` and + ``recipe-sysroot-native`` directories within the :term:`WORKDIR` of a given + recipe and are populated only with the dependencies a recipe has. +- Build images from a reduced package set: only packages from recipes the image + depends upon. +- Filtering the tools available from the host's ``PATH`` to only a specific set + of tools, set using the :term:`HOSTTOOLS` variable. + +========================================= +Can we prove the project is reproducible? +========================================= + +Yes, we can prove it and we regularly test this on the Autobuilder. At the +time of writing (release 3.3, "hardknott"), :term:`OpenEmbedded-Core (OE-Core)` +is 100% reproducible for all its recipes (i.e. world builds) apart from the Go +language and Ruby documentation packages. Unfortunately, the current +implementation of the Go language has fundamental reproducibility problems as +it always depends upon the paths it is built in. + +.. note:: + + Only BitBake and :term:`OpenEmbedded-Core (OE-Core)`, which is the ``meta`` + layer in Poky, guarantee complete reproducibility. The moment you add + another layer, this warranty is voided, because of additional configuration + files, ``bbappend`` files, overridden classes, etc. + +To run our automated selftest, as we use in our CI on the Autobuilder, you can +run:: + + oe-selftest -r reproducible.ReproducibleTests.test_reproducible_builds + +This defaults to including a ``world`` build so, if other layers are added, it would +also run the tests for recipes in the additional layers. The first build will be +run using :ref:`Shared State <overview-manual/concepts:Shared State>` if +available, the second build explicitly disables +:ref:`Shared State <overview-manual/concepts:Shared State>` and builds on the +specific host the build is running on. This means we can test reproducibility +builds between different host distributions over time on the Autobuilder. + +If ``OEQA_DEBUGGING_SAVED_OUTPUT`` is set, any differing packages will be saved +here. The test is also able to run the ``diffoscope`` command on the output to +generate HTML files showing the differences between the packages, to aid +debugging. On the Autobuilder, these appear under +https://autobuilder.yocto.io/pub/repro-fail/ in the form ``oe-reproducible + +<date> + <random ID>``, e.g. ``oe-reproducible-20200202-1lm8o1th``. + +The project's current reproducibility status can be seen at +:yocto_home:`/reproducible-build-results/` + +You can also check the reproducibility status on supported host distributions: + +- CentOS: :yocto_ab:`/typhoon/#/builders/reproducible-centos` +- Debian: :yocto_ab:`/typhoon/#/builders/reproducible-debian` +- Fedora: :yocto_ab:`/typhoon/#/builders/reproducible-fedora` +- Ubuntu: :yocto_ab:`/typhoon/#/builders/reproducible-ubuntu` + +=============================== +Can I test my layer or recipes? +=============================== + +Once again, you can run a ``world`` test using the +:ref:`oe-selftest <ref-manual/release-process:Testing and Quality Assurance>` +command provided above. This functionality is implemented +in :oe_git:`meta/lib/oeqa/selftest/cases/reproducible.py +</openembedded-core/tree/meta/lib/oeqa/selftest/cases/reproducible.py>`. + +You could subclass the test and change ``targets`` to a different target. + +You may also change ``sstate_targets`` which would allow you to "pre-cache" some +set of recipes before the test, meaning they are excluded from reproducibility +testing. As a practical example, you could set ``sstate_targets`` to +``core-image-sato``, then setting ``targets`` to ``core-image-sato-sdk`` would +run reproducibility tests only on the targets belonging only to ``core-image-sato-sdk``. diff --git a/poky/documentation/test-manual/yocto-project-compatible.rst b/poky/documentation/test-manual/yocto-project-compatible.rst new file mode 100644 index 000000000..a7897469f --- /dev/null +++ b/poky/documentation/test-manual/yocto-project-compatible.rst @@ -0,0 +1,124 @@ +.. SPDX-License-Identifier: CC-BY-SA-2.0-UK + +************************ +Yocto Project Compatible +************************ + +============ +Introduction +============ + +After the introduction of layers to OpenEmbedded, it quickly became clear +that while some layers were popular and worked well, others developed a +reputation for being "problematic". Those were layers which didn't +interoperate well with others and tended to assume they controlled all +the aspects of the final output. This usually isn't intentional but happens +because such layers are often created by developers with a particular focus +(e.g. a company's :term:`BSP<Board Support Package (BSP)>`) whilst the end +users have a different one (e.g. integrating that +:term:`BSP<Board Support Package (BSP)>` into a product). + +As a result of noticing such patterns and friction between layers, the project +developed the "Yocto Project Compatible" badge program, allowing layers +following the best known practises to be marked as being widely compatible +with other ones. This takes the form of a set of "yes/no" binary answer +questions where layers can declare if they meet the appropriate criteria. +In the second version of the program, a script was added to make validation +easier and clearer, the script is called ``yocto-check-layer`` and is +available in :term:`OpenEmbedded-Core (OE-Core)`. + +See :ref:`dev-manual/common-tasks:making sure your layer is compatible with yocto project` +for details. + +======== +Benefits +======== + +:ref:`overview-manual/yp-intro:the yocto project layer model` is powerful +and flexible: it gives users the ultimate power to change pretty much any +aspect of the system but as with most things, power comes with responsibility. +The Yocto Project would like to see people able to mix and match BSPs with +distro configs or software stacks and be able to merge succesfully. +Over time, the project identified characteristics in layers that allow them +to operate well together. "anti-patterns" were also found, preventing layers +from working well together. + +The intent of the compatibility program is simple: if the layer passes the +compatibility tests, it is considered "well behaved" and should operate +and cooperate well with other compatible layers. + +The benefits of compatibility can be seen from multiple different user and +member perspectives. From a hardware perspective +(a :ref:`overview-manual/concepts:bsp layer`), compatibility means the +hardware can be used in many different products and use cases without +impacting the software stacks being run with it. For a company developing +a product, compatibility gives you a specification / standard you can +require in a contract and then know it will have certain desired +characteristics for interoperability. It also puts constraints on how invasive +the code bases are into the rest of the system, meaning that multiple +different separate hardware support layers can coexist (e.g. for multiple +product lines from different hardware manufacturers). This can also make it +easier for one or more parties to upgrade those system components for security +purposes during the lifecycle of a product. + +================== +Validating a layer +================== + +The badges are available to members of the Yocto Project (as member benefit) +and to open source projects run on a non-commercial basis. However, anyone can +answer the questions and run the script. + +The project encourages all layer maintainers to review the questions and the +output from the script against their layer, as the way some layers are +constructed often has unintended consequences. The questions and the script +are designed to highlight known issues which are often easy to solve. This +makes layers easier to use and therefore more popular. + +It is intended that over time, the tests will evolve as new best known +practices are identified, and as new interoperability issues are found, +unnecessarily restricting layer interoperability. If anyone becomes aware of +either type, please let the project know through the +:yocto_home:`technical calls </public-virtual-meetings/>`, +the :yocto_home:`mailing lists </community/mailing-lists/>` +or through the :oe_wiki:`Technical Steering Committee (TSC) </TSC>`. +The TSC is responsible for the technical criteria used by the program. + +Layers are divided into three types: + +- :ref:`"BSP" or "hardware support"<overview-manual/concepts:bsp layer>` + layers contain support for particular pieces of hardware. This includes + kernel and boot loader configuration, and any recipes for firmware or + kernel modules needed for the hardware. Such layers usually correspond + to a :term:`MACHINE` setting. + +- :ref:`"distro" layers<overview-manual/concepts:distro layer>` defined + as layers providing configuration options and settings such as the + choice of init system, compiler and optimisation options, and + configuration and choices of software components. This would usually + correspond to a :term:`DISTRO` setting. + +- "software" layers are usually recipes. A layer might target a + particular graphical UI or software stack component. + +Here are key best practices the program tries to encourage: + +- A layer should clearly show who maintains it, and who change + submissions and bug reports should be sent to. + +- Where multiple types of functionality are present, the layer should + be internally divided into sublayers to separate these components. + That's because some users may only need one of them and separability + is a key best practice. + +- Adding a layer to a build should not modify that build, unless the + user changes a configuration setting to activate the layer, by selecting + a :term:`MACHINE`, a :term:`DISTRO` or a :term:`DISTRO_FEATURES` setting. + +The project does test the compatibility status of the core project layers on +its :doc:`Autobuilder </test-manual/understand-autobuilder>`. + +The official form to submit compatibility requests with is at +:yocto_home:`/ecosystem/branding/compatible-registration/`. +Applicants can display the badge they get when their application is successful. + diff --git a/poky/documentation/toaster-manual/reference.rst b/poky/documentation/toaster-manual/reference.rst index 3d4efe92d..c0d02ff9a 100644 --- a/poky/documentation/toaster-manual/reference.rst +++ b/poky/documentation/toaster-manual/reference.rst @@ -9,8 +9,8 @@ concepts and have some basic command reference material available. This final chapter provides conceptual information on layer sources, releases, and JSON configuration files. Also provided is a quick look at some useful ``manage.py`` commands that are Toaster-specific. -Information on ``manage.py`` commands does exist across the Web and the -information in this manual by no means attempts to provide a command +Information on ``manage.py`` commands is available across the Web and +this manual by no means attempts to provide a command comprehensive reference. Layer Source @@ -32,9 +32,8 @@ through a `REST <https://en.wikipedia.org/wiki/Representational_state_transfer>`__ API, store the information about the layers in the Toaster database, and then show the information to users. Users are then able to view that -information and build layers from Toaster itself without worrying about -cloning or editing the BitBake layers configuration file -``bblayers.conf``. +information and build layers from Toaster itself without having to +clone or edit the BitBake layers configuration file ``bblayers.conf``. Tying a layer source into Toaster is convenient when you have many custom layers that need to be built on a regular basis by a community of @@ -187,7 +186,7 @@ Configuring the Workflow ------------------------ The ``bldcontrol/management/commands/checksettings.py`` file controls -workflow configuration. The following steps outline the process to +workflow configuration. Here is the process to initially populate this database. 1. The default project settings are set from @@ -238,7 +237,7 @@ The following example sets "name" to "CUSTOM_XML_ONLY" and its value to Understanding Fixture File Format --------------------------------- -The following is an overview of the file format used by the +Here is an overview of the file format used by the ``oe-core.xml``, ``poky.xml``, and ``custom.xml`` files. The following subsections describe each of the sections in the fixture @@ -408,7 +407,7 @@ To get the status of pending builds, use the following call:: Be sure to provide values for host and port. The output is a JSON file that itemizes all builds in progress. This file includes the time in seconds since each respective build started as well as the progress of the cloning, parsing, -and task execution. The following is sample output for a build in progress: +and task execution. Here is sample output for a build in progress: .. code-block:: JSON @@ -441,8 +440,8 @@ call:: http://host:port/toastergui/api/builds Be sure to provide values for host and port. The output is a JSON file that -itemizes all complete builds, and includes build summary information. The -following is sample output for a completed build: +itemizes all complete builds, and includes build summary information. Here +is sample output for a completed build: .. code-block:: JSON @@ -480,7 +479,7 @@ Completed query. See the ":ref:`toaster-manual/reference:checking status of buil section for more information. The output is a JSON file that itemizes the specific build and includes -build summary information. The following is sample output for a specific +build summary information. Here is sample output for a specific build: .. code-block:: JSON @@ -509,7 +508,7 @@ Useful Commands =============== In addition to the web user interface and the scripts that start and -stop Toaster, command-line commands exist through the ``manage.py`` +stop Toaster, command-line commands are available through the ``manage.py`` management script. You can find general documentation on ``manage.py`` at the `Django <https://docs.djangoproject.com/en/2.2/topics/settings/>`__ diff --git a/poky/documentation/toaster-manual/setup-and-use.rst b/poky/documentation/toaster-manual/setup-and-use.rst index 8f0ec9449..4f71b5841 100644 --- a/poky/documentation/toaster-manual/setup-and-use.rst +++ b/poky/documentation/toaster-manual/setup-and-use.rst @@ -625,7 +625,7 @@ To specify ``bash`` 3.2.48 as the version to build, enter :scale: 75% After clicking the "Add variable" button, the settings for -``PREFERRED_VERSION`` are added to the bottom of the BitBake variables +:term:`PREFERRED_VERSION` are added to the bottom of the BitBake variables list. With these settings, the OpenEmbedded build system builds the desired version of the recipe rather than the default version: diff --git a/poky/documentation/transitioning-to-a-custom-environment.rst b/poky/documentation/transitioning-to-a-custom-environment.rst index abbd74ca1..f0035bd3a 100644 --- a/poky/documentation/transitioning-to-a-custom-environment.rst +++ b/poky/documentation/transitioning-to-a-custom-environment.rst @@ -47,7 +47,7 @@ Transitioning to a custom environment for systems development #. **Based on the layers you've chosen, make needed changes in your configuration**. For instance, you've chosen a machine type and added in the corresponding BSP - layer. You'll then need to change the value of the ``MACHINE`` variable in your + layer. You'll then need to change the value of the :term:`MACHINE` variable in your configuration file (build/local.conf) to point to that same machine type. There could be other layer-specific settings you need to change as well. Each layer has a ``README`` document that you can look at for this type of diff --git a/poky/meta-poky/README.poky b/poky/meta-poky/README.poky deleted file mode 100644 index 2ba3b5c03..000000000 --- a/poky/meta-poky/README.poky +++ /dev/null @@ -1,71 +0,0 @@ -Poky -==== - -Poky is an integration of various components to form a complete prepackaged -build system and development environment. It features support for building -customised embedded device style images. There are reference demo images -featuring a X11/Matchbox/GTK themed UI called Sato. The system supports -cross-architecture application development using QEMU emulation and a -standalone toolchain and SDK with IDE integration. - -Additional information on the specifics of hardware that Poky supports -is available in README.hardware. Further hardware support can easily be added -in the form of layers which extend the systems capabilities in a modular way. - -As an integration layer Poky consists of several upstream projects such as -BitBake, OpenEmbedded-Core, Yocto documentation and various sources of information -e.g. for the hardware support. Poky is in turn a component of the Yocto Project. - -The Yocto Project has extensive documentation about the system including a -reference manual which can be found at: - http://yoctoproject.org/documentation - -OpenEmbedded-Core is a layer containing the core metadata for current versions -of OpenEmbedded. It is distro-less (can build a functional image with -DISTRO = "nodistro") and contains only emulated machine support. - -For information about OpenEmbedded, see the OpenEmbedded website: - http://www.openembedded.org/ - - -Contribution Guidelines -======================= - -A guide to submitting patches to OpenEmbedded is available at: - -http://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded - -There is good documentation on how to write/format patches at: - -https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines - - -Where to Send Patches -===================== - -As Poky is an integration repository (built using a tool called combo-layer), -patches against the various components should be sent to their respective -upstreams: - -bitbake: - Git repository: http://git.openembedded.org/bitbake/ - Mailing list: bitbake-devel@lists.openembedded.org - -documentation: - Git repository: http://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/ - Mailing list: docs@lists.yoctoproject.org - -meta-poky, meta-yocto-bsp: - Git repository: http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto(-bsp) - Mailing list: poky@lists.yoctoproject.org - -Everything else should be sent to the OpenEmbedded Core mailing list. If in -doubt, check the oe-core git repository for the content you intend to modify. -Before sending, be sure the patches apply cleanly to the current oe-core git -repository. - - Git repository: http://git.openembedded.org/openembedded-core/ - Mailing list: openembedded-core@lists.openembedded.org - -Note: The scripts directory should be treated with extra care as it is a mix of -oe-core and poky-specific files from meta-poky. diff --git a/poky/meta-poky/README.poky.md b/poky/meta-poky/README.poky.md new file mode 100644 index 000000000..289373f94 --- /dev/null +++ b/poky/meta-poky/README.poky.md @@ -0,0 +1,84 @@ +Poky +==== + +Poky is an integration of various components to form a pre-packaged +build system and development environment which is used as a development and +validation tool by the [Yocto Project](http://www.yoctoproject.org/). It +features support for building customised embedded style device images +and custom containers. There are reference demo images ranging from X11/GTK+ + to Weston, commandline and more. The system supports cross-architecture +application development using QEMU emulation and a standalone toolchain and +SDK suitable for IDE integration. + +Additional information on the specifics of hardware that Poky supports +is available in README.hardware. Further hardware support can easily be added +in the form of BSP layers which extend the systems capabilities in a modular way. +Many layers are available and can be found through the +[layer index](https://layers.openembedded.org/). + +As an integration layer Poky consists of several upstream projects such as +[BitBake](https://git.openembedded.org/bitbake/), +[OpenEmbedded-Core](https://git.openembedded.org/openembedded-core/), +[Yocto documentation](http://git.yoctoproject.org/cgit.cgi/yocto-docs/), +the '[meta-yocto](http://git.yoctoproject.org/cgit.cgi/meta-yocto/)' layer +which has configuration and hardware support components. These components +are all part of the Yocto Project and OpenEmbedded ecosystems. + +The Yocto Project has extensive documentation about the system including a +reference manual which can be found at <https://docs.yoctoproject.org/> + +OpenEmbedded is the build architecture used by Poky and the Yocto project. +For information about OpenEmbedded, see the +[OpenEmbedded website](http://www.openembedded.org/). + +Contribution Guidelines +----------------------- + +The project works using a mailing list patch submission process. Patches +should be sent to the mailing list for the repository the components +originate from (see below). Throughout the Yocto Project, the README +files in the component in question should detail where to send patches, +who the maintainers are and where bugs should be reported. + +A guide to submitting patches to OpenEmbedded is available at: + +<http://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded> + +There is good documentation on how to write/format patches at: + +<https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines> + +Where to Send Patches +--------------------- + +As Poky is an integration repository (built using a tool called combo-layer), +patches against the various components should be sent to their respective +upstreams: + +OpenEmbedded-Core (files in meta/, meta-selftest/, meta-skeleton/, scripts/): + +- Git repository: <https://git.openembedded.org/openembedded-core/> +- Mailing list: openembedded-core@lists.openembedded.org + +BitBake (files in bitbake/): + +- Git repository: <https://git.openembedded.org/bitbake/> +- Mailing list: bitbake-devel@lists.openembedded.org + +Documentation (files in documentation/): + +- Git repository: <https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/> +- Mailing list: docs@lists.yoctoproject.org + +meta-yocto (files in meta-poky/, meta-yocto-bsp/): + +- Git repository: <http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto> +- Mailing list: poky@lists.yoctoproject.org + +If in doubt, check the openembedded-core git repository for the content you +intend to modify as most files are from there unless clearly one of the above +categories. Before sending, be sure the patches apply cleanly to the current +git repository branch in question. + +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/765/badge)](https://bestpractices.coreinfrastructure.org/projects/765) + diff --git a/poky/meta-poky/conf/distro/include/poky-floating-revisions.inc b/poky/meta-poky/conf/distro/include/poky-floating-revisions.inc index 1fc504592..4812959fb 100644 --- a/poky/meta-poky/conf/distro/include/poky-floating-revisions.inc +++ b/poky/meta-poky/conf/distro/include/poky-floating-revisions.inc @@ -26,8 +26,6 @@ SRCREV_pn-sato-icon-theme ?= "${AUTOREV}" SRCREV_pn-matchbox-desktop-sato ?= "${AUTOREV}" SRCREV_pn-oh-puzzles ?= "${AUTOREV}" SRCREV_pn-libowl ?= "${AUTOREV}" -SRCREV_pn-clutter ?= "${AUTOREV}" -SRCREV_pn-clutter-gst ?= "${AUTOREV}" SRCREV_pn-libmatchbox ?= "${AUTOREV}" SRCREV_pn-ofono ?= "${AUTOREV}" diff --git a/poky/meta-poky/conf/distro/poky-tiny.conf b/poky/meta-poky/conf/distro/poky-tiny.conf index e4ff9752e..8545341d8 100644 --- a/poky/meta-poky/conf/distro/poky-tiny.conf +++ b/poky/meta-poky/conf/distro/poky-tiny.conf @@ -115,7 +115,6 @@ RDEPENDS_${PN}-mtrace_pn-eglibc = "" PNBLACKLIST[build-appliance-image] = "not buildable with poky-tiny" PNBLACKLIST[core-image-base] = "not buildable with poky-tiny" -PNBLACKLIST[core-image-clutter] = "not buildable with poky-tiny" PNBLACKLIST[core-image-full-cmdline] = "not buildable with poky-tiny" PNBLACKLIST[core-image-rt] = "not buildable with poky-tiny" PNBLACKLIST[core-image-rt-sdk] = "not buildable with poky-tiny" diff --git a/poky/meta-poky/conf/distro/poky.conf b/poky/meta-poky/conf/distro/poky.conf index c098b3026..522cc92f7 100644 --- a/poky/meta-poky/conf/distro/poky.conf +++ b/poky/meta-poky/conf/distro/poky.conf @@ -1,7 +1,7 @@ DISTRO = "poky" DISTRO_NAME = "Poky (Yocto Project Reference Distro)" -DISTRO_VERSION = "3.3" -DISTRO_CODENAME = "hardknott" +DISTRO_VERSION = "3.3+snapshot-${METADATA_REVISION}" +DISTRO_CODENAME = "master" SDK_VENDOR = "-pokysdk" SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}" SDK_VERSION[vardepvalue] = "${SDK_VERSION}" diff --git a/poky/meta-poky/conf/local.conf.sample b/poky/meta-poky/conf/local.conf.sample index a94b613ba..fb14379d2 100644 --- a/poky/meta-poky/conf/local.conf.sample +++ b/poky/meta-poky/conf/local.conf.sample @@ -148,11 +148,8 @@ EXTRA_IMAGE_FEATURES ?= "debug-tweaks" # enable extra features. Some available options which can be included in this variable # are: # - 'buildstats' collect build statistics -# - 'image-mklibs' to reduce shared library files size for an image # - 'image-prelink' in order to prelink the filesystem image -# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink -# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended -USER_CLASSES ?= "buildstats image-mklibs image-prelink" +USER_CLASSES ?= "buildstats image-prelink" # # Runtime testing of images @@ -188,7 +185,7 @@ PATCHRESOLVE = "noop" # # Monitor the disk space during the build. If there is less that 1GB of space or less # than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully -# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort +# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard abort # of the build. The reason for this is that running completely out of space can corrupt # files and damages the build in ways which may not be easily recoverable. # It's necessary to monitor /tmp, if there is no space left the build will fail diff --git a/poky/meta-poky/conf/local.conf.sample.extended b/poky/meta-poky/conf/local.conf.sample.extended index c241caa86..a670c7400 100644 --- a/poky/meta-poky/conf/local.conf.sample.extended +++ b/poky/meta-poky/conf/local.conf.sample.extended @@ -119,15 +119,6 @@ DISTRO_FEATURES_remove = "x11" # # TCMODE ?= "external-sourcery" -# mklibs library size optimization is more useful to smaller images, -# and less useful for bigger images. Also mklibs library optimization -# can break the ABI compatibility, so should not be applied to the -# images which are to be extended or upgraded later. -#This enabled mklibs library size optimization just for the specified image. -#MKLIBS_OPTIMIZED_IMAGES ?= "core-image-minimal" -#This enable mklibs library size optimization will be for all the images. -#MKLIBS_OPTIMIZED_IMAGES ?= "all" - # This value is currently used by pseudo to determine if the recipe should # build both the 32-bit and 64-bit wrapper libraries on a 64-bit build system. # diff --git a/poky/meta-selftest/conf/layer.conf b/poky/meta-selftest/conf/layer.conf index 5604f8269..fae8c5a65 100644 --- a/poky/meta-selftest/conf/layer.conf +++ b/poky/meta-selftest/conf/layer.conf @@ -9,4 +9,4 @@ BBFILE_COLLECTIONS += "selftest" BBFILE_PATTERN_selftest = "^${LAYERDIR}/" BBFILE_PRIORITY_selftest = "5" -LAYERSERIES_COMPAT_selftest = "hardknott" +LAYERSERIES_COMPAT_selftest = "honister" diff --git a/poky/meta-skeleton/conf/layer.conf b/poky/meta-skeleton/conf/layer.conf index ba301742e..1cb0ca1f3 100644 --- a/poky/meta-skeleton/conf/layer.conf +++ b/poky/meta-skeleton/conf/layer.conf @@ -14,4 +14,4 @@ LAYERVERSION_skeleton = "1" LAYERDEPENDS_skeleton = "core" -LAYERSERIES_COMPAT_skeleton = "hardknott" +LAYERSERIES_COMPAT_skeleton = "honister" diff --git a/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb b/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb index ee945c1ff..19ef16988 100644 --- a/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb +++ b/poky/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb @@ -4,7 +4,7 @@ DESCRIPTION = "These are introductory examples to showcase the use of QEMU to ru LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=39346640a23c701e4f459e05f56f4449" -SRCREV = "99f4fa4a3b266b42b52af302610b0f4f429ba5e3" +SRCREV = "0bf9ea216e6f76be50726a3a74e527b7bbb0ad93" PV = "0.1+git${SRCPV}" SRC_URI = "git://github.com/aehs29/baremetal-helloqemu.git;protocol=https;branch=master" @@ -28,12 +28,13 @@ inherit baremetal-image # machine that QEMU uses on OE, e.g. -machine virt -cpu cortex-a57 # but the examples can also be run on other architectures/machines # such as vexpress-a15 by overriding the setting on the machine.conf -COMPATIBLE_MACHINE = "qemuarmv5|qemuarm|qemuarm64" +COMPATIBLE_MACHINE = "qemuarmv5|qemuarm|qemuarm64|qemuriscv64" BAREMETAL_QEMUARCH ?= "" BAREMETAL_QEMUARCH_qemuarmv5 = "versatile" BAREMETAL_QEMUARCH_qemuarm = "arm" BAREMETAL_QEMUARCH_qemuarm64 = "aarch64" +BAREMETAL_QEMUARCH_qemuriscv64 = "riscv64" EXTRA_OEMAKE_append = " QEMUARCH=${BAREMETAL_QEMUARCH} V=1" diff --git a/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb b/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb index e7d50aefd..1290968b9 100644 --- a/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb +++ b/poky/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb @@ -6,7 +6,7 @@ SUMMARY = "An example of a multilib image" # # First include a base image to base things off -require recipes-sato/images/core-image-sato.bb +require recipes-graphics/images/core-image-weston.bb # Now add the multilib packages we want to install IMAGE_INSTALL += "lib32-bash" diff --git a/poky/meta-yocto-bsp/README.hardware b/poky/meta-yocto-bsp/README.hardware.md index 9803af006..9803af006 100644 --- a/poky/meta-yocto-bsp/README.hardware +++ b/poky/meta-yocto-bsp/README.hardware.md diff --git a/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend b/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend index bc2b3bf57..f8362b663 100644 --- a/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend +++ b/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_5.10.bbappend @@ -7,17 +7,17 @@ KMACHINE_genericx86 ?= "common-pc" KMACHINE_genericx86-64 ?= "common-pc-64" KMACHINE_beaglebone-yocto ?= "beaglebone" -SRCREV_machine_genericx86 ?= "8c516ced69f41563404ada0bea315a55bcf1df6f" -SRCREV_machine_genericx86-64 ?= "8c516ced69f41563404ada0bea315a55bcf1df6f" -SRCREV_machine_edgerouter ?= "965ab3ab746ae8a1158617b6302d9c218ffbbb66" -SRCREV_machine_beaglebone-yocto ?= "8c516ced69f41563404ada0bea315a55bcf1df6f" +SRCREV_machine_genericx86 ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_genericx86-64 ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_edgerouter ?= "274d63799465eebfd201b3e8251f16d29e93a978" +SRCREV_machine_beaglebone-yocto ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" COMPATIBLE_MACHINE_genericx86 = "genericx86" COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64" COMPATIBLE_MACHINE_edgerouter = "edgerouter" COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto" -LINUX_VERSION_genericx86 = "5.10.21" -LINUX_VERSION_genericx86-64 = "5.10.21" -LINUX_VERSION_edgerouter = "5.10.21" -LINUX_VERSION_beaglebone-yocto = "5.10.21" +LINUX_VERSION_genericx86 = "5.10.43" +LINUX_VERSION_genericx86-64 = "5.10.43" +LINUX_VERSION_edgerouter = "5.10.43" +LINUX_VERSION_beaglebone-yocto = "5.10.43" diff --git a/poky/meta/classes/archiver.bbclass b/poky/meta/classes/archiver.bbclass index 858507b34..a3962306b 100644 --- a/poky/meta/classes/archiver.bbclass +++ b/poky/meta/classes/archiver.bbclass @@ -118,7 +118,7 @@ python () { d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_ar_patched' % pn) elif ar_src == "configured": # We can't use "addtask do_ar_configured after do_configure" since it - # will cause the deptask of do_populate_sysroot to run not matter what + # will cause the deptask of do_populate_sysroot to run no matter what # archives we need, so we add the depends here. # There is a corner case with "gcc-source-${PV}" recipes, they don't have @@ -163,7 +163,7 @@ python () { d.appendVarFlag('do_package_write_rpm', 'depends', ' %s:do_ar_configured' % pn) } -# Take all the sources for a recipe and puts them in WORKDIR/archiver-work/. +# Take all the sources for a recipe and put them in WORKDIR/archiver-work/. # Files in SRC_URI are copied directly, anything that's a directory # (e.g. git repositories) is "unpacked" and then put into a tarball. python do_ar_original() { @@ -463,7 +463,7 @@ python do_unpack_and_patch() { ar_sysroot_native = d.getVar('STAGING_DIR_NATIVE') pn = d.getVar('PN') - # The kernel class functions require it to be on work-shared, so we dont change WORKDIR + # The kernel class functions require it to be on work-shared, so we don't change WORKDIR if not is_work_shared(d): # Change the WORKDIR to make do_unpack do_patch run in another dir. d.setVar('WORKDIR', ar_workdir) @@ -505,7 +505,7 @@ python do_unpack_and_patch() { # of the output file ensures that we create it each time the recipe # gets rebuilt, at least as long as a PR server is used. We also rely # on that mechanism to catch changes in the file content, because the -# file content is not part of of the task signature either. +# file content is not part of the task signature either. do_ar_recipe[vardepsexclude] += "BBINCLUDED" python do_ar_recipe () { """ diff --git a/poky/meta/classes/baremetal-image.bbclass b/poky/meta/classes/baremetal-image.bbclass index b0f5e885b..8708a5430 100644 --- a/poky/meta/classes/baremetal-image.bbclass +++ b/poky/meta/classes/baremetal-image.bbclass @@ -50,6 +50,10 @@ python do_rootfs(){ if os.path.lexists(manifest_link): os.remove(manifest_link) os.symlink(os.path.basename(manifest_name), manifest_link) + # A lot of postprocess commands assume the existence of rootfs/etc + sysconfdir = d.getVar("IMAGE_ROOTFS") + d.getVar('sysconfdir') + bb.utils.mkdirhier(sysconfdir) + execute_pre_post_process(d, d.getVar('ROOTFS_POSTPROCESS_COMMAND')) } @@ -73,7 +77,19 @@ QB_DEFAULT_KERNEL ?= "${IMAGE_LINK_NAME}.bin" QB_MEM ?= "-m 256" QB_DEFAULT_FSTYPE ?= "bin" QB_DTB ?= "" -QB_OPT_APPEND = "-nographic" +QB_OPT_APPEND_append = " -nographic" + +# RISC-V tunes set the BIOS, unset, and instruct QEMU to +# ignore the BIOS and boot from -kernel +QB_DEFAULT_BIOS_qemuriscv64 = "" +QB_OPT_APPEND_append_qemuriscv64 = " -bios none" + + +# Use the medium-any code model for the RISC-V 64 bit implementation, +# since medlow can only access addresses below 0x80000000 and RAM +# starts at 0x80000000 on RISC-V 64 +CFLAGS_append_qemuriscv64 = " -mcmodel=medany" + # This next part is necessary to trick the build system into thinking # its building an image recipe so it generates the qemuboot.conf diff --git a/poky/meta/classes/buildhistory.bbclass b/poky/meta/classes/buildhistory.bbclass index 49af61c9c..55b12d789 100644 --- a/poky/meta/classes/buildhistory.bbclass +++ b/poky/meta/classes/buildhistory.bbclass @@ -43,6 +43,7 @@ BUILDHISTORY_COMMIT ?= "1" BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>" BUILDHISTORY_PUSH_REPO ?= "" BUILDHISTORY_TAG ?= "build" +BUILDHISTORY_PATH_PREFIX_STRIP ?= "" SSTATEPOSTINSTFUNCS_append = " buildhistory_emit_pkghistory" # We want to avoid influencing the signatures of sstate tasks - first the function itself: @@ -697,7 +698,7 @@ python buildhistory_write_sigs() { if hasattr(bb.parse.siggen, 'dump_siglist'): taskoutdir = os.path.join(d.getVar('BUILDHISTORY_DIR'), 'task') bb.utils.mkdirhier(taskoutdir) - bb.parse.siggen.dump_siglist(os.path.join(taskoutdir, 'tasksigs.txt')) + bb.parse.siggen.dump_siglist(os.path.join(taskoutdir, 'tasksigs.txt'), d.getVar("BUILDHISTORY_PATH_PREFIX_STRIP")) } def buildhistory_get_build_id(d): @@ -875,7 +876,7 @@ python buildhistory_eventhandler() { entries = [ x for x in os.listdir(rootdir) if not x.startswith('.') ] bb.utils.mkdirhier(olddir) for entry in entries: - os.rename(os.path.join(rootdir, entry), + bb.utils.rename(os.path.join(rootdir, entry), os.path.join(olddir, entry)) elif isinstance(e, bb.event.BuildCompleted): if reset: diff --git a/poky/meta/classes/buildstats.bbclass b/poky/meta/classes/buildstats.bbclass index 8e03039ae..8a1466d3f 100644 --- a/poky/meta/classes/buildstats.bbclass +++ b/poky/meta/classes/buildstats.bbclass @@ -104,7 +104,7 @@ def write_task_data(status, logfile, e, d): f.write("Status: FAILED \n") f.write("Ended: %0.2f \n" % e.time) -def write_host_data(logfile, e, d): +def write_host_data(logfile, e, d, type): import subprocess, os, datetime # minimum time allowed for each command to run, in seconds time_threshold = 0.5 @@ -112,15 +112,22 @@ def write_host_data(logfile, e, d): num_cmds = 0 # interval at which data will be logged interval = int(d.getVar("BB_HEARTBEAT_EVENT", False)) - # the commands to be run at each interval - cmds = d.getVar('BB_LOG_HOST_STAT_CMDS') - # if no commands are passed, issue a warning and return - if cmds is None: - d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") - d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0") - bb.warn("buildstats: Collecting host data failed. Set BB_LOG_HOST_STAT_CMDS=\"command1 ; command2 ; ... \" in conf/local.conf\n") - return - # find the total commands + msg = "" + if type == "interval": + cmds = d.getVar('BB_LOG_HOST_STAT_CMDS_INTERVAL') + msg = "Host Stats: Collecting data at interval.\n" + if cmds is None: + d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") + bb.warn("buildstats: Collecting host data at intervals failed. Set BB_LOG_HOST_STAT_CMDS_INTERVAL=\"command1 ; command2 ; ... \" in conf/local.conf\n") + return + if type == "failure": + cmds = d.getVar('BB_LOG_HOST_STAT_CMDS_FAILURE') + msg = "Host Stats: Collecting data on failure.\n" + msg += "Failed at task " + e.task + "\n" + if cmds is None: + d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0") + bb.warn("buildstats: Collecting host data on failure failed. Set BB_LOG_HOST_STAT_CMDS_FAILURE=\"command1 ; command2 ; ... \" in conf/local.conf\n") + return c_san = [] for cmd in cmds.split(";"): if len(cmd) == 0: @@ -147,6 +154,7 @@ def write_host_data(logfile, e, d): os.environ['PATH'] = path + ":" + opath + ":" + ospath with open(logfile, "a") as f: f.write("Event Time: %f\nDate: %s\n" % (e.time, datetime.datetime.now())) + f.write("%s" % msg) for c in c_san: try: output = subprocess.check_output(c.split(), stderr=subprocess.STDOUT, timeout=limit).decode('utf-8') @@ -171,7 +179,7 @@ python run_buildstats () { taskdir = os.path.join(bsdir, d.getVar('PF')) if isinstance(e, bb.event.HeartbeatEvent) and bb.utils.to_boolean(d.getVar("BB_LOG_HOST_STAT_ON_INTERVAL")): bb.utils.mkdirhier(bsdir) - write_host_data(os.path.join(bsdir, "host_stats"), e, d) + write_host_data(os.path.join(bsdir, "host_stats"), e, d, "interval") if isinstance(e, bb.event.BuildStarted): ######################################################################## @@ -247,7 +255,7 @@ python run_buildstats () { with open(build_status, "a") as f: f.write(d.expand("Failed at: ${PF} at task: %s \n" % e.task)) if bb.utils.to_boolean(d.getVar("BB_LOG_HOST_STAT_ON_FAILURE")): - write_host_data(build_status, e, d) + write_host_data(os.path.join(bsdir, "host_stats"), e, d, "failure") } addhandler run_buildstats diff --git a/poky/meta/classes/clutter.bbclass b/poky/meta/classes/clutter.bbclass deleted file mode 100644 index 24b53a13e..000000000 --- a/poky/meta/classes/clutter.bbclass +++ /dev/null @@ -1,18 +0,0 @@ -def get_minor_dir(v): - import re - m = re.match(r"^([0-9]+)\.([0-9]+)", v) - return "%s.%s" % (m.group(1), m.group(2)) - -def get_real_name(n): - import re - m = re.match(r"^([a-z]+(-[a-z]+)?)(-[0-9]+\.[0-9]+)?", n) - return "%s" % (m.group(1)) - -VERMINOR = "${@get_minor_dir("${PV}")}" -REALNAME = "${@get_real_name("${BPN}")}" - -SRC_URI = "${GNOME_MIRROR}/${REALNAME}/${VERMINOR}/${REALNAME}-${PV}.tar.xz;name=archive" -S = "${WORKDIR}/${REALNAME}-${PV}" - -CLUTTERBASEBUILDCLASS ??= "autotools" -inherit ${CLUTTERBASEBUILDCLASS} pkgconfig gtk-doc gettext diff --git a/poky/meta/classes/cmake.bbclass b/poky/meta/classes/cmake.bbclass index 8876ce5aa..f01db7480 100644 --- a/poky/meta/classes/cmake.bbclass +++ b/poky/meta/classes/cmake.bbclass @@ -149,16 +149,14 @@ addtask generate_toolchain_file after do_patch before do_configure CONFIGURE_FILES = "CMakeLists.txt" +do_configure[cleandirs] = "${@d.getVar('B') if d.getVar('S') != d.getVar('B') else ''}" + cmake_do_configure() { if [ "${OECMAKE_BUILDPATH}" ]; then bbnote "cmake.bbclass no longer uses OECMAKE_BUILDPATH. The default behaviour is now out-of-tree builds with B=WORKDIR/build." fi - if [ "${S}" != "${B}" ]; then - rm -rf ${B} - mkdir -p ${B} - cd ${B} - else + if [ "${S}" = "${B}" ]; then find ${B} -name CMakeFiles -or -name Makefile -or -name cmake_install.cmake -or -name CMakeCache.txt -delete fi diff --git a/poky/meta/classes/cpan-base.bbclass b/poky/meta/classes/cpan-base.bbclass index 867edf870..1fc3f0bcb 100644 --- a/poky/meta/classes/cpan-base.bbclass +++ b/poky/meta/classes/cpan-base.bbclass @@ -16,3 +16,12 @@ def is_target(d): PERLLIBDIRS = "${libdir}/perl5" PERLLIBDIRS_class-native = "${libdir}/perl5" + +def cpan_upstream_check_pattern(d): + for x in (d.getVar('SRC_URI') or '').split(' '): + if x.startswith("https://cpan.metacpan.org"): + _pattern = x.split('/')[-1].replace(d.getVar('PV'), '(?P<pver>\d+.\d+)') + return _pattern + return '' + +UPSTREAM_CHECK_REGEX ?= "${@cpan_upstream_check_pattern(d)}" diff --git a/poky/meta/classes/cross-canadian.bbclass b/poky/meta/classes/cross-canadian.bbclass index f5c9f6159..39b5bb93f 100644 --- a/poky/meta/classes/cross-canadian.bbclass +++ b/poky/meta/classes/cross-canadian.bbclass @@ -36,7 +36,7 @@ python () { return tos = d.getVar("TARGET_OS") - whitelist = [] + whitelist = ["mingw32"] extralibcs = [""] if "musl" in d.getVar("BASECANADIANEXTRAOS"): extralibcs.append("musl") @@ -155,7 +155,7 @@ libexecdir = "${exec_prefix}/libexec/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS} FILES_${PN} = "${prefix}" -export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}${layout_libdir}/pkgconfig" +export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}${exec_prefix}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}" do_populate_sysroot[stamp-extra-info] = "" diff --git a/poky/meta/classes/externalsrc.bbclass b/poky/meta/classes/externalsrc.bbclass index 54cc7edba..3d6b80bee 100644 --- a/poky/meta/classes/externalsrc.bbclass +++ b/poky/meta/classes/externalsrc.bbclass @@ -217,11 +217,10 @@ def srctree_hash_files(d, srcdir=None): env['GIT_INDEX_FILE'] = tmp_index.name subprocess.check_output(['git', 'add', '-A', '.'], cwd=s_dir, env=env) git_sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8") - submodule_helper = subprocess.check_output(['git', 'submodule', 'status'], cwd=s_dir, env=env).decode("utf-8") + submodule_helper = subprocess.check_output(['git', 'submodule--helper', 'list'], cwd=s_dir, env=env).decode("utf-8") for line in submodule_helper.splitlines(): - module_relpath = line.split()[1] - if not module_relpath.split('/')[0] == '..': - module_dir = os.path.join(s_dir, module_relpath) + module_dir = os.path.join(s_dir, line.rsplit(maxsplit=1)[1]) + if os.path.isdir(module_dir): proc = subprocess.Popen(['git', 'add', '-A', '.'], cwd=module_dir, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) proc.communicate() proc = subprocess.Popen(['git', 'write-tree'], cwd=module_dir, env=env, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) diff --git a/poky/meta/classes/gi-docgen.bbclass b/poky/meta/classes/gi-docgen.bbclass new file mode 100644 index 000000000..5750f7028 --- /dev/null +++ b/poky/meta/classes/gi-docgen.bbclass @@ -0,0 +1,24 @@ +# gi-docgen is a new gnome documentation generator, which +# seems to be a successor to gtk-doc: +# https://gitlab.gnome.org/GNOME/gi-docgen + +# This variable is set to True if api-documentation is in +# DISTRO_FEATURES, and False otherwise. +GIDOCGEN_ENABLED ?= "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'True', 'False', d)}" +# When building native recipes, disable gi-docgen, as it is not necessary, +# pulls in additional dependencies, and makes build times longer +GIDOCGEN_ENABLED_class-native = "False" +GIDOCGEN_ENABLED_class-nativesdk = "False" + +# meson: default option name to enable/disable gi-docgen. This matches most +# projects' configuration. In doubts - check meson_options.txt in project's +# source path. +GIDOCGEN_MESON_OPTION ?= 'gtk_doc' +GIDOCGEN_MESON_ENABLE_FLAG ?= 'true' +GIDOCGEN_MESON_DISABLE_FLAG ?= 'false' + +# Auto enable/disable based on GIDOCGEN_ENABLED +EXTRA_OEMESON_prepend = "-D${GIDOCGEN_MESON_OPTION}=${@bb.utils.contains('GIDOCGEN_ENABLED', 'True', '${GIDOCGEN_MESON_ENABLE_FLAG}', '${GIDOCGEN_MESON_DISABLE_FLAG}', d)} " + +DEPENDS_append = "${@' gi-docgen-native gi-docgen' if d.getVar('GIDOCGEN_ENABLED') == 'True' else ''}" + diff --git a/poky/meta/classes/gnomebase.bbclass b/poky/meta/classes/gnomebase.bbclass index efcb6caae..884b1a106 100644 --- a/poky/meta/classes/gnomebase.bbclass +++ b/poky/meta/classes/gnomebase.bbclass @@ -1,5 +1,6 @@ def gnome_verdir(v): - return oe.utils.trim_version(v, 2) + return ".".join(v.split(".")[:-1]) + GNOME_COMPRESS_TYPE ?= "xz" SECTION ?= "x11/gnome" diff --git a/poky/meta/classes/icecc.bbclass b/poky/meta/classes/icecc.bbclass index d095305ed..80943fcf0 100644 --- a/poky/meta/classes/icecc.bbclass +++ b/poky/meta/classes/icecc.bbclass @@ -138,10 +138,6 @@ def use_icecc(bb,d): if icecc_is_cross_canadian(bb, d): return "no" - if d.getVar('INHIBIT_DEFAULT_DEPS', False): - # We don't have a compiler, so no icecc - return "no" - pn = d.getVar('PN') bpn = d.getVar('BPN') @@ -362,7 +358,7 @@ set_icecc_env() { ICECC_WHICH_AS="${@bb.utils.which(os.getenv('PATH'), 'as')}" if [ ! -x "${ICECC_CC}" -o ! -x "${ICECC_CXX}" ] then - bbwarn "Cannot use icecc: could not get ICECC_CC or ICECC_CXX" + bbnote "Cannot use icecc: could not get ICECC_CC or ICECC_CXX" return fi diff --git a/poky/meta/classes/image-live.bbclass b/poky/meta/classes/image-live.bbclass index 8b08305cd..fd876ed8e 100644 --- a/poky/meta/classes/image-live.bbclass +++ b/poky/meta/classes/image-live.bbclass @@ -261,4 +261,4 @@ python do_bootimg() { do_bootimg[subimages] = "hddimg iso" do_bootimg[imgsuffix] = "." -addtask bootimg before do_image_complete +addtask bootimg before do_image_complete after do_rootfs diff --git a/poky/meta/classes/image-mklibs.bbclass b/poky/meta/classes/image-mklibs.bbclass deleted file mode 100644 index 68e11d436..000000000 --- a/poky/meta/classes/image-mklibs.bbclass +++ /dev/null @@ -1,56 +0,0 @@ -do_rootfs[depends] += "mklibs-native:do_populate_sysroot" - -IMAGE_PREPROCESS_COMMAND += "mklibs_optimize_image; " - -inherit linuxloader - -mklibs_optimize_image_doit() { - rm -rf ${WORKDIR}/mklibs - mkdir -p ${WORKDIR}/mklibs/dest - cd ${IMAGE_ROOTFS} - du -bs > ${WORKDIR}/mklibs/du.before.mklibs.txt - - # Build a list of dynamically linked executable ELF files. - # Omit libc/libpthread as a special case because it has an interpreter - # but is primarily what we intend to strip down. - for i in `find . -type f -executable ! -name 'libc-*' ! -name 'libpthread-*'`; do - file $i | grep -q ELF || continue - ${HOST_PREFIX}readelf -l $i | grep -q INTERP || continue - echo $i - done > ${WORKDIR}/mklibs/executables.list - - dynamic_loader=${@get_linuxloader(d)} - - mklibs -v \ - --ldlib ${dynamic_loader} \ - --libdir ${baselib} \ - --sysroot ${PKG_CONFIG_SYSROOT_DIR} \ - --gcc-options "--sysroot=${PKG_CONFIG_SYSROOT_DIR}" \ - --root ${IMAGE_ROOTFS} \ - --target `echo ${TARGET_PREFIX} | sed 's/-$//' ` \ - -d ${WORKDIR}/mklibs/dest \ - `cat ${WORKDIR}/mklibs/executables.list` - - cd ${WORKDIR}/mklibs/dest - for i in * - do - cp $i `find ${IMAGE_ROOTFS} -name $i` - done - - cd ${IMAGE_ROOTFS} - du -bs > ${WORKDIR}/mklibs/du.after.mklibs.txt - - echo rootfs size before mklibs optimization: `cat ${WORKDIR}/mklibs/du.before.mklibs.txt` - echo rootfs size after mklibs optimization: `cat ${WORKDIR}/mklibs/du.after.mklibs.txt` -} - -mklibs_optimize_image() { - for img in ${MKLIBS_OPTIMIZED_IMAGES} - do - if [ "${img}" = "${PN}" ] || [ "${img}" = "all" ] - then - mklibs_optimize_image_doit - break - fi - done -} diff --git a/poky/meta/classes/image.bbclass b/poky/meta/classes/image.bbclass index 013455f49..67603d958 100644 --- a/poky/meta/classes/image.bbclass +++ b/poky/meta/classes/image.bbclass @@ -38,7 +38,7 @@ IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs read-only-rootfs-de # Generate companion debugfs? IMAGE_GEN_DEBUGFS ?= "0" -# These pacackages will be installed as additional into debug rootfs +# These packages will be installed as additional into debug rootfs IMAGE_INSTALL_DEBUGFS ?= "" # These packages will be removed from a read-only rootfs after all other @@ -657,7 +657,7 @@ reproducible_final_image_task () { fi # Set mtime of all files to a reproducible value bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS" - find ${IMAGE_ROOTFS} -exec touch -h --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS {} \; + find ${IMAGE_ROOTFS} -print0 | xargs -0 touch -h --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS fi } diff --git a/poky/meta/classes/image_types.bbclass b/poky/meta/classes/image_types.bbclass index 802869140..954d6739e 100644 --- a/poky/meta/classes/image_types.bbclass +++ b/poky/meta/classes/image_types.bbclass @@ -108,6 +108,11 @@ IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo" IMAGE_CMD_squashfs-lz4 = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lz4 ${EXTRA_IMAGECMD} -noappend -comp lz4" +IMAGE_CMD_erofs = "mkfs.erofs ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs ${IMAGE_ROOTFS}" +IMAGE_CMD_erofs-lz4 = "mkfs.erofs -zlz4 ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4 ${IMAGE_ROOTFS}" +IMAGE_CMD_erofs-lz4hc = "mkfs.erofs -zlz4hc ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4hc ${IMAGE_ROOTFS}" + + IMAGE_CMD_TAR ?= "tar" # ignore return code 1 "file changed as we read it" as other tasks(e.g. do_image_wic) may be hardlinking rootfs IMAGE_CMD_tar = "${IMAGE_CMD_TAR} --sort=name --format=posix --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} . || [ $? -eq 1 ]" @@ -243,6 +248,9 @@ do_image_ubi[depends] += "mtd-utils-native:do_populate_sysroot" do_image_ubifs[depends] += "mtd-utils-native:do_populate_sysroot" do_image_multiubi[depends] += "mtd-utils-native:do_populate_sysroot" do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot" +do_image_erofs[depends] += "erofs-utils-native:do_populate_sysroot" +do_image_erofs_lz4[depends] += "erofs-utils-native:do_populate_sysroot" +do_image_erofs_lz4hc[depends] += "erofs-utils-native:do_populate_sysroot" # This variable is available to request which values are suitable for IMAGE_FSTYPES IMAGE_TYPES = " \ @@ -261,6 +269,7 @@ IMAGE_TYPES = " \ wic wic.gz wic.bz2 wic.lzma wic.zst \ container \ f2fs \ + erofs erofs-lz4 erofs-lz4hc \ " # Compression is a special case of conversion. The old variable @@ -269,7 +278,7 @@ IMAGE_TYPES = " \ # CONVERSION_CMD/DEPENDS. COMPRESSIONTYPES ?= "" -CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip zst sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap u-boot vmdk vhd vhdx vdi qcow2 base64 ${COMPRESSIONTYPES}" +CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip zst sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap u-boot vmdk vhd vhdx vdi qcow2 base64 gzsync zsync ${COMPRESSIONTYPES}" CONVERSION_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" CONVERSION_CMD_gz = "gzip -f -9 -n -c --rsyncable ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz" CONVERSION_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" @@ -293,6 +302,8 @@ CONVERSION_CMD_vhd = "qemu-img convert -O vpc -o subformat=fixed ${IMAGE_NAME}${ CONVERSION_CMD_vdi = "qemu-img convert -O vdi ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vdi" CONVERSION_CMD_qcow2 = "qemu-img convert -O qcow2 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.qcow2" CONVERSION_CMD_base64 = "base64 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.base64" +CONVERSION_CMD_zsync = "zsyncmake_curl ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" +CONVERSION_CMD_gzsync = "zsyncmake_curl -z ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" CONVERSION_DEPENDS_lzma = "xz-native" CONVERSION_DEPENDS_gz = "pigz-native" CONVERSION_DEPENDS_bz2 = "pbzip2-native" @@ -310,6 +321,8 @@ CONVERSION_DEPENDS_qcow2 = "qemu-system-native" CONVERSION_DEPENDS_base64 = "coreutils-native" CONVERSION_DEPENDS_vhdx = "qemu-system-native" CONVERSION_DEPENDS_vhd = "qemu-system-native" +CONVERSION_DEPENDS_zsync = "zsync-curl-native" +CONVERSION_DEPENDS_gzsync = "zsync-curl-native" RUNNABLE_IMAGE_TYPES ?= "ext2 ext3 ext4" RUNNABLE_MACHINE_PATTERNS ?= "qemu" diff --git a/poky/meta/classes/insane.bbclass b/poky/meta/classes/insane.bbclass index fa05fc055..763d5f1da 100644 --- a/poky/meta/classes/insane.bbclass +++ b/poky/meta/classes/insane.bbclass @@ -176,7 +176,7 @@ def package_qa_check_useless_rpaths(file, name, d, elf, messages): if rpath_eq(rpath, libdir) or rpath_eq(rpath, base_libdir): # The dynamic linker searches both these places anyway. There is no point in # looking there again. - package_qa_add_message(messages, "useless-rpaths", "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d), rpath)) + package_qa_add_message(messages, "useless-rpaths", "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d, name), rpath)) QAPATHTEST[dev-so] = "package_qa_check_dev" def package_qa_check_dev(path, name, d, elf, messages): @@ -185,8 +185,8 @@ def package_qa_check_dev(path, name, d, elf, messages): """ if not name.endswith("-dev") and not name.endswith("-dbg") and not name.endswith("-ptest") and not name.startswith("nativesdk-") and path.endswith(".so") and os.path.islink(path): - package_qa_add_message(messages, "dev-so", "non -dev/-dbg/nativesdk- package contains symlink .so: %s path '%s'" % \ - (name, package_qa_clean_path(path,d))) + package_qa_add_message(messages, "dev-so", "non -dev/-dbg/nativesdk- package %s contains symlink .so '%s'" % \ + (name, package_qa_clean_path(path, d, name))) QAPATHTEST[dev-elf] = "package_qa_check_dev_elf" def package_qa_check_dev_elf(path, name, d, elf, messages): @@ -196,8 +196,8 @@ def package_qa_check_dev_elf(path, name, d, elf, messages): install link-time .so files that are linker scripts. """ if name.endswith("-dev") and path.endswith(".so") and not os.path.islink(path) and elf: - package_qa_add_message(messages, "dev-elf", "-dev package contains non-symlink .so: %s path '%s'" % \ - (name, package_qa_clean_path(path,d))) + package_qa_add_message(messages, "dev-elf", "-dev package %s contains non-symlink .so '%s'" % \ + (name, package_qa_clean_path(path, d, name))) QAPATHTEST[staticdev] = "package_qa_check_staticdev" def package_qa_check_staticdev(path, name, d, elf, messages): @@ -210,7 +210,7 @@ def package_qa_check_staticdev(path, name, d, elf, messages): if not name.endswith("-pic") and not name.endswith("-staticdev") and not name.endswith("-ptest") and path.endswith(".a") and not path.endswith("_nonshared.a") and not '/usr/lib/debug-static/' in path and not '/.debug-static/' in path: package_qa_add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \ - (name, package_qa_clean_path(path,d))) + (name, package_qa_clean_path(path,d, name))) QAPATHTEST[mime] = "package_qa_check_mime" def package_qa_check_mime(path, name, d, elf, messages): diff --git a/poky/meta/classes/kernel-fitimage.bbclass b/poky/meta/classes/kernel-fitimage.bbclass index 5cfd8af99..e363eeb64 100644 --- a/poky/meta/classes/kernel-fitimage.bbclass +++ b/poky/meta/classes/kernel-fitimage.bbclass @@ -217,13 +217,13 @@ fitimage_emit_section_boot_script() { bootscr_sign_keyname="${UBOOT_SIGN_KEYNAME}" cat << EOF >> ${1} - bootscr@${2} { + bootscr-${2} { description = "U-boot script"; data = /incbin/("${3}"); type = "script"; arch = "${UBOOT_ARCH}"; compression = "none"; - hash@1 { + hash-1 { algo = "${bootscr_csum}"; }; }; @@ -232,7 +232,7 @@ EOF if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${bootscr_sign_keyname}" ] ; then sed -i '$ d' ${1} cat << EOF >> ${1} - signature@1 { + signature-1 { algo = "${bootscr_csum},${bootscr_sign_algo}"; key-name-hint = "${bootscr_sign_keyname}"; }; @@ -331,7 +331,7 @@ fitimage_emit_section_config() { conf_csum="${FIT_HASH_ALG}" conf_sign_algo="${FIT_SIGN_ALG}" - if [ -n "${UBOOT_SIGN_ENABLE}" ] ; then + if [ "${UBOOT_SIGN_ENABLE}" = "1" ] ; then conf_sign_keyname="${UBOOT_SIGN_KEYNAME}" fi @@ -383,7 +383,7 @@ fitimage_emit_section_config() { if [ -n "${bootscr_id}" ]; then conf_desc="${conf_desc}${sep}u-boot script" sep=", " - bootscr_line="bootscr = \"bootscr@${bootscr_id}\";" + bootscr_line="bootscr = \"bootscr-${bootscr_id}\";" fi if [ -n "${config_id}" ]; then @@ -667,7 +667,34 @@ do_assemble_fitimage_initramfs() { addtask assemble_fitimage_initramfs before do_deploy after do_bundle_initramfs -addtask generate_rsa_keys before do_assemble_fitimage after do_compile +do_kernel_generate_rsa_keys() { + if [ "${UBOOT_SIGN_ENABLE}" = "0" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then + bbwarn "FIT_GENERATE_KEYS is set to 1 even though UBOOT_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used." + fi + + if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then + + # Generate keys only if they don't already exist + if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key ] || \ + [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt ]; then + + # make directory if it does not already exist + mkdir -p "${UBOOT_SIGN_KEYDIR}" + + echo "Generating RSA private key for signing fitImage" + openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \ + "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ + "${FIT_SIGN_NUMBITS}" + + echo "Generating certificate for signing fitImage" + openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \ + -key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ + -out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt + fi + fi +} + +addtask kernel_generate_rsa_keys before do_assemble_fitimage after do_compile kernel_do_deploy[vardepsexclude] = "DATETIME" kernel_do_deploy_append() { @@ -718,13 +745,13 @@ kernel_do_deploy_append() { # - Removes do_assemble_fitimage. FIT generation is done through # do_assemble_fitimage_initramfs. do_assemble_fitimage is not needed # and should not be part of the tasks to be executed. -# - Since do_generate_rsa_keys is inserted by default +# - Since do_kernel_generate_rsa_keys is inserted by default # between do_compile and do_assemble_fitimage, this is -# not suitable in case of initramfs bundles. do_generate_rsa_keys +# not suitable in case of initramfs bundles. do_kernel_generate_rsa_keys # should be between do_bundle_initramfs and do_assemble_fitimage_initramfs. python () { if d.getVar('INITRAMFS_IMAGE_BUNDLE') == "1": bb.build.deltask('do_assemble_fitimage', d) - bb.build.deltask('generate_rsa_keys', d) - bb.build.addtask('generate_rsa_keys', 'do_assemble_fitimage_initramfs', 'do_bundle_initramfs', d) + bb.build.deltask('kernel_generate_rsa_keys', d) + bb.build.addtask('kernel_generate_rsa_keys', 'do_assemble_fitimage_initramfs', 'do_bundle_initramfs', d) } diff --git a/poky/meta/classes/kernel-yocto.bbclass b/poky/meta/classes/kernel-yocto.bbclass index 15c8dbb81..0df61cdef 100644 --- a/poky/meta/classes/kernel-yocto.bbclass +++ b/poky/meta/classes/kernel-yocto.bbclass @@ -113,6 +113,8 @@ do_kernel_metadata() { cd ${S} export KMETA=${KMETA} + bbnote "do_kernel_metadata: for summary/debug, set KCONF_AUDIT_LEVEL > 0" + # if kernel tools are available in-tree, they are preferred # and are placed on the path before any external tools. Unless # the external tools flag is set, in that case we do nothing. @@ -290,6 +292,21 @@ do_kernel_metadata() { fi fi fi + + if [ ${KCONF_AUDIT_LEVEL} -gt 0 ]; then + bbnote "kernel meta data summary for ${KMACHINE} (${LINUX_KERNEL_TYPE}):" + bbnote "======================================================================" + if [ -n "${KMETA_EXTERNAL_BSPS}" ]; then + bbnote "Non kernel-cache (external) bsp" + fi + bbnote "BSP entry point / definition: $bsp_definition" + if [ -n "$in_tree_defconfig" ]; then + bbnote "KBUILD_DEFCONFIG: ${KBUILD_DEFCONFIG}" + fi + bbnote "Fragments from SRC_URI: $sccs_from_src_uri" + bbnote "KERNEL_FEATURES: $KERNEL_FEATURES_FINAL" + bbnote "Final scc/cfg list: $sccs_defconfig $bsp_definition $sccs $KERNEL_FEATURES_FINAL" + fi } do_patch() { @@ -378,7 +395,7 @@ do_kernel_checkout() { # checkout and clobber any unimportant files git checkout -f ${machine_branch} } -do_kernel_checkout[dirs] = "${S}" +do_kernel_checkout[dirs] = "${S} ${WORKDIR}" addtask kernel_checkout before do_kernel_metadata after do_symlink_kernsrc addtask kernel_metadata after do_validate_branches do_unpack before do_patch @@ -614,7 +631,31 @@ do_validate_branches() { # if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to # check and we can exit early if [ "${machine_srcrev}" = "AUTOINC" ]; then + linux_yocto_dev='${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "1", "", d)}' + if [ -n "$linux_yocto_dev" ]; then + git checkout -q -f ${machine_branch} + ver=$(grep "^VERSION =" ${S}/Makefile | sed s/.*=\ *//) + patchlevel=$(grep "^PATCHLEVEL =" ${S}/Makefile | sed s/.*=\ *//) + sublevel=$(grep "^SUBLEVEL =" ${S}/Makefile | sed s/.*=\ *//) + kver="$ver.$patchlevel" + bbnote "dev kernel: performing version -> branch -> SRCREV validation" + bbnote "dev kernel: recipe version ${LINUX_VERSION}, src version: $kver" + echo "${LINUX_VERSION}" | grep -q $kver + if [ $? -ne 0 ]; then + version="$(echo ${LINUX_VERSION} | sed 's/\+.*$//g')" + versioned_branch="v$version/$machine_branch" + + machine_branch=$versioned_branch + force_srcrev="$(git rev-parse $machine_branch 2> /dev/null)" + if [ $? -ne 0 ]; then + bbfatal "kernel version mismatch detected, and no valid branch $machine_branch detected" + fi + + bbnote "dev kernel: adjusting branch to $machine_branch, srcrev to: $force_srcrev" + fi + else bbnote "SRCREV validation is not required for AUTOREV" + fi elif [ "${machine_srcrev}" = "" ]; then if [ "${SRCREV}" != "AUTOINC" ] && [ "${SRCREV}" != "INVALID" ]; then # SRCREV_machine_<MACHINE> was not set. This means that a custom recipe diff --git a/poky/meta/classes/kernel.bbclass b/poky/meta/classes/kernel.bbclass index 8693ab86b..379bed44f 100644 --- a/poky/meta/classes/kernel.bbclass +++ b/poky/meta/classes/kernel.bbclass @@ -714,7 +714,7 @@ do_sizecheck() { at_least_one_fits= for imageType in ${KERNEL_IMAGETYPES} ; do size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$imageType | awk '{print $1}'` - if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then + if [ $size -gt ${KERNEL_IMAGE_MAXSIZE} ]; then bbwarn "This kernel $imageType (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device." else at_least_one_fits=y diff --git a/poky/meta/classes/license_image.bbclass b/poky/meta/classes/license_image.bbclass index c96b032eb..73cebb4d5 100644 --- a/poky/meta/classes/license_image.bbclass +++ b/poky/meta/classes/license_image.bbclass @@ -1,3 +1,5 @@ +ROOTFS_LICENSE_DIR = "${IMAGE_ROOTFS}/usr/share/common-licenses" + python write_package_manifest() { # Get list of installed packages license_image_dir = d.expand('${LICENSE_DIRECTORY}/${IMAGE_NAME}') @@ -104,8 +106,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True): copy_lic_manifest = d.getVar('COPY_LIC_MANIFEST') copy_lic_dirs = d.getVar('COPY_LIC_DIRS') if rootfs and copy_lic_manifest == "1": - rootfs_license_dir = os.path.join(d.getVar('IMAGE_ROOTFS'), - 'usr', 'share', 'common-licenses') + rootfs_license_dir = d.getVar('ROOTFS_LICENSE_DIR') bb.utils.mkdirhier(rootfs_license_dir) rootfs_license_manifest = os.path.join(rootfs_license_dir, os.path.split(license_manifest)[1]) @@ -143,12 +144,13 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True): continue # Make sure we use only canonical name for the license file - rootfs_license = os.path.join(rootfs_license_dir, "generic_%s" % generic_lic) + generic_lic_file = "generic_%s" % generic_lic + rootfs_license = os.path.join(rootfs_license_dir, generic_lic_file) if not os.path.exists(rootfs_license): oe.path.copyhardlink(pkg_license, rootfs_license) if not os.path.exists(pkg_rootfs_license): - os.symlink(os.path.join('..', lic), pkg_rootfs_license) + os.symlink(os.path.join('..', generic_lic_file), pkg_rootfs_license) else: if (oe.license.license_ok(canonical_license(d, lic), bad_licenses) == False or @@ -267,3 +269,13 @@ python do_populate_lic_deploy() { addtask populate_lic_deploy before do_build after do_image_complete do_populate_lic_deploy[recrdeptask] += "do_populate_lic do_deploy" +python license_qa_dead_symlink() { + import os + + for root, dirs, files in os.walk(d.getVar('ROOTFS_LICENSE_DIR')): + for file in files: + full_path = root + "/" + file + if os.path.islink(full_path) and not os.path.exists(full_path): + bb.error("broken symlink: " + full_path) +} +IMAGE_QA_COMMANDS += "license_qa_dead_symlink" diff --git a/poky/meta/classes/linuxloader.bbclass b/poky/meta/classes/linuxloader.bbclass index 30925ac87..4447c8847 100644 --- a/poky/meta/classes/linuxloader.bbclass +++ b/poky/meta/classes/linuxloader.bbclass @@ -40,6 +40,8 @@ def get_glibc_loader(d): dynamic_loader = "${base_libdir}/ld-linux-mipsn8.so.1" elif targetarch.startswith("mips"): dynamic_loader = "${base_libdir}/ld.so.1" + elif targetarch == "powerpc64le": + dynamic_loader = "${base_libdir}/ld64.so.2" elif targetarch == "powerpc64": dynamic_loader = "${base_libdir}/ld64.so.1" elif targetarch == "x86_64": @@ -52,6 +54,8 @@ def get_glibc_loader(d): dynamic_loader = "${base_libdir}/ld-linux-aarch64${ARMPKGSFX_ENDIAN_64}.so.1" elif targetarch.startswith("riscv64"): dynamic_loader = "${base_libdir}/ld-linux-riscv64-lp64${@['d', ''][d.getVar('TARGET_FPU') == 'soft']}.so.1" + elif targetarch.startswith("riscv32"): + dynamic_loader = "${base_libdir}/ld-linux-riscv32-ilp32${@['d', ''][d.getVar('TARGET_FPU') == 'soft']}.so.1" return dynamic_loader def get_linuxloader(d): diff --git a/poky/meta/classes/meson-routines.bbclass b/poky/meta/classes/meson-routines.bbclass new file mode 100644 index 000000000..be3aeedeb --- /dev/null +++ b/poky/meta/classes/meson-routines.bbclass @@ -0,0 +1,51 @@ +inherit siteinfo + +def meson_array(var, d): + items = d.getVar(var).split() + return repr(items[0] if len(items) == 1 else items) + +# Map our ARCH values to what Meson expects: +# http://mesonbuild.com/Reference-tables.html#cpu-families +def meson_cpu_family(var, d): + import re + arch = d.getVar(var) + if arch == 'powerpc': + return 'ppc' + elif arch == 'powerpc64' or arch == 'powerpc64le': + return 'ppc64' + elif arch == 'armeb': + return 'arm' + elif arch == 'aarch64_be': + return 'aarch64' + elif arch == 'mipsel': + return 'mips' + elif arch == 'mips64el': + return 'mips64' + elif re.match(r"i[3-6]86", arch): + return "x86" + elif arch == "microblazeel": + return "microblaze" + else: + return arch + +# Map our OS values to what Meson expects: +# https://mesonbuild.com/Reference-tables.html#operating-system-names +def meson_operating_system(var, d): + os = d.getVar(var) + if "mingw" in os: + return "windows" + # avoid e.g 'linux-gnueabi' + elif "linux" in os: + return "linux" + else: + return os + +def meson_endian(prefix, d): + arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS") + sitedata = siteinfo_data_for_machine(arch, os, d) + if "endian-little" in sitedata: + return "little" + elif "endian-big" in sitedata: + return "big" + else: + bb.fatal("Cannot determine endianism for %s-%s" % (arch, os)) diff --git a/poky/meta/classes/meson.bbclass b/poky/meta/classes/meson.bbclass index bf9b02e06..8ae0285f7 100644 --- a/poky/meta/classes/meson.bbclass +++ b/poky/meta/classes/meson.bbclass @@ -1,4 +1,4 @@ -inherit siteinfo python3native +inherit python3native meson-routines DEPENDS_append = " meson-native ninja-native" @@ -35,56 +35,6 @@ MESON_CROSS_FILE = "" MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross" MESON_CROSS_FILE_class-nativesdk = "--cross-file ${WORKDIR}/meson.cross" -def meson_array(var, d): - items = d.getVar(var).split() - return repr(items[0] if len(items) == 1 else items) - -# Map our ARCH values to what Meson expects: -# http://mesonbuild.com/Reference-tables.html#cpu-families -def meson_cpu_family(var, d): - import re - arch = d.getVar(var) - if arch == 'powerpc': - return 'ppc' - elif arch == 'powerpc64' or arch == 'powerpc64le': - return 'ppc64' - elif arch == 'armeb': - return 'arm' - elif arch == 'aarch64_be': - return 'aarch64' - elif arch == 'mipsel': - return 'mips' - elif arch == 'mips64el': - return 'mips64' - elif re.match(r"i[3-6]86", arch): - return "x86" - elif arch == "microblazeel": - return "microblaze" - else: - return arch - -# Map our OS values to what Meson expects: -# https://mesonbuild.com/Reference-tables.html#operating-system-names -def meson_operating_system(var, d): - os = d.getVar(var) - if "mingw" in os: - return "windows" - # avoid e.g 'linux-gnueabi' - elif "linux" in os: - return "linux" - else: - return os - -def meson_endian(prefix, d): - arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS") - sitedata = siteinfo_data_for_machine(arch, os, d) - if "endian-little" in sitedata: - return "little" - elif "endian-big" in sitedata: - return "big" - else: - bb.fatal("Cannot determine endianism for %s-%s" % (arch, os)) - addtask write_config before do_configure do_write_config[vardeps] += "CC CXX LD AR NM STRIP READELF CFLAGS CXXFLAGS LDFLAGS" do_write_config() { diff --git a/poky/meta/classes/multilib.bbclass b/poky/meta/classes/multilib.bbclass index 9f726e453..2ef75c0d1 100644 --- a/poky/meta/classes/multilib.bbclass +++ b/poky/meta/classes/multilib.bbclass @@ -105,7 +105,6 @@ python __anonymous () { d.setVar("LINGUAS_INSTALL", "") # FIXME, we need to map this to something, not delete it! d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", "") - bb.build.deltask('do_populate_sdk', d) bb.build.deltask('do_populate_sdk_ext', d) return } diff --git a/poky/meta/classes/native.bbclass b/poky/meta/classes/native.bbclass index a0838e41b..561cc23f6 100644 --- a/poky/meta/classes/native.bbclass +++ b/poky/meta/classes/native.bbclass @@ -119,6 +119,7 @@ python native_virtclass_handler () { pn = e.data.getVar("PN") if not pn.endswith("-native"): return + bpn = e.data.getVar("BPN") # Set features here to prevent appends and distro features backfill # from modifying native distro features @@ -146,7 +147,10 @@ python native_virtclass_handler () { elif "-cross-" in dep: newdeps.append(dep.replace("-cross", "-native")) elif not dep.endswith("-native"): - newdeps.append(dep.replace("-native", "") + "-native") + # Replace ${PN} with ${BPN} in the dependency to make sure + # dependencies on, e.g., ${PN}-foo become ${BPN}-foo-native + # rather than ${BPN}-native-foo-native. + newdeps.append(dep.replace(pn, bpn) + "-native") else: newdeps.append(dep) d.setVar(varname, " ".join(newdeps), parsing=True) @@ -166,7 +170,7 @@ python native_virtclass_handler () { if prov.find(pn) != -1: nprovides.append(prov) elif not prov.endswith("-native"): - nprovides.append(prov.replace(prov, prov + "-native")) + nprovides.append(prov + "-native") else: nprovides.append(prov) e.data.setVar("PROVIDES", ' '.join(nprovides)) diff --git a/poky/meta/classes/npm.bbclass b/poky/meta/classes/npm.bbclass index 55a6985fb..8f8712a02 100644 --- a/poky/meta/classes/npm.bbclass +++ b/poky/meta/classes/npm.bbclass @@ -247,8 +247,10 @@ python npm_do_compile() { # Add node-gyp configuration configs.append(("arch", d.getVar("NPM_ARCH"))) configs.append(("release", "true")) - sysroot = d.getVar("RECIPE_SYSROOT_NATIVE") - nodedir = os.path.join(sysroot, d.getVar("prefix_native").strip("/")) + nodedir = d.getVar("NPM_NODEDIR") + if not nodedir: + sysroot = d.getVar("RECIPE_SYSROOT_NATIVE") + nodedir = os.path.join(sysroot, d.getVar("prefix_native").strip("/")) configs.append(("nodedir", nodedir)) configs.append(("python", d.getVar("PYTHON"))) diff --git a/poky/meta/classes/package.bbclass b/poky/meta/classes/package.bbclass index e3f0a7060..cf30f33f3 100644 --- a/poky/meta/classes/package.bbclass +++ b/poky/meta/classes/package.bbclass @@ -1049,7 +1049,7 @@ python fixup_perms () { # Create path to move directory to, move it, and then setup the symlink bb.utils.mkdirhier(os.path.dirname(target)) #bb.note("Fixup Perms: Rename %s -> %s" % (dir, ptarget)) - os.rename(origin, target) + bb.utils.rename(origin, target) #bb.note("Fixup Perms: Link %s -> %s" % (dir, link)) os.symlink(link, origin) @@ -1967,7 +1967,7 @@ python package_do_shlibs() { for (old, new) in renames: bb.note("Renaming %s to %s" % (old, new)) - os.rename(old, new) + bb.utils.rename(old, new) pkgfiles[pkg].remove(old) shlibs_file = os.path.join(shlibswork_dir, pkg + ".list") diff --git a/poky/meta/classes/package_rpm.bbclass b/poky/meta/classes/package_rpm.bbclass index 84a9a6dd1..86706da84 100644 --- a/poky/meta/classes/package_rpm.bbclass +++ b/poky/meta/classes/package_rpm.bbclass @@ -684,8 +684,8 @@ python do_package_rpm () { cmd = cmd + " --define '_use_internal_dependency_generator 0'" cmd = cmd + " --define '_binaries_in_noarch_packages_terminate_build 0'" cmd = cmd + " --define '_build_id_links none'" - cmd = cmd + " --define '_binary_payload w6T.xzdio'" - cmd = cmd + " --define '_source_payload w6T.xzdio'" + cmd = cmd + " --define '_binary_payload w6T%d.xzdio'" % int(d.getVar("XZ_THREADS")) + cmd = cmd + " --define '_source_payload w6T%d.xzdio'" % int(d.getVar("XZ_THREADS")) cmd = cmd + " --define 'clamp_mtime_to_source_date_epoch 1'" cmd = cmd + " --define 'use_source_date_epoch_as_buildtime 1'" cmd = cmd + " --define '_buildhost reproducible'" diff --git a/poky/meta/classes/populate_sdk_base.bbclass b/poky/meta/classes/populate_sdk_base.bbclass index 33ba3fc3c..f8072a9d3 100644 --- a/poky/meta/classes/populate_sdk_base.bbclass +++ b/poky/meta/classes/populate_sdk_base.bbclass @@ -66,7 +66,7 @@ python () { SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross" -PATH_prepend = "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:" +PATH_prepend = "${WORKDIR}/recipe-sysroot/${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:" SDK_DEPENDS += "nativesdk-glibc-locale" # We want the MULTIARCH_TARGET_SYS to point to the TUNE_PKGARCH, not PACKAGE_ARCH as it diff --git a/poky/meta/classes/populate_sdk_ext.bbclass b/poky/meta/classes/populate_sdk_ext.bbclass index 84232ed9f..517b4e45f 100644 --- a/poky/meta/classes/populate_sdk_ext.bbclass +++ b/poky/meta/classes/populate_sdk_ext.bbclass @@ -165,7 +165,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath): shutil.rmtree(temp_sdkbasepath) except FileNotFoundError: pass - os.rename(sdkbasepath, temp_sdkbasepath) + bb.utils.rename(sdkbasepath, temp_sdkbasepath) cmdprefix = '. %s .; ' % conf_initpath logfile = d.getVar('WORKDIR') + '/tasklist_bb_log.txt' try: @@ -175,7 +175,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath): if 'attempted to execute unexpectedly and should have been setscened' in e.stdout: msg += '\n----------\n\nNOTE: "attempted to execute unexpectedly and should have been setscened" errors indicate this may be caused by missing sstate artifacts that were likely produced in earlier builds, but have been subsequently deleted for some reason.\n' bb.fatal(msg) - os.rename(temp_sdkbasepath, sdkbasepath) + bb.utils.rename(temp_sdkbasepath, sdkbasepath) # Clean out residue of running bitbake, which check_sstate_task_list() # will effectively do clean_esdk_builddir(d, sdkbasepath) @@ -397,6 +397,14 @@ python copy_buildsystem () { f.write('require conf/locked-sigs.inc\n') f.write('require conf/unlocked-sigs.inc\n') + # Copy multiple configurations if they exist in the users config directory + if d.getVar('BBMULTICONFIG') is not None: + bb.utils.mkdirhier(os.path.join(baseoutpath, 'conf', 'multiconfig')) + for mc in d.getVar('BBMULTICONFIG').split(): + dest_stub = "/conf/multiconfig/%s.conf" % (mc,) + if os.path.exists(builddir + dest_stub): + shutil.copyfile(builddir + dest_stub, baseoutpath + dest_stub) + if os.path.exists(builddir + '/cache/bb_unihashes.dat'): bb.parse.siggen.save_unitaskhashes() bb.utils.mkdirhier(os.path.join(baseoutpath, 'cache')) @@ -556,6 +564,9 @@ python copy_buildsystem () { # sdk_ext_postinst() below) thus the checksum we take here would always # be different. manifest_file_list = ['conf/*'] + if d.getVar('BBMULTICONFIG') is not None: + manifest_file_list.append('conf/multiconfig/*') + esdk_manifest_excludes = (d.getVar('ESDK_MANIFEST_EXCLUDES') or '').split() esdk_manifest_excludes_list = [] for exclude_item in esdk_manifest_excludes: @@ -564,7 +575,7 @@ python copy_buildsystem () { with open(manifest_file, 'w') as f: for item in manifest_file_list: for fn in glob.glob(os.path.join(baseoutpath, item)): - if fn == manifest_file: + if fn == manifest_file or os.path.isdir(fn): continue if fn in esdk_manifest_excludes_list: continue diff --git a/poky/meta/classes/ptest.bbclass b/poky/meta/classes/ptest.bbclass index 47611edea..466916299 100644 --- a/poky/meta/classes/ptest.bbclass +++ b/poky/meta/classes/ptest.bbclass @@ -20,6 +20,8 @@ RRECOMMENDS_${PN}-ptest += "ptest-runner" PACKAGES =+ "${@bb.utils.contains('PTEST_ENABLED', '1', '${PN}-ptest', '', d)}" +require conf/distro/include/ptest-packagelists.inc + do_configure_ptest() { : } @@ -116,4 +118,13 @@ python () { if not(d.getVar('PTEST_ENABLED') == "1"): for i in ['do_configure_ptest_base', 'do_compile_ptest_base', 'do_install_ptest_base']: bb.build.deltask(i, d) + + # This checks that ptest package is actually included + # in standard oe-core ptest images - only for oe-core recipes + if not 'meta/recipes' in d.getVar('FILE') or not(d.getVar('PTEST_ENABLED') == "1"): + return + + enabled_ptests = " ".join([d.getVar('PTESTS_FAST'),d.getVar('PTESTS_SLOW'), d.getVar('PTESTS_PROBLEMS')]).split() + if (d.getVar('PN') + "-ptest").replace(d.getVar('MLPREFIX'), '') not in enabled_ptests: + bb.error("Recipe %s supports ptests but is not included in oe-core's conf/distro/include/ptest-packagelists.inc" % d.getVar("PN")) } diff --git a/poky/meta/classes/qemuboot.bbclass b/poky/meta/classes/qemuboot.bbclass index 1f8012edc..2b50ddaa2 100644 --- a/poky/meta/classes/qemuboot.bbclass +++ b/poky/meta/classes/qemuboot.bbclass @@ -19,6 +19,9 @@ # QB_CPU_KVM: the similar to QB_CPU, but used when kvm, e.g., '-cpu kvm64', # set it when support kvm. # +# QB_SMP: amount of CPU cores inside qemu guest, each mapped to a thread on the host, +# e.g. "-smp 8". +# # QB_KERNEL_CMDLINE_APPEND: options to append to kernel's -append # option, e.g., "console=ttyS0 console=tty" # @@ -80,6 +83,7 @@ # See "runqemu help" for more info QB_MEM ?= "-m 256" +QB_SMP ?= "" QB_SERIAL_OPT ?= "-serial mon:stdio -serial null" QB_DEFAULT_KERNEL ?= "${KERNEL_IMAGETYPE}" QB_DEFAULT_FSTYPE ?= "ext4" diff --git a/poky/meta/classes/reproducible_build.bbclass b/poky/meta/classes/reproducible_build.bbclass index f06e00d70..278eeedc7 100644 --- a/poky/meta/classes/reproducible_build.bbclass +++ b/poky/meta/classes/reproducible_build.bbclass @@ -41,6 +41,9 @@ SDE_DIR = "${WORKDIR}/source-date-epoch" SDE_FILE = "${SDE_DIR}/__source_date_epoch.txt" SDE_DEPLOYDIR = "${WORKDIR}/deploy-source-date-epoch" +# Enable compiler warning when the __TIME__, __DATE__ and __TIMESTAMP__ macros are used. +TARGET_CC_ARCH_append_class-target = " -Wdate-time" + # A SOURCE_DATE_EPOCH of '0' might be misinterpreted as no SDE export SOURCE_DATE_EPOCH_FALLBACK ??= "1302044400" @@ -63,7 +66,7 @@ python do_deploy_source_date_epoch_setscene () { if os.path.exists(sde_file): target = d.getVar('SDE_FILE') bb.debug(1, "Moving setscene SDE file %s -> %s" % (sde_file, target)) - os.rename(sde_file, target) + bb.utils.rename(sde_file, target) else: bb.debug(1, "%s not found!" % sde_file) } @@ -77,17 +80,16 @@ python create_source_date_epoch_stamp() { import oe.reproducible epochfile = d.getVar('SDE_FILE') - # If it exists we need to regenerate as the sources may have changed - if os.path.isfile(epochfile): - bb.debug(1, "Deleting existing SOURCE_DATE_EPOCH from: %s" % epochfile) - os.remove(epochfile) + tmp_file = "%s.new" % epochfile source_date_epoch = oe.reproducible.get_source_date_epoch(d, d.getVar('S')) bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch) bb.utils.mkdirhier(d.getVar('SDE_DIR')) - with open(epochfile, 'w') as f: + with open(tmp_file, 'w') as f: f.write(str(source_date_epoch)) + + os.rename(tmp_file, epochfile) } def get_source_date_epoch_value(d): @@ -97,7 +99,7 @@ def get_source_date_epoch_value(d): epochfile = d.getVar('SDE_FILE') source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK')) - if os.path.isfile(epochfile): + try: with open(epochfile, 'r') as f: s = f.read() try: @@ -110,7 +112,7 @@ def get_source_date_epoch_value(d): bb.warn("SOURCE_DATE_EPOCH value '%s' is invalid. Reverting to SOURCE_DATE_EPOCH_FALLBACK" % s) source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK')) bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch) - else: + except FileNotFoundError: bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch)) d.setVar('__CACHED_SOURCE_DATE_EPOCH', str(source_date_epoch)) diff --git a/poky/meta/classes/sanity.bbclass b/poky/meta/classes/sanity.bbclass index 894f0e310..e907a3566 100644 --- a/poky/meta/classes/sanity.bbclass +++ b/poky/meta/classes/sanity.bbclass @@ -392,9 +392,12 @@ def check_connectivity(d): msg = data.getVar('CONNECTIVITY_CHECK_MSG') or "" if len(msg) == 0: msg = "%s.\n" % err - msg += " Please ensure your host's network is configured correctly,\n" - msg += " or set BB_NO_NETWORK = \"1\" to disable network access if\n" - msg += " all required sources are on local disk.\n" + msg += " Please ensure your host's network is configured correctly.\n" + msg += " If your ISP or network is blocking the above URL,\n" + msg += " try with another domain name, for example by setting:\n" + msg += " CONNECTIVITY_CHECK_URIS = \"https://www.yoctoproject.org/\"" + msg += " You could also set BB_NO_NETWORK = \"1\" to disable network\n" + msg += " access if all required sources are on local disk.\n" retval = msg return retval @@ -882,13 +885,18 @@ def check_sanity_everybuild(status, d): except: pass - oeroot = d.getVar('COREBASE') - if oeroot.find('+') != -1: - status.addresult("Error, you have an invalid character (+) in your COREBASE directory path. Please move the installation to a directory which doesn't include any + characters.") - if oeroot.find('@') != -1: - status.addresult("Error, you have an invalid character (@) in your COREBASE directory path. Please move the installation to a directory which doesn't include any @ characters.") - if oeroot.find(' ') != -1: - status.addresult("Error, you have a space in your COREBASE directory path. Please move the installation to a directory which doesn't include a space since autotools doesn't support this.") + for checkdir in ['COREBASE', 'TMPDIR']: + val = d.getVar(checkdir) + if val.find('..') != -1: + status.addresult("Error, you have '..' in your %s directory path. Please ensure the variable contains an absolute path as this can break some recipe builds in obtuse ways." % checkdir) + if val.find('+') != -1: + status.addresult("Error, you have an invalid character (+) in your %s directory path. Please move the installation to a directory which doesn't include any + characters." % checkdir) + if val.find('@') != -1: + status.addresult("Error, you have an invalid character (@) in your %s directory path. Please move the installation to a directory which doesn't include any @ characters." % checkdir) + if val.find(' ') != -1: + status.addresult("Error, you have a space in your %s directory path. Please move the installation to a directory which doesn't include a space since autotools doesn't support this." % checkdir) + if val.find('%') != -1: + status.addresult("Error, you have an invalid character (%) in your %s directory path which causes problems with python string formatting. Please move the installation to a directory which doesn't include any % characters." % checkdir) # Check the format of MIRRORS, PREMIRRORS and SSTATE_MIRRORS import re diff --git a/poky/meta/classes/sstate.bbclass b/poky/meta/classes/sstate.bbclass index 8e8efd18d..3a3f7cc24 100644 --- a/poky/meta/classes/sstate.bbclass +++ b/poky/meta/classes/sstate.bbclass @@ -319,6 +319,8 @@ def sstate_install(ss, d): if os.path.exists(i): with open(i, "r") as f: manifests = f.readlines() + # We append new entries, we don't remove older entries which may have the same + # manifest name but different versions from stamp/workdir. See below. if filedata not in manifests: with open(i, "a+") as f: f.write(filedata) @@ -401,7 +403,7 @@ def sstate_installpkgdir(ss, d): for state in ss['dirs']: prepdir(state[1]) - os.rename(sstateinst + state[0], state[1]) + bb.utils.rename(sstateinst + state[0], state[1]) sstate_install(ss, d) for plain in ss['plaindirs']: @@ -413,7 +415,7 @@ def sstate_installpkgdir(ss, d): dest = plain bb.utils.mkdirhier(src) prepdir(dest) - os.rename(src, dest) + bb.utils.rename(src, dest) return True @@ -664,7 +666,7 @@ def sstate_package(ss, d): continue bb.error("sstate found an absolute path symlink %s pointing at %s. Please replace this with a relative link." % (srcpath, link)) bb.debug(2, "Preparing tree %s for packaging at %s" % (state[1], sstatebuild + state[0])) - os.rename(state[1], sstatebuild + state[0]) + bb.utils.rename(state[1], sstatebuild + state[0]) workdir = d.getVar('WORKDIR') sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared") @@ -674,7 +676,7 @@ def sstate_package(ss, d): pdir = plain.replace(sharedworkdir, sstatebuild) bb.utils.mkdirhier(plain) bb.utils.mkdirhier(pdir) - os.rename(plain, pdir) + bb.utils.rename(plain, pdir) d.setVar('SSTATE_BUILDDIR', sstatebuild) d.setVar('SSTATE_INSTDIR', sstatebuild) @@ -704,6 +706,8 @@ def sstate_package(ss, d): return +sstate_package[vardepsexclude] += "SSTATE_SIG_KEY" + def pstaging_fetch(sstatefetch, d): import bb.fetch2 @@ -1183,11 +1187,21 @@ python sstate_eventhandler_reachablestamps() { i = d.expand("${SSTATE_MANIFESTS}/index-" + a) if not os.path.exists(i): continue + manseen = set() + ignore = [] with open(i, "r") as f: lines = f.readlines() - for l in lines: + for l in reversed(lines): try: (stamp, manifest, workdir) = l.split() + # The index may have multiple entries for the same manifest as the code above only appends + # new entries and there may be an entry with matching manifest but differing version in stamp/workdir. + # The last entry in the list is the valid one, any earlier entries with matching manifests + # should be ignored. + if manifest in manseen: + ignore.append(l) + continue + manseen.add(manifest) if stamp not in stamps and stamp not in preservestamps and stamp in machineindex: toremove.append(l) if stamp not in seen: @@ -1218,6 +1232,8 @@ python sstate_eventhandler_reachablestamps() { with open(i, "w") as f: for l in lines: + if l in ignore: + continue f.write(l) machineindex |= set(stamps) with open(mi, "w") as f: diff --git a/poky/meta/classes/testimage.bbclass b/poky/meta/classes/testimage.bbclass index e61375950..43de9d4d7 100644 --- a/poky/meta/classes/testimage.bbclass +++ b/poky/meta/classes/testimage.bbclass @@ -127,6 +127,11 @@ testimage_dump_host () { netstat -an } +testimage_dump_monitor () { + query-status + query-block +} + python do_testimage() { testimage_main(d) } @@ -320,6 +325,7 @@ def testimage_main(d): target_kwargs['powercontrol_extra_args'] = d.getVar("TEST_POWERCONTROL_EXTRA_ARGS") or "" target_kwargs['serialcontrol_cmd'] = d.getVar("TEST_SERIALCONTROL_CMD") or None target_kwargs['serialcontrol_extra_args'] = d.getVar("TEST_SERIALCONTROL_EXTRA_ARGS") or "" + target_kwargs['testimage_dump_monitor'] = d.getVar("testimage_dump_monitor") or "" target_kwargs['testimage_dump_target'] = d.getVar("testimage_dump_target") or "" def export_ssh_agent(d): diff --git a/poky/meta/classes/uboot-config.bbclass b/poky/meta/classes/uboot-config.bbclass index 3bba02828..451db0c65 100644 --- a/poky/meta/classes/uboot-config.bbclass +++ b/poky/meta/classes/uboot-config.bbclass @@ -71,6 +71,10 @@ UBOOT_MKIMAGE_SIGN ?= "${UBOOT_MKIMAGE}" UBOOT_MKIMAGE_SIGN_ARGS ?= "" SPL_MKIMAGE_SIGN_ARGS ?= "" +# Options to deploy the u-boot device tree +UBOOT_DTB ?= "" +UBOOT_DTB_BINARY ??= "" + python () { ubootmachine = d.getVar("UBOOT_MACHINE") ubootconfigflags = d.getVarFlags('UBOOT_CONFIG') diff --git a/poky/meta/classes/uboot-sign.bbclass b/poky/meta/classes/uboot-sign.bbclass index d11882f90..9671cf76a 100644 --- a/poky/meta/classes/uboot-sign.bbclass +++ b/poky/meta/classes/uboot-sign.bbclass @@ -196,10 +196,9 @@ concat_spl_dtb() { # signing, and kernel will deploy UBOOT_DTB_BINARY after signs it. install_helper() { if [ -f "${UBOOT_DTB_BINARY}" ]; then - install -d ${D}${datadir} # UBOOT_DTB_BINARY is a symlink to UBOOT_DTB_IMAGE, so we # need both of them. - install ${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE} + install -Dm 0644 ${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE} ln -sf ${UBOOT_DTB_IMAGE} ${D}${datadir}/${UBOOT_DTB_BINARY} else bbwarn "${UBOOT_DTB_BINARY} not found" @@ -209,14 +208,13 @@ install_helper() { # Install SPL dtb and u-boot nodtb to datadir, install_spl_helper() { if [ -f "${SPL_DIR}/${SPL_DTB_BINARY}" ]; then - install -d ${D}${datadir} - install ${SPL_DIR}/${SPL_DTB_BINARY} ${D}${datadir}/${SPL_DTB_IMAGE} + install -Dm 0644 ${SPL_DIR}/${SPL_DTB_BINARY} ${D}${datadir}/${SPL_DTB_IMAGE} ln -sf ${SPL_DTB_IMAGE} ${D}${datadir}/${SPL_DTB_BINARY} else bbwarn "${SPL_DTB_BINARY} not found" fi if [ -f "${UBOOT_NODTB_BINARY}" ] ; then - install ${UBOOT_NODTB_BINARY} ${D}${datadir}/${UBOOT_NODTB_IMAGE} + install -Dm 0644 ${UBOOT_NODTB_BINARY} ${D}${datadir}/${UBOOT_NODTB_IMAGE} ln -sf ${UBOOT_NODTB_IMAGE} ${D}${datadir}/${UBOOT_NODTB_BINARY} else bbwarn "${UBOOT_NODTB_BINARY} not found" @@ -255,32 +253,7 @@ do_install_append() { fi } -do_generate_rsa_keys() { - if [ "${UBOOT_SIGN_ENABLE}" = "0" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then - bbwarn "FIT_GENERATE_KEYS is set to 1 even though UBOOT_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used." - fi - - if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then - - # Generate keys only if they don't already exist - if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key ] || \ - [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt ]; then - - # make directory if it does not already exist - mkdir -p "${UBOOT_SIGN_KEYDIR}" - - echo "Generating RSA private key for signing fitImage" - openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \ - "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ - "${FIT_SIGN_NUMBITS}" - - echo "Generating certificate for signing fitImage" - openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \ - -key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \ - -out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt - fi - fi - +do_uboot_generate_rsa_keys() { if [ "${SPL_SIGN_ENABLE}" = "0" ] && [ "${UBOOT_FIT_GENERATE_KEYS}" = "1" ]; then bbwarn "UBOOT_FIT_GENERATE_KEYS is set to 1 eventhough SPL_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used." fi @@ -308,7 +281,7 @@ do_generate_rsa_keys() { } -addtask generate_rsa_keys before do_uboot_assemble_fitimage after do_compile +addtask uboot_generate_rsa_keys before do_uboot_assemble_fitimage after do_compile # Create a ITS file for the U-boot FIT, for use when # we want to sign it so that the SPL can verify it diff --git a/poky/meta/classes/update-alternatives.bbclass b/poky/meta/classes/update-alternatives.bbclass index 8c2b66e7f..000e4d566 100644 --- a/poky/meta/classes/update-alternatives.bbclass +++ b/poky/meta/classes/update-alternatives.bbclass @@ -184,7 +184,7 @@ python apply_update_alternative_renames () { link_rename.append((alt_target, alt_target_rename)) else: bb.note('%s: Rename %s -> %s' % (pn, alt_target, alt_target_rename)) - os.rename(src, dest) + bb.utils.rename(src, dest) update_files(alt_target, alt_target_rename, pkg, d) else: bb.warn("%s: alternative target (%s or %s) does not exist, skipping..." % (pn, alt_target, alt_target_rename)) @@ -201,7 +201,7 @@ python apply_update_alternative_renames () { if os.path.lexists(link_target): # Ok, the link_target exists, we can rename bb.note('%s: Rename (link) %s -> %s' % (pn, alt_target, alt_target_rename)) - os.rename(src, dest) + bb.utils.rename(src, dest) else: # Try to resolve the broken link to link.${BPN} link_maybe = '%s.%s' % (os.readlink(src), pn) diff --git a/poky/meta/conf/bitbake.conf b/poky/meta/conf/bitbake.conf index 385fc7dd5..160abf40e 100644 --- a/poky/meta/conf/bitbake.conf +++ b/poky/meta/conf/bitbake.conf @@ -173,25 +173,25 @@ DATETIME = "${DATE}${TIME}" # python-native should be here but python relies on building # its own in staging ASSUME_PROVIDED = "\ + bash-native \ bzip2-native \ chrpath-native \ + diffstat-native \ file-native \ findutils-native \ gawk-native \ git-native \ grep-native \ - diffstat-native \ - patch-native \ - libgcc-native \ hostperl-runtime-native \ hostpython-runtime-native \ + libgcc-native \ + patch-native \ + sed-native \ tar-native \ - virtual/libintl-native \ - virtual/libiconv-native \ - virtual/crypt-native \ texinfo-native \ - bash-native \ - sed-native \ + virtual/crypt-native \ + virtual/libiconv-native \ + virtual/libintl-native \ wget-native \ " # gzip-native should be listed above? @@ -527,7 +527,7 @@ export STRIP = "${HOST_PREFIX}strip" export OBJCOPY = "${HOST_PREFIX}objcopy" export OBJDUMP = "${HOST_PREFIX}objdump" export STRINGS = "${HOST_PREFIX}strings" -export NM = "${HOST_PREFIX}nm" +export NM = "${HOST_PREFIX}gcc-nm" export READELF = "${HOST_PREFIX}readelf" PYTHON = "${@sys.executable}" @@ -635,6 +635,7 @@ BBLAYERS_FETCH_DIR ??= "${COREBASE}" ################################################################## APACHE_MIRROR = "https://archive.apache.org/dist" +CPAN_MIRROR = "https://search.cpan.org/CPAN" DEBIAN_MIRROR = "http://ftp.debian.org/debian/pool" GENTOO_MIRROR = "http://distfiles.gentoo.org/distfiles" GNOME_GIT = "git://gitlab.gnome.org/GNOME" @@ -643,12 +644,12 @@ GNU_MIRROR = "https://ftp.gnu.org/gnu" GNUPG_MIRROR = "https://www.gnupg.org/ftp/gcrypt" GPE_MIRROR = "http://gpe.linuxtogo.org/download/source" KERNELORG_MIRROR = "https://cdn.kernel.org/pub" +SAMBA_MIRROR = "http://samba.org/samba/ftp" +SAVANNAH_GNU_MIRROR = "https://download.savannah.gnu.org/releases" +SAVANNAH_NONGNU_MIRROR = "https://download.savannah.nongnu.org/releases" SOURCEFORGE_MIRROR = "https://downloads.sourceforge.net" XLIBS_MIRROR = "https://xlibs.freedesktop.org/release" XORG_MIRROR = "https://www.x.org/releases/" -SAVANNAH_GNU_MIRROR = "https://download.savannah.gnu.org/releases" -SAVANNAH_NONGNU_MIRROR = "https://download.savannah.nongnu.org/releases" -CPAN_MIRROR = "https://search.cpan.org/CPAN" SRC_URI[vardepsexclude] += "\ APACHE_MIRROR \ @@ -661,6 +662,7 @@ SRC_URI[vardepsexclude] += "\ GNUPG_MIRROR \ GPE_MIRROR \ KERNELORG_MIRROR \ + SAMBA_MIRROR \ SAVANNAH_GNU_MIRROR \ SAVANNAH_NONGNU_MIRROR \ SOURCEFORGE_MIRROR \ @@ -843,8 +845,8 @@ DISTRO_FEATURES_NATIVESDK ?= "x11" # Normally target distro features will not be applied to native builds: # Native distro features on this list will use the target feature value -DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation opengl" -DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation opengl" +DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation debuginfod opengl" +DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation debuginfod opengl" DISTRO_FEATURES_BACKFILL = "pulseaudio sysvinit gobject-introspection-data ldconfig" MACHINE_FEATURES_BACKFILL = "rtc qemu-usermode" diff --git a/poky/meta/conf/distro/include/cve-extra-exclusions.inc b/poky/meta/conf/distro/include/cve-extra-exclusions.inc new file mode 100644 index 000000000..cf07acce1 --- /dev/null +++ b/poky/meta/conf/distro/include/cve-extra-exclusions.inc @@ -0,0 +1,73 @@ +# This file contains a list of CVE's where resolution has proven to be impractical +# or there is no reasonable action the Yocto Project can take to resolve the issue. +# It contains all the information we are aware of about an issue and analysis about +# why we believe it can't be fixed/handled. Additional information is welcome through +# patches to the file. +# +# Include this file in your local.conf or distro.conf to exclude these CVE's +# from the cve-check results or add to the bitbake command with: +# -R conf/distro/include/cve-extra-exclusions.inc +# +# The file is not included by default since users should review this data to ensure +# it matches their expectations and usage of the project. +# +# We may also include "in-flight" information about current/ongoing CVE work with +# the aim of sharing that work and ensuring we don't duplicate it. +# + + +# strace https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2000-0006 +# CVE is more than 20 years old with no resolution evident +# broken links in CVE database references make resolution impractical +CVE_CHECK_WHITELIST += "CVE-2000-0006" + +# epiphany https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-0238 +# The issue here is spoofing of domain names using characters from other character sets. +# There has been much discussion amongst the epiphany and webkit developers and +# whilst there are improvements about how domains are handled and displayed to the user +# there is unlikely ever to be a single fix to webkit or epiphany which addresses this +# problem. Whitelisted as there isn't any mitigation or fix or way to progress this further +# we can seem to take. +CVE_CHECK_WHITELIST += "CVE-2005-0238" + +# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4756 +# Issue is memory exhaustion via glob() calls, e.g. from within an ftp server +# Best discussion in https://bugzilla.redhat.com/show_bug.cgi?id=681681 +# Upstream don't see it as a security issue, ftp servers shouldn't be passing +# this to libc glob. Exclude as upstream have no plans to add BSD's GLOB_LIMIT or similar +CVE_CHECK_WHITELIST += "CVE-2010-4756" + +# go https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-29509 +# go https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-29511 +# The encoding/xml package in go can potentially be used for security exploits if not used correctly +# CVE applies to a netapp product as well as flagging a general issue. We don't ship anything +# exposing this interface in an exploitable way +CVE_CHECK_WHITELIST += "CVE-2020-29509 CVE-2020-29511" + + + +#### CPE update pending #### + +# groff:groff-native https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2000-0803 +# Appears it was fixed in https://git.savannah.gnu.org/cgit/groff.git/commit/?id=07f95f1674217275ed4612f1dcaa95a88435c6a7 +# so from 1.17 onwards. Reported to the database for update by RP 2021/5/9. Update accepted 2021/5/10. +#CVE_CHECK_WHITELIST += "CVE-2000-0803" + + + +#### Upstream still working on #### + +# qemu:qemu-native:qemu-system-native https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-20255 +# There was a proposed patch https://lists.gnu.org/archive/html/qemu-devel/2021-02/msg06098.html +# however qemu maintainers are sure the patch is incorrect and should not be applied. + +# flex:flex-native https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-6293 +# Upstream bug, still open: https://github.com/westes/flex/issues/414 +# Causes memory exhaustion so potential DoS but no buffer overflow, low priority + +# wget https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-31879 +# https://mail.gnu.org/archive/html/bug-wget/2021-02/msg00002.html +# No response upstream as of 2021/5/12 + + + diff --git a/poky/meta/conf/distro/include/default-distrovars.inc b/poky/meta/conf/distro/include/default-distrovars.inc index 433d4b665..ac1024576 100644 --- a/poky/meta/conf/distro/include/default-distrovars.inc +++ b/poky/meta/conf/distro/include/default-distrovars.inc @@ -10,7 +10,10 @@ LOCALE_UTF8_ONLY ?= "0" LOCALE_UTF8_IS_DEFAULT ?= "1" LOCALE_UTF8_IS_DEFAULT_class-nativesdk = "0" -DISTRO_FEATURES_DEFAULT ?= "acl alsa argp bluetooth ext2 ipv4 ipv6 largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 vfat" +# seccomp is not yet ported to rv32 +DISTRO_FEATURES_DEFAULT_remove_riscv32 = "seccomp" + +DISTRO_FEATURES_DEFAULT ?= "acl alsa argp bluetooth debuginfod ext2 ipv4 ipv6 largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 vfat seccomp" DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT}" IMAGE_FEATURES ?= "" diff --git a/poky/meta/conf/distro/include/distro_alias.inc b/poky/meta/conf/distro/include/distro_alias.inc index b4dfcfc5f..001d26934 100644 --- a/poky/meta/conf/distro/include/distro_alias.inc +++ b/poky/meta/conf/distro/include/distro_alias.inc @@ -26,21 +26,11 @@ DISTRO_PN_ALIAS_pn-builder = "OE-Core" DISTRO_PN_ALIAS_pn-buildtools-tarball = "OE-Core" DISTRO_PN_ALIAS_pn-cdrtools = "OpenSUSE=cdrtools OSPDT" DISTRO_PN_ALIAS_pn-chkconfig-alternatives = "Mandriva=chkconfig Debian=chkconfig" -DISTRO_PN_ALIAS_pn-clutter = "Fedora=clutter OpenSuse=clutter Ubuntu=clutter-1.0 Mandriva=clutter Debian=clutter" -DISTRO_PN_ALIAS_pn-clutter-1.8 = "Fedora=clutter OpenSuse=clutter Ubuntu=clutter-1.0 Mandriva=clutter Debian=clutter" -DISTRO_PN_ALIAS_pn-clutter-gst-1.0 = "Debian=clutter-gst Ubuntu=clutter-gst Fedora=clutter-gst" -DISTRO_PN_ALIAS_pn-clutter-gst-1.8 = "Fedora=clutter-gst Debian=libclutter-gst" -DISTRO_PN_ALIAS_pn-clutter-gst-3.0 = "Ubuntu=libclutter-gst Debian=libclutter-gst" -DISTRO_PN_ALIAS_pn-clutter-gtk-1.0 = "Debian=clutter-gtk Ubuntu=clutter-gtk Fedora=clutter-gtk" -DISTRO_PN_ALIAS_pn-clutter-gtk-1.8 = "Fedora=clutter-gtk OpenSuSE=clutter-gtk Ubuntu=clutter-gtk-0.10 Mandriva=clutter-gtk Debian=clutter-gtk" -DISTRO_PN_ALIAS_pn-cogl-1.0 = "Debian=cogl Ubuntu=cogl Fedora=cogl" -DISTRO_PN_ALIAS_pn-cogl = "Fedora=cogl OpenSuse=cogl Ubuntu=cogl Mandriva=cogl Debian=cogl" DISTRO_PN_ALIAS_pn-connman = "Meego=connman" DISTRO_PN_ALIAS_pn-connman-conf = "OE-Core" DISTRO_PN_ALIAS_pn-connman-gnome = "Intel" DISTRO_PN_ALIAS_pn-console-tools = "Debian=console-tools Ubuntu=console-tools" DISTRO_PN_ALIAS_pn-core-image-base = "OE-Core" -DISTRO_PN_ALIAS_pn-core-image-clutter = "OE-Core" DISTRO_PN_ALIAS_pn-core-image-full-cmdline = "OE-Core" DISTRO_PN_ALIAS_pn-core-image-kernel-dev = "OE-Core" DISTRO_PN_ALIAS_pn-core-image-minimal = "OE-Core" @@ -248,7 +238,6 @@ DISTRO_PN_ALIAS_pn-packagegroup-base = "OE-Core" DISTRO_PN_ALIAS_pn-packagegroup-core = "OE-Core" DISTRO_PN_ALIAS_pn-packagegroup-core-boot = "OE-Core" DISTRO_PN_ALIAS_pn-packagegroup-core-buildessential = "OE-Core" -DISTRO_PN_ALIAS_pn-packagegroup-core-clutter = "OE-Core" DISTRO_PN_ALIAS_pn-packagegroup-core-device-devel = "OE-Core" DISTRO_PN_ALIAS_pn-packagegroup-core-eclipse-debug = "OE-Core" DISTRO_PN_ALIAS_pn-packagegroup-core-full-cmdline = "OE-Core" diff --git a/poky/meta/conf/distro/include/maintainers.inc b/poky/meta/conf/distro/include/maintainers.inc index 627633185..e59f01d66 100644 --- a/poky/meta/conf/distro/include/maintainers.inc +++ b/poky/meta/conf/distro/include/maintainers.inc @@ -48,9 +48,9 @@ RECIPE_MAINTAINER_pn-asciidoc = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-aspell = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-assimp = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-at = "Chen Qi <Qi.Chen@windriver.com>" -RECIPE_MAINTAINER_pn-at-spi2-atk = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-at-spi2-core = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-atk = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-at-spi2-atk = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-at-spi2-core = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-atk = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-attr = "Chen Qi <Qi.Chen@windriver.com>" RECIPE_MAINTAINER_pn-autoconf = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-autoconf-archive = "Robert Yang <liezhi.yang@windriver.com>" @@ -78,7 +78,7 @@ RECIPE_MAINTAINER_pn-boost = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-boost-build-native = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-bootchart2 = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-bsd-headers = "Khem Raj <raj.khem@gmail.com>" -RECIPE_MAINTAINER_pn-btrfs-tools = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-btrfs-tools = "Wang Mingyu <wangmy@fujitsu.com>" RECIPE_MAINTAINER_pn-build-appliance-image = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-build-sysroots = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-builder = "Richard Purdie <richard.purdie@linuxfoundation.org>" @@ -93,12 +93,8 @@ RECIPE_MAINTAINER_pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.co RECIPE_MAINTAINER_pn-ccache = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-chrpath = "Yi Zhao <yi.zhao@windriver.com>" -RECIPE_MAINTAINER_pn-clutter-1.0 = "Ross Burton <ross.burton@arm.com>" -RECIPE_MAINTAINER_pn-clutter-gst-3.0 = "Ross Burton <ross.burton@arm.com>" -RECIPE_MAINTAINER_pn-clutter-gtk-1.0 = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-cmake = "Pascal Bach <pascal.bach@siemens.com>" RECIPE_MAINTAINER_pn-cmake-native = "Pascal Bach <pascal.bach@siemens.com>" -RECIPE_MAINTAINER_pn-cogl-1.0 = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-connman = "Changhyeok Bae <changhyeok.bae@gmail.com>" RECIPE_MAINTAINER_pn-connman-conf = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-connman-gnome = "Ross Burton <ross.burton@arm.com>" @@ -111,16 +107,16 @@ RECIPE_MAINTAINER_pn-core-image-minimal-mtdutils = "Richard Purdie <richard.purd RECIPE_MAINTAINER_pn-core-image-tiny-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-full-cmdline = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-kernel-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>" +RECIPE_MAINTAINER_pn-core-image-ptest-all = "Richard Purdie <richard.purdie@linuxfoundation.org>" +RECIPE_MAINTAINER_pn-core-image-ptest-fast = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-sato = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-sato-sdk = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-testmaster-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-testmaster = "Richard Purdie <richard.purdie@linuxfoundation.org>" -RECIPE_MAINTAINER_pn-core-image-clutter = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-weston = "Richard Purdie <richard.purdie@linuxfoundation.org>" +RECIPE_MAINTAINER_pn-core-image-weston-sdk = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-x11 = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-core-image-sato-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>" -RECIPE_MAINTAINER_pn-core-image-sato-ptest-fast = "Richard Purdie <richard.purdie@linuxfoundation.org>" -RECIPE_MAINTAINER_pn-core-image-sato-sdk-ptest = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-coreutils = "Chen Qi <Qi.Chen@windriver.com>" RECIPE_MAINTAINER_pn-cpio = "Denys Dmytriyenko <denis@denix.org>" RECIPE_MAINTAINER_pn-cracklib = "Armin Kuster <akuster808@gmail.com>" @@ -157,17 +153,18 @@ RECIPE_MAINTAINER_pn-dos2unix = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-dosfstools = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-dpkg = "Aníbal Limón <limon.anibal@gmail.com>" RECIPE_MAINTAINER_pn-dropbear = "Yi Zhao <yi.zhao@windriver.com>" -RECIPE_MAINTAINER_pn-dtc = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-dtc = "Wang Mingyu <wangmy@fujitsu.com>" RECIPE_MAINTAINER_pn-dwarfsrcfiles = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-e2fsprogs = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-ed = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-efivar = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-efibootmgr = "Ross Burton <ross.burton@arm.com>" -RECIPE_MAINTAINER_pn-elfutils = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" -RECIPE_MAINTAINER_pn-ell = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-elfutils = "Zang Ruochen <zangrc.fnst@fujitsu.com>" +RECIPE_MAINTAINER_pn-ell = "Zang Ruochen <zangrc.fnst@fujitsu.com>" RECIPE_MAINTAINER_pn-enchant2 = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>" +RECIPE_MAINTAINER_pn-erofs-utils = "Richard Weinberger <richard@nod.at>" RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@gmail.com>" RECIPE_MAINTAINER_pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>" @@ -191,7 +188,7 @@ RECIPE_MAINTAINER_pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <r RECIPE_MAINTAINER_pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>" -RECIPE_MAINTAINER_pn-gcc-source-10.2.0 = "Khem Raj <raj.khem@gmail.com>" +RECIPE_MAINTAINER_pn-gcc-source-11.1.0 = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-gconf = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-gdb = "Khem Raj <raj.khem@gmail.com>" @@ -202,6 +199,7 @@ RECIPE_MAINTAINER_pn-gdk-pixbuf = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-gettext = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-gettext-minimal-native = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-ghostscript = "Hongxu Jia <hongxu.jia@windriver.com>" +RECIPE_MAINTAINER_pn-gi-docgen = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-git = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-glew = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-glib-2.0 = "Anuj Mittal <anuj.mittal@intel.com>" @@ -231,6 +229,7 @@ RECIPE_MAINTAINER_pn-gobject-introspection = "Alexander Kanavin <alex.kanavin@gm RECIPE_MAINTAINER_pn-gperf = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-gpgme = "Hongxu Jia <hongxu.jia@windriver.com>" RECIPE_MAINTAINER_pn-gptfdisk = "Alexander Kanavin <alex.kanavin@gmail.com>" +RECIPE_MAINTAINER_pn-gcompat = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-grep = "Denys Dmytriyenko <denis@denix.org>" RECIPE_MAINTAINER_pn-groff = "Hongxu Jia <hongxu.jia@windriver.com>" RECIPE_MAINTAINER_pn-grub = "Anuj Mittal <anuj.mittal@intel.com>" @@ -279,7 +278,7 @@ RECIPE_MAINTAINER_pn-intltool = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-iproute2 = "Changhyeok Bae <changhyeok.bae@gmail.com>" RECIPE_MAINTAINER_pn-iptables = "Changhyeok Bae <changhyeok.bae@gmail.com>" RECIPE_MAINTAINER_pn-iputils = "Changhyeok Bae <changhyeok.bae@gmail.com>" -RECIPE_MAINTAINER_pn-iso-codes = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-iso-codes = "Wang Mingyu <wangmy@cn.ujitsu.com>" RECIPE_MAINTAINER_pn-itstool = "Andreas Müller <schnitzeltony@gmail.com>" RECIPE_MAINTAINER_pn-iw = "Changhyeok Bae <changhyeok.bae@gmail.com>" RECIPE_MAINTAINER_pn-libjpeg-turbo = "Anuj Mittal <anuj.mittal@intel.com>" @@ -312,7 +311,7 @@ RECIPE_MAINTAINER_pn-libcap-ng-python = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-libcgroup = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libcheck = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-libcomps = "Alexander Kanavin <alex.kanavin@gmail.com>" -RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-libcroco = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libdaemon = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libdazzle = "Alexander Kanavin <alex.kanavin@gmail.com>" @@ -322,7 +321,7 @@ RECIPE_MAINTAINER_pn-libdrm = "Otavio Salvador <otavio.salvador@ossystems.com.br RECIPE_MAINTAINER_pn-libedit = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-libepoxy = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-liberation-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>" -RECIPE_MAINTAINER_pn-liberror-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-liberror-perl = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-libevdev = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libevent = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libexif = "Alexander Kanavin <alex.kanavin@gmail.com>" @@ -350,9 +349,10 @@ RECIPE_MAINTAINER_pn-libjitterentropy = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-libksba = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libmatchbox = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-libmd = "Alexander Kanavin <alex.kanavin@gmail.com>" +RECIPE_MAINTAINER_pn-libmicrohttpd = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libmnl = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-libmpc = "Khem Raj <raj.khem@gmail.com>" -RECIPE_MAINTAINER_pn-libmodule-build-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-libmodule-build-perl = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-libmodulemd = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>" RECIPE_MAINTAINER_pn-libnl = "Alexander Kanavin <alex.kanavin@gmail.com>" @@ -364,19 +364,20 @@ RECIPE_MAINTAINER_pn-libogg = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libomxil = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libpam = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libpcap = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-libpciaccess = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-libpciaccess = "Wang Mingyu <wangmy@fujitsu.com>" RECIPE_MAINTAINER_pn-libpcre = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-libpcre2 = "Armin Kuster <akuster808@gmail.com>" -RECIPE_MAINTAINER_pn-libpipeline = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-libpipeline = "Wang Mingyu <wangmy@fujitsu.com>" RECIPE_MAINTAINER_pn-libpng = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libportal = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libproxy = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libpthread-stubs = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libpsl = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-librepo = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-librepo = "Wang Mingyu <wangmy@fujitsu.com>" RECIPE_MAINTAINER_pn-librsvg = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libsamplerate0 = "Unassigned <unassigned@yoctoproject.org>" RECIPE_MAINTAINER_pn-libsdl2 = "Yi Zhao <yi.zhao@windriver.com>" +RECIPE_MAINTAINER_pn-libseccomp = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libsecret = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libsm = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libsndfile1 = "Unassigned <unassigned@yoctoproject.org>" @@ -385,9 +386,9 @@ RECIPE_MAINTAINER_pn-libsoup-2.4 = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libssh2 = "Unassigned <unassigned@yoctoproject.org>" RECIPE_MAINTAINER_pn-libssp-nonshared = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-libtasn1 = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-libtest-needs-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-libtest-needs-perl = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-libtheora = "Alexander Kanavin <alex.kanavin@gmail.com>" -RECIPE_MAINTAINER_pn-libtimedate-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-libtimedate-perl = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-libtirpc = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libtool = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-libtool-cross = "Robert Yang <liezhi.yang@windriver.com>" @@ -395,15 +396,15 @@ RECIPE_MAINTAINER_pn-libtool-native = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-libucontext = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-libunistring = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libunwind = "Bruce Ashfield <bruce.ashfield@gmail.com>" -RECIPE_MAINTAINER_pn-liburcu = "Wang Mingyu <wangmy@cn.fujitsu.com>" -RECIPE_MAINTAINER_pn-liburi-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-liburcu = "Wang Mingyu <wangmy@fujitsu.com>" +RECIPE_MAINTAINER_pn-liburi-perl = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-libusb1 = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libubootenv = "Stefano Babic <sbabic@denx.de>" RECIPE_MAINTAINER_pn-libuv = "Armin Kuster <akuster@mvista.com>" RECIPE_MAINTAINER_pn-libva = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libva-initial = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-libva-utils = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-libvorbis = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-libvorbis = "Zang Ruochen <zangrc.fnst@fujitsu.com>" RECIPE_MAINTAINER_pn-libwebp = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libwpe = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-libx11 = "Armin Kuster <akuster808@gmail.com>" @@ -424,12 +425,12 @@ RECIPE_MAINTAINER_pn-libxi = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libxinerama = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libxkbcommon = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libxkbfile = "Armin Kuster <akuster808@gmail.com>" -RECIPE_MAINTAINER_pn-libxml-namespacesupport-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-libxml-parser-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-libxml-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-libxml-sax-base-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-libxml-sax-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-libxml-simple-perl = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-libxml-namespacesupport-perl = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-libxml-parser-perl = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-libxml-perl = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-libxml-sax-base-perl = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-libxml-sax-perl = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-libxml-simple-perl = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-libxml2 = "Hongxu Jia <hongxu.jia@windriver.com>" RECIPE_MAINTAINER_pn-libxmu = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libxpm = "Armin Kuster <akuster808@gmail.com>" @@ -444,7 +445,7 @@ RECIPE_MAINTAINER_pn-libxtst = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libxv = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libxvmc = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-libxxf86vm = "Armin Kuster <akuster808@gmail.com>" -RECIPE_MAINTAINER_pn-libyaml = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-libyaml = "Wang Mingyu <wangmy@fujitsu.com>" RECIPE_MAINTAINER_pn-lighttpd = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-linux-dummy = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-linux-firmware = "Otavio Salvador <otavio.salvador@ossystems.com.br>" @@ -502,21 +503,19 @@ RECIPE_MAINTAINER_pn-mingetty = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-mini-x-session = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-minicom = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-mkfontscale = "Armin Kuster <akuster808@gmail.com>" -RECIPE_MAINTAINER_pn-mklibs-native = "Robert Yang <liezhi.yang@windriver.com>" RECIPE_MAINTAINER_pn-mmc-utils = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-mobile-broadband-provider-info = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-modutils-initscripts = "Yi Zhao <yi.zhao@windriver.com>" RECIPE_MAINTAINER_pn-mpeg2dec = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-mpfr = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-mpg123 = "Alexander Kanavin <alex.kanavin@gmail.com>" -RECIPE_MAINTAINER_pn-msmtp = "Wang Mingyu <wangmy@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-msmtp = "Wang Mingyu <wangmy@fujitsu.com>" RECIPE_MAINTAINER_pn-mtd-utils = "Denys Dmytriyenko <denis@denix.org>" RECIPE_MAINTAINER_pn-mtdev = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-mtools = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-musl = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-musl-obstack = "Khem Raj <raj.khem@gmail.com>" RECIPE_MAINTAINER_pn-musl-utils = "Khem Raj <raj.khem@gmail.com>" -RECIPE_MAINTAINER_pn-mx-1.0 = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-nativesdk-icecc-toolchain = "Joshua Watt <JPEWhacker@gmail.com>" @@ -560,6 +559,7 @@ RECIPE_MAINTAINER_pn-pciutils = "Chen Qi <Qi.Chen@windriver.com>" RECIPE_MAINTAINER_pn-pcmanfm = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-perf = "Bruce Ashfield <bruce.ashfield@gmail.com>" RECIPE_MAINTAINER_pn-perl = "Alexander Kanavin <alex.kanavin@gmail.com>" +RECIPE_MAINTAINER_pn-perlcross = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@arm.com>" RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>" RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>" @@ -584,10 +584,10 @@ RECIPE_MAINTAINER_pn-pulseaudio-client-conf-sato = "Unassigned <unassigned@yocto RECIPE_MAINTAINER_pn-puzzles = "Anuj Mittal <anuj.mittal@intel.com>" RECIPE_MAINTAINER_pn-python3 = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-async = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-atomicwrites = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-attrs = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-python3-atomicwrites = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-attrs = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-python3-cython = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-dbus = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-python3-dbus = "Zang Ruochen <zangrc.fnst@fujitsu.com>" RECIPE_MAINTAINER_pn-python3-dbusmock = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-docutils = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-pycryptodome = "Joshua Watt <JPEWhacker@gmail.com>" @@ -595,42 +595,46 @@ RECIPE_MAINTAINER_pn-python3-pycryptodomex = "Joshua Watt <JPEWhacker@gmail.com> RECIPE_MAINTAINER_pn-python3-extras = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-git = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-gitdb = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-hypothesis = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-importlib-metadata = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-iniconfig = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-python3-hypothesis = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-importlib-metadata = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-iniconfig = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-python3-iniparse = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-jinja2 = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-python3-libarchive-c = "Joshua Watt <JPEWhacker@gmail.com>" RECIPE_MAINTAINER_pn-python3-magic = "Joshua Watt <JPEWhacker@gmail.com>" RECIPE_MAINTAINER_pn-python3-mako = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" +RECIPE_MAINTAINER_pn-python3-markdown = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-python3-markupsafe = "Richard Purdie <richard.purdie@linuxfoundation.org>" -RECIPE_MAINTAINER_pn-python3-more-itertools = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-python3-more-itertools = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-python3-nose = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-numpy = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-packaging = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-pathlib2 = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-pbr = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" -RECIPE_MAINTAINER_pn-python3-pip = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" -RECIPE_MAINTAINER_pn-python3-pluggy = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-py = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-pycairo = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-python3-packaging = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-pathlib2 = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-pbr = "Zang Ruochen <zangrc.fnst@fujitsu.com>" +RECIPE_MAINTAINER_pn-python3-pip = "Zang Ruochen <zangrc.fnst@fujitsu.com>" +RECIPE_MAINTAINER_pn-python3-pluggy = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-py = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-pyyaml = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-pycairo = "Zang Ruochen <zangrc.fnst@fujitsu.com>" RECIPE_MAINTAINER_pn-python3-pyelftools = "Joshua Watt <JPEWhacker@gmail.com>" RECIPE_MAINTAINER_pn-python3-pygments = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-pygobject = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-python3-pygobject = "Zang Ruochen <zangrc.fnst@fujitsu.com>" RECIPE_MAINTAINER_pn-python3-pyparsing = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-pytest = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-scons = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-scons-native = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-python3-pytest = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-scons = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-scons-native = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-python3-setuptools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-setuptools-scm = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-six = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>" +RECIPE_MAINTAINER_pn-python3-setuptools-scm = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-six = "Zang Ruochen <zangrc.fnst@fujitsu.com>" +RECIPE_MAINTAINER_pn-python3-smartypants = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-python3-smmap = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-sortedcontainers = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-python3-sortedcontainers = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-python3-subunit = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" RECIPE_MAINTAINER_pn-python3-testtools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" -RECIPE_MAINTAINER_pn-python3-toml = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-wcwidth = "Tim Orling <timothy.t.orling@linux.intel.com>" -RECIPE_MAINTAINER_pn-python3-zipp = "Tim Orling <timothy.t.orling@linux.intel.com>" +RECIPE_MAINTAINER_pn-python3-toml = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-typogrify = "Alexander Kanavin <alex.kanavin@gmail.com>" +RECIPE_MAINTAINER_pn-python3-wcwidth = "Tim Orling <timothy.t.orling@intel.com>" +RECIPE_MAINTAINER_pn-python3-zipp = "Tim Orling <timothy.t.orling@intel.com>" RECIPE_MAINTAINER_pn-qemu = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-qemu-helper-native = "Richard Purdie <richard.purdie@linuxfoundation.org>" RECIPE_MAINTAINER_pn-qemu-native = "Richard Purdie <richard.purdie@linuxfoundation.org>" @@ -797,6 +801,7 @@ RECIPE_MAINTAINER_pn-xset = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-xtrans = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-xuser-account = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-xvinfo = "Armin Kuster <akuster808@gmail.com>" +RECIPE_MAINTAINER_pn-xwayland = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-xwininfo = "Armin Kuster <akuster808@gmail.com>" RECIPE_MAINTAINER_pn-xxhash = "Alexander Kanavin <alex.kanavin@gmail.com>" RECIPE_MAINTAINER_pn-xz = "Denys Dmytriyenko <denis@denix.org>" diff --git a/poky/meta/conf/distro/include/ptest-packagelists.inc b/poky/meta/conf/distro/include/ptest-packagelists.inc index e0a876dbd..d489ad820 100644 --- a/poky/meta/conf/distro/include/ptest-packagelists.inc +++ b/poky/meta/conf/distro/include/ptest-packagelists.inc @@ -14,17 +14,21 @@ PTESTS_FAST = "\ diffutils-ptest \ elfutils-ptest \ ethtool-ptest \ + expat-ptest \ flex-ptest \ gawk-ptest \ gdbm-ptest \ gdk-pixbuf-ptest \ gettext-ptest \ + glib-networking-ptest \ gzip-ptest \ json-glib-ptest \ libconvert-asn1-perl-ptest \ liberror-perl-ptest \ + libnl-ptest \ libmodule-build-perl-ptest \ libpcre-ptest \ + libssh2-ptest \ libtimedate-perl-ptest \ libtest-needs-perl-ptest \ liburi-perl-ptest \ @@ -43,6 +47,12 @@ PTESTS_FAST = "\ opkg-ptest \ pango-ptest \ parted-ptest \ + python3-atomicwrites-ptest \ + python3-jinja2-ptest \ + python3-markupsafe-ptest \ + python3-more-itertools-ptest \ + python3-pluggy-ptest \ + python3-wcwidth-ptest \ qemu-ptest \ quilt-ptest \ sed-ptest \ @@ -51,17 +61,7 @@ PTESTS_FAST = "\ zlib-ptest \ " PTESTS_FAST_remove_mips64 = "qemu-ptest" - -#PTESTS_PROBLEMS = "\ -# ruby-ptest \ # Timeout -# clutter-1.0-ptest \ # Doesn't build due to depends on cogl-1.0 -# lz4-ptest \ # Needs a rewrite -# rt-tests-ptest \ # Needs to be checked whether it runs at all -# bash-ptest \ # Test outcomes are non-deterministic by design -# ifupdown-ptest \ # Tested separately in lib/oeqa/selftest/cases/imagefeatures.py -# mdadm-ptest \ # Tests rely on non-deterministic sleep() amounts -# libinput-ptest \ # Tests need an unloaded system to be reliable -#" +PTESTS_PROBLEMS_append_mips64 = "qemu-ptest" PTESTS_SLOW = "\ babeltrace-ptest \ @@ -85,3 +85,30 @@ PTESTS_SLOW = "\ " PTESTS_SLOW_remove_riscv64 = "valgrind-ptest" +PTESTS_PROBLEMS_append_riscv64 = "valgrind-ptest" + +# ruby-ptest \ # Timeout +# lz4-ptest \ # Needs a rewrite +# rt-tests-ptest \ # Needs to be checked whether it runs at all +# bash-ptest \ # Test outcomes are non-deterministic by design +# ifupdown-ptest \ # Tested separately in lib/oeqa/selftest/cases/imagefeatures.py +# mdadm-ptest \ # Tests rely on non-deterministic sleep() amounts +# libinput-ptest \ # Tests need an unloaded system to be reliable +# libpam-ptest \ # Needs pam DISTRO_FEATURE +# numactl-ptest \ # qemu not (yet) configured for numa; all tests are skipped +# libseccomp-ptest \ # tests failed: 38; add to slow tests once addressed +# python3-numpy-ptest \ # requires even more RAM and (possibly) disk space; multiple failures + +PTESTS_PROBLEMS = "\ + ruby-ptest \ + lz4-ptest \ + rt-tests-ptest \ + bash-ptest \ + ifupdown-ptest \ + mdadm-ptest \ + libinput-ptest \ + libpam-ptest \ + libseccomp-ptest \ + numactl-ptest \ + python3-numpy-ptest \ +" diff --git a/poky/meta/conf/distro/include/tcmode-default.inc b/poky/meta/conf/distro/include/tcmode-default.inc index 76ada982f..c6e5ac61d 100644 --- a/poky/meta/conf/distro/include/tcmode-default.inc +++ b/poky/meta/conf/distro/include/tcmode-default.inc @@ -16,17 +16,17 @@ PREFERRED_PROVIDER_virtual/${SDK_PREFIX}compilerlibs = "nativesdk-gcc-runtime" # Default libc config PREFERRED_PROVIDER_virtual/gettext ??= "gettext" -GCCVERSION ?= "10.%" +GCCVERSION ?= "11.%" SDKGCCVERSION ?= "${GCCVERSION}" BINUVERSION ?= "2.36%" GDBVERSION ?= "10.%" GLIBCVERSION ?= "2.33" LINUXLIBCVERSION ?= "5.10%" -QEMUVERSION ?= "5.2%" +QEMUVERSION ?= "6.0%" GOVERSION ?= "1.16%" # This can not use wildcards like 8.0.% since it is also used in mesa to denote # llvm version being used, so always bump it with llvm recipe version bump -LLVMVERSION ?= "11.1.0" +LLVMVERSION ?= "12.0.0" PREFERRED_VERSION_gcc ?= "${GCCVERSION}" PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}" diff --git a/poky/meta/conf/distro/include/yocto-uninative.inc b/poky/meta/conf/distro/include/yocto-uninative.inc index a2a2dd18e..740cca0ec 100644 --- a/poky/meta/conf/distro/include/yocto-uninative.inc +++ b/poky/meta/conf/distro/include/yocto-uninative.inc @@ -8,7 +8,7 @@ UNINATIVE_MAXGLIBCVERSION = "2.33" -UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/3.0/" -UNINATIVE_CHECKSUM[aarch64] ?= "1c668909098c5b56132067adc69a249cb771f4560428e5822de903a12d97bf33" -UNINATIVE_CHECKSUM[i686] ?= "e6cc2fc056234cffa6a2ff084cce27d544ea3f487a62b5e253351cefd4421900" -UNINATIVE_CHECKSUM[x86_64] ?= "5ec5a9276046e7eceeac749a18b175667384e1f445cd4526300a41404d985a5b" +UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/3.2/" +UNINATIVE_CHECKSUM[aarch64] ?= "4f0872cdca2775b637a8a99815ca5c8dd42146abe903a24a50ee0448358c764b" +UNINATIVE_CHECKSUM[i686] ?= "e2eeab92e67263db37d9bb6d4c58579abd1f47ff4cded3171bde572fece124b2" +UNINATIVE_CHECKSUM[x86_64] ?= "3ee8c7d55e2d4c7ae3887cddb97219f97b94efddfeee2e24923c0cb0e8ce84c6" diff --git a/poky/meta/conf/layer.conf b/poky/meta/conf/layer.conf index 5210fd461..5892c80ae 100644 --- a/poky/meta/conf/layer.conf +++ b/poky/meta/conf/layer.conf @@ -7,12 +7,12 @@ BBFILE_COLLECTIONS += "core" BBFILE_PATTERN_core = "^${LAYERDIR}/" BBFILE_PRIORITY_core = "5" -LAYERSERIES_CORENAMES = "hardknott" +LAYERSERIES_CORENAMES = "hardknott honister" # This should only be incremented on significant changes that will # cause compatibility issues with other layers LAYERVERSION_core = "12" -LAYERSERIES_COMPAT_core = "hardknott" +LAYERSERIES_COMPAT_core = "honister" BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core" diff --git a/poky/meta/conf/machine-sdk/ppc64.conf b/poky/meta/conf/machine-sdk/ppc64.conf new file mode 100644 index 000000000..1eb064eef --- /dev/null +++ b/poky/meta/conf/machine-sdk/ppc64.conf @@ -0,0 +1,2 @@ +SDK_ARCH = "ppc64" +ABIEXTENSION_class-nativesdk = "" diff --git a/poky/meta/conf/machine/include/arm/arch-armv4.inc b/poky/meta/conf/machine/include/arm/arch-armv4.inc index fac2bdf95..b71739c20 100644 --- a/poky/meta/conf/machine/include/arm/arch-armv4.inc +++ b/poky/meta/conf/machine/include/arm/arch-armv4.inc @@ -2,7 +2,7 @@ DEFAULTTUNE ?= "armv4" TUNEVALID[arm] = "Enable ARM instruction set" TUNEVALID[armv4] = "Enable instructions for ARMv4" -TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4t', '', d)}" +TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4${ARMPKGSFX_THUMB}', '', d)}" # enable --fix-v4bx when we have armv4 in TUNE_FEATURES, but then disable it when we have also armv5 or thumb # maybe we should extend bb.utils.contains to support check for any checkvalues in value, now it does # checkvalues.issubset(val) which cannot be used for negative test of foo neither bar in value diff --git a/poky/meta/conf/machine/include/arm/arch-armv6m.inc b/poky/meta/conf/machine/include/arm/arch-armv6m.inc index 739550d00..739550d00 100755..100644 --- a/poky/meta/conf/machine/include/arm/arch-armv6m.inc +++ b/poky/meta/conf/machine/include/arm/arch-armv6m.inc diff --git a/poky/meta/conf/machine/include/qemuboot-x86.inc b/poky/meta/conf/machine/include/qemuboot-x86.inc index 2a4760c71..a2dcdc6d5 100644 --- a/poky/meta/conf/machine/include/qemuboot-x86.inc +++ b/poky/meta/conf/machine/include/qemuboot-x86.inc @@ -1,13 +1,14 @@ # For runqemu IMAGE_CLASSES += "qemuboot" -QB_CPU_x86 = "-cpu core2duo" -QB_CPU_KVM_x86 = "-cpu core2duo" +QB_SMP = "-smp 4" +QB_CPU_x86 = "-cpu IvyBridge -machine q35" +QB_CPU_KVM_x86 = "-cpu IvyBridge -machine q35" -QB_CPU_x86-64 = "-cpu core2duo" -QB_CPU_KVM_x86-64 = "-cpu core2duo" +QB_CPU_x86-64 = "-cpu IvyBridge -machine q35" +QB_CPU_KVM_x86-64 = "-cpu IvyBridge -machine q35" QB_AUDIO_DRV = "alsa" QB_AUDIO_OPT = "-soundhw ac97,es1370" -QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1" +QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1" QB_OPT_APPEND = "-usb -device usb-tablet" diff --git a/poky/meta/conf/machine/include/riscv/qemuriscv.inc b/poky/meta/conf/machine/include/riscv/qemuriscv.inc index 428d28bde..20e2d465a 100644 --- a/poky/meta/conf/machine/include/riscv/qemuriscv.inc +++ b/poky/meta/conf/machine/include/riscv/qemuriscv.inc @@ -26,6 +26,7 @@ UBOOT_ENTRYPOINT_riscv32 = "0x80400000" UBOOT_ENTRYPOINT_riscv64 = "0x80200000" # qemuboot options +QB_SMP = "-smp 4" QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi" QB_MACHINE = "-machine virt" QB_DEFAULT_BIOS = "fw_jump.elf" diff --git a/poky/meta/conf/machine/qemuarm.conf b/poky/meta/conf/machine/qemuarm.conf index e5ec4cc06..34fcde698 100644 --- a/poky/meta/conf/machine/qemuarm.conf +++ b/poky/meta/conf/machine/qemuarm.conf @@ -16,6 +16,7 @@ SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" QB_SYSTEM_NAME = "qemu-system-arm" QB_MACHINE = "-machine virt,highmem=off" QB_CPU = "-cpu cortex-a15" +QB_SMP = "-smp 4" # Standard Serial console QB_KERNEL_CMDLINE_APPEND = "vmalloc=256" # For graphics to work we need to define the VGA device as well as the necessary USB devices diff --git a/poky/meta/conf/machine/qemuarm64.conf b/poky/meta/conf/machine/qemuarm64.conf index 51f7ecdcf..150a0744e 100644 --- a/poky/meta/conf/machine/qemuarm64.conf +++ b/poky/meta/conf/machine/qemuarm64.conf @@ -16,6 +16,7 @@ SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" QB_SYSTEM_NAME = "qemu-system-aarch64" QB_MACHINE = "-machine virt" QB_CPU = "-cpu cortex-a57" +QB_SMP = "-smp 4" QB_CPU_KVM = "-cpu host -machine gic-version=3" # For graphics to work we need to define the VGA device as well as the necessary USB devices QB_GRAPHICS = "-device VGA,edid=on" diff --git a/poky/meta/conf/sanity.conf b/poky/meta/conf/sanity.conf index ef7cee6b6..68d4523af 100644 --- a/poky/meta/conf/sanity.conf +++ b/poky/meta/conf/sanity.conf @@ -3,7 +3,7 @@ # See sanity.bbclass # # Expert users can confirm their sanity with "touch conf/sanity.conf" -BB_MIN_VERSION = "1.49.2" +BB_MIN_VERSION = "1.51.0" SANITY_ABIFILE = "${TMPDIR}/abi_version" diff --git a/poky/meta/lib/oe/gpg_sign.py b/poky/meta/lib/oe/gpg_sign.py index 7634d7ef1..492f096ea 100644 --- a/poky/meta/lib/oe/gpg_sign.py +++ b/poky/meta/lib/oe/gpg_sign.py @@ -111,7 +111,7 @@ class LocalSigner(object): def verify(self, sig_file): """Verify signature""" - cmd = self.gpg_cmd + [" --verify", "--no-permission-warning"] + cmd = self.gpg_cmd + ["--verify", "--no-permission-warning"] if self.gpg_path: cmd += ["--homedir", self.gpg_path] diff --git a/poky/meta/lib/oe/package_manager/__init__.py b/poky/meta/lib/oe/package_manager/__init__.py index 8e7128b19..4d22bc029 100644 --- a/poky/meta/lib/oe/package_manager/__init__.py +++ b/poky/meta/lib/oe/package_manager/__init__.py @@ -189,7 +189,7 @@ class PackageManager(object, metaclass=ABCMeta): bb.utils.remove(self.intercepts_dir, True) bb.utils.mkdirhier(self.intercepts_dir) for intercept in postinst_intercepts: - bb.utils.copyfile(intercept, os.path.join(self.intercepts_dir, os.path.basename(intercept))) + shutil.copy(intercept, os.path.join(self.intercepts_dir, os.path.basename(intercept))) @abstractmethod def _handle_intercept_failure(self, failed_script): diff --git a/poky/meta/lib/oe/package_manager/deb/__init__.py b/poky/meta/lib/oe/package_manager/deb/__init__.py index 2ee68fefb..a4b6b6f64 100644 --- a/poky/meta/lib/oe/package_manager/deb/__init__.py +++ b/poky/meta/lib/oe/package_manager/deb/__init__.py @@ -214,7 +214,7 @@ class DpkgPM(OpkgDpkgPM): tmp_sf.write(status) - os.rename(status_file + ".tmp", status_file) + bb.utils.rename(status_file + ".tmp", status_file) def run_pre_post_installs(self, package_name=None): """ @@ -299,13 +299,13 @@ class DpkgPM(OpkgDpkgPM): for dir in dirs: new_dir = re.sub(r"\.dpkg-new", "", dir) if dir != new_dir: - os.rename(os.path.join(root, dir), + bb.utils.rename(os.path.join(root, dir), os.path.join(root, new_dir)) for file in files: new_file = re.sub(r"\.dpkg-new", "", file) if file != new_file: - os.rename(os.path.join(root, file), + bb.utils.rename(os.path.join(root, file), os.path.join(root, new_file)) diff --git a/poky/meta/lib/oe/package_manager/deb/sdk.py b/poky/meta/lib/oe/package_manager/deb/sdk.py index 9859d8f32..f4b0b6510 100644 --- a/poky/meta/lib/oe/package_manager/deb/sdk.py +++ b/poky/meta/lib/oe/package_manager/deb/sdk.py @@ -65,6 +65,8 @@ class PkgSdk(Sdk): self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY')) + self.target_pm.run_pre_post_installs() + self.target_pm.run_intercepts(populate_sdk='target') execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND")) @@ -78,6 +80,8 @@ class PkgSdk(Sdk): self._populate_sysroot(self.host_pm, self.host_manifest) self.install_locales(self.host_pm) + self.host_pm.run_pre_post_installs() + self.host_pm.run_intercepts(populate_sdk='host') execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND")) diff --git a/poky/meta/lib/oe/package_manager/ipk/__init__.py b/poky/meta/lib/oe/package_manager/ipk/__init__.py index da488c1c7..4cd396311 100644 --- a/poky/meta/lib/oe/package_manager/ipk/__init__.py +++ b/poky/meta/lib/oe/package_manager/ipk/__init__.py @@ -213,7 +213,7 @@ class OpkgPM(OpkgDpkgPM): tmp_sf.write(status) - os.rename(status_file + ".tmp", status_file) + bb.utils.rename(status_file + ".tmp", status_file) def _create_custom_config(self): bb.note("Building from feeds activated!") diff --git a/poky/meta/lib/oe/package_manager/rpm/__init__.py b/poky/meta/lib/oe/package_manager/rpm/__init__.py index 6df009228..b39258106 100644 --- a/poky/meta/lib/oe/package_manager/rpm/__init__.py +++ b/poky/meta/lib/oe/package_manager/rpm/__init__.py @@ -199,6 +199,9 @@ class RpmPM(PackageManager): failed_scriptlets_pkgnames = collections.OrderedDict() for line in output.splitlines(): + if line.startswith("Error: Systemctl"): + bb.error(line) + if line.startswith("Error in POSTIN scriptlet in rpm package"): failed_scriptlets_pkgnames[line.split()[-1]] = True diff --git a/poky/meta/lib/oe/prservice.py b/poky/meta/lib/oe/prservice.py index fcdbe66c1..15ce060ff 100644 --- a/poky/meta/lib/oe/prservice.py +++ b/poky/meta/lib/oe/prservice.py @@ -7,7 +7,7 @@ def prserv_make_conn(d, check = False): host_params = list([_f for _f in (d.getVar("PRSERV_HOST") or '').split(':') if _f]) try: conn = None - conn = prserv.serv.PRServerConnection(host_params[0], int(host_params[1])) + conn = prserv.serv.connect(host_params[0], int(host_params[1])) if check: if not conn.ping(): raise Exception('service not available') diff --git a/poky/meta/lib/oe/rootfs.py b/poky/meta/lib/oe/rootfs.py index 5f8102304..ad9fd77c8 100644 --- a/poky/meta/lib/oe/rootfs.py +++ b/poky/meta/lib/oe/rootfs.py @@ -114,7 +114,7 @@ class Rootfs(object, metaclass=ABCMeta): shutil.rmtree(self.image_rootfs + '-orig') except: pass - os.rename(self.image_rootfs, self.image_rootfs + '-orig') + bb.utils.rename(self.image_rootfs, self.image_rootfs + '-orig') bb.note(" Creating debug rootfs...") bb.utils.mkdirhier(self.image_rootfs) @@ -165,10 +165,10 @@ class Rootfs(object, metaclass=ABCMeta): shutil.rmtree(self.image_rootfs + '-dbg') except: pass - os.rename(self.image_rootfs, self.image_rootfs + '-dbg') + bb.utils.rename(self.image_rootfs, self.image_rootfs + '-dbg') - bb.note(" Restoreing original rootfs...") - os.rename(self.image_rootfs + '-orig', self.image_rootfs) + bb.note(" Restoring original rootfs...") + bb.utils.rename(self.image_rootfs + '-orig', self.image_rootfs) def _exec_shell_cmd(self, cmd): fakerootcmd = self.d.getVar('FAKEROOT') @@ -305,7 +305,7 @@ class Rootfs(object, metaclass=ABCMeta): def _check_for_kernel_modules(self, modules_dir): for root, dirs, files in os.walk(modules_dir, topdown=True): for name in files: - found_ko = name.endswith(".ko") + found_ko = name.endswith((".ko", ".ko.gz", ".ko.xz")) if found_ko: return found_ko return False diff --git a/poky/meta/lib/oe/sstatesig.py b/poky/meta/lib/oe/sstatesig.py index 6cd6e11ac..47f3ca4ef 100644 --- a/poky/meta/lib/oe/sstatesig.py +++ b/poky/meta/lib/oe/sstatesig.py @@ -248,13 +248,24 @@ class SignatureGeneratorOEBasicHashMixIn(object): f.write(' "\n') f.write('SIGGEN_LOCKEDSIGS_TYPES_%s = "%s"' % (self.machine, " ".join(l))) - def dump_siglist(self, sigfile): + def dump_siglist(self, sigfile, path_prefix_strip=None): + def strip_fn(fn): + nonlocal path_prefix_strip + if not path_prefix_strip: + return fn + + fn_exp = fn.split(":") + if fn_exp[-1].startswith(path_prefix_strip): + fn_exp[-1] = fn_exp[-1][len(path_prefix_strip):] + + return ":".join(fn_exp) + with open(sigfile, "w") as f: tasks = [] for taskitem in self.taskhash: (fn, task) = taskitem.rsplit(":", 1) pn = self.lockedpnmap[fn] - tasks.append((pn, task, fn, self.taskhash[taskitem])) + tasks.append((pn, task, strip_fn(fn), self.taskhash[taskitem])) for (pn, task, fn, taskhash) in sorted(tasks): f.write('%s:%s %s %s\n' % (pn, task, fn, taskhash)) @@ -453,7 +464,7 @@ def find_sstate_manifest(taskdata, taskdata2, taskname, d, multilibcache): manifest = d2.expand("${SSTATE_MANIFESTS}/manifest-%s-%s.%s" % (pkgarch, taskdata, taskname)) if os.path.exists(manifest): return manifest, d2 - bb.error("Manifest %s not found in %s (variant '%s')?" % (manifest, d2.expand(" ".join(pkgarchs)), variant)) + bb.fatal("Manifest %s not found in %s (variant '%s')?" % (manifest, d2.expand(" ".join(pkgarchs)), variant)) return None, d2 def OEOuthashBasic(path, sigfile, task, d): diff --git a/poky/meta/lib/oe/terminal.py b/poky/meta/lib/oe/terminal.py index 61c2687ef..59aa80de6 100644 --- a/poky/meta/lib/oe/terminal.py +++ b/poky/meta/lib/oe/terminal.py @@ -163,7 +163,12 @@ class Tmux(Terminal): # devshells, if it's already there, add a new window to it. window_name = 'devshell-%i' % os.getpid() - self.command = 'tmux new -c "{{cwd}}" -d -s {0} -n {0} "{{command}}"'.format(window_name) + self.command = 'tmux new -c "{{cwd}}" -d -s {0} -n {0} "{{command}}"' + if not check_tmux_version('1.9'): + # `tmux new-session -c` was added in 1.9; + # older versions fail with that flag + self.command = 'tmux new -d -s {0} -n {0} "{{command}}"' + self.command = self.command.format(window_name) Terminal.__init__(self, sh_cmd, title, env, d) attach_cmd = 'tmux att -t {0}'.format(window_name) @@ -253,13 +258,18 @@ def spawn(name, sh_cmd, title=None, env=None, d=None): except OSError: return +def check_tmux_version(desired): + vernum = check_terminal_version("tmux") + if vernum and LooseVersion(vernum) < desired: + return False + return vernum + def check_tmux_pane_size(tmux): import subprocess as sub # On older tmux versions (<1.9), return false. The reason # is that there is no easy way to get the height of the active panel # on current window without nested formats (available from version 1.9) - vernum = check_terminal_version("tmux") - if vernum and LooseVersion(vernum) < '1.9': + if not check_tmux_version('1.9'): return False try: p = sub.Popen('%s list-panes -F "#{?pane_active,#{pane_height},}"' % tmux, diff --git a/poky/meta/lib/oeqa/core/case.py b/poky/meta/lib/oeqa/core/case.py index aae451fef..bc4446a93 100644 --- a/poky/meta/lib/oeqa/core/case.py +++ b/poky/meta/lib/oeqa/core/case.py @@ -43,8 +43,13 @@ class OETestCase(unittest.TestCase): clss.tearDownClassMethod() def _oeSetUp(self): - for d in self.decorators: - d.setUpDecorator() + try: + for d in self.decorators: + d.setUpDecorator() + except: + for d in self.decorators: + d.tearDownDecorator() + raise self.setUpMethod() def _oeTearDown(self): diff --git a/poky/meta/lib/oeqa/core/decorator/oetimeout.py b/poky/meta/lib/oeqa/core/decorator/oetimeout.py index df90d1c79..5e6873ad4 100644 --- a/poky/meta/lib/oeqa/core/decorator/oetimeout.py +++ b/poky/meta/lib/oeqa/core/decorator/oetimeout.py @@ -24,5 +24,6 @@ class OETimeout(OETestDecorator): def tearDownDecorator(self): signal.alarm(0) - signal.signal(signal.SIGALRM, self.alarmSignal) - self.logger.debug("Removed SIGALRM handler") + if hasattr(self, 'alarmSignal'): + signal.signal(signal.SIGALRM, self.alarmSignal) + self.logger.debug("Removed SIGALRM handler") diff --git a/poky/meta/lib/oeqa/core/target/qemu.py b/poky/meta/lib/oeqa/core/target/qemu.py index 792efca1f..79fd724f7 100644 --- a/poky/meta/lib/oeqa/core/target/qemu.py +++ b/poky/meta/lib/oeqa/core/target/qemu.py @@ -8,10 +8,13 @@ import os import sys import signal import time +import glob +import subprocess from collections import defaultdict from .ssh import OESSHTarget from oeqa.utils.qemurunner import QemuRunner +from oeqa.utils.dump import MonitorDumper from oeqa.utils.dump import TargetDumper supported_fstypes = ['ext3', 'ext4', 'cpio.gz', 'wic'] @@ -35,6 +38,8 @@ class OEQemuTarget(OESSHTarget): self.ovmf = ovmf self.use_slirp = slirp self.boot_patterns = boot_patterns + self.dump_dir = dump_dir + self.bootlog = bootlog self.runner = QemuRunner(machine=machine, rootfs=rootfs, tmpdir=tmpdir, deploy_dir_image=dir_image, display=display, @@ -43,6 +48,11 @@ class OEQemuTarget(OESSHTarget): dump_host_cmds=dump_host_cmds, logger=logger, serial_ports=serial_ports, boot_patterns = boot_patterns, use_ovmf=ovmf, tmpfsdir=tmpfsdir) + dump_monitor_cmds = kwargs.get("testimage_dump_monitor") + self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner) + if self.monitor_dumper: + self.monitor_dumper.create_dir("qmp") + dump_target_cmds = kwargs.get("testimage_dump_target") self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner) self.target_dumper.create_dir("qemu") @@ -68,7 +78,28 @@ class OEQemuTarget(OESSHTarget): self.server_ip = self.runner.server_ip else: self.stop() - raise RuntimeError("FAILED to start qemu - check the task log and the boot log") + # Display the first 20 lines of top and + # last 20 lines of the bootlog when the + # target is not being booted up. + topfile = glob.glob(self.dump_dir + "/*_qemu/host_*_top") + msg = "\n\n===== start: snippet =====\n\n" + for f in topfile: + msg += "file: %s\n\n" % f + with open(f) as tf: + for x in range(20): + msg += next(tf) + msg += "\n\n===== end: snippet =====\n\n" + blcmd = ["tail", "-20", self.bootlog] + msg += "===== start: snippet =====\n\n" + try: + out = subprocess.check_output(blcmd, stderr=subprocess.STDOUT, timeout=1).decode('utf-8') + msg += "file: %s\n\n" % self.bootlog + msg += out + except (subprocess.CalledProcessError, subprocess.TimeoutExpired, FileNotFoundError) as err: + msg += "Error running command: %s\n%s\n" % (blcmd, err) + msg += "\n\n===== end: snippet =====\n" + + raise RuntimeError("FAILED to start qemu - check the task log and the boot log %s" % (msg)) def stop(self): self.runner.stop() diff --git a/poky/meta/lib/oeqa/core/target/ssh.py b/poky/meta/lib/oeqa/core/target/ssh.py index 461448dbc..923a223b2 100644 --- a/poky/meta/lib/oeqa/core/target/ssh.py +++ b/poky/meta/lib/oeqa/core/target/ssh.py @@ -43,6 +43,7 @@ class OESSHTarget(OETarget): if port: self.ssh = self.ssh + [ '-p', port ] self.scp = self.scp + [ '-P', port ] + self._monitor_dumper = None def start(self, **kwargs): pass @@ -50,6 +51,15 @@ class OESSHTarget(OETarget): def stop(self, **kwargs): pass + @property + def monitor_dumper(self): + return self._monitor_dumper + + @monitor_dumper.setter + def monitor_dumper(self, dumper): + self._monitor_dumper = dumper + self.monitor_dumper.dump_monitor() + def _run(self, command, timeout=None, ignore_status=True): """ Runs command in target using SSHProcess. @@ -87,9 +97,14 @@ class OESSHTarget(OETarget): processTimeout = self.timeout status, output = self._run(sshCmd, processTimeout, True) - self.logger.debug('Command: %s\nOutput: %s\n' % (command, output)) + self.logger.debug('Command: %s\nStatus: %d Output: %s\n' % (command, status, output)) if (status == 255) and (('No route to host') in output): + if self.monitor_dumper: + self.monitor_dumper.dump_monitor() + if status == 255: self.target_dumper.dump_target() + if self.monitor_dumper: + self.monitor_dumper.dump_monitor() return (status, output) def copyTo(self, localSrc, remoteDst): diff --git a/poky/meta/lib/oeqa/core/tests/cases/timeout.py b/poky/meta/lib/oeqa/core/tests/cases/timeout.py index 5dfecc7b7..69cf969a6 100644 --- a/poky/meta/lib/oeqa/core/tests/cases/timeout.py +++ b/poky/meta/lib/oeqa/core/tests/cases/timeout.py @@ -8,6 +8,7 @@ from time import sleep from oeqa.core.case import OETestCase from oeqa.core.decorator.oetimeout import OETimeout +from oeqa.core.decorator.depends import OETestDepends class TimeoutTest(OETestCase): @@ -19,3 +20,15 @@ class TimeoutTest(OETestCase): def testTimeoutFail(self): sleep(2) self.assertTrue(True, msg='How is this possible?') + + + def testTimeoutSkip(self): + self.skipTest("This test needs to be skipped, so that testTimeoutDepends()'s OETestDepends kicks in") + + @OETestDepends(["timeout.TimeoutTest.testTimeoutSkip"]) + @OETimeout(3) + def testTimeoutDepends(self): + self.assertTrue(False, msg='How is this possible?') + + def testTimeoutUnrelated(self): + sleep(6) diff --git a/poky/meta/lib/oeqa/core/tests/test_data.py b/poky/meta/lib/oeqa/core/tests/test_data.py index ac74098b7..acd726f3a 100755 --- a/poky/meta/lib/oeqa/core/tests/test_data.py +++ b/poky/meta/lib/oeqa/core/tests/test_data.py @@ -33,7 +33,7 @@ class TestData(TestBase): def test_data_fail_wrong_variable(self): expectedError = 'AssertionError' - d = {'IMAGE' : 'core-image-sato', 'ARCH' : 'arm'} + d = {'IMAGE' : 'core-image-weston', 'ARCH' : 'arm'} tc = self._testLoader(d=d, modules=self.modules) results = tc.runTests() diff --git a/poky/meta/lib/oeqa/core/tests/test_decorators.py b/poky/meta/lib/oeqa/core/tests/test_decorators.py index b798bf7d3..5095f3994 100755 --- a/poky/meta/lib/oeqa/core/tests/test_decorators.py +++ b/poky/meta/lib/oeqa/core/tests/test_decorators.py @@ -133,5 +133,11 @@ class TestTimeoutDecorator(TestBase): msg = "OETestTimeout didn't restore SIGALRM" self.assertIs(alarm_signal, signal.getsignal(signal.SIGALRM), msg=msg) + def test_timeout_cancel(self): + tests = ['timeout.TimeoutTest.testTimeoutSkip', 'timeout.TimeoutTest.testTimeoutDepends', 'timeout.TimeoutTest.testTimeoutUnrelated'] + msg = 'Unrelated test failed to complete' + tc = self._testLoader(modules=self.modules, tests=tests) + self.assertTrue(tc.runTests().wasSuccessful(), msg=msg) + if __name__ == '__main__': unittest.main() diff --git a/poky/meta/lib/oeqa/manual/bsp-hw.json b/poky/meta/lib/oeqa/manual/bsp-hw.json index 75b89758c..ca91987e3 100644 --- a/poky/meta/lib/oeqa/manual/bsp-hw.json +++ b/poky/meta/lib/oeqa/manual/bsp-hw.json @@ -61,70 +61,6 @@ }, { "test": { - "@alias": "bsps-hw.bsps-hw.boot_from_runlevel_3", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "Boot into system and edit /etc/inittab to make sure that system enter at the run level 3 by default, this is done by changing the line \n\n\nid:5:initdefault \n\nto \n\nid:3:initdefault \n\n", - "expected_results": "" - }, - "2": { - "action": "Reboot system, and press \"Tab\" to enter \"grub\"", - "expected_results": "" - }, - "3": { - "action": "Get into the \"kernel\" line with the edit option \"e\" and add \"psplash=false text\" at the end line.", - "expected_results": "" - }, - "4": { - "action": "Press \"F10\" or \"ctrl+x\" to boot system", - "expected_results": "" - }, - "5": { - "action": "If system ask you for a login type \"root\"", - "expected_results": "System should boot to run level 3, showing the command prompt." - } - }, - "summary": "boot_from_runlevel_3" - } - }, - { - "test": { - "@alias": "bsps-hw.bsps-hw.boot_from_runlevel_5", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "Boot into system and edit /etc/inittab to make sure that system enter at the run level 5 by default, this is done by changing the line \n\nid:3:initdefault \n\nto \n\nid:5:initdefault \n\n", - "expected_results": "" - }, - "2": { - "action": "Reboot system, and press \"Tab\" to enter \"grub\"", - "expected_results": "" - }, - "3": { - "action": "Get into the \"kernel\" line with the edit option \"e\" and add \"psplash=false text\" at the end line.", - "expected_results": "" - }, - "4": { - "action": "Press \"F10\" or \"ctrl+x\" to boot system \nNote: The test is only for sato image.", - "expected_results": "System should boot to runlevel 5 ." - } - }, - "summary": "boot_from_runlevel_5" - } - }, - { - "test": { "@alias": "bsps-hw.bsps-hw.switch_among_multi_applications_and_desktop", "author": [ { @@ -155,70 +91,6 @@ }, { "test": { - "@alias": "bsps-hw.bsps-hw.ethernet_static_ip_set_in_connman", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "Boot the system and check internet connection is on . ", - "expected_results": "" - }, - "2": { - "action": "Launch connmand-properties (up-right corner on desktop)", - "expected_results": "" - }, - "3": { - "action": "Choose Ethernet device and set a valid static ip address for it. \nFor example, in our internal network, we can set as following: \nip address: 10.239.48.xxx \nMask: 255.255.255.0 \nGateway (Broadcast): 10.239.48.255", - "expected_results": "" - }, - "4": { - "action": "Check the Network configuration with \"ifconfig\"", - "expected_results": "Static IP was set successfully \n" - }, - "5": { - "action": "ping to another IP adress", - "expected_results": "Ping works correclty\n" - } - }, - "summary": "ethernet_static_ip_set_in_connman" - } - }, - { - "test": { - "@alias": "bsps-hw.bsps-hw.ethernet_get_IP_in_connman_via_DHCP", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "Launch connmand-properties (up-right corner on your desktop). ", - "expected_results": "" - }, - "2": { - "action": "Check if Ethernet device can work properly with static IP, doing \"ping XXX.XXX.XXX.XXX\", once this is set.", - "expected_results": "Ping executed successfully . \n\n" - }, - "3": { - "action": "Then choose DHCP method for Ethernet device in connmand-properties.", - "expected_results": "" - }, - "4": { - "action": "Check with 'ifconfig\" and \"ping\" if Ethernet device get IP address via DHCP.", - "expected_results": "Ethernet device can get dynamic IP address via DHCP in connmand ." - } - }, - "summary": "ethernet_get_IP_in_connman_via_DHCP" - } - }, - { - "test": { "@alias": "bsps-hw.bsps-hw.connman_offline_mode_in_connman-gnome", "author": [ { @@ -241,40 +113,6 @@ }, { "test": { - "@alias": "bsps-hw.bsps-hw.standby", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "boot system and launch terminal; check output of \"date\" and launch script \"continue.sh\"", - "expected_results": "" - }, - "2": { - "action": "echo \"mem\" > /sys/power/state", - "expected_results": "" - }, - "3": { - "action": "After system go into S3 mode, move mouse or press any key to make it resume (on NUC press power button)", - "expected_results": "" - }, - "4": { - "action": "Check \"date\" and script \"continue.sh\"", - "expected_results": "" - }, - "5": { - "action": "Check if application can work as normal \ncontinue.sh as below: \n \n#!/bin/sh \n \ni=1 \nwhile [ 0 ] \ndo \n echo $i \n sleep 1 \n i=$((i+1)) \ndone ", - "expected_results": "Screen should resume back and script can run continuously incrementing the i's value from where it was before going to standby state. Date should be the same with the corresponding time increment." - } - }, - "summary": "standby" - } - }, - { - "test": { "@alias": "bsps-hw.bsps-hw.check_CPU_utilization_after_standby", "author": [ { @@ -305,88 +143,6 @@ }, { "test": { - "@alias": "bsps-hw.bsps-hw.Test_if_LAN_device_works_well_after_resume_from_suspend_state", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "boot system and launch terminal", - "expected_results": "" - }, - "2": { - "action": "echo \"mem\" > /sys/power/state", - "expected_results": "" - }, - "3": { - "action": "After system go into S3 mode, move mouse or press any key to make it resume", - "expected_results": "" - }, - "4": { - "action": "check ping status \n\nNote: This TC apply only for core-image-full-cmd.", - "expected_results": "ping should always work before/after standby" - } - }, - "summary": "Test_if_LAN_device_works_well_after_resume_from_suspend_state" - } - }, - { - "test": { - "@alias": "bsps-hw.bsps-hw.Test_if_usb_hid_device_works_well_after_resume_from_suspend_state", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "boot system and launch terminal", - "expected_results": "" - }, - "2": { - "action": "echo \"mem\" > /sys/power/state", - "expected_results": "" - }, - "3": { - "action": "After system go into S3 mode, resume the device by pressing the power button or using HID devices", - "expected_results": "Devices resumes " - }, - "4": { - "action": "check usb mouse and keyboard", - "expected_results": "Usb mouse and keyboard should work" - } - }, - "summary": "Test_if_usb_hid_device_works_well_after_resume_from_suspend_state" - } - }, - { - "test": { - "@alias": "bsps-hw.bsps-hw.click_terminal_icon_on_X_desktop", - "author": [ - { - "email": "alexandru.c.georgescu@intel.com", - "name": "alexandru.c.georgescu@intel.com" - } - ], - "execution": { - "1": { - "action": "After system launch and X start up, click terminal icon on desktop", - "expected_results": "" - }, - "2": { - "action": "Check if only one terminal window launched and no other problem met", - "expected_results": "There should be no problem after launching terminal . " - } - }, - "summary": "click_terminal_icon_on_X_desktop" - } - }, - { - "test": { "@alias": "bsps-hw.bsps-hw.Add_multiple_files_in_media_player", "author": [ { @@ -839,40 +595,6 @@ }, { "test": { - "@alias": "bsps-hw.bsps-hw.Check_if_RTC_(Real_Time_Clock)_can_work_correctly", - "author": [ - { - "email": "yi.zhao@windriver.com", - "name": "yi.zhao@windriver.com" - } - ], - "execution": { - "1": { - "action": "Read time from RTC registers. root@localhost:/root> hwclock -r Sun Mar 22 04:05:47 1970 -0.001948 seconds ", - "expected_results": "Can read and set the time from RTC.\n" - }, - "2": { - "action": "Set system current time root@localhost:/root> date 062309452008 ", - "expected_results": "" - }, - "3": { - "action": "Synchronize the system current time to RTC registers root@localhost:/root> hwclock -w ", - "expected_results": "" - }, - "4": { - "action": "Read time from RTC registers root@localhost:/root> hwclock -r ", - "expected_results": "" - }, - "5": { - "action": "Reboot target and read time from RTC again\n", - "expected_results": "" - } - }, - "summary": "Check_if_RTC_(Real_Time_Clock)_can_work_correctly" - } - }, - { - "test": { "@alias": "bsps-hw.bsps-hw.System_can_boot_up_via_NFS", "author": [ { diff --git a/poky/meta/lib/oeqa/manual/toaster-managed-mode.json b/poky/meta/lib/oeqa/manual/toaster-managed-mode.json index 12374c7c6..38b396ab0 100644 --- a/poky/meta/lib/oeqa/manual/toaster-managed-mode.json +++ b/poky/meta/lib/oeqa/manual/toaster-managed-mode.json @@ -2348,7 +2348,7 @@ "expected_results": "" }, "3": { - "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base, core-image-clutter) to name a few. ", + "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base) to name a few. ", "expected_results": " All recipes are built correctly \n\n" }, "4": { @@ -2382,7 +2382,7 @@ "expected_results": "" }, "3": { - "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base, core-image-clutter) to name a few. \n\n", + "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base) to name a few. \n\n", "expected_results": "All recipes are built correctly \n\n" }, "4": { @@ -2420,7 +2420,7 @@ "expected_results": "" }, "3": { - "action": "Build 4 recipes example (core-image-sato, core-image-minimal, core-image-base, core-image-clutter) to name a few. \n\n", + "action": "Build 4 recipes example (core-image-sato, core-image-minimal, core-image-base) to name a few. \n\n", "expected_results": " All recipes are built correctly \n\n" }, "4": { diff --git a/poky/meta/lib/oeqa/runtime/cases/date.py b/poky/meta/lib/oeqa/runtime/cases/date.py index fdd2a6ae5..e14322911 100644 --- a/poky/meta/lib/oeqa/runtime/cases/date.py +++ b/poky/meta/lib/oeqa/runtime/cases/date.py @@ -13,12 +13,12 @@ class DateTest(OERuntimeTestCase): def setUp(self): if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd': self.logger.debug('Stopping systemd-timesyncd daemon') - self.target.run('systemctl disable --now systemd-timesyncd') + self.target.run('systemctl disable --now --runtime systemd-timesyncd') def tearDown(self): if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd': self.logger.debug('Starting systemd-timesyncd daemon') - self.target.run('systemctl enable --now systemd-timesyncd') + self.target.run('systemctl enable --now --runtime systemd-timesyncd') @OETestDepends(['ssh.SSHTest.test_ssh']) @OEHasPackage(['coreutils', 'busybox']) diff --git a/poky/meta/lib/oeqa/runtime/cases/parselogs.py b/poky/meta/lib/oeqa/runtime/cases/parselogs.py index 4714741af..1bb042552 100644 --- a/poky/meta/lib/oeqa/runtime/cases/parselogs.py +++ b/poky/meta/lib/oeqa/runtime/cases/parselogs.py @@ -88,6 +88,8 @@ qemux86_common = [ 'tsc: HPET/PMTIMER calibration failed', "modeset(0): Failed to initialize the DRI2 extension", "glamor initialization failed", + "blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ)", + "floppy: error", ] + common_errors ignore_errors = { diff --git a/poky/meta/lib/oeqa/runtime/cases/rpm.py b/poky/meta/lib/oeqa/runtime/cases/rpm.py index 8e18b426f..7a9d62c00 100644 --- a/poky/meta/lib/oeqa/runtime/cases/rpm.py +++ b/poky/meta/lib/oeqa/runtime/cases/rpm.py @@ -141,13 +141,4 @@ class RpmInstallRemoveTest(OERuntimeTestCase): self.tc.target.run('rm -f %s' % self.dst) - # if using systemd this should ensure all entries are flushed to /var - status, output = self.target.run("journalctl --sync") - # Get the amount of entries in the log file - status, output = self.target.run(check_log_cmd) - msg = 'Failed to get the final size of the log file.' - self.assertEqual(0, status, msg=msg) - # Check that there's enough of them - self.assertGreaterEqual(int(output), 80, - 'Cound not find sufficient amount of rpm entries in /var/log/messages, found {} entries'.format(output)) diff --git a/poky/meta/lib/oeqa/runtime/cases/rtc.py b/poky/meta/lib/oeqa/runtime/cases/rtc.py index a34c101a9..c4e668132 100644 --- a/poky/meta/lib/oeqa/runtime/cases/rtc.py +++ b/poky/meta/lib/oeqa/runtime/cases/rtc.py @@ -9,12 +9,12 @@ class RTCTest(OERuntimeTestCase): def setUp(self): if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd': self.logger.debug('Stopping systemd-timesyncd daemon') - self.target.run('systemctl disable --now systemd-timesyncd') + self.target.run('systemctl disable --now --runtime systemd-timesyncd') def tearDown(self): if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd': self.logger.debug('Starting systemd-timesyncd daemon') - self.target.run('systemctl enable --now systemd-timesyncd') + self.target.run('systemctl enable --now --runtime systemd-timesyncd') @OETestDepends(['ssh.SSHTest.test_ssh']) @OEHasPackage(['coreutils', 'busybox']) diff --git a/poky/meta/lib/oeqa/runtime/decorator/package.py b/poky/meta/lib/oeqa/runtime/decorator/package.py index 57178655c..2d7e174db 100644 --- a/poky/meta/lib/oeqa/runtime/decorator/package.py +++ b/poky/meta/lib/oeqa/runtime/decorator/package.py @@ -45,14 +45,14 @@ class OEHasPackage(OETestDecorator): msg = 'Checking if %s is not installed' % ', '.join(unneed_pkgs) self.logger.debug(msg) if not self.case.tc.image_packages.isdisjoint(unneed_pkgs): - msg = "Test can't run with %s installed" % ', or'.join(unneed_pkgs) + msg = "Test can't run with %s installed" % ', or '.join(unneed_pkgs) self._decorator_fail(msg) if need_pkgs: msg = 'Checking if at least one of %s is installed' % ', '.join(need_pkgs) self.logger.debug(msg) if self.case.tc.image_packages.isdisjoint(need_pkgs): - msg = "Test requires %s to be installed" % ', or'.join(need_pkgs) + msg = "Test requires %s to be installed" % ', or '.join(need_pkgs) self._decorator_fail(msg) def _decorator_fail(self, msg): diff --git a/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py b/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py index f7c356ad0..7ac03f0ce 100644 --- a/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py +++ b/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py @@ -90,7 +90,7 @@ class RebuildFromSState(SStateBase): self.assertFalse(failed_cleansstate, msg="The following recipes have failed cleansstate(all others have passed both cleansstate and rebuild from sstate tests): %s" % ' '.join(map(str, failed_cleansstate))) def test_sstate_relocation(self): - self.run_test_sstate_rebuild(['core-image-sato-sdk'], relocate=True, rebuild_dependencies=True) + self.run_test_sstate_rebuild(['core-image-weston-sdk'], relocate=True, rebuild_dependencies=True) def test_sstate_rebuild(self): - self.run_test_sstate_rebuild(['core-image-sato-sdk'], relocate=False, rebuild_dependencies=True) + self.run_test_sstate_rebuild(['core-image-weston-sdk'], relocate=False, rebuild_dependencies=True) diff --git a/poky/meta/lib/oeqa/selftest/cases/bblayers.py b/poky/meta/lib/oeqa/selftest/cases/bblayers.py index f131d9856..7d74833f6 100644 --- a/poky/meta/lib/oeqa/selftest/cases/bblayers.py +++ b/poky/meta/lib/oeqa/selftest/cases/bblayers.py @@ -12,6 +12,11 @@ from oeqa.selftest.case import OESelftestTestCase class BitbakeLayers(OESelftestTestCase): + def test_bitbakelayers_layerindexshowdepends(self): + result = runCmd('bitbake-layers layerindex-show-depends meta-poky') + find_in_contents = re.search("openembedded-core", result.output) + self.assertTrue(find_in_contents, msg = "openembedded-core should have been listed at this step. bitbake-layers layerindex-show-depends meta-poky output: %s" % result.output) + def test_bitbakelayers_showcrossdepends(self): result = runCmd('bitbake-layers show-cross-depends') self.assertIn('aspell', result.output) diff --git a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py index 20fe8ed8f..754b77def 100644 --- a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py +++ b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py @@ -50,23 +50,23 @@ class ImageOptionsTests(OESelftestTestCase): def test_read_only_image(self): distro_features = get_bb_var('DISTRO_FEATURES') if not ('x11' in distro_features and 'opengl' in distro_features): - self.skipTest('core-image-sato requires x11 and opengl in distro features') + self.skipTest('core-image-sato/weston requires x11 and opengl in distro features') self.write_config('IMAGE_FEATURES += "read-only-rootfs"') - bitbake("core-image-sato") + bitbake("core-image-sato core-image-weston") # do_image will fail if there are any pending postinsts class DiskMonTest(OESelftestTestCase): def test_stoptask_behavior(self): - self.write_config('BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},100000G,100K"') + self.write_config('BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},100000G,100K"\nBB_HEARTBEAT_EVENT = "1"') res = bitbake("delay -c delay", ignore_status = True) self.assertTrue('ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!' in res.output, msg = "Tasks should have stopped. Disk monitor is set to STOPTASK: %s" % res.output) self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output)) - self.write_config('BB_DISKMON_DIRS = "ABORT,${TMPDIR},100000G,100K"') + self.write_config('BB_DISKMON_DIRS = "ABORT,${TMPDIR},100000G,100K"\nBB_HEARTBEAT_EVENT = "1"') res = bitbake("delay -c delay", ignore_status = True) self.assertTrue('ERROR: Immediately abort since the disk space monitor action is "ABORT"!' in res.output, "Tasks should have been aborted immediatelly. Disk monitor is set to ABORT: %s" % res.output) self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output)) - self.write_config('BB_DISKMON_DIRS = "WARN,${TMPDIR},100000G,100K"') + self.write_config('BB_DISKMON_DIRS = "WARN,${TMPDIR},100000G,100K"\nBB_HEARTBEAT_EVENT = "1"') res = bitbake("delay -c delay") self.assertTrue('WARNING: The free space' in res.output, msg = "A warning should have been displayed for disk monitor is set to WARN: %s" %res.output) diff --git a/poky/meta/lib/oeqa/selftest/cases/distrodata.py b/poky/meta/lib/oeqa/selftest/cases/distrodata.py index fbc0c2a98..0ad6e1ef9 100644 --- a/poky/meta/lib/oeqa/selftest/cases/distrodata.py +++ b/poky/meta/lib/oeqa/selftest/cases/distrodata.py @@ -99,7 +99,7 @@ The following recipes do not have a DESCRIPTION. Please add an entry for DESCRIP return True return False - feature = 'require conf/distro/include/maintainers.inc\nLICENSE_FLAGS_WHITELIST += " commercial"\nPARSE_ALL_RECIPES = "1"\n' + feature = 'require conf/distro/include/maintainers.inc\nLICENSE_FLAGS_WHITELIST += " commercial"\nPARSE_ALL_RECIPES = "1"\nPACKAGE_CLASSES = "package_ipk package_deb package_rpm"\n' self.write_config(feature) with bb.tinfoil.Tinfoil() as tinfoil: diff --git a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py index 6723a8198..2de22d340 100644 --- a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py +++ b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py @@ -68,18 +68,6 @@ class ImageFeatures(OESelftestTestCase): self.assertEqual(status, 0, 'ssh to user tester failed with %s' % output) - def test_clutter_image_can_be_built(self): - """ - Summary: Check if clutter image can be built - Expected: 1. core-image-clutter can be built - Product: oe-core - Author: Ionut Chisanovici <ionutx.chisanovici@intel.com> - AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com> - """ - - # Build a core-image-clutter - bitbake('core-image-clutter') - def test_wayland_support_in_image(self): """ Summary: Check Wayland support in image @@ -240,8 +228,8 @@ USERADD_GID_TABLES += "files/static-group" def test_no_busybox_base_utils(self): config = """ -# Enable x11 -DISTRO_FEATURES_append += "x11" +# Enable wayland +DISTRO_FEATURES_append += "pam opengl wayland" # Switch to systemd DISTRO_FEATURES += "systemd" @@ -262,7 +250,7 @@ PNBLACKLIST[busybox] = "Don't build this" """ self.write_config(config) - bitbake("--graphviz core-image-sato") + bitbake("--graphviz core-image-weston") def test_image_gen_debugfs(self): """ diff --git a/poky/meta/lib/oeqa/selftest/cases/runqemu.py b/poky/meta/lib/oeqa/selftest/cases/runqemu.py index 7e676bcb4..da22f77b2 100644 --- a/poky/meta/lib/oeqa/selftest/cases/runqemu.py +++ b/poky/meta/lib/oeqa/selftest/cases/runqemu.py @@ -163,12 +163,11 @@ class QemuTest(OESelftestTestCase): bitbake(cls.recipe) def _start_qemu_shutdown_check_if_shutdown_succeeded(self, qemu, timeout): + # Allow the runner's LoggingThread instance to exit without errors + # (such as the exception "Console connection closed unexpectedly") + # as qemu will disappear when we shut it down + qemu.runner.allowexit() qemu.run_serial("shutdown -h now") - # Stop thread will stop the LoggingThread instance used for logging - # qemu through serial console, stop thread will prevent this code - # from facing exception (Console connection closed unexpectedly) - # when qemu was shutdown by the above shutdown command - qemu.runner.stop_thread() time_track = 0 try: while True: diff --git a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py index b20c5b427..d0c244072 100644 --- a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py +++ b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py @@ -14,11 +14,6 @@ from oeqa.core.decorator.data import skipIfNotQemu class TestExport(OESelftestTestCase): - @classmethod - def tearDownClass(cls): - runCmd("rm -rf /tmp/sdk") - super(TestExport, cls).tearDownClass() - def test_testexport_basic(self): """ Summary: Check basic testexport functionality with only ping test enabled. @@ -95,19 +90,20 @@ class TestExport(OESelftestTestCase): msg = "Couldn't find SDK tarball: %s" % tarball_path self.assertEqual(os.path.isfile(tarball_path), True, msg) - # Extract SDK and run tar from SDK - result = runCmd("%s -y -d /tmp/sdk" % tarball_path) - self.assertEqual(0, result.status, "Couldn't extract SDK") + with tempfile.TemporaryDirectory() as tmpdirname: + # Extract SDK and run tar from SDK + result = runCmd("%s -y -d %s" % (tarball_path, tmpdirname)) + self.assertEqual(0, result.status, "Couldn't extract SDK") - env_script = result.output.split()[-1] - result = runCmd(". %s; which tar" % env_script, shell=True) - self.assertEqual(0, result.status, "Couldn't setup SDK environment") - is_sdk_tar = True if "/tmp/sdk" in result.output else False - self.assertTrue(is_sdk_tar, "Couldn't setup SDK environment") + env_script = result.output.split()[-1] + result = runCmd(". %s; which tar" % env_script, shell=True) + self.assertEqual(0, result.status, "Couldn't setup SDK environment") + is_sdk_tar = True if tmpdirname in result.output else False + self.assertTrue(is_sdk_tar, "Couldn't setup SDK environment") - tar_sdk = result.output - result = runCmd("%s --version" % tar_sdk) - self.assertEqual(0, result.status, "Couldn't run tar from SDK") + tar_sdk = result.output + result = runCmd("%s --version" % tar_sdk) + self.assertEqual(0, result.status, "Couldn't run tar from SDK") class TestImage(OESelftestTestCase): @@ -128,7 +124,6 @@ class TestImage(OESelftestTestCase): features += 'TEST_SUITES = "ping ssh selftest"\n' self.write_config(features) - # Build core-image-sato and testimage bitbake('core-image-full-cmdline socat') bitbake('-c testimage core-image-full-cmdline') @@ -164,7 +159,6 @@ class TestImage(OESelftestTestCase): features += 'PSEUDO_IGNORE_PATHS .= ",%s"\n' % self.gpg_home self.write_config(features) - # Build core-image-sato and testimage bitbake('core-image-full-cmdline socat') bitbake('-c testimage core-image-full-cmdline') diff --git a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py index c46e8ba48..9db2a0bb4 100644 --- a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py +++ b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py @@ -261,7 +261,7 @@ PACKAGE_CLASSES = "package_rpm package_ipk package_deb" BB_SIGNATURE_HANDLER = "OEBasicHash" """) self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash") - bitbake("core-image-sato -S none") + bitbake("core-image-weston -S none") self.write_config(""" MACHINE = "qemux86" TMPDIR = "${TOPDIR}/tmp-sstatesamehash2" @@ -273,12 +273,12 @@ PACKAGE_CLASSES = "package_rpm package_ipk package_deb" BB_SIGNATURE_HANDLER = "OEBasicHash" """) self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2") - bitbake("core-image-sato -S none") + bitbake("core-image-weston -S none") def get_files(d): f = [] for root, dirs, files in os.walk(d): - if "core-image-sato" in root: + if "core-image-weston" in root: # SDKMACHINE changing will change # do_rootfs/do_testimage/do_build stamps of images which # is safe to ignore. @@ -306,7 +306,7 @@ NATIVELSBSTRING = \"DistroA\" BB_SIGNATURE_HANDLER = "OEBasicHash" """) self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash") - bitbake("core-image-sato -S none") + bitbake("core-image-weston -S none") self.write_config(""" TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\" TCLIBCAPPEND = \"\" @@ -314,7 +314,7 @@ NATIVELSBSTRING = \"DistroB\" BB_SIGNATURE_HANDLER = "OEBasicHash" """) self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2") - bitbake("core-image-sato -S none") + bitbake("core-image-weston -S none") def get_files(d): f = [] diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py index fa81584a8..a11e2d078 100644 --- a/poky/meta/lib/oeqa/selftest/cases/wic.py +++ b/poky/meta/lib/oeqa/selftest/cases/wic.py @@ -1306,8 +1306,8 @@ class Wic2(WicTestCase): result = runCmd("%s/usr/sbin/sfdisk -F %s" % (sysroot, new_image_path)) self.assertTrue("0 B, 0 bytes, 0 sectors" in result.output) - os.rename(image_path, image_path + '.bak') - os.rename(new_image_path, image_path) + bb.utils.rename(image_path, image_path + '.bak') + bb.utils.rename(new_image_path, image_path) # Check if it boots in qemu with runqemu('core-image-minimal', ssh=False) as qemu: @@ -1318,7 +1318,7 @@ class Wic2(WicTestCase): if os.path.exists(new_image_path): os.unlink(new_image_path) if os.path.exists(image_path + '.bak'): - os.rename(image_path + '.bak', image_path) + bb.utils.rename(image_path + '.bak', image_path) def test_wic_ls_ext(self): """Test listing content of the ext partition using 'wic ls'""" diff --git a/poky/meta/lib/oeqa/targetcontrol.py b/poky/meta/lib/oeqa/targetcontrol.py index 12057f855..005ebaa7f 100644 --- a/poky/meta/lib/oeqa/targetcontrol.py +++ b/poky/meta/lib/oeqa/targetcontrol.py @@ -17,6 +17,7 @@ from oeqa.utils.sshcontrol import SSHControl from oeqa.utils.qemurunner import QemuRunner from oeqa.utils.qemutinyrunner import QemuTinyRunner from oeqa.utils.dump import TargetDumper +from oeqa.utils.dump import MonitorDumper from oeqa.controllers.testtargetloader import TestTargetLoader from abc import ABCMeta, abstractmethod @@ -108,6 +109,7 @@ class QemuTarget(BaseTarget): self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime) dump_target_cmds = d.getVar("testimage_dump_target") dump_host_cmds = d.getVar("testimage_dump_host") + dump_monitor_cmds = d.getVar("testimage_dump_monitor") dump_dir = d.getVar("TESTIMAGE_DUMP_DIR") if not dump_dir: dump_dir = os.path.join(d.getVar('LOG_DIR'), 'runtime-hostdump') @@ -149,6 +151,7 @@ class QemuTarget(BaseTarget): serial_ports = len(d.getVar("SERIAL_CONSOLES").split())) self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner) + self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner) def deploy(self): bb.utils.mkdirhier(self.testdir) diff --git a/poky/meta/lib/oeqa/utils/commands.py b/poky/meta/lib/oeqa/utils/commands.py index a71c16ab1..024261410 100644 --- a/poky/meta/lib/oeqa/utils/commands.py +++ b/poky/meta/lib/oeqa/utils/commands.py @@ -174,11 +174,8 @@ def runCmd(command, ignore_status=False, timeout=None, assert_error=True, sync=T if native_sysroot: extra_paths = "%s/sbin:%s/usr/sbin:%s/usr/bin" % \ (native_sysroot, native_sysroot, native_sysroot) - extra_libpaths = "%s/lib:%s/usr/lib" % \ - (native_sysroot, native_sysroot) nenv = dict(options.get('env', os.environ)) nenv['PATH'] = extra_paths + ':' + nenv.get('PATH', '') - nenv['LD_LIBRARY_PATH'] = extra_libpaths + ':' + nenv.get('LD_LIBRARY_PATH', '') options['env'] = nenv cmd = Command(command, timeout=timeout, output_log=output_log, **options) diff --git a/poky/meta/lib/oeqa/utils/dump.py b/poky/meta/lib/oeqa/utils/dump.py index 09a44329e..843e19fe8 100644 --- a/poky/meta/lib/oeqa/utils/dump.py +++ b/poky/meta/lib/oeqa/utils/dump.py @@ -4,6 +4,7 @@ import os import sys +import json import errno import datetime import itertools @@ -51,6 +52,8 @@ class BaseDumper(object): prefix = "host" elif isinstance(self, TargetDumper): prefix = "target" + elif isinstance(self, MonitorDumper): + prefix = "qmp" else: prefix = "unknown" for i in itertools.count(): @@ -58,9 +61,12 @@ class BaseDumper(object): fullname = os.path.join(self.dump_dir, filename) if not os.path.exists(fullname): break - with open(fullname, 'w') as dump_file: - dump_file.write(output) - + if isinstance(self, MonitorDumper): + with open(fullname, 'w') as json_file: + json.dump(output, json_file, indent=4) + else: + with open(fullname, 'w') as dump_file: + dump_file.write(output) class HostDumper(BaseDumper): """ Class to get dumps from the host running the tests """ @@ -96,3 +102,23 @@ class TargetDumper(BaseDumper): except: print("Tried to dump info from target but " "serial console failed") + print("Failed CMD: %s" % (cmd)) + +class MonitorDumper(BaseDumper): + """ Class to get dumps via the Qemu Monitor, it only works with QemuRunner """ + + def __init__(self, cmds, parent_dir, runner): + super(MonitorDumper, self).__init__(cmds, parent_dir) + self.runner = runner + + def dump_monitor(self, dump_dir=""): + if self.runner is None: + return + if dump_dir: + self.dump_dir = dump_dir + for cmd in self.cmds: + try: + output = self.runner.run_monitor(cmd) + self._write_dump(cmd, output) + except: + print("Failed to dump QMP CMD: %s" % (cmd)) diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py index 278904ba0..abbc7f7d1 100644 --- a/poky/meta/lib/oeqa/utils/qemurunner.py +++ b/poky/meta/lib/oeqa/utils/qemurunner.py @@ -20,8 +20,10 @@ import string import threading import codecs import logging +import tempfile from oeqa.utils.dump import HostDumper from collections import defaultdict +import importlib # Get Unicode non printable control chars control_range = list(range(0,32))+list(range(127,160)) @@ -63,7 +65,7 @@ class QemuRunner: self.boot_patterns = boot_patterns self.tmpfsdir = tmpfsdir - self.runqemutime = 120 + self.runqemutime = 300 if not workdir: workdir = os.getcwd() self.qemu_pidfile = workdir + '/pidfile_' + str(os.getpid()) @@ -71,6 +73,8 @@ class QemuRunner: self.monitorpipe = None self.logger = logger + # Whether we're expecting an exit and should show related errors + self.canexit = False # Enable testing other OS's # Set commands for target communication, and default to Linux ALWAYS @@ -172,6 +176,29 @@ class QemuRunner: return self.launch(launch_cmd, qemuparams=qemuparams, get_ip=get_ip, extra_bootparams=extra_bootparams, env=env) def launch(self, launch_cmd, get_ip = True, qemuparams = None, extra_bootparams = None, env = None): + # use logfile to determine the recipe-sysroot-native path and + # then add in the site-packages path components and add that + # to the python sys.path so qmp.py can be found. + python_path = os.path.dirname(os.path.dirname(self.logfile)) + python_path += "/recipe-sysroot-native/usr/lib/python3.9/site-packages" + sys.path.append(python_path) + importlib.invalidate_caches() + try: + qmp = importlib.import_module("qmp") + except: + self.logger.error("qemurunner: qmp.py missing, please ensure it's installed") + return False + # Path relative to tmpdir used as cwd for qemu below to avoid unix socket path length issues + qmp_file = "." + next(tempfile._get_candidate_names()) + qmp_param = ' -S -qmp unix:./%s,server,wait' % (qmp_file) + qmp_port = self.tmpdir + "/" + qmp_file + # Create a second socket connection for debugging use, + # note this will NOT cause qemu to block waiting for the connection + qmp_file2 = "." + next(tempfile._get_candidate_names()) + qmp_param += ' -qmp unix:./%s,server,nowait' % (qmp_file2) + qmp_port2 = self.tmpdir + "/" + qmp_file2 + self.logger.info("QMP Available for connection at %s" % (qmp_port2)) + try: if self.serial_ports >= 2: self.threadsock, threadport = self.create_socket() @@ -188,7 +215,8 @@ class QemuRunner: # and analyze descendents in order to determine it. if os.path.exists(self.qemu_pidfile): os.remove(self.qemu_pidfile) - self.qemuparams = 'bootparams="{0}" qemuparams="-pidfile {1}"'.format(bootparams, self.qemu_pidfile) + self.qemuparams = 'bootparams="{0}" qemuparams="-pidfile {1} {2}"'.format(bootparams, self.qemu_pidfile, qmp_param) + if qemuparams: self.qemuparams = self.qemuparams[:-1] + " " + qemuparams + " " + '\"' @@ -206,7 +234,7 @@ class QemuRunner: # blocking at the end of the runqemu script when using this within # oe-selftest (this makes stty error out immediately). There ought # to be a proper fix but this will suffice for now. - self.runqemu = subprocess.Popen(launch_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, preexec_fn=os.setpgrp, env=env) + self.runqemu = subprocess.Popen(launch_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, preexec_fn=os.setpgrp, env=env, cwd=self.tmpdir) output = self.runqemu.stdout # @@ -242,6 +270,7 @@ class QemuRunner: while not self.is_alive() and time.time() < endtime: if self.runqemu.poll(): if self.runqemu_exited: + self.logger.warning("runqemu during is_alive() test") return False if self.runqemu.returncode: # No point waiting any longer @@ -253,7 +282,10 @@ class QemuRunner: time.sleep(0.5) if self.runqemu_exited: - return False + self.logger.warning("runqemu after timeout") + + if self.runqemu.returncode: + self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode) if not self.is_alive(): self.logger.error("Qemu pid didn't appear in %s seconds (%s)" % @@ -280,6 +312,62 @@ class QemuRunner: self.logger.error("No output from runqemu.\n") return False + # Create the client socket for the QEMU Monitor Control Socket + # This will allow us to read status from Qemu if the the process + # is still alive + self.logger.debug("QMP Initializing to %s" % (qmp_port)) + # chdir dance for path length issues with unix sockets + origpath = os.getcwd() + try: + os.chdir(os.path.dirname(qmp_port)) + try: + self.qmp = qmp.QEMUMonitorProtocol(os.path.basename(qmp_port)) + except OSError as msg: + self.logger.warning("Failed to initialize qemu monitor socket: %s File: %s" % (msg, msg.filename)) + return False + + self.logger.debug("QMP Connecting to %s" % (qmp_port)) + if not os.path.exists(qmp_port) and self.is_alive(): + self.logger.debug("QMP Port does not exist waiting for it to be created") + endtime = time.time() + self.runqemutime + while not os.path.exists(qmp_port) and self.is_alive() and time.time() < endtime: + self.logger.info("QMP port does not exist yet!") + time.sleep(0.5) + if not os.path.exists(qmp_port) and self.is_alive(): + self.logger.warning("QMP Port still does not exist but QEMU is alive") + return False + + try: + self.qmp.connect() + except OSError as msg: + self.logger.warning("Failed to connect qemu monitor socket: %s File: %s" % (msg, msg.filename)) + return False + except qmp.QMPConnectError as msg: + self.logger.warning("Failed to communicate with qemu monitor: %s" % (msg)) + return False + finally: + os.chdir(origpath) + + # We worry that mmap'd libraries may cause page faults which hang the qemu VM for periods + # causing failures. Before we "start" qemu, read through it's mapped files to try and + # ensure we don't hit page faults later + mapdir = "/proc/" + str(self.qemupid) + "/map_files/" + try: + for f in os.listdir(mapdir): + linktarget = os.readlink(os.path.join(mapdir, f)) + if not linktarget.startswith("/") or linktarget.startswith("/dev") or "deleted" in linktarget: + continue + with open(linktarget, "rb") as readf: + data = True + while data: + data = readf.read(4096) + # Centos7 doesn't allow us to read /map_files/ + except PermissionError: + pass + + # Release the qemu process to continue running + self.run_monitor('cont') + # We are alive: qemu is running out = self.getOutput(output) netconf = False # network configuration is not required by default @@ -380,7 +468,6 @@ class QemuRunner: sock.close() stopread = True - if not reachedlogin: if time.time() >= endtime: self.logger.warning("Target didn't reach login banner in %d seconds (%s)" % @@ -441,6 +528,9 @@ class QemuRunner: self.runqemu.stdout.close() self.runqemu_exited = True + if hasattr(self, 'qmp') and self.qmp: + self.qmp.close() + self.qmp = None if hasattr(self, 'server_socket') and self.server_socket: self.server_socket.close() self.server_socket = None @@ -471,6 +561,11 @@ class QemuRunner: self.thread.stop() self.thread.join() + def allowexit(self): + self.canexit = True + if self.thread: + self.thread.allowexit() + def restart(self, qemuparams = None): self.logger.warning("Restarting qemu process") if self.runqemu.poll() is None: @@ -499,6 +594,9 @@ class QemuRunner: return True return False + def run_monitor(self, command, timeout=60): + return self.qmp.cmd(command) + def run_serial(self, command, raw=False, timeout=60): # We assume target system have echo to get command status if not raw: @@ -526,7 +624,9 @@ class QemuRunner: if re.search(self.boot_patterns['search_cmd_finished'], data): break else: - raise Exception("No data on serial console socket") + if self.canexit: + return (1, "") + raise Exception("No data on serial console socket, connection closed?") if data: if raw: @@ -564,6 +664,7 @@ class LoggingThread(threading.Thread): self.logger = logger self.readsock = None self.running = False + self.canexit = False self.errorevents = select.POLLERR | select.POLLHUP | select.POLLNVAL self.readevents = select.POLLIN | select.POLLPRI @@ -597,6 +698,9 @@ class LoggingThread(threading.Thread): self.close_ignore_error(self.writepipe) self.running = False + def allowexit(self): + self.canexit = True + def eventloop(self): poll = select.poll() event_read_mask = self.errorevents | self.readevents @@ -642,7 +746,7 @@ class LoggingThread(threading.Thread): data = self.readsock.recv(count) except socket.error as e: if e.errno == errno.EAGAIN or e.errno == errno.EWOULDBLOCK: - return '' + return b'' else: raise @@ -653,7 +757,9 @@ class LoggingThread(threading.Thread): # happened. But for this code it counts as an # error since the connection shouldn't go away # until qemu exits. - raise Exception("Console connection closed unexpectedly") + if not self.canexit: + raise Exception("Console connection closed unexpectedly") + return b'' return data diff --git a/poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.12.bb b/poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.13.bb index d27126603..fa9886037 100644 --- a/poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.12.bb +++ b/poky/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.13.bb @@ -19,8 +19,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/files/${BP}.tar.bz2 \ file://gnu-efi-3.0.9-fix-clang-build.patch \ " -SRC_URI[md5sum] = "926763ff37bc9db3a9035cec41eb2f45" -SRC_URI[sha256sum] = "0196f2e1fd3c334b66e610a608a0e59233474c7a01bec7bc53989639aa327669" +SRC_URI[sha256sum] = "2fccf715279c46ee69c4859186af8150d07a13f4d19876e5459cd65be82d3b7d" COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux" COMPATIBLE_HOST_armv4 = 'null' diff --git a/poky/meta/recipes-bsp/grub/grub-efi_git.bb b/poky/meta/recipes-bsp/grub/grub-efi_2.06.bb index 240fde7db..287845c50 100644 --- a/poky/meta/recipes-bsp/grub/grub-efi_git.bb +++ b/poky/meta/recipes-bsp/grub/grub-efi_2.06.bb @@ -11,6 +11,8 @@ SRC_URI += " \ file://cfg \ " +S = "${WORKDIR}/grub-${PV}" + # Determine the target arch for the grub modules python __anonymous () { import re diff --git a/poky/meta/recipes-bsp/grub/grub2.inc b/poky/meta/recipes-bsp/grub/grub2.inc index 590deb8d9..19294760c 100644 --- a/poky/meta/recipes-bsp/grub/grub2.inc +++ b/poky/meta/recipes-bsp/grub/grub2.inc @@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" CVE_PRODUCT = "grub2" -SRC_URI = "https://alpha.gnu.org/gnu/grub/grub-${REALPV}.tar.xz \ +SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \ file://0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch \ file://autogen.sh-exclude-pc.patch \ file://grub-module-explicitly-keeps-symbole-.module_license.patch \ @@ -22,15 +22,10 @@ SRC_URI = "https://alpha.gnu.org/gnu/grub/grub-${REALPV}.tar.xz \ file://0001-RISC-V-Restore-the-typcast-to-long.patch \ " -SRC_URI[sha256sum] = "2c87f1f21e2ab50043e6cd9163c08f1b6c3a6171556bf23ff9ed65b074145484" +SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae803f5f" -REALPV = "2.06~rc1" -PV = "2.04+${REALPV}" - -S = "${WORKDIR}/grub-${REALPV}" - -UPSTREAM_CHECK_URI = "${GNU_MIRROR}/grub" -UPSTREAM_CHECK_REGEX = "grub-(?P<pver>\d+(\.\d+)+)\.tar\.(gz|xz)" +# Applies only to RHEL +CVE_CHECK_WHITELIST += "CVE-2019-14865" DEPENDS = "flex-native bison-native gettext-native" @@ -49,6 +44,8 @@ GRUBPLATFORM ??= "pc" inherit autotools gettext texinfo pkgconfig +CFLAGS_remove = "-O2" + EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} \ --disable-grub-mkfont \ --program-prefix="" \ diff --git a/poky/meta/recipes-bsp/grub/grub_git.bb b/poky/meta/recipes-bsp/grub/grub_2.06.bb index d4e09faa4..d4e09faa4 100644 --- a/poky/meta/recipes-bsp/grub/grub_git.bb +++ b/poky/meta/recipes-bsp/grub/grub_2.06.bb diff --git a/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc b/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc index 2e3294324..cc31ab3b1 100644 --- a/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc +++ b/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc @@ -7,12 +7,25 @@ def riscv_get_extra_oemake_image(d): return "FW_PAYLOAD_PATH=" + deploy_dir + "/" + sbi_payload +def riscv_get_extra_oemake_fdt(d): + sbi_fdt = d.getVar('RISCV_SBI_FDT') + deploy_dir = d.getVar('DEPLOY_DIR_IMAGE') + + if sbi_fdt is None: + return "" + + return "FW_FDT_PATH=" + deploy_dir + "/" + sbi_fdt + def riscv_get_do_compile_depends(d): sbi_payload = d.getVar('RISCV_SBI_PAYLOAD') + sbi_fdt = d.getVar('RISCV_SBI_FDT') - if sbi_payload is None: + if sbi_payload is None and sbi_fdt is None: return "" + if sbi_fdt is not None and 'u-boot.bin' in sbi_payload: + return "virtual/kernel:do_deploy virtual/bootloader:do_deploy" + if 'linux' in sbi_payload or 'Image' in sbi_payload: return "virtual/kernel:do_deploy" if 'u-boot.bin' in sbi_payload: diff --git a/poky/meta/recipes-bsp/opensbi/opensbi_0.9.bb b/poky/meta/recipes-bsp/opensbi/opensbi_0.9.bb index cb1c3f2eb..5fee52136 100644 --- a/poky/meta/recipes-bsp/opensbi/opensbi_0.9.bb +++ b/poky/meta/recipes-bsp/opensbi/opensbi_0.9.bb @@ -15,9 +15,10 @@ SRC_URI = "git://github.com/riscv/opensbi.git;branch=master \ S = "${WORKDIR}/git" -EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D}" +EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D} FW_PIC=n" # If RISCV_SBI_PAYLOAD is set then include it as a payload EXTRA_OEMAKE_append = " ${@riscv_get_extra_oemake_image(d)}" +EXTRA_OEMAKE_append = " ${@riscv_get_extra_oemake_fdt(d)}" # Required if specifying a custom payload do_compile[depends] += "${@riscv_get_do_compile_depends(d)}" diff --git a/poky/meta/recipes-bsp/u-boot/files/0001-add-valid-fdt-check.patch b/poky/meta/recipes-bsp/u-boot/files/0001-add-valid-fdt-check.patch deleted file mode 100644 index d4ac9e2ed..000000000 --- a/poky/meta/recipes-bsp/u-boot/files/0001-add-valid-fdt-check.patch +++ /dev/null @@ -1,36 +0,0 @@ -From ea1a9ec5f430359720d9a0621ed1acfbba6a142a Mon Sep 17 00:00:00 2001 -From: Heinrich Schuchardt <xypron.glpk@gmx.de> -Date: Wed, 13 Jan 2021 02:09:12 +0100 -Subject: [PATCH] image-fit: fit_check_format check for valid FDT - -fit_check_format() must check that the buffer contains a flattened device -tree before calling any device tree library functions. - -Failure to do may cause segmentation faults. - -Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> - -Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/ea1a9ec5f430359720d9a0621ed1acfbba6a142a] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- - common/image-fit.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/common/image-fit.c b/common/image-fit.c -index 6a8787ca0a..21c44bdf69 100644 ---- a/common/image-fit.c -+++ b/common/image-fit.c -@@ -1553,6 +1553,12 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp) - */ - int fit_check_format(const void *fit) - { -+ /* A FIT image must be a valid FDT */ -+ if (fdt_check_header(fit)) { -+ debug("Wrong FIT format: not a flattened device tree\n"); -+ return 0; -+ } -+ - /* mandatory / node 'description' property */ - if (fdt_getprop(fit, 0, FIT_DESC_PROP, NULL) == NULL) { - debug("Wrong FIT format: no description\n"); diff --git a/poky/meta/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch b/poky/meta/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch new file mode 100644 index 000000000..81687203e --- /dev/null +++ b/poky/meta/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch @@ -0,0 +1,41 @@ +From 77fe3ad2ab2953ccdf6e9417cbecc060b45d3e55 Mon Sep 17 00:00:00 2001 +From: Ming Liu <liu.ming50@gmail.com> +Date: Sun, 30 May 2021 10:32:08 +0200 +Subject: [PATCH] tools: image-host: fix wrong return value + +The return value '-ENOSPC' of fit_set_timestamp function does not match +the caller fit_image_write_sig's expection which is '-FDT_ERR_NOSPACE'. + +Fix it by not calling fit_set_timestamp, but call fdt_setprop instead. + +This fixes a following mkimage error: +| Can't write signature for 'signature@1' signature node in +| 'conf@imx6ull-colibri-wifi-eval-v3.dtb' conf node: <unknown error> +| mkimage Can't add hashes to FIT blob: -1 + +Upstream-Status: Submitted [ https://patchwork.ozlabs.org/project/uboot/patch/20210531070451.6561-1-liu.ming50@gmail.com ] + +Signed-off-by: Ming Liu <liu.ming50@gmail.com> +--- + tools/image-host.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/tools/image-host.c b/tools/image-host.c +index 270d36fe45..73095461a7 100644 +--- a/tools/image-host.c ++++ b/tools/image-host.c +@@ -132,8 +132,10 @@ static int fit_image_write_sig(void *fit, int noffset, uint8_t *value, + if (!ret) { + time_t timestamp = imagetool_get_source_date(cmdname, + time(NULL)); ++ uint32_t t = cpu_to_uimage(timestamp); + +- ret = fit_set_timestamp(fit, noffset, timestamp); ++ ret = fdt_setprop(fit, noffset, FIT_TIMESTAMP_PROP, &t, ++ sizeof(uint32_t)); + } + if (region_prop && !ret) { + uint32_t strdata[2]; +-- +2.29.0 + diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-1.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-1.patch deleted file mode 100644 index 98ec2c709..000000000 --- a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-1.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 8a7d4cf9820ea16fabd25a6379351b4dc291204b Mon Sep 17 00:00:00 2001 -From: Simon Glass <sjg@chromium.org> -Date: Mon, 15 Feb 2021 17:08:05 -0700 -Subject: [PATCH] fdt_region: Check for a single root node of the correct name - -At present fdt_find_regions() assumes that the FIT is a valid devicetree. -If the FIT has two root nodes this is currently not detected in this -function, nor does libfdt's fdt_check_full() notice. Also it is possible -for the root node to have a name even though it should not. - -Add checks for these and return -FDT_ERR_BADSTRUCTURE if a problem is -detected. - -CVE-2021-27097 - -Signed-off-by: Simon Glass <sjg@chromium.org> -Reported-by: Bruce Monroe <bruce.monroe@intel.com> -Reported-by: Arie Haenel <arie.haenel@intel.com> -Reported-by: Julien Lenoir <julien.lenoir@intel.com> - -CVE: CVE-2021-27097 -Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/8a7d4cf9820ea16fabd25a6379351b4dc291204b] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- - common/fdt_region.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/common/fdt_region.c b/common/fdt_region.c -index ff12c518e9..e4ef0ca770 100644 ---- a/common/fdt_region.c -+++ b/common/fdt_region.c -@@ -43,6 +43,7 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count, - int depth = -1; - int want = 0; - int base = fdt_off_dt_struct(fdt); -+ bool expect_end = false; - - end = path; - *end = '\0'; -@@ -59,6 +60,10 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count, - tag = fdt_next_tag(fdt, offset, &nextoffset); - stop_at = nextoffset; - -+ /* If we see two root nodes, something is wrong */ -+ if (expect_end && tag != FDT_END) -+ return -FDT_ERR_BADLAYOUT; -+ - switch (tag) { - case FDT_PROP: - include = want >= 2; -@@ -81,6 +86,10 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count, - if (depth == FDT_MAX_DEPTH) - return -FDT_ERR_BADSTRUCTURE; - name = fdt_get_name(fdt, offset, &len); -+ -+ /* The root node must have an empty name */ -+ if (!depth && *name) -+ return -FDT_ERR_BADLAYOUT; - if (end - path + 2 + len >= path_len) - return -FDT_ERR_NOSPACE; - if (end != path + 1) -@@ -108,6 +117,8 @@ int fdt_find_regions(const void *fdt, char * const inc[], int inc_count, - while (end > path && *--end != '/') - ; - *end = '\0'; -+ if (depth == -1) -+ expect_end = true; - break; - - case FDT_END: diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-2.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-2.patch deleted file mode 100644 index b13c44e78..000000000 --- a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-2.patch +++ /dev/null @@ -1,419 +0,0 @@ -From c5819701a3de61e2ba2ef7ad0b616565b32305e5 Mon Sep 17 00:00:00 2001 -From: Simon Glass <sjg@chromium.org> -Date: Mon, 15 Feb 2021 17:08:09 -0700 -Subject: [PATCH] image: Adjust the workings of fit_check_format() - -At present this function does not accept a size for the FIT. This means -that it must be read from the FIT itself, introducing potential security -risk. Update the function to include a size parameter, which can be -invalid, in which case fit_check_format() calculates it. - -For now no callers pass the size, but this can be updated later. - -Also adjust the return value to an error code so that all the different -types of problems can be distinguished by the user. - -Signed-off-by: Simon Glass <sjg@chromium.org> -Reported-by: Bruce Monroe <bruce.monroe@intel.com> -Reported-by: Arie Haenel <arie.haenel@intel.com> -Reported-by: Julien Lenoir <julien.lenoir@intel.com> - -CVE: CVE-2021-27097 CVE-2021-27138 -Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/c5819701a3de61e2ba2ef7ad0b616565b32305e5] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- - arch/arm/cpu/armv8/sec_firmware.c | 2 +- - cmd/bootm.c | 6 ++--- - cmd/disk.c | 2 +- - cmd/fpga.c | 2 +- - cmd/nand.c | 2 +- - cmd/source.c | 2 +- - cmd/ximg.c | 2 +- - common/image-fdt.c | 2 +- - common/image-fit.c | 46 +++++++++++++++++--------------------- - common/splash_source.c | 6 ++--- - common/update.c | 4 ++-- - drivers/fpga/socfpga_arria10.c | 6 ++--- - drivers/net/fsl-mc/mc.c | 2 +- - drivers/net/pfe_eth/pfe_firmware.c | 2 +- - include/image.h | 21 ++++++++++++++++- - tools/fit_common.c | 3 ++- - tools/fit_image.c | 2 +- - tools/mkimage.h | 2 ++ - 18 files changed, 65 insertions(+), 49 deletions(-) - -diff --git a/arch/arm/cpu/armv8/sec_firmware.c b/arch/arm/cpu/armv8/sec_firmware.c -index bfc0fac3ef..0561f5efd1 100644 ---- a/arch/arm/cpu/armv8/sec_firmware.c -+++ b/arch/arm/cpu/armv8/sec_firmware.c -@@ -316,7 +316,7 @@ __weak bool sec_firmware_is_valid(const void *sec_firmware_img) - return false; - } - -- if (!fit_check_format(sec_firmware_img)) { -+ if (fit_check_format(sec_firmware_img, IMAGE_SIZE_INVAL)) { - printf("SEC Firmware: Bad firmware image (bad FIT header)\n"); - return false; - } -diff --git a/cmd/bootm.c b/cmd/bootm.c -index e6b0e04413..a0f823f968 100644 ---- a/cmd/bootm.c -+++ b/cmd/bootm.c -@@ -291,7 +291,7 @@ static int image_info(ulong addr) - case IMAGE_FORMAT_FIT: - puts(" FIT image found\n"); - -- if (!fit_check_format(hdr)) { -+ if (fit_check_format(hdr, IMAGE_SIZE_INVAL)) { - puts("Bad FIT image format!\n"); - unmap_sysmem(hdr); - return 1; -@@ -368,7 +368,7 @@ static int do_imls_nor(void) - #endif - #if defined(CONFIG_FIT) - case IMAGE_FORMAT_FIT: -- if (!fit_check_format(hdr)) -+ if (fit_check_format(hdr, IMAGE_SIZE_INVAL)) - goto next_sector; - - printf("FIT Image at %08lX:\n", (ulong)hdr); -@@ -448,7 +448,7 @@ static int nand_imls_fitimage(struct mtd_info *mtd, int nand_dev, loff_t off, - return ret; - } - -- if (!fit_check_format(imgdata)) { -+ if (fit_check_format(imgdata, IMAGE_SIZE_INVAL)) { - free(imgdata); - return 0; - } -diff --git a/cmd/disk.c b/cmd/disk.c -index 8060e753eb..3195db9127 100644 ---- a/cmd/disk.c -+++ b/cmd/disk.c -@@ -114,7 +114,7 @@ int common_diskboot(struct cmd_tbl *cmdtp, const char *intf, int argc, - /* This cannot be done earlier, - * we need complete FIT image in RAM first */ - if (genimg_get_format((void *) addr) == IMAGE_FORMAT_FIT) { -- if (!fit_check_format(fit_hdr)) { -+ if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) { - bootstage_error(BOOTSTAGE_ID_IDE_FIT_READ); - puts("** Bad FIT image format\n"); - return 1; -diff --git a/cmd/fpga.c b/cmd/fpga.c -index 8ae1c936fb..51410a8e42 100644 ---- a/cmd/fpga.c -+++ b/cmd/fpga.c -@@ -330,7 +330,7 @@ static int do_fpga_loadmk(struct cmd_tbl *cmdtp, int flag, int argc, - return CMD_RET_FAILURE; - } - -- if (!fit_check_format(fit_hdr)) { -+ if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) { - puts("Bad FIT image format\n"); - return CMD_RET_FAILURE; - } -diff --git a/cmd/nand.c b/cmd/nand.c -index 92d039af8f..97e117a979 100644 ---- a/cmd/nand.c -+++ b/cmd/nand.c -@@ -917,7 +917,7 @@ static int nand_load_image(struct cmd_tbl *cmdtp, struct mtd_info *mtd, - #if defined(CONFIG_FIT) - /* This cannot be done earlier, we need complete FIT image in RAM first */ - if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT) { -- if (!fit_check_format (fit_hdr)) { -+ if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) { - bootstage_error(BOOTSTAGE_ID_NAND_FIT_READ); - puts ("** Bad FIT image format\n"); - return 1; -diff --git a/cmd/source.c b/cmd/source.c -index b6c709a3d2..71f71528ad 100644 ---- a/cmd/source.c -+++ b/cmd/source.c -@@ -107,7 +107,7 @@ int image_source_script(ulong addr, const char *fit_uname) - #if defined(CONFIG_FIT) - case IMAGE_FORMAT_FIT: - fit_hdr = buf; -- if (!fit_check_format (fit_hdr)) { -+ if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) { - puts ("Bad FIT image format\n"); - return 1; - } -diff --git a/cmd/ximg.c b/cmd/ximg.c -index 159ba51648..ef738ebfa2 100644 ---- a/cmd/ximg.c -+++ b/cmd/ximg.c -@@ -136,7 +136,7 @@ do_imgextract(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) - "at %08lx ...\n", uname, addr); - - fit_hdr = (const void *)addr; -- if (!fit_check_format(fit_hdr)) { -+ if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) { - puts("Bad FIT image format\n"); - return 1; - } -diff --git a/common/image-fdt.c b/common/image-fdt.c -index 327a8c4c39..4105259212 100644 ---- a/common/image-fdt.c -+++ b/common/image-fdt.c -@@ -399,7 +399,7 @@ int boot_get_fdt(int flag, int argc, char *const argv[], uint8_t arch, - */ - #if CONFIG_IS_ENABLED(FIT) - /* check FDT blob vs FIT blob */ -- if (fit_check_format(buf)) { -+ if (!fit_check_format(buf, IMAGE_SIZE_INVAL)) { - ulong load, len; - - fdt_noffset = boot_get_fdt_fit(images, -diff --git a/common/image-fit.c b/common/image-fit.c -index 9637d747fb..402f08fc9d 100644 ---- a/common/image-fit.c -+++ b/common/image-fit.c -@@ -8,6 +8,8 @@ - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - */ - -+#define LOG_CATEGORY LOGC_BOOT -+ - #ifdef USE_HOSTCC - #include "mkimage.h" - #include <time.h> -@@ -1550,49 +1552,41 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp) - return (comp == image_comp); - } - --/** -- * fit_check_format - sanity check FIT image format -- * @fit: pointer to the FIT format image header -- * -- * fit_check_format() runs a basic sanity FIT image verification. -- * Routine checks for mandatory properties, nodes, etc. -- * -- * returns: -- * 1, on success -- * 0, on failure -- */ --int fit_check_format(const void *fit) -+int fit_check_format(const void *fit, ulong size) - { -+ int ret; -+ - /* A FIT image must be a valid FDT */ -- if (fdt_check_header(fit)) { -- debug("Wrong FIT format: not a flattened device tree\n"); -- return 0; -+ ret = fdt_check_header(fit); -+ if (ret) { -+ log_debug("Wrong FIT format: not a flattened device tree (err=%d)\n", -+ ret); -+ return -ENOEXEC; - } - - /* mandatory / node 'description' property */ -- if (fdt_getprop(fit, 0, FIT_DESC_PROP, NULL) == NULL) { -- debug("Wrong FIT format: no description\n"); -- return 0; -+ if (!fdt_getprop(fit, 0, FIT_DESC_PROP, NULL)) { -+ log_debug("Wrong FIT format: no description\n"); -+ return -ENOMSG; - } - - if (IMAGE_ENABLE_TIMESTAMP) { - /* mandatory / node 'timestamp' property */ -- if (fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL) == NULL) { -- debug("Wrong FIT format: no timestamp\n"); -- return 0; -+ if (!fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL)) { -+ log_debug("Wrong FIT format: no timestamp\n"); -+ return -ENODATA; - } - } - - /* mandatory subimages parent '/images' node */ - if (fdt_path_offset(fit, FIT_IMAGES_PATH) < 0) { -- debug("Wrong FIT format: no images parent node\n"); -- return 0; -+ log_debug("Wrong FIT format: no images parent node\n"); -+ return -ENOENT; - } - -- return 1; -+ return 0; - } - -- - /** - * fit_conf_find_compat - * @fit: pointer to the FIT format image header -@@ -1929,7 +1923,7 @@ int fit_image_load(bootm_headers_t *images, ulong addr, - printf("## Loading %s from FIT Image at %08lx ...\n", prop_name, addr); - - bootstage_mark(bootstage_id + BOOTSTAGE_SUB_FORMAT); -- if (!fit_check_format(fit)) { -+ if (fit_check_format(fit, IMAGE_SIZE_INVAL)) { - printf("Bad FIT %s image format!\n", prop_name); - bootstage_error(bootstage_id + BOOTSTAGE_SUB_FORMAT); - return -ENOEXEC; -diff --git a/common/splash_source.c b/common/splash_source.c -index f51ca5ddf3..bad9a7790a 100644 ---- a/common/splash_source.c -+++ b/common/splash_source.c -@@ -336,10 +336,10 @@ static int splash_load_fit(struct splash_location *location, u32 bmp_load_addr) - if (res < 0) - return res; - -- res = fit_check_format(fit_header); -- if (!res) { -+ res = fit_check_format(fit_header, IMAGE_SIZE_INVAL); -+ if (res) { - debug("Could not find valid FIT image\n"); -- return -EINVAL; -+ return res; - } - - /* Get the splash image node */ -diff --git a/common/update.c b/common/update.c -index a5879cb52c..f0848954e5 100644 ---- a/common/update.c -+++ b/common/update.c -@@ -286,7 +286,7 @@ int update_tftp(ulong addr, char *interface, char *devstring) - got_update_file: - fit = map_sysmem(addr, 0); - -- if (!fit_check_format((void *)fit)) { -+ if (fit_check_format((void *)fit, IMAGE_SIZE_INVAL)) { - printf("Bad FIT format of the update file, aborting " - "auto-update\n"); - return 1; -@@ -363,7 +363,7 @@ int fit_update(const void *fit) - if (!fit) - return -EINVAL; - -- if (!fit_check_format((void *)fit)) { -+ if (fit_check_format((void *)fit, IMAGE_SIZE_INVAL)) { - printf("Bad FIT format of the update file, aborting auto-update\n"); - return -EINVAL; - } -diff --git a/drivers/fpga/socfpga_arria10.c b/drivers/fpga/socfpga_arria10.c -index 44e1ac54c3..18f99676d2 100644 ---- a/drivers/fpga/socfpga_arria10.c -+++ b/drivers/fpga/socfpga_arria10.c -@@ -565,10 +565,10 @@ static int first_loading_rbf_to_buffer(struct udevice *dev, - if (ret < 0) - return ret; - -- ret = fit_check_format(buffer_p); -- if (!ret) { -+ ret = fit_check_format(buffer_p, IMAGE_SIZE_INVAL); -+ if (ret) { - debug("FPGA: No valid FIT image was found.\n"); -- return -EBADF; -+ return ret; - } - - confs_noffset = fdt_path_offset(buffer_p, FIT_CONFS_PATH); -diff --git a/drivers/net/fsl-mc/mc.c b/drivers/net/fsl-mc/mc.c -index 84db6be624..81265ee356 100644 ---- a/drivers/net/fsl-mc/mc.c -+++ b/drivers/net/fsl-mc/mc.c -@@ -141,7 +141,7 @@ int parse_mc_firmware_fit_image(u64 mc_fw_addr, - return -EINVAL; - } - -- if (!fit_check_format(fit_hdr)) { -+ if (fit_check_format(fit_hdr, IMAGE_SIZE_INVAL)) { - printf("fsl-mc: ERR: Bad firmware image (bad FIT header)\n"); - return -EINVAL; - } -diff --git a/drivers/net/pfe_eth/pfe_firmware.c b/drivers/net/pfe_eth/pfe_firmware.c -index 41999e176d..eee70a2e73 100644 ---- a/drivers/net/pfe_eth/pfe_firmware.c -+++ b/drivers/net/pfe_eth/pfe_firmware.c -@@ -160,7 +160,7 @@ static int pfe_fit_check(void) - return ret; - } - -- if (!fit_check_format(pfe_fit_addr)) { -+ if (fit_check_format(pfe_fit_addr, IMAGE_SIZE_INVAL)) { - printf("PFE Firmware: Bad firmware image (bad FIT header)\n"); - ret = -1; - return ret; -diff --git a/include/image.h b/include/image.h -index 41473dbb9c..8c152c5c5f 100644 ---- a/include/image.h -+++ b/include/image.h -@@ -134,6 +134,9 @@ extern ulong image_load_addr; /* Default Load Address */ - extern ulong image_save_addr; /* Default Save Address */ - extern ulong image_save_size; /* Default Save Size */ - -+/* An invalid size, meaning that the image size is not known */ -+#define IMAGE_SIZE_INVAL (-1UL) -+ - enum ih_category { - IH_ARCH, - IH_COMP, -@@ -1141,7 +1144,23 @@ int fit_image_check_os(const void *fit, int noffset, uint8_t os); - int fit_image_check_arch(const void *fit, int noffset, uint8_t arch); - int fit_image_check_type(const void *fit, int noffset, uint8_t type); - int fit_image_check_comp(const void *fit, int noffset, uint8_t comp); --int fit_check_format(const void *fit); -+ -+/** -+ * fit_check_format() - Check that the FIT is valid -+ * -+ * This performs various checks on the FIT to make sure it is suitable for -+ * use, looking for mandatory properties, nodes, etc. -+ * -+ * If FIT_FULL_CHECK is enabled, it also runs it through libfdt to make -+ * sure that there are no strange tags or broken nodes in the FIT. -+ * -+ * @fit: pointer to the FIT format image header -+ * @return 0 if OK, -ENOEXEC if not an FDT file, -EINVAL if the full FDT check -+ * failed (e.g. due to bad structure), -ENOMSG if the description is -+ * missing, -ENODATA if the timestamp is missing, -ENOENT if the /images -+ * path is missing -+ */ -+int fit_check_format(const void *fit, ulong size); - - int fit_conf_find_compat(const void *fit, const void *fdt); - -diff --git a/tools/fit_common.c b/tools/fit_common.c -index cdf987d3c1..52b63296f8 100644 ---- a/tools/fit_common.c -+++ b/tools/fit_common.c -@@ -26,7 +26,8 @@ - int fit_verify_header(unsigned char *ptr, int image_size, - struct image_tool_params *params) - { -- if (fdt_check_header(ptr) != EXIT_SUCCESS || !fit_check_format(ptr)) -+ if (fdt_check_header(ptr) != EXIT_SUCCESS || -+ fit_check_format(ptr, IMAGE_SIZE_INVAL)) - return EXIT_FAILURE; - - return EXIT_SUCCESS; -diff --git a/tools/fit_image.c b/tools/fit_image.c -index 06faeda7c2..d440d143c6 100644 ---- a/tools/fit_image.c -+++ b/tools/fit_image.c -@@ -883,7 +883,7 @@ static int fit_extract_contents(void *ptr, struct image_tool_params *params) - /* Indent string is defined in header image.h */ - p = IMAGE_INDENT_STRING; - -- if (!fit_check_format(fit)) { -+ if (fit_check_format(fit, IMAGE_SIZE_INVAL)) { - printf("Bad FIT image format\n"); - return -1; - } -diff --git a/tools/mkimage.h b/tools/mkimage.h -index 5b096a545b..0d3148444c 100644 ---- a/tools/mkimage.h -+++ b/tools/mkimage.h -@@ -29,6 +29,8 @@ - #define debug(fmt,args...) - #endif /* MKIMAGE_DEBUG */ - -+#define log_debug(fmt, args...) debug(fmt, ##args) -+ - static inline void *map_sysmem(ulong paddr, unsigned long len) - { - return (void *)(uintptr_t)paddr; diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-3.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-3.patch deleted file mode 100644 index 86f7e8ce5..000000000 --- a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-3.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 6f3c2d8aa5e6cbd80b5e869bbbddecb66c329d01 Mon Sep 17 00:00:00 2001 -From: Simon Glass <sjg@chromium.org> -Date: Mon, 15 Feb 2021 17:08:10 -0700 -Subject: [PATCH] image: Add an option to do a full check of the FIT - -Some strange modifications of the FIT can introduce security risks. Add an -option to check it thoroughly, using libfdt's fdt_check_full() function. - -Enable this by default if signature verification is enabled. - -CVE-2021-27097 - -Signed-off-by: Simon Glass <sjg@chromium.org> -Reported-by: Bruce Monroe <bruce.monroe@intel.com> -Reported-by: Arie Haenel <arie.haenel@intel.com> -Reported-by: Julien Lenoir <julien.lenoir@intel.com> - -CVE: CVE-2021-27097 -Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/6f3c2d8aa5e6cbd80b5e869bbbddecb66c329d01] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- - common/Kconfig.boot | 20 ++++++++++++++++++++ - common/image-fit.c | 16 ++++++++++++++++ - 2 files changed, 36 insertions(+) - -diff --git a/common/Kconfig.boot b/common/Kconfig.boot -index 5eaabdfc27..7532e55edb 100644 ---- a/common/Kconfig.boot -+++ b/common/Kconfig.boot -@@ -63,6 +63,15 @@ config FIT_ENABLE_SHA512_SUPPORT - SHA512 checksum is a 512-bit (64-byte) hash value used to check that - the image contents have not been corrupted. - -+config FIT_FULL_CHECK -+ bool "Do a full check of the FIT before using it" -+ default y -+ help -+ Enable this do a full check of the FIT to make sure it is valid. This -+ helps to protect against carefully crafted FITs which take advantage -+ of bugs or omissions in the code. This includes a bad structure, -+ multiple root nodes and the like. -+ - config FIT_SIGNATURE - bool "Enable signature verification of FIT uImages" - depends on DM -@@ -70,6 +79,7 @@ config FIT_SIGNATURE - select RSA - select RSA_VERIFY - select IMAGE_SIGN_INFO -+ select FIT_FULL_CHECK - help - This option enables signature verification of FIT uImages, - using a hash signed and verified using RSA. If -@@ -159,6 +169,15 @@ config SPL_FIT_PRINT - help - Support printing the content of the fitImage in a verbose manner in SPL. - -+config SPL_FIT_FULL_CHECK -+ bool "Do a full check of the FIT before using it" -+ help -+ Enable this do a full check of the FIT to make sure it is valid. This -+ helps to protect against carefully crafted FITs which take advantage -+ of bugs or omissions in the code. This includes a bad structure, -+ multiple root nodes and the like. -+ -+ - config SPL_FIT_SIGNATURE - bool "Enable signature verification of FIT firmware within SPL" - depends on SPL_DM -@@ -168,6 +187,7 @@ config SPL_FIT_SIGNATURE - select SPL_RSA - select SPL_RSA_VERIFY - select SPL_IMAGE_SIGN_INFO -+ select SPL_FIT_FULL_CHECK - - config SPL_LOAD_FIT - bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)" -diff --git a/common/image-fit.c b/common/image-fit.c -index f6c0428a96..bcf395f6a1 100644 ---- a/common/image-fit.c -+++ b/common/image-fit.c -@@ -1580,6 +1580,22 @@ int fit_check_format(const void *fit, ulong size) - return -ENOEXEC; - } - -+ if (CONFIG_IS_ENABLED(FIT_FULL_CHECK)) { -+ /* -+ * If we are not given the size, make do wtih calculating it. -+ * This is not as secure, so we should consider a flag to -+ * control this. -+ */ -+ if (size == IMAGE_SIZE_INVAL) -+ size = fdt_totalsize(fit); -+ ret = fdt_check_full(fit, size); -+ -+ if (ret) { -+ log_debug("FIT check error %d\n", ret); -+ return -EINVAL; -+ } -+ } -+ - /* mandatory / node 'description' property */ - if (!fdt_getprop(fit, 0, FIT_DESC_PROP, NULL)) { - log_debug("Wrong FIT format: no description\n"); diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-4.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-4.patch deleted file mode 100644 index 060cac1cf..000000000 --- a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27097-4.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 124c255731c76a2b09587378b2bcce561bcd3f2d Mon Sep 17 00:00:00 2001 -From: Simon Glass <sjg@chromium.org> -Date: Mon, 15 Feb 2021 17:08:11 -0700 -Subject: [PATCH] libfdt: Check for multiple/invalid root nodes - -It is possible to construct a devicetree blob with multiple root nodes. -Update fdt_check_full() to check for this, along with a root node with an -invalid name. - -CVE-2021-27097 - -Signed-off-by: Simon Glass <sjg@chromium.org> -Reported-by: Bruce Monroe <bruce.monroe@intel.com> -Reported-by: Arie Haenel <arie.haenel@intel.com> -Reported-by: Julien Lenoir <julien.lenoir@intel.com> - -CVE: CVE-2021-27097 -Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/124c255731c76a2b09587378b2bcce561bcd3f2d] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- - scripts/dtc/libfdt/fdt_ro.c | 17 +++++++++++++++++ - test/py/tests/test_vboot.py | 3 ++- - 2 files changed, 19 insertions(+), 1 deletion(-) - -diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c -index d984bab036..efe7efe921 100644 ---- a/scripts/dtc/libfdt/fdt_ro.c -+++ b/scripts/dtc/libfdt/fdt_ro.c -@@ -867,6 +867,7 @@ int fdt_check_full(const void *fdt, size_t bufsize) - unsigned depth = 0; - const void *prop; - const char *propname; -+ bool expect_end = false; - - if (bufsize < FDT_V1_SIZE) - return -FDT_ERR_TRUNCATED; -@@ -887,6 +888,10 @@ int fdt_check_full(const void *fdt, size_t bufsize) - if (nextoffset < 0) - return nextoffset; - -+ /* If we see two root nodes, something is wrong */ -+ if (expect_end && tag != FDT_END) -+ return -FDT_ERR_BADLAYOUT; -+ - switch (tag) { - case FDT_NOP: - break; -@@ -900,12 +905,24 @@ int fdt_check_full(const void *fdt, size_t bufsize) - depth++; - if (depth > INT_MAX) - return -FDT_ERR_BADSTRUCTURE; -+ -+ /* The root node must have an empty name */ -+ if (depth == 1) { -+ const char *name; -+ int len; -+ -+ name = fdt_get_name(fdt, offset, &len); -+ if (*name || len) -+ return -FDT_ERR_BADLAYOUT; -+ } - break; - - case FDT_END_NODE: - if (depth == 0) - return -FDT_ERR_BADSTRUCTURE; - depth--; -+ if (depth == 0) -+ expect_end = true; - break; - - case FDT_PROP: diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-1.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-1.patch deleted file mode 100644 index 562f8151b..000000000 --- a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-1.patch +++ /dev/null @@ -1,245 +0,0 @@ -From 79af75f7776fc20b0d7eb6afe1e27c00fdb4b9b4 Mon Sep 17 00:00:00 2001 -From: Simon Glass <sjg@chromium.org> -Date: Mon, 15 Feb 2021 17:08:06 -0700 -Subject: [PATCH] fit: Don't allow verification of images with @ nodes - -When searching for a node called 'fred', any unit address appended to the -name is ignored by libfdt, meaning that 'fred' can match 'fred@1'. This -means that we cannot be sure that the node originally intended is the one -that is used. - -Disallow use of nodes with unit addresses. - -Update the forge test also, since it uses @ addresses. - -CVE-2021-27138 - -Signed-off-by: Simon Glass <sjg@chromium.org> -Reported-by: Bruce Monroe <bruce.monroe@intel.com> -Reported-by: Arie Haenel <arie.haenel@intel.com> -Reported-by: Julien Lenoir <julien.lenoir@intel.com> - -CVE: CVE-2021-27138 -Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/79af75f7776fc20b0d7eb6afe1e27c00fdb4b9b4] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- - common/image-fit-sig.c | 22 ++++++++++++++++++++-- - common/image-fit.c | 20 +++++++++++++++----- - test/py/tests/test_fit.py | 24 ++++++++++++------------ - test/py/tests/vboot_forge.py | 12 ++++++------ - 4 files changed, 53 insertions(+), 25 deletions(-) - -diff --git a/common/image-fit-sig.c b/common/image-fit-sig.c -index 897e04c7a3..34ebb8edfe 100644 ---- a/common/image-fit-sig.c -+++ b/common/image-fit-sig.c -@@ -149,6 +149,14 @@ static int fit_image_verify_sig(const void *fit, int image_noffset, - fdt_for_each_subnode(noffset, fit, image_noffset) { - const char *name = fit_get_name(fit, noffset, NULL); - -+ /* -+ * We don't support this since libfdt considers names with the -+ * name root but different @ suffix to be equal -+ */ -+ if (strchr(name, '@')) { -+ err_msg = "Node name contains @"; -+ goto error; -+ } - if (!strncmp(name, FIT_SIG_NODENAME, - strlen(FIT_SIG_NODENAME))) { - ret = fit_image_check_sig(fit, noffset, data, -@@ -398,9 +406,10 @@ error: - return -EPERM; - } - --int fit_config_verify_required_sigs(const void *fit, int conf_noffset, -- const void *sig_blob) -+static int fit_config_verify_required_sigs(const void *fit, int conf_noffset, -+ const void *sig_blob) - { -+ const char *name = fit_get_name(fit, conf_noffset, NULL); - int noffset; - int sig_node; - int verified = 0; -@@ -408,6 +417,15 @@ int fit_config_verify_required_sigs(const void *fit, int conf_noffset, - bool reqd_policy_all = true; - const char *reqd_mode; - -+ /* -+ * We don't support this since libfdt considers names with the -+ * name root but different @ suffix to be equal -+ */ -+ if (strchr(name, '@')) { -+ printf("Configuration node '%s' contains '@'\n", name); -+ return -EPERM; -+ } -+ - /* Work out what we need to verify */ - sig_node = fdt_subnode_offset(sig_blob, 0, FIT_SIG_NODENAME); - if (sig_node < 0) { -diff --git a/common/image-fit.c b/common/image-fit.c -index adc3e551de..c3dc814115 100644 ---- a/common/image-fit.c -+++ b/common/image-fit.c -@@ -1369,21 +1369,31 @@ error: - */ - int fit_image_verify(const void *fit, int image_noffset) - { -+ const char *name = fit_get_name(fit, image_noffset, NULL); - const void *data; - size_t size; -- int noffset = 0; - char *err_msg = ""; - -+ if (strchr(name, '@')) { -+ /* -+ * We don't support this since libfdt considers names with the -+ * name root but different @ suffix to be equal -+ */ -+ err_msg = "Node name contains @"; -+ goto err; -+ } - /* Get image data and data length */ - if (fit_image_get_data_and_size(fit, image_noffset, &data, &size)) { - err_msg = "Can't get image data/size"; -- printf("error!\n%s for '%s' hash node in '%s' image node\n", -- err_msg, fit_get_name(fit, noffset, NULL), -- fit_get_name(fit, image_noffset, NULL)); -- return 0; -+ goto err; - } - - return fit_image_verify_with_data(fit, image_noffset, data, size); -+ -+err: -+ printf("error!\n%s in '%s' image node\n", err_msg, -+ fit_get_name(fit, image_noffset, NULL)); -+ return 0; - } - - /** -diff --git a/test/py/tests/test_fit.py b/test/py/tests/test_fit.py -index 84b3f95850..6d5b43c3ba 100755 ---- a/test/py/tests/test_fit.py -+++ b/test/py/tests/test_fit.py -@@ -17,7 +17,7 @@ base_its = ''' - #address-cells = <1>; - - images { -- kernel@1 { -+ kernel-1 { - data = /incbin/("%(kernel)s"); - type = "kernel"; - arch = "sandbox"; -@@ -26,7 +26,7 @@ base_its = ''' - load = <0x40000>; - entry = <0x8>; - }; -- kernel@2 { -+ kernel-2 { - data = /incbin/("%(loadables1)s"); - type = "kernel"; - arch = "sandbox"; -@@ -35,19 +35,19 @@ base_its = ''' - %(loadables1_load)s - entry = <0x0>; - }; -- fdt@1 { -+ fdt-1 { - description = "snow"; - data = /incbin/("%(fdt)s"); - type = "flat_dt"; - arch = "sandbox"; - %(fdt_load)s - compression = "%(compression)s"; -- signature@1 { -+ signature-1 { - algo = "sha1,rsa2048"; - key-name-hint = "dev"; - }; - }; -- ramdisk@1 { -+ ramdisk-1 { - description = "snow"; - data = /incbin/("%(ramdisk)s"); - type = "ramdisk"; -@@ -56,7 +56,7 @@ base_its = ''' - %(ramdisk_load)s - compression = "%(compression)s"; - }; -- ramdisk@2 { -+ ramdisk-2 { - description = "snow"; - data = /incbin/("%(loadables2)s"); - type = "ramdisk"; -@@ -67,10 +67,10 @@ base_its = ''' - }; - }; - configurations { -- default = "conf@1"; -- conf@1 { -- kernel = "kernel@1"; -- fdt = "fdt@1"; -+ default = "conf-1"; -+ conf-1 { -+ kernel = "kernel-1"; -+ fdt = "fdt-1"; - %(ramdisk_config)s - %(loadables_config)s - }; -@@ -410,7 +410,7 @@ def test_fit(u_boot_console): - - # Try a ramdisk - with cons.log.section('Kernel + FDT + Ramdisk load'): -- params['ramdisk_config'] = 'ramdisk = "ramdisk@1";' -+ params['ramdisk_config'] = 'ramdisk = "ramdisk-1";' - params['ramdisk_load'] = 'load = <%#x>;' % params['ramdisk_addr'] - fit = make_fit(mkimage, params) - cons.restart_uboot() -@@ -419,7 +419,7 @@ def test_fit(u_boot_console): - - # Configuration with some Loadables - with cons.log.section('Kernel + FDT + Ramdisk load + Loadables'): -- params['loadables_config'] = 'loadables = "kernel@2", "ramdisk@2";' -+ params['loadables_config'] = 'loadables = "kernel-2", "ramdisk-2";' - params['loadables1_load'] = ('load = <%#x>;' % - params['loadables1_addr']) - params['loadables2_load'] = ('load = <%#x>;' % -diff --git a/test/py/tests/vboot_forge.py b/test/py/tests/vboot_forge.py -index 0fb7ef4024..b41105bd0e 100644 ---- a/test/py/tests/vboot_forge.py -+++ b/test/py/tests/vboot_forge.py -@@ -376,12 +376,12 @@ def manipulate(root, strblock): - """ - Maliciously manipulates the structure to create a crafted FIT file - """ -- # locate /images/kernel@1 (frankly, it just expects it to be the first one) -+ # locate /images/kernel-1 (frankly, it just expects it to be the first one) - kernel_node = root[0][0] - # clone it to save time filling all the properties - fake_kernel = kernel_node.clone() - # rename the node -- fake_kernel.name = b'kernel@2' -+ fake_kernel.name = b'kernel-2' - # get rid of signatures/hashes - fake_kernel.children = [] - # NOTE: this simply replaces the first prop... either description or data -@@ -391,13 +391,13 @@ def manipulate(root, strblock): - root[0].children.append(fake_kernel) - - # modify the default configuration -- root[1].props[0].value = b'conf@2\x00' -+ root[1].props[0].value = b'conf-2\x00' - # clone the first (only?) configuration - fake_conf = root[1][0].clone() - # rename and change kernel and fdt properties to select the crafted kernel -- fake_conf.name = b'conf@2' -- fake_conf.props[0].value = b'kernel@2\x00' -- fake_conf.props[1].value = b'fdt@1\x00' -+ fake_conf.name = b'conf-2' -+ fake_conf.props[0].value = b'kernel-2\x00' -+ fake_conf.props[1].value = b'fdt-1\x00' - # insert the new configuration under /configurations - root[1].children.append(fake_conf) - diff --git a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-2.patch b/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-2.patch deleted file mode 100644 index 946196c37..000000000 --- a/poky/meta/recipes-bsp/u-boot/files/CVE-2021-27138-2.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 3f04db891a353f4b127ed57279279f851c6b4917 Mon Sep 17 00:00:00 2001 -From: Simon Glass <sjg@chromium.org> -Date: Mon, 15 Feb 2021 17:08:12 -0700 -Subject: [PATCH] image: Check for unit addresses in FITs - -Using unit addresses in a FIT is a security risk. Add a check for this -and disallow it. - -CVE-2021-27138 - -Signed-off-by: Simon Glass <sjg@chromium.org> -Reported-by: Bruce Monroe <bruce.monroe@intel.com> -Reported-by: Arie Haenel <arie.haenel@intel.com> -Reported-by: Julien Lenoir <julien.lenoir@intel.com> - -CVE: CVE-2021-27138 -Upstream-Status: Backport[https://github.com/u-boot/u-boot/commit/3f04db891a353f4b127ed57279279f851c6b4917] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- - common/image-fit.c | 56 +++++++++++++++++++++++++++++++++++++++++---- - test/py/tests/test_vboot.py | 9 ++++---- - 2 files changed, 57 insertions(+), 8 deletions(-) - -diff --git a/common/image-fit.c b/common/image-fit.c -index bcf395f6a1..28b3d2b191 100644 ---- a/common/image-fit.c -+++ b/common/image-fit.c -@@ -1568,6 +1568,34 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp) - return (comp == image_comp); - } - -+/** -+ * fdt_check_no_at() - Check for nodes whose names contain '@' -+ * -+ * This checks the parent node and all subnodes recursively -+ * -+ * @fit: FIT to check -+ * @parent: Parent node to check -+ * @return 0 if OK, -EADDRNOTAVAIL is a node has a name containing '@' -+ */ -+static int fdt_check_no_at(const void *fit, int parent) -+{ -+ const char *name; -+ int node; -+ int ret; -+ -+ name = fdt_get_name(fit, parent, NULL); -+ if (!name || strchr(name, '@')) -+ return -EADDRNOTAVAIL; -+ -+ fdt_for_each_subnode(node, fit, parent) { -+ ret = fdt_check_no_at(fit, node); -+ if (ret) -+ return ret; -+ } -+ -+ return 0; -+} -+ - int fit_check_format(const void *fit, ulong size) - { - int ret; -@@ -1589,10 +1617,27 @@ int fit_check_format(const void *fit, ulong size) - if (size == IMAGE_SIZE_INVAL) - size = fdt_totalsize(fit); - ret = fdt_check_full(fit, size); -+ if (ret) -+ ret = -EINVAL; -+ -+ /* -+ * U-Boot stopped using unit addressed in 2017. Since libfdt -+ * can match nodes ignoring any unit address, signature -+ * verification can see the wrong node if one is inserted with -+ * the same name as a valid node but with a unit address -+ * attached. Protect against this by disallowing unit addresses. -+ */ -+ if (!ret && CONFIG_IS_ENABLED(FIT_SIGNATURE)) { -+ ret = fdt_check_no_at(fit, 0); - -+ if (ret) { -+ log_debug("FIT check error %d\n", ret); -+ return ret; -+ } -+ } - if (ret) { - log_debug("FIT check error %d\n", ret); -- return -EINVAL; -+ return ret; - } - } - -@@ -1955,10 +2000,13 @@ int fit_image_load(bootm_headers_t *images, ulong addr, - printf("## Loading %s from FIT Image at %08lx ...\n", prop_name, addr); - - bootstage_mark(bootstage_id + BOOTSTAGE_SUB_FORMAT); -- if (fit_check_format(fit, IMAGE_SIZE_INVAL)) { -- printf("Bad FIT %s image format!\n", prop_name); -+ ret = fit_check_format(fit, IMAGE_SIZE_INVAL); -+ if (ret) { -+ printf("Bad FIT %s image format! (err=%d)\n", prop_name, ret); -+ if (CONFIG_IS_ENABLED(FIT_SIGNATURE) && ret == -EADDRNOTAVAIL) -+ printf("Signature checking prevents use of unit addresses (@) in nodes\n"); - bootstage_error(bootstage_id + BOOTSTAGE_SUB_FORMAT); -- return -ENOEXEC; -+ return ret; - } - bootstage_mark(bootstage_id + BOOTSTAGE_SUB_FORMAT_OK); - if (fit_uname) { diff --git a/poky/meta/recipes-bsp/u-boot/libubootenv_0.3.1.bb b/poky/meta/recipes-bsp/u-boot/libubootenv_0.3.2.bb index 613e3161f..2cf87c794 100644 --- a/poky/meta/recipes-bsp/u-boot/libubootenv_0.3.1.bb +++ b/poky/meta/recipes-bsp/u-boot/libubootenv_0.3.2.bb @@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b36 SECTION = "libs" SRC_URI = "git://github.com/sbabic/libubootenv;protocol=https" -SRCREV = "824551ac77bab1d0f7ae34d7a7c77b155240e754" +SRCREV = "ba7564f5006d09bec51058cf4f5ac90d4dc18b3c" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-common.inc b/poky/meta/recipes-bsp/u-boot/u-boot-common.inc index 993478a73..dbbb9ff14 100644 --- a/poky/meta/recipes-bsp/u-boot/u-boot-common.inc +++ b/poky/meta/recipes-bsp/u-boot/u-boot-common.inc @@ -12,16 +12,9 @@ PE = "1" # We use the revision in order to avoid having to fetch it from the # repo during parse -SRCREV = "c4fddedc48f336eabc4ce3f74940e6aa372de18c" +SRCREV = "b46dd116ce03e235f2a7d4843c6278e1da44b5e1" SRC_URI = "git://git.denx.de/u-boot.git \ - file://0001-add-valid-fdt-check.patch \ - file://CVE-2021-27097-1.patch \ - file://CVE-2021-27097-2.patch \ - file://CVE-2021-27097-3.patch \ - file://CVE-2021-27097-4.patch \ - file://CVE-2021-27138-1.patch \ - file://CVE-2021-27138-2.patch \ " S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.01.bb b/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.01.bb deleted file mode 100644 index ef386f76e..000000000 --- a/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.01.bb +++ /dev/null @@ -1,3 +0,0 @@ -require u-boot-common.inc -require u-boot-tools.inc - diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.04.bb b/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.04.bb new file mode 100644 index 000000000..4e9008191 --- /dev/null +++ b/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.04.bb @@ -0,0 +1,4 @@ +require u-boot-common.inc +require u-boot-tools.inc + +SRC_URI_append = " file://0001-tools-image-host-fix-wrong-return-value.patch" diff --git a/poky/meta/recipes-bsp/u-boot/u-boot.inc b/poky/meta/recipes-bsp/u-boot/u-boot.inc index 5398c2e62..8ccc532f7 100644 --- a/poky/meta/recipes-bsp/u-boot/u-boot.inc +++ b/poky/meta/recipes-bsp/u-boot/u-boot.inc @@ -5,7 +5,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" DEPENDS += "kern-tools-native" -inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1 python3native +inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1 python3native kernel-arch DEPENDS += "swig-native" @@ -346,6 +346,11 @@ do_deploy () { ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE} ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME} fi + + if [ -n "${UBOOT_DTB}" ] + then + install -m 644 ${B}/arch/${UBOOT_ARCH}/dts/${UBOOT_DTB_BINARY} ${DEPLOYDIR}/ + fi } addtask deploy before do_build after do_compile diff --git a/poky/meta/recipes-bsp/u-boot/u-boot_2021.01.bb b/poky/meta/recipes-bsp/u-boot/u-boot_2021.04.bb index bbbc99bf8..bbbc99bf8 100644 --- a/poky/meta/recipes-bsp/u-boot/u-boot_2021.01.bb +++ b/poky/meta/recipes-bsp/u-boot/u-boot_2021.04.bb diff --git a/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb b/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb index c8a3f876a..430231088 100644 --- a/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb +++ b/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb @@ -24,16 +24,20 @@ SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV} file://99avahi-autoipd \ file://initscript.patch \ file://0001-Fix-opening-etc-resolv.conf-error.patch \ + file://handle-hup.patch \ " UPSTREAM_CHECK_URI = "https://github.com/lathiat/avahi/releases/" SRC_URI[md5sum] = "229c6aa30674fc43c202b22c5f8c2be7" SRC_URI[sha256sum] = "060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda" +# Issue only affects Debian/SUSE, not us +CVE_CHECK_WHITELIST += "CVE-2021-26720" + DEPENDS = "expat libcap libdaemon glib-2.0 intltool-native" # For gtk related PACKAGECONFIGs: gtk, gtk3 -AVAHI_GTK ?= "gtk3" +AVAHI_GTK ?= "" PACKAGECONFIG ??= "dbus ${@bb.utils.contains_any('DISTRO_FEATURES','x11 wayland','${AVAHI_GTK}','',d)}" PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus" diff --git a/poky/meta/recipes-connectivity/avahi/files/handle-hup.patch b/poky/meta/recipes-connectivity/avahi/files/handle-hup.patch new file mode 100644 index 000000000..26632e544 --- /dev/null +++ b/poky/meta/recipes-connectivity/avahi/files/handle-hup.patch @@ -0,0 +1,41 @@ +CVE: CVE-2021-3468 +Upstream-Status: Submitted [https://github.com/lathiat/avahi/pull/330] +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 447affe29991ee99c6b9732fc5f2c1048a611d3b Mon Sep 17 00:00:00 2001 +From: Riccardo Schirone <sirmy15@gmail.com> +Date: Fri, 26 Mar 2021 11:50:24 +0100 +Subject: [PATCH] Avoid infinite-loop in avahi-daemon by handling HUP event in + client_work + +If a client fills the input buffer, client_work() disables the +AVAHI_WATCH_IN event, thus preventing the function from executing the +`read` syscall the next times it is called. However, if the client then +terminates the connection, the socket file descriptor receives a HUP +event, which is not handled, thus the kernel keeps marking the HUP event +as occurring. While iterating over the file descriptors that triggered +an event, the client file descriptor will keep having the HUP event and +the client_work() function is always called with AVAHI_WATCH_HUP but +without nothing being done, thus entering an infinite loop. + +See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=984938 +--- + avahi-daemon/simple-protocol.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/avahi-daemon/simple-protocol.c b/avahi-daemon/simple-protocol.c +index 3e0ebb11..6c0274d6 100644 +--- a/avahi-daemon/simple-protocol.c ++++ b/avahi-daemon/simple-protocol.c +@@ -424,6 +424,11 @@ static void client_work(AvahiWatch *watch, AVAHI_GCC_UNUSED int fd, AvahiWatchEv + } + } + ++ if (events & AVAHI_WATCH_HUP) { ++ client_free(c); ++ return; ++ } ++ + c->server->poll_api->watch_update( + watch, + (c->outbuf_length > 0 ? AVAHI_WATCH_OUT : 0) | diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-avoid-start-failure-with-bind-user.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.16/0001-avoid-start-failure-with-bind-user.patch index 8db96ec04..8db96ec04 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-avoid-start-failure-with-bind-user.patch +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/0001-avoid-start-failure-with-bind-user.patch diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-named-lwresd-V-and-start-log-hide-build-options.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.16/0001-named-lwresd-V-and-start-log-hide-build-options.patch index 5bcc16c9b..5bcc16c9b 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/0001-named-lwresd-V-and-start-log-hide-build-options.patch +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/0001-named-lwresd-V-and-start-log-hide-build-options.patch diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/bind-ensure-searching-for-json-headers-searches-sysr.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.16/bind-ensure-searching-for-json-headers-searches-sysr.patch index f9cdc7ca4..f9cdc7ca4 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/bind-ensure-searching-for-json-headers-searches-sysr.patch +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/bind-ensure-searching-for-json-headers-searches-sysr.patch diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/bind9 b/poky/meta/recipes-connectivity/bind/bind-9.16.16/bind9 index 968679ff7..968679ff7 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/bind9 +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/bind9 diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/conf.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.16/conf.patch index aad345f9f..aad345f9f 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/conf.patch +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/conf.patch diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/generate-rndc-key.sh b/poky/meta/recipes-connectivity/bind/bind-9.16.16/generate-rndc-key.sh index 633e29c0e..633e29c0e 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/generate-rndc-key.sh +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/generate-rndc-key.sh diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/init.d-add-support-for-read-only-rootfs.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.16/init.d-add-support-for-read-only-rootfs.patch index 11db95ede..11db95ede 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/init.d-add-support-for-read-only-rootfs.patch +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/init.d-add-support-for-read-only-rootfs.patch diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/make-etc-initd-bind-stop-work.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.16/make-etc-initd-bind-stop-work.patch index 146f3e35d..146f3e35d 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/make-etc-initd-bind-stop-work.patch +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/make-etc-initd-bind-stop-work.patch diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.12/named.service b/poky/meta/recipes-connectivity/bind/bind-9.16.16/named.service index cda56ef01..cda56ef01 100644 --- a/poky/meta/recipes-connectivity/bind/bind-9.16.12/named.service +++ b/poky/meta/recipes-connectivity/bind/bind-9.16.16/named.service diff --git a/poky/meta/recipes-connectivity/bind/bind_9.16.12.bb b/poky/meta/recipes-connectivity/bind/bind_9.16.16.bb index 09f77038f..b15259840 100644 --- a/poky/meta/recipes-connectivity/bind/bind_9.16.12.bb +++ b/poky/meta/recipes-connectivity/bind/bind_9.16.16.bb @@ -20,12 +20,16 @@ SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \ file://0001-avoid-start-failure-with-bind-user.patch \ " -SRC_URI[sha256sum] = "9914af9311fd349cab441097898d94fb28d0bfd9bf6ed04fe1f97f042644da7f" +SRC_URI[sha256sum] = "6c913902adf878e7dc5e229cea94faefc9d40f44775a30213edd08860f761d7b" UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/" # stay at 9.16 follow the ESV versions divisible by 4 UPSTREAM_CHECK_REGEX = "(?P<pver>9.(16|20|24|28)(\.\d+)+(-P\d+)*)/" +# Issue only affects dhcpd with recent bind versions. We don't ship dhcpd anymore +# so the issue doesn't affect us. +CVE_CHECK_WHITELIST += "CVE-2019-6470" + inherit autotools update-rc.d systemd useradd pkgconfig multilib_header update-alternatives # PACKAGECONFIGs readline and libedit should NOT be set at same time diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5.inc b/poky/meta/recipes-connectivity/bluez5/bluez5.inc index a7b628ce1..635cad813 100644 --- a/poky/meta/recipes-connectivity/bluez5/bluez5.inc +++ b/poky/meta/recipes-connectivity/bluez5/bluez5.inc @@ -52,6 +52,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \ file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \ file://0001-test-gatt-Fix-hung-issue.patch \ + file://0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch \ + file://0001-Makefile.am-add-missing-mkdir-for-ell-shared.patch \ " S = "${WORKDIR}/bluez-${PV}" diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-add-missing-mkdir-for-ell-shared.patch b/poky/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-add-missing-mkdir-for-ell-shared.patch new file mode 100644 index 000000000..03b42f73c --- /dev/null +++ b/poky/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-add-missing-mkdir-for-ell-shared.patch @@ -0,0 +1,25 @@ +From d341ba650af1b7068d9ad034732b4f41b91bb2c1 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Sun, 25 Apr 2021 18:56:41 +0200 +Subject: [PATCH] Makefile.am: add missing mkdir for ell/shared + +This addresses build errors out of source tree. + +Upstream-Status: Backport +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile.am b/Makefile.am +index be5d5c7..72ad425 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -623,6 +623,7 @@ lib/bluetooth/%.h: lib/%.h + $(AM_V_GEN)$(LN_S) -f $(abspath $<) $@ + + ell/shared: Makefile ++ $(AM_V_at)$(MKDIR_P) ell + $(AM_V_GEN)for f in $(ell_shared) ; do \ + if [ ! -f $$f ] ; then \ + $(LN_S) -t ell -f $(abs_srcdir)/../ell/$$f ; \ diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5/0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch b/poky/meta/recipes-connectivity/bluez5/bluez5/0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch new file mode 100644 index 000000000..d9067df02 --- /dev/null +++ b/poky/meta/recipes-connectivity/bluez5/bluez5/0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch @@ -0,0 +1,48 @@ +From 8adab7f1e04948e78854953f9373cac741445a0f Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 30 Apr 2021 21:09:33 -0700 +Subject: [PATCH] audio: Rename pause funciton to avoid shadowing glibc + defintions + +Fixes +profiles/audio/media.c:1284:13: error: static declaration of 'pause' follows non-static declaration +static bool pause(void *user_data) + ^ +/mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux/bluez5/5.56-r0/recipe-sysroot/usr/include/unistd.h:478:12: note: previous declaration is here +extern int pause (void); + ^ +../bluez-5.56/profiles/audio/media.c:1334:11: warning: incompatible function pointer types initializing 'bool (*)(void *)' with an expression of type 'int (void)' [-Wincompatible-function-pointer-types] + .pause = pause, + ^~~~~ + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + profiles/audio/media.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/profiles/audio/media.c b/profiles/audio/media.c +index c84bbe2..7110089 100644 +--- a/profiles/audio/media.c ++++ b/profiles/audio/media.c +@@ -1281,7 +1281,7 @@ static bool stop(void *user_data) + return media_player_send(mp, "Stop"); + } + +-static bool pause(void *user_data) ++static bool apause(void *user_data) + { + struct media_player *mp = user_data; + +@@ -1331,7 +1331,7 @@ static struct avrcp_player_cb player_cb = { + .set_volume = set_volume, + .play = play, + .stop = stop, +- .pause = pause, ++ .pause = apause, + .next = next, + .previous = previous, + }; +-- +2.31.1 + diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5_5.56.bb b/poky/meta/recipes-connectivity/bluez5/bluez5_5.58.bb index 676cb2dbb..eb8475ec1 100644 --- a/poky/meta/recipes-connectivity/bluez5/bluez5_5.56.bb +++ b/poky/meta/recipes-connectivity/bluez5/bluez5_5.58.bb @@ -1,7 +1,9 @@ require bluez5.inc -SRC_URI[md5sum] = "e6c51b2aefa7c56ff072819a78611fa5" -SRC_URI[sha256sum] = "59c4dba9fc8aae2a6a5f8f12f19bc1b0c2dc27355c7ca3123eed3fe6bd7d0b9d" +SRC_URI[sha256sum] = "c8065e75a5eb67236849ef68a354b1700540305a8c88ef0a0fd6288f19daf1f1" + +# These issues have kernel fixes rather than bluez fixes so exclude here +CVE_CHECK_WHITELIST += "CVE-2020-12352 CVE-2020-24490" # noinst programs in Makefile.tools that are conditional on READLINE # support diff --git a/poky/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch b/poky/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch index 942b9c97b..9dca21a02 100644 --- a/poky/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch +++ b/poky/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch @@ -1,4 +1,4 @@ -From c7734e1547db967eccf242fe4b9e8a30b9ff141c Mon Sep 17 00:00:00 2001 +From 01974865e4d331eeaf25248bee1bb96539c450d9 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 6 Apr 2015 23:02:21 -0700 Subject: [PATCH] resolve: musl does not implement res_ninit @@ -15,7 +15,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/gweb/gresolv.c b/gweb/gresolv.c -index 38a554e..a9e8740 100644 +index 954e7cf..2a9bc51 100644 --- a/gweb/gresolv.c +++ b/gweb/gresolv.c @@ -36,6 +36,7 @@ @@ -26,7 +26,7 @@ index 38a554e..a9e8740 100644 #include "gresolv.h" -@@ -877,8 +878,6 @@ GResolv *g_resolv_new(int index) +@@ -878,8 +879,6 @@ GResolv *g_resolv_new(int index) resolv->index = index; resolv->nameserver_list = NULL; @@ -35,7 +35,7 @@ index 38a554e..a9e8740 100644 return resolv; } -@@ -918,8 +917,6 @@ void g_resolv_unref(GResolv *resolv) +@@ -919,8 +918,6 @@ void g_resolv_unref(GResolv *resolv) flush_nameservers(resolv); @@ -44,7 +44,7 @@ index 38a554e..a9e8740 100644 g_free(resolv); } -@@ -1022,24 +1019,19 @@ guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname, +@@ -1023,24 +1020,19 @@ guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname, debug(resolv, "hostname %s", hostname); if (!resolv->nameserver_list) { diff --git a/poky/meta/recipes-connectivity/connman/connman_1.39.bb b/poky/meta/recipes-connectivity/connman/connman_1.40.bb index df42e9ffb..15d105e2b 100644 --- a/poky/meta/recipes-connectivity/connman/connman_1.39.bb +++ b/poky/meta/recipes-connectivity/connman/connman_1.40.bb @@ -9,7 +9,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \ SRC_URI_append_libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch" -SRC_URI[sha256sum] = "9f62a7169b7491c670a1ff2e335b0d966308fb2f62e285c781105eb90f181af3" +SRC_URI[sha256sum] = "1a57ae7ce234aa3a1744aac3be5c2121d98dce999440ef8ab9cc4edfd5edcb12" RRECOMMENDS_${PN} = "connman-conf" RCONFLICTS_${PN} = "networkmanager" diff --git a/poky/meta/recipes-connectivity/iproute2/iproute2_5.11.0.bb b/poky/meta/recipes-connectivity/iproute2/iproute2_5.12.0.bb index e27b42d23..363112337 100644 --- a/poky/meta/recipes-connectivity/iproute2/iproute2_5.11.0.bb +++ b/poky/meta/recipes-connectivity/iproute2/iproute2_5.12.0.bb @@ -4,7 +4,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \ file://0001-libc-compat.h-add-musl-workaround.patch \ " -SRC_URI[sha256sum] = "c5e2ea108212b3445051b35953ec267f9f3469e1d5c67ac034ab559849505c54" +SRC_URI[sha256sum] = "9d268db98a36ee2a0e3ff3b92b2efff66fc1138a51e409bdef6ab3cfe15f326f" # CFLAGS are computed in Makefile and reference CCOPTS # diff --git a/poky/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.14.1.bb b/poky/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.15.1.bb index 9a83898e5..f3b64174c 100644 --- a/poky/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.14.1.bb +++ b/poky/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.15.1.bb @@ -11,7 +11,7 @@ DEPENDS = "avahi" SRC_URI = "git://github.com/lathiat/nss-mdns \ " -SRCREV = "41c9c5e78f287ed4b41ac438c1873fa71bfa70ae" +SRCREV = "4b3cfe818bf72d99a02b8ca8b8813cb2d6b40633" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-connectivity/libpcap/libpcap_1.10.0.bb b/poky/meta/recipes-connectivity/libpcap/libpcap_1.10.1.bb index 967eabcc1..f528595c9 100644 --- a/poky/meta/recipes-connectivity/libpcap/libpcap_1.10.0.bb +++ b/poky/meta/recipes-connectivity/libpcap/libpcap_1.10.1.bb @@ -10,10 +10,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=5eb289217c160e2920d2e35bddc36453 \ file://pcap.h;beginline=1;endline=32;md5=39af3510e011f34b8872f120b1dc31d2" DEPENDS = "flex-native bison-native" -SRC_URI = "https://www.tcpdump.org/release/${BP}.tar.gz \ - " -SRC_URI[md5sum] = "8c12dc19dd7e0d02d2bb6596eb5a71c7" -SRC_URI[sha256sum] = "8d12b42623eeefee872f123bd0dc85d535b00df4d42e865f993c40f7bfc92b1e" +SRC_URI = "https://www.tcpdump.org/release/${BP}.tar.gz" +SRC_URI[sha256sum] = "ed285f4accaf05344f90975757b3dbfe772ba41d1c401c2648b7fa45b711bdd4" inherit autotools binconfig-disabled pkgconfig diff --git a/poky/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.3.bb b/poky/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.4.bb index d8c6391b3..5500a9249 100644 --- a/poky/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.3.bb +++ b/poky/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.4.bb @@ -31,7 +31,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.x file://0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch \ file://clang-warnings.patch \ " -SRC_URI[sha256sum] = "b54d6d8ea2ee62d64111278301ba4631b7bb19174e7f717a724fe5d463900c80" +SRC_URI[sha256sum] = "51997d94e4c8bcef5456dd36a9ccc38e231207c4e9b6a9a2c108841e6aebe3dd" # Only kernel-module-nfsd is required here (but can be built-in) - the nfsd module will # pull in the remainder of the dependencies. diff --git a/poky/meta/recipes-connectivity/ofono/ofono/0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch b/poky/meta/recipes-connectivity/ofono/ofono/0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch new file mode 100644 index 000000000..3655b3fd6 --- /dev/null +++ b/poky/meta/recipes-connectivity/ofono/ofono/0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch @@ -0,0 +1,28 @@ +From 76e4054801350ebd4a44057379431a33d460ad0f Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Wed, 21 Apr 2021 11:01:34 +0000 +Subject: [PATCH] mbim: Fix build with ell-0.39 by restoring unlikely macro + from ell/util.h + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + drivers/mbimmodem/mbim-private.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/mbimmodem/mbim-private.h b/drivers/mbimmodem/mbim-private.h +index 51693eae..d917312c 100644 +--- a/drivers/mbimmodem/mbim-private.h ++++ b/drivers/mbimmodem/mbim-private.h +@@ -30,6 +30,10 @@ + __result; }) + #endif + ++/* used to be part of ell/util.h before 0.39: ++ https://git.kernel.org/pub/scm/libs/ell/ell.git/commit/?id=2a682421b06e41c45098217a686157f576847021 */ ++#define unlikely(x) __builtin_expect(!!(x), 0) ++ + enum mbim_control_message { + MBIM_OPEN_MSG = 0x1, + MBIM_CLOSE_MSG = 0x2, diff --git a/poky/meta/recipes-connectivity/ofono/ofono_1.31.bb b/poky/meta/recipes-connectivity/ofono/ofono_1.32.bb index 7d0976ad7..f3d875b20 100644 --- a/poky/meta/recipes-connectivity/ofono/ofono_1.31.bb +++ b/poky/meta/recipes-connectivity/ofono/ofono_1.32.bb @@ -11,9 +11,9 @@ SRC_URI = "\ ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \ file://ofono \ file://0001-mbim-add-an-optional-TEMP_FAILURE_RETRY-macro-copy.patch \ + file://0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch \ " -SRC_URI[md5sum] = "1c26340e3c6ed132cc812595081bb3dc" -SRC_URI[sha256sum] = "a15c5d28096c10eb30e47a68b6dc2e7c4a5a99d7f4cfedf0b69624f33d859e9b" +SRC_URI[sha256sum] = "f7d775887b7b80cf3b82e3f0a6c2696c6d01963d222ca2217919d21b9e803042" inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data @@ -30,9 +30,14 @@ PACKAGECONFIG[bluez] = "--enable-bluetooth, --disable-bluetooth, bluez5" EXTRA_OECONF += "--enable-test --enable-external-ell" +do_configure_prepend() { + bbnote "Removing bundled ell from ${S}/ell to prevent including it" + rm -rf ${S}/ell +} + do_install_append() { - install -d ${D}${sysconfdir}/init.d/ - install -m 0755 ${WORKDIR}/ofono ${D}${sysconfdir}/init.d/ofono + install -d ${D}${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/ofono ${D}${sysconfdir}/init.d/ofono } PACKAGES =+ "${PN}-tests" diff --git a/poky/meta/recipes-connectivity/openssh/openssh_8.5p1.bb b/poky/meta/recipes-connectivity/openssh/openssh_8.6p1.bb index 6a49cf71c..e8f041c58 100644 --- a/poky/meta/recipes-connectivity/openssh/openssh_8.5p1.bb +++ b/poky/meta/recipes-connectivity/openssh/openssh_8.6p1.bb @@ -25,12 +25,18 @@ SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar file://sshd_check_keys \ file://add-test-support-for-busybox.patch \ " -SRC_URI[sha256sum] = "f52f3f41d429aa9918e38cf200af225ccdd8e66f052da572870c89737646ec25" +SRC_URI[sha256sum] = "c3e6e4da1621762c850d03b47eed1e48dff4cc9608ddeb547202a234df8ed7ae" + +# This CVE is specific to OpenSSH with the pam opie which we don't build/use here +CVE_CHECK_WHITELIST += "CVE-2007-2768" # This CVE is specific to OpenSSH server, as used in Fedora and Red Hat Enterprise Linux 7 # and when running in a Kerberos environment. As such it is not relevant to OpenEmbedded CVE_CHECK_WHITELIST += "CVE-2014-9278" +# CVE only applies to some distributed RHEL binaries +CVE_CHECK_WHITELIST += "CVE-2008-3844" + PAM_SRC_URI = "file://sshd" inherit manpages useradd update-rc.d update-alternatives systemd diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch b/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch index 949c78834..003cfbc8d 100644 --- a/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch +++ b/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch @@ -25,16 +25,19 @@ Signed-off-by: Martin Hundebøll <martin@geanix.com> Update to fix buildpaths qa issue for '-fmacro-prefix-map'. Signed-off-by: Kai Kang <kai.kang@windriver.com> + +Update to fix buildpaths qa issue for '-ffile-prefix-map'. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + --- Configurations/unix-Makefile.tmpl | 10 +++++++++- crypto/build.info | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) -diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl -index 16af4d2087..54c162784c 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl -@@ -317,13 +317,22 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (), +@@ -420,13 +420,23 @@ BIN_LDFLAGS={- join(' ', $target{bin_lfl '$(CNF_LDFLAGS)', '$(LDFLAGS)') -} BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) @@ -49,6 +52,7 @@ index 16af4d2087..54c162784c 100644 +CFLAGS_Q={- for (@{$config{CFLAGS}}) { + s|-fdebug-prefix-map=[^ ]+|-fdebug-prefix-map=|g; + s|-fmacro-prefix-map=[^ ]+|-fmacro-prefix-map=|g; ++ s|-ffile-prefix-map=[^ ]+|-ffile-prefix-map=|g; + } + join(' ', @{$config{CFLAGS}}) -} + @@ -58,11 +62,9 @@ index 16af4d2087..54c162784c 100644 PERLASM_SCHEME= {- $target{perlasm_scheme} -} # For x86 assembler: Set PROCESSOR to 386 if you want to support -diff --git a/crypto/build.info b/crypto/build.info -index b515b7318e..8c9cee2a09 100644 --- a/crypto/build.info +++ b/crypto/build.info -@@ -10,7 +10,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \ +@@ -10,7 +10,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl DEPEND[cversion.o]=buildinf.h @@ -71,6 +73,3 @@ index b515b7318e..8c9cee2a09 100644 DEPEND[buildinf.h]=../configdata.pm GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME) --- -2.19.1 - diff --git a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-30004.patch b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-30004.patch new file mode 100644 index 000000000..e2540fc26 --- /dev/null +++ b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-30004.patch @@ -0,0 +1,123 @@ +From a0541334a6394f8237a4393b7372693cd7e96f15 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen <j@w1.fi> +Date: Sat, 13 Mar 2021 18:19:31 +0200 +Subject: [PATCH] ASN.1: Validate DigestAlgorithmIdentifier parameters + +The supported hash algorithms do not use AlgorithmIdentifier parameters. +However, there are implementations that include NULL parameters in +addition to ones that omit the parameters. Previous implementation did +not check the parameters value at all which supported both these cases, +but did not reject any other unexpected information. + +Use strict validation of digest algorithm parameters and reject any +unexpected value when validating a signature. This is needed to prevent +potential forging attacks. + +Signed-off-by: Jouni Malinen <j@w1.fi> + +Upstream-Status: Backport +CVE: CVE-2021-30004 + +Reference to upstream patch: +[https://w1.fi/cgit/hostap/commit/?id=a0541334a6394f8237a4393b7372693cd7e96f15] + +Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com> +--- + src/tls/pkcs1.c | 21 +++++++++++++++++++++ + src/tls/x509v3.c | 20 ++++++++++++++++++++ + 2 files changed, 41 insertions(+) + +diff --git a/src/tls/pkcs1.c b/src/tls/pkcs1.c +index 141ac50..e09db07 100644 +--- a/src/tls/pkcs1.c ++++ b/src/tls/pkcs1.c +@@ -240,6 +240,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk, + os_free(decrypted); + return -1; + } ++ wpa_hexdump(MSG_MSGDUMP, "PKCS #1: DigestInfo", ++ hdr.payload, hdr.length); + + pos = hdr.payload; + end = pos + hdr.length; +@@ -261,6 +263,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk, + os_free(decrypted); + return -1; + } ++ wpa_hexdump(MSG_MSGDUMP, "PKCS #1: DigestAlgorithmIdentifier", ++ hdr.payload, hdr.length); + da_end = hdr.payload + hdr.length; + + if (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) { +@@ -269,6 +273,23 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk, + os_free(decrypted); + return -1; + } ++ wpa_hexdump(MSG_MSGDUMP, "PKCS #1: Digest algorithm parameters", ++ next, da_end - next); ++ ++ /* ++ * RFC 5754: The correct encoding for the SHA2 algorithms would be to ++ * omit the parameters, but there are implementation that encode these ++ * as a NULL element. Allow these two cases and reject anything else. ++ */ ++ if (da_end > next && ++ (asn1_get_next(next, da_end - next, &hdr) < 0 || ++ !asn1_is_null(&hdr) || ++ hdr.payload + hdr.length != da_end)) { ++ wpa_printf(MSG_DEBUG, ++ "PKCS #1: Unexpected digest algorithm parameters"); ++ os_free(decrypted); ++ return -1; ++ } + + if (!asn1_oid_equal(&oid, hash_alg)) { + char txt[100], txt2[100]; +diff --git a/src/tls/x509v3.c b/src/tls/x509v3.c +index 1bd5aa0..bf2289f 100644 +--- a/src/tls/x509v3.c ++++ b/src/tls/x509v3.c +@@ -1834,6 +1834,7 @@ int x509_check_signature(struct x509_certificate *issuer, + os_free(data); + return -1; + } ++ wpa_hexdump(MSG_MSGDUMP, "X509: DigestInfo", hdr.payload, hdr.length); + + pos = hdr.payload; + end = pos + hdr.length; +@@ -1855,6 +1856,8 @@ int x509_check_signature(struct x509_certificate *issuer, + os_free(data); + return -1; + } ++ wpa_hexdump(MSG_MSGDUMP, "X509: DigestAlgorithmIdentifier", ++ hdr.payload, hdr.length); + da_end = hdr.payload + hdr.length; + + if (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) { +@@ -1862,6 +1865,23 @@ int x509_check_signature(struct x509_certificate *issuer, + os_free(data); + return -1; + } ++ wpa_hexdump(MSG_MSGDUMP, "X509: Digest algorithm parameters", ++ next, da_end - next); ++ ++ /* ++ * RFC 5754: The correct encoding for the SHA2 algorithms would be to ++ * omit the parameters, but there are implementation that encode these ++ * as a NULL element. Allow these two cases and reject anything else. ++ */ ++ if (da_end > next && ++ (asn1_get_next(next, da_end - next, &hdr) < 0 || ++ !asn1_is_null(&hdr) || ++ hdr.payload + hdr.length != da_end)) { ++ wpa_printf(MSG_DEBUG, ++ "X509: Unexpected digest algorithm parameters"); ++ os_free(data); ++ return -1; ++ } + + if (x509_sha1_oid(&oid)) { + if (signature->oid.oid[6] != 5 /* sha-1WithRSAEncryption */) { +-- +2.17.1 + diff --git a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb index 357c28634..16c591852 100644 --- a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb +++ b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=279b4f5abb9c153c285221855ddb78cc \ DEPENDS = "dbus libnl" RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli" -PACKAGECONFIG ??= "gnutls" +PACKAGECONFIG ??= "openssl" PACKAGECONFIG[gnutls] = ",,gnutls libgcrypt" PACKAGECONFIG[openssl] = ",,openssl" @@ -32,6 +32,7 @@ SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \ file://0003-WPS-UPnP-Handle-HTTP-initiation-failures-for-events-.patch \ file://CVE-2021-0326.patch \ file://CVE-2021-27803.patch \ + file://CVE-2021-30004.patch \ " SRC_URI[md5sum] = "2d2958c782576dc9901092fbfecb4190" SRC_URI[sha256sum] = "fcbdee7b4a64bea8177973299c8c824419c413ec2e3a95db63dd6a5dc3541f17" diff --git a/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb index 0021e4551..3804f4f7b 100644 --- a/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb +++ b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb @@ -44,9 +44,6 @@ EOF fi } -do_install_append_qemuppc64 () { - echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab -} pkg_postinst_${PN} () { # run this on host and on target diff --git a/poky/meta/recipes-core/busybox/busybox/0001-gen_build_files-Use-C-locale-when-calling-sed-on-glo.patch b/poky/meta/recipes-core/busybox/busybox/0001-gen_build_files-Use-C-locale-when-calling-sed-on-glo.patch new file mode 100644 index 000000000..e0a22c5bb --- /dev/null +++ b/poky/meta/recipes-core/busybox/busybox/0001-gen_build_files-Use-C-locale-when-calling-sed-on-glo.patch @@ -0,0 +1,28 @@ +From bff7f16f7f41de8df67beb03722f235828ef2249 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 3 May 2021 15:48:19 -0700 +Subject: [PATCH] gen_build_files: Use C locale when calling sed on globbed files + +sort order is different based on chosen locale and also default shell +being bash or dash + +This sets the environment variable LC_ALL to the value C, which will +enforce bytewise sorting, irrespective of the shell + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + scripts/gen_build_files.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/scripts/gen_build_files.sh ++++ b/scripts/gen_build_files.sh +@@ -4,6 +4,8 @@ + # but users complain that many sed implementations + # are misinterpreting --. + ++export LC_ALL=C ++ + test $# -ge 2 || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; } + + # cd to objtree diff --git a/poky/meta/recipes-core/busybox/busybox/longopts.cfg b/poky/meta/recipes-core/busybox/busybox/longopts.cfg new file mode 100644 index 000000000..dcfab9991 --- /dev/null +++ b/poky/meta/recipes-core/busybox/busybox/longopts.cfg @@ -0,0 +1,15 @@ +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y +CONFIG_FEATURE_GZIP_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_DIFF_LONG_OPTIONS=y +CONFIG_FEATURE_BC_LONG_OPTIONS=y +CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y +CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y +CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y diff --git a/poky/meta/recipes-core/busybox/busybox_1.33.0.bb b/poky/meta/recipes-core/busybox/busybox_1.33.1.bb index 1a3f218bc..a71ff530c 100644 --- a/poky/meta/recipes-core/busybox/busybox_1.33.0.bb +++ b/poky/meta/recipes-core/busybox/busybox_1.33.1.bb @@ -31,6 +31,7 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://sha1sum.cfg \ file://sha256sum.cfg \ file://getopts.cfg \ + file://longopts.cfg \ file://resize.cfg \ ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \ ${@["", "file://rcS.default"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \ @@ -46,7 +47,8 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \ file://rev.cfg \ file://pgrep.cfg \ -" + file://0001-gen_build_files-Use-C-locale-when-calling-sed-on-glo.patch \ + " SRC_URI_append_libc-musl = " file://musl.cfg " -SRC_URI[tarball.sha256sum] = "d568681c91a85edc6710770cebc1e80e042ad74d305b5c2e6d57a5f3de3b8fbd" +SRC_URI[tarball.sha256sum] = "12cec6bd2b16d8a9446dd16130f2b92982f1819f6e1c5f5887b6db03f5660d28" diff --git a/poky/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch b/poky/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch new file mode 100644 index 000000000..06b6307da --- /dev/null +++ b/poky/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch @@ -0,0 +1,167 @@ +From 3a48610860a9a75692d2cbedde69ac15269d540a Mon Sep 17 00:00:00 2001 +Message-Id: <3a48610860a9a75692d2cbedde69ac15269d540a.1624302273.git.wallinux@gmail.com> +From: Paul Eggert <eggert@cs.ucla.edu> +Date: Wed, 15 Apr 2020 20:50:32 -0700 +Subject: [PATCH] fts: remove NOSTAT_LEAF_OPTIMIZATION +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It caused ‘find’ and ‘du’ to dump core, and it was useful +only for obsolescent Linux filesystems anyway. Problem reported in: +https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html +Quite possibly there is still a serious underlying fts bug with +tight-loop-check and mutating file systems, but if so this patch +should cause the bug to be triggered less often. +* lib/fts.c (enum leaf_optimization): Remove +NOSTAT_LEAF_OPTIMIZATION, as it’s problematic. +(S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed. +(leaf_optimization): Remove special cases for ReiserFS and XFS. +(fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code. +* lib/fts_.h (struct _ftsent.fts_n_dirs_remaining): +Remove. All uses removed. + +Upstream-Status: Backport [upstream gnulib commit: +47bf2cf3184027c1eb9c1dfeea5c5b8b2d69710d] + +Signed-off-by: Anders Wallin <wallinux@gmail.com> +--- + lib/fts.c | 56 ++++++++---------------------------------------------- + lib/fts_.h | 5 ----- + 2 files changed, 8 insertions(+), 53 deletions(-) + +diff --git a/lib/fts.c b/lib/fts.c +index d3a0472..ade8c33 100644 +--- a/lib/fts.c ++++ b/lib/fts.c +@@ -445,7 +445,6 @@ fts_open (char * const *argv, + if ((parent = fts_alloc(sp, "", 0)) == NULL) + goto mem2; + parent->fts_level = FTS_ROOTPARENTLEVEL; +- parent->fts_n_dirs_remaining = -1; + } + + /* The classic fts implementation would call fts_stat with +@@ -634,9 +633,8 @@ fts_close (FTS *sp) + } + + /* Minimum link count of a traditional Unix directory. When leaf +- optimization is OK and MIN_DIR_NLINK <= st_nlink, then st_nlink is +- an upper bound on the number of subdirectories (counting "." and +- ".."). */ ++ optimization is OK and a directory's st_nlink == MIN_DIR_NLINK, ++ then the directory has no subdirectories. */ + enum { MIN_DIR_NLINK = 2 }; + + /* Whether leaf optimization is OK for a directory. */ +@@ -645,12 +643,8 @@ enum leaf_optimization + /* st_nlink is not reliable for this directory's subdirectories. */ + NO_LEAF_OPTIMIZATION, + +- /* Leaf optimization is OK, but is not useful for avoiding stat calls. */ +- OK_LEAF_OPTIMIZATION, +- +- /* Leaf optimization is not only OK: it is useful for avoiding +- stat calls, because dirent.d_type does not work. */ +- NOSTAT_LEAF_OPTIMIZATION ++ /* st_nlink == 2 means the directory lacks subdirectories. */ ++ OK_LEAF_OPTIMIZATION + }; + + #if (defined __linux__ || defined __ANDROID__) \ +@@ -663,9 +657,7 @@ enum leaf_optimization + # define S_MAGIC_CIFS 0xFF534D42 + # define S_MAGIC_NFS 0x6969 + # define S_MAGIC_PROC 0x9FA0 +-# define S_MAGIC_REISERFS 0x52654973 + # define S_MAGIC_TMPFS 0x1021994 +-# define S_MAGIC_XFS 0x58465342 + + # ifdef HAVE___FSWORD_T + typedef __fsword_t fsword; +@@ -782,23 +774,15 @@ dirent_inode_sort_may_be_useful (FTSENT const *p, int dir_fd) + } + + /* Given an FTS entry P for a directory with descriptor DIR_FD, +- return true if it is both useful and valid to apply leaf optimization. +- The optimization is useful only for file systems that lack usable +- dirent.d_type info. The optimization is valid if an st_nlink value +- of at least MIN_DIR_NLINK is an upper bound on the number of +- subdirectories of D, counting "." and ".." as subdirectories. ++ return whether it is valid to apply leaf optimization. ++ The optimization is valid if a directory's st_nlink value equal ++ to MIN_DIR_NLINK means the directory has no subdirectories. + DIR_FD is negative if unavailable. */ + static enum leaf_optimization + leaf_optimization (FTSENT const *p, int dir_fd) + { + switch (filesystem_type (p, dir_fd)) + { +- /* List here the file system types that may lack usable dirent.d_type +- info, yet for which the optimization does apply. */ +- case S_MAGIC_REISERFS: +- case S_MAGIC_XFS: /* XFS lacked it until 2013-08-22 commit. */ +- return NOSTAT_LEAF_OPTIMIZATION; +- + case 0: + /* Leaf optimization is unsafe if the file system type is unknown. */ + FALLTHROUGH; +@@ -1023,26 +1007,7 @@ check_for_dir: + if (p->fts_info == FTS_NSOK) + { + if (p->fts_statp->st_size == FTS_STAT_REQUIRED) +- { +- FTSENT *parent = p->fts_parent; +- if (parent->fts_n_dirs_remaining == 0 +- && ISSET(FTS_NOSTAT) +- && ISSET(FTS_PHYSICAL) +- && (leaf_optimization (parent, sp->fts_cwd_fd) +- == NOSTAT_LEAF_OPTIMIZATION)) +- { +- /* nothing more needed */ +- } +- else +- { +- p->fts_info = fts_stat(sp, p, false); +- if (S_ISDIR(p->fts_statp->st_mode) +- && p->fts_level != FTS_ROOTLEVEL +- && 0 < parent->fts_n_dirs_remaining +- && parent->fts_n_dirs_remaining != (nlink_t) -1) +- parent->fts_n_dirs_remaining--; +- } +- } ++ p->fts_info = fts_stat(sp, p, false); + else + fts_assert (p->fts_statp->st_size == FTS_NO_STAT_REQUIRED); + } +@@ -1826,11 +1791,6 @@ err: memset(sbp, 0, sizeof(struct stat)); + } + + if (S_ISDIR(sbp->st_mode)) { +- p->fts_n_dirs_remaining +- = ((sbp->st_nlink < MIN_DIR_NLINK +- || p->fts_level <= FTS_ROOTLEVEL) +- ? -1 +- : sbp->st_nlink - (ISSET (FTS_SEEDOT) ? 0 : MIN_DIR_NLINK)); + if (ISDOT(p->fts_name)) { + /* Command-line "." and ".." are real directories. */ + return (p->fts_level == FTS_ROOTLEVEL ? FTS_D : FTS_DOT); +diff --git a/lib/fts_.h b/lib/fts_.h +index 6c7d0ce..15c248c 100644 +--- a/lib/fts_.h ++++ b/lib/fts_.h +@@ -219,11 +219,6 @@ typedef struct _ftsent { + + size_t fts_namelen; /* strlen(fts_name) */ + +- /* If not (nlink_t) -1, an upper bound on the number of +- remaining subdirectories of interest. If this becomes +- zero, some work can be avoided. */ +- nlink_t fts_n_dirs_remaining; +- + # define FTS_D 1 /* preorder directory */ + # define FTS_DC 2 /* directory that causes cycles */ + # define FTS_DEFAULT 3 /* none of the above */ +-- +2.32.0 + diff --git a/poky/meta/recipes-core/coreutils/coreutils_8.32.bb b/poky/meta/recipes-core/coreutils/coreutils_8.32.bb index c1962ccb9..dd271d496 100644 --- a/poky/meta/recipes-core/coreutils/coreutils_8.32.bb +++ b/poky/meta/recipes-core/coreutils/coreutils_8.32.bb @@ -21,11 +21,16 @@ SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \ file://0001-local.mk-fix-cross-compiling-problem.patch \ file://run-ptest \ file://0001-ls-restore-8.31-behavior-on-removed-directories.patch \ + file://0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch \ " SRC_URI[md5sum] = "022042695b7d5bcf1a93559a9735e668" SRC_URI[sha256sum] = "4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa" +# http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=v8.27-101-gf5d7c0842 +# runcon is not really a sandbox command, use `runcon ... setsid ...` to avoid this particular issue. +CVE_CHECK_WHITELIST += "CVE-2016-2781" + EXTRA_OECONF_class-native = "--without-gmp" EXTRA_OECONF_class-target = "--enable-install-program=arch,hostname --libexecdir=${libdir}" EXTRA_OECONF_class-nativesdk = "--enable-install-program=arch,hostname" diff --git a/poky/meta/recipes-core/dbus/dbus-glib_0.110.bb b/poky/meta/recipes-core/dbus/dbus-glib_0.112.bb index 0b45805cf..003c3accc 100644 --- a/poky/meta/recipes-core/dbus/dbus-glib_0.110.bb +++ b/poky/meta/recipes-core/dbus/dbus-glib_0.112.bb @@ -3,8 +3,8 @@ DESCRIPTION = "GLib bindings for the D-Bus message bus that integrate \ the D-Bus library with the GLib thread abstraction and main loop." HOMEPAGE = "https://www.freedesktop.org/Software/dbus" LICENSE = "AFL-2.1 | GPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=cf5b3a2f7083750d504333114e738656 \ - file://dbus/dbus-glib.h;beginline=7;endline=21;md5=7755c9d7abccd5dbd25a6a974538bb3c" +LIC_FILES_CHKSUM = "file://COPYING;md5=c31c73c1d8f5d06784b2ccd22e42d641 \ + file://dbus/dbus-glib.h;beginline=7;endline=21;md5=c374833bd817988323f3a8fda0dc7f48" SECTION = "base" DEPENDS = "expat glib-2.0 virtual/libintl dbus-glib-native dbus" @@ -14,8 +14,8 @@ SRC_URI = "https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-${PV}.tar.g file://no-examples.patch \ file://test-install-makefile.patch \ " -SRC_URI[md5sum] = "d7cebf1d69445cbd28b4983392145192" -SRC_URI[sha256sum] = "7ce4760cf66c69148f6bd6c92feaabb8812dee30846b24cd0f7395c436d7e825" +SRC_URI[md5sum] = "021e6c8a288df02c227e4aafbf7e7527" +SRC_URI[sha256sum] = "7d550dccdfcd286e33895501829ed971eeb65c614e73aadb4a08aeef719b143a" inherit autotools pkgconfig gettext bash-completion gtk-doc diff --git a/poky/meta/recipes-core/ell/ell_0.38.bb b/poky/meta/recipes-core/ell/ell_0.41.bb index 7d3a33997..5fd3077bc 100644 --- a/poky/meta/recipes-core/ell/ell_0.38.bb +++ b/poky/meta/recipes-core/ell/ell_0.41.bb @@ -17,7 +17,7 @@ inherit autotools pkgconfig SRC_URI = "https://mirrors.edge.kernel.org/pub/linux/libs/${BPN}/${BPN}-${PV}.tar.xz \ file://0001-pem.c-do-not-use-rawmemchr.patch \ " -SRC_URI[sha256sum] = "c1b7ae5676eec310f08757b3d8652b8e818776be1897fb5deb59e55f02a012a7" +SRC_URI[sha256sum] = "4e8dba6c53cf152dbd0fd1dc3d4c7b04abf79e20a948895f85943e586870505c" do_configure_prepend () { mkdir -p ${S}/build-aux diff --git a/poky/meta/recipes-core/expat/expat/0001-Add-output-of-tests-result.patch b/poky/meta/recipes-core/expat/expat/0001-Add-output-of-tests-result.patch deleted file mode 100644 index c5c18ead7..000000000 --- a/poky/meta/recipes-core/expat/expat/0001-Add-output-of-tests-result.patch +++ /dev/null @@ -1,83 +0,0 @@ -From aa84835a00bfd65e784d58411e76f60658e939dc Mon Sep 17 00:00:00 2001 -From: Oleksandr Popovych <oleksandr.s.popovych@globallogic.com> -Date: Tue, 18 Feb 2020 19:04:55 +0200 -Subject: [PATCH] Add output of tests result - -Added console output of testing results in form 'RESULT: TEST_NAME'. - -Changed verbose mode of test application set by '-v' ('--verbose') -argument to CK_NORMAL. -Added new supported argument '-vv' ('--extra-verbose') that changes -verbose mode of test application to CK_VERBOSE. Results of each test -are shown in output only if this mode is set. - -Upstream-Status: Denied - -This patch changes potentially deprecated feature that shoud be changed -in upstream. [https://github.com/libexpat/libexpat/issues/382] - -Signed-off-by: Oleksandr Popovych <oleksandr.s.popovych@globallogic.com> ---- - tests/minicheck.c | 10 +++++++++- - tests/runtests.c | 4 +++- - 2 files changed, 12 insertions(+), 2 deletions(-) - -diff --git a/expat/tests/minicheck.c b/expat/tests/minicheck.c -index a5a1efb..94fa412 100644 ---- a/tests/minicheck.c -+++ b/tests/minicheck.c -@@ -164,6 +164,8 @@ srunner_run_all(SRunner *runner, int verbosity) { - if (tc->setup != NULL) { - /* setup */ - if (setjmp(env)) { -+ if (verbosity >= CK_VERBOSE) -+ printf("SKIP: %s\n", _check_current_function); - add_failure(runner, verbosity); - continue; - } -@@ -171,6 +173,8 @@ srunner_run_all(SRunner *runner, int verbosity) { - } - /* test */ - if (setjmp(env)) { -+ if (verbosity >= CK_VERBOSE) -+ printf("FAIL: %s\n", _check_current_function); - add_failure(runner, verbosity); - continue; - } -@@ -178,12 +182,16 @@ srunner_run_all(SRunner *runner, int verbosity) { - - /* teardown */ - if (tc->teardown != NULL) { -- if (setjmp(env)) { -+ if (setjmp(env)) { -+ if (verbosity >= CK_VERBOSE) -+ printf("PASS: %s\n", _check_current_function); - add_failure(runner, verbosity); - continue; - } - tc->teardown(); - } -+ if (verbosity >= CK_VERBOSE) -+ printf("PASS: %s\n", _check_current_function); - } - tc = tc->next_tcase; - } -diff --git a/tests/runtests.c b/expat/tests/runtests.c -index 7791fe0..75724e5 100644 ---- a/tests/runtests.c -+++ b/tests/runtests.c -@@ -11619,9 +11619,11 @@ main(int argc, char *argv[]) { - for (i = 1; i < argc; ++i) { - char *opt = argv[i]; - if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0) -- verbosity = CK_VERBOSE; -+ verbosity = CK_NORMAL; - else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0) - verbosity = CK_SILENT; -+ else if (strcmp(opt, "-vv") == 0 || strcmp(opt, "--extra-verbose") == 0) -+ verbosity = CK_VERBOSE; - else { - fprintf(stderr, "runtests: unknown option '%s'\n", opt); - return 2; --- -2.17.1 diff --git a/poky/meta/recipes-core/expat/expat/run-ptest b/poky/meta/recipes-core/expat/expat/run-ptest index 1b39cec8e..59d8ab57e 100644 --- a/poky/meta/recipes-core/expat/expat/run-ptest +++ b/poky/meta/recipes-core/expat/expat/run-ptest @@ -18,6 +18,6 @@ TIME=$(which time) echo "Architecture: $(uname -m)" > ${output} echo "Image: $(uname -sr)" >> ${output} -${TIME} -f 'Execution time: %e s' bash -c "testCheck runtests -vv" |& tee -a ${output} -${TIME} -f 'Execution time: %e s' bash -c "testCheck runtestspp -vv" |& tee -a ${output} +${TIME} -f 'Execution time: %e s' bash -c "testCheck runtests -v" |& tee -a ${output} +${TIME} -f 'Execution time: %e s' bash -c "testCheck runtestspp -v" |& tee -a ${output} echo diff --git a/poky/meta/recipes-core/expat/expat_2.2.10.bb b/poky/meta/recipes-core/expat/expat_2.4.1.bb index fa263775b..451158a5d 100644 --- a/poky/meta/recipes-core/expat/expat_2.2.10.bb +++ b/poky/meta/recipes-core/expat/expat_2.4.1.bb @@ -8,11 +8,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=9e2ce3b3c4c0f2670883a23bbd7c37a9" SRC_URI = "${SOURCEFORGE_MIRROR}/expat/expat-${PV}.tar.bz2 \ file://libtool-tag.patch \ - file://run-ptest \ - file://0001-Add-output-of-tests-result.patch \ - " + file://run-ptest \ + " -SRC_URI[sha256sum] = "b2c160f1b60e92da69de8e12333096aeb0c3bf692d41c60794de278af72135a5" +SRC_URI[sha256sum] = "2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40" EXTRA_OECMAKE_class-native += "-DEXPAT_BUILD_DOCS=OFF" @@ -25,3 +24,5 @@ do_install_ptest_class-target() { } BBCLASSEXTEND += "native nativesdk" + +CVE_PRODUCT = "expat libexpat" diff --git a/poky/meta/recipes-core/gettext/gettext_0.21.bb b/poky/meta/recipes-core/gettext/gettext_0.21.bb index bc14867bb..b86e8d838 100644 --- a/poky/meta/recipes-core/gettext/gettext_0.21.bb +++ b/poky/meta/recipes-core/gettext/gettext_0.21.bb @@ -174,7 +174,7 @@ do_install_ptest() { fi } -RDEPENDS_${PN}-ptest += "make" +RDEPENDS_${PN}-ptest += "make xz" RDEPENDS_${PN}-ptest_append_libc-glibc = "\ glibc-gconv-big5 \ glibc-charmap-big5 \ diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch index d6765b163..8a6d46df7 100644 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch @@ -17,16 +17,16 @@ diff --git a/gio/tests/meson.build b/gio/tests/meson.build index 3a19c82..b762835 100644 --- a/gio/tests/meson.build +++ b/gio/tests/meson.build -@@ -12,7 +12,7 @@ test_c_args = [ - '-UG_DISABLE_ASSERT', - ] +@@ -27,7 +27,7 @@ test_c_args = [ + endif # libutil.length() > 0 + endif # build_machine.system() == 'linux' -if host_machine.system() == 'windows' +if host_system == 'windows' common_gio_tests_deps += [iphlpapi_dep, winsock2, cc.find_library ('secur32')] endif -@@ -133,7 +133,7 @@ else +@@ -148,7 +148,7 @@ else endif # Test programs buildable on UNIX only @@ -35,7 +35,7 @@ index 3a19c82..b762835 100644 gio_tests += { 'file' : {}, 'gdbus-peer' : { -@@ -385,7 +385,7 @@ if host_machine.system() != 'windows' +@@ -402,7 +402,7 @@ if host_machine.system() != 'windows' endif # unix # Test programs buildable on Windows only @@ -44,7 +44,7 @@ index 3a19c82..b762835 100644 gio_tests += {'win32-streams' : {}} endif -@@ -455,7 +455,7 @@ if cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl' +@@ -472,7 +472,7 @@ if cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl' } endif @@ -57,7 +57,7 @@ diff --git a/glib/tests/meson.build b/glib/tests/meson.build index 6eb23e8..36eb919 100644 --- a/glib/tests/meson.build +++ b/glib/tests/meson.build -@@ -137,7 +137,7 @@ if glib_conf.has('HAVE_EVENTFD') +@@ -142,7 +142,7 @@ if glib_conf.has('HAVE_EVENTFD') } endif diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch index 508c8c3ba..fbdd4c266 100644 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch @@ -15,8 +15,8 @@ diff --git a/gio/tests/codegen.py b/gio/tests/codegen.py index 51de0ed..ca98c9d 100644 --- a/gio/tests/codegen.py +++ b/gio/tests/codegen.py -@@ -51,7 +51,7 @@ class TestCodegen(unittest.TestCase): - cwd = '' +@@ -55,7 +55,7 @@ class TestCodegen(unittest.TestCase): + cwd = "" def setUp(self): - self.timeout_seconds = 10 # seconds per test diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch deleted file mode 100644 index 485218652..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch +++ /dev/null @@ -1,403 +0,0 @@ -From fab561f8d05794329184cd81f9ab9d9d77dcc22a Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:12:22 +0000 -Subject: [PATCH 01/29] gobject: Drop use of volatile from get_type() macros -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -http://isvolatileusefulwiththreads.in/c/ - -It’s possible that the variables here are only marked as volatile -because they’re arguments to `g_once_*()`. Those arguments will be -modified in a subsequent commit. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - docs/reference/gobject/glib-mkenums.xml | 8 ++--- - docs/reference/gobject/tut_gtype.xml | 2 +- - gio/gioenumtypes.c.template | 8 ++--- - gio/tests/gsettings.c | 4 +-- - gobject/gbinding.c | 8 ++--- - gobject/gboxed.c | 8 ++--- - gobject/glib-enumtypes.c.template | 8 ++--- - gobject/gsourceclosure.c | 2 +- - gobject/gtype.h | 48 ++++++++++++------------- - gobject/tests/signals.c | 16 ++++----- - 10 files changed, 56 insertions(+), 56 deletions(-) - -diff --git a/docs/reference/gobject/glib-mkenums.xml b/docs/reference/gobject/glib-mkenums.xml -index 2200328ed..ce250a3ff 100644 ---- a/docs/reference/gobject/glib-mkenums.xml -+++ b/docs/reference/gobject/glib-mkenums.xml -@@ -480,9 +480,9 @@ A C source template file will typically look like this: - GType - @enum_name@_get_type (void) - { -- static volatile gsize g_@type@_type_id__volatile; -+ static gsize static_g_@type@_type_id; - -- if (g_once_init_enter (&g_define_type_id__volatile)) -+ if (g_once_init_enter (&static_g_@type@_type_id)) - { - static const G@Type@Value values[] = { - /*** END value-header ***/ -@@ -498,9 +498,9 @@ GType - GType g_@type@_type_id = - g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); - -- g_once_init_leave (&g_@type@_type_id__volatile, g_@type@_type_id); -+ g_once_init_leave (&static_g_@type@_type_id, g_@type@_type_id); - } -- return g_@type@_type_id__volatile; -+ return static_g_@type@_type_id; - } - - /*** END value-tail ***/ -diff --git a/docs/reference/gobject/tut_gtype.xml b/docs/reference/gobject/tut_gtype.xml -index 25e37dc48..ee042889d 100644 ---- a/docs/reference/gobject/tut_gtype.xml -+++ b/docs/reference/gobject/tut_gtype.xml -@@ -852,7 +852,7 @@ viewer_editable_default_init (ViewerEditableInterface *iface) - GType - viewer_editable_get_type (void) - { -- static volatile gsize type_id = 0; -+ static gsize type_id = 0; - if (g_once_init_enter (&type_id)) { - const GTypeInfo info = { - sizeof (ViewerEditableInterface), -diff --git a/gio/gioenumtypes.c.template b/gio/gioenumtypes.c.template -index e9adc4a38..948a01201 100644 ---- a/gio/gioenumtypes.c.template -+++ b/gio/gioenumtypes.c.template -@@ -13,9 +13,9 @@ - GType - @enum_name@_get_type (void) - { -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize static_g_define_type_id = 0; - -- if (g_once_init_enter (&g_define_type_id__volatile)) -+ if (g_once_init_enter (&static_g_define_type_id)) - { - static const G@Type@Value values[] = { - /*** END value-header ***/ -@@ -29,10 +29,10 @@ GType - }; - GType g_define_type_id = - g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); - } - -- return g_define_type_id__volatile; -+ return static_g_define_type_id; - } - - /*** END value-tail ***/ -diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c -index 2f81ae6c3..179d0fd2f 100644 ---- a/gio/tests/gsettings.c -+++ b/gio/tests/gsettings.c -@@ -1060,7 +1060,7 @@ test_object_set_property (GObject *object, - static GType - test_enum_get_type (void) - { -- static volatile gsize define_type_id = 0; -+ static gsize define_type_id = 0; - - if (g_once_init_enter (&define_type_id)) - { -@@ -1082,7 +1082,7 @@ test_enum_get_type (void) - static GType - test_flags_get_type (void) - { -- static volatile gsize define_type_id = 0; -+ static gsize define_type_id = 0; - - if (g_once_init_enter (&define_type_id)) - { -diff --git a/gobject/gbinding.c b/gobject/gbinding.c -index 78a883075..662d76b3c 100644 ---- a/gobject/gbinding.c -+++ b/gobject/gbinding.c -@@ -120,9 +120,9 @@ - GType - g_binding_flags_get_type (void) - { -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize static_g_define_type_id = 0; - -- if (g_once_init_enter (&g_define_type_id__volatile)) -+ if (g_once_init_enter (&static_g_define_type_id)) - { - static const GFlagsValue values[] = { - { G_BINDING_DEFAULT, "G_BINDING_DEFAULT", "default" }, -@@ -133,10 +133,10 @@ g_binding_flags_get_type (void) - }; - GType g_define_type_id = - g_flags_register_static (g_intern_static_string ("GBindingFlags"), values); -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); - } - -- return g_define_type_id__volatile; -+ return static_g_define_type_id; - } - - #define G_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_BINDING, GBindingClass)) -diff --git a/gobject/gboxed.c b/gobject/gboxed.c -index 30ba4e775..194251383 100644 ---- a/gobject/gboxed.c -+++ b/gobject/gboxed.c -@@ -180,19 +180,19 @@ G_DEFINE_BOXED_TYPE (GOptionGroup, g_option_group, g_option_group_ref, g_option_ - GType - g_strv_get_type (void) - { -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize static_g_define_type_id = 0; - -- if (g_once_init_enter (&g_define_type_id__volatile)) -+ if (g_once_init_enter (&static_g_define_type_id)) - { - GType g_define_type_id = - g_boxed_type_register_static (g_intern_static_string ("GStrv"), - (GBoxedCopyFunc) g_strdupv, - (GBoxedFreeFunc) g_strfreev); - -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); - } - -- return g_define_type_id__volatile; -+ return static_g_define_type_id; - } - - GType -diff --git a/gobject/glib-enumtypes.c.template b/gobject/glib-enumtypes.c.template -index b7d36728f..1800ca8af 100644 ---- a/gobject/glib-enumtypes.c.template -+++ b/gobject/glib-enumtypes.c.template -@@ -13,9 +13,9 @@ - GType - @enum_name@_get_type (void) - { -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize static_g_define_type_id = 0; - -- if (g_once_init_enter (&g_define_type_id__volatile)) -+ if (g_once_init_enter (&static_g_define_type_id)) - { - static const G@Type@Value values[] = { - /*** END value-header ***/ -@@ -29,10 +29,10 @@ GType - }; - GType g_define_type_id = - g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); - } - -- return g_define_type_id__volatile; -+ return static_g_define_type_id; - } - - /*** END value-tail ***/ -diff --git a/gobject/gsourceclosure.c b/gobject/gsourceclosure.c -index 0d0d2e87c..d1b1ee4b3 100644 ---- a/gobject/gsourceclosure.c -+++ b/gobject/gsourceclosure.c -@@ -32,7 +32,7 @@ G_DEFINE_BOXED_TYPE (GIOChannel, g_io_channel, g_io_channel_ref, g_io_channel_un - GType - g_io_condition_get_type (void) - { -- static volatile GType etype = 0; -+ static GType etype = 0; - - if (g_once_init_enter (&etype)) - { -diff --git a/gobject/gtype.h b/gobject/gtype.h -index 9de46ac60..666fadb0c 100644 ---- a/gobject/gtype.h -+++ b/gobject/gtype.h -@@ -1727,8 +1727,8 @@ guint g_type_get_type_registration_serial (void); - * GType - * gtk_gadget_get_type (void) - * { -- * static volatile gsize g_define_type_id__volatile = 0; -- * if (g_once_init_enter (&g_define_type_id__volatile)) -+ * static gsize static_g_define_type_id = 0; -+ * if (g_once_init_enter (&static_g_define_type_id)) - * { - * GType g_define_type_id = - * g_type_register_static_simple (GTK_TYPE_WIDGET, -@@ -1748,9 +1748,9 @@ guint g_type_get_type_registration_serial (void); - * }; - * g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info); - * } -- * g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); -+ * g_once_init_leave (&static_g_define_type_id, g_define_type_id); - * } -- * return g_define_type_id__volatile; -+ * return static_g_define_type_id; - * } - * ]| - * The only pieces which have to be manually provided are the definitions of -@@ -1995,17 +1995,17 @@ type_name##_get_instance_private (TypeName *self) \ - GType \ - type_name##_get_type (void) \ - { \ -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize static_g_define_type_id = 0; - /* Prelude goes here */ - - /* Added for _G_DEFINE_TYPE_EXTENDED_WITH_PRELUDE */ - #define _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \ -- if (g_once_init_enter (&g_define_type_id__volatile)) \ -+ if (g_once_init_enter (&static_g_define_type_id)) \ - { \ - GType g_define_type_id = type_name##_get_type_once (); \ -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ - } \ -- return g_define_type_id__volatile; \ -+ return static_g_define_type_id; \ - } /* closes type_name##_get_type() */ \ - \ - G_GNUC_NO_INLINE \ -@@ -2041,8 +2041,8 @@ static void type_name##_default_init (TypeName##Interface *klass); \ - GType \ - type_name##_get_type (void) \ - { \ -- static volatile gsize g_define_type_id__volatile = 0; \ -- if (g_once_init_enter (&g_define_type_id__volatile)) \ -+ static gsize static_g_define_type_id = 0; \ -+ if (g_once_init_enter (&static_g_define_type_id)) \ - { \ - GType g_define_type_id = \ - g_type_register_static_simple (G_TYPE_INTERFACE, \ -@@ -2058,9 +2058,9 @@ type_name##_get_type (void) \ - #define _G_DEFINE_INTERFACE_EXTENDED_END() \ - /* following custom code */ \ - } \ -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ - } \ -- return g_define_type_id__volatile; \ -+ return static_g_define_type_id; \ - } /* closes type_name##_get_type() */ - - /** -@@ -2115,13 +2115,13 @@ static GType type_name##_get_type_once (void); \ - GType \ - type_name##_get_type (void) \ - { \ -- static volatile gsize g_define_type_id__volatile = 0; \ -- if (g_once_init_enter (&g_define_type_id__volatile)) \ -+ static gsize static_g_define_type_id = 0; \ -+ if (g_once_init_enter (&static_g_define_type_id)) \ - { \ - GType g_define_type_id = type_name##_get_type_once (); \ -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ - } \ -- return g_define_type_id__volatile; \ -+ return static_g_define_type_id; \ - } \ - \ - G_GNUC_NO_INLINE \ -@@ -2152,13 +2152,13 @@ static GType type_name##_get_type_once (void); \ - GType \ - type_name##_get_type (void) \ - { \ -- static volatile gsize g_define_type_id__volatile = 0; \ -- if (g_once_init_enter (&g_define_type_id__volatile)) \ -+ static gsize static_g_define_type_id = 0; \ -+ if (g_once_init_enter (&static_g_define_type_id)) \ - { \ - GType g_define_type_id = type_name##_get_type_once (); \ -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ - } \ -- return g_define_type_id__volatile; \ -+ return static_g_define_type_id; \ - } \ - \ - G_GNUC_NO_INLINE \ -@@ -2205,13 +2205,13 @@ static GType type_name##_get_type_once (void); \ - GType \ - type_name##_get_type (void) \ - { \ -- static volatile gsize g_define_type_id__volatile = 0; \ -- if (g_once_init_enter (&g_define_type_id__volatile)) \ -+ static gsize static_g_define_type_id = 0; \ -+ if (g_once_init_enter (&static_g_define_type_id)) \ - { \ - GType g_define_type_id = type_name##_get_type_once (); \ -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ - } \ -- return g_define_type_id__volatile; \ -+ return static_g_define_type_id; \ - } \ - \ - G_GNUC_NO_INLINE \ -diff --git a/gobject/tests/signals.c b/gobject/tests/signals.c -index 120f90b5c..ac0ce5102 100644 ---- a/gobject/tests/signals.c -+++ b/gobject/tests/signals.c -@@ -66,9 +66,9 @@ custom_marshal_VOID__INVOCATIONHINT (GClosure *closure, - static GType - test_enum_get_type (void) - { -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize static_g_define_type_id = 0; - -- if (g_once_init_enter (&g_define_type_id__volatile)) -+ if (g_once_init_enter (&static_g_define_type_id)) - { - static const GEnumValue values[] = { - { TEST_ENUM_NEGATIVE, "TEST_ENUM_NEGATIVE", "negative" }, -@@ -79,18 +79,18 @@ test_enum_get_type (void) - }; - GType g_define_type_id = - g_enum_register_static (g_intern_static_string ("TestEnum"), values); -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); - } - -- return g_define_type_id__volatile; -+ return static_g_define_type_id; - } - - static GType - test_unsigned_enum_get_type (void) - { -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize static_g_define_type_id = 0; - -- if (g_once_init_enter (&g_define_type_id__volatile)) -+ if (g_once_init_enter (&static_g_define_type_id)) - { - static const GEnumValue values[] = { - { TEST_UNSIGNED_ENUM_FOO, "TEST_UNSIGNED_ENUM_FOO", "foo" }, -@@ -99,10 +99,10 @@ test_unsigned_enum_get_type (void) - }; - GType g_define_type_id = - g_enum_register_static (g_intern_static_string ("TestUnsignedEnum"), values); -- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); -+ g_once_init_leave (&static_g_define_type_id, g_define_type_id); - } - -- return g_define_type_id__volatile; -+ return static_g_define_type_id; - } - - typedef enum { --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-tests-codegen.py-removing-unecessary-print-statement.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-tests-codegen.py-removing-unecessary-print-statement.patch deleted file mode 100644 index 40427e0e6..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-tests-codegen.py-removing-unecessary-print-statement.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 6178df5658045a6253ef806e018fe80d99a8f5fb Mon Sep 17 00:00:00 2001 -From: Yi Fan Yu <yifan.yu@windriver.com> -Date: Mon, 1 Feb 2021 16:10:28 -0500 -Subject: [PATCH] tests/codegen.py: removing unecessary print statement - -A huge amount of output(boiler-plate code) is -printed to the console screen. -This is not critical to the test results. - -This causes intermittent test failure when another process -has to parse its output. - -Root cause is in ptest-runner, This is a workaround - -Uptream-Status: Inappropriate [other] - - - -Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> ---- - gio/tests/codegen.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/gio/tests/codegen.py b/gio/tests/codegen.py -index 51de0ede4..cfa4db42e 100644 ---- a/gio/tests/codegen.py -+++ b/gio/tests/codegen.py -@@ -250,7 +250,6 @@ class TestCodegen(unittest.TestCase): - - result = Result(info, out, err, subs) - -- print('Output:', result.out) - return result - - def runCodegenWithInterface(self, interface_contents, *args): --- -2.29.2 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch deleted file mode 100644 index fada7cc38..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch +++ /dev/null @@ -1,44 +0,0 @@ -From a6ce0e742a5c75c53a7c702ebb1af1084065160a Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:14:29 +0000 -Subject: [PATCH 02/29] tests: Fix non-atomic access to a shared variable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -And drop the `volatile` qualifier from the variable, as that doesn’t -help with thread safety. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/tests/642026.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/glib/tests/642026.c b/glib/tests/642026.c -index ef54f14bb..26ab2ed06 100644 ---- a/glib/tests/642026.c -+++ b/glib/tests/642026.c -@@ -25,7 +25,7 @@ static GMutex *mutex; - static GCond *cond; - static guint i; - --static volatile gint freed = 0; -+static gint freed = 0; /* (atomic) */ - - static void - notify (gpointer p) -@@ -63,7 +63,7 @@ testcase (void) - GThread *t1; - - g_static_private_init (&sp); -- freed = 0; -+ g_atomic_int_set (&freed, 0); - - t1 = g_thread_create (thread_func, NULL, TRUE, NULL); - g_assert (t1 != NULL); --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch deleted file mode 100644 index 8bc71a698..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch +++ /dev/null @@ -1,90 +0,0 @@ -From ea746c79faf554d980c21b0e4381753e003d2dc6 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:17:23 +0000 -Subject: [PATCH 03/29] tests: Fix non-atomic access to a shared variable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -And drop the `volatile` qualifier from the variable, as that doesn’t -help with thread safety. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/tests/mainloop.c | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/glib/tests/mainloop.c b/glib/tests/mainloop.c -index 16763a0ea..563a951de 100644 ---- a/glib/tests/mainloop.c -+++ b/glib/tests/mainloop.c -@@ -918,7 +918,7 @@ test_mainloop_overflow (void) - g_main_context_unref (ctx); - } - --static volatile gint ready_time_dispatched; -+static gint ready_time_dispatched; /* (atomic) */ - - static gboolean - ready_time_dispatch (GSource *source, -@@ -964,7 +964,7 @@ test_ready_time (void) - /* A source with no ready time set should not fire */ - g_assert_cmpint (g_source_get_ready_time (source), ==, -1); - while (g_main_context_iteration (NULL, FALSE)); -- g_assert_false (ready_time_dispatched); -+ g_assert_false (g_atomic_int_get (&ready_time_dispatched)); - - /* The ready time should not have been changed */ - g_assert_cmpint (g_source_get_ready_time (source), ==, -1); -@@ -978,37 +978,37 @@ test_ready_time (void) - */ - g_source_set_ready_time (source, g_get_monotonic_time () + G_TIME_SPAN_DAY); - while (g_main_context_iteration (NULL, FALSE)); -- g_assert_false (ready_time_dispatched); -+ g_assert_false (g_atomic_int_get (&ready_time_dispatched)); - /* Make sure it didn't get reset */ - g_assert_cmpint (g_source_get_ready_time (source), !=, -1); - - /* Ready time of -1 -> don't fire */ - g_source_set_ready_time (source, -1); - while (g_main_context_iteration (NULL, FALSE)); -- g_assert_false (ready_time_dispatched); -+ g_assert_false (g_atomic_int_get (&ready_time_dispatched)); - /* Not reset, but should still be -1 from above */ - g_assert_cmpint (g_source_get_ready_time (source), ==, -1); - - /* A ready time of the current time should fire immediately */ - g_source_set_ready_time (source, g_get_monotonic_time ()); - while (g_main_context_iteration (NULL, FALSE)); -- g_assert_true (ready_time_dispatched); -- ready_time_dispatched = FALSE; -+ g_assert_true (g_atomic_int_get (&ready_time_dispatched)); -+ g_atomic_int_set (&ready_time_dispatched, FALSE); - /* Should have gotten reset by the handler function */ - g_assert_cmpint (g_source_get_ready_time (source), ==, -1); - - /* As well as one in the recent past... */ - g_source_set_ready_time (source, g_get_monotonic_time () - G_TIME_SPAN_SECOND); - while (g_main_context_iteration (NULL, FALSE)); -- g_assert_true (ready_time_dispatched); -- ready_time_dispatched = FALSE; -+ g_assert_true (g_atomic_int_get (&ready_time_dispatched)); -+ g_atomic_int_set (&ready_time_dispatched, FALSE); - g_assert_cmpint (g_source_get_ready_time (source), ==, -1); - - /* Zero is the 'official' way to get a source to fire immediately */ - g_source_set_ready_time (source, 0); - while (g_main_context_iteration (NULL, FALSE)); -- g_assert_true (ready_time_dispatched); -- ready_time_dispatched = FALSE; -+ g_assert_true (g_atomic_int_get (&ready_time_dispatched)); -+ g_atomic_int_set (&ready_time_dispatched, FALSE); - g_assert_cmpint (g_source_get_ready_time (source), ==, -1); - - /* Now do some tests of cross-thread wakeups. --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch deleted file mode 100644 index 4b7b6f463..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 3dda662bebb81666d009635df1055ba5c1e17b52 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:16:17 +0000 -Subject: [PATCH 04/29] tests: Drop unnecessary volatile qualifiers from tests -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These variables were already (correctly) accessed atomically. The -`volatile` qualifier doesn’t help with that. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/tests/atomic.c | 4 ++-- - glib/tests/cond.c | 2 +- - glib/tests/gwakeuptest.c | 2 +- - glib/tests/hash.c | 2 +- - glib/tests/slice.c | 2 +- - 5 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c -index 6b6cc7f3e..7d2459f3a 100644 ---- a/glib/tests/atomic.c -+++ b/glib/tests/atomic.c -@@ -248,8 +248,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS - #define THREADS 10 - #define ROUNDS 10000 - --volatile gint bucket[THREADS]; --volatile gint atomic; -+gint bucket[THREADS]; /* never contested by threads, not accessed atomically */ -+gint atomic; /* (atomic) */ - - static gpointer - thread_func (gpointer data) -diff --git a/glib/tests/cond.c b/glib/tests/cond.c -index 0f0b3d249..ed338cce3 100644 ---- a/glib/tests/cond.c -+++ b/glib/tests/cond.c -@@ -29,7 +29,7 @@ - - static GCond cond; - static GMutex mutex; --static volatile gint next; -+static gint next; /* locked by @mutex */ - - static void - push_value (gint value) -diff --git a/glib/tests/gwakeuptest.c b/glib/tests/gwakeuptest.c -index 461a7d3de..b37fb43fc 100644 ---- a/glib/tests/gwakeuptest.c -+++ b/glib/tests/gwakeuptest.c -@@ -92,7 +92,7 @@ struct context - static struct context contexts[NUM_THREADS]; - static GThread *threads[NUM_THREADS]; - static GWakeup *last_token_wakeup; --static volatile gint tokens_alive; -+static gint tokens_alive; /* (atomic) */ - - static void - context_init (struct context *ctx) -diff --git a/glib/tests/hash.c b/glib/tests/hash.c -index 4623d18d1..f4ff55ce1 100644 ---- a/glib/tests/hash.c -+++ b/glib/tests/hash.c -@@ -1362,7 +1362,7 @@ struct _GHashTable - - GHashFunc hash_func; - GEqualFunc key_equal_func; -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - - #ifndef G_DISABLE_ASSERT - int version; -diff --git a/glib/tests/slice.c b/glib/tests/slice.c -index f37826f3a..a566280db 100644 ---- a/glib/tests/slice.c -+++ b/glib/tests/slice.c -@@ -107,7 +107,7 @@ thread_allocate (gpointer data) - gint b; - gint size; - gpointer p; -- volatile gpointer *loc; -+ gpointer *loc; /* (atomic) */ - - for (i = 0; i < 10000; i++) - { --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch deleted file mode 100644 index 3aecf4582..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch +++ /dev/null @@ -1,702 +0,0 @@ -From 7f905ff1faf0acbe0d2ce69937e031fcacce9294 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:21:00 +0000 -Subject: [PATCH 05/29] tests: Fix non-atomic access to some shared variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -And drop the `volatile` qualifier from the variables, as that doesn’t -help with thread safety. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/tests/gdbus-connection-flush.c | 6 +- - gio/tests/gdbus-connection.c | 40 ++++---- - gio/tests/gdbus-overflow.c | 20 ++-- - gio/tests/socket-service.c | 6 +- - gio/tests/task.c | 150 ++++++++++++++--------------- - 5 files changed, 111 insertions(+), 111 deletions(-) - ---- a/gio/tests/gdbus-connection-flush.c -+++ b/gio/tests/gdbus-connection-flush.c -@@ -43,9 +43,9 @@ G_LOCK_DEFINE_STATIC (write); - typedef struct { - GFilterOutputStream parent; - -- volatile gint started; -- volatile gint finished; -- volatile gint flushed; -+ gint started; /* (atomic) */ -+ gint finished; /* (atomic) */ -+ gint flushed; /* (atomic) */ - - GOutputStream *real_output; - } MyOutputStream; ---- a/gio/tests/gdbus-connection.c -+++ b/gio/tests/gdbus-connection.c -@@ -61,9 +61,9 @@ _log (const gchar *format, ...) - static gboolean - test_connection_quit_mainloop (gpointer user_data) - { -- volatile gboolean *quit_mainloop_fired = user_data; -+ gboolean *quit_mainloop_fired = user_data; /* (atomic) */ - _log ("quit_mainloop_fired"); -- *quit_mainloop_fired = TRUE; -+ g_atomic_int_set (quit_mainloop_fired, TRUE); - g_main_loop_quit (loop); - return TRUE; - } -@@ -113,8 +113,8 @@ on_name_owner_changed (GDBusConnection * - static void - a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop (gpointer user_data) - { -- volatile gboolean *val = user_data; -- *val = TRUE; -+ gboolean *val = user_data; /* (atomic) */ -+ g_atomic_int_set (val, TRUE); - _log ("destroynotify fired for %p", val); - g_main_loop_quit (loop); - } -@@ -143,10 +143,10 @@ test_connection_life_cycle (void) - GDBusConnection *c; - GDBusConnection *c2; - GError *error; -- volatile gboolean on_signal_registration_freed_called; -- volatile gboolean on_filter_freed_called; -- volatile gboolean on_register_object_freed_called; -- volatile gboolean quit_mainloop_fired; -+ gboolean on_signal_registration_freed_called; /* (atomic) */ -+ gboolean on_filter_freed_called; /* (atomic) */ -+ gboolean on_register_object_freed_called; /* (atomic) */ -+ gboolean quit_mainloop_fired; /* (atomic) */ - guint quit_mainloop_id; - guint registration_id; - -@@ -208,7 +208,7 @@ test_connection_life_cycle (void) - g_assert_no_error (error); - g_assert_nonnull (c2); - /* signal registration */ -- on_signal_registration_freed_called = FALSE; -+ g_atomic_int_set (&on_signal_registration_freed_called, FALSE); - g_dbus_connection_signal_subscribe (c2, - "org.freedesktop.DBus", /* bus name */ - "org.freedesktop.DBus", /* interface */ -@@ -220,13 +220,13 @@ test_connection_life_cycle (void) - (gpointer) &on_signal_registration_freed_called, - a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop); - /* filter func */ -- on_filter_freed_called = FALSE; -+ g_atomic_int_set (&on_filter_freed_called, FALSE); - g_dbus_connection_add_filter (c2, - some_filter_func, - (gpointer) &on_filter_freed_called, - a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop); - /* object registration */ -- on_register_object_freed_called = FALSE; -+ g_atomic_int_set (&on_register_object_freed_called, FALSE); - error = NULL; - registration_id = g_dbus_connection_register_object (c2, - "/foo", -@@ -239,7 +239,7 @@ test_connection_life_cycle (void) - g_assert_cmpuint (registration_id, >, 0); - /* ok, finalize the connection and check that all the GDestroyNotify functions are invoked as expected */ - g_object_unref (c2); -- quit_mainloop_fired = FALSE; -+ g_atomic_int_set (&quit_mainloop_fired, FALSE); - quit_mainloop_id = g_timeout_add (30000, test_connection_quit_mainloop, (gpointer) &quit_mainloop_fired); - _log ("destroynotifies for\n" - " register_object %p\n" -@@ -250,21 +250,21 @@ test_connection_life_cycle (void) - &on_signal_registration_freed_called); - while (TRUE) - { -- if (on_signal_registration_freed_called && -- on_filter_freed_called && -- on_register_object_freed_called) -+ if (g_atomic_int_get (&on_signal_registration_freed_called) && -+ g_atomic_int_get (&on_filter_freed_called) && -+ g_atomic_int_get (&on_register_object_freed_called)) - break; -- if (quit_mainloop_fired) -+ if (g_atomic_int_get (&quit_mainloop_fired)) - break; - _log ("entering loop"); - g_main_loop_run (loop); - _log ("exiting loop"); - } - g_source_remove (quit_mainloop_id); -- g_assert_true (on_signal_registration_freed_called); -- g_assert_true (on_filter_freed_called); -- g_assert_true (on_register_object_freed_called); -- g_assert_false (quit_mainloop_fired); -+ g_assert_true (g_atomic_int_get (&on_signal_registration_freed_called)); -+ g_assert_true (g_atomic_int_get (&on_filter_freed_called)); -+ g_assert_true (g_atomic_int_get (&on_register_object_freed_called)); -+ g_assert_false (g_atomic_int_get (&quit_mainloop_fired)); - - /* - * Check for correct behavior when the bus goes away ---- a/gio/tests/gdbus-overflow.c -+++ b/gio/tests/gdbus-overflow.c -@@ -86,8 +86,8 @@ overflow_filter_func (GDBusConnection *c - gboolean incoming, - gpointer user_data) - { -- volatile gint *counter = user_data; -- *counter += 1; -+ gint *counter = user_data; /* (atomic) */ -+ g_atomic_int_inc (counter); - return message; - } - -@@ -108,8 +108,8 @@ test_overflow (void) - GDBusConnection *producer, *consumer; - GError *error; - GTimer *timer; -- volatile gint n_messages_received; -- volatile gint n_messages_sent; -+ gint n_messages_received; /* (atomic) */ -+ gint n_messages_sent; /* (atomic) */ - - g_assert_cmpint (socketpair (AF_UNIX, SOCK_STREAM, 0, sv), ==, 0); - -@@ -129,7 +129,7 @@ test_overflow (void) - g_dbus_connection_set_exit_on_close (producer, TRUE); - g_assert_no_error (error); - g_object_unref (socket_connection); -- n_messages_sent = 0; -+ g_atomic_int_set (&n_messages_sent, 0); - g_dbus_connection_add_filter (producer, overflow_filter_func, (gpointer) &n_messages_sent, NULL); - - /* send enough data that we get an EAGAIN */ -@@ -155,7 +155,7 @@ test_overflow (void) - */ - g_timeout_add (500, overflow_on_500ms_later_func, NULL); - g_main_loop_run (loop); -- g_assert_cmpint (n_messages_sent, <, OVERFLOW_NUM_SIGNALS); -+ g_assert_cmpint (g_atomic_int_get (&n_messages_sent), <, OVERFLOW_NUM_SIGNALS); - - /* now suck it all out as a client, and add it up */ - socket = g_socket_new_from_fd (sv[1], &error); -@@ -171,18 +171,18 @@ test_overflow (void) - &error); - g_assert_no_error (error); - g_object_unref (socket_connection); -- n_messages_received = 0; -+ g_atomic_int_set (&n_messages_received, 0); - g_dbus_connection_add_filter (consumer, overflow_filter_func, (gpointer) &n_messages_received, NULL); - g_dbus_connection_start_message_processing (consumer); - - timer = g_timer_new (); - g_timer_start (timer); - -- while (n_messages_received < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC) -+ while (g_atomic_int_get (&n_messages_received) < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC) - g_main_context_iteration (NULL, FALSE); - -- g_assert_cmpint (n_messages_sent, ==, OVERFLOW_NUM_SIGNALS); -- g_assert_cmpint (n_messages_received, ==, OVERFLOW_NUM_SIGNALS); -+ g_assert_cmpint (g_atomic_int_get (&n_messages_sent), ==, OVERFLOW_NUM_SIGNALS); -+ g_assert_cmpint (g_atomic_int_get (&n_messages_received), ==, OVERFLOW_NUM_SIGNALS); - - g_timer_destroy (timer); - g_object_unref (consumer); ---- a/gio/tests/socket-service.c -+++ b/gio/tests/socket-service.c -@@ -99,7 +99,7 @@ test_start_stop (void) - - GMutex mutex_712570; - GCond cond_712570; --volatile gboolean finalized; -+gboolean finalized; /* (atomic) */ - - GType test_threaded_socket_service_get_type (void); - typedef GThreadedSocketService TestThreadedSocketService; -@@ -120,7 +120,7 @@ test_threaded_socket_service_finalize (G - /* Signal the main thread that finalization completed successfully - * rather than hanging. - */ -- finalized = TRUE; -+ g_atomic_int_set (&finalized, TRUE); - g_cond_signal (&cond_712570); - g_mutex_unlock (&mutex_712570); - } -@@ -235,7 +235,7 @@ test_threaded_712570 (void) - */ - g_object_unref (service); - -- while (!finalized) -+ while (!g_atomic_int_get (&finalized)) - g_cond_wait (&cond_712570, &mutex_712570); - g_mutex_unlock (&mutex_712570); - } ---- a/gio/tests/task.c -+++ b/gio/tests/task.c -@@ -957,7 +957,7 @@ task_weak_notify (gpointer user_data, - gboolean *weak_notify_ran = user_data; - - g_mutex_lock (&run_in_thread_mutex); -- *weak_notify_ran = TRUE; -+ g_atomic_int_set (weak_notify_ran, TRUE); - g_cond_signal (&run_in_thread_cond); - g_mutex_unlock (&run_in_thread_mutex); - } -@@ -1007,7 +1007,7 @@ run_in_thread_thread (GTask *task - g_assert (g_thread_self () != main_thread); - - g_mutex_lock (&run_in_thread_mutex); -- *thread_ran = TRUE; -+ g_atomic_int_set (thread_ran, TRUE); - g_cond_signal (&run_in_thread_cond); - g_mutex_unlock (&run_in_thread_mutex); - -@@ -1018,8 +1018,8 @@ static void - test_run_in_thread (void) - { - GTask *task; -- volatile gboolean thread_ran = FALSE; -- volatile gboolean weak_notify_ran = FALSE; -+ gboolean thread_ran = FALSE; /* (atomic) */ -+ gboolean weak_notify_ran = FALSE; /* (atomic) */ - gboolean notification_emitted = FALSE; - gboolean done = FALSE; - -@@ -1033,12 +1033,12 @@ test_run_in_thread (void) - g_task_run_in_thread (task, run_in_thread_thread); - - g_mutex_lock (&run_in_thread_mutex); -- while (!thread_ran) -+ while (!g_atomic_int_get (&thread_ran)) - g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex); - g_mutex_unlock (&run_in_thread_mutex); - - g_assert (done == FALSE); -- g_assert (weak_notify_ran == FALSE); -+ g_assert_false (g_atomic_int_get (&weak_notify_ran)); - - g_main_loop_run (loop); - -@@ -1050,7 +1050,7 @@ test_run_in_thread (void) - g_object_unref (task); - - g_mutex_lock (&run_in_thread_mutex); -- while (!weak_notify_ran) -+ while (!g_atomic_int_get (&weak_notify_ran)) - g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex); - g_mutex_unlock (&run_in_thread_mutex); - } -@@ -1081,7 +1081,7 @@ run_in_thread_sync_thread (GTask - - g_assert (g_thread_self () != main_thread); - -- *thread_ran = TRUE; -+ g_atomic_int_set (thread_ran, TRUE); - g_task_return_int (task, magic); - } - -@@ -1102,7 +1102,7 @@ test_run_in_thread_sync (void) - g_task_set_task_data (task, &thread_ran, NULL); - g_task_run_in_thread_sync (task, run_in_thread_sync_thread); - -- g_assert (thread_ran == TRUE); -+ g_assert_true (g_atomic_int_get (&thread_ran)); - g_assert (task != NULL); - g_assert (!g_task_had_error (task)); - g_assert_true (g_task_get_completed (task)); -@@ -1487,8 +1487,8 @@ test_return_on_cancel (void) - { - GTask *task; - GCancellable *cancellable; -- volatile ThreadState thread_state; -- volatile gboolean weak_notify_ran = FALSE; -+ ThreadState thread_state; /* (atomic) */ -+ gboolean weak_notify_ran = FALSE; /* (atomic) */ - gboolean callback_ran; - gboolean notification_emitted = FALSE; - -@@ -1498,7 +1498,7 @@ test_return_on_cancel (void) - * early. - */ - callback_ran = FALSE; -- thread_state = THREAD_STARTING; -+ g_atomic_int_set (&thread_state, THREAD_STARTING); - task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran); - g_signal_connect (task, "notify::completed", - (GCallback) completed_cb, ¬ification_emitted); -@@ -1509,18 +1509,18 @@ test_return_on_cancel (void) - g_task_run_in_thread (task, return_on_cancel_thread); - g_object_unref (task); - -- while (thread_state == THREAD_STARTING) -+ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) - g_cond_wait (&roc_init_cond, &roc_init_mutex); - g_mutex_unlock (&roc_init_mutex); - -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - g_assert (callback_ran == FALSE); - - g_cancellable_cancel (cancellable); - g_mutex_unlock (&roc_finish_mutex); - g_main_loop_run (loop); - -- g_assert (thread_state == THREAD_COMPLETED); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED); - g_assert (callback_ran == TRUE); - g_assert_true (notification_emitted); - -@@ -1529,7 +1529,7 @@ test_return_on_cancel (void) - /* If return-on-cancel is TRUE, it does return early */ - callback_ran = FALSE; - notification_emitted = FALSE; -- thread_state = THREAD_STARTING; -+ g_atomic_int_set (&thread_state, THREAD_STARTING); - task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran); - g_object_weak_ref (G_OBJECT (task), task_weak_notify, (gpointer)&weak_notify_ran); - g_signal_connect (task, "notify::completed", -@@ -1542,27 +1542,27 @@ test_return_on_cancel (void) - g_task_run_in_thread (task, return_on_cancel_thread); - g_object_unref (task); - -- while (thread_state == THREAD_STARTING) -+ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) - g_cond_wait (&roc_init_cond, &roc_init_mutex); - g_mutex_unlock (&roc_init_mutex); - -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - g_assert (callback_ran == FALSE); - - g_cancellable_cancel (cancellable); - g_main_loop_run (loop); -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - g_assert (callback_ran == TRUE); - -- g_assert (weak_notify_ran == FALSE); -+ g_assert_false (g_atomic_int_get (&weak_notify_ran)); - -- while (thread_state == THREAD_RUNNING) -+ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) - g_cond_wait (&roc_finish_cond, &roc_finish_mutex); - g_mutex_unlock (&roc_finish_mutex); - -- g_assert (thread_state == THREAD_CANCELLED); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); - g_mutex_lock (&run_in_thread_mutex); -- while (!weak_notify_ran) -+ while (!g_atomic_int_get (&weak_notify_ran)) - g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex); - g_mutex_unlock (&run_in_thread_mutex); - -@@ -1574,7 +1574,7 @@ test_return_on_cancel (void) - */ - callback_ran = FALSE; - notification_emitted = FALSE; -- thread_state = THREAD_STARTING; -+ g_atomic_int_set (&thread_state, THREAD_STARTING); - task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran); - g_signal_connect (task, "notify::completed", - (GCallback) completed_cb, ¬ification_emitted); -@@ -1591,17 +1591,17 @@ test_return_on_cancel (void) - g_main_loop_run (loop); - g_assert (callback_ran == TRUE); - -- while (thread_state == THREAD_STARTING) -+ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) - g_cond_wait (&roc_init_cond, &roc_init_mutex); - g_mutex_unlock (&roc_init_mutex); - -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - -- while (thread_state == THREAD_RUNNING) -+ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) - g_cond_wait (&roc_finish_cond, &roc_finish_mutex); - g_mutex_unlock (&roc_finish_mutex); - -- g_assert (thread_state == THREAD_CANCELLED); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); - g_assert_true (notification_emitted); - - g_object_unref (cancellable); -@@ -1621,7 +1621,7 @@ test_return_on_cancel_sync (void) - { - GTask *task; - GCancellable *cancellable; -- volatile ThreadState thread_state; -+ ThreadState thread_state; /* (atomic) */ - GThread *runner_thread; - gssize ret; - GError *error = NULL; -@@ -1630,7 +1630,7 @@ test_return_on_cancel_sync (void) - - /* If return-on-cancel is FALSE, the task does not return early. - */ -- thread_state = THREAD_STARTING; -+ g_atomic_int_set (&thread_state, THREAD_STARTING); - task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL); - - g_task_set_task_data (task, (gpointer)&thread_state, NULL); -@@ -1639,16 +1639,16 @@ test_return_on_cancel_sync (void) - runner_thread = g_thread_new ("return-on-cancel-sync runner thread", - cancel_sync_runner_thread, task); - -- while (thread_state == THREAD_STARTING) -+ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) - g_cond_wait (&roc_init_cond, &roc_init_mutex); - g_mutex_unlock (&roc_init_mutex); - -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - - g_cancellable_cancel (cancellable); - g_mutex_unlock (&roc_finish_mutex); - g_thread_join (runner_thread); -- g_assert (thread_state == THREAD_COMPLETED); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED); - - ret = g_task_propagate_int (task, &error); - g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); -@@ -1660,7 +1660,7 @@ test_return_on_cancel_sync (void) - g_cancellable_reset (cancellable); - - /* If return-on-cancel is TRUE, it does return early */ -- thread_state = THREAD_STARTING; -+ g_atomic_int_set (&thread_state, THREAD_STARTING); - task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL); - g_task_set_return_on_cancel (task, TRUE); - -@@ -1670,15 +1670,15 @@ test_return_on_cancel_sync (void) - runner_thread = g_thread_new ("return-on-cancel-sync runner thread", - cancel_sync_runner_thread, task); - -- while (thread_state == THREAD_STARTING) -+ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) - g_cond_wait (&roc_init_cond, &roc_init_mutex); - g_mutex_unlock (&roc_init_mutex); - -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - - g_cancellable_cancel (cancellable); - g_thread_join (runner_thread); -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - - ret = g_task_propagate_int (task, &error); - g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); -@@ -1687,18 +1687,18 @@ test_return_on_cancel_sync (void) - - g_object_unref (task); - -- while (thread_state == THREAD_RUNNING) -+ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) - g_cond_wait (&roc_finish_cond, &roc_finish_mutex); - g_mutex_unlock (&roc_finish_mutex); - -- g_assert (thread_state == THREAD_CANCELLED); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); - - g_cancellable_reset (cancellable); - - /* If the task is already cancelled before it starts, it returns - * immediately, but the thread func still runs. - */ -- thread_state = THREAD_STARTING; -+ g_atomic_int_set (&thread_state, THREAD_STARTING); - task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL); - g_task_set_return_on_cancel (task, TRUE); - -@@ -1711,7 +1711,7 @@ test_return_on_cancel_sync (void) - cancel_sync_runner_thread, task); - - g_thread_join (runner_thread); -- g_assert (thread_state == THREAD_STARTING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_STARTING); - - ret = g_task_propagate_int (task, &error); - g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); -@@ -1720,17 +1720,17 @@ test_return_on_cancel_sync (void) - - g_object_unref (task); - -- while (thread_state == THREAD_STARTING) -+ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) - g_cond_wait (&roc_init_cond, &roc_init_mutex); - g_mutex_unlock (&roc_init_mutex); - -- g_assert (thread_state == THREAD_RUNNING); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); - -- while (thread_state == THREAD_RUNNING) -+ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) - g_cond_wait (&roc_finish_cond, &roc_finish_mutex); - g_mutex_unlock (&roc_finish_mutex); - -- g_assert (thread_state == THREAD_CANCELLED); -+ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); - - g_object_unref (cancellable); - } -@@ -1776,7 +1776,7 @@ return_on_cancel_atomic_thread (GTask - gpointer task_data, - GCancellable *cancellable) - { -- gint *state = task_data; -+ gint *state = task_data; /* (atomic) */ - - g_assert (source_object == g_task_get_source_object (task)); - g_assert (task_data == g_task_get_task_data (task)); -@@ -1784,34 +1784,34 @@ return_on_cancel_atomic_thread (GTask - g_assert_false (g_task_get_completed (task)); - - g_assert (g_thread_self () != main_thread); -- g_assert_cmpint (*state, ==, 0); -+ g_assert_cmpint (g_atomic_int_get (state), ==, 0); - - g_mutex_lock (&roca_mutex_1); -- *state = 1; -+ g_atomic_int_set (state, 1); - g_cond_signal (&roca_cond_1); - g_mutex_unlock (&roca_mutex_1); - - g_mutex_lock (&roca_mutex_2); - if (g_task_set_return_on_cancel (task, FALSE)) -- *state = 2; -+ g_atomic_int_set (state, 2); - else -- *state = 3; -+ g_atomic_int_set (state, 3); - g_cond_signal (&roca_cond_2); - g_mutex_unlock (&roca_mutex_2); - - g_mutex_lock (&roca_mutex_1); - if (g_task_set_return_on_cancel (task, TRUE)) -- *state = 4; -+ g_atomic_int_set (state, 4); - else -- *state = 5; -+ g_atomic_int_set (state, 5); - g_cond_signal (&roca_cond_1); - g_mutex_unlock (&roca_mutex_1); - - g_mutex_lock (&roca_mutex_2); - if (g_task_set_return_on_cancel (task, TRUE)) -- *state = 6; -+ g_atomic_int_set (state, 6); - else -- *state = 7; -+ g_atomic_int_set (state, 7); - g_cond_signal (&roca_cond_2); - g_mutex_unlock (&roca_mutex_2); - -@@ -1823,7 +1823,7 @@ test_return_on_cancel_atomic (void) - { - GTask *task; - GCancellable *cancellable; -- volatile gint state; -+ gint state; /* (atomic) */ - gboolean notification_emitted = FALSE; - gboolean callback_ran; - -@@ -1832,7 +1832,7 @@ test_return_on_cancel_atomic (void) - g_mutex_lock (&roca_mutex_2); - - /* If we don't cancel it, each set_return_on_cancel() call will succeed */ -- state = 0; -+ g_atomic_int_set (&state, 0); - callback_ran = FALSE; - task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran); - g_task_set_return_on_cancel (task, TRUE); -@@ -1843,23 +1843,23 @@ test_return_on_cancel_atomic (void) - g_task_run_in_thread (task, return_on_cancel_atomic_thread); - g_object_unref (task); - -- g_assert_cmpint (state, ==, 0); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 0); - -- while (state == 0) -+ while (g_atomic_int_get (&state) == 0) - g_cond_wait (&roca_cond_1, &roca_mutex_1); -- g_assert (state == 1); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 1); - -- while (state == 1) -+ while (g_atomic_int_get (&state) == 1) - g_cond_wait (&roca_cond_2, &roca_mutex_2); -- g_assert (state == 2); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 2); - -- while (state == 2) -+ while (g_atomic_int_get (&state) == 2) - g_cond_wait (&roca_cond_1, &roca_mutex_1); -- g_assert (state == 4); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 4); - -- while (state == 4) -+ while (g_atomic_int_get (&state) == 4) - g_cond_wait (&roca_cond_2, &roca_mutex_2); -- g_assert (state == 6); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 6); - - /* callback assumes there'll be a cancelled error */ - g_cancellable_cancel (cancellable); -@@ -1876,7 +1876,7 @@ test_return_on_cancel_atomic (void) - * task won't complete right away, and further - * g_task_set_return_on_cancel() calls will return FALSE. - */ -- state = 0; -+ g_atomic_int_set (&state, 0); - callback_ran = FALSE; - notification_emitted = FALSE; - task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran); -@@ -1887,16 +1887,16 @@ test_return_on_cancel_atomic (void) - g_task_set_task_data (task, (gpointer)&state, NULL); - g_task_run_in_thread (task, return_on_cancel_atomic_thread); - -- g_assert_cmpint (state, ==, 0); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 0); - -- while (state == 0) -+ while (g_atomic_int_get (&state) == 0) - g_cond_wait (&roca_cond_1, &roca_mutex_1); -- g_assert (state == 1); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 1); - g_assert (g_task_get_return_on_cancel (task)); - -- while (state == 1) -+ while (g_atomic_int_get (&state) == 1) - g_cond_wait (&roca_cond_2, &roca_mutex_2); -- g_assert (state == 2); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 2); - g_assert (!g_task_get_return_on_cancel (task)); - - g_cancellable_cancel (cancellable); -@@ -1904,18 +1904,18 @@ test_return_on_cancel_atomic (void) - g_main_loop_run (loop); - g_assert (callback_ran == FALSE); - -- while (state == 2) -+ while (g_atomic_int_get (&state) == 2) - g_cond_wait (&roca_cond_1, &roca_mutex_1); -- g_assert (state == 5); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 5); - g_assert (!g_task_get_return_on_cancel (task)); - - g_main_loop_run (loop); - g_assert (callback_ran == TRUE); - g_assert_true (notification_emitted); - -- while (state == 5) -+ while (g_atomic_int_get (&state) == 5) - g_cond_wait (&roca_cond_2, &roca_mutex_2); -- g_assert (state == 7); -+ g_assert_cmpint (g_atomic_int_get (&state), ==, 7); - - g_object_unref (cancellable); - g_mutex_unlock (&roca_mutex_1); diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch deleted file mode 100644 index 7f22b4d46..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch +++ /dev/null @@ -1,35 +0,0 @@ -From f4607def1695efb50eb49e0586eed0f5557935f2 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:20:37 +0000 -Subject: [PATCH 06/29] tests: Drop unnecessary volatile qualifiers from tests -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These variables were already (correctly) accessed atomically. The -`volatile` qualifier doesn’t help with that. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/tests/g-file-info.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gio/tests/g-file-info.c b/gio/tests/g-file-info.c -index 809b0ec79..1a02b5e0e 100644 ---- a/gio/tests/g-file-info.c -+++ b/gio/tests/g-file-info.c -@@ -221,7 +221,7 @@ test_internal_enhanced_stdio (void) - guint64 size_p0, alsize_p0, size_ps, alsize_ps; - const gchar *id_p0; - const gchar *id_p1; -- volatile guint64 time_p0; -+ guint64 time_p0; - gchar *tmp_dir; - wchar_t *programdata_dir_w; - wchar_t *users_dir_w; --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch deleted file mode 100644 index 78753f821..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 33612404397f87f0cd45da90d3aa9ab60df895ee Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:24:28 +0000 -Subject: [PATCH 07/29] gdbusconnection: Drop unnecessary volatile qualifiers - from variables - -This should introduce no API changes; there are public functions -exported by `GDBusConnection` which still have some (incorrectly) -`volatile` arguments, but dropping those qualifiers would be an API -break. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/gdbusconnection.c | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c -index ed8cf6219..91c365e80 100644 ---- a/gio/gdbusconnection.c -+++ b/gio/gdbusconnection.c -@@ -393,7 +393,7 @@ struct _GDBusConnection - * FLAG_CLOSED is the closed property. It may be read at any time, but - * may only be written while holding @lock. - */ -- volatile gint atomic_flags; -+ gint atomic_flags; /* (atomic) */ - - /* If the connection could not be established during initable_init(), - * this GError will be set. -@@ -1596,7 +1596,7 @@ static gboolean - g_dbus_connection_send_message_unlocked (GDBusConnection *connection, - GDBusMessage *message, - GDBusSendMessageFlags flags, -- volatile guint32 *out_serial, -+ guint32 *out_serial, - GError **error) - { - guchar *blob; -@@ -1741,7 +1741,7 @@ g_dbus_connection_send_message (GDBusConnection *connection, - g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - - CONNECTION_LOCK (connection); -- ret = g_dbus_connection_send_message_unlocked (connection, message, flags, out_serial, error); -+ ret = g_dbus_connection_send_message_unlocked (connection, message, flags, (guint32 *) out_serial, error); - CONNECTION_UNLOCK (connection); - return ret; - } -@@ -1901,7 +1901,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect - GDBusMessage *message, - GDBusSendMessageFlags flags, - gint timeout_msec, -- volatile guint32 *out_serial, -+ guint32 *out_serial, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -@@ -1909,7 +1909,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect - GTask *task; - SendMessageData *data; - GError *error = NULL; -- volatile guint32 serial; -+ guint32 serial; - - if (out_serial == NULL) - out_serial = &serial; -@@ -2022,7 +2022,7 @@ g_dbus_connection_send_message_with_reply (GDBusConnection *connection, - message, - flags, - timeout_msec, -- out_serial, -+ (guint32 *) out_serial, - cancellable, - callback, - user_data); -@@ -3082,7 +3082,7 @@ g_dbus_connection_get_peer_credentials (GDBusConnection *connection) - - /* ---------------------------------------------------------------------------------------------------- */ - --static volatile guint _global_filter_id = 1; -+static guint _global_filter_id = 1; /* (atomic) */ - - /** - * g_dbus_connection_add_filter: -@@ -3327,9 +3327,9 @@ args_to_rule (const gchar *sender, - return g_string_free (rule, FALSE); - } - --static volatile guint _global_subscriber_id = 1; --static volatile guint _global_registration_id = 1; --static volatile guint _global_subtree_registration_id = 1; -+static guint _global_subscriber_id = 1; /* (atomic) */ -+static guint _global_registration_id = 1; /* (atomic) */ -+static guint _global_subtree_registration_id = 1; /* (atomic) */ - - /* ---------------------------------------------------------------------------------------------------- */ - -@@ -5992,7 +5992,7 @@ g_dbus_connection_call_sync_internal (GDBusConnection *connection, - message, - send_flags, - timeout_msec, -- NULL, /* volatile guint32 *out_serial */ -+ NULL, /* guint32 *out_serial */ - cancellable, - &local_error); - --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch deleted file mode 100644 index e947a264c..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 7c7623c4a31fb0f2a7176c43acc728093818b58c Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:26:19 +0000 -Subject: [PATCH 08/29] gdbuserror: Drop unnecessary volatile qualifiers from - variables - -This should introduce no API changes. The -`g_dbus_error_register_error_domain()` function still (incorrectly) has -a `volatile` argument, but dropping that qualifier would be an API -break. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/gdbuserror.c | 28 +++++++++++++++++----------- - 1 file changed, 17 insertions(+), 11 deletions(-) - -diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c -index 682677354..b03a33f27 100644 ---- a/gio/gdbuserror.c -+++ b/gio/gdbuserror.c -@@ -84,12 +84,12 @@ - * GQuark - * foo_bar_error_quark (void) - * { -- * static volatile gsize quark_volatile = 0; -+ * static gsize quark = 0; - * g_dbus_error_register_error_domain ("foo-bar-error-quark", -- * &quark_volatile, -+ * &quark, - * foo_bar_error_entries, - * G_N_ELEMENTS (foo_bar_error_entries)); -- * return (GQuark) quark_volatile; -+ * return (GQuark) quark; - * } - * ]| - * With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and -@@ -160,12 +160,12 @@ GQuark - g_dbus_error_quark (void) - { - G_STATIC_ASSERT (G_N_ELEMENTS (g_dbus_error_entries) - 1 == G_DBUS_ERROR_PROPERTY_READ_ONLY); -- static volatile gsize quark_volatile = 0; -+ static gsize quark = 0; - g_dbus_error_register_error_domain ("g-dbus-error-quark", -- &quark_volatile, -+ &quark, - g_dbus_error_entries, - G_N_ELEMENTS (g_dbus_error_entries)); -- return (GQuark) quark_volatile; -+ return (GQuark) quark; - } - - /** -@@ -185,25 +185,31 @@ g_dbus_error_register_error_domain (const gchar *error_domain_quark_na - const GDBusErrorEntry *entries, - guint num_entries) - { -+ gsize *quark; -+ - g_return_if_fail (error_domain_quark_name != NULL); - g_return_if_fail (quark_volatile != NULL); - g_return_if_fail (entries != NULL); - g_return_if_fail (num_entries > 0); - -- if (g_once_init_enter (quark_volatile)) -+ /* Drop the volatile qualifier, which should never have been on the argument -+ * in the first place. */ -+ quark = (gsize *) quark_volatile; -+ -+ if (g_once_init_enter (quark)) - { - guint n; -- GQuark quark; -+ GQuark new_quark; - -- quark = g_quark_from_static_string (error_domain_quark_name); -+ new_quark = g_quark_from_static_string (error_domain_quark_name); - - for (n = 0; n < num_entries; n++) - { -- g_warn_if_fail (g_dbus_error_register_error (quark, -+ g_warn_if_fail (g_dbus_error_register_error (new_quark, - entries[n].error_code, - entries[n].dbus_error_name)); - } -- g_once_init_leave (quark_volatile, quark); -+ g_once_init_leave (quark, new_quark); - } - } - --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch deleted file mode 100644 index 7897d43bb..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch +++ /dev/null @@ -1,207 +0,0 @@ -From 74250cd9c9dfd3ad428e445c095ceac88ba18691 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:28:23 +0000 -Subject: [PATCH 09/29] gio: Drop unnecessary volatile qualifiers from internal - variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These variables were already (correctly) accessed atomically. The -`volatile` qualifier doesn’t help with that. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/gdbusinterfaceskeleton.c | 2 +- - gio/gdbusintrospection.h | 14 +++++++------- - gio/gdbusnameowning.c | 4 ++-- - gio/gdbusnamewatching.c | 4 ++-- - gio/gdbusprivate.c | 10 +++++----- - gio/gnetworking.c | 2 +- - 6 files changed, 18 insertions(+), 18 deletions(-) - -diff --git a/gio/gdbusinterfaceskeleton.c b/gio/gdbusinterfaceskeleton.c -index 243b4a0a4..76398df36 100644 ---- a/gio/gdbusinterfaceskeleton.c -+++ b/gio/gdbusinterfaceskeleton.c -@@ -458,7 +458,7 @@ dbus_interface_interface_init (GDBusInterfaceIface *iface) - - typedef struct - { -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - GDBusInterfaceSkeleton *interface; - GDBusInterfaceMethodCallFunc method_call_func; - GDBusMethodInvocation *invocation; -diff --git a/gio/gdbusintrospection.h b/gio/gdbusintrospection.h -index 14b171055..f2e291787 100644 ---- a/gio/gdbusintrospection.h -+++ b/gio/gdbusintrospection.h -@@ -43,7 +43,7 @@ G_BEGIN_DECLS - struct _GDBusAnnotationInfo - { - /*< public >*/ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - gchar *key; - gchar *value; - GDBusAnnotationInfo **annotations; -@@ -63,7 +63,7 @@ struct _GDBusAnnotationInfo - struct _GDBusArgInfo - { - /*< public >*/ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - gchar *name; - gchar *signature; - GDBusAnnotationInfo **annotations; -@@ -84,7 +84,7 @@ struct _GDBusArgInfo - struct _GDBusMethodInfo - { - /*< public >*/ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - gchar *name; - GDBusArgInfo **in_args; - GDBusArgInfo **out_args; -@@ -105,7 +105,7 @@ struct _GDBusMethodInfo - struct _GDBusSignalInfo - { - /*< public >*/ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - gchar *name; - GDBusArgInfo **args; - GDBusAnnotationInfo **annotations; -@@ -126,7 +126,7 @@ struct _GDBusSignalInfo - struct _GDBusPropertyInfo - { - /*< public >*/ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - gchar *name; - gchar *signature; - GDBusPropertyInfoFlags flags; -@@ -149,7 +149,7 @@ struct _GDBusPropertyInfo - struct _GDBusInterfaceInfo - { - /*< public >*/ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - gchar *name; - GDBusMethodInfo **methods; - GDBusSignalInfo **signals; -@@ -172,7 +172,7 @@ struct _GDBusInterfaceInfo - struct _GDBusNodeInfo - { - /*< public >*/ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - gchar *path; - GDBusInterfaceInfo **interfaces; - GDBusNodeInfo **nodes; -diff --git a/gio/gdbusnameowning.c b/gio/gdbusnameowning.c -index d20e6ffed..1130d6789 100644 ---- a/gio/gdbusnameowning.c -+++ b/gio/gdbusnameowning.c -@@ -55,7 +55,7 @@ typedef enum - - typedef struct - { -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - guint id; - GBusNameOwnerFlags flags; - gchar *name; -@@ -73,7 +73,7 @@ typedef struct - guint name_acquired_subscription_id; - guint name_lost_subscription_id; - -- volatile gboolean cancelled; /* must hold lock when reading or modifying */ -+ gboolean cancelled; /* must hold lock when reading or modifying */ - - gboolean needs_release; - } Client; -diff --git a/gio/gdbusnamewatching.c b/gio/gdbusnamewatching.c -index bc2a9119e..8d24700c5 100644 ---- a/gio/gdbusnamewatching.c -+++ b/gio/gdbusnamewatching.c -@@ -56,7 +56,7 @@ typedef enum - - typedef struct - { -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - guint id; - gchar *name; - GBusNameWatcherFlags flags; -@@ -78,7 +78,7 @@ typedef struct - } Client; - - /* Must be accessed atomically. */ --static volatile guint next_global_id = 1; -+static guint next_global_id = 1; /* (atomic) */ - - /* Must be accessed with @lock held. */ - static GHashTable *map_id_to_client = NULL; -diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c -index 2551e4791..99b37f3eb 100644 ---- a/gio/gdbusprivate.c -+++ b/gio/gdbusprivate.c -@@ -265,7 +265,7 @@ ensure_required_types (void) - - typedef struct - { -- volatile gint refcount; -+ gint refcount; /* (atomic) */ - GThread *thread; - GMainContext *context; - GMainLoop *loop; -@@ -341,12 +341,12 @@ typedef enum { - - struct GDBusWorker - { -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - - SharedThreadData *shared_thread_data; - - /* really a boolean, but GLib 2.28 lacks atomic boolean ops */ -- volatile gint stopped; -+ gint stopped; /* (atomic) */ - - /* TODO: frozen (e.g. G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING) currently - * only affects messages received from the other peer (since GDBusServer is the -@@ -1941,11 +1941,11 @@ _g_dbus_debug_print_unlock (void) - void - _g_dbus_initialize (void) - { -- static volatile gsize initialized = 0; -+ static gsize initialized = 0; - - if (g_once_init_enter (&initialized)) - { -- volatile GQuark g_dbus_error_domain; -+ GQuark g_dbus_error_domain; - const gchar *debug; - - g_dbus_error_domain = G_DBUS_ERROR; -diff --git a/gio/gnetworking.c b/gio/gnetworking.c -index 05507fe70..7bc6d73c4 100644 ---- a/gio/gnetworking.c -+++ b/gio/gnetworking.c -@@ -61,7 +61,7 @@ void - g_networking_init (void) - { - #ifdef G_OS_WIN32 -- static volatile gsize inited = 0; -+ static gsize inited = 0; - - if (g_once_init_enter (&inited)) - { --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch deleted file mode 100644 index e52b70942..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch +++ /dev/null @@ -1,51 +0,0 @@ -From e4e88688a0722237effc56cc21438d0c8e82de88 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:29:26 +0000 -Subject: [PATCH 10/29] kqueue: Fix unlocked access to shared variable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -And drop the `volatile` qualifier because it doesn’t help. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/kqueue/kqueue-missing.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/gio/kqueue/kqueue-missing.c b/gio/kqueue/kqueue-missing.c -index 37af82e5b..d1ffdf4bd 100644 ---- a/gio/kqueue/kqueue-missing.c -+++ b/gio/kqueue/kqueue-missing.c -@@ -34,7 +34,7 @@ static gboolean km_debug_enabled = FALSE; - static GSList *missing_subs_list = NULL; - G_LOCK_DEFINE_STATIC (missing_lock); - --static volatile gboolean scan_missing_running = FALSE; -+static gboolean scan_missing_running = FALSE; /* must be accessed under @missing_lock */ - - - static gboolean -@@ -62,7 +62,6 @@ _km_add_missing (kqueue_sub *sub) - - KM_W ("adding %s to missing list\n", sub->filename); - missing_subs_list = g_slist_prepend (missing_subs_list, sub); -- G_UNLOCK (missing_lock); - - if (!scan_missing_running) - { -@@ -73,6 +72,8 @@ _km_add_missing (kqueue_sub *sub) - g_source_attach (source, GLIB_PRIVATE_CALL (g_get_worker_context) ()); - g_source_unref (source); - } -+ -+ G_UNLOCK (missing_lock); - } - - /** --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch deleted file mode 100644 index ea3fd9f6e..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 7cdb68713c1863a27ad82d801756ec74097e8e87 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:30:36 +0000 -Subject: [PATCH 11/29] tests: Drop unnecessary volatile qualifiers from tests -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These variables were already (correctly) accessed atomically. The -`volatile` qualifier doesn’t help with that. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - tests/gobject/performance-threaded.c | 2 +- - tests/gobject/performance.c | 4 ++-- - tests/onceinit.c | 16 ++++++++-------- - 3 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/tests/gobject/performance-threaded.c b/tests/gobject/performance-threaded.c -index 30ea5bd80..c98541d66 100644 ---- a/tests/gobject/performance-threaded.c -+++ b/tests/gobject/performance-threaded.c -@@ -52,7 +52,7 @@ static GType liststore_interfaces[6]; - static gpointer - register_types (void) - { -- static volatile gsize inited = 0; -+ static gsize inited = 0; - if (g_once_init_enter (&inited)) - { - liststore_interfaces[0] = simple_register_class ("GtkBuildable", G_TYPE_INTERFACE, 0); -diff --git a/tests/gobject/performance.c b/tests/gobject/performance.c -index 236ffaed0..163be58b4 100644 ---- a/tests/gobject/performance.c -+++ b/tests/gobject/performance.c -@@ -575,8 +575,8 @@ test_type_check_run (PerformanceTest *test, - gpointer _data) - { - struct TypeCheckTest *data = _data; -- volatile GObject *object = data->object; -- volatile GType type, types[5]; -+ GObject *object = data->object; -+ GType type, types[5]; - int i, j; - - types[0] = test_iface1_get_type (); -diff --git a/tests/onceinit.c b/tests/onceinit.c -index 89ba6a136..9788efcbd 100644 ---- a/tests/onceinit.c -+++ b/tests/onceinit.c -@@ -25,13 +25,13 @@ - - static GMutex tmutex; - static GCond tcond; --static volatile int thread_call_count = 0; -+static int thread_call_count = 0; /* (atomic) */ - static char dummy_value = 'x'; - - static void - assert_singleton_execution1 (void) - { -- static volatile int seen_execution = 0; -+ static int seen_execution = 0; /* (atomic) */ - int old_seen_execution = g_atomic_int_add (&seen_execution, 1); - if (old_seen_execution != 0) - g_error ("%s: function executed more than once", G_STRFUNC); -@@ -40,7 +40,7 @@ assert_singleton_execution1 (void) - static void - assert_singleton_execution2 (void) - { -- static volatile int seen_execution = 0; -+ static int seen_execution = 0; /* (atomic) */ - int old_seen_execution = g_atomic_int_add (&seen_execution, 1); - if (old_seen_execution != 0) - g_error ("%s: function executed more than once", G_STRFUNC); -@@ -49,7 +49,7 @@ assert_singleton_execution2 (void) - static void - assert_singleton_execution3 (void) - { -- static volatile int seen_execution = 0; -+ static int seen_execution = 0; /* (atomic) */ - int old_seen_execution = g_atomic_int_add (&seen_execution, 1); - if (old_seen_execution != 0) - g_error ("%s: function executed more than once", G_STRFUNC); -@@ -58,7 +58,7 @@ assert_singleton_execution3 (void) - static void - initializer1 (void) - { -- static volatile gsize initialized = 0; -+ static gsize initialized = 0; - if (g_once_init_enter (&initialized)) - { - gsize initval = 42; -@@ -70,7 +70,7 @@ initializer1 (void) - static gpointer - initializer2 (void) - { -- static volatile gsize initialized = 0; -+ static gsize initialized = 0; - if (g_once_init_enter (&initialized)) - { - void *pointer_value = &dummy_value; -@@ -83,7 +83,7 @@ initializer2 (void) - static void - initializer3 (void) - { -- static volatile gsize initialized = 0; -+ static gsize initialized = 0; - if (g_once_init_enter (&initialized)) - { - gsize initval = 42; -@@ -163,7 +163,7 @@ main (int argc, - static void \ - test_initializer_##N (void) \ - { \ -- static volatile gsize initialized = 0; \ -+ static gsize initialized = 0; \ - if (g_once_init_enter (&initialized)) \ - { \ - g_free (g_strdup_printf ("cpuhog%5d", 1)); \ --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch deleted file mode 100644 index be7fcba8c..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 1a7f0002a052725fb646e136fadd5dad66222d7f Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:31:01 +0000 -Subject: [PATCH 12/29] tests: Fix non-atomic access to some shared variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -And drop the `volatile` qualifier from the variables, as that doesn’t -help with thread safety. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - tests/refcount/objects.c | 8 ++++---- - tests/refcount/properties3.c | 8 ++++---- - 2 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/tests/refcount/objects.c b/tests/refcount/objects.c -index 963766d00..0c471a42b 100644 ---- a/tests/refcount/objects.c -+++ b/tests/refcount/objects.c -@@ -26,7 +26,7 @@ struct _GTestClass - }; - - static GType my_test_get_type (void); --static volatile gboolean stopping; -+static gint stopping; /* (atomic) */ - - static void my_test_class_init (GTestClass * klass); - static void my_test_init (GTest * test); -@@ -101,7 +101,7 @@ run_thread (GTest * test) - { - gint i = 1; - -- while (!stopping) { -+ while (!g_atomic_int_get (&stopping)) { - my_test_do_refcount (test); - if ((i++ % 10000) == 0) { - g_print ("."); -@@ -128,7 +128,7 @@ main (int argc, char **argv) - - test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *)); - -- stopping = FALSE; -+ g_atomic_int_set (&stopping, 0); - - for (i = 0; i < n_threads; i++) { - GThread *thread; -@@ -141,7 +141,7 @@ main (int argc, char **argv) - } - g_usleep (5000000); - -- stopping = TRUE; -+ g_atomic_int_set (&stopping, 1); - - g_print ("\nstopping\n"); - -diff --git a/tests/refcount/properties3.c b/tests/refcount/properties3.c -index bc8820661..31f26a46e 100644 ---- a/tests/refcount/properties3.c -+++ b/tests/refcount/properties3.c -@@ -34,7 +34,7 @@ struct _GTestClass - static GType my_test_get_type (void); - G_DEFINE_TYPE (GTest, my_test, G_TYPE_OBJECT) - --static volatile gboolean stopping; -+static gint stopping; /* (atomic) */ - - static void my_test_get_property (GObject *object, - guint prop_id, -@@ -140,7 +140,7 @@ run_thread (GTest * test) - { - gint i = 1; - -- while (!stopping) { -+ while (!g_atomic_int_get (&stopping)) { - my_test_do_property (test); - if ((i++ % 10000) == 0) - { -@@ -170,7 +170,7 @@ main (int argc, char **argv) - - test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *)); - -- stopping = FALSE; -+ g_atomic_int_set (&stopping, 0); - - for (i = 0; i < n_threads; i++) { - GThread *thread; -@@ -180,7 +180,7 @@ main (int argc, char **argv) - } - g_usleep (30000000); - -- stopping = TRUE; -+ g_atomic_int_set (&stopping, 1); - g_print ("\nstopping\n"); - - /* join all threads */ --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch deleted file mode 100644 index efc6817bd..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch +++ /dev/null @@ -1,180 +0,0 @@ -From 3c648457c284b4ba313b8591008d2e18ae4335eb Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:36:37 +0000 -Subject: [PATCH 13/29] gatomic: Drop unnecessary volatile qualifiers from - internal variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It’s not necessary and provides no thread safety guarantees. - -The `volatile` qualifiers on the function arguments have to be kept, as -they are (unfortunately) part of the API. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/gatomic.c | 34 +++++++++++++++++----------------- - 1 file changed, 17 insertions(+), 17 deletions(-) - -diff --git a/glib/gatomic.c b/glib/gatomic.c -index 8b8c6453d..67f5ba6b4 100644 ---- a/glib/gatomic.c -+++ b/glib/gatomic.c -@@ -316,7 +316,7 @@ guint - gpointer - (g_atomic_pointer_get) (const volatile void *atomic) - { -- return g_atomic_pointer_get ((const volatile gpointer *) atomic); -+ return g_atomic_pointer_get ((gpointer *) atomic); - } - - /** -@@ -335,7 +335,7 @@ void - (g_atomic_pointer_set) (volatile void *atomic, - gpointer newval) - { -- g_atomic_pointer_set ((volatile gpointer *) atomic, newval); -+ g_atomic_pointer_set ((gpointer *) atomic, newval); - } - - /** -@@ -363,7 +363,7 @@ gboolean - gpointer oldval, - gpointer newval) - { -- return g_atomic_pointer_compare_and_exchange ((volatile gpointer *) atomic, -+ return g_atomic_pointer_compare_and_exchange ((gpointer *) atomic, - oldval, newval); - } - -@@ -387,7 +387,7 @@ gssize - (g_atomic_pointer_add) (volatile void *atomic, - gssize val) - { -- return g_atomic_pointer_add ((volatile gpointer *) atomic, val); -+ return g_atomic_pointer_add ((gpointer *) atomic, val); - } - - /** -@@ -411,7 +411,7 @@ gsize - (g_atomic_pointer_and) (volatile void *atomic, - gsize val) - { -- return g_atomic_pointer_and ((volatile gpointer *) atomic, val); -+ return g_atomic_pointer_and ((gpointer *) atomic, val); - } - - /** -@@ -435,7 +435,7 @@ gsize - (g_atomic_pointer_or) (volatile void *atomic, - gsize val) - { -- return g_atomic_pointer_or ((volatile gpointer *) atomic, val); -+ return g_atomic_pointer_or ((gpointer *) atomic, val); - } - - /** -@@ -459,7 +459,7 @@ gsize - (g_atomic_pointer_xor) (volatile void *atomic, - gsize val) - { -- return g_atomic_pointer_xor ((volatile gpointer *) atomic, val); -+ return g_atomic_pointer_xor ((gpointer *) atomic, val); - } - - #elif defined (G_PLATFORM_WIN32) -@@ -591,7 +591,7 @@ guint - gpointer - (g_atomic_pointer_get) (const volatile void *atomic) - { -- const volatile gpointer *ptr = atomic; -+ const gpointer *ptr = atomic; - - MemoryBarrier (); - return *ptr; -@@ -601,7 +601,7 @@ void - (g_atomic_pointer_set) (volatile void *atomic, - gpointer newval) - { -- volatile gpointer *ptr = atomic; -+ gpointer *ptr = atomic; - - *ptr = newval; - MemoryBarrier (); -@@ -797,7 +797,7 @@ guint - gpointer - (g_atomic_pointer_get) (const volatile void *atomic) - { -- const volatile gpointer *ptr = atomic; -+ const gpointer *ptr = atomic; - gpointer value; - - pthread_mutex_lock (&g_atomic_lock); -@@ -811,7 +811,7 @@ void - (g_atomic_pointer_set) (volatile void *atomic, - gpointer newval) - { -- volatile gpointer *ptr = atomic; -+ gpointer *ptr = atomic; - - pthread_mutex_lock (&g_atomic_lock); - *ptr = newval; -@@ -823,7 +823,7 @@ gboolean - gpointer oldval, - gpointer newval) - { -- volatile gpointer *ptr = atomic; -+ gpointer *ptr = atomic; - gboolean success; - - pthread_mutex_lock (&g_atomic_lock); -@@ -840,7 +840,7 @@ gssize - (g_atomic_pointer_add) (volatile void *atomic, - gssize val) - { -- volatile gssize *ptr = atomic; -+ gssize *ptr = atomic; - gssize oldval; - - pthread_mutex_lock (&g_atomic_lock); -@@ -855,7 +855,7 @@ gsize - (g_atomic_pointer_and) (volatile void *atomic, - gsize val) - { -- volatile gsize *ptr = atomic; -+ gsize *ptr = atomic; - gsize oldval; - - pthread_mutex_lock (&g_atomic_lock); -@@ -870,7 +870,7 @@ gsize - (g_atomic_pointer_or) (volatile void *atomic, - gsize val) - { -- volatile gsize *ptr = atomic; -+ gsize *ptr = atomic; - gsize oldval; - - pthread_mutex_lock (&g_atomic_lock); -@@ -885,7 +885,7 @@ gsize - (g_atomic_pointer_xor) (volatile void *atomic, - gsize val) - { -- volatile gsize *ptr = atomic; -+ gsize *ptr = atomic; - gsize oldval; - - pthread_mutex_lock (&g_atomic_lock); -@@ -915,5 +915,5 @@ gint - g_atomic_int_exchange_and_add (volatile gint *atomic, - gint val) - { -- return (g_atomic_int_add) (atomic, val); -+ return (g_atomic_int_add) ((gint *) atomic, val); - } --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch deleted file mode 100644 index bcc06e05c..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 9474655eb21d64519b293e780bb686976cbdb790 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:38:36 +0000 -Subject: [PATCH 14/29] gatomic: Drop unnecessary volatile qualifiers from - macro variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It’s not necessary and provides no thread safety guarantees. - -The `volatile` qualifiers on the function arguments have to be kept, as -they are (unfortunately) part of the API. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/gatomic.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/glib/gatomic.h b/glib/gatomic.h -index bb1435c70..e6eccfada 100644 ---- a/glib/gatomic.h -+++ b/glib/gatomic.h -@@ -211,7 +211,7 @@ G_END_DECLS - })) - #define g_atomic_pointer_and(atomic, val) \ - (G_GNUC_EXTENSION ({ \ -- volatile gsize *gapa_atomic = (volatile gsize *) (atomic); \ -+ gsize *gapa_atomic = (gsize *) (atomic); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ -@@ -220,7 +220,7 @@ G_END_DECLS - })) - #define g_atomic_pointer_or(atomic, val) \ - (G_GNUC_EXTENSION ({ \ -- volatile gsize *gapo_atomic = (volatile gsize *) (atomic); \ -+ gsize *gapo_atomic = (gsize *) (atomic); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ -@@ -229,7 +229,7 @@ G_END_DECLS - })) - #define g_atomic_pointer_xor(atomic, val) \ - (G_GNUC_EXTENSION ({ \ -- volatile gsize *gapx_atomic = (volatile gsize *) (atomic); \ -+ gsize *gapx_atomic = (gsize *) (atomic); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ - G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ - (void) (0 ? (gpointer) *(atomic) : NULL); \ --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch deleted file mode 100644 index 9468548e3..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 1314ff93fc4d3379483c33da6a7deff27f71ed95 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:40:56 +0000 -Subject: [PATCH 15/29] glib: Drop unnecessary volatile qualifiers from - internal variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These variables were already (correctly) accessed atomically. The -`volatile` qualifier doesn’t help with that. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/gdatetime.c | 2 +- - glib/gkeyfile.c | 2 +- - glib/gmain.c | 8 ++++---- - glib/gmarkup.c | 2 +- - glib/gregex.c | 6 +++--- - glib/gthread.c | 6 +++--- - 6 files changed, 13 insertions(+), 13 deletions(-) - -diff --git a/glib/gdatetime.c b/glib/gdatetime.c -index 1755257be..453077f6d 100644 ---- a/glib/gdatetime.c -+++ b/glib/gdatetime.c -@@ -126,7 +126,7 @@ struct _GDateTime - /* 1 is 0001-01-01 in Proleptic Gregorian */ - gint32 days; - -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - }; - - /* Time conversion {{{1 */ -diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c -index 9d0215331..bbe638b74 100644 ---- a/glib/gkeyfile.c -+++ b/glib/gkeyfile.c -@@ -512,7 +512,7 @@ struct _GKeyFile - - gchar **locales; - -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - }; - - typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair; -diff --git a/glib/gmain.c b/glib/gmain.c -index 772b8ecfc..9c5f0ef1e 100644 ---- a/glib/gmain.c -+++ b/glib/gmain.c -@@ -272,7 +272,7 @@ struct _GMainContext - guint owner_count; - GSList *waiters; - -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - - GHashTable *sources; /* guint -> GSource */ - -@@ -303,7 +303,7 @@ struct _GMainContext - - struct _GSourceCallback - { -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - GSourceFunc func; - gpointer data; - GDestroyNotify notify; -@@ -313,7 +313,7 @@ struct _GMainLoop - { - GMainContext *context; - gboolean is_running; /* (atomic) */ -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - }; - - struct _GTimeoutSource -@@ -4749,7 +4749,7 @@ g_main_context_get_poll_func (GMainContext *context) - * - * |[<!-- language="C" --> - * #define NUM_TASKS 10 -- * static volatile gint tasks_remaining = NUM_TASKS; -+ * static gint tasks_remaining = NUM_TASKS; // (atomic) - * ... - * - * while (g_atomic_int_get (&tasks_remaining) != 0) -diff --git a/glib/gmarkup.c b/glib/gmarkup.c -index ba4dfd2e4..b8327fb6d 100644 ---- a/glib/gmarkup.c -+++ b/glib/gmarkup.c -@@ -119,7 +119,7 @@ struct _GMarkupParseContext - { - const GMarkupParser *parser; - -- volatile gint ref_count; -+ gint ref_count; /* (atomic) */ - - GMarkupParseFlags flags; - -diff --git a/glib/gregex.c b/glib/gregex.c -index 52416bbb9..5e6ddfb46 100644 ---- a/glib/gregex.c -+++ b/glib/gregex.c -@@ -203,7 +203,7 @@ G_STATIC_ASSERT (G_REGEX_RAW == PCRE_UTF8); - - struct _GMatchInfo - { -- volatile gint ref_count; /* the ref count */ -+ gint ref_count; /* the ref count (atomic) */ - GRegex *regex; /* the regex */ - GRegexMatchFlags match_opts; /* options used at match time on the regex */ - gint matches; /* number of matching sub patterns */ -@@ -218,7 +218,7 @@ struct _GMatchInfo - - struct _GRegex - { -- volatile gint ref_count; /* the ref count for the immutable part */ -+ gint ref_count; /* the ref count for the immutable part (atomic) */ - gchar *pattern; /* the pattern */ - pcre *pcre_re; /* compiled form of the pattern */ - GRegexCompileFlags compile_opts; /* options used at compile time on the pattern */ -@@ -1300,7 +1300,7 @@ g_regex_new (const gchar *pattern, - pcre *re; - const gchar *errmsg; - gboolean optimize = FALSE; -- static volatile gsize initialised = 0; -+ static gsize initialised = 0; - - g_return_val_if_fail (pattern != NULL, NULL); - g_return_val_if_fail (error == NULL || *error == NULL, NULL); -diff --git a/glib/gthread.c b/glib/gthread.c -index 53f3a0848..612a9739f 100644 ---- a/glib/gthread.c -+++ b/glib/gthread.c -@@ -513,7 +513,7 @@ static GMutex g_once_mutex; - static GCond g_once_cond; - static GSList *g_once_init_list = NULL; - --static volatile guint g_thread_n_created_counter = 0; -+static guint g_thread_n_created_counter = 0; /* (atomic) */ - - static void g_thread_cleanup (gpointer data); - static GPrivate g_thread_specific_private = G_PRIVATE_INIT (g_thread_cleanup); -@@ -694,7 +694,7 @@ g_once_impl (GOnce *once, - gboolean - (g_once_init_enter) (volatile void *location) - { -- volatile gsize *value_location = location; -+ gsize *value_location = (gsize *) location; - gboolean need_init = FALSE; - g_mutex_lock (&g_once_mutex); - if (g_atomic_pointer_get (value_location) == 0) -@@ -731,7 +731,7 @@ void - (g_once_init_leave) (volatile void *location, - gsize result) - { -- volatile gsize *value_location = location; -+ gsize *value_location = (gsize *) location; - - g_return_if_fail (g_atomic_pointer_get (value_location) == 0); - g_return_if_fail (result != 0); --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch deleted file mode 100644 index 8111b3b51..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 08d04d0428cc26935a2d42083f1710432465c98a Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 18:42:43 +0000 -Subject: [PATCH 16/29] gobject: Drop unnecessary volatile qualifiers from - internal variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These variables were already (correctly) accessed atomically. The -`volatile` qualifier doesn’t help with that. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gobject/gclosure.c | 2 +- - gobject/gclosure.h | 20 ++++++++++---------- - gobject/gobject.c | 4 ++-- - gobject/gtype.c | 10 +++++----- - 4 files changed, 18 insertions(+), 18 deletions(-) - -diff --git a/gobject/gclosure.c b/gobject/gclosure.c -index 1d1f2f48a..6d41e6d8a 100644 ---- a/gobject/gclosure.c -+++ b/gobject/gclosure.c -@@ -98,7 +98,7 @@ - - typedef union { - GClosure closure; -- volatile gint vint; -+ gint vint; - } ClosureInt; - - #define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW) \ -diff --git a/gobject/gclosure.h b/gobject/gclosure.h -index a0f91f538..884e403a8 100644 ---- a/gobject/gclosure.h -+++ b/gobject/gclosure.h -@@ -175,20 +175,20 @@ struct _GClosureNotifyData - struct _GClosure - { - /*< private >*/ -- volatile guint ref_count : 15; -+ guint ref_count : 15; /* (atomic) */ - /* meta_marshal is not used anymore but must be zero for historical reasons - as it was exposed in the G_CLOSURE_N_NOTIFIERS macro */ -- volatile guint meta_marshal_nouse : 1; -- volatile guint n_guards : 1; -- volatile guint n_fnotifiers : 2; /* finalization notifiers */ -- volatile guint n_inotifiers : 8; /* invalidation notifiers */ -- volatile guint in_inotify : 1; -- volatile guint floating : 1; -+ guint meta_marshal_nouse : 1; /* (atomic) */ -+ guint n_guards : 1; /* (atomic) */ -+ guint n_fnotifiers : 2; /* finalization notifiers (atomic) */ -+ guint n_inotifiers : 8; /* invalidation notifiers (atomic) */ -+ guint in_inotify : 1; /* (atomic) */ -+ guint floating : 1; /* (atomic) */ - /*< protected >*/ -- volatile guint derivative_flag : 1; -+ guint derivative_flag : 1; /* (atomic) */ - /*< public >*/ -- volatile guint in_marshal : 1; -- volatile guint is_invalid : 1; -+ guint in_marshal : 1; /* (atomic) */ -+ guint is_invalid : 1; /* (atomic) */ - - /*< private >*/ void (*marshal) (GClosure *closure, - GValue /*out*/ *return_value, -diff --git a/gobject/gobject.c b/gobject/gobject.c -index 6e9c44a1e..a3a32be9f 100644 ---- a/gobject/gobject.c -+++ b/gobject/gobject.c -@@ -174,9 +174,9 @@ typedef struct - GTypeInstance g_type_instance; - - /*< private >*/ -- volatile guint ref_count; -+ guint ref_count; /* (atomic) */ - #ifdef HAVE_OPTIONAL_FLAGS -- volatile guint optional_flags; -+ guint optional_flags; /* (atomic) */ - #endif - GData *qdata; - } GObjectReal; -diff --git a/gobject/gtype.c b/gobject/gtype.c -index 51dad7690..be5989a3e 100644 ---- a/gobject/gtype.c -+++ b/gobject/gtype.c -@@ -221,9 +221,9 @@ typedef enum - /* --- structures --- */ - struct _TypeNode - { -- guint volatile ref_count; -+ guint ref_count; /* (atomic) */ - #ifdef G_ENABLE_DEBUG -- guint volatile instance_count; -+ guint instance_count; /* (atomic) */ - #endif - GTypePlugin *plugin; - guint n_children; /* writable with lock */ -@@ -233,7 +233,7 @@ struct _TypeNode - guint is_instantiatable : 1; - guint mutatable_check_cache : 1; /* combines some common path checks */ - GType *children; /* writable with lock */ -- TypeData * volatile data; -+ TypeData *data; - GQuark qname; - GData *global_gdata; - union { -@@ -569,8 +569,8 @@ type_node_new_W (TypeNode *pnode, - } - - static inline IFaceEntry* --lookup_iface_entry_I (volatile IFaceEntries *entries, -- TypeNode *iface_node) -+lookup_iface_entry_I (IFaceEntries *entries, -+ TypeNode *iface_node) - { - guint8 *offsets; - guint offset_index; --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch deleted file mode 100644 index 02816a887..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch +++ /dev/null @@ -1,44 +0,0 @@ -From eee7e3c6688f2f1ee9beed5d6d209973c1df387e Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 19:14:25 +0000 -Subject: [PATCH 17/29] gmessages: Drop unnecessary volatile qualifiers from - macro variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It’s not necessary and provides no thread safety guarantees. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/gmessages.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/glib/gmessages.h b/glib/gmessages.h -index 6a28443b4..2e3650baf 100644 ---- a/glib/gmessages.h -+++ b/glib/gmessages.h -@@ -478,7 +478,7 @@ g_debug (const gchar *format, - #if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING - #define g_warning_once(...) \ - G_STMT_START { \ -- static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \ -+ static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \ - if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ - 0, 1)) \ - g_warning (__VA_ARGS__); \ -@@ -487,7 +487,7 @@ g_debug (const gchar *format, - #elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING - #define g_warning_once(format...) \ - G_STMT_START { \ -- static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \ -+ static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \ - if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ - 0, 1)) \ - g_warning (format); \ --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch deleted file mode 100644 index 50cb3c470..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 8a87069ff42a0631dce153701cb2ec5e343a958c Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 19:16:30 +0000 -Subject: [PATCH 18/29] gtypes: Drop volatile qualifier from gatomicrefcount - -This is technically an API break, but since the type is meant to be -opaque (third party code is not meant to treat it like an integer) it -should not cause problems. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/gtypes.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/glib/gtypes.h b/glib/gtypes.h -index 23c5a1295..2c4825582 100644 ---- a/glib/gtypes.h -+++ b/glib/gtypes.h -@@ -550,8 +550,8 @@ struct _GTimeVal - glong tv_usec; - } GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); - --typedef gint grefcount; --typedef volatile gint gatomicrefcount; -+typedef gint grefcount; -+typedef gint gatomicrefcount; /* should be accessed only using atomics */ - - G_END_DECLS - --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch deleted file mode 100644 index be3211664..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 46bae4f18dfec8fedda82648091752d270b2dff8 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 19:19:20 +0000 -Subject: [PATCH 19/29] gatomicarray: Drop volatile qualifier from GAtomicArray - API - -This is an API break, but it should not affect third party code since -that code should not be interacting with the `data` member in a way that -invokes its `volatile` qualifier (such as copying to an intermediate -variable). - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gobject/gatomicarray.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/gobject/gatomicarray.h b/gobject/gatomicarray.h -index 9550fa396..89043c5e4 100644 ---- a/gobject/gatomicarray.h -+++ b/gobject/gatomicarray.h -@@ -29,7 +29,7 @@ G_BEGIN_DECLS - - typedef struct _GAtomicArray GAtomicArray; - struct _GAtomicArray { -- volatile gpointer data; /* elements - atomic */ -+ gpointer data; /* elements - atomic */ - }; - - void _g_atomic_array_init (GAtomicArray *array); -@@ -42,7 +42,7 @@ void _g_atomic_array_update (GAtomicArray *array, - #define G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data)) - - #define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START { \ -- volatile gpointer *_datap = &(_array)->data; \ -+ gpointer *_datap = &(_array)->data; \ - _type *transaction_data, *__check; \ - \ - __check = g_atomic_pointer_get (_datap); \ --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch deleted file mode 100644 index ae024a9af..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 334f6953364680ddc6c0d3da13fda1d92bf5379d Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 19:21:07 +0000 -Subject: [PATCH 20/29] gobject: Drop volatile qualifier from GObject.ref_count - -This is an API break, but no third party code should be touching -`GObject.ref_count`, let alone in a way which would be changed by the -removal of the `volatile` qualifier. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gobject/gobject.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gobject/gobject.h b/gobject/gobject.h -index 7f55e1976..a84c183f8 100644 ---- a/gobject/gobject.h -+++ b/gobject/gobject.h -@@ -247,7 +247,7 @@ struct _GObject - GTypeInstance g_type_instance; - - /*< private >*/ -- volatile guint ref_count; -+ guint ref_count; /* (atomic) */ - GData *qdata; - }; - /** --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch deleted file mode 100644 index b8ed99ce1..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 8a112c3c6e5fe6838ee29eec7caa62ba32d9bc40 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 19:22:49 +0000 -Subject: [PATCH 21/29] tests: Drop unnecessary volatile qualifiers from tests -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These variables were already (correctly) accessed atomically. The -`volatile` qualifier doesn’t help with that. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gobject/tests/qdata.c | 2 +- - gobject/tests/threadtests.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/gobject/tests/qdata.c b/gobject/tests/qdata.c -index 528bdc68e..7d46efb15 100644 ---- a/gobject/tests/qdata.c -+++ b/gobject/tests/qdata.c -@@ -17,7 +17,7 @@ gboolean fail; - #define ROUNDS 10000 - - GObject *object; --volatile gint bucket[THREADS]; -+gint bucket[THREADS]; /* accessed from multiple threads, but should never be contested due to the sequence of thread operations */ - - static gpointer - thread_func (gpointer data) -diff --git a/gobject/tests/threadtests.c b/gobject/tests/threadtests.c -index e341a9d67..b6f9e17fa 100644 ---- a/gobject/tests/threadtests.c -+++ b/gobject/tests/threadtests.c -@@ -27,8 +27,8 @@ - #include <glib.h> - #include <glib-object.h> - --static volatile int mtsafe_call_counter = 0; /* multi thread safe call counter */ --static int unsafe_call_counter = 0; /* single-threaded call counter */ -+static int mtsafe_call_counter = 0; /* multi thread safe call counter, must be accessed atomically */ -+static int unsafe_call_counter = 0; /* single-threaded call counter */ - static GCond sync_cond; - static GMutex sync_mutex; - --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch deleted file mode 100644 index 5da509d17..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch +++ /dev/null @@ -1,38 +0,0 @@ -From daf90bfa99fc02a253d538c65fbaa12f2e6c1c45 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Wed, 11 Nov 2020 19:23:18 +0000 -Subject: [PATCH 22/29] build: Drop unnecessary volatile qualifiers from - configure tests - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - meson.build | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index e0b308a25..ad7f887fb 100644 ---- a/meson.build -+++ b/meson.build -@@ -1773,7 +1773,7 @@ endforeach - # that then to silently fall back on emulated atomic ops just because - # the user had the wrong build environment. - atomictest = '''int main() { -- volatile int atomic = 2; -+ int atomic = 2; - __sync_bool_compare_and_swap (&atomic, 2, 3); - return 0; - } -@@ -1883,6 +1883,7 @@ endif - - # FIXME: we should make it print the result and always return 0, so that - # the output in meson shows up as green -+# volatile is needed here to avoid optimisations in the test - stack_grows_check_prog = ''' - volatile int *a = 0, *b = 0; - void f (int i) { --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch deleted file mode 100644 index 012f9ca87..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0604f5858259c32744e6fc912ed4feb308651a3a Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Mon, 16 Nov 2020 14:47:23 +0000 -Subject: [PATCH 23/29] gdbusprivate: Avoid a warning about a statement with no - effect - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/gdbusprivate.c | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c -index 99b37f3eb..4e42c1a4d 100644 ---- a/gio/gdbusprivate.c -+++ b/gio/gdbusprivate.c -@@ -1945,11 +1945,10 @@ _g_dbus_initialize (void) - - if (g_once_init_enter (&initialized)) - { -- GQuark g_dbus_error_domain; - const gchar *debug; - -- g_dbus_error_domain = G_DBUS_ERROR; -- (g_dbus_error_domain); /* To avoid -Wunused-but-set-variable */ -+ /* Ensure the domain is registered. */ -+ g_dbus_error_quark (); - - debug = g_getenv ("G_DBUS_DEBUG"); - if (debug != NULL) --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch deleted file mode 100644 index 7350803c6..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 2d03f99ae4de394cac0690717d96c2d884ccdae2 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Mon, 16 Nov 2020 14:47:47 +0000 -Subject: [PATCH 24/29] tests: Add comment to volatile atomic tests -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -`volatile` should not be used to indicate atomic variables, and we -shouldn’t encourage its use. Keep the tests, since they check that we -don’t emit warnings when built against incorrect old code which uses -`volatile`. But add a comment to stop copy/paste use of `volatile` -in the future. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/tests/atomic.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c -index 7d2459f3a..14e6e454e 100644 ---- a/glib/tests/atomic.c -+++ b/glib/tests/atomic.c -@@ -94,6 +94,9 @@ test_types (void) - res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, str); - g_assert_true (res); - -+ /* Note that atomic variables should almost certainly not be marked as -+ * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists -+ * to make sure that we don’t warn when built against older third party code. */ - g_atomic_pointer_set (&vp_str_vol, NULL); - res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, str); - g_assert_true (res); -@@ -210,6 +213,9 @@ G_GNUC_END_IGNORE_DEPRECATIONS - res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, (char *) str); - g_assert_true (res); - -+ /* Note that atomic variables should almost certainly not be marked as -+ * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists -+ * to make sure that we don’t warn when built against older third party code. */ - g_atomic_pointer_set (&vp_str_vol, NULL); - res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, (char *) str); - g_assert_true (res); --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch deleted file mode 100644 index c15a3b8a5..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 6bd0a4b29753570a2c20b61b5ad2c0068567b7b6 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Mon, 16 Nov 2020 16:44:29 +0000 -Subject: [PATCH 25/29] gthread: Use g_atomic() primitives correctly in - destructor list -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In the Windows destructor list, consistently access -`g_private_destructors` using atomic primitives. - -`g_atomic_pointer_compare_and_exchange()` should be equivalent to -`InterlockedCompareExchangePointer()`, but is a bit more understandable -in a general GLib context, and pairs with `g_atomic_pointer_get()`. (I -can’t find a Windows API equivalent for that.) - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - glib/gthread-win32.c | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - -diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c -index 0c37dc6c1..20aca6fa1 100644 ---- a/glib/gthread-win32.c -+++ b/glib/gthread-win32.c -@@ -301,7 +301,7 @@ struct _GPrivateDestructor - GPrivateDestructor *next; - }; - --static GPrivateDestructor * volatile g_private_destructors; -+static GPrivateDestructor *g_private_destructors; /* (atomic) prepend-only */ - static CRITICAL_SECTION g_private_lock; - - static DWORD -@@ -329,7 +329,7 @@ g_private_get_impl (GPrivate *key) - g_thread_abort (errno, "malloc"); - destructor->index = impl; - destructor->notify = key->notify; -- destructor->next = g_private_destructors; -+ destructor->next = g_atomic_pointer_get (&g_private_destructors); - - /* We need to do an atomic store due to the unlocked - * access to the destructor list from the thread exit -@@ -337,13 +337,14 @@ g_private_get_impl (GPrivate *key) - * - * It can double as a sanity check... - */ -- if (InterlockedCompareExchangePointer (&g_private_destructors, destructor, -- destructor->next) != destructor->next) -+ if (!g_atomic_pointer_compare_and_exchange (&g_private_destructors, -+ destructor->next, -+ destructor)) - g_thread_abort (0, "g_private_get_impl(1)"); - } - - /* Ditto, due to the unlocked access on the fast path */ -- if (InterlockedCompareExchangePointer (&key->p, impl, NULL) != NULL) -+ if (!g_atomic_pointer_compare_and_exchange (&key->p, NULL, impl)) - g_thread_abort (0, "g_private_get_impl(2)"); - } - LeaveCriticalSection (&g_private_lock); -@@ -635,7 +636,7 @@ g_thread_win32_thread_detach (void) - */ - dtors_called = FALSE; - -- for (dtor = g_private_destructors; dtor; dtor = dtor->next) -+ for (dtor = g_atomic_pointer_get (&g_private_destructors); dtor; dtor = dtor->next) - { - gpointer value; - --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch deleted file mode 100644 index 7090a12a8..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 041dd8b70bd14b041d6a495492eb7a5fc7568bb7 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Mon, 16 Nov 2020 16:47:54 +0000 -Subject: [PATCH 26/29] gtype: Fix some typos in comments - -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> ---- - gobject/gtype.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/gobject/gtype.c b/gobject/gtype.c -index be5989a3e..ae1af8a05 100644 ---- a/gobject/gtype.c -+++ b/gobject/gtype.c -@@ -2290,7 +2290,7 @@ type_class_init_Wm (TypeNode *node, - * inherited interfaces are already init_state == INITIALIZED, because - * they either got setup in the above base_init loop, or during - * class_init from within type_add_interface_Wm() for this or -- * an anchestor type. -+ * an ancestor type. - */ - i = 0; - while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL) -@@ -3462,7 +3462,7 @@ g_type_depth (GType type) - * be used to determine the types and order in which the leaf type is - * descended from the root type. - * -- * Returns: immediate child of @root_type and anchestor of @leaf_type -+ * Returns: immediate child of @root_type and ancestor of @leaf_type - */ - GType - g_type_next_base (GType type, -@@ -3549,8 +3549,8 @@ type_node_conforms_to_U (TypeNode *node, - - /** - * g_type_is_a: -- * @type: type to check anchestry for -- * @is_a_type: possible anchestor of @type or interface that @type -+ * @type: type to check ancestry for -+ * @is_a_type: possible ancestor of @type or interface that @type - * could conform to - * - * If @is_a_type is a derivable type, check whether @type is a --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch deleted file mode 100644 index 9c4e45ff4..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 47da8ec5d9a284e07f77c7d59fc8eacf3ebf188a Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Mon, 16 Nov 2020 16:57:22 +0000 -Subject: [PATCH 27/29] gtype: Add some missing atomic accesses to init_state -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Half of the references to `init_state` in `gtype.c` already correctly -accessed it atomically, but a couple didn’t. Drop the `volatile` -qualifier from its declaration, as that’s not necessary for atomic -access. - -Note that this is the `init_state` in `TypeData`, *not* the `init_state` -in `IFaceEntry`. - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Helps: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gobject/gtype.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/gobject/gtype.c b/gobject/gtype.c -index ae1af8a05..909faf138 100644 ---- a/gobject/gtype.c -+++ b/gobject/gtype.c -@@ -322,7 +322,7 @@ struct _ClassData - CommonData common; - guint16 class_size; - guint16 class_private_size; -- int volatile init_state; /* atomic - g_type_class_ref reads it unlocked */ -+ int init_state; /* (atomic) - g_type_class_ref reads it unlocked */ - GBaseInitFunc class_init_base; - GBaseFinalizeFunc class_finalize_base; - GClassInitFunc class_init; -@@ -336,7 +336,7 @@ struct _InstanceData - CommonData common; - guint16 class_size; - guint16 class_private_size; -- int volatile init_state; /* atomic - g_type_class_ref reads it unlocked */ -+ int init_state; /* (atomic) - g_type_class_ref reads it unlocked */ - GBaseInitFunc class_init_base; - GBaseFinalizeFunc class_finalize_base; - GClassInitFunc class_init; -@@ -1415,7 +1415,7 @@ type_node_add_iface_entry_W (TypeNode *node, - - if (parent_entry) - { -- if (node->data && node->data->class.init_state >= BASE_IFACE_INIT) -+ if (node->data && g_atomic_int_get (&node->data->class.init_state) >= BASE_IFACE_INIT) - { - entries->entry[i].init_state = INITIALIZED; - entries->entry[i].vtable = parent_entry->vtable; -@@ -1481,7 +1481,7 @@ type_add_interface_Wm (TypeNode *node, - */ - if (node->data) - { -- InitState class_state = node->data->class.init_state; -+ InitState class_state = g_atomic_int_get (&node->data->class.init_state); - - if (class_state >= BASE_IFACE_INIT) - type_iface_vtable_base_init_Wm (iface, node); -@@ -2175,7 +2175,7 @@ type_class_init_Wm (TypeNode *node, - g_assert (node->is_classed && node->data && - node->data->class.class_size && - !node->data->class.class && -- node->data->class.init_state == UNINITIALIZED); -+ g_atomic_int_get (&node->data->class.init_state) == UNINITIALIZED); - if (node->data->class.class_private_size) - class = g_malloc0 (ALIGN_STRUCT (node->data->class.class_size) + node->data->class.class_private_size); - else --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch deleted file mode 100644 index e03fac19f..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 7d417f8406b8fa32a25659120738d22be6a1b482 Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Mon, 16 Nov 2020 17:17:21 +0000 -Subject: [PATCH 28/29] gresource: Fix a pointer mismatch with an atomic load - -This squashes a warning when compiling with Clang. - -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> ---- - gio/gresource.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gio/gresource.c b/gio/gresource.c -index 79a49d33d..b495d12ac 100644 ---- a/gio/gresource.c -+++ b/gio/gresource.c -@@ -1398,7 +1398,7 @@ register_lazy_static_resources (void) - void - g_static_resource_init (GStaticResource *static_resource) - { -- gpointer next; -+ GStaticResource *next; - - do - { --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch deleted file mode 100644 index 3311ad65d..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch +++ /dev/null @@ -1,258 +0,0 @@ -From 83e48d8ac1fee98059e2305d8909dca26190bddc Mon Sep 17 00:00:00 2001 -From: Philip Withnall <pwithnall@endlessos.org> -Date: Tue, 17 Nov 2020 10:15:15 +0000 -Subject: [PATCH 29/29] docs: Document not to use `volatile` qualifiers - -Signed-off-by: Philip Withnall <pwithnall@endlessos.org> - -Fixes: #600 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] ---- - gio/gdbusconnection.c | 12 ++++++++--- - gio/gdbuserror.c | 3 +++ - glib/gatomic.c | 48 +++++++++++++++++++++++++++++++++++++++++++ - glib/gthread.c | 6 ++++++ - 4 files changed, 66 insertions(+), 3 deletions(-) - -diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c -index 91c365e80..65939a4d2 100644 ---- a/gio/gdbusconnection.c -+++ b/gio/gdbusconnection.c -@@ -1708,7 +1708,9 @@ g_dbus_connection_send_message_unlocked (GDBusConnection *connection, - * will be assigned by @connection and set on @message via - * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the - * serial number used will be written to this location prior to -- * submitting the message to the underlying transport. -+ * submitting the message to the underlying transport. While it has a `volatile` -+ * qualifier, this is a historical artifact and the argument passed to it should -+ * not be `volatile`. - * - * If @connection is closed then the operation will fail with - * %G_IO_ERROR_CLOSED. If @message is not well-formed, -@@ -1979,7 +1981,9 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect - * will be assigned by @connection and set on @message via - * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the - * serial number used will be written to this location prior to -- * submitting the message to the underlying transport. -+ * submitting the message to the underlying transport. While it has a `volatile` -+ * qualifier, this is a historical artifact and the argument passed to it should -+ * not be `volatile`. - * - * If @connection is closed then the operation will fail with - * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will -@@ -2105,7 +2109,9 @@ send_message_with_reply_sync_cb (GDBusConnection *connection, - * will be assigned by @connection and set on @message via - * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the - * serial number used will be written to this location prior to -- * submitting the message to the underlying transport. -+ * submitting the message to the underlying transport. While it has a `volatile` -+ * qualifier, this is a historical artifact and the argument passed to it should -+ * not be `volatile`. - * - * If @connection is closed then the operation will fail with - * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will -diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c -index b03a33f27..4ad97bb6e 100644 ---- a/gio/gdbuserror.c -+++ b/gio/gdbuserror.c -@@ -177,6 +177,9 @@ g_dbus_error_quark (void) - * - * Helper function for associating a #GError error domain with D-Bus error names. - * -+ * While @quark_volatile has a `volatile` qualifier, this is a historical -+ * artifact and the argument passed to it should not be `volatile`. -+ * - * Since: 2.26 - */ - void -diff --git a/glib/gatomic.c b/glib/gatomic.c -index 67f5ba6b4..0bc67aa35 100644 ---- a/glib/gatomic.c -+++ b/glib/gatomic.c -@@ -105,6 +105,9 @@ - * This call acts as a full compiler and hardware - * memory barrier (before the get). - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of the integer - * - * Since: 2.4 -@@ -125,6 +128,9 @@ gint - * This call acts as a full compiler and hardware - * memory barrier (after the set). - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Since: 2.4 - */ - void -@@ -144,6 +150,9 @@ void - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Since: 2.4 - **/ - void -@@ -163,6 +172,9 @@ void - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: %TRUE if the resultant value is zero - * - * Since: 2.4 -@@ -189,6 +201,9 @@ gboolean - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: %TRUE if the exchange took place - * - * Since: 2.4 -@@ -216,6 +231,9 @@ gboolean - * Before version 2.30, this function did not return a value - * (but g_atomic_int_exchange_and_add() did, and had the same meaning). - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the add, signed - * - * Since: 2.4 -@@ -240,6 +258,9 @@ gint - * Think of this operation as an atomic version of - * `{ tmp = *atomic; *atomic &= val; return tmp; }`. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the operation, unsigned - * - * Since: 2.30 -@@ -264,6 +285,9 @@ guint - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the operation, unsigned - * - * Since: 2.30 -@@ -288,6 +312,9 @@ guint - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the operation, unsigned - * - * Since: 2.30 -@@ -309,6 +336,9 @@ guint - * This call acts as a full compiler and hardware - * memory barrier (before the get). - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of the pointer - * - * Since: 2.4 -@@ -329,6 +359,9 @@ gpointer - * This call acts as a full compiler and hardware - * memory barrier (after the set). - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Since: 2.4 - **/ - void -@@ -354,6 +387,9 @@ void - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: %TRUE if the exchange took place - * - * Since: 2.4 -@@ -379,6 +415,9 @@ gboolean - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the add, signed - * - * Since: 2.30 -@@ -403,6 +442,9 @@ gssize - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the operation, unsigned - * - * Since: 2.30 -@@ -427,6 +469,9 @@ gsize - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the operation, unsigned - * - * Since: 2.30 -@@ -451,6 +496,9 @@ gsize - * - * This call acts as a full compiler and hardware memory barrier. - * -+ * While @atomic has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: the value of @atomic before the operation, unsigned - * - * Since: 2.30 -diff --git a/glib/gthread.c b/glib/gthread.c -index 612a9739f..29216d7fd 100644 ---- a/glib/gthread.c -+++ b/glib/gthread.c -@@ -686,6 +686,9 @@ g_once_impl (GOnce *once, - * // use initialization_value here - * ]| - * -+ * While @location has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Returns: %TRUE if the initialization section should be entered, - * %FALSE and blocks otherwise - * -@@ -725,6 +728,9 @@ gboolean - * releases concurrent threads blocking in g_once_init_enter() on this - * initialization variable. - * -+ * While @location has a `volatile` qualifier, this is a historical artifact and -+ * the pointer passed to it should not be `volatile`. -+ * - * Since: 2.14 - */ - void --- -2.30.1 - diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch index 4cbcc29a5..f34f30bb3 100644 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch @@ -1,4 +1,4 @@ -From 011c9f024b6475d31e7d5432a38d00fb67eaea40 Mon Sep 17 00:00:00 2001 +From e56cdb8c343dd6a6ed3b10bd54e353d633ad6158 Mon Sep 17 00:00:00 2001 From: Ross Burton <ross.burton@intel.com> Date: Fri, 11 Mar 2016 15:35:55 +0000 Subject: [PATCH] glib-2.0: relocate the GIO module directory for native builds @@ -19,19 +19,19 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gio/giomodule.c b/gio/giomodule.c -index dc4d6d3..da46906 100644 +index a2909a8..1f4ab82 100644 --- a/gio/giomodule.c +++ b/gio/giomodule.c -@@ -49,6 +49,8 @@ - #include "gmemorymonitordbus.h" +@@ -51,6 +51,8 @@ #ifdef G_OS_WIN32 #include "gregistrysettingsbackend.h" + #include "giowin32-priv.h" +#else +#include <dlfcn.h> #endif #include <glib/gstdio.h> -@@ -1163,7 +1165,15 @@ get_gio_module_dir (void) +@@ -1213,7 +1215,15 @@ get_gio_module_dir (void) NULL); g_free (install_dir); #else diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb deleted file mode 100644 index 3909b76dd..000000000 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb +++ /dev/null @@ -1,86 +0,0 @@ -require glib.inc - -PE = "1" - -SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}" - -SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \ - file://run-ptest \ - file://0001-Fix-DATADIRNAME-on-uclibc-Linux.patch \ - file://Enable-more-tests-while-cross-compiling.patch \ - file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \ - file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \ - file://0001-Do-not-ignore-return-value-of-write.patch \ - file://0010-Do-not-hardcode-python-path-into-various-tools.patch \ - file://0001-Set-host_machine-correctly-when-building-with-mingw3.patch \ - file://0001-Do-not-write-bindir-into-pkg-config-files.patch \ - file://0001-meson-Run-atomics-test-on-clang-as-well.patch \ - file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \ - file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \ - file://0001-tests-codegen.py-removing-unecessary-print-statement.patch \ - " -SRC_URI += "\ - file://0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch \ - file://0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch \ - file://0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch \ - file://0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ - file://0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch \ - file://0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ - file://0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch \ - file://0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch \ - file://0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch \ - file://0010-kqueue-Fix-unlocked-access-to-shared-variable.patch \ - file://0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ - file://0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch \ - file://0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch \ - file://0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch \ - file://0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch \ - file://0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch \ - file://0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch \ - file://0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch \ - file://0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch \ - file://0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch \ - file://0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ - file://0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch \ - file://0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch \ - file://0024-tests-Add-comment-to-volatile-atomic-tests.patch \ - file://0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch \ - file://0026-gtype-Fix-some-typos-in-comments.patch \ - file://0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch \ - file://0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch \ - file://0029-docs-Document-not-to-use-volatile-qualifiers.patch \ -" -SRC_URI_append_class-native = " file://relocate-modules.patch" - -SRC_URI[sha256sum] = "09f158769f6f26b31074e15b1ac80ec39b13b53102dfae66cfe826fb2cc65502" - -# Find any meson cross files in FILESPATH that are relevant for the current -# build (using siteinfo) and add them to EXTRA_OEMESON. -inherit siteinfo -def find_meson_cross_files(d): - if bb.data.inherits_class('native', d): - return "" - - thisdir = os.path.normpath(d.getVar("THISDIR")) - import collections - sitedata = siteinfo_data(d) - # filename -> found - files = collections.OrderedDict() - for path in d.getVar("FILESPATH").split(":"): - for element in sitedata: - filename = os.path.normpath(os.path.join(path, "meson.cross.d", element)) - sanitized_path = filename.replace(thisdir, "${THISDIR}") - if sanitized_path == filename: - if os.path.exists(filename): - bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir)) - continue - files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename) - - items = ["--cross-file=" + k for k,v in files.items() if v] - d.appendVar("EXTRA_OEMESON", " " + " ".join(items)) - items = ["%s:%s" % (k, "True" if v else "False") for k,v in files.items()] - d.appendVarFlag("do_configure", "file-checksums", " " + " ".join(items)) - -python () { - find_meson_cross_files(d) -} diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.68.3.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.68.3.bb new file mode 100644 index 000000000..2a3a00fad --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.68.3.bb @@ -0,0 +1,54 @@ +require glib.inc + +PE = "1" + +SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}" + +SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \ + file://run-ptest \ + file://0001-Fix-DATADIRNAME-on-uclibc-Linux.patch \ + file://Enable-more-tests-while-cross-compiling.patch \ + file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \ + file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \ + file://0001-Do-not-ignore-return-value-of-write.patch \ + file://0010-Do-not-hardcode-python-path-into-various-tools.patch \ + file://0001-Set-host_machine-correctly-when-building-with-mingw3.patch \ + file://0001-Do-not-write-bindir-into-pkg-config-files.patch \ + file://0001-meson-Run-atomics-test-on-clang-as-well.patch \ + file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \ + file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \ + " +SRC_URI_append_class-native = " file://relocate-modules.patch" + +SRC_URI[sha256sum] = "e7e1a3c20c026109c45c9ec4a31d8dcebc22e86c69486993e565817d64be3138" + +# Find any meson cross files in FILESPATH that are relevant for the current +# build (using siteinfo) and add them to EXTRA_OEMESON. +inherit siteinfo +def find_meson_cross_files(d): + if bb.data.inherits_class('native', d): + return "" + + thisdir = os.path.normpath(d.getVar("THISDIR")) + import collections + sitedata = siteinfo_data(d) + # filename -> found + files = collections.OrderedDict() + for path in d.getVar("FILESPATH").split(":"): + for element in sitedata: + filename = os.path.normpath(os.path.join(path, "meson.cross.d", element)) + sanitized_path = filename.replace(thisdir, "${THISDIR}") + if sanitized_path == filename: + if os.path.exists(filename): + bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir)) + continue + files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename) + + items = ["--cross-file=" + k for k,v in files.items() if v] + d.appendVar("EXTRA_OEMESON", " " + " ".join(items)) + items = ["%s:%s" % (k, "True" if v else "False") for k,v in files.items()] + d.appendVarFlag("do_configure", "file-checksums", " " + " ".join(items)) + +python () { + find_meson_cross_files(d) +} diff --git a/poky/meta/recipes-core/glib-networking/glib-networking_2.66.0.bb b/poky/meta/recipes-core/glib-networking/glib-networking_2.68.1.bb index 230932daf..fac04087d 100644 --- a/poky/meta/recipes-core/glib-networking/glib-networking_2.66.0.bb +++ b/poky/meta/recipes-core/glib-networking/glib-networking_2.68.1.bb @@ -9,9 +9,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" SECTION = "libs" DEPENDS = "glib-2.0" -SRC_URI[archive.sha256sum] = "c5d7be2437fdd196eebfb70c4517b96d3ba7ec13bd496318b8f02dea383e0099" +SRC_URI[archive.sha256sum] = "d05d8bd124a9f53fc2b93b18f2386d512e4f48bc5a80470a7967224f3bf53b30" -PACKAGECONFIG ??= "gnutls ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}" +PACKAGECONFIG ??= "openssl ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}" PACKAGECONFIG[gnutls] = "-Dgnutls=enabled,-Dgnutls=disabled,gnutls" PACKAGECONFIG[openssl] = "-Dopenssl=enabled,-Dopenssl=disabled,openssl" @@ -33,4 +33,6 @@ FILES_${PN} += "\ FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la" FILES_${PN}-staticdev += "${libdir}/gio/modules/libgio*.a" +RDEPENDS_${PN}-ptest += "bash" + BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-core/glibc/glibc-package.inc b/poky/meta/recipes-core/glibc/glibc-package.inc index 8d0cc8047..92e5dbac6 100644 --- a/poky/meta/recipes-core/glibc/glibc-package.inc +++ b/poky/meta/recipes-core/glibc/glibc-package.inc @@ -1,6 +1,6 @@ INHIBIT_SYSROOT_STRIP = "1" -PACKAGES = "${PN}-dbg catchsegv sln nscd ldconfig ldd tzcode glibc-thread-db ${PN}-pic libcidn libmemusage libnss-db libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc" +PACKAGES = "${PN}-dbg catchsegv sln nscd ldconfig ldd tzcode glibc-thread-db ${PN}-pic libcidn libmemusage libnss-db libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-src" # The ld.so in this glibc supports the GNU_HASH RPROVIDES_${PN} = "eglibc rtld(GNU_HASH)" @@ -43,7 +43,7 @@ FILES_${PN}-staticdev += "${libdir}/*.a ${base_libdir}/*.a" FILES_nscd = "${sbindir}/nscd* ${sysconfdir}/init.d/nscd ${systemd_unitdir}/system/nscd* ${sysconfdir}/tmpfiles.d/nscd.conf \ ${sysconfdir}/nscd.conf ${sysconfdir}/default/volatiles/98_nscd ${localstatedir}/db/nscd" FILES_${PN}-mtrace = "${bindir}/mtrace" -FILES_tzcode = "${bindir}/tzselect ${sbindir}/zic ${sbindir}/zdump" +FILES_tzcode = "${bindir}/tzselect ${sbindir}/zic ${bindir}/zdump" FILES_${PN}-utils = "${bindir}/* ${sbindir}/*" FILES_catchsegv = "${bindir}/catchsegv" RDEPENDS_catchsegv = "libsegfault" diff --git a/poky/meta/recipes-core/glibc/glibc-version.inc b/poky/meta/recipes-core/glibc/glibc-version.inc index 3a9517317..376ead66a 100644 --- a/poky/meta/recipes-core/glibc/glibc-version.inc +++ b/poky/meta/recipes-core/glibc/glibc-version.inc @@ -1,6 +1,6 @@ SRCBRANCH ?= "release/2.33/master" PV = "2.33" -SRCREV_glibc ?= "9826b03b747b841f5fc6de2054bf1ef3f5c4bdf3" +SRCREV_glibc ?= "3f5080aedd164c1f92a53552dd3e0b82ac6d2bd3" SRCREV_localedef ?= "bd644c9e6f3e20c5504da1488448173c69c56c28" GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git" diff --git a/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch b/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch deleted file mode 100644 index 39fde5b78..000000000 --- a/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch +++ /dev/null @@ -1,49 +0,0 @@ -From c4ad832276f4dadfa40904109b26a521468f66bc Mon Sep 17 00:00:00 2001 -From: Florian Weimer <fweimer@redhat.com> -Date: Thu, 4 Feb 2021 15:00:20 +0100 -Subject: [PATCH] nptl: Remove private futex optimization [BZ #27304] - -It is effectively used, unexcept for pthread_cond_destroy, where we do -not want it; see bug 27304. The internal locks do not support a -process-shared mode. - -This fixes commit dc6cfdc934db9997c33728082d63552b9eee4563 ("nptl: -Move pthread_cond_destroy implementation into libc"). - -Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> - -Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27304] -Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com> ---- - sysdeps/nptl/lowlevellock-futex.h | 14 +------------- - 1 file changed, 1 insertion(+), 13 deletions(-) - -diff --git a/sysdeps/nptl/lowlevellock-futex.h b/sysdeps/nptl/lowlevellock-futex.h -index ecb729da6b..ca96397a4a 100644 ---- a/sysdeps/nptl/lowlevellock-futex.h -+++ b/sysdeps/nptl/lowlevellock-futex.h -@@ -50,20 +50,8 @@ - #define LLL_SHARED FUTEX_PRIVATE_FLAG - - #ifndef __ASSEMBLER__ -- --# if IS_IN (libc) || IS_IN (rtld) --/* In libc.so or ld.so all futexes are private. */ --# define __lll_private_flag(fl, private) \ -- ({ \ -- /* Prevent warnings in callers of this macro. */ \ -- int __lll_private_flag_priv __attribute__ ((unused)); \ -- __lll_private_flag_priv = (private); \ -- ((fl) | FUTEX_PRIVATE_FLAG); \ -- }) --# else --# define __lll_private_flag(fl, private) \ -+# define __lll_private_flag(fl, private) \ - (((fl) | FUTEX_PRIVATE_FLAG) ^ (private)) --# endif - - # define lll_futex_syscall(nargs, futexp, op, ...) \ - ({ \ --- -2.27.0 - diff --git a/poky/meta/recipes-core/glibc/glibc/0031-x86-Require-full-ISA-support-for-x86-64-level-marker.patch b/poky/meta/recipes-core/glibc/glibc/0031-x86-Require-full-ISA-support-for-x86-64-level-marker.patch deleted file mode 100644 index 3cb60b2e5..000000000 --- a/poky/meta/recipes-core/glibc/glibc/0031-x86-Require-full-ISA-support-for-x86-64-level-marker.patch +++ /dev/null @@ -1,116 +0,0 @@ -From b1971f6f1331d738d1d6b376b4741668a7546125 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" <hjl.tools@gmail.com> -Date: Tue, 2 Feb 2021 13:45:58 -0800 -Subject: [PATCH] x86: Require full ISA support for x86-64 level marker [BZ #27318] - -Since -march=sandybridge enables ISAs in x86-64 ISA level v3, the v3 -marker is set on libc.so. We couldn't set the needed ISA marker to v2 -since this libc won't run on all v2 machines. Technically, the v3 marker -is correct. But the resulting libc.so won't run on Sandy Brigde, which -is a v2 machine, even when libc is compiled with -march=sandybridge: - -$ ./elf/ld.so ./libc.so -./libc.so: (p) CPU ISA level is lower than required: needed: 7; got: 3 - -Instead, we require full ISA support for x86-64 level marker and disable -x86-64 level marker for -march=sandybridge which enables ISAs between v2 -and v3. - -Upstream-Status: Submitted [https://sourceware.org/pipermail/libc-alpha/2021-February/122297.html] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - - sysdeps/x86/configure | 7 ++++++- - sysdeps/x86/configure.ac | 2 +- - sysdeps/x86/isa-level.c | 21 ++++++++++++++++++++- - 3 files changed, 27 insertions(+), 3 deletions(-) - -diff --git a/sysdeps/x86/configure b/sysdeps/x86/configure -index 5e32dc62b3..5b20646843 100644 ---- a/sysdeps/x86/configure -+++ b/sysdeps/x86/configure -@@ -133,7 +133,12 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -nostartfiles -nostdlib -r -o conftest c - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - count=`LC_ALL=C $READELF -n conftest | grep NT_GNU_PROPERTY_TYPE_0 | wc -l` -- if test "$count" = 1; then -+ if test "$count" = 1 && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -DINCLUDE_X86_ISA_LEVEL -S -o conftest.s $srcdir/sysdeps/x86/isa-level.c' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then - libc_cv_include_x86_isa_level=yes - fi - fi -diff --git a/sysdeps/x86/configure.ac b/sysdeps/x86/configure.ac -index f94088f377..54ecd33d2c 100644 ---- a/sysdeps/x86/configure.ac -+++ b/sysdeps/x86/configure.ac -@@ -100,7 +100,7 @@ EOF - libc_cv_include_x86_isa_level=no - if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -nostartfiles -nostdlib -r -o conftest conftest1.S conftest2.S); then - count=`LC_ALL=C $READELF -n conftest | grep NT_GNU_PROPERTY_TYPE_0 | wc -l` -- if test "$count" = 1; then -+ if test "$count" = 1 && AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -DINCLUDE_X86_ISA_LEVEL -S -o conftest.s $srcdir/sysdeps/x86/isa-level.c); then - libc_cv_include_x86_isa_level=yes - fi - fi -diff --git a/sysdeps/x86/isa-level.c b/sysdeps/x86/isa-level.c -index aaf524cb56..7f83449061 100644 ---- a/sysdeps/x86/isa-level.c -+++ b/sysdeps/x86/isa-level.c -@@ -25,12 +25,17 @@ - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - --#include <elf.h> -+#ifdef _LIBC -+# include <elf.h> -+#endif - - /* ELF program property for x86 ISA level. */ - #ifdef INCLUDE_X86_ISA_LEVEL - # if defined __x86_64__ || defined __FXSR__ || !defined _SOFT_FLOAT \ - || defined __MMX__ || defined __SSE__ || defined __SSE2__ -+# if !defined __SSE__ || !defined __SSE2__ -+# error "Missing ISAs for x86-64 ISA level baseline" -+# endif - # define ISA_BASELINE GNU_PROPERTY_X86_ISA_1_BASELINE - # else - # define ISA_BASELINE 0 -@@ -40,6 +45,11 @@ - || (defined __x86_64__ && defined __LAHF_SAHF__) \ - || defined __POPCNT__ || defined __SSE3__ \ - || defined __SSSE3__ || defined __SSE4_1__ || defined __SSE4_2__ -+# if !defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 \ -+ || !defined __POPCNT__ || !defined __SSE3__ \ -+ || !defined __SSSE3__ || !defined __SSE4_1__ || !defined __SSE4_2__ -+# error "Missing ISAs for x86-64 ISA level v2" -+# endif - # define ISA_V2 GNU_PROPERTY_X86_ISA_1_V2 - # else - # define ISA_V2 0 -@@ -48,6 +58,10 @@ - # if defined __AVX__ || defined __AVX2__ || defined __F16C__ \ - || defined __FMA__ || defined __LZCNT__ || defined __MOVBE__ \ - || defined __XSAVE__ -+# if !defined __AVX__ || !defined __AVX2__ || !defined __F16C__ \ -+ || !defined __FMA__ || !defined __LZCNT__ -+# error "Missing ISAs for x86-64 ISA level v3" -+# endif - # define ISA_V3 GNU_PROPERTY_X86_ISA_1_V3 - # else - # define ISA_V3 0 -@@ -55,6 +69,11 @@ - - # if defined __AVX512F__ || defined __AVX512BW__ || defined __AVX512CD__ \ - || defined __AVX512DQ__ || defined __AVX512VL__ -+# if !defined __AVX512F__ || !defined __AVX512BW__ \ -+ || !defined __AVX512CD__ || !defined __AVX512DQ__ \ -+ || !defined __AVX512VL__ -+# error "Missing ISAs for x86-64 ISA level v4" -+# endif - # define ISA_V4 GNU_PROPERTY_X86_ISA_1_V4 - # else - # define ISA_V4 0 diff --git a/poky/meta/recipes-core/glibc/glibc/0032-string-Work-around-GCC-PR-98512-in-rawmemchr.patch b/poky/meta/recipes-core/glibc/glibc/0032-string-Work-around-GCC-PR-98512-in-rawmemchr.patch deleted file mode 100644 index e904b28a0..000000000 --- a/poky/meta/recipes-core/glibc/glibc/0032-string-Work-around-GCC-PR-98512-in-rawmemchr.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 044e603b698093cf48f6e6229e0b66acf05227e4 Mon Sep 17 00:00:00 2001 -From: Florian Weimer <fweimer@redhat.com> -Date: Fri, 19 Feb 2021 13:29:00 +0100 -Subject: [PATCH] string: Work around GCC PR 98512 in rawmemchr - -Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=044e603b698093cf48f6e6229e0b66acf05227e4] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - string/rawmemchr.c | 26 +++++++++++++++----------- - 1 file changed, 15 insertions(+), 11 deletions(-) - -diff --git a/string/rawmemchr.c b/string/rawmemchr.c -index 59bbeeaa42..b8523118e5 100644 ---- a/string/rawmemchr.c -+++ b/string/rawmemchr.c -@@ -22,24 +22,28 @@ - # define RAWMEMCHR __rawmemchr - #endif - --/* Find the first occurrence of C in S. */ --void * --RAWMEMCHR (const void *s, int c) --{ -- DIAG_PUSH_NEEDS_COMMENT; -+/* The pragmata should be nested inside RAWMEMCHR below, but that -+ triggers GCC PR 98512. */ -+DIAG_PUSH_NEEDS_COMMENT; - #if __GNUC_PREREQ (7, 0) -- /* GCC 8 warns about the size passed to memchr being larger than -- PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */ -- DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow="); -+/* GCC 8 warns about the size passed to memchr being larger than -+ PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */ -+DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow="); - #endif - #if __GNUC_PREREQ (11, 0) -- /* Likewise GCC 11, with a different warning option. */ -- DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread"); -+/* Likewise GCC 11, with a different warning option. */ -+DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread"); - #endif -+ -+/* Find the first occurrence of C in S. */ -+void * -+RAWMEMCHR (const void *s, int c) -+{ - if (c != '\0') - return memchr (s, c, (size_t)-1); -- DIAG_POP_NEEDS_COMMENT; - return (char *)s + strlen (s); - } - libc_hidden_def (__rawmemchr) - weak_alias (__rawmemchr, rawmemchr) -+ -+DIAG_POP_NEEDS_COMMENT; --- -2.30.1 - diff --git a/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch b/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch deleted file mode 100644 index 3a004e227..000000000 --- a/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 750b00a1ddae220403fd892a6fd4e0791ffd154a Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" <hjl.tools@gmail.com> -Date: Fri, 18 Sep 2020 07:55:14 -0700 -Subject: [PATCH] x86: Handle _SC_LEVEL1_ICACHE_LINESIZE [BZ #27444] - - x86: Move x86 processor cache info to cpu_features - -missed _SC_LEVEL1_ICACHE_LINESIZE. - -1. Add level1_icache_linesize to struct cpu_features. -2. Initialize level1_icache_linesize by calling handle_intel, -handle_zhaoxin and handle_amd with _SC_LEVEL1_ICACHE_LINESIZE. -3. Return level1_icache_linesize for _SC_LEVEL1_ICACHE_LINESIZE. - -Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27444] -Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com> ---- - sysdeps/x86/Makefile | 8 +++ - sysdeps/x86/cacheinfo.c | 3 + - sysdeps/x86/dl-cacheinfo.h | 6 ++ - sysdeps/x86/include/cpu-features.h | 2 + - .../x86/tst-sysconf-cache-linesize-static.c | 1 + - sysdeps/x86/tst-sysconf-cache-linesize.c | 57 +++++++++++++++++++ - 6 files changed, 77 insertions(+) - create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize-static.c - create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize.c - -diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile -index dd82674342..d231263051 100644 ---- a/sysdeps/x86/Makefile -+++ b/sysdeps/x86/Makefile -@@ -208,3 +208,11 @@ $(objpfx)check-cet.out: $(..)sysdeps/x86/check-cet.awk \ - generated += check-cet.out - endif - endif -+ -+ifeq ($(subdir),posix) -+tests += \ -+ tst-sysconf-cache-linesize \ -+ tst-sysconf-cache-linesize-static -+tests-static += \ -+ tst-sysconf-cache-linesize-static -+endif -diff --git a/sysdeps/x86/cacheinfo.c b/sysdeps/x86/cacheinfo.c -index 7b8df45e3b..5ea4723ca6 100644 ---- a/sysdeps/x86/cacheinfo.c -+++ b/sysdeps/x86/cacheinfo.c -@@ -32,6 +32,9 @@ __cache_sysconf (int name) - case _SC_LEVEL1_ICACHE_SIZE: - return cpu_features->level1_icache_size; - -+ case _SC_LEVEL1_ICACHE_LINESIZE: -+ return cpu_features->level1_icache_linesize; -+ - case _SC_LEVEL1_DCACHE_SIZE: - return cpu_features->level1_dcache_size; - -diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h -index a31fa0783a..7cd00b92f1 100644 ---- a/sysdeps/x86/dl-cacheinfo.h -+++ b/sysdeps/x86/dl-cacheinfo.h -@@ -707,6 +707,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - long int core; - unsigned int threads = 0; - unsigned long int level1_icache_size = -1; -+ unsigned long int level1_icache_linesize = -1; - unsigned long int level1_dcache_size = -1; - unsigned long int level1_dcache_assoc = -1; - unsigned long int level1_dcache_linesize = -1; -@@ -726,6 +727,8 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - - level1_icache_size - = handle_intel (_SC_LEVEL1_ICACHE_SIZE, cpu_features); -+ level1_icache_linesize -+ = handle_intel (_SC_LEVEL1_ICACHE_LINESIZE, cpu_features); - level1_dcache_size = data; - level1_dcache_assoc - = handle_intel (_SC_LEVEL1_DCACHE_ASSOC, cpu_features); -@@ -753,6 +756,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - shared = handle_zhaoxin (_SC_LEVEL3_CACHE_SIZE); - - level1_icache_size = handle_zhaoxin (_SC_LEVEL1_ICACHE_SIZE); -+ level1_icache_linesize = handle_zhaoxin (_SC_LEVEL1_ICACHE_LINESIZE); - level1_dcache_size = data; - level1_dcache_assoc = handle_zhaoxin (_SC_LEVEL1_DCACHE_ASSOC); - level1_dcache_linesize = handle_zhaoxin (_SC_LEVEL1_DCACHE_LINESIZE); -@@ -772,6 +776,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - shared = handle_amd (_SC_LEVEL3_CACHE_SIZE); - - level1_icache_size = handle_amd (_SC_LEVEL1_ICACHE_SIZE); -+ level1_icache_linesize = handle_amd (_SC_LEVEL1_ICACHE_LINESIZE); - level1_dcache_size = data; - level1_dcache_assoc = handle_amd (_SC_LEVEL1_DCACHE_ASSOC); - level1_dcache_linesize = handle_amd (_SC_LEVEL1_DCACHE_LINESIZE); -@@ -833,6 +838,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - } - - cpu_features->level1_icache_size = level1_icache_size; -+ cpu_features->level1_icache_linesize = level1_icache_linesize; - cpu_features->level1_dcache_size = level1_dcache_size; - cpu_features->level1_dcache_assoc = level1_dcache_assoc; - cpu_features->level1_dcache_linesize = level1_dcache_linesize; -diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h -index 624736b40e..39a3f4f311 100644 ---- a/sysdeps/x86/include/cpu-features.h -+++ b/sysdeps/x86/include/cpu-features.h -@@ -874,6 +874,8 @@ struct cpu_features - unsigned long int rep_stosb_threshold; - /* _SC_LEVEL1_ICACHE_SIZE. */ - unsigned long int level1_icache_size; -+ /* _SC_LEVEL1_ICACHE_LINESIZE. */ -+ unsigned long int level1_icache_linesize; - /* _SC_LEVEL1_DCACHE_SIZE. */ - unsigned long int level1_dcache_size; - /* _SC_LEVEL1_DCACHE_ASSOC. */ -diff --git a/sysdeps/x86/tst-sysconf-cache-linesize-static.c b/sysdeps/x86/tst-sysconf-cache-linesize-static.c -new file mode 100644 -index 0000000000..152ae68821 ---- /dev/null -+++ b/sysdeps/x86/tst-sysconf-cache-linesize-static.c -@@ -0,0 +1 @@ -+#include "tst-sysconf-cache-linesize.c" -diff --git a/sysdeps/x86/tst-sysconf-cache-linesize.c b/sysdeps/x86/tst-sysconf-cache-linesize.c -new file mode 100644 -index 0000000000..642dbde5d2 ---- /dev/null -+++ b/sysdeps/x86/tst-sysconf-cache-linesize.c -@@ -0,0 +1,57 @@ -+/* Test system cache line sizes. -+ Copyright (C) 2021 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ <https://www.gnu.org/licenses/>. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <unistd.h> -+#include <array_length.h> -+ -+static struct -+{ -+ const char *name; -+ int _SC_val; -+} sc_options[] = -+ { -+#define N(name) { "_SC_"#name, _SC_##name } -+ N (LEVEL1_ICACHE_LINESIZE), -+ N (LEVEL1_DCACHE_LINESIZE), -+ N (LEVEL2_CACHE_LINESIZE) -+ }; -+ -+static int -+do_test (void) -+{ -+ int result = EXIT_SUCCESS; -+ -+ for (int i = 0; i < array_length (sc_options); ++i) -+ { -+ long int scret = sysconf (sc_options[i]._SC_val); -+ if (scret < 0) -+ { -+ printf ("sysconf (%s) returned < 0 (%ld)\n", -+ sc_options[i].name, scret); -+ result = EXIT_FAILURE; -+ } -+ else -+ printf ("sysconf (%s): %ld\n", sc_options[i].name, scret); -+ } -+ -+ return result; -+} -+ -+#include <support/test-driver.c> diff --git a/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch b/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch deleted file mode 100644 index 26c5c0d2a..000000000 --- a/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch +++ /dev/null @@ -1,51 +0,0 @@ -From dca565886b5e8bd7966e15f0ca42ee5cff686673 Mon Sep 17 00:00:00 2001 -From: DJ Delorie <dj@redhat.com> -Date: Thu, 25 Feb 2021 16:08:21 -0500 -Subject: [PATCH] nscd: Fix double free in netgroupcache [BZ #27462] - -In commit 745664bd798ec8fd50438605948eea594179fba1 a use-after-free -was fixed, but this led to an occasional double-free. This patch -tracks the "live" allocation better. - -Tested manually by a third party. - -Related: RHBZ 1927877 - -Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> -Reviewed-by: Carlos O'Donell <carlos@redhat.com> - -Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=dca565886b5e8bd7966e15f0ca42ee5cff686673] - -CVE: CVE-2021-27645 - -Reviewed-by: Carlos O'Donell <carlos@redhat.com> -Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com> ---- - nscd/netgroupcache.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index dba6ceec1b..ad2daddafd 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -248,7 +248,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - : NULL); - ndomain = (ndomain ? newbuf + ndomaindiff - : NULL); -- buffer = newbuf; -+ *tofreep = buffer = newbuf; - } - - nhost = memcpy (buffer + bufused, -@@ -319,7 +319,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE) - { - buflen *= 2; -- buffer = xrealloc (buffer, buflen); -+ *tofreep = buffer = xrealloc (buffer, buflen); - } - else if (status == NSS_STATUS_RETURN - || status == NSS_STATUS_NOTFOUND --- -2.27.0 - diff --git a/poky/meta/recipes-core/glibc/glibc/check-test-wrapper b/poky/meta/recipes-core/glibc/glibc/check-test-wrapper index f8e04e02d..6ec9b9b29 100644 --- a/poky/meta/recipes-core/glibc/glibc/check-test-wrapper +++ b/poky/meta/recipes-core/glibc/glibc/check-test-wrapper @@ -2,6 +2,7 @@ import sys import os import subprocess +import resource env = os.environ.copy() args = sys.argv[1:] @@ -44,6 +45,14 @@ if targettype == "user": qemuargs += ["-L", sysroot] qemuargs += ["-E", "LD_LIBRARY_PATH={}".format(":".join(libpaths))] command = qemuargs + args + + # We've seen qemu-arm using up all system memory for some glibc + # tests e.g. nptl/tst-pthread-timedlock-lockloop + # Cap at 8GB since no test should need more than that + # (5GB adds 7 failures for qemuarm glibc test run) + limit = 8*1024*1024*1024 + resource.setrlimit(resource.RLIMIT_AS, (limit, limit)) + elif targettype == "ssh": host = os.environ.get("SSH_HOST", None) user = os.environ.get("SSH_HOST_USER", None) diff --git a/poky/meta/recipes-core/glibc/glibc_2.33.bb b/poky/meta/recipes-core/glibc/glibc_2.33.bb index 5e0baa53e..caa2e2ae1 100644 --- a/poky/meta/recipes-core/glibc/glibc_2.33.bb +++ b/poky/meta/recipes-core/glibc/glibc_2.33.bb @@ -1,7 +1,20 @@ require glibc.inc require glibc-version.inc -CVE_CHECK_WHITELIST += "CVE-2020-10029" +CVE_CHECK_WHITELIST += "CVE-2020-10029 CVE-2021-27645" + +# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010022 +# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010023 +# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010024 +# Upstream glibc maintainers dispute there is any issue and have no plans to address it further. +# "this is being treated as a non-security bug and no real threat." +CVE_CHECK_WHITELIST += "CVE-2019-1010022 CVE-2019-1010023 CVE-2019-1010024" + +# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010025 +# Allows for ASLR bypass so can bypass some hardening, not an exploit in itself, may allow +# easier access for another. "ASLR bypass itself is not a vulnerability." +# Potential patch at https://sourceware.org/bugzilla/show_bug.cgi?id=22853 +CVE_CHECK_WHITELIST += "CVE-2019-1010025" DEPENDS += "gperf-native bison-native make-native" @@ -43,11 +56,6 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \ file://0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \ file://0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch \ file://0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch \ - file://0031-x86-Require-full-ISA-support-for-x86-64-level-marker.patch \ - file://0032-string-Work-around-GCC-PR-98512-in-rawmemchr.patch \ - file://0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch \ - file://CVE-2021-27645.patch \ - file://0001-nptl-Remove-private-futex-optimization-BZ-27304.patch \ " S = "${WORKDIR}/git" B = "${WORKDIR}/build-${TARGET_SYS}" @@ -85,6 +93,7 @@ EXTRA_OECONF_append_x86-64 = " --enable-cet" PACKAGECONFIG ??= "nscd" PACKAGECONFIG[nscd] = "--enable-nscd,--disable-nscd" +PACKAGECONFIG[memory-tagging] = "--enable-memory-tagging,--disable-memory-tagging" do_patch_append() { bb.build.exec_func('do_fix_readlib_c', d) diff --git a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb index 1aeb952db..32f8d16a4 100644 --- a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb +++ b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb @@ -24,7 +24,7 @@ IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx" inherit core-image setuptools3 -SRCREV ?= "42514ade8bdb9502f49a56752561f6c2e9f23348" +SRCREV ?= "b44849c32c87fbb8c5a465ecc29a6182e6781d78" SRC_URI = "git://git.yoctoproject.org/poky \ file://Yocto_Build_Appliance.vmx \ file://Yocto_Build_Appliance.vmxf \ diff --git a/poky/meta/recipes-sato/images/core-image-sato-sdk-ptest.bb b/poky/meta/recipes-core/images/core-image-ptest-all.bb index eea89a5d6..c1d6aa28a 100644 --- a/poky/meta/recipes-sato/images/core-image-sato-sdk-ptest.bb +++ b/poky/meta/recipes-core/images/core-image-ptest-all.bb @@ -1,15 +1,13 @@ inherit features_check REQUIRED_DISTRO_FEATURES = "ptest" -require core-image-sato-sdk.bb +require core-image-minimal.bb require conf/distro/include/ptest-packagelists.inc DESCRIPTION += "Also includes ptest packages." HOMEPAGE = "https://www.yoctoproject.org/" -PROVIDES += "core-image-sato-ptest" - -# Also include ptests which may not otherwise be included in a sato image +# Include the full set of ptests IMAGE_INSTALL += "${PTESTS_FAST} ${PTESTS_SLOW}" # This image is sufficiently large (~1.8GB) that we need to be careful that it fits in a live diff --git a/poky/meta/recipes-sato/images/core-image-sato-ptest-fast.bb b/poky/meta/recipes-core/images/core-image-ptest-fast.bb index d37ad00cf..40df274c4 100644 --- a/poky/meta/recipes-sato/images/core-image-sato-ptest-fast.bb +++ b/poky/meta/recipes-core/images/core-image-ptest-fast.bb @@ -1,9 +1,10 @@ inherit features_check REQUIRED_DISTRO_FEATURES = "ptest" -require core-image-sato-sdk.bb +require core-image-minimal.bb require conf/distro/include/ptest-packagelists.inc +# Include only fast (< 30 sec) ptests IMAGE_INSTALL += "${PTESTS_FAST}" DESCRIPTION += "Also includes ptest packages with fast execution times to allow for more automated QA." diff --git a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs index 10b958317..e0efbe6eb 100644 --- a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs +++ b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs @@ -56,8 +56,8 @@ rootfs_run() { # It is unlikely to change, but keep trying anyway. # Perhaps we pick a different device next time. umount $ROOTFS_DIR - fi fi + fi fi debug "Sleeping for $delay second(s) to wait root to settle..." sleep $delay diff --git a/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch b/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch deleted file mode 100644 index 4e6b42710..000000000 --- a/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch +++ /dev/null @@ -1,32 +0,0 @@ -From b28bb856ccebe8fded51d11362bf5920699eed59 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 18 Mar 2021 10:52:13 +0000 -Subject: [PATCH] configure.ac: do not use compute-symver-floor - -This script (newly introduced in 4.4.18) sporadically fails, without -failing configure(), which has been reported at -https://github.com/besser82/libxcrypt/issues/123 - -Upstream-Status: Inappropriate -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - configure.ac | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 45b91b4..f3ba945 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -426,11 +426,7 @@ if test x$enable_shared != xyes; then enable_obsolete_api=0; fi - # need to be binary backward compatible with. - if test $enable_obsolete_api = 1; then - AC_MSG_CHECKING([minimum symbol version to use for compatibility symbols]) -- SYMVER_FLOOR=$( -- $PERL ${srcdir}/build-aux/compute-symver-floor \ -- ${srcdir}/lib/libcrypt.minver $host_os $host_cpu \ -- 2>&AS_MESSAGE_LOG_FD -- ) -+ SYMVER_FLOOR=GLIBC_2.0 - AC_MSG_RESULT([$SYMVER_FLOOR]) - case "$SYMVER_FLOOR" in - ERROR) diff --git a/poky/meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch b/poky/meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch new file mode 100644 index 000000000..0772998c7 --- /dev/null +++ b/poky/meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch @@ -0,0 +1,33 @@ +From fd9a46695594c3cd836ecb7d959f03f605e69a2f Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Fri, 30 Apr 2021 10:35:02 +0100 +Subject: [PATCH] libxcrypt: Update to 4.4.19 release and fix symbol version + +If you pass CFLAGS with a leading space, " " gets passed to popen and convinces +gcc to try and open a file called " ". This results in a confusing error message +like: + +x86_64-pokysdk-linux-gcc: error: : No such file or directory + +Avoid this by stripping empty elements out of CFLAGS. + +Upstream-Status: Submitted [https://github.com/besser82/libxcrypt/pull/126] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +--- + build-aux/compute-symver-floor | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/build-aux/compute-symver-floor b/build-aux/compute-symver-floor +index 4ec82e1..8117342 100644 +--- a/build-aux/compute-symver-floor ++++ b/build-aux/compute-symver-floor +@@ -36,6 +36,8 @@ sub preprocessor_check { + die "C compiler not available\n" unless @CC; + + @CFLAGS = sh_split($ENV{CFLAGS} // q{}); ++ # Remove empty elements, particularly leading ones which cause issues with popen below ++ @CFLAGS = grep {$_} @CFLAGS; + + # Remove empty elements, particularly leading ones which + # cause issues with popen below. diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.18.bb b/poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.22.bb index ba74eb1f9..ba74eb1f9 100644 --- a/poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.18.bb +++ b/poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.22.bb diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc index b5ca863d5..e4505a666 100644 --- a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc +++ b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc @@ -3,18 +3,18 @@ DESCRIPTION = "Forked code from glibc libary to extract only crypto part." HOMEPAGE = "https://github.com/besser82/libxcrypt" SECTION = "libs" LICENSE = "LGPLv2.1" -LIC_FILES_CHKSUM = "file://LICENSING;md5=bd5d9777dfe7076c4f2928f12fed226a \ +LIC_FILES_CHKSUM = "file://LICENSING;md5=afed27a72ae2a8075978299eebaa1f5d \ file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \ " inherit autotools pkgconfig -SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH} \ - file://0001-configure.ac-do-not-use-compute-symver-floor.patch \ - " -SRCREV = "94d84f92ca123d851586016c4678eb1f21c19029" +SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}" +SRCREV = "3df9620d08db207367c0c5152148665b5ce422e1" SRCBRANCH ?= "develop" +SRC_URI += "file://fix_cflags_handling.patch" + PROVIDES = "virtual/crypt" FILES_${PN} = "${libdir}/libcrypt*.so.* \ diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.18.bb b/poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.22.bb index 79dba2f6d..79dba2f6d 100644 --- a/poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.18.bb +++ b/poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.22.bb diff --git a/poky/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch b/poky/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch index 5e9a0a506..6d9ede619 100644 --- a/poky/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch +++ b/poky/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch @@ -1,4 +1,4 @@ -From 2b5fb416aa275fd2a17a0139a2f783998bcb42cc Mon Sep 17 00:00:00 2001 +From ea1993d1d9a18c5e61b9cb271892b0a48f508d32 Mon Sep 17 00:00:00 2001 From: Peter Kjellerstedt <pkj@axis.com> Date: Fri, 9 Jun 2017 17:50:46 +0200 Subject: [PATCH] Make ptest run the python tests if python is enabled @@ -8,16 +8,14 @@ be due to the fact that the tests are forced to run with Python 3. Upstream-Status: Inappropriate [OE specific] Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> - --- - Makefile.am | 2 +- - python/Makefile.am | 9 +++++++++ - python/tests/Makefile.am | 10 ++++++++++ - python/tests/tstLastError.py | 2 +- - 4 files changed, 21 insertions(+), 2 deletions(-) + Makefile.am | 2 +- + python/Makefile.am | 9 +++++++++ + python/tests/Makefile.am | 10 ++++++++++ + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am -index ae62274..bd1e425 100644 +index b428452b..dc18d6dd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -203,9 +203,9 @@ install-ptest: @@ -32,7 +30,7 @@ index ae62274..bd1e425 100644 runtests: runtest$(EXEEXT) testrecurse$(EXEEXT) testapi$(EXEEXT) \ testchar$(EXEEXT) testdict$(EXEEXT) runxmlconf$(EXEEXT) diff --git a/python/Makefile.am b/python/Makefile.am -index 34aed96..ba3ec6a 100644 +index 34aed96c..ba3ec6a4 100644 --- a/python/Makefile.am +++ b/python/Makefile.am @@ -48,7 +48,16 @@ GENERATED = libxml2class.py libxml2class.txt $(BUILT_SOURCES) @@ -53,7 +51,7 @@ index 34aed96..ba3ec6a 100644 tests test: all cd tests && $(MAKE) tests diff --git a/python/tests/Makefile.am b/python/tests/Makefile.am -index 227e24d..021bb29 100644 +index 227e24df..3568c2d2 100644 --- a/python/tests/Makefile.am +++ b/python/tests/Makefile.am @@ -59,6 +59,11 @@ XMLS= \ @@ -83,16 +81,6 @@ index 227e24d..021bb29 100644 + tests: endif -diff --git a/python/tests/tstLastError.py b/python/tests/tstLastError.py -index 81d0acc..162c8db 100755 ---- a/python/tests/tstLastError.py -+++ b/python/tests/tstLastError.py -@@ -25,7 +25,7 @@ class TestCase(unittest.TestCase): - when the exception is raised, check the libxml2.lastError for - expected values.""" - # disable the default error handler -- libxml2.registerErrorHandler(None,None) -+ libxml2.registerErrorHandler(lambda ctx,str: None,None) - try: - f(*args) - except exc: +-- +2.25.1 + diff --git a/poky/meta/recipes-core/libxml/libxml2/CVE-2019-20388.patch b/poky/meta/recipes-core/libxml/libxml2/CVE-2019-20388.patch deleted file mode 100644 index 88eb65a6a..000000000 --- a/poky/meta/recipes-core/libxml/libxml2/CVE-2019-20388.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 7ffcd44d7e6c46704f8af0321d9314cd26e0e18a Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie <xiezhipeng1@huawei.com> -Date: Tue, 20 Aug 2019 16:33:06 +0800 -Subject: [PATCH] Fix memory leak in xmlSchemaValidateStream - -When ctxt->schema is NULL, xmlSchemaSAXPlug->xmlSchemaPreRun -alloc a new schema for ctxt->schema and set vctxt->xsiAssemble -to 1. Then xmlSchemaVStart->xmlSchemaPreRun initialize -vctxt->xsiAssemble to 0 again which cause the alloced schema -can not be freed anymore. - -Found with libFuzzer. - -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/commit/7ffcd44d7e6c46704f8af0321d9314cd26e0e18a] -CVE: CVE-2019-20388 - -Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com> -Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> ---- - xmlschemas.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/xmlschemas.c b/xmlschemas.c -index 301c8449..39d92182 100644 ---- a/xmlschemas.c -+++ b/xmlschemas.c -@@ -28090,7 +28090,6 @@ xmlSchemaPreRun(xmlSchemaValidCtxtPtr vctxt) { - vctxt->nberrors = 0; - vctxt->depth = -1; - vctxt->skipDepth = -1; -- vctxt->xsiAssemble = 0; - vctxt->hasKeyrefs = 0; - #ifdef ENABLE_IDC_NODE_TABLES_TEST - vctxt->createIDCNodeTables = 1; --- -2.24.1 - diff --git a/poky/meta/recipes-core/libxml/libxml2/CVE-2020-24977.patch b/poky/meta/recipes-core/libxml/libxml2/CVE-2020-24977.patch deleted file mode 100644 index 822434666..000000000 --- a/poky/meta/recipes-core/libxml/libxml2/CVE-2020-24977.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 50f06b3efb638efb0abd95dc62dca05ae67882c2 Mon Sep 17 00:00:00 2001 -From: Nick Wellnhofer <wellnhofer@aevum.de> -Date: Fri, 7 Aug 2020 21:54:27 +0200 -Subject: [PATCH] Fix out-of-bounds read with 'xmllint --htmlout' - -Make sure that truncated UTF-8 sequences don't cause an out-of-bounds -array access. - -Thanks to @SuhwanSong and the Agency for Defense Development (ADD) for -the report. - -Fixes #178. - -CVE: CVE-2020-24977 -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/50f06b3efb638efb0abd95dc62dca05ae67882c2] - -Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> ---- - xmllint.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/xmllint.c b/xmllint.c -index f6a8e463..c647486f 100644 ---- a/xmllint.c -+++ b/xmllint.c -@@ -528,6 +528,12 @@ static void - xmlHTMLEncodeSend(void) { - char *result; - -+ /* -+ * xmlEncodeEntitiesReentrant assumes valid UTF-8, but the buffer might -+ * end with a truncated UTF-8 sequence. This is a hack to at least avoid -+ * an out-of-bounds read. -+ */ -+ memset(&buffer[sizeof(buffer)-4], 0, 4); - result = (char *) xmlEncodeEntitiesReentrant(NULL, BAD_CAST buffer); - if (result) { - xmlGenericError(xmlGenericErrorContext, "%s", result); --- -2.17.1 - diff --git a/poky/meta/recipes-core/libxml/libxml2/CVE-2020-7595.patch b/poky/meta/recipes-core/libxml/libxml2/CVE-2020-7595.patch deleted file mode 100644 index facfefd36..000000000 --- a/poky/meta/recipes-core/libxml/libxml2/CVE-2020-7595.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0e1a49c8907645d2e155f0d89d4d9895ac5112b5 Mon Sep 17 00:00:00 2001 -From: Zhipeng Xie <xiezhipeng1@huawei.com> -Date: Thu, 12 Dec 2019 17:30:55 +0800 -Subject: [PATCH] Fix infinite loop in xmlStringLenDecodeEntities - -When ctxt->instate == XML_PARSER_EOF,xmlParseStringEntityRef -return NULL which cause a infinite loop in xmlStringLenDecodeEntities - -Found with libFuzzer. - -Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com> - -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/commit/0e1a49c89076] -CVE: CVE-2020-7595 -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - parser.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/parser.c b/parser.c -index d1c31963..a34bb6cd 100644 ---- a/parser.c -+++ b/parser.c -@@ -2646,7 +2646,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len, - else - c = 0; - while ((c != 0) && (c != end) && /* non input consuming loop */ -- (c != end2) && (c != end3)) { -+ (c != end2) && (c != end3) && -+ (ctxt->instate != XML_PARSER_EOF)) { - - if (c == 0) break; - if ((c == '&') && (str[1] == '#')) { --- -2.24.1 - diff --git a/poky/meta/recipes-core/libxml/libxml2/fix-python39.patch b/poky/meta/recipes-core/libxml/libxml2/fix-python39.patch deleted file mode 100644 index 32590f9dd..000000000 --- a/poky/meta/recipes-core/libxml/libxml2/fix-python39.patch +++ /dev/null @@ -1,94 +0,0 @@ -From e4fb36841800038c289997432ca547c9bfef9db1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz> -Date: Fri, 28 Feb 2020 12:48:14 +0100 -Subject: [PATCH] Parenthesize Py<type>_Check() in ifs - -In C, if expressions should be parenthesized. -PyLong_Check, PyUnicode_Check etc. happened to expand to a parenthesized -expression before, but that's not API to rely on. - -Since Python 3.9.0a4 it needs to be parenthesized explicitly. - -Fixes https://gitlab.gnome.org/GNOME/libxml2/issues/149 -Upstream-Status: Backport -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - python/libxml.c | 4 ++-- - python/types.c | 12 ++++++------ - 2 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/python/libxml.c b/python/libxml.c -index bc676c4e0..81e709f34 100644 ---- a/python/libxml.c -+++ b/python/libxml.c -@@ -294,7 +294,7 @@ xmlPythonFileReadRaw (void * context, char * buffer, int len) { - lenread = PyBytes_Size(ret); - data = PyBytes_AsString(ret); - #ifdef PyUnicode_Check -- } else if PyUnicode_Check (ret) { -+ } else if (PyUnicode_Check (ret)) { - #if PY_VERSION_HEX >= 0x03030000 - Py_ssize_t size; - const char *tmp; -@@ -359,7 +359,7 @@ xmlPythonFileRead (void * context, char * buffer, int len) { - lenread = PyBytes_Size(ret); - data = PyBytes_AsString(ret); - #ifdef PyUnicode_Check -- } else if PyUnicode_Check (ret) { -+ } else if (PyUnicode_Check (ret)) { - #if PY_VERSION_HEX >= 0x03030000 - Py_ssize_t size; - const char *tmp; -diff --git a/python/types.c b/python/types.c -index c2bafeb19..ed284ec74 100644 ---- a/python/types.c -+++ b/python/types.c -@@ -602,16 +602,16 @@ libxml_xmlXPathObjectPtrConvert(PyObject *obj) - if (obj == NULL) { - return (NULL); - } -- if PyFloat_Check (obj) { -+ if (PyFloat_Check (obj)) { - ret = xmlXPathNewFloat((double) PyFloat_AS_DOUBLE(obj)); -- } else if PyLong_Check(obj) { -+ } else if (PyLong_Check(obj)) { - #ifdef PyLong_AS_LONG - ret = xmlXPathNewFloat((double) PyLong_AS_LONG(obj)); - #else - ret = xmlXPathNewFloat((double) PyInt_AS_LONG(obj)); - #endif - #ifdef PyBool_Check -- } else if PyBool_Check (obj) { -+ } else if (PyBool_Check (obj)) { - - if (obj == Py_True) { - ret = xmlXPathNewBoolean(1); -@@ -620,14 +620,14 @@ libxml_xmlXPathObjectPtrConvert(PyObject *obj) - ret = xmlXPathNewBoolean(0); - } - #endif -- } else if PyBytes_Check (obj) { -+ } else if (PyBytes_Check (obj)) { - xmlChar *str; - - str = xmlStrndup((const xmlChar *) PyBytes_AS_STRING(obj), - PyBytes_GET_SIZE(obj)); - ret = xmlXPathWrapString(str); - #ifdef PyUnicode_Check -- } else if PyUnicode_Check (obj) { -+ } else if (PyUnicode_Check (obj)) { - #if PY_VERSION_HEX >= 0x03030000 - xmlChar *str; - const char *tmp; -@@ -650,7 +650,7 @@ libxml_xmlXPathObjectPtrConvert(PyObject *obj) - ret = xmlXPathWrapString(str); - #endif - #endif -- } else if PyList_Check (obj) { -+ } else if (PyList_Check (obj)) { - int i; - PyObject *node; - xmlNodePtr cur; --- -GitLab - diff --git a/poky/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch b/poky/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch index e6998f6e6..90fa19377 100644 --- a/poky/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch +++ b/poky/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch @@ -1,7 +1,8 @@ -From 43edc9a445ed66cceb7533eadeef242940b4592c Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Sat, 11 May 2019 20:37:12 +0800 +From f57da62218cf72c1342da82abafdac6b0a2e4997 Mon Sep 17 00:00:00 2001 +From: Tony Tascioglu <tony.tascioglu@windriver.com> +Date: Fri, 14 May 2021 11:50:35 -0400 Subject: [PATCH] AM_PATH_XML2 uses xml-config which we disable through + binconfig-disabled.bbclass, so port it to use pkg-config instead. Upstream-Status: Pending @@ -9,16 +10,22 @@ Signed-off-by: Ross Burton <ross.burton@intel.com> Rebase to 2.9.9 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> + +Updated to apply cleanly to v2.9.12 + +Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com> --- - libxml.m4 | 186 ++------------------------------------------------------------ - 1 file changed, 5 insertions(+), 181 deletions(-) + libxml.m4 | 190 ++---------------------------------------------------- + 1 file changed, 5 insertions(+), 185 deletions(-) diff --git a/libxml.m4 b/libxml.m4 -index 2d7a6f5..1c53585 100644 +index 09de9fe2..1c535853 100644 --- a/libxml.m4 +++ b/libxml.m4 -@@ -1,188 +1,12 @@ +@@ -1,192 +1,12 @@ -# Configure paths for LIBXML2 +-# Simon Josefsson 2020-02-12 +-# Fix autoconf 2.70+ warnings -# Mike Hommey 2004-06-19 -# use CPPFLAGS instead of CFLAGS -# Toshio Kuratomi 2001-04-21 @@ -78,7 +85,8 @@ index 2d7a6f5..1c53585 100644 -dnl (Also sanity checks the results of xml2-config to some extent) -dnl - rm -f conf.xmltest -- AC_TRY_RUN([ +- AC_RUN_IFELSE( +- [AC_LANG_SOURCE([[ -#include <stdlib.h> -#include <stdio.h> -#include <string.h> @@ -148,12 +156,12 @@ index 2d7a6f5..1c53585 100644 - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of LIBXML, but you can also set the XML2_CONFIG environment to point to the\n"); - printf("*** correct copy of xml2-config. (In this case, you will have to\n"); -- printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); +- printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - return 1; -} --],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) +-]])],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CPPFLAGS="$ac_save_CPPFLAGS" - LIBS="$ac_save_LIBS" - fi @@ -178,10 +186,11 @@ index 2d7a6f5..1c53585 100644 - echo "*** Could not run libxml test program, checking why..." - CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS" - LIBS="$LIBS $XML_LIBS" -- AC_TRY_LINK([ +- AC_LINK_IFELSE( +- [AC_LANG_PROGRAM([[ -#include <libxml/xmlversion.h> -#include <stdio.h> --], [ LIBXML_TEST_VERSION; return 0;], +-]], [[ LIBXML_TEST_VERSION; return 0;]])], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding LIBXML or finding the wrong" - echo "*** version of LIBXML. If it is not finding LIBXML, you'll need to set your" diff --git a/poky/meta/recipes-core/libxml/libxml2/remove-fuzz-from-ptests.patch b/poky/meta/recipes-core/libxml/libxml2/remove-fuzz-from-ptests.patch new file mode 100644 index 000000000..e80c46054 --- /dev/null +++ b/poky/meta/recipes-core/libxml/libxml2/remove-fuzz-from-ptests.patch @@ -0,0 +1,43 @@ +From e49a0d4a8f3f725d6f683854e1cad36a3cd02962 Mon Sep 17 00:00:00 2001 +From: Tony Tascioglu <tony.tascioglu@windriver.com> +Date: Wed, 19 May 2021 19:43:56 -0400 +Subject: [PATCH] Remove fuzz testing from executing with ptests. + +Upstream version 2.9.12 introduced new fuzz-testing and a corresponding +folder fuzz. These tests are not required for ptests of this package. + +This patch removes the fuzz testing targets from the Makefile. +Otherwise, running the ptests will fail due to the invalid directory. + +Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com> +--- + Makefile.am | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index a9284b95..3d7b344d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,9 +2,9 @@ + + ACLOCAL_AMFLAGS = -I m4 + +-SUBDIRS = include . doc example fuzz xstc $(PYTHON_SUBDIR) ++SUBDIRS = include . doc example xstc $(PYTHON_SUBDIR) + +-DIST_SUBDIRS = include . doc example fuzz python xstc ++DIST_SUBDIRS = include . doc example python xstc + + AM_CPPFLAGS = -I$(top_builddir)/include -I$(srcdir)/include + +@@ -210,7 +210,6 @@ runtests: runtest$(EXEEXT) testrecurse$(EXEEXT) testapi$(EXEEXT) \ + $(CHECKER) ./runxmlconf$(EXEEXT) + @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; \ + $(MAKE) tests ; fi) +- @cd fuzz; $(MAKE) tests + + check: all runtests + +-- +2.25.1 + diff --git a/poky/meta/recipes-core/libxml/libxml2/runtest.patch b/poky/meta/recipes-core/libxml/libxml2/runtest.patch index 0dbb353c0..c7a90cd3d 100644 --- a/poky/meta/recipes-core/libxml/libxml2/runtest.patch +++ b/poky/meta/recipes-core/libxml/libxml2/runtest.patch @@ -1,28 +1,33 @@ -Add 'install-ptest' rule. Print a standard result line for -each test. +From 6172ccd1e74bc181f5298f19e240234e12876abe Mon Sep 17 00:00:00 2001 +From: Tony Tascioglu <tony.tascioglu@windriver.com> +Date: Tue, 11 May 2021 11:57:46 -0400 +Subject: [PATCH] Add 'install-ptest' rule. + +Print a standard result line for each test. Signed-off-by: Mihaela Sendrea <mihaela.sendrea@enea.com> Signed-off-by: Andrej Valek <andrej.valek@siemens.com> -Upstream-Status: Backport +Upstream-Status: Pending Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com> --- - Makefile.am | 9 ++++ + Makefile.am | 9 +++ runsuite.c | 1 + runtest.c | 2 + runxmlconf.c | 1 + - testapi.c | 122 ++++++++++++++++++++++++++++++--------------- - testchar.c | 156 +++++++++++++++++++++++++++++++++++++++++----------------- + testapi.c | 122 ++++++++++++++++++++++++++------------- + testchar.c | 156 +++++++++++++++++++++++++++++++++++--------------- testdict.c | 1 + testlimits.c | 1 + testrecurse.c | 2 + 9 files changed, 210 insertions(+), 85 deletions(-) diff --git a/Makefile.am b/Makefile.am -index 9c630be..7cfd04b 100644 +index 05d1671f..ae622745 100644 --- a/Makefile.am +++ b/Makefile.am -@@ -202,6 +202,15 @@ runxmlconf_LDADD= $(LDADDS) +@@ -198,6 +198,15 @@ runxmlconf_LDADD= $(LDADDS) #testOOM_DEPENDENCIES = $(DEPS) #testOOM_LDADD= $(LDADDS) @@ -39,10 +44,10 @@ index 9c630be..7cfd04b 100644 testchar$(EXEEXT) testdict$(EXEEXT) runxmlconf$(EXEEXT) [ -d test ] || $(LN_S) $(srcdir)/test . diff --git a/runsuite.c b/runsuite.c -index aaab13e..9ba2c5d 100644 +index d24b5ec3..f7ff2521 100644 --- a/runsuite.c +++ b/runsuite.c -@@ -1162,6 +1162,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { +@@ -1147,6 +1147,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { if (logfile != NULL) fclose(logfile); @@ -51,10 +56,10 @@ index aaab13e..9ba2c5d 100644 } #else /* !SCHEMAS */ diff --git a/runtest.c b/runtest.c -index addda5c..8ba5d59 100644 +index ffa98d04..470f95cb 100644 --- a/runtest.c +++ b/runtest.c -@@ -4501,6 +4501,7 @@ launchTests(testDescPtr tst) { +@@ -4508,6 +4508,7 @@ launchTests(testDescPtr tst) { xmlCharEncCloseFunc(ebcdicHandler); xmlCharEncCloseFunc(eucJpHandler); @@ -62,7 +67,7 @@ index addda5c..8ba5d59 100644 return(err); } -@@ -4577,6 +4578,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { +@@ -4588,6 +4589,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { xmlCleanupParser(); xmlMemoryDump(); @@ -71,7 +76,7 @@ index addda5c..8ba5d59 100644 } diff --git a/runxmlconf.c b/runxmlconf.c -index cef20f4..4f291fb 100644 +index 70f61017..e882b3a1 100644 --- a/runxmlconf.c +++ b/runxmlconf.c @@ -595,6 +595,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { @@ -83,7 +88,7 @@ index cef20f4..4f291fb 100644 } diff --git a/testapi.c b/testapi.c -index 4a751e2..7ccc066 100644 +index ff8b470d..52b51d78 100644 --- a/testapi.c +++ b/testapi.c @@ -1246,49 +1246,91 @@ static int @@ -219,7 +224,7 @@ index 4a751e2..7ccc066 100644 } diff --git a/testchar.c b/testchar.c -index 0d08792..f555d3b 100644 +index 6866a175..7bce0132 100644 --- a/testchar.c +++ b/testchar.c @@ -23,7 +23,7 @@ static void errorHandler(void *unused, xmlErrorPtr err) { @@ -797,7 +802,7 @@ index 0d08792..f555d3b 100644 /* * Cleanup function for the XML library. diff --git a/testdict.c b/testdict.c -index 40bebd0..114b934 100644 +index 40bebd05..114b9347 100644 --- a/testdict.c +++ b/testdict.c @@ -440,5 +440,6 @@ int main(void) @@ -808,7 +813,7 @@ index 40bebd0..114b934 100644 return(ret); } diff --git a/testlimits.c b/testlimits.c -index 68c94db..1584434 100644 +index 059116a6..f0bee68d 100644 --- a/testlimits.c +++ b/testlimits.c @@ -1634,5 +1634,6 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { @@ -819,7 +824,7 @@ index 68c94db..1584434 100644 return(ret); } diff --git a/testrecurse.c b/testrecurse.c -index f95ae1c..74c8f8b 100644 +index 0cbe25a6..3ecadb40 100644 --- a/testrecurse.c +++ b/testrecurse.c @@ -892,6 +892,7 @@ launchTests(testDescPtr tst) { @@ -838,5 +843,5 @@ index f95ae1c..74c8f8b 100644 return(ret); } -- -2.7.4 +2.25.1 diff --git a/poky/meta/recipes-core/libxml/libxml2_2.9.10.bb b/poky/meta/recipes-core/libxml/libxml2_2.9.12.bb index 07ae68610..955d934d7 100644 --- a/poky/meta/recipes-core/libxml/libxml2_2.9.10.bb +++ b/poky/meta/recipes-core/libxml/libxml2_2.9.12.bb @@ -5,9 +5,9 @@ BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2" SECTION = "libs" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://Copyright;md5=2044417e2e5006b65a8b9067b683fcf1 \ - file://hash.c;beginline=6;endline=15;md5=96f7296605eae807670fb08947829969 \ - file://list.c;beginline=4;endline=13;md5=cdbfa3dee51c099edb04e39f762ee907 \ - file://trio.c;beginline=5;endline=14;md5=6c025753c86d958722ec76e94cae932e" + file://hash.c;beginline=6;endline=15;md5=e77f77b12cb69e203d8b4090a0eee879 \ + file://list.c;beginline=4;endline=13;md5=b9c25b021ccaf287e50060602d20f3a7 \ + file://trio.c;beginline=5;endline=14;md5=cd4f61e27f88c1d43df112966b1cd28f" DEPENDS = "zlib virtual/libiconv" @@ -20,15 +20,10 @@ SRC_URI = "http://www.xmlsoft.org/sources/libxml2-${PV}.tar.gz;name=libtar \ file://libxml-m4-use-pkgconfig.patch \ file://0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch \ file://fix-execution-of-ptests.patch \ - file://CVE-2020-7595.patch \ - file://CVE-2019-20388.patch \ - file://CVE-2020-24977.patch \ - file://fix-python39.patch \ + file://remove-fuzz-from-ptests.patch \ " -SRC_URI[libtar.md5sum] = "10942a1dc23137a8aa07f0639cbfece5" -SRC_URI[libtar.sha256sum] = "aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f" -SRC_URI[testtar.md5sum] = "ae3d1ebe000a3972afa104ca7f0e1b4a" +SRC_URI[libtar.sha256sum] = "c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92" SRC_URI[testtar.sha256sum] = "96151685cec997e1f9f3387e3626d61e6284d4d6e66e0e440c209286c03e9cc7" BINCONFIG = "${bindir}/xml2-config" @@ -43,7 +38,7 @@ inherit autotools pkgconfig binconfig-disabled ptest inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3native', '', d)} -RDEPENDS_${PN}-ptest += "make ${@bb.utils.contains('PACKAGECONFIG', 'python', 'libgcc python3-core python3-logging python3-shell python3-stringold python3-threading python3-unittest ${PN}-python', '', d)}" +RDEPENDS_${PN}-ptest += "bash make ${@bb.utils.contains('PACKAGECONFIG', 'python', 'libgcc python3-core python3-logging python3-shell python3-stringold python3-threading python3-unittest ${PN}-python', '', d)}" RDEPENDS_${PN}-python += "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3-core', '', d)}" diff --git a/poky/meta/recipes-core/meta/cve-update-db-native.bb b/poky/meta/recipes-core/meta/cve-update-db-native.bb index 25ec6bac7..e5822cee5 100644 --- a/poky/meta/recipes-core/meta/cve-update-db-native.bb +++ b/poky/meta/recipes-core/meta/cve-update-db-native.bb @@ -139,7 +139,12 @@ def parse_node_and_insert(c, node, cveId): for cpe in node.get('cpe_match', ()): if not cpe['vulnerable']: return - cpe23 = cpe['cpe23Uri'].split(':') + cpe23 = cpe.get('cpe23Uri') + if not cpe23: + return + cpe23 = cpe23.split(':') + if len(cpe23) < 6: + return vendor = cpe23[3] product = cpe23[4] version = cpe23[5] diff --git a/poky/meta/recipes-core/musl/gcompat_git.bb b/poky/meta/recipes-core/musl/gcompat_git.bb new file mode 100644 index 000000000..863ba8dbf --- /dev/null +++ b/poky/meta/recipes-core/musl/gcompat_git.bb @@ -0,0 +1,54 @@ +# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) + +SUMMARY = "A library which provides glibc-compatible APIs for use on musl libc systems" +HOMEPAGE = "https://git.adelielinux.org/adelie/gcompat" + +LICENSE = "NCSA" +LIC_FILES_CHKSUM = "file://LICENSE;md5=eb33ef4af05a9c7602843afb7adfe792" + +SRC_URI = "git://git.adelielinux.org/adelie/gcompat.git;protocol=https;branch=current" + +PV = "1.0.0+1.1+git${SRCPV}" +SRCREV = "af5a49e489fdc04b9cf02547650d7aeaccd43793" + +S = "${WORKDIR}/git" + +inherit pkgconfig linuxloader siteinfo + +DEPENDS += "musl-obstack" + +GLIBC_LDSO = "${@get_glibc_loader(d)}" +MUSL_LDSO = "${@get_musl_loader(d)}" + +EXTRA_OEMAKE = "LINKER_PATH=${MUSL_LDSO} \ + LOADER_NAME=`basename ${GLIBC_LDSO}` \ + " + +do_configure () { + : +} + +do_compile () { + oe_runmake +} + +do_install () { + oe_runmake install 'DESTDIR=${D}' + if [ "${SITEINFO_BITS}" = "64" ]; then + install -d ${D}/lib64 + lnr ${D}${GLIBC_LDSO} ${D}/lib64/`basename ${GLIBC_LDSO}` + fi +} + +FILES_${PN} += "/lib64" + +INSANE_SKIP_${PN} = "libdir" + +RPROVIDES_${PN} += "musl-glibc-compat" +# +# We will skip parsing for non-musl systems +# +COMPATIBLE_HOST = ".*-musl.*" + +UPSTREAM_CHECK_COMMITS = "1" diff --git a/poky/meta/recipes-core/musl/libssp-nonshared.bb b/poky/meta/recipes-core/musl/libssp-nonshared.bb index bae8c81cc..81c87e8e8 100644 --- a/poky/meta/recipes-core/musl/libssp-nonshared.bb +++ b/poky/meta/recipes-core/musl/libssp-nonshared.bb @@ -2,11 +2,12 @@ # Released under the MIT license (see COPYING.MIT for the terms) SUMMARY = "Minimal libssp_nonshared.a must needed for ssp to work with gcc on musl" -LICENSE = "GPL-3.0-with-GCC-exception" -LIC_FILES_CHKSUM = "file://ssp-local.c;beginline=1;endline=32;md5=c06d391208c0cfcbc541a6728ed65cc4" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://stack_chk.c;beginline=1;endline=30;md5=97e59d9deee678a9332c9ddb2ab6360d" SECTION = "libs" -SRC_URI = "file://ssp-local.c" +# Sourced from https://github.com/intel/linux-sgx/blob/master/sdk/compiler-rt/stack_chk.c +SRC_URI = "file://stack_chk.c" INHIBIT_DEFAULT_DEPS = "1" @@ -19,8 +20,8 @@ do_configure[noexec] = "1" S = "${WORKDIR}" do_compile() { - ${CC} ${CPPFLAGS} ${CFLAGS} -fPIE -c ssp-local.c -o ssp-local.o - ${AR} r libssp_nonshared.a ssp-local.o + ${CC} ${CPPFLAGS} ${CFLAGS} -fPIE -c stack_chk.c -o stack_chk.o + ${AR} r libssp_nonshared.a stack_chk.o } do_install() { install -Dm 0644 ${B}/libssp_nonshared.a ${D}${base_libdir}/libssp_nonshared.a diff --git a/poky/meta/recipes-core/musl/libssp-nonshared/ssp-local.c b/poky/meta/recipes-core/musl/libssp-nonshared/ssp-local.c deleted file mode 100644 index 8f51afa2c..000000000 --- a/poky/meta/recipes-core/musl/libssp-nonshared/ssp-local.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Stack protector support. - Copyright (C) 2005-2018 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -In addition to the permissions in the GNU General Public License, the -Free Software Foundation gives you unlimited permission to link the -compiled version of this file into combinations with other programs, -and to distribute those combinations without any restriction coming -from the use of this file. (The General Public License restrictions -do apply in other respects; for example, they cover modification of -the file, and distribution when not linked into a combine -executable.) - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -extern void __stack_chk_fail (void); - -/* Some targets can avoid loading a GP for calls to hidden functions. - Using this entry point may avoid the load of a GP entirely for the - function, making the overall code smaller. */ - -void -__attribute__((visibility ("hidden"))) -__stack_chk_fail_local (void) -{ - __stack_chk_fail (); -} diff --git a/poky/meta/recipes-core/musl/libssp-nonshared/stack_chk.c b/poky/meta/recipes-core/musl/libssp-nonshared/stack_chk.c new file mode 100644 index 000000000..097aae24b --- /dev/null +++ b/poky/meta/recipes-core/musl/libssp-nonshared/stack_chk.c @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +extern void __attribute__((noreturn)) __stack_chk_fail(void); + +void +__attribute__((noreturn)) +__attribute__((visibility ("hidden"))) +__stack_chk_fail_local (void) +{ + __stack_chk_fail (); +} diff --git a/poky/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch b/poky/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch new file mode 100644 index 000000000..1fdc9f739 --- /dev/null +++ b/poky/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch @@ -0,0 +1,49 @@ +From a530eed9e7e6872e10fe92efaf1e9739471c30ca Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 30 May 2021 08:30:28 -0700 +Subject: [PATCH] meson: Add option to pass cpu + +This helps with cross compile setups, where host_cpu != target_cpu +therefore detecting it on the fly will end up with wrong cpu to build +for + +Upstream-Status: Submitted [https://github.com/kaniini/libucontext/pull/28] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + meson.build | 6 +++++- + meson_options.txt | 4 +++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index e863780..2b4bdbd 100644 +--- a/meson.build ++++ b/meson.build +@@ -6,7 +6,11 @@ project( + version : run_command('head', files('VERSION')).stdout() + ) + +-cpu = host_machine.cpu_family() ++cpu = get_option('cpu') ++if cpu == '' ++ cpu = host_machine.cpu_family() ++endif ++ + if cpu == 'sh4' + cpu = 'sh' + endif +diff --git a/meson_options.txt b/meson_options.txt +index d4201d1..864d83c 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,4 +1,6 @@ + option('freestanding', type : 'boolean', value : false, + description: 'Do not use system headers') + option('export_unprefixed', type : 'boolean', value : true, +- description: 'Export POSIX 2004 ucontext names as alises') +\ No newline at end of file ++ description: 'Export POSIX 2004 ucontext names as alises') ++option('cpu', type : 'string', value : '', ++ description: 'Target CPU architecture for cross compile') +-- +2.31.1 + diff --git a/poky/meta/recipes-core/musl/libucontext_git.bb b/poky/meta/recipes-core/musl/libucontext_git.bb index 11affebb4..d8ae8242c 100644 --- a/poky/meta/recipes-core/musl/libucontext_git.bb +++ b/poky/meta/recipes-core/musl/libucontext_git.bb @@ -8,10 +8,11 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=6eed01fa0e673c76f5a5715438f65b1d" SECTION = "libs" DEPENDS = "" -PV = "0.10+${SRCPV}" -SRCREV = "19fa1bbfc26efb92147b5e85cc0ca02a0e837561" +PV = "1.1+${SRCPV}" +SRCREV = "335ee864ef6f4a5d4b525453fd9dbfb3507cfecc" SRC_URI = "git://github.com/kaniini/libucontext \ -" + file://0001-meson-Add-option-to-pass-cpu.patch \ + " S = "${WORKDIR}/git" @@ -49,16 +50,5 @@ def map_kernel_arch(a, d): return a bb.error("cannot map '%s' to a linux kernel architecture" % a) -export ARCH = "${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}" - -CFLAGS += "-Iarch/${ARCH} -Iarch/common" - -EXTRA_OEMAKE = "CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}' LIBDIR='${base_libdir}'" - -do_compile() { - oe_runmake ARCH=${ARCH} -} - -do_install() { - oe_runmake ARCH="${ARCH}" DESTDIR="${D}" install -} +EXTRA_OEMESON = "-Dcpu=${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}" +inherit meson diff --git a/poky/meta/recipes-core/musl/musl/0001-riscv-Rename-__NR_fstatat-__NR_newfstatat.patch b/poky/meta/recipes-core/musl/musl/0001-riscv-Rename-__NR_fstatat-__NR_newfstatat.patch new file mode 100644 index 000000000..9d9f16cee --- /dev/null +++ b/poky/meta/recipes-core/musl/musl/0001-riscv-Rename-__NR_fstatat-__NR_newfstatat.patch @@ -0,0 +1,32 @@ +From 40732d03990632049d5ba63dd736269a81756b16 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 19 May 2021 00:30:05 -0700 +Subject: [PATCH] riscv: Rename __NR_fstatat __NR_newfstatat + +on riscv64 this syscall is called __NR_newfstatat +this helps the name match kernel UAPI for external +programs + +Upstream-Status: Submitted [https://www.openwall.com/lists/musl/2021/05/19/3] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Cc: zabolcs Nagy <nsz@port70.net> +--- + arch/riscv64/bits/syscall.h.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/riscv64/bits/syscall.h.in b/arch/riscv64/bits/syscall.h.in +index f9c421d0..39c0d650 100644 +--- a/arch/riscv64/bits/syscall.h.in ++++ b/arch/riscv64/bits/syscall.h.in +@@ -76,7 +76,7 @@ + #define __NR_splice 76 + #define __NR_tee 77 + #define __NR_readlinkat 78 +-#define __NR_fstatat 79 ++#define __NR_newfstatat 79 + #define __NR_fstat 80 + #define __NR_sync 81 + #define __NR_fsync 82 +-- +2.31.1 + diff --git a/poky/meta/recipes-core/musl/musl_git.bb b/poky/meta/recipes-core/musl/musl_git.bb index e6f9e2441..bd9d5f1d4 100644 --- a/poky/meta/recipes-core/musl/musl_git.bb +++ b/poky/meta/recipes-core/musl/musl_git.bb @@ -4,7 +4,7 @@ require musl.inc inherit linuxloader -SRCREV = "e5d2823631bbfebacf48e1a34ed28f28d7cb2570" +SRCREV = "aad50fcd791e009961621ddfbe3d4c245fd689a3" BASEVER = "1.2.2" @@ -15,6 +15,7 @@ PV = "${BASEVER}+git${SRCPV}" SRC_URI = "git://git.musl-libc.org/musl \ file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \ file://0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch \ + file://0001-riscv-Rename-__NR_fstatat-__NR_newfstatat.patch \ " S = "${WORKDIR}/git" @@ -67,13 +68,9 @@ do_install() { echo "${libdir}" >> ${D}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path rm -f ${D}${bindir}/ldd ${D}${GLIBC_LDSO} lnr ${D}${libdir}/libc.so ${D}${bindir}/ldd - lnr ${D}${libdir}/libc.so ${D}${GLIBC_LDSO} } -PACKAGES =+ "${PN}-glibc-compat" - FILES_${PN} += "/lib/ld-musl-${MUSL_LDSO_ARCH}.so.1 ${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path" -FILES_${PN}-glibc-compat += "${GLIBC_LDSO}" FILES_${PN}-staticdev = "${libdir}/libc.a" FILES_${PN}-dev =+ "${libdir}/libcrypt.a ${libdir}/libdl.a ${libdir}/libm.a \ ${libdir}/libpthread.a ${libdir}/libresolv.a \ @@ -87,3 +84,5 @@ RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)" LEAD_SONAME = "libc.so" INSANE_SKIP_${PN}-dev = "staticdev" INSANE_SKIP_${PN} = "libdir" + +UPSTREAM_CHECK_COMMITS = "1" diff --git a/poky/meta/recipes-core/netbase/netbase_6.2.bb b/poky/meta/recipes-core/netbase/netbase_6.3.bb index a54d2e776..0a7a9d71e 100644 --- a/poky/meta/recipes-core/netbase/netbase_6.2.bb +++ b/poky/meta/recipes-core/netbase/netbase_6.3.bb @@ -10,7 +10,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}.tar.xz" inherit allarch -SRC_URI[sha256sum] = "309a24146a06347d654b261e9e07a82fab844b173674a42e223803dd8258541e" +SRC_URI[sha256sum] = "7c42a6a1cafa0c64103c71cab6431fc8613179b2449a1a00e55e3584e860d81c" UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/n/netbase/" diff --git a/poky/meta/recipes-core/ovmf/ovmf/0001-Fix-VLA-parameter-warning.patch b/poky/meta/recipes-core/ovmf/ovmf/0001-Fix-VLA-parameter-warning.patch new file mode 100644 index 000000000..d658123b8 --- /dev/null +++ b/poky/meta/recipes-core/ovmf/ovmf/0001-Fix-VLA-parameter-warning.patch @@ -0,0 +1,51 @@ +From 498627ebda6271b59920f43a0b9b6187edeb7b09 Mon Sep 17 00:00:00 2001 +From: Adrian Herrera <adr.her.arc.95@gmail.com> +Date: Mon, 22 Mar 2021 21:06:47 +0000 +Subject: [PATCH] Fix VLA parameter warning + +Make VLA buffer types consistent in declarations and definitions. +Resolves build crash when using -Werror due to "vla-parameter" warning. + +Upstream-Status: Submitted [https://github.com/google/brotli/pull/893] +Signed-off-by: Adrian Herrera <adr.her.arc.95@gmail.com> +--- + c/dec/decode.c | 6 ++++-- + c/enc/encode.c | 5 +++-- + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c b/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c +index 114c505..bb6f1ab 100644 +--- a/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c ++++ b/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c +@@ -2030,8 +2030,10 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands( + } + + BrotliDecoderResult BrotliDecoderDecompress( +- size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size, +- uint8_t* decoded_buffer) { ++ size_t encoded_size, ++ const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)], ++ size_t* decoded_size, ++ uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]) { + BrotliDecoderState s; + BrotliDecoderResult result; + size_t total_out = 0; +diff --git a/c/enc/encode.c b/c/enc/encode.c +index 68548ef..ab0a490 100644 +--- a/BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c ++++ c/BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c +@@ -1470,8 +1470,9 @@ static size_t MakeUncompressedStream( + + BROTLI_BOOL BrotliEncoderCompress( + int quality, int lgwin, BrotliEncoderMode mode, size_t input_size, +- const uint8_t* input_buffer, size_t* encoded_size, +- uint8_t* encoded_buffer) { ++ const uint8_t input_buffer[BROTLI_ARRAY_PARAM(input_size)], ++ size_t* encoded_size, ++ uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(*encoded_size)]) { + BrotliEncoderState* s; + size_t out_size = *encoded_size; + const uint8_t* input_start = input_buffer; +-- +2.31.1 + diff --git a/poky/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch b/poky/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch index c32963a80..89d9ffab5 100644 --- a/poky/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch +++ b/poky/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch @@ -1,7 +1,7 @@ -From 200ff35c6545b4ab85f5ea7a6096fbaec3d82f6d Mon Sep 17 00:00:00 2001 +From 1125f5a02c2f327aeffe2d6b66a9d816ad2eeec0 Mon Sep 17 00:00:00 2001 From: Ricardo Neri <ricardo.neri-calderon@linux.intel.com> Date: Thu, 9 Jun 2016 02:23:01 -0700 -Subject: [PATCH 1/4] ovmf: update path to native BaseTools +Subject: [PATCH 1/6] ovmf: update path to native BaseTools BaseTools is a set of utilities to build EDK-based firmware. These utilities are used during the build process. Thus, they need to be built natively. @@ -11,7 +11,6 @@ with the appropriate location before building. Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com> Upstream-Status: Pending - --- OvmfPkg/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @@ -30,5 +29,5 @@ index 91b1442ade..1858dae31a 100755 source edksetup.sh BaseTools else -- -2.28.0 +2.32.0 diff --git a/poky/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch b/poky/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch index c61a08f02..f6141c8af 100644 --- a/poky/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch +++ b/poky/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch @@ -1,23 +1,22 @@ -From 667c0cf97dadc4f5994d26ec3984f559a05ec406 Mon Sep 17 00:00:00 2001 +From 19d4c7f9812062a683b3ba60b35aac0461190456 Mon Sep 17 00:00:00 2001 From: Ricardo Neri <ricardo.neri-calderon@linux.intel.com> Date: Fri, 26 Jul 2019 17:34:26 -0400 -Subject: [PATCH 2/4] BaseTools: makefile: adjust to build in under bitbake +Subject: [PATCH 2/6] BaseTools: makefile: adjust to build in under bitbake Prepend the build flags with those of bitbake. This is to build using the bitbake native sysroot include and library directories. Signed-off-by: Ricardo Neri <ricardo.neri@linux.intel.com> Upstream-Status: Pending - --- BaseTools/Source/C/Makefiles/header.makefile | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile -index 1c105ee7d4..d5eea3864e 100644 +index 0df728f327..1299d47c87 100644 --- a/BaseTools/Source/C/Makefiles/header.makefile +++ b/BaseTools/Source/C/Makefiles/header.makefile -@@ -69,35 +69,36 @@ $(error Bad HOST_ARCH) +@@ -75,35 +75,36 @@ $(error Bad HOST_ARCH) endif
INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE)
@@ -63,5 +62,5 @@ index 1c105ee7d4..d5eea3864e 100644 #
# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns i386, but gcc defaults
-- -2.28.0 +2.32.0 diff --git a/poky/meta/recipes-core/ovmf/ovmf/0004-ovmf-Update-to-latest.patch b/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-Update-to-latest.patch index 128438b20..d71042989 100644 --- a/poky/meta/recipes-core/ovmf/ovmf/0004-ovmf-Update-to-latest.patch +++ b/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-Update-to-latest.patch @@ -1,7 +1,7 @@ -From ad06fcf1e08736e79221cd6863ff2e3c9254f261 Mon Sep 17 00:00:00 2001 +From 67267d8cc31df16a3608cad1a17c5f1470ef8bbd Mon Sep 17 00:00:00 2001 From: Steve Langasek <steve.langasek@ubuntu.com> Date: Sat, 10 Jun 2017 01:39:36 -0700 -Subject: [PATCH 4/4] ovmf: Update to latest +Subject: [PATCH 3/6] ovmf: Update to latest Description: pass -fno-stack-protector to all GCC toolchains The upstream build rules inexplicably pass -fno-stack-protector only @@ -9,16 +9,15 @@ Description: pass -fno-stack-protector to all GCC toolchains generic rules for gcc 4.4 and later. Last-Updated: 2016-04-12 Upstream-Status: Pending - --- BaseTools/Conf/tools_def.template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template -index 933b3160fd..c2fbbf0c38 100755 +index 498696e583..36241b6ede 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template -@@ -1952,10 +1952,10 @@ DEFINE GCC_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv +@@ -1897,10 +1897,10 @@ DEFINE GCC_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv # GCC Build Flag for included header file list generation
DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps
@@ -32,7 +31,7 @@ index 933b3160fd..c2fbbf0c38 100755 DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON)
-@@ -1964,7 +1964,7 @@ DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF +@@ -1909,7 +1909,7 @@ DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF DEFINE GCC48_ASM_FLAGS = DEF(GCC_ASM_FLAGS)
DEFINE GCC48_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
DEFINE GCC48_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
@@ -42,5 +41,5 @@ index 933b3160fd..c2fbbf0c38 100755 DEFINE GCC48_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS)
DEFINE GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS)
-- -2.28.0 +2.32.0 diff --git a/poky/meta/recipes-core/ovmf/ovmf/0004-Strip-build-paths.patch b/poky/meta/recipes-core/ovmf/ovmf/0004-Strip-build-paths.patch new file mode 100644 index 000000000..dfb8a7339 --- /dev/null +++ b/poky/meta/recipes-core/ovmf/ovmf/0004-Strip-build-paths.patch @@ -0,0 +1,32 @@ +From b7cfe97895e0586d14403ba98e62a0cd9373da96 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 14 Jun 2021 19:55:08 +0200 +Subject: [PATCH 4/6] Strip build paths + +Pass --zero to GenFw in release builds so that the sections that link back to +the intermediate binaries (containing build paths) are removed. + +Upstream-Status: Pending (discussion at https://bugzilla.tianocore.org/show_bug.cgi?id=3256) +Signed-off-by: Ross Burton <ross.burton@arm.com> + +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + OvmfPkg/OvmfPkgIa32.dsc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc +index 33fbd76790..06c6d5ce60 100644 +--- a/OvmfPkg/OvmfPkgIa32.dsc ++++ b/OvmfPkg/OvmfPkgIa32.dsc +@@ -91,6 +91,8 @@ +
+ !include NetworkPkg/NetworkBuildOptions.dsc.inc
+
++ RELEASE_*_*_GENFW_FLAGS = --zero
++
+ [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
+ GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
+ XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
+-- +2.32.0 + diff --git a/poky/meta/recipes-core/ovmf/ovmf/0005-debug-prefix-map.patch b/poky/meta/recipes-core/ovmf/ovmf/0005-debug-prefix-map.patch new file mode 100644 index 000000000..e467d6f15 --- /dev/null +++ b/poky/meta/recipes-core/ovmf/ovmf/0005-debug-prefix-map.patch @@ -0,0 +1,104 @@ +From 860bb1979f3578bb83257076fe0f3bd33f9d68bf Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 14 Jun 2021 19:56:28 +0200 +Subject: [PATCH 5/6] debug prefix map + +We want to pass ${DEBUG_PREFIX_MAP} to gcc commands and also pass in + --debug-prefix-map to nasm (we carry a patch to nasm for this). The +tools definitions file is built by ovmf-native so we need to pass this in +at target build time when we know the right values so we use the environment. + +By using determininistc file paths during the ovmf build, it removes the +opportunitity for gcc/ld to change the output binaries due to path lengths +overflowing section sizes and causing small changes in the binary output. +Previously we relied on the stripped output being the same which isn't always +the case if the size of the debug symbols varies. + +Upstream-Status: Pending [gcc parts may be upstreamable, nasm patch isn't upstream yet] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + BaseTools/Conf/tools_def.template | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template +index 36241b6ede..947fbf2e8d 100755 +--- a/BaseTools/Conf/tools_def.template ++++ b/BaseTools/Conf/tools_def.template +@@ -1863,7 +1863,7 @@ NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_N + *_*_*_DTCPP_PATH = DEF(DTCPP_BIN)
+ *_*_*_DTC_PATH = DEF(DTC_BIN)
+
+-DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common
++DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common ENV(GCC_PREFIX_MAP)
+ DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe
+ DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe
+ DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft -fno-pic -fno-pie
+@@ -1881,8 +1881,8 @@ DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _Ref + DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
+ DEFINE GCC_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
+ DEFINE GCC_IA32_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
+-DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h
+-DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h
++DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h ENV(GCC_PREFIX_MAP)
++DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h ENV(GCC_PREFIX_MAP)
+ DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h
+ DEFINE GCC_ASLPP_FLAGS = -x c -E -include AutoGen.h
+ DEFINE GCC_ASLCC_FLAGS = -x c
+@@ -2027,7 +2027,7 @@ DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include A + *_GCC48_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS)
+ *_GCC48_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
+ *_GCC48_IA32_OBJCOPY_FLAGS =
+-*_GCC48_IA32_NASM_FLAGS = -f elf32
++*_GCC48_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os
+ RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable
+@@ -2055,7 +2055,7 @@ RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but + *_GCC48_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS)
+ *_GCC48_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
+ *_GCC48_X64_OBJCOPY_FLAGS =
+-*_GCC48_X64_NASM_FLAGS = -f elf64
++*_GCC48_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os
+ RELEASE_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable
+@@ -2167,7 +2167,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s + *_GCC49_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS)
+ *_GCC49_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
+ *_GCC49_IA32_OBJCOPY_FLAGS =
+-*_GCC49_IA32_NASM_FLAGS = -f elf32
++*_GCC49_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os
+ RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
+@@ -2195,7 +2195,7 @@ RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but + *_GCC49_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS)
+ *_GCC49_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
+ *_GCC49_X64_OBJCOPY_FLAGS =
+-*_GCC49_X64_NASM_FLAGS = -f elf64
++*_GCC49_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os
+ RELEASE_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
+@@ -2313,7 +2313,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + *_GCC5_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie
+ *_GCC5_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
+ *_GCC5_IA32_OBJCOPY_FLAGS =
+-*_GCC5_IA32_NASM_FLAGS = -f elf32
++*_GCC5_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto -Os
+ DEBUG_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
+@@ -2345,7 +2345,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl, + *_GCC5_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS)
+ *_GCC5_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
+ *_GCC5_X64_OBJCOPY_FLAGS =
+-*_GCC5_X64_NASM_FLAGS = -f elf64
++*_GCC5_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Os
+ DEBUG_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
+-- +2.32.0 + diff --git a/poky/meta/recipes-core/ovmf/ovmf/0006-reproducible.patch b/poky/meta/recipes-core/ovmf/ovmf/0006-reproducible.patch new file mode 100644 index 000000000..343c21b54 --- /dev/null +++ b/poky/meta/recipes-core/ovmf/ovmf/0006-reproducible.patch @@ -0,0 +1,180 @@ +From 27ed9962f5cb3afcc44d6c96c53277132a999712 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 14 Jun 2021 19:57:30 +0200 +Subject: [PATCH 6/6] reproducible + +This patch fixes various things which make the build more reproducible. Some changes +here only change intermediate artefacts but that means when you have two build trees +giving differing results, the differences can be isolated more easily. The issues here +usually become apparent with longer paths. + +This was all debugged with: +TMPDIR = "${TOPDIR}/tmp" +vs. +TMPDIR = "${TOPDIR}/tmp-inital-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath" + +The patch specifically: + + * Sorts output in GNUmakefile + * Always generates indirect flags files used to avoid pathlength issues else the + compile commands suddenly change when using longer paths + * Sorts the AutoGenTimeStamp file contents + * Makes the TargetDescBlock objects from BuildEngine sortable to allow the makefile fix + * Fix ElfConvert within GenFw so that only the basename of the binary being converted + is used, else the output from "GenFw XXX.bin" differs from "GenFw /long/path/XXX.bin" + with sufficiently long paths + +Upstream-Status: Pending [At least some of this might be interesting to upstream] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + BaseTools/Source/C/GenFw/Elf64Convert.c | 8 ++++--- + .../Source/Python/AutoGen/BuildEngine.py | 3 +++ + BaseTools/Source/Python/AutoGen/GenMake.py | 24 +++++++++---------- + .../Source/Python/AutoGen/ModuleAutoGen.py | 5 +++- + 4 files changed, 24 insertions(+), 16 deletions(-) + +diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c +index d097db8632..a87ae6f3d0 100644 +--- a/BaseTools/Source/C/GenFw/Elf64Convert.c ++++ b/BaseTools/Source/C/GenFw/Elf64Convert.c +@@ -14,6 +14,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + #ifndef __GNUC__
+ #include <windows.h>
+ #include <io.h>
++#else
++#define _GNU_SOURCE
+ #endif
+ #include <assert.h>
+ #include <stdio.h>
+@@ -769,7 +771,7 @@ ScanSections64 ( + }
+ mCoffOffset = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY) +
+ sizeof(EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY) +
+- strlen(mInImageName) + 1;
++ strlen(basename(mInImageName)) + 1;
+
+ mCoffOffset = CoffAlign(mCoffOffset);
+ if (SectionCount == 0) {
+@@ -1608,7 +1610,7 @@ WriteDebug64 ( + EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *Dir;
+ EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY *Nb10;
+
+- Len = strlen(mInImageName) + 1;
++ Len = strlen(basename(mInImageName)) + 1;
+
+ Dir = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY*)(mCoffFile + mDebugOffset);
+ Dir->Type = EFI_IMAGE_DEBUG_TYPE_CODEVIEW;
+@@ -1618,7 +1620,7 @@ WriteDebug64 ( +
+ Nb10 = (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY*)(Dir + 1);
+ Nb10->Signature = CODEVIEW_SIGNATURE_NB10;
+- strcpy ((char *)(Nb10 + 1), mInImageName);
++ strcpy ((char *)(Nb10 + 1), basename(mInImageName));
+
+
+ NtHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)(mCoffFile + mNtHdrOffset);
+diff --git a/BaseTools/Source/Python/AutoGen/BuildEngine.py b/BaseTools/Source/Python/AutoGen/BuildEngine.py +index 722fead75a..8f1c236970 100644 +--- a/BaseTools/Source/Python/AutoGen/BuildEngine.py ++++ b/BaseTools/Source/Python/AutoGen/BuildEngine.py +@@ -70,6 +70,9 @@ class TargetDescBlock(object): + else:
+ return str(Other) == self.Target.Path
+
++ def __lt__(self, other):
++ return str(self) < str(other)
++
+ def AddInput(self, Input):
+ if Input not in self.Inputs:
+ self.Inputs.append(Input)
+diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py +index 961b2ab1c3..23c1592025 100755 +--- a/BaseTools/Source/Python/AutoGen/GenMake.py ++++ b/BaseTools/Source/Python/AutoGen/GenMake.py +@@ -575,7 +575,7 @@ cleanlib: + os.remove(RespFileList)
+
+ # convert source files and binary files to build targets
+- self.ResultFileList = [str(T.Target) for T in MyAgo.CodaTargetList]
++ self.ResultFileList = sorted([str(T.Target) for T in MyAgo.CodaTargetList])
+ if len(self.ResultFileList) == 0 and len(MyAgo.SourceFileList) != 0:
+ EdkLogger.error("build", AUTOGEN_ERROR, "Nothing to build",
+ ExtraData="[%s]" % str(MyAgo))
+@@ -726,7 +726,7 @@ cleanlib: + OutputFile = ''
+ DepsFileList = []
+
+- for Cmd in self.GenFfsList:
++ for Cmd in sorted(self.GenFfsList):
+ if Cmd[2]:
+ for CopyCmd in Cmd[2]:
+ Src, Dst = CopyCmd
+@@ -759,7 +759,7 @@ cleanlib: + self.BuildTargetList.append('\t%s' % CmdString)
+
+ self.ParseSecCmd(DepsFileList, Cmd[1])
+- for SecOutputFile, SecDepsFile, SecCmd in self.FfsOutputFileList :
++ for SecOutputFile, SecDepsFile, SecCmd in sorted(self.FfsOutputFileList):
+ self.BuildTargetList.append('%s : %s' % (self.ReplaceMacro(SecOutputFile), self.ReplaceMacro(SecDepsFile)))
+ self.BuildTargetList.append('\t%s' % self.ReplaceMacro(SecCmd))
+ self.FfsOutputFileList = []
+@@ -798,13 +798,13 @@ cleanlib: +
+ def CommandExceedLimit(self):
+ FlagDict = {
+- 'CC' : { 'Macro' : '$(CC_FLAGS)', 'Value' : False},
+- 'PP' : { 'Macro' : '$(PP_FLAGS)', 'Value' : False},
+- 'APP' : { 'Macro' : '$(APP_FLAGS)', 'Value' : False},
+- 'ASLPP' : { 'Macro' : '$(ASLPP_FLAGS)', 'Value' : False},
+- 'VFRPP' : { 'Macro' : '$(VFRPP_FLAGS)', 'Value' : False},
+- 'ASM' : { 'Macro' : '$(ASM_FLAGS)', 'Value' : False},
+- 'ASLCC' : { 'Macro' : '$(ASLCC_FLAGS)', 'Value' : False},
++ 'CC' : { 'Macro' : '$(CC_FLAGS)', 'Value' : True},
++ 'PP' : { 'Macro' : '$(PP_FLAGS)', 'Value' : True},
++ 'APP' : { 'Macro' : '$(APP_FLAGS)', 'Value' : True},
++ 'ASLPP' : { 'Macro' : '$(ASLPP_FLAGS)', 'Value' : True},
++ 'VFRPP' : { 'Macro' : '$(VFRPP_FLAGS)', 'Value' : True},
++ 'ASM' : { 'Macro' : '$(ASM_FLAGS)', 'Value' : True},
++ 'ASLCC' : { 'Macro' : '$(ASLCC_FLAGS)', 'Value' : True},
+ }
+
+ RespDict = {}
+@@ -1007,9 +1007,9 @@ cleanlib: + if not self.ObjTargetDict.get(T.Target.SubDir):
+ self.ObjTargetDict[T.Target.SubDir] = set()
+ self.ObjTargetDict[T.Target.SubDir].add(NewFile)
+- for Type in self._AutoGenObject.Targets:
++ for Type in sorted(self._AutoGenObject.Targets):
+ resp_file_number = 0
+- for T in self._AutoGenObject.Targets[Type]:
++ for T in sorted(self._AutoGenObject.Targets[Type]):
+ # Generate related macros if needed
+ if T.GenFileListMacro and T.FileListMacro not in self.FileListMacros:
+ self.FileListMacros[T.FileListMacro] = []
+diff --git a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py +index d70b0d7ae8..25dca9a6df 100755 +--- a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py ++++ b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py +@@ -1484,6 +1484,9 @@ class ModuleAutoGen(AutoGen): + for File in Files:
+ if File.lower().endswith('.pdb'):
+ AsBuiltInfDict['binary_item'].append('DISPOSABLE|' + File)
++
++ AsBuiltInfDict['binary_item'] = sorted(AsBuiltInfDict['binary_item'])
++
+ HeaderComments = self.Module.HeaderComments
+ StartPos = 0
+ for Index in range(len(HeaderComments)):
+@@ -1759,7 +1762,7 @@ class ModuleAutoGen(AutoGen): + if os.path.exists (self.TimeStampPath):
+ os.remove (self.TimeStampPath)
+
+- SaveFileOnChange(self.TimeStampPath, "\n".join(FileSet), False)
++ SaveFileOnChange(self.TimeStampPath, "\n".join(sorted(FileSet)), False)
+
+ # Ignore generating makefile when it is a binary module
+ if self.IsBinaryModule:
+-- +2.32.0 + diff --git a/poky/meta/recipes-core/ovmf/ovmf/zero.patch b/poky/meta/recipes-core/ovmf/ovmf/zero.patch deleted file mode 100644 index af7a9d31f..000000000 --- a/poky/meta/recipes-core/ovmf/ovmf/zero.patch +++ /dev/null @@ -1,84 +0,0 @@ -Pass --zero to GenFw in release builds so that the sections that link back to -the intermediate binaries (containing build paths) are removed. - -Upstream-Status: Pending (discussion at https://bugzilla.tianocore.org/show_bug.cgi?id=3256) -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From 6303b065802c9427c718fda129360189b79316e7 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@arm.com> -Date: Tue, 16 Mar 2021 16:49:49 +0000 -Subject: [PATCH] Strip build paths - ---- - OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + - OvmfPkg/Bhyve/BhyveX64.dsc | 1 + - OvmfPkg/OvmfPkgIa32.dsc | 2 ++ - OvmfPkg/OvmfPkgIa32X64.dsc | 1 + - OvmfPkg/OvmfPkgX64.dsc | 1 + - OvmfPkg/OvmfXen.dsc | 1 + - 6 files changed, 7 insertions(+) - -diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc -index 4a1cdf5aca..132f55cf69 100644 ---- a/OvmfPkg/Bhyve/BhyveX64.dsc -+++ b/OvmfPkg/Bhyve/BhyveX64.dsc -@@ -76,6 +76,7 @@
- GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- !endif
-+ RELEASE_*_*_GENFW_FLAGS = --zero
-
- #
- # Disable deprecated APIs.
-diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc -index 1eaf3e99c6..ce20f09df8 100644 ---- a/OvmfPkg/OvmfPkgIa32.dsc -+++ b/OvmfPkg/OvmfPkgIa32.dsc -@@ -90,6 +90,8 @@
-
- !include NetworkPkg/NetworkBuildOptions.dsc.inc
-
-+ RELEASE_*_*_GENFW_FLAGS = --zero
-+
- [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
- XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
-diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc -index 4a5a430147..97cc438250 100644 ---- a/OvmfPkg/OvmfPkgIa32X64.dsc -+++ b/OvmfPkg/OvmfPkgIa32X64.dsc -@@ -84,6 +84,7 @@
- GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- !endif
-+ RELEASE_*_*_GENFW_FLAGS = --zero
-
- #
- # Disable deprecated APIs.
-diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc -index d4d601b444..f544fb04bf 100644 ---- a/OvmfPkg/OvmfPkgX64.dsc -+++ b/OvmfPkg/OvmfPkgX64.dsc -@@ -84,6 +84,7 @@
- GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- !endif
-+ RELEASE_*_*_GENFW_FLAGS = --zero
-
- #
- # Disable deprecated APIs.
-diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc -index 507029404f..fcaa35acf1 100644 ---- a/OvmfPkg/OvmfXen.dsc -+++ b/OvmfPkg/OvmfXen.dsc -@@ -74,6 +74,7 @@
- GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- !endif
-+ RELEASE_*_*_GENFW_FLAGS = --zero
-
- #
- # Disable deprecated APIs.
--- -2.25.1 - diff --git a/poky/meta/recipes-core/ovmf/ovmf_git.bb b/poky/meta/recipes-core/ovmf/ovmf_git.bb index 896b3b632..90dae2aed 100644 --- a/poky/meta/recipes-core/ovmf/ovmf_git.bb +++ b/poky/meta/recipes-core/ovmf/ovmf_git.bb @@ -15,12 +15,15 @@ PACKAGECONFIG[secureboot] = ",,," SRC_URI = "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \ file://0001-ovmf-update-path-to-native-BaseTools.patch \ file://0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \ - file://0004-ovmf-Update-to-latest.patch \ - file://zero.patch \ + file://0003-ovmf-Update-to-latest.patch \ + file://0004-Strip-build-paths.patch \ + file://0005-debug-prefix-map.patch \ + file://0006-reproducible.patch \ + file://0001-Fix-VLA-parameter-warning.patch \ " -PV = "edk2-stable202102" -SRCREV = "ef91b07388e1c0a50c604e5350eeda98428ccea6" +PV = "edk2-stable202105" +SRCREV = "e1999b264f1f9d7230edf2448f757c73da567832" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)" inherit deploy @@ -101,9 +104,23 @@ fix_toolchain_append_class-native() { # to make ovmf-native reusable across distros. sed -i \ -e 's#^\(DEFINE GCC.*DLINK.*FLAGS *=\)#\1 -fuse-ld=bfd#' \ + -e 's#-flto#-fno-lto#g' \ + -e 's#-DUSING_LTO##g' \ ${S}/BaseTools/Conf/tools_def.template } +# We disable lto above since the results are not reproducible and make it hard to compare +# binary build aretfacts to debug reproducibility problems. +# Surprisingly, if you disable lto, you see compiler warnings which are fatal. We therefore +# have to hack warnings overrides into GCC_PREFIX_MAP to allow it to build. + +# We want to pass ${DEBUG_PREFIX_MAP} to gcc commands and also pass in +# --debug-prefix-map to nasm (we carry a patch to nasm for this). The +# tools definitions are built by ovmf-native so we need to pass this in +# at target build time when we know the right values. +export NASM_PREFIX_MAP = "--debug-prefix-map=${WORKDIR}=/usr/src/debug/ovmf/${EXTENDPE}${PV}-${PR}" +export GCC_PREFIX_MAP = "${DEBUG_PREFIX_MAP} -Wno-stringop-overflow -Wno-maybe-uninitialized" + GCC_VER="$(${CC} -v 2>&1 | tail -n1 | awk '{print $3}')" fixup_target_tools() { diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb index b8e2c718e..194dca76d 100644 --- a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb +++ b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb @@ -57,6 +57,7 @@ VALGRIND_armv6 = "" VALGRIND_armeb = "" VALGRIND_aarch64 = "" VALGRIND_riscv64 = "" +VALGRIND_riscv32 = "" VALGRIND_powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', '', 'valgrind', d)}" VALGRIND_linux-gnux32 = "" VALGRIND_linux-gnun32 = "" diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb index a5fc15285..015810cb6 100644 --- a/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb +++ b/poky/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb @@ -16,6 +16,7 @@ KEXECTOOLS_e5500-64b ?= "" KEXECTOOLS_microblaze ?= "" KEXECTOOLS_nios2 ?= "" KEXECTOOLS_riscv64 ?= "" +KEXECTOOLS_riscv32 ?= "" GSTEXAMPLES ?= "gst-examples" GSTEXAMPLES_riscv64 = "" diff --git a/poky/meta/recipes-core/systemd/systemd-boot_247.4.bb b/poky/meta/recipes-core/systemd/systemd-boot_248.3.bb index 249e620f4..249e620f4 100644 --- a/poky/meta/recipes-core/systemd/systemd-boot_247.4.bb +++ b/poky/meta/recipes-core/systemd/systemd-boot_248.3.bb diff --git a/poky/meta/recipes-core/systemd/systemd-conf/wired.network b/poky/meta/recipes-core/systemd/systemd-conf/wired.network index e7b69970d..740628724 100644 --- a/poky/meta/recipes-core/systemd/systemd-conf/wired.network +++ b/poky/meta/recipes-core/systemd/systemd-conf/wired.network @@ -1,5 +1,6 @@ [Match] Type=ether +Name=!veth* KernelCommandLine=!nfsroot KernelCommandLine=!ip diff --git a/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb b/poky/meta/recipes-core/systemd/systemd-conf_1.0.bb index ea35e83f4..235923be8 100644 --- a/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb +++ b/poky/meta/recipes-core/systemd/systemd-conf_1.0.bb @@ -5,6 +5,8 @@ DefaultTimeoutStartSec setting." LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PE = "1" + PACKAGECONFIG ??= "dhcp-ethernet" PACKAGECONFIG[dhcp-ethernet] = "" diff --git a/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl b/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl index de733e255..e8c3d2d1e 100755 --- a/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl +++ b/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl @@ -160,7 +160,9 @@ def add_link(path, target): class SystemdUnitNotFoundError(Exception): - pass + def __init__(self, path, unit): + self.path = path + self.unit = unit class SystemdUnit(): @@ -224,7 +226,10 @@ class SystemdUnit(): try: for also in config.get('Install', 'Also'): - SystemdUnit(self.root, also).enable() + try: + SystemdUnit(self.root, also).enable() + except SystemdUnitNotFoundError as e: + sys.exit("Error: Systemctl also enable issue with %s (%s)" % (service, e.unit)) except KeyError: pass @@ -265,7 +270,10 @@ def preset_all(root): state = presets.state(service) if state == "enable" or state is None: - SystemdUnit(root, service).enable() + try: + SystemdUnit(root, service).enable() + except SystemdUnitNotFoundError: + sys.exit("Error: Systemctl preset_all issue in %s" % service) # If we populate the systemd links we also create /etc/machine-id, which # allows systemd to boot with the filesystem read-only before generating @@ -307,10 +315,16 @@ def main(): if command == "mask": for service in args.service: - SystemdUnit(root, service).mask() + try: + SystemdUnit(root, service).mask() + except SystemdUnitNotFoundError as e: + sys.exit("Error: Systemctl main mask issue in %s (%s)" % (service, e.unit)) elif command == "enable": for service in args.service: - SystemdUnit(root, service).enable() + try: + SystemdUnit(root, service).enable() + except SystemdUnitNotFoundError as e: + sys.exit("Error: Systemctl main enable issue in %s (%s)" % (service, e.unit)) elif command == "preset-all": if len(args.service) != 0: sys.exit("Too many arguments.") diff --git a/poky/meta/recipes-core/systemd/systemd.inc b/poky/meta/recipes-core/systemd/systemd.inc index 098bca98f..0524a2500 100644 --- a/poky/meta/recipes-core/systemd/systemd.inc +++ b/poky/meta/recipes-core/systemd/systemd.inc @@ -14,8 +14,9 @@ LICENSE = "GPLv2 & LGPLv2.1" LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c" -SRCREV = "069525e84a67375e27429cb490e8d28af78e673a" -SRCBRANCH = "v247-stable" -SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH}" +SRCREV = "37c4cfde0ce613f0f00544d3f4e2e72bf93d9c76" +SRCBRANCH = "v248-stable" +SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH} \ +" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-core/systemd/systemd/0001-analyze-resolve-executable-path-if-it-is-relative.patch b/poky/meta/recipes-core/systemd/systemd/0001-analyze-resolve-executable-path-if-it-is-relative.patch deleted file mode 100644 index fd7f94a61..000000000 --- a/poky/meta/recipes-core/systemd/systemd/0001-analyze-resolve-executable-path-if-it-is-relative.patch +++ /dev/null @@ -1,39 +0,0 @@ -From b9b7a8e3825f0433e120f7a6d7d5d635a839cab9 Mon Sep 17 00:00:00 2001 -From: Mingli Yu <mingli.yu@windriver.com> -Date: Thu, 21 Jan 2021 06:19:44 +0000 -Subject: [PATCH] analyze: resolve executable path if it is relative - -Upstream-Status: Backport [https://github.com/systemd/systemd/commit/f1fb046a985521f7d4a662f02546686ff20b7e5d] - -Signed-off-by: Mingli Yu <mingli.yu@windriver.com> ---- - src/analyze/analyze-verify.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/analyze/analyze-verify.c b/src/analyze/analyze-verify.c -index a9c89173bf..969523df18 100644 ---- a/src/analyze/analyze-verify.c -+++ b/src/analyze/analyze-verify.c -@@ -115,14 +115,17 @@ static int verify_socket(Unit *u) { - } - - int verify_executable(Unit *u, const ExecCommand *exec) { -+ int r; -+ - if (!exec) - return 0; - - if (exec->flags & EXEC_COMMAND_IGNORE_FAILURE) - return 0; - -- if (access(exec->path, X_OK) < 0) -- return log_unit_error_errno(u, errno, "Command %s is not executable: %m", exec->path); -+ r = find_executable_full(exec->path, false, NULL); -+ if (r < 0) -+ return log_unit_error_errno(u, r, "Command %s is not executable: %m", exec->path); - - return 0; - } --- -2.26.2 - diff --git a/poky/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch b/poky/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch deleted file mode 100644 index 89ef39bc3..000000000 --- a/poky/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch +++ /dev/null @@ -1,227 +0,0 @@ -From 150d9cade6d475570395cb418b824524dead9577 Mon Sep 17 00:00:00 2001 -From: Joshua Watt <JPEWhacker@gmail.com> -Date: Fri, 30 Oct 2020 08:15:43 -0500 -Subject: [PATCH] logind: Restore chvt as non-root user without polkit - -4acf0cfd2f ("logind: check PolicyKit before allowing VT switch") broke -the ability to write user sessions that run graphical sessions (e.g. -weston/X11). This was partially amended in 19bb87fbfa ("login: allow -non-console sessions to change vt") by changing the default PolicyKit -policy so that non-root users are again allowed to switch the VT. This -makes the policy when PolKit is not enabled (as on many embedded -systems) match the default PolKit policy and allows launching graphical -sessions as a non-root user. - -Closes #17473 ---- - src/login/logind-dbus.c | 11 ++------- - src/login/logind-polkit.c | 26 +++++++++++++++++++++ - src/login/logind-polkit.h | 10 ++++++++ - src/login/logind-seat-dbus.c | 41 ++++----------------------------- - src/login/logind-session-dbus.c | 11 ++------- - src/login/meson.build | 1 + - 6 files changed, 46 insertions(+), 54 deletions(-) - create mode 100644 src/login/logind-polkit.c - create mode 100644 src/login/logind-polkit.h - -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index 0f83ed99bc..a3765d88ba 100644 ---- a/src/login/logind-dbus.c -+++ b/src/login/logind-dbus.c -@@ -30,6 +30,7 @@ - #include "format-util.h" - #include "fs-util.h" - #include "logind-dbus.h" -+#include "logind-polkit.h" - #include "logind-seat-dbus.h" - #include "logind-session-dbus.h" - #include "logind-user-dbus.h" -@@ -1047,15 +1048,7 @@ static int method_activate_session_on_seat(sd_bus_message *message, void *userda - return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT, - "Session %s not on seat %s", session_name, seat_name); - -- r = bus_verify_polkit_async( -- message, -- CAP_SYS_ADMIN, -- "org.freedesktop.login1.chvt", -- NULL, -- false, -- UID_INVALID, -- &m->polkit_registry, -- error); -+ r = check_polkit_chvt(message, m, error); - if (r < 0) - return r; - if (r == 0) -diff --git a/src/login/logind-polkit.c b/src/login/logind-polkit.c -new file mode 100644 -index 0000000000..9072570cc6 ---- /dev/null -+++ b/src/login/logind-polkit.c -@@ -0,0 +1,26 @@ -+/* SPDX-License-Identifier: LGPL-2.1+ */ -+ -+#include "bus-polkit.h" -+#include "logind-polkit.h" -+#include "missing_capability.h" -+#include "user-util.h" -+ -+int check_polkit_chvt(sd_bus_message *message, Manager *manager, sd_bus_error *error) { -+#if ENABLE_POLKIT -+ return bus_verify_polkit_async( -+ message, -+ CAP_SYS_ADMIN, -+ "org.freedesktop.login1.chvt", -+ NULL, -+ false, -+ UID_INVALID, -+ &manager->polkit_registry, -+ error); -+#else -+ /* Allow chvt when polkit is not present. This allows a service to start a graphical session as a -+ * non-root user when polkit is not compiled in, matching the default polkit policy */ -+ return 1; -+#endif -+} -+ -+ -diff --git a/src/login/logind-polkit.h b/src/login/logind-polkit.h -new file mode 100644 -index 0000000000..476c077a8a ---- /dev/null -+++ b/src/login/logind-polkit.h -@@ -0,0 +1,10 @@ -+/* SPDX-License-Identifier: LGPL-2.1+ */ -+#pragma once -+ -+#include "sd-bus.h" -+ -+#include "bus-object.h" -+#include "logind.h" -+ -+int check_polkit_chvt(sd_bus_message *message, Manager *manager, sd_bus_error *error); -+ -diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c -index a945132284..f22e9e2734 100644 ---- a/src/login/logind-seat-dbus.c -+++ b/src/login/logind-seat-dbus.c -@@ -9,6 +9,7 @@ - #include "bus-polkit.h" - #include "bus-util.h" - #include "logind-dbus.h" -+#include "logind-polkit.h" - #include "logind-seat-dbus.h" - #include "logind-seat.h" - #include "logind-session-dbus.h" -@@ -179,15 +180,7 @@ static int method_activate_session(sd_bus_message *message, void *userdata, sd_b - if (session->seat != s) - return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT, "Session %s not on seat %s", name, s->id); - -- r = bus_verify_polkit_async( -- message, -- CAP_SYS_ADMIN, -- "org.freedesktop.login1.chvt", -- NULL, -- false, -- UID_INVALID, -- &s->manager->polkit_registry, -- error); -+ r = check_polkit_chvt(message, s->manager, error); - if (r < 0) - return r; - if (r == 0) -@@ -215,15 +208,7 @@ static int method_switch_to(sd_bus_message *message, void *userdata, sd_bus_erro - if (to <= 0) - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid virtual terminal"); - -- r = bus_verify_polkit_async( -- message, -- CAP_SYS_ADMIN, -- "org.freedesktop.login1.chvt", -- NULL, -- false, -- UID_INVALID, -- &s->manager->polkit_registry, -- error); -+ r = check_polkit_chvt(message, s->manager, error); - if (r < 0) - return r; - if (r == 0) -@@ -243,15 +228,7 @@ static int method_switch_to_next(sd_bus_message *message, void *userdata, sd_bus - assert(message); - assert(s); - -- r = bus_verify_polkit_async( -- message, -- CAP_SYS_ADMIN, -- "org.freedesktop.login1.chvt", -- NULL, -- false, -- UID_INVALID, -- &s->manager->polkit_registry, -- error); -+ r = check_polkit_chvt(message, s->manager, error); - if (r < 0) - return r; - if (r == 0) -@@ -271,15 +248,7 @@ static int method_switch_to_previous(sd_bus_message *message, void *userdata, sd - assert(message); - assert(s); - -- r = bus_verify_polkit_async( -- message, -- CAP_SYS_ADMIN, -- "org.freedesktop.login1.chvt", -- NULL, -- false, -- UID_INVALID, -- &s->manager->polkit_registry, -- error); -+ r = check_polkit_chvt(message, s->manager, error); - if (r < 0) - return r; - if (r == 0) -diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c -index ccc5ac8df2..57c8a4e900 100644 ---- a/src/login/logind-session-dbus.c -+++ b/src/login/logind-session-dbus.c -@@ -11,6 +11,7 @@ - #include "fd-util.h" - #include "logind-brightness.h" - #include "logind-dbus.h" -+#include "logind-polkit.h" - #include "logind-seat-dbus.h" - #include "logind-session-dbus.h" - #include "logind-session-device.h" -@@ -192,15 +193,7 @@ int bus_session_method_activate(sd_bus_message *message, void *userdata, sd_bus_ - assert(message); - assert(s); - -- r = bus_verify_polkit_async( -- message, -- CAP_SYS_ADMIN, -- "org.freedesktop.login1.chvt", -- NULL, -- false, -- UID_INVALID, -- &s->manager->polkit_registry, -- error); -+ r = check_polkit_chvt(message, s->manager, error); - if (r < 0) - return r; - if (r == 0) -diff --git a/src/login/meson.build b/src/login/meson.build -index 0a7d3d5440..7e46be2add 100644 ---- a/src/login/meson.build -+++ b/src/login/meson.build -@@ -26,6 +26,7 @@ liblogind_core_sources = files(''' - logind-device.h - logind-inhibit.c - logind-inhibit.h -+ logind-polkit.c - logind-seat-dbus.c - logind-seat-dbus.h - logind-seat.c --- -2.28.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch b/poky/meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch new file mode 100644 index 000000000..3af1daac9 --- /dev/null +++ b/poky/meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch @@ -0,0 +1,29 @@ +From 1adde6721ead386ccee6efe48038d6944b96319a Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 24 May 2021 18:26:27 -0700 +Subject: [PATCH] test-parse-argument: Include signal.h + +Fixes +src/test/test-parse-argument.c:49:29: error: use of undeclared identifier 'SIGABRT' + +Upstream-Status: Submitted [https://github.com/systemd/systemd/pull/19718] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/test/test-parse-argument.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/test/test-parse-argument.c b/src/test/test-parse-argument.c +index 4081a9f25a..820d69f092 100644 +--- a/src/test/test-parse-argument.c ++++ b/src/test/test-parse-argument.c +@@ -3,6 +3,7 @@ + #include "parse-argument.h" + #include "stdio-util.h" + #include "tests.h" ++#include <signal.h> + + static void test_parse_json_argument(void) { + log_info("/* %s */", __func__); +-- +2.31.1 + diff --git a/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch b/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch index d856bcb58..4cdf66e76 100644 --- a/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch +++ b/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch @@ -1,7 +1,7 @@ -From 66ece0b870b3a34fdabc48b88437e6cc354e9fce Mon Sep 17 00:00:00 2001 +From 159c53612444ec1df492bae528a5a88a275b93bf Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 13:41:41 +0800 -Subject: [PATCH 02/26] don't use glibc-specific qsort_r +Subject: [PATCH] don't use glibc-specific qsort_r Upstream-Status: Inappropriate [musl specific] @@ -12,6 +12,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Andrej Valek <andrej.valek@siemens.com> [Rebased for v247] Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> + --- src/basic/sort-util.h | 14 ------------ src/libsystemd/sd-hwdb/hwdb-util.c | 19 +++++++++++----- @@ -19,14 +20,13 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h -index 1d194a1f04..3394c9eb72 100644 +index 49586a4a24..d92a5ab0ed 100644 --- a/src/basic/sort-util.h +++ b/src/basic/sort-util.h -@@ -54,17 +54,3 @@ static inline void _qsort_safe(void *base, size_t nmemb, size_t size, __compar_f - int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \ +@@ -55,18 +55,4 @@ static inline void _qsort_safe(void *base, size_t nmemb, size_t size, __compar_f _qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \ }) -- + -static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) { - if (nmemb <= 1) - return; @@ -40,11 +40,13 @@ index 1d194a1f04..3394c9eb72 100644 - int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \ - qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \ - }) +- + int cmp_int(const int *a, const int *b); diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c -index 4c94ba9c88..95495dba6d 100644 +index fd45ff0f54..ac4b63c49b 100644 --- a/src/libsystemd/sd-hwdb/hwdb-util.c +++ b/src/libsystemd/sd-hwdb/hwdb-util.c -@@ -126,9 +126,13 @@ static void trie_free(struct trie *trie) { +@@ -126,9 +126,13 @@ static struct trie* trie_free(struct trie *trie) { DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free); @@ -85,10 +87,10 @@ index 4c94ba9c88..95495dba6d 100644 } diff --git a/src/shared/format-table.c b/src/shared/format-table.c -index a13a198b7a..bce10bc607 100644 +index dccb796b26..c3ab8ac296 100644 --- a/src/shared/format-table.c +++ b/src/shared/format-table.c -@@ -1243,30 +1243,32 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t +@@ -1290,30 +1290,32 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t return CMP(index_a, index_b); } @@ -131,7 +133,7 @@ index a13a198b7a..bce10bc607 100644 } /* Order identical lines by the order there were originally added in */ -@@ -1844,7 +1846,12 @@ int table_print(Table *t, FILE *f) { +@@ -1952,7 +1954,12 @@ int table_print(Table *t, FILE *f) { for (size_t i = 0; i < n_rows; i++) sorted[i] = i * t->n_columns; @@ -145,7 +147,7 @@ index a13a198b7a..bce10bc607 100644 } if (t->display_map) -@@ -2440,7 +2447,12 @@ int table_to_json(Table *t, JsonVariant **ret) { +@@ -2580,7 +2587,12 @@ int table_to_json(Table *t, JsonVariant **ret) { for (size_t i = 0; i < n_rows; i++) sorted[i] = i * t->n_columns; @@ -159,6 +161,3 @@ index a13a198b7a..bce10bc607 100644 } if (t->display_map) --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch b/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch index f43a22aa8..9b1768d9c 100644 --- a/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch +++ b/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch @@ -1,7 +1,7 @@ -From 9f0d5996bbb2db3679a4075fa8301750b786c03b Mon Sep 17 00:00:00 2001 +From 4afb8adc83348bf75964fc10af7902e04dd62637 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 13:55:12 +0800 -Subject: [PATCH 03/26] missing_type.h: add __compare_fn_t and comparison_fn_t +Subject: [PATCH] missing_type.h: add __compare_fn_t and comparison_fn_t Make it work with musl where comparison_fn_t and __compare_fn_t is not provided. @@ -13,11 +13,12 @@ Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Chen Qi <Qi.Chen@windriver.com> [Rebased for v242] Signed-off-by: Andrej Valek <andrej.valek@siemens.com> + --- - src/basic/missing_type.h | 9 +++++++++ - src/basic/sort-util.h | 1 + - src/core/kmod-setup.c | 1 + - src/journal/catalog.c | 1 + + src/basic/missing_type.h | 9 +++++++++ + src/basic/sort-util.h | 1 + + src/core/kmod-setup.c | 1 + + src/libsystemd/sd-journal/catalog.c | 1 + 4 files changed, 12 insertions(+) diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h @@ -38,7 +39,7 @@ index f6233090a9..aeaf6ad5ec 100644 +typedef int (*__compar_fn_t)(const void *, const void *); +#endif diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h -index 3394c9eb72..d9cb2aecb6 100644 +index d92a5ab0ed..a63867c716 100644 --- a/src/basic/sort-util.h +++ b/src/basic/sort-util.h @@ -4,6 +4,7 @@ @@ -61,10 +62,10 @@ index 8a7f82812a..a56f12f47f 100644 #if HAVE_KMOD #include "module-util.h" -diff --git a/src/journal/catalog.c b/src/journal/catalog.c -index 0f6ad8a29e..4e1077ade4 100644 ---- a/src/journal/catalog.c -+++ b/src/journal/catalog.c +diff --git a/src/libsystemd/sd-journal/catalog.c b/src/libsystemd/sd-journal/catalog.c +index aea3241d18..75e6c56a28 100644 +--- a/src/libsystemd/sd-journal/catalog.c ++++ b/src/libsystemd/sd-journal/catalog.c @@ -28,6 +28,7 @@ #include "string-util.h" #include "strv.h" @@ -73,6 +74,3 @@ index 0f6ad8a29e..4e1077ade4 100644 const char * const catalog_file_dirs[] = { "/usr/local/lib/systemd/catalog/", --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch b/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch index bdd64a025..dc40a2fe8 100644 --- a/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch +++ b/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch @@ -1,7 +1,7 @@ -From f3dbe29f7620a063af4d8eb3ea7c48ecd410200d Mon Sep 17 00:00:00 2001 -From: Chen Qi <Qi.Chen@windriver.com> -Date: Mon, 25 Feb 2019 14:04:21 +0800 -Subject: [PATCH 04/26] add fallback parse_printf_format implementation +From 6c18e5f9373da3e3b38f2c5727e2aefe07fcbbd9 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Sat, 22 May 2021 20:26:24 +0200 +Subject: [PATCH] [PATCH] add fallback parse_printf_format implementation Upstream-Status: Inappropriate [musl specific] @@ -11,21 +11,21 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com> [rebased for systemd 243] Signed-off-by: Scott Murray <scott.murray@konsulko.com> --- - meson.build | 1 + - src/basic/meson.build | 5 + - src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++ - src/basic/parse-printf-format.h | 57 +++++++ - src/basic/stdio-util.h | 2 +- - src/journal/journal-send.c | 2 +- + meson.build | 1 + + src/basic/meson.build | 5 + + src/basic/parse-printf-format.c | 273 +++++++++++++++++++++++ + src/basic/parse-printf-format.h | 57 +++++ + src/basic/stdio-util.h | 2 +- + src/libsystemd/sd-journal/journal-send.c | 2 +- 6 files changed, 338 insertions(+), 2 deletions(-) create mode 100644 src/basic/parse-printf-format.c create mode 100644 src/basic/parse-printf-format.h diff --git a/meson.build b/meson.build -index f406d595e6..6aa47fc755 100644 +index 27186d63a3..2abb7b3188 100644 --- a/meson.build +++ b/meson.build -@@ -646,6 +646,7 @@ endif +@@ -675,6 +675,7 @@ endif foreach header : ['crypt.h', 'linux/memfd.h', 'linux/vm_sockets.h', @@ -34,21 +34,21 @@ index f406d595e6..6aa47fc755 100644 'valgrind/memcheck.h', 'valgrind/valgrind.h', diff --git a/src/basic/meson.build b/src/basic/meson.build -index 1183ea83ad..aa5c958850 100644 +index 60ef801a25..aba2172edd 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build -@@ -322,6 +322,11 @@ foreach item : [['af', af_list_txt, 'af', ''], - endforeach +@@ -341,6 +341,11 @@ endforeach basic_sources += generated_gperf_headers -+ + +if conf.get('HAVE_PRINTF_H') != 1 + basic_sources += [files('parse-printf-format.c')] +endif + - basic_gcrypt_sources = files( - 'gcrypt-util.c', - 'gcrypt-util.h') ++ + ############################################################ + + arch_list = [ diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c new file mode 100644 index 0000000000..49437e5445 @@ -410,10 +410,10 @@ index 6dc1e72312..cea76b36cf 100644 #define snprintf_ok(buf, len, fmt, ...) \ ((size_t) snprintf(buf, len, fmt, __VA_ARGS__) < (len)) -diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c +diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c index fd3fd7ef9c..e8e6ad555b 100644 ---- a/src/journal/journal-send.c -+++ b/src/journal/journal-send.c +--- a/src/libsystemd/sd-journal/journal-send.c ++++ b/src/libsystemd/sd-journal/journal-send.c @@ -2,7 +2,6 @@ #include <errno.h> @@ -431,5 +431,5 @@ index fd3fd7ef9c..e8e6ad555b 100644 #define SNDBUF_SIZE (8*1024*1024) -- -2.27.0 +2.24.0 diff --git a/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch b/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch index d63e3c0d0..814c28f5b 100644 --- a/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch +++ b/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch @@ -1,7 +1,7 @@ -From 5aeae0ea89f5af74ed5d95bed1d87a03b3801ff0 Mon Sep 17 00:00:00 2001 +From 6b0732ac7164914ce16e231e35980b849bdfc4c8 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 14:18:21 +0800 -Subject: [PATCH 05/26] src/basic/missing.h: check for missing strndupa +Subject: [PATCH] src/basic/missing.h: check for missing strndupa include missing.h for definition of strndupa @@ -17,6 +17,7 @@ Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> [rebased for systemd 244] [Rebased for v247] Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> + --- meson.build | 1 + src/backlight/backlight.c | 1 + @@ -25,6 +26,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> src/basic/log.c | 1 + src/basic/missing_stdlib.h | 12 ++++++++++++ src/basic/mkdir.c | 1 + + src/basic/mountpoint-util.c | 1 + src/basic/parse-util.c | 1 + src/basic/path-lookup.c | 1 + src/basic/proc-cmdline.c | 1 + @@ -41,12 +43,12 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> src/coredump/coredump-vacuum.c | 1 + src/journal-remote/journal-remote-main.c | 1 + src/journal/journalctl.c | 1 + - src/journal/sd-journal.c | 1 + src/libsystemd/sd-bus/bus-message.c | 1 + src/libsystemd/sd-bus/bus-objects.c | 1 + src/libsystemd/sd-bus/bus-socket.c | 1 + src/libsystemd/sd-bus/sd-bus.c | 1 + src/libsystemd/sd-bus/test-bus-benchmark.c | 1 + + src/libsystemd/sd-journal/sd-journal.c | 1 + src/locale/keymap-util.c | 1 + src/login/pam_systemd.c | 1 + src/network/generator/network-generator.c | 1 + @@ -68,14 +70,14 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> src/udev/udev-builtin-path_id.c | 1 + src/udev/udev-event.c | 1 + src/udev/udev-rules.c | 1 + - 50 files changed, 61 insertions(+) + 51 files changed, 62 insertions(+) --- a/meson.build +++ b/meson.build -@@ -535,6 +535,7 @@ foreach ident : [ - #include <sys/wait.h>'''], - ['mallinfo', '''#include <malloc.h>'''], +@@ -550,6 +550,7 @@ foreach ident : [ + ['execveat', '''#include <unistd.h>'''], ['close_range', '''#include <unistd.h>'''], + ['epoll_pwait2', '''#include <sys/epoll.h>'''], + ['strndupa' , '''#include <string.h>'''], ] @@ -102,7 +104,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> _cleanup_free_ char *fs = NULL; --- a/src/basic/env-util.c +++ b/src/basic/env-util.c -@@ -15,6 +15,7 @@ +@@ -18,6 +18,7 @@ #include "string-util.h" #include "strv.h" #include "utf8.h" @@ -148,9 +150,19 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> int mkdir_safe_internal( const char *path, +--- a/src/basic/mountpoint-util.c ++++ b/src/basic/mountpoint-util.c +@@ -12,6 +12,7 @@ + #include "missing_stat.h" + #include "missing_syscall.h" + #include "mkdir.h" ++#include "missing_stdlib.h" + #include "mountpoint-util.h" + #include "parse-util.h" + #include "path-util.h" --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c -@@ -22,6 +22,7 @@ +@@ -19,6 +19,7 @@ #include "stat-util.h" #include "string-util.h" #include "strv.h" @@ -197,7 +209,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> +#include "missing_stdlib.h" #if HAVE_SELINUX - DEFINE_TRIVIAL_CLEANUP_FUNC(context_t, context_free); + DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(context_t, context_free, NULL); --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -27,6 +27,7 @@ @@ -220,10 +232,10 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> --- a/src/core/dbus-cgroup.c +++ b/src/core/dbus-cgroup.c -@@ -16,6 +16,7 @@ - #include "fileio.h" +@@ -17,6 +17,7 @@ #include "limits-util.h" #include "path-util.h" + #include "percent-util.h" +#include "missing_stdlib.h" BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", TasksMax, tasks_max_resolve); @@ -240,7 +252,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput); --- a/src/core/dbus-util.c +++ b/src/core/dbus-util.c -@@ -7,6 +7,7 @@ +@@ -9,6 +9,7 @@ #include "unit-printf.h" #include "user-util.h" #include "unit.h" @@ -251,7 +263,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> --- a/src/core/execute.c +++ b/src/core/execute.c @@ -96,6 +96,7 @@ - #include "unit.h" + #include "unit-serialize.h" #include "user-util.h" #include "utmp-wtmp.h" +#include "missing_stdlib.h" @@ -290,7 +302,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */ --- a/src/journal-remote/journal-remote-main.c +++ b/src/journal-remote/journal-remote-main.c -@@ -22,6 +22,7 @@ +@@ -24,6 +24,7 @@ #include "stat-util.h" #include "string-table.h" #include "strv.h" @@ -300,7 +312,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> #define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem" --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c -@@ -73,6 +73,7 @@ +@@ -72,6 +72,7 @@ #include "unit-name.h" #include "user-util.h" #include "varlink.h" @@ -308,19 +320,9 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE) #define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */ ---- a/src/journal/sd-journal.c -+++ b/src/journal/sd-journal.c -@@ -40,6 +40,7 @@ - #include "string-util.h" - #include "strv.h" - #include "syslog-util.h" -+#include "missing_stdlib.h" - - #define JOURNAL_FILES_MAX 7168 - --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c -@@ -21,6 +21,7 @@ +@@ -20,6 +20,7 @@ #include "strv.h" #include "time-util.h" #include "utf8.h" @@ -330,7 +332,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c -@@ -13,6 +13,7 @@ +@@ -12,6 +12,7 @@ #include "set.h" #include "string-util.h" #include "strv.h" @@ -351,9 +353,9 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -41,6 +41,7 @@ - #include "process-util.h" #include "string-util.h" #include "strv.h" + #include "user-util.h" +#include "missing_stdlib.h" #define log_debug_bus_message(m) \ @@ -361,16 +363,26 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> --- a/src/libsystemd/sd-bus/test-bus-benchmark.c +++ b/src/libsystemd/sd-bus/test-bus-benchmark.c @@ -14,6 +14,7 @@ - #include "missing_resource.h" + #include "string-util.h" #include "time-util.h" #include "util.h" +#include "missing_stdlib.h" #define MAX_SIZE (2*1024*1024) +--- a/src/libsystemd/sd-journal/sd-journal.c ++++ b/src/libsystemd/sd-journal/sd-journal.c +@@ -40,6 +40,7 @@ + #include "string-util.h" + #include "strv.h" + #include "syslog-util.h" ++#include "missing_stdlib.h" + + #define JOURNAL_FILES_MAX 7168 + --- a/src/locale/keymap-util.c +++ b/src/locale/keymap-util.c -@@ -21,6 +21,7 @@ +@@ -24,6 +24,7 @@ #include "string-util.h" #include "strv.h" #include "tmpfile-util.h" @@ -410,17 +422,17 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> Settings *s; --- a/src/nss-mymachines/nss-mymachines.c +++ b/src/nss-mymachines/nss-mymachines.c -@@ -19,6 +19,7 @@ +@@ -21,6 +21,7 @@ #include "nss-util.h" #include "signal-util.h" #include "string-util.h" +#include "missing_stdlib.h" - NSS_GETHOSTBYNAME_PROTOTYPES(mymachines); - NSS_GETPW_PROTOTYPES(mymachines); + static void setup_logging(void) { + /* We need a dummy function because log_parse_environment is a macro. */ --- a/src/portable/portable.c +++ b/src/portable/portable.c -@@ -31,6 +31,7 @@ +@@ -32,6 +32,7 @@ #include "strv.h" #include "tmpfile-util.h" #include "user-util.h" @@ -430,7 +442,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> --- a/src/resolve/resolvectl.c +++ b/src/resolve/resolvectl.c -@@ -37,6 +37,7 @@ +@@ -41,6 +41,7 @@ #include "terminal-util.h" #include "utf8.h" #include "verbs.h" @@ -460,7 +472,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> char *cgroup_path; --- a/src/shared/bus-unit-util.c +++ b/src/shared/bus-unit-util.c -@@ -44,6 +44,7 @@ +@@ -45,6 +45,7 @@ #include "unit-def.h" #include "user-util.h" #include "utf8.h" @@ -551,16 +563,16 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> --- a/src/udev/udev-builtin-path_id.c +++ b/src/udev/udev-builtin-path_id.c @@ -22,6 +22,7 @@ - #include "strv.h" #include "sysexits.h" #include "udev-builtin.h" + #include "udev-util.h" +#include "missing_stdlib.h" _printf_(2,3) static void path_prepend(char **path, const char *fmt, ...) { --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c -@@ -34,6 +34,7 @@ +@@ -33,6 +33,7 @@ #include "udev-util.h" #include "udev-watch.h" #include "user-util.h" @@ -570,7 +582,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> sd_device *device; --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c -@@ -30,6 +30,7 @@ +@@ -31,6 +31,7 @@ #include "udev-rules.h" #include "user-util.h" #include "virt.h" @@ -578,13 +590,13 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> #define RULES_DIRS (const char* const*) CONF_PATHS_STRV("udev/rules.d") ---- a/src/basic/mountpoint-util.c -+++ b/src/basic/mountpoint-util.c -@@ -10,6 +10,7 @@ - #include "fs-util.h" - #include "missing_stat.h" - #include "missing_syscall.h" -+#include "missing_stdlib.h" - #include "mountpoint-util.h" +--- a/src/basic/percent-util.c ++++ b/src/basic/percent-util.c +@@ -3,6 +3,7 @@ + #include "percent-util.h" + #include "string-util.h" #include "parse-util.h" - #include "path-util.h" ++#include "missing_stdlib.h" + + static int parse_parts_value_whole(const char *p, const char *symbol) { + const char *pc, *n; diff --git a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch index a978558b4..54d714266 100644 --- a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch +++ b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch @@ -1,7 +1,7 @@ -From d3ed0da271738fd0fc3d3e4d82d6f5810334b05e Mon Sep 17 00:00:00 2001 +From 2069f0b0d5ab8f869aeba635a347e0b11d362b30 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Thu, 26 Oct 2017 22:10:42 -0700 -Subject: [PATCH 06/26] Include netinet/if_ether.h +Subject: [PATCH] Include netinet/if_ether.h Fixes /path/to/systemd/recipe-sysroot/usr/include/netinet/if_ether.h:101:8: error: redefinition of 'struct ethhdr' @@ -31,6 +31,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Scott Murray <scott.murray@konsulko.com> [rebased for systemd 247] Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> + --- src/libsystemd-network/sd-dhcp6-client.c | 1 - src/libsystemd/sd-netlink/netlink-types.c | 1 + @@ -56,7 +57,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> 21 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c -index 66f87c4b95..de1264ae46 100644 +index 410bfda10e..e70ed8be92 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -5,7 +5,6 @@ @@ -68,7 +69,7 @@ index 66f87c4b95..de1264ae46 100644 #include "sd-dhcp6-client.h" diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c -index 6fb6c147d9..8eda02d202 100644 +index ed7b9a8cd1..112c0b09e4 100644 --- a/src/libsystemd/sd-netlink/netlink-types.c +++ b/src/libsystemd/sd-netlink/netlink-types.c @@ -3,6 +3,7 @@ @@ -80,7 +81,7 @@ index 6fb6c147d9..8eda02d202 100644 #include <linux/netlink.h> #include <linux/rtnetlink.h> diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c -index bb67beb665..f5780f1aec 100644 +index e7c4ed3c7c..3a1e4f9072 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -3,6 +3,7 @@ @@ -92,7 +93,7 @@ index bb67beb665..f5780f1aec 100644 /* When we include libgen.h because we need dirname() we immediately * undefine basename() since libgen.h defines it as a macro to the POSIX diff --git a/src/network/netdev/bond.c b/src/network/netdev/bond.c -index e27f36067b..8868f1da5d 100644 +index cf7ca88d6f..34ab468191 100644 --- a/src/network/netdev/bond.c +++ b/src/network/netdev/bond.c @@ -1,5 +1,6 @@ @@ -103,7 +104,7 @@ index e27f36067b..8868f1da5d 100644 #include "bond.h" #include "bond-util.h" diff --git a/src/network/netdev/bridge.c b/src/network/netdev/bridge.c -index 1f59cd8b42..5fdbae7e99 100644 +index 38432f1578..79ccfe578e 100644 --- a/src/network/netdev/bridge.c +++ b/src/network/netdev/bridge.c @@ -1,5 +1,6 @@ @@ -114,7 +115,7 @@ index 1f59cd8b42..5fdbae7e99 100644 #include "bridge.h" diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c -index 82e71c3920..fbae86e216 100644 +index 77c5f8c4e7..04be1b4ab2 100644 --- a/src/network/netdev/macsec.c +++ b/src/network/netdev/macsec.c @@ -1,5 +1,6 @@ @@ -125,19 +126,19 @@ index 82e71c3920..fbae86e216 100644 #include <linux/if_ether.h> #include <linux/if_macsec.h> diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf -index 4e89761f2c..91251fa6ec 100644 +index 8abe044890..3c54c58928 100644 --- a/src/network/netdev/netdev-gperf.gperf +++ b/src/network/netdev/netdev-gperf.gperf -@@ -2,6 +2,7 @@ +@@ -3,6 +3,7 @@ #if __GNUC__ >= 7 _Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") #endif +#include <netinet/if_ether.h> #include <stddef.h> #include "bareudp.h" - #include "bond.h" + #include "batadv.h" diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c -index 9f390b5781..62aeafb1e4 100644 +index b31f0fa81a..c80e1ff537 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -1,5 +1,6 @@ @@ -148,7 +149,7 @@ index 9f390b5781..62aeafb1e4 100644 #include <netinet/in.h> #include <unistd.h> diff --git a/src/network/networkd-brvlan.c b/src/network/networkd-brvlan.c -index e53c73c30c..9bf0771b84 100644 +index 2847b336c9..4d6af8c642 100644 --- a/src/network/networkd-brvlan.c +++ b/src/network/networkd-brvlan.c @@ -4,6 +4,7 @@ @@ -160,7 +161,7 @@ index e53c73c30c..9bf0771b84 100644 #include <stdbool.h> diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c -index 9f58121350..554d006cb8 100644 +index 00d055cf8d..65821c1d31 100644 --- a/src/network/networkd-dhcp-common.c +++ b/src/network/networkd-dhcp-common.c @@ -1,7 +1,8 @@ @@ -171,9 +172,9 @@ index 9f58121350..554d006cb8 100644 +#include <net/if_arp.h> +#include <net/if.h> + #include "bus-error.h" #include "dhcp-internal.h" - #include "dhcp6-internal.h" -@@ -10,6 +11,7 @@ +@@ -11,6 +12,7 @@ #include "networkd-dhcp-common.h" #include "networkd-link.h" #include "networkd-manager.h" @@ -182,7 +183,7 @@ index 9f58121350..554d006cb8 100644 #include "parse-util.h" #include "socket-util.h" diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c -index cf279c640d..bae541029b 100644 +index 5cdf432c27..93cffb9863 100644 --- a/src/network/networkd-dhcp-server.c +++ b/src/network/networkd-dhcp-server.c @@ -1,8 +1,8 @@ @@ -197,7 +198,7 @@ index cf279c640d..bae541029b 100644 #include "sd-dhcp-server.h" diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c -index f3c1e5f609..e4ef6eca63 100644 +index 23dc3a45db..7ae6c2467a 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -1,9 +1,9 @@ @@ -212,7 +213,7 @@ index f3c1e5f609..e4ef6eca63 100644 #include "escape.h" #include "alloc-util.h" diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c -index 5c077c1ec8..fa98042aa5 100644 +index aa077d6219..4f6ce22059 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -3,9 +3,9 @@ @@ -227,7 +228,7 @@ index 5c077c1ec8..fa98042aa5 100644 #include "sd-dhcp6-client.h" diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c -index 3bfe636691..e0c68c8ad3 100644 +index 8219d95b0d..c92230453b 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1,8 +1,8 @@ @@ -241,7 +242,7 @@ index 3bfe636691..e0c68c8ad3 100644 #include <unistd.h> diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c -index 3254641461..f0ada419fd 100644 +index e5ffd35b6f..871ebb32c6 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -1,5 +1,6 @@ @@ -252,7 +253,7 @@ index 3254641461..f0ada419fd 100644 #include <netinet/in.h> #include <linux/netdevice.h> diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c -index 0ed89584ef..e7e157c201 100644 +index a74541a6c9..a10549b336 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -1,7 +1,10 @@ @@ -268,7 +269,7 @@ index 0ed89584ef..e7e157c201 100644 #include "alloc-util.h" #include "netlink-util.h" diff --git a/src/network/test-network-tables.c b/src/network/test-network-tables.c -index 475cac7527..9bae6eda16 100644 +index ce34449554..0b5dc01182 100644 --- a/src/network/test-network-tables.c +++ b/src/network/test-network-tables.c @@ -1,5 +1,6 @@ @@ -279,7 +280,7 @@ index 475cac7527..9bae6eda16 100644 #include "dhcp6-internal.h" #include "dhcp6-protocol.h" diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c -index e6fab262f2..41dd3d7df7 100644 +index 654d36a83a..f4ed42d543 100644 --- a/src/shared/ethtool-util.c +++ b/src/shared/ethtool-util.c @@ -1,5 +1,6 @@ @@ -290,7 +291,7 @@ index e6fab262f2..41dd3d7df7 100644 #include <sys/ioctl.h> #include <linux/ethtool.h> diff --git a/src/shared/ethtool-util.h b/src/shared/ethtool-util.h -index f94b3e15bf..08a7e4fa09 100644 +index 11e2906681..a171df0737 100644 --- a/src/shared/ethtool-util.h +++ b/src/shared/ethtool-util.h @@ -3,6 +3,7 @@ @@ -302,7 +303,7 @@ index f94b3e15bf..08a7e4fa09 100644 #include "conf-parser.h" diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c -index d12fd0e299..636806dc23 100644 +index 31e5d0cd67..f25f821364 100644 --- a/src/udev/net/link-config.c +++ b/src/udev/net/link-config.c @@ -1,5 +1,6 @@ @@ -323,6 +324,3 @@ index 87e1fb133e..13876029d0 100644 #include "alloc-util.h" #include "device-util.h" #include "errno-util.h" --- -2.25.1 - diff --git a/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch index 686542158..2ff08c7fa 100644 --- a/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch +++ b/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch @@ -1,8 +1,7 @@ -From 87a14dde13c8fa68239a4ab62914a093062b3b29 Mon Sep 17 00:00:00 2001 +From bca73ff2fbff2dc311040a87a4f536f89af07ad6 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 14:56:21 +0800 -Subject: [PATCH 07/26] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not - defined +Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined If the standard library doesn't provide brace expansion users just won't get it. @@ -17,6 +16,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Chen Qi <Qi.Chen@windriver.com> [rebased for systemd 243] Signed-off-by: Scott Murray <scott.murray@konsulko.com> + --- src/basic/glob-util.c | 12 ++++++++++++ src/test/test-glob-util.c | 16 ++++++++++++++++ @@ -115,10 +115,10 @@ index df6444c433..79a692046e 100644 (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL); diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c -index 9906c70eef..5eb63b1d57 100644 +index 6b73d1e6d5..26b3b74275 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c -@@ -63,6 +63,12 @@ +@@ -66,6 +66,12 @@ #include "umask-util.h" #include "user-util.h" @@ -131,7 +131,7 @@ index 9906c70eef..5eb63b1d57 100644 /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates * them in the file system. This is intended to be used to create * properly owned directories beneath /tmp, /var/tmp, /run, which are -@@ -1936,7 +1942,9 @@ finish: +@@ -1947,7 +1953,9 @@ finish: static int glob_item(Item *i, action_t action) { _cleanup_globfree_ glob_t g = { @@ -141,7 +141,7 @@ index 9906c70eef..5eb63b1d57 100644 }; int r = 0, k; char **fn; -@@ -1956,7 +1964,9 @@ static int glob_item(Item *i, action_t action) { +@@ -1967,7 +1975,9 @@ static int glob_item(Item *i, action_t action) { static int glob_item_recursively(Item *i, fdaction_t action) { _cleanup_globfree_ glob_t g = { @@ -151,6 +151,3 @@ index 9906c70eef..5eb63b1d57 100644 }; int r = 0, k; char **fn; --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch b/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch index 94cdc2efd..142ca0134 100644 --- a/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch +++ b/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch @@ -1,7 +1,7 @@ -From 8caea3fe87d55fd16de7d1b8266239fa954cb498 Mon Sep 17 00:00:00 2001 +From e0d1912f0246c97e5e7b4177691363d2d077e11d Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 15:00:06 +0800 -Subject: [PATCH 08/26] add missing FTW_ macros for musl +Subject: [PATCH] add missing FTW_ macros for musl This is to avoid build failures like below for musl. @@ -10,6 +10,7 @@ This is to avoid build failures like below for musl. Upstream-Status: Inappropriate [musl specific] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/basic/missing_type.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) @@ -42,6 +43,3 @@ index aeaf6ad5ec..3df1084ef2 100644 +#ifndef FTW_SKIP_SIBLINGS +#define FTW_SKIP_SIBLINGS 3 +#endif --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch index 76cc75cf6..53f0a1ba6 100644 --- a/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch +++ b/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch @@ -1,17 +1,18 @@ -From d8e4f0aa1760e4c7bb8476beecd35025c9cbb95a Mon Sep 17 00:00:00 2001 +From bb41fe773881a8f1d9615d388320b9c6fc47bfe5 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 15:03:47 +0800 -Subject: [PATCH 09/26] fix missing of __register_atfork for non-glibc builds +Subject: [PATCH] fix missing of __register_atfork for non-glibc builds Upstream-Status: Inappropriate [musl specific] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/basic/process-util.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/basic/process-util.c b/src/basic/process-util.c -index 0851613fc9..4417101569 100644 +index 7d4301eadb..caa9dfe3a3 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -18,6 +18,9 @@ @@ -24,7 +25,7 @@ index 0851613fc9..4417101569 100644 #include "alloc-util.h" #include "architecture.h" -@@ -1143,11 +1146,15 @@ void reset_cached_pid(void) { +@@ -1121,11 +1124,15 @@ void reset_cached_pid(void) { cached_pid = CACHED_PID_UNSET; } @@ -40,6 +41,3 @@ index 0851613fc9..4417101569 100644 pid_t getpid_cached(void) { static bool installed = false; --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch b/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch index aeacd865a..940db4c5c 100644 --- a/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch +++ b/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch @@ -1,7 +1,7 @@ -From e45bb02174812e4935214f42a18725be320770d5 Mon Sep 17 00:00:00 2001 +From dc40487e0ac26e3ca317429b9c3e8f01772de60a Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 15:12:41 +0800 -Subject: [PATCH 10/26] Use uintmax_t for handling rlim_t +Subject: [PATCH] Use uintmax_t for handling rlim_t PRIu{32,64} is not right format to represent rlim_t type therefore use %ju and typecast the rlim_t variables to @@ -20,6 +20,7 @@ Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199] Signed-off-by: Khem Raj <raj.khem@gmail.com> [Rebased for v241] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/basic/format-util.h | 8 +------- src/basic/rlimit-util.c | 10 +++++----- @@ -46,10 +47,19 @@ index b7e18768e3..3195ab205d 100644 #if SIZEOF_DEV_T == 8 # define DEV_FMT "%" PRIu64 diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c -index 880976312c..9e1b61cd4a 100644 +index 23d108d5df..b037734ee3 100644 --- a/src/basic/rlimit-util.c +++ b/src/basic/rlimit-util.c -@@ -306,13 +306,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) { +@@ -43,7 +43,7 @@ int setrlimit_closest(int resource, const struct rlimit *rlim) { + fixed.rlim_max == highest.rlim_max) + return 0; + +- log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", rlim->rlim_max, rlimit_to_string(resource), fixed.rlim_max); ++ log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", (uintmax_t)rlim->rlim_max, rlimit_to_string(resource), (uintmax_t)fixed.rlim_max); + + if (setrlimit(resource, &fixed) < 0) + return -errno; +@@ -308,13 +308,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) { if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY) s = strdup("infinity"); else if (rl->rlim_cur >= RLIM_INFINITY) @@ -67,7 +77,7 @@ index 880976312c..9e1b61cd4a 100644 if (!s) return -ENOMEM; -@@ -403,7 +403,7 @@ int rlimit_nofile_safe(void) { +@@ -405,7 +405,7 @@ int rlimit_nofile_safe(void) { rl.rlim_cur = FD_SETSIZE; if (setrlimit(RLIMIT_NOFILE, &rl) < 0) @@ -77,10 +87,10 @@ index 880976312c..9e1b61cd4a 100644 return 1; } diff --git a/src/core/execute.c b/src/core/execute.c -index 89632e0582..335283776c 100644 +index f82fc294c0..4696d055a8 100644 --- a/src/core/execute.c +++ b/src/core/execute.c -@@ -5288,9 +5288,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) { +@@ -5370,9 +5370,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) { for (unsigned i = 0; i < RLIM_NLIMITS; i++) if (c->rlimit[i]) { fprintf(f, "%sLimit%s: " RLIM_FMT "\n", @@ -92,6 +102,3 @@ index 89632e0582..335283776c 100644 } if (c->ioprio_set) { --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch b/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch index 6d7fdbcb6..b1d782719 100644 --- a/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch +++ b/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch @@ -1,13 +1,13 @@ -From d1db531ddd3bbf94d5e764b7917bcc8684ff6357 Mon Sep 17 00:00:00 2001 +From f8be7b283309e4332eedc088774daac637afef7b Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Wed, 28 Feb 2018 21:25:22 -0800 -Subject: [PATCH 11/26] test-sizeof.c: Disable tests for missing typedefs in - musl +Subject: [PATCH] test-sizeof.c: Disable tests for missing typedefs in musl Upstream-Status: Inappropriate [musl specific] Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/test/test-sizeof.c | 4 ++++ 1 file changed, 4 insertions(+) @@ -37,6 +37,3 @@ index 3c9dc180fa..e1a59d408c 100644 info(pid_t); info(uid_t); info(gid_t); --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch index c15b6e7d8..5f2178734 100644 --- a/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch +++ b/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch @@ -1,7 +1,7 @@ -From 03e89da266edf70121a19ffc32a78cc3b97585ef Mon Sep 17 00:00:00 2001 +From 06915b70735caa66987af758ebdc4207757ae758 Mon Sep 17 00:00:00 2001 From: Andre McCurdy <armccurdy@gmail.com> Date: Tue, 10 Oct 2017 14:33:30 -0700 -Subject: [PATCH 12/26] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat() +Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat() Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to do and it's not portable (not supported by musl). See: @@ -25,20 +25,22 @@ just historical and not actually necessary or desired behaviour? Upstream-Status: Inappropriate [musl specific] Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + --- - src/basic/fs-util.h | 22 +++++++++++++++++++++- + src/basic/fs-util.h | 23 +++++++++++++++++++++-- src/shared/base-filesystem.c | 6 +++--- - 2 files changed, 24 insertions(+), 4 deletions(-) + 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h -index 5dc8853eac..0491b3dae2 100644 +index 027037f7a7..16eb379caf 100644 --- a/src/basic/fs-util.h +++ b/src/basic/fs-util.h -@@ -43,7 +43,27 @@ int futimens_opath(int fd, const struct timespec ts[2]); +@@ -44,8 +44,27 @@ int futimens_opath(int fd, const struct timespec ts[2]); int fd_warn_permissions(const char *path, int fd); int stat_warn_permissions(const char *path, const struct stat *st); --#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW) +-#define laccess(path, mode) \ +- (faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW) < 0 ? -errno : 0) +/* + Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to + do and it's not portable (not supported by musl). See: @@ -94,6 +96,3 @@ index 1d05409086..1ed06c31ab 100644 continue; } --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch index 89736bcfd..51b145729 100644 --- a/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch +++ b/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch @@ -1,8 +1,7 @@ -From dd134880e9a16595ab473934577e873c748e9c7a Mon Sep 17 00:00:00 2001 +From 0c44af262cfa07c57db4b32de1f7610af47797f4 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Sun, 27 May 2018 08:36:44 -0700 -Subject: [PATCH 13/26] Define glibc compatible basename() for non-glibc - systems +Subject: [PATCH] Define glibc compatible basename() for non-glibc systems Fixes builds with musl, even though systemd is adamant about using non-posix basename implementation, we have a way out @@ -10,12 +9,13 @@ using non-posix basename implementation, we have a way out Upstream-Status: Inappropriate [musl specific] Signed-off-by: Khem Raj <raj.khem@gmail.com> + --- src/machine/machine-dbus.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c -index f5780f1aec..aec5825b3e 100644 +index 3a1e4f9072..ab87b9882c 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -11,6 +11,11 @@ @@ -30,6 +30,3 @@ index f5780f1aec..aec5825b3e 100644 #include "alloc-util.h" #include "bus-common-errors.h" #include "bus-get-properties.h" --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch index e95d2ae07..7444d4375 100644 --- a/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch +++ b/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch @@ -1,7 +1,7 @@ -From 55af446156da863b5b36a1109845858956a4c274 Mon Sep 17 00:00:00 2001 +From 0f4b60e34a806055c678eb97a7ec7e21291bcf48 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Wed, 4 Jul 2018 15:00:44 +0800 -Subject: [PATCH 14/26] Do not disable buffering when writing to oom_score_adj +Subject: [PATCH] Do not disable buffering when writing to oom_score_adj On musl, disabling buffering when writing to oom_score_adj will cause the following error. @@ -19,15 +19,16 @@ Upstream-Status: Inappropriate [musl specific] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> [rebased for systemd 243] Signed-off-by: Scott Murray <scott.murray@konsulko.com> + --- src/basic/process-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basic/process-util.c b/src/basic/process-util.c -index 4417101569..556dab8ebf 100644 +index caa9dfe3a3..6101f43db5 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c -@@ -1536,7 +1536,7 @@ int set_oom_score_adjust(int value) { +@@ -1523,7 +1523,7 @@ int set_oom_score_adjust(int value) { sprintf(t, "%i", value); return write_string_file("/proc/self/oom_score_adj", t, @@ -36,6 +37,3 @@ index 4417101569..556dab8ebf 100644 } int pidfd_get_pid(int fd, pid_t *ret) { --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch index 5cdcf84dc..90cc70d21 100644 --- a/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch +++ b/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch @@ -1,7 +1,7 @@ -From e382845aed90cfe4496a8351d57d4466dd2e9a9c Mon Sep 17 00:00:00 2001 +From c30ab62d18ce88187f5eb6c236e0977c9337f68d Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Tue, 10 Jul 2018 15:40:17 +0800 -Subject: [PATCH 15/26] distinguish XSI-compliant strerror_r from GNU-specifi +Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi strerror_r XSI-compliant strerror_r and GNU-specifi strerror_r are different. @@ -18,28 +18,12 @@ assigned to (char *) variable, resulting in segment fault. Upstream-Status: Inappropriate [musl specific] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- - src/journal/journal-send.c | 5 +++++ - src/libsystemd/sd-bus/bus-error.c | 5 +++++ + src/libsystemd/sd-bus/bus-error.c | 5 +++++ + src/libsystemd/sd-journal/journal-send.c | 5 +++++ 2 files changed, 10 insertions(+) -diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c -index e8e6ad555b..8ca5271d02 100644 ---- a/src/journal/journal-send.c -+++ b/src/journal/journal-send.c -@@ -348,7 +348,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove - char* j; - - errno = 0; -+#ifndef __GLIBC__ -+ strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k); -+ j = buffer + 8 + k; -+#else - j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k); -+#endif - if (errno == 0) { - char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1]; - diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c index 8da2024a50..9605a9b869 100644 --- a/src/libsystemd/sd-bus/bus-error.c @@ -57,6 +41,20 @@ index 8da2024a50..9605a9b869 100644 if (errno == ERANGE || strlen(x) >= k - 1) { free(m); k *= 2; --- -2.27.0 - +diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c +index e8e6ad555b..8ca5271d02 100644 +--- a/src/libsystemd/sd-journal/journal-send.c ++++ b/src/libsystemd/sd-journal/journal-send.c +@@ -348,7 +348,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove + char* j; + + errno = 0; ++#ifndef __GLIBC__ ++ strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k); ++ j = buffer + 8 + k; ++#else + j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k); ++#endif + if (errno == 0) { + char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1]; + diff --git a/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch b/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch index 9a125de63..de7f9ecfa 100644 --- a/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch +++ b/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch @@ -1,7 +1,7 @@ -From 0c7af5f288231a8c0545e169e01ba5ee173cafe7 Mon Sep 17 00:00:00 2001 +From fa86e5578256dddb296fd30128929ea7c4b792a4 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 15:18:00 +0800 -Subject: [PATCH 16/26] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP +Subject: [PATCH] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP for currently unknown reasons they get exported to the shared libries even without being listed in the sym file @@ -11,6 +11,7 @@ Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> [Rebased for v241] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/libsystemd/sd-bus/bus-error.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) @@ -30,6 +31,3 @@ index 9605a9b869..38b6cf90c3 100644 /* Additional maps registered with sd_bus_error_add_map() are in this * NULL terminated array */ --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch b/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch index 31747c6b4..d9ef2b8a4 100644 --- a/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch +++ b/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch @@ -1,7 +1,7 @@ -From 32dd7a47b87793cd836ab4bb776d1524f24c2d58 Mon Sep 17 00:00:00 2001 +From 11e730694706fa354a0e43c588ef66677a777d9a Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 15:27:54 +0800 -Subject: [PATCH 17/26] missing_type.h: add __compar_d_fn_t definition +Subject: [PATCH] missing_type.h: add __compar_d_fn_t definition Fix the following compile failure: src/basic/util.h:71:18: error: unknown type name '__compar_d_fn_t'; did you mean '__compar_fn_t'? @@ -9,6 +9,7 @@ src/basic/util.h:71:18: error: unknown type name '__compar_d_fn_t'; did you mean Upstream-Status: Inappropriate [musl specific] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/basic/missing_type.h | 1 + 1 file changed, 1 insertion(+) @@ -25,6 +26,3 @@ index 3df1084ef2..697aa7f58a 100644 #endif #ifndef __COMPAR_FN_T --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch b/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch index 56d361a21..3b6085423 100644 --- a/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch +++ b/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch @@ -1,7 +1,7 @@ -From bfc3416edeb69082ac9b9c9e844f12d7b45bb006 Mon Sep 17 00:00:00 2001 +From 45bae28d3da6607d33d54f4b30a500f5249aadde Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 15:44:54 +0800 -Subject: [PATCH 18/26] avoid redefinition of prctl_mm_map structure +Subject: [PATCH] avoid redefinition of prctl_mm_map structure Fix the following compile failure: error: redefinition of 'struct prctl_mm_map' @@ -9,6 +9,7 @@ error: redefinition of 'struct prctl_mm_map' Upstream-Status: Inappropriate [musl specific] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/basic/missing_prctl.h | 2 ++ 1 file changed, 2 insertions(+) @@ -27,6 +28,3 @@ index ab851306ba..5547cad875 100644 /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */ #ifndef PR_CAP_AMBIENT --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch b/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch index 6ca196489..7d6433f31 100644 --- a/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch +++ b/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch @@ -1,16 +1,17 @@ -From e427f03de2c56e868bb0f24aa231315b2dae1b71 Mon Sep 17 00:00:00 2001 +From 6e593ff2afbe4bfe15eee2ec34e51490a38462f5 Mon Sep 17 00:00:00 2001 From: Alex Kiernan <alex.kiernan@gmail.com> Date: Fri, 7 Aug 2020 15:19:27 +0000 -Subject: [PATCH 19/26] Handle missing LOCK_EX +Subject: [PATCH] Handle missing LOCK_EX Upstream-Status: Inappropriate [musl specific] Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> + --- src/partition/makefs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/partition/makefs.c b/src/partition/makefs.c -index fd924d2231..b97580fdcc 100644 +index 7c94fbfedb..42f966722d 100644 --- a/src/partition/makefs.c +++ b/src/partition/makefs.c @@ -6,6 +6,7 @@ @@ -21,6 +22,3 @@ index fd924d2231..b97580fdcc 100644 #include "alloc-util.h" #include "blockdev-util.h" --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch b/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch index f74de4384..1faee1c05 100644 --- a/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch +++ b/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch @@ -1,7 +1,7 @@ -From 9abbc5e69e21aef0d4d4567e69302fa660b76c53 Mon Sep 17 00:00:00 2001 +From ac579b296aa29c2f1dad9425c6d795e154ec8f7c Mon Sep 17 00:00:00 2001 From: Alex Kiernan <alex.kiernan@gmail.com> Date: Fri, 7 Aug 2020 15:20:17 +0000 -Subject: [PATCH 20/26] Fix incompatible pointer type struct sockaddr_un * +Subject: [PATCH] Fix incompatible pointer type struct sockaddr_un * | ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c: In function 'cant_be_in_netns': | ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c:4893:25: error: passing argument 2 of 'connect' from incompatible pointer type [-Werror=incompatible-pointer-types] @@ -18,15 +18,16 @@ Subject: [PATCH 20/26] Fix incompatible pointer type struct sockaddr_un * Upstream-Status: Inappropriate [musl specific] Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> + --- src/nspawn/nspawn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 0842731c18..3528b7ff14 100644 +index a4ac8ed2bb..0c41a48d4b 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c -@@ -5084,7 +5084,7 @@ static int cant_be_in_netns(void) { +@@ -5125,7 +5125,7 @@ static int cant_be_in_netns(void) { if (fd < 0) return log_error_errno(errno, "Failed to allocate udev control socket: %m"); @@ -35,6 +36,3 @@ index 0842731c18..3528b7ff14 100644 if (errno == ENOENT || ERRNO_IS_DISCONNECT(errno)) return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch b/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch index fa6652a5b..14c8ff73a 100644 --- a/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch +++ b/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch @@ -1,7 +1,7 @@ -From 1f5bc54bed0b365e7e448c26f6c792dbe8b3b198 Mon Sep 17 00:00:00 2001 +From 6bc78df50adb48d24a2abfdf65b44b932cc5a571 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Mon, 25 Feb 2019 16:53:06 +0800 -Subject: [PATCH 21/26] test-json.c: define M_PIl +Subject: [PATCH] test-json.c: define M_PIl Fix the following compile failure: src/test/test-json.c:305:50: error: 'M_PIl' undeclared (first use in this function); did you mean 'M_PI'? @@ -9,6 +9,7 @@ src/test/test-json.c:305:50: error: 'M_PIl' undeclared (first use in this functi Upstream-Status: Inappropriate [musl specific] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> + --- src/test/test-json.c | 4 ++++ 1 file changed, 4 insertions(+) @@ -28,6 +29,3 @@ index 1d4b11945e..572c8cf9d0 100644 static void test_tokenizer(const char *data, ...) { unsigned line = 0, column = 0; void *state = NULL; --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch b/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch index 675fd20f1..bd627c51e 100644 --- a/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch +++ b/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch @@ -1,7 +1,7 @@ -From 564dba5ad0cd884e3f69fa19ca64095413578ea5 Mon Sep 17 00:00:00 2001 +From 7cb6579572b50ef44bc0a321a4c73cce55b0c2f2 Mon Sep 17 00:00:00 2001 From: Chen Qi <Qi.Chen@windriver.com> Date: Fri, 1 Mar 2019 15:22:15 +0800 -Subject: [PATCH 22/26] do not disable buffer in writing files +Subject: [PATCH] do not disable buffer in writing files Do not disable buffer in writing files, otherwise we get failure at boot for musl like below. @@ -18,10 +18,12 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Andrej Valek <andrej.valek@siemens.com> [rebased for systemd 243] Signed-off-by: Scott Murray <scott.murray@konsulko.com> + --- src/basic/cgroup-util.c | 10 +++++----- src/basic/procfs-util.c | 4 ++-- src/basic/smack-util.c | 2 +- + src/basic/sysctl-util.c | 2 +- src/basic/util.c | 2 +- src/binfmt/binfmt.c | 6 +++--- src/core/main.c | 4 ++-- @@ -32,18 +34,15 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com> src/nspawn/nspawn-cgroup.c | 2 +- src/nspawn/nspawn.c | 6 +++--- src/shared/cgroup-setup.c | 4 ++-- - src/shared/sysctl-util.c | 2 +- src/sleep/sleep.c | 8 ++++---- - src/udev/udevadm-trigger.c | 2 +- - src/udev/udevd.c | 2 +- src/vconsole/vconsole-setup.c | 2 +- - 18 files changed, 35 insertions(+), 35 deletions(-) + 16 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c -index bb960f183c..cb804c5f4b 100644 +index 50c1ae1b2b..5b40e92163 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c -@@ -759,7 +759,7 @@ int cg_install_release_agent(const char *controller, const char *agent) { +@@ -765,7 +765,7 @@ int cg_install_release_agent(const char *controller, const char *agent) { sc = strstrip(contents); if (isempty(sc)) { @@ -52,7 +51,7 @@ index bb960f183c..cb804c5f4b 100644 if (r < 0) return r; } else if (!path_equal(sc, agent)) -@@ -777,7 +777,7 @@ int cg_install_release_agent(const char *controller, const char *agent) { +@@ -783,7 +783,7 @@ int cg_install_release_agent(const char *controller, const char *agent) { sc = strstrip(contents); if (streq(sc, "0")) { @@ -61,7 +60,7 @@ index bb960f183c..cb804c5f4b 100644 if (r < 0) return r; -@@ -804,7 +804,7 @@ int cg_uninstall_release_agent(const char *controller) { +@@ -810,7 +810,7 @@ int cg_uninstall_release_agent(const char *controller) { if (r < 0) return r; @@ -70,7 +69,7 @@ index bb960f183c..cb804c5f4b 100644 if (r < 0) return r; -@@ -814,7 +814,7 @@ int cg_uninstall_release_agent(const char *controller) { +@@ -820,7 +820,7 @@ int cg_uninstall_release_agent(const char *controller) { if (r < 0) return r; @@ -79,7 +78,7 @@ index bb960f183c..cb804c5f4b 100644 if (r < 0) return r; -@@ -1646,7 +1646,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri +@@ -1650,7 +1650,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri if (r < 0) return r; @@ -121,11 +120,24 @@ index 3362ee3924..80c0f2a52e 100644 if (r < 0) return r; +diff --git a/src/basic/sysctl-util.c b/src/basic/sysctl-util.c +index c96b5cd77f..d2476d9665 100644 +--- a/src/basic/sysctl-util.c ++++ b/src/basic/sysctl-util.c +@@ -93,7 +93,7 @@ int sysctl_write_ip_property(int af, const char *ifname, const char *property, c + + log_debug("Setting '%s' to '%s'", p, value); + +- return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER); ++ return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | 0); + } + + int sysctl_read(const char *property, char **ret) { diff --git a/src/basic/util.c b/src/basic/util.c -index f98ecf3858..13e0f7431f 100644 +index 955b18bd2a..6d89c90176 100644 --- a/src/basic/util.c +++ b/src/basic/util.c -@@ -267,7 +267,7 @@ void disable_coredumps(void) { +@@ -234,7 +234,7 @@ void disable_coredumps(void) { if (detect_container() > 0) return; @@ -135,7 +147,7 @@ index f98ecf3858..13e0f7431f 100644 log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m"); } diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c -index 43ed2f385b..37a6f578f7 100644 +index f6b72e0bae..e9fd4d06be 100644 --- a/src/binfmt/binfmt.c +++ b/src/binfmt/binfmt.c @@ -48,7 +48,7 @@ static int delete_rule(const char *rule) { @@ -156,7 +168,7 @@ index 43ed2f385b..37a6f578f7 100644 if (r < 0) return log_error_errno(r, "Failed to add binary format: %m"); -@@ -223,7 +223,7 @@ static int run(int argc, char *argv[]) { +@@ -222,7 +222,7 @@ static int run(int argc, char *argv[]) { } /* Flush out all rules */ @@ -166,10 +178,10 @@ index 43ed2f385b..37a6f578f7 100644 STRV_FOREACH(f, files) { k = apply_file(*f, true); diff --git a/src/core/main.c b/src/core/main.c -index a280b756ff..334532cd42 100644 +index 3ee8d0a869..ec36e3e80f 100644 --- a/src/core/main.c +++ b/src/core/main.c -@@ -1382,7 +1382,7 @@ static int bump_unix_max_dgram_qlen(void) { +@@ -1401,7 +1401,7 @@ static int bump_unix_max_dgram_qlen(void) { if (v >= DEFAULT_UNIX_MAX_DGRAM_QLEN) return 0; @@ -178,7 +190,7 @@ index a280b756ff..334532cd42 100644 if (r < 0) return log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING, r, "Failed to bump AF_UNIX datagram queue length, ignoring: %m"); -@@ -1666,7 +1666,7 @@ static void initialize_core_pattern(bool skip_setup) { +@@ -1678,7 +1678,7 @@ static void initialize_core_pattern(bool skip_setup) { if (getpid_cached() != 1) return; @@ -188,7 +200,7 @@ index a280b756ff..334532cd42 100644 log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m", arg_early_core_pattern); } diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c -index 1fe592af70..603942a000 100644 +index 8cc1696a4f..ab7b4ba2c3 100644 --- a/src/core/smack-setup.c +++ b/src/core/smack-setup.c @@ -325,17 +325,17 @@ int mac_smack_setup(bool *loaded_policy) { @@ -214,7 +226,7 @@ index 1fe592af70..603942a000 100644 log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m"); #endif diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c -index d8f91f4e66..a088e6e2d8 100644 +index 58e35e403e..1d0beb4008 100644 --- a/src/hibernate-resume/hibernate-resume.c +++ b/src/hibernate-resume/hibernate-resume.c @@ -45,7 +45,7 @@ int main(int argc, char *argv[]) { @@ -227,20 +239,20 @@ index d8f91f4e66..a088e6e2d8 100644 log_error_errno(r, "Failed to write '%s' to /sys/power/resume: %m", major_minor); return EXIT_FAILURE; diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c -index d06f90ce1d..43d0a58750 100644 +index d82f01a164..b8fd63346c 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c -@@ -1976,7 +1976,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr, +@@ -1987,7 +1987,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr, if (!value) return -ENOMEM; - r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW); + r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW); if (r < 0) { - if (r == -ELOOP) - return -EINVAL; + /* On failure, clear cache entry, as we do not know how it fails. */ + device_remove_cached_sysattr_value(device, sysattr); diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c -index 7d757aa286..a5d9da5b7e 100644 +index 3bc424b83b..5f5eef0843 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1330,7 +1330,7 @@ static int trigger_device(Manager *m, sd_device *d) { @@ -266,10 +278,10 @@ index cb01b25bc6..e92051268b 100644 log_error_errno(r, "Failed to move process: %m"); goto finish; diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c -index 3528b7ff14..11b0c20f95 100644 +index 0c41a48d4b..9c893b18e4 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c -@@ -2667,7 +2667,7 @@ static int reset_audit_loginuid(void) { +@@ -2695,7 +2695,7 @@ static int reset_audit_loginuid(void) { if (streq(p, "4294967295")) return 0; @@ -278,7 +290,7 @@ index 3528b7ff14..11b0c20f95 100644 if (r < 0) { log_error_errno(r, "Failed to reset audit login UID. This probably means that your kernel is too\n" -@@ -3920,13 +3920,13 @@ static int setup_uid_map(pid_t pid) { +@@ -3948,13 +3948,13 @@ static int setup_uid_map(pid_t pid) { xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid); xsprintf(line, UID_FMT " " UID_FMT " " UID_FMT "\n", 0, arg_uid_shift, arg_uid_range); @@ -316,21 +328,8 @@ index f197f715c7..077f893177 100644 if (r < 0) { log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m", FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs); -diff --git a/src/shared/sysctl-util.c b/src/shared/sysctl-util.c -index 670c33108b..7c7c3dcfb6 100644 ---- a/src/shared/sysctl-util.c -+++ b/src/shared/sysctl-util.c -@@ -93,7 +93,7 @@ int sysctl_write_ip_property(int af, const char *ifname, const char *property, c - - log_debug("Setting '%s' to '%s'", p, value); - -- return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER); -+ return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | 0); - } - - int sysctl_read(const char *property, char **content) { diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c -index 39ab554290..d0e566645d 100644 +index 262d4cea66..0523e8dc9b 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -48,7 +48,7 @@ static int write_hibernate_location_info(const HibernateLocation *hibernate_loca @@ -369,34 +368,8 @@ index 39ab554290..d0e566645d 100644 if (k >= 0) return 0; log_debug_errno(k, "Failed to write '%s' to /sys/power/state: %m", *state); -diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c -index 5c74184c33..65f528314e 100644 ---- a/src/udev/udevadm-trigger.c -+++ b/src/udev/udevadm-trigger.c -@@ -43,7 +43,7 @@ static int exec_list(sd_device_enumerator *e, const char *action, Set **settle_s - if (!filename) - return log_oom(); - -- r = write_string_file(filename, action, WRITE_STRING_FILE_DISABLE_BUFFER); -+ r = write_string_file(filename, action, 0); - if (r < 0) { - bool ignore = IN_SET(r, -ENOENT, -ENODEV); - -diff --git a/src/udev/udevd.c b/src/udev/udevd.c -index d24b8d4398..d123a43904 100644 ---- a/src/udev/udevd.c -+++ b/src/udev/udevd.c -@@ -1192,7 +1192,7 @@ static int synthesize_change_one(sd_device *dev, const char *syspath) { - - filename = strjoina(syspath, "/uevent"); - log_device_debug(dev, "device is closed, synthesising 'change' on %s", syspath); -- r = write_string_file(filename, "change", WRITE_STRING_FILE_DISABLE_BUFFER); -+ r = write_string_file(filename, "change", 0); - if (r < 0) - return log_device_debug_errno(dev, r, "Failed to write 'change' to %s: %m", filename); - return 0; diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c -index b28e2853e1..115b7233a0 100644 +index d1c3febdd5..1cc68694d1 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -116,7 +116,7 @@ static int toggle_utf8_vc(const char *name, int fd, bool utf8) { @@ -408,6 +381,3 @@ index b28e2853e1..115b7233a0 100644 if (r < 0) return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8)); --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch b/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch index 1cc3985d1..7d1bd6025 100644 --- a/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch +++ b/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch @@ -1,7 +1,7 @@ -From bbda4a48a34662393117fc677c3a678d4ce4c2ec Mon Sep 17 00:00:00 2001 +From d73755cc60f401f0f20f357752e45aeeeef8e83f Mon Sep 17 00:00:00 2001 From: Scott Murray <scott.murray@konsulko.com> Date: Fri, 13 Sep 2019 19:26:27 -0400 -Subject: [PATCH 25/26] Handle __cpu_mask usage +Subject: [PATCH] Handle __cpu_mask usage Fixes errors: @@ -18,6 +18,7 @@ add a typedef to cpu-set-util.h defining __cpu_mask appropriately. Upstream-Status: Inappropriate [musl specific] Signed-off-by: Scott Murray <scott.murray@konsulko.com> + --- src/shared/cpu-set-util.h | 2 ++ src/test/test-sizeof.c | 2 +- @@ -55,6 +56,3 @@ index e1a59d408c..c269ea6e8c 100644 /* Print information about various types. Useful when diagnosing * gcc diagnostics on an unfamiliar architecture. */ --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch b/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch index 4180afb08..068600fa4 100644 --- a/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch +++ b/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch @@ -1,7 +1,7 @@ -From 47bf88f74717b417e4adbcc04256334b2335c873 Mon Sep 17 00:00:00 2001 +From 04e94f9a15101daa8f65a9af269d26cda2a24056 Mon Sep 17 00:00:00 2001 From: Alex Kiernan <alex.kiernan@gmail.com> Date: Tue, 10 Mar 2020 11:05:20 +0000 -Subject: [PATCH 26/26] Handle missing gshadow +Subject: [PATCH] Handle missing gshadow gshadow usage is now present in the userdb code. Mask all uses of it to allow compilation on musl @@ -10,6 +10,7 @@ Upstream-Status: Inappropriate [musl specific] Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> [Rebased for v247] Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> + --- src/shared/user-record-nss.c | 20 ++++++++++++++++++++ src/shared/user-record-nss.h | 4 ++++ @@ -138,10 +139,10 @@ index 22ab04d6ee..4e52e7a911 100644 #include <shadow.h> diff --git a/src/shared/userdb.c b/src/shared/userdb.c -index 2d480283d1..0d19764f2e 100644 +index 613350bd46..5c821d28cd 100644 --- a/src/shared/userdb.c +++ b/src/shared/userdb.c -@@ -929,13 +929,16 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) { +@@ -938,13 +938,16 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) { if (gr) { _cleanup_free_ char *buffer = NULL; bool incomplete = false; @@ -155,10 +156,10 @@ index 2d480283d1..0d19764f2e 100644 iterator->synthesize_nobody = false; +#if ENABLE_GSHADOW - r = nss_sgrp_for_group(gr, &sgrp, &buffer); - if (r < 0) { - log_debug_errno(r, "Failed to acquire shadow entry for group %s, ignoring: %m", gr->gr_name); -@@ -943,6 +946,9 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) { + if (!FLAGS_SET(iterator->flags, USERDB_AVOID_SHADOW)) { + r = nss_sgrp_for_group(gr, &sgrp, &buffer); + if (r < 0) { +@@ -957,6 +960,9 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) { } r = nss_group_to_group_record(gr, r >= 0 ? &sgrp : NULL, ret); @@ -168,6 +169,3 @@ index 2d480283d1..0d19764f2e 100644 if (r < 0) return r; --- -2.27.0 - diff --git a/poky/meta/recipes-core/systemd/systemd/0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch b/poky/meta/recipes-core/systemd/systemd/0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch deleted file mode 100644 index 94a4c307b..000000000 --- a/poky/meta/recipes-core/systemd/systemd/0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 297aba739cd689e4dc9f43bb1422ec88d481099a Mon Sep 17 00:00:00 2001 -From: Paul Gortmaker <paul.gortmaker@windriver.com> -Date: Wed, 13 Jan 2021 21:09:33 +0000 -Subject: [PATCH] proc: dont trigger mount error with invalid options on old - kernels - -As of commit 4e39995371738b04d98d27b0d34ea8fe09ec9fab ("core: introduce -ProtectProc= and ProcSubset= to expose hidepid= and subset= procfs -mount options") kernels older than v5.8 generate multple warnings at -boot, as seen in this Yocto build from today: - - qemux86-64 login: root - [ 65.829009] proc: Bad value for 'hidepid' - root@qemux86-64:~# dmesg|grep proc: - [ 16.990706] proc: Bad value for 'hidepid' - [ 28.060178] proc: Bad value for 'hidepid' - [ 28.874229] proc: Bad value for 'hidepid' - [ 32.685107] proc: Bad value for 'hidepid' - [ 65.829009] proc: Bad value for 'hidepid' - root@qemux86-64:~# - -The systemd maintainer has dismissed this as something people should -simply ignore[1] and has no interest in trying to avoid it by -proactively checking the kernel version, so people can safely assume -that they will never see this version check commit upstream. - -However, as can be seen above, telling people to just ignore it is not -an option, as we'll end up answering the same question and dealing with -the same bug over and over again. - -The commit that triggers this is systemd v247-rc1~378^2~3 -- so any -systemd 247 and above plus kernel v5.7 or older will need this. - -[1] https://github.com/systemd/systemd/issues/16896 - -Upstream-Status: Denied [https://github.com/systemd/systemd/issues/16896] -Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> - -Index: git/src/core/namespace.c -=================================================================== ---- git.orig/src/core/namespace.c -+++ git/src/core/namespace.c -@@ -4,7 +4,9 @@ - #include <linux/loop.h> - #include <sched.h> - #include <stdio.h> -+#include <stdlib.h> - #include <sys/mount.h> -+#include <sys/utsname.h> - #include <unistd.h> - #include <linux/fs.h> - -@@ -860,13 +862,32 @@ static int mount_sysfs(const MountEntry - - static int mount_procfs(const MountEntry *m, const NamespaceInfo *ns_info) { - const char *entry_path; -- int r; -+ int r, major, minor; -+ struct utsname uts; -+ bool old = false; - - assert(m); - assert(ns_info); - - entry_path = mount_entry_path(m); - -+ /* If uname says that the system is older than v5.8, then the textual hidepid= stuff is not -+ * supported by the kernel, and thus the per-instance hidepid= neither, which means we -+ * really don't want to use it, since it would affect our host's /proc * mount. Hence let's -+ * gracefully fallback to a classic, unrestricted version. */ -+ -+ r = uname(&uts); -+ if (r < 0) -+ return errno; -+ -+ major = atoi(uts.release); -+ minor = atoi(strchr(uts.release, '.') + 1); -+ -+ if (major < 5 || (major == 5 && minor < 8)) { -+ log_debug("Pre v5.8 kernel detected [v%d.%d] - skipping hidepid=", major, minor); -+ old = true; -+ } -+ - /* Mount a new instance, so that we get the one that matches our user namespace, if we are running in - * one. i.e we don't reuse existing mounts here under any condition, we want a new instance owned by - * our user namespace and with our hidepid= settings applied. Hence, let's get rid of everything -@@ -875,8 +896,8 @@ static int mount_procfs(const MountEntry - (void) mkdir_p_label(entry_path, 0755); - (void) umount_recursive(entry_path, 0); - -- if (ns_info->protect_proc != PROTECT_PROC_DEFAULT || -- ns_info->proc_subset != PROC_SUBSET_ALL) { -+ if (!old && (ns_info->protect_proc != PROTECT_PROC_DEFAULT || -+ ns_info->proc_subset != PROC_SUBSET_ALL)) { - _cleanup_free_ char *opts = NULL; - - /* Starting with kernel 5.8 procfs' hidepid= logic is truly per-instance (previously it diff --git a/poky/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/poky/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch new file mode 100644 index 000000000..2289404d8 --- /dev/null +++ b/poky/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch @@ -0,0 +1,34 @@ +From 366cd28f5f93ba7c861cd32a718251770d74830e Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 12 Apr 2021 23:44:53 -0700 +Subject: [PATCH] missing_syscall.h: Define MIPS ABI defines for musl + +musl does not define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32, _MIPS_SIM_ABI64 +unlike glibc where these are provided by libc headers, therefore define +them here in case they are undefined + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + src/basic/missing_syscall.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h +index 1384324804..0202d00372 100644 +--- a/src/basic/missing_syscall.h ++++ b/src/basic/missing_syscall.h +@@ -20,6 +20,12 @@ + #include <asm/sgidefs.h> + #endif + ++#ifndef _MIPS_SIM_ABI32 ++#define _MIPS_SIM_ABI32 1 ++#define _MIPS_SIM_NABI32 2 ++#define _MIPS_SIM_ABI64 3 ++#endif ++ + #include "missing_keyctl.h" + #include "missing_stat.h" + #include "missing_syscall_def.h" diff --git a/poky/meta/recipes-core/systemd/systemd_247.4.bb b/poky/meta/recipes-core/systemd/systemd_248.3.bb index cd67e65ab..37607708f 100644 --- a/poky/meta/recipes-core/systemd/systemd_247.4.bb +++ b/poky/meta/recipes-core/systemd/systemd_248.3.bb @@ -14,7 +14,8 @@ inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu # that we don't build both udev and systemd in world builds. REQUIRED_DISTRO_FEATURES = "systemd" -SRC_URI += "file://touchscreen.rules \ +SRC_URI += " \ + file://touchscreen.rules \ file://00-create-volatile.conf \ ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \ @@ -24,9 +25,7 @@ SRC_URI += "file://touchscreen.rules \ file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \ file://0003-implment-systemd-sysv-install-for-OE.patch \ file://0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch \ - file://0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch \ - file://0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch \ - file://0001-analyze-resolve-executable-path-if-it-is-relative.patch \ + file://0001-test-parse-argument-Include-signal.h.patch \ " # patches needed by musl @@ -55,6 +54,7 @@ SRC_URI_MUSL = "\ file://0022-do-not-disable-buffer-in-writing-files.patch \ file://0025-Handle-__cpu_mask-usage.patch \ file://0026-Handle-missing-gshadow.patch \ + file://0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch \ " PAM_PLUGINS = " \ @@ -64,7 +64,7 @@ PAM_PLUGINS = " \ " PACKAGECONFIG ??= " \ - ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit seccomp', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \ backlight \ @@ -176,7 +176,6 @@ PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false" PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false" PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false" PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false" -# libseccomp is found in meta-security PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp" PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell" PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false" @@ -474,6 +473,7 @@ FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.c ${rootlibexecdir}/systemd/systemd-machined \ ${rootlibexecdir}/systemd/systemd-pull \ ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \ + ${exec_prefix}/lib/tmpfiles.d/README \ ${systemd_system_unitdir}/systemd-nspawn@.service \ ${libdir}/libnss_mymachines.so.2 \ ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \ @@ -507,6 +507,7 @@ FILES_${PN}-extra-utils = "\ ${bindir}/systemd-cgls \ ${bindir}/systemd-cgtop \ ${bindir}/systemd-stdio-bridge \ + ${bindir}/systemd-sysext \ ${base_bindir}/systemd-ask-password \ ${base_bindir}/systemd-tty-ask-password-agent \ ${systemd_unitdir}/system/systemd-ask-password-console.path \ @@ -605,6 +606,7 @@ FILES_${PN} = " ${base_bindir}/* \ ${exec_prefix}/lib/environment.d \ ${localstatedir} \ ${rootlibexecdir}/modprobe.d/systemd.conf \ + ${rootlibexecdir}/modprobe.d/README \ ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \ ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \ ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \ @@ -647,6 +649,7 @@ FILES_udev += "${base_sbindir}/udevd \ ${rootlibexecdir}/udev/ata_id \ ${rootlibexecdir}/udev/cdrom_id \ ${rootlibexecdir}/udev/collect \ + ${rootlibexecdir}/udev/dmi_memory_id \ ${rootlibexecdir}/udev/fido_id \ ${rootlibexecdir}/udev/findkeyboards \ ${rootlibexecdir}/udev/keyboard-force-release.sh \ @@ -674,6 +677,7 @@ FILES_udev += "${base_sbindir}/udevd \ ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \ ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \ ${rootlibexecdir}/udev/rules.d/70-joystick.rules \ + ${rootlibexecdir}/udev/rules.d/70-memory.rules \ ${rootlibexecdir}/udev/rules.d/70-mouse.rules \ ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \ ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \ @@ -683,6 +687,7 @@ FILES_udev += "${base_sbindir}/udevd \ ${rootlibexecdir}/udev/rules.d/80-drivers.rules \ ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \ ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \ + ${rootlibexecdir}/udev/rules.d/README \ ${sysconfdir}/udev \ ${sysconfdir}/init.d/systemd-udevd \ ${systemd_unitdir}/system/*udev* \ diff --git a/poky/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty b/poky/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty index dfa799ada..699a1ead1 100644 --- a/poky/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty +++ b/poky/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty @@ -1,17 +1,4 @@ #!/bin/sh -############################################################################### -# This script is used to automatically set up the serial console(s) on startup. -# The variable SERIAL_CONSOLES can be set in meta/conf/machine/*.conf. -# Script enhancement has been done based on Bug YOCTO #10844. -# Most of the information is retrieved from /proc virtual filesystem containing -# all the runtime system information (eg. system memory, device mount, etc). -############################################################################### - -# Get active serial filename. -active_serial=$(grep "serial" /proc/tty/drivers | cut -d/ -f1 | sed "s/ *$//") - -# Rephrase input parameter from ttyS target index (ttyS1, ttyS2, ttyAMA0, etc). -runtime_tty=$(echo $2 | grep -oh '[0-9]\+') # busybox' getty does this itself, util-linux' agetty needs extra help getty="/sbin/getty" @@ -25,31 +12,6 @@ case $(readlink -f "${getty}") in ;; esac -# Backup $IFS. -DEFAULT_IFS=$IFS -# Customize Internal Field Separator. -IFS="$(printf '\n\t')" - -for line in $active_serial; do - # Check we have the file containing current active serial target index. - if [ -e "/proc/tty/driver/$line" ] - then - # Remove all unknown entries and discard the first line (desc). - activetty=$(grep -v "unknown" "/proc/tty/driver/$line" \ - | tail -n +2 | grep -oh "^\s*\S*[0-9]\+") - for active in $activetty; do - # If indexes do match then enable the serial console. - if [ $active -eq $runtime_tty ] - then - if [ -c /dev/$2 ] - then - ${setsid:-} ${getty} -L $1 $2 $3 - fi - break - fi - done - fi -done - -# Restore $IFS. -IFS=$DEFAULT_IFS +if [ -e /sys/class/tty/$2 -a -c /dev/$2 ]; then + ${setsid:-} ${getty} -L $1 $2 $3 +fi diff --git a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb index 0af116f35..d95d1a63f 100644 --- a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb +++ b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb @@ -53,10 +53,6 @@ EOF fi } -do_install_append_qemuppc64 () { - echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab -} - pkg_postinst_${PN} () { # run this on host and on target if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then diff --git a/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.37.bb index 9612c491c..9612c491c 100644 --- a/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb +++ b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.37.bb diff --git a/poky/meta/recipes-core/util-linux/util-linux.inc b/poky/meta/recipes-core/util-linux/util-linux.inc index cbf6102ee..9d7d8a23a 100644 --- a/poky/meta/recipes-core/util-linux/util-linux.inc +++ b/poky/meta/recipes-core/util-linux/util-linux.inc @@ -27,8 +27,7 @@ LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da FILESEXTRAPATHS_prepend := "${THISDIR}/util-linux:" MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}" -BPN = "util-linux" -SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \ +SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-linux-${PV}.tar.xz \ file://configure-sbindir.patch \ file://runuser.pamd \ file://runuser-l.pamd \ @@ -36,6 +35,6 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz file://run-ptest \ file://display_testname_for_subtest.patch \ file://avoid_parallel_tests.patch \ - file://Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch \ + file://8a3a74160b96498d672e3652827aa7e6d7f3a120.patch \ " -SRC_URI[sha256sum] = "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f" +SRC_URI[sha256sum] = "bd07b7e98839e0359842110525a3032fdb8eaf3a90bedde3dd1652d32d15cce5" diff --git a/poky/meta/recipes-core/util-linux/util-linux/8a3a74160b96498d672e3652827aa7e6d7f3a120.patch b/poky/meta/recipes-core/util-linux/util-linux/8a3a74160b96498d672e3652827aa7e6d7f3a120.patch new file mode 100644 index 000000000..a5bb00ab6 --- /dev/null +++ b/poky/meta/recipes-core/util-linux/util-linux/8a3a74160b96498d672e3652827aa7e6d7f3a120.patch @@ -0,0 +1,29 @@ +From 8a3a74160b96498d672e3652827aa7e6d7f3a120 Mon Sep 17 00:00:00 2001 +From: Karel Zak <kzak@redhat.com> +Date: Tue, 15 Jun 2021 12:04:43 +0200 +Subject: [PATCH] mkswap: fix holes detection (infinite loop and/or + stack-buffer-underflow) + +Reported-by: Brian Lane <bcl@redhat.com> +Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1971877 +Fix: https://github.com/karelzak/util-linux/issues/1348 +Signed-off-by: Karel Zak <kzak@redhat.com> +Upstream-Status: Backport +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + disk-utils/mkswap.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/disk-utils/mkswap.c b/disk-utils/mkswap.c +index 27374fd72..c45a3a317 100644 +--- a/disk-utils/mkswap.c ++++ b/disk-utils/mkswap.c +@@ -267,6 +267,8 @@ static void check_extents(struct mkswap_control *ctl) + return; + + n = fiemap->fm_mapped_extents; ++ if (n == 0) ++ break; + + for (i = 0; i < n; i++) { + struct fiemap_extent *e = &fiemap->fm_extents[i]; diff --git a/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch b/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch deleted file mode 100644 index 272518914..000000000 --- a/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch +++ /dev/null @@ -1,49 +0,0 @@ -Author: Luca Boccassi <luca.boccassi@microsoft.com> -Description: Automake: use EXTRA_LTLIBRARIES instead of noinst_LTLIBRARIES - noinst_LTLIBRARIES causes the libraries to be always built - unconditionally. EXTRA_LTLIBRARIES causes them to be built - only if other build target needs them. - In other words, avoid building libcommon.a and libtcolors.a - unless they are needed by another library/executable and - save some build time. -Upstream-Status: backport, commit:c65953d72bbc7412f32e566d9fa6e780d84f0696 ---- a/Makefile.am -+++ b/Makefile.am -@@ -39,7 +39,7 @@ bashcompletiondir = @bashcompletiondir@ - - dist_noinst_HEADERS = - noinst_PROGRAMS = --noinst_LTLIBRARIES = -+EXTRA_LTLIBRARIES = - usrbin_exec_PROGRAMS = - usrsbin_exec_PROGRAMS = - dist_man_MANS = -@@ -169,7 +169,7 @@ else - edit_cmd += -e 's|@vendordir[@]||g' - endif - --CLEANFILES += $(PATHFILES) -+CLEANFILES += $(PATHFILES) $(EXTRA_LTLIBRARIES) - EXTRA_DIST += $(PATHFILES:=.in) - - $(PATHFILES): Makefile ---- a/lib/Makemodule.am -+++ b/lib/Makemodule.am -@@ -9,7 +9,7 @@ - # Note that you need "make install-strip" (or proper rpm / Debian build) - # to generate binaries with only relevant stuff. - # --noinst_LTLIBRARIES += libcommon.la -+EXTRA_LTLIBRARIES += libcommon.la - libcommon_la_CFLAGS = $(AM_CFLAGS) - libcommon_la_SOURCES = \ - lib/blkdev.c \ -@@ -59,7 +59,7 @@ libcommon_la_SOURCES += lib/sysfs.c - endif - endif - --noinst_LTLIBRARIES += libtcolors.la -+EXTRA_LTLIBRARIES += libtcolors.la - libtcolors_la_CFLAGS = $(AM_CFLAGS) - libtcolors_la_SOURCES = lib/colors.c lib/color-names.c include/colors.h include/color-names.h - libtcolors_la_LIBADD = diff --git a/poky/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch b/poky/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch index 748b6ef09..f1cbdb3be 100644 --- a/poky/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch +++ b/poky/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch @@ -1,20 +1,29 @@ +From ee3c7812e1efa6719af68b994804f0e6caceabd8 Mon Sep 17 00:00:00 2001 +From: Tudor Florea <tudor.florea@enea.com> +Date: Mon, 14 Jun 2021 14:00:31 +0200 +Subject: [PATCH] util-linux: Add ptest + Ptest needs buildtest-TESTS and runtest-TESTS targets. serial-tests is required to generate those targets. -Revert run.sh script accordingly to serialize running tests +Revert run.sh script accordingly to serialize running tests Signed-off-by: Tudor Florea <tudor.florea@enea.com> -Upstream-Status: Inappropriate +Upstream-Status: Inappropriate + +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -Index: util-linux-2.32/configure.ac -=================================================================== ---- util-linux-2.32.orig/configure.ac -+++ util-linux-2.32/configure.ac +diff --git a/configure.ac b/configure.ac +index 5664f9f..075ef27 100644 +--- a/configure.ac ++++ b/configure.ac @@ -11,7 +11,7 @@ AC_CONFIG_MACRO_DIR([m4]) dnl AC_USE_SYSTEM_EXTENSIONS must be called before any macros that run - dnl the compiler (like AC_PROG_LIBTOOL) to avoid autoconf errors. + dnl the compiler (like LT_INIT) to avoid autoconf errors. AC_USE_SYSTEM_EXTENSIONS --AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects]) -+AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects serial-tests]) +-AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects]) ++AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects serial-tests]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) diff --git a/poky/meta/recipes-core/util-linux/util-linux/ptest.patch b/poky/meta/recipes-core/util-linux/util-linux/ptest.patch index 0537f7d85..ba2bd3f6a 100644 --- a/poky/meta/recipes-core/util-linux/util-linux/ptest.patch +++ b/poky/meta/recipes-core/util-linux/util-linux/ptest.patch @@ -1,23 +1,24 @@ -Define TESTS variable +From af073c13ef184ca75811df688e0a0a25827b36c3 Mon Sep 17 00:00:00 2001 +From: Tudor Florea <tudor.florea@enea.com> +Date: Thu, 3 Dec 2015 04:08:00 +0100 +Subject: [PATCH] Define TESTS variable Signed-off-by: Tudor Florea <tudor.florea@enea.com> Upstream-Status: Pending + --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am -index bbaccb1..7d5a6bb 100644 +index 886598d..1cf4346 100644 --- a/Makefile.am +++ b/Makefile.am -@@ -48,6 +48,7 @@ systemdsystemunit_DATA = +@@ -57,6 +57,7 @@ systemdsystemunit_DATA = dist_bashcompletion_DATA = check_PROGRAMS = dist_check_SCRIPTS = +TESTS = $(check_PROGRAMS) PATHFILES = - --- -2.8.3 - + ADOCFILES_COMMON = diff --git a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux_2.37.bb index c79cf782d..9a50c75e7 100644 --- a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb +++ b/poky/meta/recipes-core/util-linux/util-linux_2.37.bb @@ -1,7 +1,7 @@ require util-linux.inc #gtk-doc is not enabled as it requires xmlto which requires util-linux -inherit autotools gettext manpages pkgconfig systemd update-alternatives python3-dir bash-completion ptest +inherit autotools gettext pkgconfig systemd update-alternatives python3-dir bash-completion ptest DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-libuuid" PACKAGES =+ "${PN}-swaponoff" @@ -92,9 +92,6 @@ EXTRA_OECONF_append = " --disable-hwclock-gplv3" # PACKAGECONFIG ?= "pcre2" PACKAGECONFIG_class-target ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" -# inherit manpages requires this to be present, however util-linux does not have -# configuration options, and installs manpages always -PACKAGECONFIG[manpages] = "" PACKAGECONFIG[pam] = "--enable-su --enable-runuser,--disable-su --disable-runuser, libpam," # Respect the systemd feature for uuidd PACKAGECONFIG[systemd] = "--with-systemd --with-systemdsystemunitdir=${systemd_system_unitdir}, --without-systemd --without-systemdsystemunitdir,systemd" @@ -263,33 +260,6 @@ ALTERNATIVE_LINK_NAME[utmpdump] = "${bindir}/utmpdump" ALTERNATIVE_LINK_NAME[uuidgen] = "${bindir}/uuidgen" ALTERNATIVE_LINK_NAME[wall] = "${bindir}/wall" -ALTERNATIVE_${PN}-doc = "\ -blkid.8 eject.1 findfs.8 fsck.8 kill.1 last.1 lastb.1 libblkid.3 logger.1 mesg.1 \ -mountpoint.1 nologin.8 rfkill.8 sulogin.8 utmpdump.1 uuid.3 wall.1\ -" -ALTERNATIVE_${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'pam', 'su.1', '', d)}" - -ALTERNATIVE_LINK_NAME[blkid.8] = "${mandir}/man8/blkid.8" -ALTERNATIVE_LINK_NAME[eject.1] = "${mandir}/man1/eject.1" -ALTERNATIVE_LINK_NAME[findfs.8] = "${mandir}/man8/findfs.8" -ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8" -ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1" -ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1" -ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1" -ALTERNATIVE_LINK_NAME[libblkid.3] = "${mandir}/man3/libblkid.3" -ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1" -ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1" -ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1" -ALTERNATIVE_LINK_NAME[nologin.8] = "${mandir}/man8/nologin.8" -ALTERNATIVE_LINK_NAME[rfkill.8] = "${mandir}/man8/rfkill.8" -ALTERNATIVE_LINK_NAME[setpriv.1] = "${mandir}/man1/setpriv.1" -ALTERNATIVE_LINK_NAME[su.1] = "${mandir}/man1/su.1" -ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8" -ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1" -ALTERNATIVE_LINK_NAME[uuid.3] = "${mandir}/man3/uuid.3" -ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1" - - BBCLASSEXTEND = "native nativesdk" PTEST_BINDIR = "1" diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch b/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch index e0e7e0cd5..72713c3b1 100644 --- a/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch +++ b/poky/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch @@ -1,4 +1,4 @@ -From 382f8381ef8baf754057e376a6d9bf840ca6d543 Mon Sep 17 00:00:00 2001 +From c7a79e753e50f1a5f248ba5812c61616f2f524f0 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Fri, 10 May 2019 16:47:38 +0200 Subject: [PATCH] Do not init tables from dpkg configuration diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch b/poky/meta/recipes-devtools/apt/apt/0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch new file mode 100644 index 000000000..f1816836b --- /dev/null +++ b/poky/meta/recipes-devtools/apt/apt/0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch @@ -0,0 +1,48 @@ +From e849b161ce1d87ab369b921438abcf5b3a03e186 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 25 Apr 2021 08:57:03 -0700 +Subject: [PATCH] Hide fstatat64 and prlimit64 defines on musl + +musl defines fstatat64 and prlimit64 as macros which confuses the +seccomp sysall rewiring since there are syscalls with same names + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + methods/aptmethod.h | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/methods/aptmethod.h b/methods/aptmethod.h +index bd50e80..3085aed 100644 +--- a/methods/aptmethod.h ++++ b/methods/aptmethod.h +@@ -121,6 +121,12 @@ protected: + if (ctx == NULL) + return _error->FatalE("HttpMethod::Configuration", "Cannot init seccomp"); + ++#ifndef __GLIBC__ ++#pragma push_macro("fstatat64") ++#pragma push_macro("prlimit64") ++#undef fstatat64 ++#undef prlimit64 ++#endif + #define ALLOW(what) \ + if ((rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(what), 0))) \ + return _error->FatalE("HttpMethod::Configuration", "Cannot allow %s: %s", #what, strerror(-rc)); +@@ -320,9 +326,11 @@ protected: + if ((rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, seccomp_syscall_resolve_name(custom.c_str()), 0))) + return _error->FatalE("aptMethod::Configuration", "Cannot allow %s: %s", custom.c_str(), strerror(-rc)); + } +- + #undef ALLOW +- ++#ifndef __GLIBC__ ++#pragma pop_macro("fstatat64") ++#pragma pop_macro("prlimit64") ++#endif + rc = seccomp_load(ctx); + if (rc == -EINVAL) + { +-- +2.31.1 + diff --git a/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch b/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch index c14dc2a41..1517b4785 100644 --- a/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch +++ b/poky/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch @@ -1,4 +1,4 @@ -From a603b3281f3f60a87531c8cec4843f970170d409 Mon Sep 17 00:00:00 2001 +From 393ac20efc66bfc000a2457e093e369b934c5a50 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Thu, 21 May 2020 20:13:25 +0000 Subject: [PATCH] Revert "always run 'dpkg --configure -a' at the end of our diff --git a/poky/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch b/poky/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch new file mode 100644 index 000000000..cfee50c7a --- /dev/null +++ b/poky/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch @@ -0,0 +1,32 @@ +From f999aeb5ceb77b81c36e6a55300a521aaa2da882 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 26 May 2021 22:12:46 -0700 +Subject: [PATCH] aptwebserver.cc: Include <array> + +This helps getting std::array definition + +Fixes +test/interactive-helper/aptwebserver.cc:36:55: error: constexpr variable cannot have non-literal type 'const std::array<std::array<const char *, 2>, 6>' + constexpr std::array<std::array<char const *,2>,6> htmlencode = {{ + +Upstream-Status: Submitted [https://github.com/Debian/apt/pull/133] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + test/interactive-helper/aptwebserver.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc +index 58ba54f84..0e030c7e9 100644 +--- a/test/interactive-helper/aptwebserver.cc ++++ b/test/interactive-helper/aptwebserver.cc +@@ -22,6 +22,7 @@ + #include <unistd.h> + + #include <algorithm> ++#include <array> + #include <fstream> + #include <iostream> + #include <list> +-- +2.31.1 + diff --git a/poky/meta/recipes-devtools/apt/apt_2.2.2.bb b/poky/meta/recipes-devtools/apt/apt_2.2.4.bb index 7d1bce558..f12011141 100644 --- a/poky/meta/recipes-devtools/apt/apt_2.2.2.bb +++ b/poky/meta/recipes-devtools/apt/apt_2.2.4.bb @@ -12,6 +12,8 @@ SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \ file://0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch \ file://0001-srvrec-Keep-support-for-older-resolver.patch \ file://0001-cmake-Do-not-build-po-files.patch \ + file://0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch \ + file://0001-aptwebserver.cc-Include-array.patch \ " SRC_URI_append_class-native = " \ @@ -24,7 +26,7 @@ SRC_URI_append_class-nativesdk = " \ file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \ " -SRC_URI[sha256sum] = "c5449a4c2126a12497a9949cd10209926005d329f6ce7942a3781fa2fcf50487" +SRC_URI[sha256sum] = "6eecd04a4979bd2040b22a14571c15d342c4e1802b2023acb5aa19649b1f64ea" LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263" # the package is taken from snapshots.debian.org; that source is static and goes stale @@ -45,6 +47,7 @@ EXTRA_OECMAKE_append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False \ -DDPKG_DATADIR=${datadir}/dpkg \ -DTRIEHASH_EXECUTABLE=${WORKDIR}/triehash \ -DCMAKE_DISABLE_FIND_PACKAGE_ZSTD=True \ + -DCMAKE_DISABLE_FIND_PACKAGE_SECCOMP=True \ -DWITH_TESTS=False \ " diff --git a/poky/meta/recipes-devtools/autoconf-archive/autoconf-archive_2019.01.06.bb b/poky/meta/recipes-devtools/autoconf-archive/autoconf-archive_2021.02.19.bb index 13593d7bb..54079b5f0 100644 --- a/poky/meta/recipes-devtools/autoconf-archive/autoconf-archive_2019.01.06.bb +++ b/poky/meta/recipes-devtools/autoconf-archive/autoconf-archive_2021.02.19.bb @@ -6,8 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=11cc2d3ee574f9d6b7ee797bdce4d423 \ file://COPYING.EXCEPTION;md5=fdef168ebff3bc2f13664c365a5fb515" SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz" -SRC_URI[md5sum] = "d46413c8b00a125b1529bae385bbec55" -SRC_URI[sha256sum] = "17195c833098da79de5778ee90948f4c5d90ed1a0cf8391b4ab348e2ec511e3f" +SRC_URI[sha256sum] = "e8a6eb9d28ddcba8ffef3fa211653239e9bf239aba6a01a6b7cfc7ceaec69cbd" inherit autotools allarch texinfo diff --git a/poky/meta/recipes-devtools/binutils/binutils-2.36.inc b/poky/meta/recipes-devtools/binutils/binutils-2.36.inc index 296829188..d54e2a345 100644 --- a/poky/meta/recipes-devtools/binutils/binutils-2.36.inc +++ b/poky/meta/recipes-devtools/binutils/binutils-2.36.inc @@ -10,22 +10,16 @@ LIC_FILES_CHKSUM="\ file://bfd/COPYING;md5=d32239bcb673463ab874e80d47fae504\ " -def binutils_branch_version(d): - pvsplit = d.getVar('PV').split('.') - return pvsplit[0] + "_" + pvsplit[1] - # When upgrading to 2.37, please make sure there is no trailing .0, so # that upstream version check can work correctly. PV = "2.36.1" CVE_VERSION = "2.36.1" -BINUPV = "${@binutils_branch_version(d)}" -#BRANCH = "binutils-${BINUPV}-branch" -BRANCH ?= "binutils-2_36-branch" +SRCBRANCH ?= "binutils-2_36-branch" UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)" SRCREV ?= "7651a4871c225925ffdfda0a8c91a6ed370cd9a1" -BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${BRANCH};protocol=git" +BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=git" SRC_URI = "\ ${BINUTILS_GIT_URI} \ file://0004-configure-widen-the-regexp-for-SH-architectures.patch \ @@ -41,5 +35,8 @@ SRC_URI = "\ file://0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \ file://0015-sync-with-OE-libtool-changes.patch \ file://0016-Check-for-clang-before-checking-gcc-version.patch \ + file://0017-Add-support-for-the-DW_FORM_strx-forms-to-the-BFD-li.patch \ + file://0018-Add-DWARF-5-support-in-gold.patch \ + file://CVE-2021-20197.patch \ " S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/binutils/binutils/0017-Add-support-for-the-DW_FORM_strx-forms-to-the-BFD-li.patch b/poky/meta/recipes-devtools/binutils/binutils/0017-Add-support-for-the-DW_FORM_strx-forms-to-the-BFD-li.patch new file mode 100644 index 000000000..b4880e0d1 --- /dev/null +++ b/poky/meta/recipes-devtools/binutils/binutils/0017-Add-support-for-the-DW_FORM_strx-forms-to-the-BFD-li.patch @@ -0,0 +1,183 @@ +From a50c11a7a47b26e6a3e095dfb72aa2e465919fb6 Mon Sep 17 00:00:00 2001 +From: Nick Clifton <nickc@redhat.com> +Date: Fri, 5 Mar 2021 17:06:59 +0000 +Subject: [PATCH] Add support for the DW_FORM_strx* forms to the BFD library. + + PR 27521 + * dwarf2.c (is_str_attr): Add DW_FORM_strx* forms. + (read_indexed_string): Placeholder function. + (read_attribute_value): Handle DW_FORM_strx* and DW_FORM_addrx* + forms. + +Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27521] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + bfd/dwarf2.c | 105 ++++++++++++++++++++++++++++++++------------------- + 1 file changed, 67 insertions(+), 38 deletions(-) + +diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c +index 5651696c0f7..5ffcd93f54c 100644 +--- a/bfd/dwarf2.c ++++ b/bfd/dwarf2.c +@@ -1160,8 +1160,23 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash, + static inline bfd_boolean + is_str_attr (enum dwarf_form form) + { +- return (form == DW_FORM_string || form == DW_FORM_strp +- || form == DW_FORM_line_strp || form == DW_FORM_GNU_strp_alt); ++ return (form == DW_FORM_string ++ || form == DW_FORM_strp ++ || form == DW_FORM_strx ++ || form == DW_FORM_strx1 ++ || form == DW_FORM_strx2 ++ || form == DW_FORM_strx3 ++ || form == DW_FORM_strx4 ++ || form == DW_FORM_line_strp ++ || form == DW_FORM_GNU_strp_alt); ++} ++ ++static const char * ++read_indexed_string (bfd_uint64_t index ATTRIBUTE_UNUSED, ++ struct comp_unit * unit ATTRIBUTE_UNUSED) ++{ ++ /* FIXME: Add support for indexed strings. */ ++ return "<indexed strings not yet supported>"; + } + + /* Read and fill in the value of attribute ATTR as described by FORM. +@@ -1192,6 +1207,9 @@ read_attribute_value (struct attribute * attr, + + switch (form) + { ++ case DW_FORM_flag_present: ++ attr->u.val = 1; ++ break; + case DW_FORM_ref_addr: + /* DW_FORM_ref_addr is an address in DWARF2, and an offset in + DWARF3. */ +@@ -1237,15 +1255,32 @@ read_attribute_value (struct attribute * attr, + info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk); + attr->u.blk = blk; + break; ++ case DW_FORM_ref1: ++ case DW_FORM_flag: ++ case DW_FORM_data1: ++ case DW_FORM_addrx1: ++ attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); ++ info_ptr += 1; ++ break; + case DW_FORM_data2: ++ case DW_FORM_ref2: + attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end); + info_ptr += 2; + break; ++ case DW_FORM_addrx3: ++ attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end); ++ attr->u.val &= 0xffffff; ++ info_ptr += 3; ++ break; ++ case DW_FORM_ref4: + case DW_FORM_data4: ++ case DW_FORM_addrx4: + attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end); + info_ptr += 4; + break; + case DW_FORM_data8: ++ case DW_FORM_ref8: ++ case DW_FORM_ref_sig8: + attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end); + info_ptr += 8; + break; +@@ -1265,6 +1300,33 @@ read_attribute_value (struct attribute * attr, + attr->u.str = read_alt_indirect_string (unit, info_ptr, info_ptr_end, &bytes_read); + info_ptr += bytes_read; + break; ++ case DW_FORM_strx1: ++ attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); ++ info_ptr += 1; ++ attr->u.str = (char *) read_indexed_string (attr->u.val, unit); ++ break; ++ case DW_FORM_strx2: ++ attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end); ++ info_ptr += 2; ++ attr->u.str = (char *) read_indexed_string (attr->u.val, unit); ++ break; ++ case DW_FORM_strx3: ++ attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end); ++ info_ptr += 3; ++ attr->u.val &= 0xffffff; ++ attr->u.str = (char *) read_indexed_string (attr->u.val, unit); ++ break; ++ case DW_FORM_strx4: ++ attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end); ++ info_ptr += 4; ++ attr->u.str = (char *) read_indexed_string (attr->u.val, unit); ++ break; ++ case DW_FORM_strx: ++ attr->u.val = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read, ++ FALSE, info_ptr_end); ++ info_ptr += bytes_read; ++ attr->u.str = (char *) read_indexed_string (attr->u.val, unit); ++ break; + case DW_FORM_exprloc: + case DW_FORM_block: + amt = sizeof (struct dwarf_block); +@@ -1287,48 +1349,14 @@ read_attribute_value (struct attribute * attr, + info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk); + attr->u.blk = blk; + break; +- case DW_FORM_data1: +- attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); +- info_ptr += 1; +- break; +- case DW_FORM_flag: +- attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); +- info_ptr += 1; +- break; +- case DW_FORM_flag_present: +- attr->u.val = 1; +- break; + case DW_FORM_sdata: + attr->u.sval = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read, + TRUE, info_ptr_end); + info_ptr += bytes_read; + break; +- case DW_FORM_udata: +- attr->u.val = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read, +- FALSE, info_ptr_end); +- info_ptr += bytes_read; +- break; +- case DW_FORM_ref1: +- attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); +- info_ptr += 1; +- break; +- case DW_FORM_ref2: +- attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end); +- info_ptr += 2; +- break; +- case DW_FORM_ref4: +- attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end); +- info_ptr += 4; +- break; +- case DW_FORM_ref8: +- attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end); +- info_ptr += 8; +- break; +- case DW_FORM_ref_sig8: +- attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end); +- info_ptr += 8; +- break; + case DW_FORM_ref_udata: ++ case DW_FORM_udata: ++ case DW_FORM_addrx: + attr->u.val = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read, + FALSE, info_ptr_end); + info_ptr += bytes_read; +@@ -1361,6 +1389,7 @@ read_attribute_value (struct attribute * attr, + info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk); + attr->u.blk = blk; + break; ++ + default: + _bfd_error_handler (_("DWARF error: invalid or unhandled FORM value: %#x"), + form); diff --git a/poky/meta/recipes-devtools/binutils/binutils/0018-Add-DWARF-5-support-in-gold.patch b/poky/meta/recipes-devtools/binutils/binutils/0018-Add-DWARF-5-support-in-gold.patch new file mode 100644 index 000000000..353b68085 --- /dev/null +++ b/poky/meta/recipes-devtools/binutils/binutils/0018-Add-DWARF-5-support-in-gold.patch @@ -0,0 +1,1374 @@ +From 29dab7648672342418a9d32767e3b3182d9e6a30 Mon Sep 17 00:00:00 2001 +From: Cary Coutant <ccoutant@gmail.com> +Date: Wed, 17 Mar 2021 21:31:15 -0700 +Subject: [PATCH] Add DWARF 5 support in gold. + +elfcpp/ + PR gold/27246 + * dwarf.h (enum DW_LNCT): Add line number table content type codes. + (enum DW_LINE_OPS): Reformat. + (enum DW_LINE_EXTENDED_OPS): Reformat. + (enum DW_CHILDREN): Reformat. + (enum DW_RLE): Add range list entry types. + (enum DW_SECT): Update values for DWARF 5. + +gold/ + PR gold/27246 + * dwarf_reader.cc (Dwarf_abbrev_table::do_get_abbrev): Handle + DW_FORM_implicit_const. + (Dwarf_ranges_table::read_ranges_table): Add version parameter; + Adjust all callers. Look for .debug_rnglists section if DWARF 5. + (Dwarf_ranges_table::read_range_list_v5): New method. + (Dwarf_die::read_attributes): Handle new DWARF 5 DW_FORM codes. + (Dwarf_die::skip_attributes): Likewise. + (Dwarf_info_reader::do_parse): Support DWARF 5 unit header format. + (Dwarf_info_reader::read_3bytes_from_pointer): New method. + (Sized_dwarf_line_info::Sized_dwarf_line_info): Initialize + str_buffer_, str_buffer_start, reloc_map_, line_number_map_. + Look for .debug_line_str section. + (Sized_dwarf_line_info::read_header_prolog): Support DWARF 5 prolog. + (Sized_dwarf_line_info::read_header_tables): Rename to... + (Sized_dwarf_line_info::read_header_tables_v2): ... this. + (Sized_dwarf_line_info::read_header_tables_v5): New method. + (Sized_dwarf_line_info::process_one_opcode): Insert missing "this->". + Change advance_line to signed int64_t. + (Sized_dwarf_line_info::read_lines): Add endptr parameter; adjust + callers. Insert missing "this->". + (Sized_dwarf_line_info::read_line_mappings): Support DWARF 5. + (Sized_dwarf_line_info::do_addr2line): Add debug code. + * dwarf_reader.h (Dwarf_abbrev_table::Attribute): Add implicit_const + field. Adjust constructor. + (Dwarf_abbrev_table::add_sttribute): Add implicit_const parameter. + (Dwarf_ranges_table::read_ranges_table): Add version parameter. + (Dwarf_ranges_table::read_range_list_v5): New method. + (Dwarf_die): Remove unused attr_off field. + (Dwarf_info_reader::Dwarf_info_reader): Initialize unit_type_ field. + (Dwarf_info_reader::is_type_unit): New method. + (Dwarf_info_reader::read_3bytes_from_pointer): New method. + (Dwarf_info_reader::read_range_list): Call read_range_list_v5 for + DWARF 5 range lists. + (Dwarf_info_reader::is_type_unit_): Remove. + (Dwarf_info_reader::unit_type_): New field. + (Sized_dwarf_line_info::~Sized_dwarf_line_info): Delete + str_buffer_start_. + (Sized_dwarf_line_info::read_header_tables): Rename to... + (Sized_dwarf_line_info::read_header_tables_v2): ... this. + (Sized_dwarf_line_info::read_header_tables_v5): New method. + (Sized_dwarf_line_info::read_lines): Add endptr parameter. + (Sized_dwarf_line_info::Dwarf_line_infoHeader): Add address_size field. + (Sized_dwarf_line_info::str_buffer_): New field. + (Sized_dwarf_line_info::str_buffer_end_): New field. + (Sized_dwarf_line_info::str_buffer_start_): New field. + (Sized_dwarf_line_info::end_of_header_length_): New field. + (Sized_dwarf_line_info::end_of_unit_): New field. + +Upstream-Status: Backport [5cde809b7b9 Add DWARF 5 support in gold.] + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + elfcpp/dwarf.h | 89 +++++-- + gold/dwarf_reader.cc | 591 +++++++++++++++++++++++++++++++++++++------ + gold/dwarf_reader.h | 103 ++++++-- + 3 files changed, 654 insertions(+), 129 deletions(-) + +diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h +index e24347f8481..c9a9e02369c 100644 +--- a/elfcpp/dwarf.h ++++ b/elfcpp/dwarf.h +@@ -152,35 +152,48 @@ enum DW_EH_PE + DW_EH_PE_indirect = 0x80 + }; + ++// Line number table content type codes. ++ ++enum DW_LNCT ++{ ++ DW_LNCT_path = 0x1, ++ DW_LNCT_directory_index = 0x2, ++ DW_LNCT_timestamp = 0x3, ++ DW_LNCT_size = 0x4, ++ DW_LNCT_MD5 = 0x5, ++ DW_LNCT_lo_user = 0x2000, ++ DW_LNCT_hi_user = 0x3fff ++}; ++ + // Line number opcodes. + + enum DW_LINE_OPS + { +- DW_LNS_extended_op = 0, +- DW_LNS_copy = 1, +- DW_LNS_advance_pc = 2, +- DW_LNS_advance_line = 3, +- DW_LNS_set_file = 4, +- DW_LNS_set_column = 5, +- DW_LNS_negate_stmt = 6, +- DW_LNS_set_basic_block = 7, +- DW_LNS_const_add_pc = 8, +- DW_LNS_fixed_advance_pc = 9, ++ DW_LNS_extended_op = 0x00, ++ DW_LNS_copy = 0x01, ++ DW_LNS_advance_pc = 0x02, ++ DW_LNS_advance_line = 0x03, ++ DW_LNS_set_file = 0x04, ++ DW_LNS_set_column = 0x05, ++ DW_LNS_negate_stmt = 0x06, ++ DW_LNS_set_basic_block = 0x07, ++ DW_LNS_const_add_pc = 0x08, ++ DW_LNS_fixed_advance_pc = 0x09, + // DWARF 3. +- DW_LNS_set_prologue_end = 10, +- DW_LNS_set_epilogue_begin = 11, +- DW_LNS_set_isa = 12 ++ DW_LNS_set_prologue_end = 0x0a, ++ DW_LNS_set_epilogue_begin = 0x0b, ++ DW_LNS_set_isa = 0x0c + }; + + // Line number extended opcodes. + + enum DW_LINE_EXTENDED_OPS + { +- DW_LNE_end_sequence = 1, +- DW_LNE_set_address = 2, +- DW_LNE_define_file = 3, ++ DW_LNE_end_sequence = 0x01, ++ DW_LNE_set_address = 0x02, ++ DW_LNE_define_file = 0x03, + // DWARF4. +- DW_LNE_set_discriminator = 4, ++ DW_LNE_set_discriminator = 0x04, + // HP extensions. + DW_LNE_HP_negate_is_UV_update = 0x11, + DW_LNE_HP_push_context = 0x12, +@@ -191,13 +204,15 @@ enum DW_LINE_EXTENDED_OPS + DW_LNE_HP_negate_post_semantics = 0x17, + DW_LNE_HP_negate_function_exit = 0x18, + DW_LNE_HP_negate_front_end_logical = 0x19, +- DW_LNE_HP_define_proc = 0x20 ++ DW_LNE_HP_define_proc = 0x20, ++ DW_LNE_lo_user = 0x80, ++ DW_LNE_hi_user = 0xff + }; + + enum DW_CHILDREN + { +- DW_CHILDREN_no =0x00, +- DW_CHILDREN_yes =0x01 ++ DW_CHILDREN_no = 0, ++ DW_CHILDREN_yes = 1 + }; + + // Source language names and codes. +@@ -247,20 +262,38 @@ enum DW_LANG + DW_LANG_HP_Assembler = 0x8007 + }; + ++// Range list entry kinds in .debug_rnglists* section. ++ ++enum DW_RLE ++{ ++ DW_RLE_end_of_list = 0x00, ++ DW_RLE_base_addressx = 0x01, ++ DW_RLE_startx_endx = 0x02, ++ DW_RLE_startx_length = 0x03, ++ DW_RLE_offset_pair = 0x04, ++ DW_RLE_base_address = 0x05, ++ DW_RLE_start_end = 0x06, ++ DW_RLE_start_length = 0x07 ++}; ++ + // DWARF section identifiers used in the package format. + // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFissionDWP. ++// Added (with changes) in DWARF 5. + + enum DW_SECT + { +- DW_SECT_INFO = 1, +- DW_SECT_TYPES = 2, +- DW_SECT_ABBREV = 3, +- DW_SECT_LINE = 4, +- DW_SECT_LOC = 5, ++ DW_SECT_INFO = 1, ++ DW_SECT_ABBREV = 3, ++ DW_SECT_LINE = 4, ++ DW_SECT_LOCLISTS = 5, + DW_SECT_STR_OFFSETS = 6, +- DW_SECT_MACINFO = 7, +- DW_SECT_MACRO = 8, +- DW_SECT_MAX = DW_SECT_MACRO, ++ DW_SECT_MACINFO = 7, ++ DW_SECT_RNGLISTS = 8, ++ DW_SECT_MAX = DW_SECT_RNGLISTS, ++ // These were used only for the experimental Fission support in DWARF 4. ++ DW_SECT_TYPES = 2, ++ DW_SECT_LOC = 5, ++ DW_SECT_MACRO = 8 + }; + + } // End namespace elfcpp. +diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc +index f0e6b89bde2..83a0114ed39 100644 +--- a/gold/dwarf_reader.cc ++++ b/gold/dwarf_reader.cc +@@ -26,6 +26,7 @@ + #include <utility> + #include <vector> + ++#include "debug.h" + #include "elfcpp_swap.h" + #include "dwarf.h" + #include "object.h" +@@ -275,6 +276,14 @@ Dwarf_abbrev_table::do_get_abbrev(unsigned int code) + uint64_t form = read_unsigned_LEB_128(this->buffer_pos_, &len); + this->buffer_pos_ += len; + ++ // For DW_FORM_implicit_const, read the constant. ++ int64_t implicit_const = 0; ++ if (form == elfcpp::DW_FORM_implicit_const) ++ { ++ implicit_const = read_signed_LEB_128(this->buffer_pos_, &len); ++ this->buffer_pos_ += len; ++ } ++ + // A (0,0) pair terminates the list. + if (attr == 0 && form == 0) + break; +@@ -282,7 +291,7 @@ Dwarf_abbrev_table::do_get_abbrev(unsigned int code) + if (attr == elfcpp::DW_AT_sibling) + entry->has_sibling_attribute = true; + +- entry->add_attribute(attr, form); ++ entry->add_attribute(attr, form, implicit_const); + } + + this->store_abbrev(nextcode, entry); +@@ -302,8 +311,16 @@ Dwarf_ranges_table::read_ranges_table( + Relobj* object, + const unsigned char* symtab, + off_t symtab_size, +- unsigned int ranges_shndx) ++ unsigned int ranges_shndx, ++ unsigned int version) + { ++ const std::string section_name(version < 5 ++ ? ".debug_ranges" ++ : ".debug_rnglists"); ++ const std::string compressed_section_name(version < 5 ++ ? ".zdebug_ranges" ++ : ".zdebug_rnglists"); ++ + // If we've already read this abbrev table, return immediately. + if (this->ranges_shndx_ > 0 + && this->ranges_shndx_ == ranges_shndx) +@@ -318,7 +335,7 @@ Dwarf_ranges_table::read_ranges_table( + for (unsigned int i = 1; i < object->shnum(); ++i) + { + std::string name = object->section_name(i); +- if (name == ".debug_ranges" || name == ".zdebug_ranges") ++ if (name == section_name || name == compressed_section_name) + { + ranges_shndx = i; + this->output_section_offset_ = object->output_section_offset(i); +@@ -393,7 +410,7 @@ Dwarf_ranges_table::read_range_list( + { + Dwarf_range_list* ranges; + +- if (!this->read_ranges_table(object, symtab, symtab_size, ranges_shndx)) ++ if (!this->read_ranges_table(object, symtab, symtab_size, ranges_shndx, 4)) + return NULL; + + // Correct the offset. For incremental update links, we have a +@@ -459,6 +476,125 @@ Dwarf_ranges_table::read_range_list( + return ranges; + } + ++// Read a DWARF 5 range list from section RANGES_SHNDX at offset RANGES_OFFSET. ++ ++Dwarf_range_list* ++Dwarf_ranges_table::read_range_list_v5( ++ Relobj* object, ++ const unsigned char* symtab, ++ off_t symtab_size, ++ unsigned int addr_size, ++ unsigned int ranges_shndx, ++ off_t offset) ++{ ++ Dwarf_range_list* ranges; ++ ++ if (!this->read_ranges_table(object, symtab, symtab_size, ranges_shndx, 5)) ++ return NULL; ++ ++ ranges = new Dwarf_range_list(); ++ off_t base = 0; ++ unsigned int shndx0 = 0; ++ ++ // Correct the offset. For incremental update links, we have a ++ // relocated offset that is relative to the output section, but ++ // here we need an offset relative to the input section. ++ offset -= this->output_section_offset_; ++ ++ // Read the range list at OFFSET. ++ const unsigned char* prle = this->ranges_buffer_ + offset; ++ while (prle < this->ranges_buffer_end_) ++ { ++ off_t start; ++ off_t end; ++ unsigned int shndx1 = 0; ++ unsigned int shndx2 = 0; ++ size_t len; ++ ++ // Read the entry type. ++ unsigned int rle_type = *prle++; ++ offset += 1; ++ ++ if (rle_type == elfcpp::DW_RLE_end_of_list) ++ break; ++ ++ switch (rle_type) ++ { ++ case elfcpp::DW_RLE_base_address: ++ if (addr_size == 4) ++ base = this->dwinfo_->read_from_pointer<32>(prle); ++ else ++ base = this->dwinfo_->read_from_pointer<64>(prle); ++ if (this->ranges_reloc_mapper_ != NULL) ++ shndx0 = this->lookup_reloc(offset, &base); ++ prle += addr_size; ++ offset += addr_size; ++ break; ++ ++ case elfcpp::DW_RLE_offset_pair: ++ start = read_unsigned_LEB_128(prle, &len); ++ prle += len; ++ offset += len; ++ end = read_unsigned_LEB_128(prle, &len); ++ prle += len; ++ offset += len; ++ if (shndx0 == 0 || object->is_section_included(shndx0)) ++ ranges->add(shndx0, base + start, base + end); ++ break; ++ ++ case elfcpp::DW_RLE_start_end: ++ if (addr_size == 4) ++ { ++ start = this->dwinfo_->read_from_pointer<32>(prle); ++ end = this->dwinfo_->read_from_pointer<32>(prle + 4); ++ } ++ else ++ { ++ start = this->dwinfo_->read_from_pointer<64>(prle); ++ end = this->dwinfo_->read_from_pointer<64>(prle + 8); ++ } ++ if (this->ranges_reloc_mapper_ != NULL) ++ { ++ shndx1 = this->lookup_reloc(offset, &start); ++ shndx2 = this->lookup_reloc(offset + addr_size, &end); ++ if (shndx1 != shndx2) ++ gold_warning(_("%s: DWARF info may be corrupt; offsets in a " ++ "range list entry are in different sections"), ++ object->name().c_str()); ++ } ++ prle += addr_size * 2; ++ offset += addr_size * 2; ++ if (shndx1 == 0 || object->is_section_included(shndx1)) ++ ranges->add(shndx1, start, end); ++ break; ++ ++ case elfcpp::DW_RLE_start_length: ++ if (addr_size == 4) ++ start = this->dwinfo_->read_from_pointer<32>(prle); ++ else ++ start = this->dwinfo_->read_from_pointer<64>(prle); ++ if (this->ranges_reloc_mapper_ != NULL) ++ shndx1 = this->lookup_reloc(offset, &start); ++ prle += addr_size; ++ offset += addr_size; ++ end = start + read_unsigned_LEB_128(prle, &len); ++ prle += len; ++ offset += len; ++ if (shndx1 == 0 || object->is_section_included(shndx1)) ++ ranges->add(shndx1, start, end); ++ break; ++ ++ default: ++ gold_warning(_("%s: DWARF range list contains " ++ "unsupported entry type (%d)"), ++ object->name().c_str(), rle_type); ++ break; ++ } ++ } ++ ++ return ranges; ++} ++ + // Look for a relocation at offset OFF in the range table, + // and return the section index and offset of the target. + +@@ -709,7 +845,13 @@ Dwarf_die::read_attributes() + case elfcpp::DW_FORM_flag_present: + attr_value.val.intval = 1; + break; ++ case elfcpp::DW_FORM_implicit_const: ++ attr_value.val.intval = ++ this->abbrev_code_->attributes[i].implicit_const; ++ break; + case elfcpp::DW_FORM_strp: ++ case elfcpp::DW_FORM_strp_sup: ++ case elfcpp::DW_FORM_line_strp: + { + off_t str_off; + if (this->dwinfo_->offset_size() == 4) +@@ -722,6 +864,26 @@ Dwarf_die::read_attributes() + attr_value.val.refval = str_off; + break; + } ++ case elfcpp::DW_FORM_strx: ++ case elfcpp::DW_FORM_GNU_str_index: ++ attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); ++ pattr += len; ++ break; ++ case elfcpp::DW_FORM_strx1: ++ attr_value.val.uintval = *pattr++; ++ break; ++ case elfcpp::DW_FORM_strx2: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<16>(&pattr); ++ break; ++ case elfcpp::DW_FORM_strx3: ++ attr_value.val.uintval = ++ this->dwinfo_->read_3bytes_from_pointer(&pattr); ++ break; ++ case elfcpp::DW_FORM_strx4: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<32>(&pattr); ++ break; + case elfcpp::DW_FORM_sec_offset: + { + off_t sec_off; +@@ -747,7 +909,6 @@ Dwarf_die::read_attributes() + this->dwinfo_->lookup_reloc(attr_off, &sec_off); + attr_value.aux.shndx = shndx; + attr_value.val.refval = sec_off; +- ref_form = true; + break; + } + case elfcpp::DW_FORM_ref_addr: +@@ -815,6 +976,7 @@ Dwarf_die::read_attributes() + break; + } + case elfcpp::DW_FORM_ref4: ++ case elfcpp::DW_FORM_ref_sup4: + { + off_t sec_off; + sec_off = this->dwinfo_->read_from_pointer<32>(&pattr); +@@ -835,11 +997,20 @@ Dwarf_die::read_attributes() + attr_value.val.intval = sec_off; + break; + } ++ case elfcpp::DW_FORM_data16: ++ { ++ // For now, treat this as a 16-byte block. ++ attr_value.val.blockval = pattr; ++ attr_value.aux.blocklen = 16; ++ pattr += 16; ++ break; ++ } + case elfcpp::DW_FORM_ref_sig8: + attr_value.val.uintval = + this->dwinfo_->read_from_pointer<64>(&pattr); + break; + case elfcpp::DW_FORM_ref8: ++ case elfcpp::DW_FORM_ref_sup8: + { + off_t sec_off; + sec_off = this->dwinfo_->read_from_pointer<64>(&pattr); +@@ -856,11 +1027,29 @@ Dwarf_die::read_attributes() + pattr += len; + break; + case elfcpp::DW_FORM_udata: ++ attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); ++ pattr += len; ++ break; ++ case elfcpp::DW_FORM_addrx: + case elfcpp::DW_FORM_GNU_addr_index: +- case elfcpp::DW_FORM_GNU_str_index: + attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); + pattr += len; + break; ++ case elfcpp::DW_FORM_addrx1: ++ attr_value.val.uintval = *pattr++; ++ break; ++ case elfcpp::DW_FORM_addrx2: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<16>(&pattr); ++ break; ++ case elfcpp::DW_FORM_addrx3: ++ attr_value.val.uintval = ++ this->dwinfo_->read_3bytes_from_pointer(&pattr); ++ break; ++ case elfcpp::DW_FORM_addrx4: ++ attr_value.val.uintval = ++ this->dwinfo_->read_from_pointer<32>(&pattr); ++ break; + case elfcpp::DW_FORM_sdata: + attr_value.val.intval = read_signed_LEB_128(pattr, &len); + pattr += len; +@@ -870,6 +1059,11 @@ Dwarf_die::read_attributes() + len = strlen(attr_value.val.stringval); + pattr += len + 1; + break; ++ case elfcpp::DW_FORM_loclistx: ++ case elfcpp::DW_FORM_rnglistx: ++ attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); ++ pattr += len; ++ break; + default: + return false; + } +@@ -954,9 +1148,12 @@ Dwarf_die::skip_attributes() + switch(form) + { + case elfcpp::DW_FORM_flag_present: ++ case elfcpp::DW_FORM_implicit_const: + break; + case elfcpp::DW_FORM_strp: + case elfcpp::DW_FORM_sec_offset: ++ case elfcpp::DW_FORM_strp_sup: ++ case elfcpp::DW_FORM_line_strp: + pattr += this->dwinfo_->offset_size(); + break; + case elfcpp::DW_FORM_addr: +@@ -993,23 +1190,42 @@ Dwarf_die::skip_attributes() + case elfcpp::DW_FORM_data1: + case elfcpp::DW_FORM_ref1: + case elfcpp::DW_FORM_flag: ++ case elfcpp::DW_FORM_strx1: ++ case elfcpp::DW_FORM_addrx1: + pattr += 1; + break; + case elfcpp::DW_FORM_data2: + case elfcpp::DW_FORM_ref2: ++ case elfcpp::DW_FORM_strx2: ++ case elfcpp::DW_FORM_addrx2: + pattr += 2; + break; ++ case elfcpp::DW_FORM_strx3: ++ case elfcpp::DW_FORM_addrx3: ++ pattr += 3; ++ break; + case elfcpp::DW_FORM_data4: + case elfcpp::DW_FORM_ref4: ++ case elfcpp::DW_FORM_ref_sup4: ++ case elfcpp::DW_FORM_strx4: ++ case elfcpp::DW_FORM_addrx4: + pattr += 4; + break; + case elfcpp::DW_FORM_data8: + case elfcpp::DW_FORM_ref8: + case elfcpp::DW_FORM_ref_sig8: ++ case elfcpp::DW_FORM_ref_sup8: + pattr += 8; + break; ++ case elfcpp::DW_FORM_data16: ++ pattr += 16; ++ break; + case elfcpp::DW_FORM_ref_udata: + case elfcpp::DW_FORM_udata: ++ case elfcpp::DW_FORM_addrx: ++ case elfcpp::DW_FORM_strx: ++ case elfcpp::DW_FORM_loclistx: ++ case elfcpp::DW_FORM_rnglistx: + case elfcpp::DW_FORM_GNU_addr_index: + case elfcpp::DW_FORM_GNU_str_index: + read_unsigned_LEB_128(pattr, &len); +@@ -1313,6 +1529,13 @@ Dwarf_info_reader::do_parse() + elfcpp::Swap_unaligned<16, big_endian>::readval(pinfo); + pinfo += 2; + ++ // DWARF 5: Read the unit type (1 byte) and address size (1 byte). ++ if (this->cu_version_ >= 5) ++ { ++ this->unit_type_ = *pinfo++; ++ this->address_size_ = *pinfo++; ++ } ++ + // Read debug_abbrev_offset (4 or 8 bytes). + if (this->offset_size_ == 4) + abbrev_offset = elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo); +@@ -1333,13 +1556,14 @@ Dwarf_info_reader::do_parse() + } + pinfo += this->offset_size_; + +- // Read address_size (1 byte). +- this->address_size_ = *pinfo++; ++ // DWARF 2-4: Read address_size (1 byte). ++ if (this->cu_version_ < 5) ++ this->address_size_ = *pinfo++; + + // For type units, read the two extra fields. + uint64_t signature = 0; + off_t type_offset = 0; +- if (this->is_type_unit_) ++ if (this->is_type_unit()) + { + if (!this->check_buffer(pinfo + 8 + this->offset_size_)) + break; +@@ -1369,7 +1593,7 @@ Dwarf_info_reader::do_parse() + if (root_die.tag() != 0) + { + // Visit the CU or TU. +- if (this->is_type_unit_) ++ if (this->is_type_unit()) + this->visit_type_unit(section_offset + this->cu_offset_, + cu_end - cu_start, type_offset, signature, + &root_die); +@@ -1460,6 +1684,19 @@ Dwarf_info_reader::read_from_pointer(const unsigned char** source) + return return_value; + } + ++// Read a 3-byte integer. Update SOURCE after read. ++inline typename elfcpp::Valtype_base<32>::Valtype ++Dwarf_info_reader::read_3bytes_from_pointer(const unsigned char** source) ++{ ++ typename elfcpp::Valtype_base<32>::Valtype return_value; ++ if (this->object_->is_big_endian()) ++ return_value = ((*source)[0] << 16) | ((*source)[1] << 8) | (*source)[2]; ++ else ++ return_value = ((*source)[2] << 16) | ((*source)[1] << 8) | (*source)[0]; ++ *source += 3; ++ return return_value; ++} ++ + // Look for a relocation at offset ATTR_OFF in the dwarf info, + // and return the section index and offset of the target. + +@@ -1561,27 +1798,40 @@ Sized_dwarf_line_info<size, big_endian>::Sized_dwarf_line_info( + Object* object, + unsigned int read_shndx) + : data_valid_(false), buffer_(NULL), buffer_start_(NULL), ++ str_buffer_(NULL), str_buffer_start_(NULL), + reloc_mapper_(NULL), symtab_buffer_(NULL), directories_(), files_(), +- current_header_index_(-1) ++ current_header_index_(-1), reloc_map_(), line_number_map_() + { +- unsigned int debug_shndx; ++ unsigned int debug_line_shndx = 0; ++ unsigned int debug_line_str_shndx = 0; + +- for (debug_shndx = 1; debug_shndx < object->shnum(); ++debug_shndx) ++ for (unsigned int i = 1; i < object->shnum(); ++i) + { ++ section_size_type buffer_size; ++ bool is_new = false; ++ + // FIXME: do this more efficiently: section_name() isn't super-fast +- std::string name = object->section_name(debug_shndx); ++ std::string name = object->section_name(i); + if (name == ".debug_line" || name == ".zdebug_line") + { +- section_size_type buffer_size; +- bool is_new = false; +- this->buffer_ = object->decompressed_section_contents(debug_shndx, +- &buffer_size, +- &is_new); ++ this->buffer_ = ++ object->decompressed_section_contents(i, &buffer_size, &is_new); + if (is_new) + this->buffer_start_ = this->buffer_; + this->buffer_end_ = this->buffer_ + buffer_size; +- break; ++ debug_line_shndx = i; ++ } ++ else if (name == ".debug_line_str" || name == ".zdebug_line_str") ++ { ++ this->str_buffer_ = ++ object->decompressed_section_contents(i, &buffer_size, &is_new); ++ if (is_new) ++ this->str_buffer_start_ = this->str_buffer_; ++ this->str_buffer_end_ = this->str_buffer_ + buffer_size; ++ debug_line_str_shndx = i; + } ++ if (debug_line_shndx > 0 && debug_line_str_shndx > 0) ++ break; + } + if (this->buffer_ == NULL) + return; +@@ -1594,7 +1844,7 @@ Sized_dwarf_line_info<size, big_endian>::Sized_dwarf_line_info( + unsigned int reloc_sh_type = object->section_type(i); + if ((reloc_sh_type == elfcpp::SHT_REL + || reloc_sh_type == elfcpp::SHT_RELA) +- && object->section_info(i) == debug_shndx) ++ && object->section_info(i) == debug_line_shndx) + { + reloc_shndx = i; + this->track_relocs_type_ = reloc_sh_type; +@@ -1640,65 +1890,80 @@ Sized_dwarf_line_info<size, big_endian>::read_header_prolog( + uint32_t initial_length = elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); + lineptr += 4; + +- // In DWARF2/3, if the initial length is all 1 bits, then the offset ++ // In DWARF, if the initial length is all 1 bits, then the offset + // size is 8 and we need to read the next 8 bytes for the real length. + if (initial_length == 0xffffffff) + { +- header_.offset_size = 8; ++ this->header_.offset_size = 8; + initial_length = elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); + lineptr += 8; + } + else +- header_.offset_size = 4; ++ this->header_.offset_size = 4; + +- header_.total_length = initial_length; ++ this->header_.total_length = initial_length; + +- gold_assert(lineptr + header_.total_length <= buffer_end_); ++ this->end_of_unit_ = lineptr + initial_length; ++ gold_assert(this->end_of_unit_ <= buffer_end_); + +- header_.version = elfcpp::Swap_unaligned<16, big_endian>::readval(lineptr); ++ this->header_.version = ++ elfcpp::Swap_unaligned<16, big_endian>::readval(lineptr); + lineptr += 2; + +- // Skip address size and segment selector for DWARF5. +- if (header_.version >= 5) +- lineptr += 2; ++ // We can only read versions 2-5 of the DWARF line number table. ++ // For other versions, just skip the entire line number table. ++ if (this->header_.version < 2 || this->header_.version > 5) ++ return this->end_of_unit_; + +- if (header_.offset_size == 4) +- header_.prologue_length = elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); ++ // DWARF 5 only: address size and segment selector. ++ if (this->header_.version >= 5) ++ { ++ this->header_.address_size = *lineptr; ++ // We ignore the segment selector. ++ lineptr += 2; ++ } ++ ++ if (this->header_.offset_size == 4) ++ this->header_.prologue_length = ++ elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); + else +- header_.prologue_length = elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); +- lineptr += header_.offset_size; ++ this->header_.prologue_length = ++ elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); ++ lineptr += this->header_.offset_size; + +- header_.min_insn_length = *lineptr; ++ this->end_of_header_length_ = lineptr; ++ ++ this->header_.min_insn_length = *lineptr; + lineptr += 1; + +- if (header_.version < 4) +- header_.max_ops_per_insn = 1; ++ if (this->header_.version < 4) ++ this->header_.max_ops_per_insn = 1; + else + { + // DWARF 4 added the maximum_operations_per_instruction field. +- header_.max_ops_per_insn = *lineptr; ++ this->header_.max_ops_per_insn = *lineptr; + lineptr += 1; + // TODO: Add support for values other than 1. +- gold_assert(header_.max_ops_per_insn == 1); ++ gold_assert(this->header_.max_ops_per_insn == 1); + } + +- header_.default_is_stmt = *lineptr; ++ this->header_.default_is_stmt = *lineptr; + lineptr += 1; + +- header_.line_base = *reinterpret_cast<const signed char*>(lineptr); ++ this->header_.line_base = *reinterpret_cast<const signed char*>(lineptr); + lineptr += 1; + +- header_.line_range = *lineptr; ++ this->header_.line_range = *lineptr; + lineptr += 1; + +- header_.opcode_base = *lineptr; ++ this->header_.opcode_base = *lineptr; + lineptr += 1; + +- header_.std_opcode_lengths.resize(header_.opcode_base + 1); +- header_.std_opcode_lengths[0] = 0; +- for (int i = 1; i < header_.opcode_base; i++) ++ this->header_.std_opcode_lengths.resize(this->header_.opcode_base + 1); ++ this->header_.std_opcode_lengths[0] = 0; ++ for (int i = 1; i < this->header_.opcode_base; i++) + { +- header_.std_opcode_lengths[i] = *lineptr; ++ this->header_.std_opcode_lengths[i] = *lineptr; + lineptr += 1; + } + +@@ -1707,10 +1972,11 @@ Sized_dwarf_line_info<size, big_endian>::read_header_prolog( + + // The header for a debug_line section is mildly complicated, because + // the line info is very tightly encoded. ++// This routine is for DWARF versions 2, 3, and 4. + + template<int size, bool big_endian> + const unsigned char* +-Sized_dwarf_line_info<size, big_endian>::read_header_tables( ++Sized_dwarf_line_info<size, big_endian>::read_header_tables_v2( + const unsigned char* lineptr) + { + ++this->current_header_index_; +@@ -1775,6 +2041,169 @@ Sized_dwarf_line_info<size, big_endian>::read_header_tables( + return lineptr; + } + ++// This routine is for DWARF version 5. ++ ++template<int size, bool big_endian> ++const unsigned char* ++Sized_dwarf_line_info<size, big_endian>::read_header_tables_v5( ++ const unsigned char* lineptr) ++{ ++ size_t len; ++ ++ ++this->current_header_index_; ++ ++ gold_assert(static_cast<int>(this->directories_.size()) ++ == this->current_header_index_); ++ gold_assert(static_cast<int>(this->files_.size()) ++ == this->current_header_index_); ++ ++ // Read the directory list. ++ unsigned int format_count = *lineptr; ++ lineptr += 1; ++ ++ unsigned int *types = new unsigned int[format_count]; ++ unsigned int *forms = new unsigned int[format_count]; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ types[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ forms[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ } ++ ++ uint64_t entry_count = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ this->directories_.push_back(std::vector<std::string>(0)); ++ std::vector<std::string>& dir_list = this->directories_.back(); ++ ++ for (unsigned int j = 0; j < entry_count; j++) ++ { ++ std::string dirname; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ if (types[i] == elfcpp::DW_LNCT_path) ++ { ++ if (forms[i] == elfcpp::DW_FORM_string) ++ { ++ dirname = reinterpret_cast<const char*>(lineptr); ++ lineptr += dirname.size() + 1; ++ } ++ else if (forms[i] == elfcpp::DW_FORM_line_strp) ++ { ++ uint64_t offset; ++ if (this->header_.offset_size == 4) ++ offset = ++ elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); ++ else ++ offset = ++ elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); ++ typename Reloc_map::const_iterator it ++ = this->reloc_map_.find(lineptr - this->buffer_); ++ if (it != reloc_map_.end()) ++ { ++ if (this->track_relocs_type_ == elfcpp::SHT_RELA) ++ offset = 0; ++ offset += it->second.second; ++ } ++ lineptr += this->header_.offset_size; ++ dirname = reinterpret_cast<const char*>(this->str_buffer_ ++ + offset); ++ } ++ else ++ return lineptr; ++ } ++ else ++ return lineptr; ++ } ++ dir_list.push_back(dirname); ++ } ++ ++ delete[] types; ++ delete[] forms; ++ ++ // Read the filenames list. ++ format_count = *lineptr; ++ lineptr += 1; ++ ++ types = new unsigned int[format_count]; ++ forms = new unsigned int[format_count]; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ types[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ forms[i] = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ } ++ ++ entry_count = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ this->files_.push_back( ++ std::vector<std::pair<int, std::string> >(0)); ++ std::vector<std::pair<int, std::string> >& file_list = this->files_.back(); ++ ++ for (unsigned int j = 0; j < entry_count; j++) ++ { ++ const char* path = NULL; ++ int dirindex = 0; ++ ++ for (unsigned int i = 0; i < format_count; i++) ++ { ++ if (types[i] == elfcpp::DW_LNCT_path) ++ { ++ if (forms[i] == elfcpp::DW_FORM_string) ++ { ++ path = reinterpret_cast<const char*>(lineptr); ++ lineptr += strlen(path) + 1; ++ } ++ else if (forms[i] == elfcpp::DW_FORM_line_strp) ++ { ++ uint64_t offset; ++ if (this->header_.offset_size == 4) ++ offset = elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr); ++ else ++ offset = elfcpp::Swap_unaligned<64, big_endian>::readval(lineptr); ++ typename Reloc_map::const_iterator it ++ = this->reloc_map_.find(lineptr - this->buffer_); ++ if (it != reloc_map_.end()) ++ { ++ if (this->track_relocs_type_ == elfcpp::SHT_RELA) ++ offset = 0; ++ offset += it->second.second; ++ } ++ lineptr += this->header_.offset_size; ++ path = reinterpret_cast<const char*>(this->str_buffer_ ++ + offset); ++ } ++ else ++ return lineptr; ++ } ++ else if (types[i] == elfcpp::DW_LNCT_directory_index) ++ { ++ if (forms[i] == elfcpp::DW_FORM_udata) ++ { ++ dirindex = read_unsigned_LEB_128(lineptr, &len); ++ lineptr += len; ++ } ++ else ++ return lineptr; ++ } ++ else ++ return lineptr; ++ } ++ gold_debug(DEBUG_LOCATION, "File %3d: %s", ++ static_cast<int>(file_list.size()), path); ++ file_list.push_back(std::make_pair(dirindex, path)); ++ } ++ ++ delete[] types; ++ delete[] forms; ++ ++ return lineptr; ++} ++ + // Process a single opcode in the .debug.line structure. + + template<int size, bool big_endian> +@@ -1790,15 +2219,15 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + + // If the opcode is great than the opcode_base, it is a special + // opcode. Most line programs consist mainly of special opcodes. +- if (opcode >= header_.opcode_base) ++ if (opcode >= this->header_.opcode_base) + { +- opcode -= header_.opcode_base; +- const int advance_address = ((opcode / header_.line_range) +- * header_.min_insn_length); ++ opcode -= this->header_.opcode_base; ++ const int advance_address = ((opcode / this->header_.line_range) ++ * this->header_.min_insn_length); + lsm->address += advance_address; + +- const int advance_line = ((opcode % header_.line_range) +- + header_.line_base); ++ const int advance_line = ((opcode % this->header_.line_range) ++ + this->header_.line_base); + lsm->line_num += advance_line; + lsm->basic_block = true; + *len = oplen; +@@ -1818,13 +2247,13 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + const uint64_t advance_address + = read_unsigned_LEB_128(start, &templen); + oplen += templen; +- lsm->address += header_.min_insn_length * advance_address; ++ lsm->address += this->header_.min_insn_length * advance_address; + } + break; + + case elfcpp::DW_LNS_advance_line: + { +- const uint64_t advance_line = read_signed_LEB_128(start, &templen); ++ const int64_t advance_line = read_signed_LEB_128(start, &templen); + oplen += templen; + lsm->line_num += advance_line; + } +@@ -1865,9 +2294,9 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + + case elfcpp::DW_LNS_const_add_pc: + { +- const int advance_address = (header_.min_insn_length +- * ((255 - header_.opcode_base) +- / header_.line_range)); ++ const int advance_address = (this->header_.min_insn_length ++ * ((255 - this->header_.opcode_base) ++ / this->header_.line_range)); + lsm->address += advance_address; + } + break; +@@ -1950,7 +2379,7 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + default: + { + // Ignore unknown opcode silently +- for (int i = 0; i < header_.std_opcode_lengths[opcode]; i++) ++ for (int i = 0; i < this->header_.std_opcode_lengths[opcode]; i++) + { + size_t templen; + read_unsigned_LEB_128(start, &templen); +@@ -1970,28 +2399,24 @@ Sized_dwarf_line_info<size, big_endian>::process_one_opcode( + template<int size, bool big_endian> + unsigned const char* + Sized_dwarf_line_info<size, big_endian>::read_lines(unsigned const char* lineptr, ++ unsigned const char* endptr, + unsigned int shndx) + { + struct LineStateMachine lsm; + +- // LENGTHSTART is the place the length field is based on. It is the +- // point in the header after the initial length field. +- const unsigned char* lengthstart = buffer_; +- +- // In 64 bit dwarf, the initial length is 12 bytes, because of the +- // 0xffffffff at the start. +- if (header_.offset_size == 8) +- lengthstart += 12; +- else +- lengthstart += 4; +- +- while (lineptr < lengthstart + header_.total_length) ++ while (lineptr < endptr) + { +- ResetLineStateMachine(&lsm, header_.default_is_stmt); ++ ResetLineStateMachine(&lsm, this->header_.default_is_stmt); + while (!lsm.end_sequence) + { + size_t oplength; ++ ++ if (lineptr >= endptr) ++ break; ++ + bool add_line = this->process_one_opcode(lineptr, &lsm, &oplength); ++ lineptr += oplength; ++ + if (add_line + && (shndx == -1U || lsm.shndx == -1U || shndx == lsm.shndx)) + { +@@ -2012,11 +2437,10 @@ Sized_dwarf_line_info<size, big_endian>::read_lines(unsigned const char* lineptr + map.back().last_line_for_offset = false; + map.push_back(entry); + } +- lineptr += oplength; + } + } + +- return lengthstart + header_.total_length; ++ return endptr; + } + + // Read the relocations into a Reloc_map. +@@ -2057,9 +2481,17 @@ Sized_dwarf_line_info<size, big_endian>::read_line_mappings(unsigned int shndx) + { + const unsigned char* lineptr = this->buffer_; + lineptr = this->read_header_prolog(lineptr); +- lineptr = this->read_header_tables(lineptr); +- lineptr = this->read_lines(lineptr, shndx); +- this->buffer_ = lineptr; ++ if (this->header_.version >= 2 && this->header_.version <= 4) ++ { ++ lineptr = this->read_header_tables_v2(lineptr); ++ lineptr = this->read_lines(lineptr, this->end_of_unit_, shndx); ++ } ++ else if (this->header_.version == 5) ++ { ++ lineptr = this->read_header_tables_v5(lineptr); ++ lineptr = this->read_lines(lineptr, this->end_of_unit_, shndx); ++ } ++ this->buffer_ = this->end_of_unit_; + } + + // Sort the lines numbers, so addr2line can use binary search. +@@ -2215,6 +2647,9 @@ Sized_dwarf_line_info<size, big_endian>::do_addr2line( + off_t offset, + std::vector<std::string>* other_lines) + { ++ gold_debug(DEBUG_LOCATION, "do_addr2line: shndx %u offset %08x", ++ shndx, static_cast<int>(offset)); ++ + if (this->data_valid_ == false) + return ""; + +diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h +index 80b2231327c..921a1f7c876 100644 +--- a/gold/dwarf_reader.h ++++ b/gold/dwarf_reader.h +@@ -173,11 +173,12 @@ class Dwarf_abbrev_table + // An attribute list entry. + struct Attribute + { +- Attribute(unsigned int a, unsigned int f) +- : attr(a), form(f) ++ Attribute(unsigned int a, unsigned int f, int c) ++ : attr(a), form(f), implicit_const(c) + { } + unsigned int attr; + unsigned int form; ++ int implicit_const; + }; + + // An abbrev code entry. +@@ -190,9 +191,9 @@ class Dwarf_abbrev_table + } + + void +- add_attribute(unsigned int attr, unsigned int form) ++ add_attribute(unsigned int attr, unsigned int form, int implicit_const) + { +- this->attributes.push_back(Attribute(attr, form)); ++ this->attributes.push_back(Attribute(attr, form, implicit_const)); + } + + // The DWARF tag. +@@ -349,14 +350,15 @@ class Dwarf_ranges_table + delete this->ranges_reloc_mapper_; + } + +- // Read the ranges table from an object file. ++ // Fetch the contents of the ranges table from an object file. + bool + read_ranges_table(Relobj* object, + const unsigned char* symtab, + off_t symtab_size, +- unsigned int ranges_shndx); ++ unsigned int ranges_shndx, ++ unsigned int version); + +- // Read the range table from an object file. ++ // Read the DWARF 2/3/4 range table. + Dwarf_range_list* + read_range_list(Relobj* object, + const unsigned char* symtab, +@@ -365,6 +367,15 @@ class Dwarf_ranges_table + unsigned int ranges_shndx, + off_t ranges_offset); + ++ // Read the DWARF 5 rnglists table. ++ Dwarf_range_list* ++ read_range_list_v5(Relobj* object, ++ const unsigned char* symtab, ++ off_t symtab_size, ++ unsigned int address_size, ++ unsigned int ranges_shndx, ++ off_t ranges_offset); ++ + // Look for a relocation at offset OFF in the range table, + // and return the section index and offset of the target. + unsigned int +@@ -490,8 +501,6 @@ class Dwarf_die + unsigned int shndx; + // Block length for block forms. + unsigned int blocklen; +- // Attribute offset for DW_FORM_strp. +- unsigned int attr_off; + } aux; + }; + +@@ -684,6 +693,10 @@ class Dwarf_die + // calls the various visit_xxx() methods for each header. Clients + // should derive a new class from this one and implement the + // visit_compilation_unit() and visit_type_unit() functions. ++// IS_TYPE_UNIT is true if we are reading from a .debug_types section, ++// which is used only in DWARF 4. For DWARF 5, it will be false, ++// and we will determine whether it's a type init when we parse the ++// header. + + class Dwarf_info_reader + { +@@ -695,7 +708,7 @@ class Dwarf_info_reader + unsigned int shndx, + unsigned int reloc_shndx, + unsigned int reloc_type) +- : is_type_unit_(is_type_unit), object_(object), symtab_(symtab), ++ : object_(object), symtab_(symtab), + symtab_size_(symtab_size), shndx_(shndx), reloc_shndx_(reloc_shndx), + reloc_type_(reloc_type), abbrev_shndx_(0), string_shndx_(0), + buffer_(NULL), buffer_end_(NULL), cu_offset_(0), cu_length_(0), +@@ -703,7 +716,12 @@ class Dwarf_info_reader + abbrev_table_(), ranges_table_(this), + reloc_mapper_(NULL), string_buffer_(NULL), string_buffer_end_(NULL), + owns_string_buffer_(false), string_output_section_offset_(0) +- { } ++ { ++ // For DWARF 4, we infer the unit type from the section name. ++ // For DWARF 5, we will read this from the unit header. ++ this->unit_type_ = ++ (is_type_unit ? elfcpp::DW_UT_type : elfcpp::DW_UT_compile); ++ } + + virtual + ~Dwarf_info_reader() +@@ -714,6 +732,13 @@ class Dwarf_info_reader + delete[] this->string_buffer_; + } + ++ bool ++ is_type_unit() const ++ { ++ return (this->unit_type_ == elfcpp::DW_UT_type ++ || this->unit_type_ == elfcpp::DW_UT_split_type); ++ } ++ + // Begin parsing the debug info. This calls visit_compilation_unit() + // or visit_type_unit() for each compilation or type unit found in the + // section, and visit_die() for each top-level DIE. +@@ -745,6 +770,9 @@ class Dwarf_info_reader + inline typename elfcpp::Valtype_base<valsize>::Valtype + read_from_pointer(const unsigned char** source); + ++ inline typename elfcpp::Valtype_base<32>::Valtype ++ read_3bytes_from_pointer(const unsigned char** source); ++ + // Look for a relocation at offset ATTR_OFF in the dwarf info, + // and return the section index and offset of the target. + unsigned int +@@ -818,12 +846,20 @@ class Dwarf_info_reader + Dwarf_range_list* + read_range_list(unsigned int ranges_shndx, off_t ranges_offset) + { +- return this->ranges_table_.read_range_list(this->object_, +- this->symtab_, +- this->symtab_size_, +- this->address_size_, +- ranges_shndx, +- ranges_offset); ++ if (this->cu_version_ < 5) ++ return this->ranges_table_.read_range_list(this->object_, ++ this->symtab_, ++ this->symtab_size_, ++ this->address_size_, ++ ranges_shndx, ++ ranges_offset); ++ else ++ return this->ranges_table_.read_range_list_v5(this->object_, ++ this->symtab_, ++ this->symtab_size_, ++ this->address_size_, ++ ranges_shndx, ++ ranges_offset); + } + + // Return the object. +@@ -873,8 +909,8 @@ class Dwarf_info_reader + bool + do_read_string_table(unsigned int string_shndx); + +- // True if this is a type unit; false for a compilation unit. +- bool is_type_unit_; ++ // The unit type (DW_UT_xxx). ++ unsigned int unit_type_; + // The object containing the .debug_info or .debug_types input section. + Relobj* object_; + // The ELF symbol table. +@@ -1008,6 +1044,8 @@ class Sized_dwarf_line_info : public Dwarf_line_info + { + if (this->buffer_start_ != NULL) + delete[] this->buffer_start_; ++ if (this->str_buffer_start_ != NULL) ++ delete[] this->str_buffer_start_; + } + + private: +@@ -1030,19 +1068,23 @@ class Sized_dwarf_line_info : public Dwarf_line_info + void + read_relocs(); + +- // Reads the DWARF2/3 header for this line info. Each takes as input ++ // Reads the DWARF header for this line info. Each takes as input + // a starting buffer position, and returns the ending position. + const unsigned char* + read_header_prolog(const unsigned char* lineptr); + + const unsigned char* +- read_header_tables(const unsigned char* lineptr); ++ read_header_tables_v2(const unsigned char* lineptr); ++ ++ const unsigned char* ++ read_header_tables_v5(const unsigned char* lineptr); + +- // Reads the DWARF2/3 line information. If shndx is non-negative, ++ // Reads the DWARF line information. If shndx is non-negative, + // discard all line information that doesn't pertain to the given + // section. + const unsigned char* +- read_lines(const unsigned char* lineptr, unsigned int shndx); ++ read_lines(const unsigned char* lineptr, const unsigned char* endptr, ++ unsigned int shndx); + + // Process a single line info opcode at START using the state + // machine at LSM. Return true if we should define a line using the +@@ -1069,6 +1111,7 @@ class Sized_dwarf_line_info : public Dwarf_line_info + { + off_t total_length; + int version; ++ int address_size; + off_t prologue_length; + int min_insn_length; // insn stands for instruction + int max_ops_per_insn; // Added in DWARF-4. +@@ -1089,6 +1132,20 @@ class Sized_dwarf_line_info : public Dwarf_line_info + // of the buffer. + const unsigned char* buffer_start_; + ++ // str_buffer is the buffer for the line table strings. ++ const unsigned char* str_buffer_; ++ const unsigned char* str_buffer_end_; ++ // If the buffer was allocated temporarily, and therefore must be ++ // deallocated in the dtor, this contains a pointer to the start ++ // of the buffer. ++ const unsigned char* str_buffer_start_; ++ ++ // Pointer to the end of the header_length field (aka prologue_length). ++ const unsigned char* end_of_header_length_; ++ ++ // Pointer to the end of the current compilation unit. ++ const unsigned char* end_of_unit_; ++ + // This has relocations that point into buffer. + Sized_elf_reloc_mapper<size, big_endian>* reloc_mapper_; + // The type of the reloc section in track_relocs_--SHT_REL or SHT_RELA. diff --git a/poky/meta/recipes-devtools/binutils/binutils/CVE-2021-20197.patch b/poky/meta/recipes-devtools/binutils/binutils/CVE-2021-20197.patch new file mode 100644 index 000000000..d6117b65a --- /dev/null +++ b/poky/meta/recipes-devtools/binutils/binutils/CVE-2021-20197.patch @@ -0,0 +1,388 @@ +From d3edaa91d4cf7202ec14342410194841e2f67f12 Mon Sep 17 00:00:00 2001 +From: Alan Modra <amodra@gmail.com> +Date: Fri, 26 Feb 2021 11:30:32 +1030 +Subject: [PATCH] Reinstate various pieces backed out from smart_rename changes + +In the interests of a stable release various last minute smart_rename +patches were backed out of the 2.36 branch. The main reason to +reinstate some of those backed out changes here is to make necessary +followup fixes to commit 8e03235147a9 simple cherry-picks from +mainline. A secondary reason is that ar -M support isn't fixed for +pr26945 without this patch. + + PR 26945 + * ar.c: Don't include libbfd.h. + (write_archive): Replace xmalloc+strcpy with xstrdup. + * arsup.c (temp_name, real_ofd): New static variables. + (ar_open): Use make_tempname and bfd_fdopenw. + (ar_save): Adjust to suit ar_open changes. + * objcopy.c: Don't include libbfd.h. + * rename.c: Rename and reorder variables. + +(cherry picked from commit 95b91a043aeaeb546d2fea556d84a2de1e917770) + +Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d3edaa91d4cf7202ec14342410194841e2f67f12] +CVE: CVE-2021-20197 +Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com> +--- + binutils/ar.c | 6 +- + binutils/arsup.c | 37 ++++++++---- + binutils/bucomm.h | 3 +- + binutils/objcopy.c | 9 +-- + binutils/rename.c | 148 +++++++++++---------------------------------- + 5 files changed, 67 insertions(+), 136 deletions(-) + +diff --git a/binutils/ar.c b/binutils/ar.c +index 45a34e3a6cf..44df48c5c67 100644 +--- a/binutils/ar.c ++++ b/binutils/ar.c +@@ -25,7 +25,6 @@ + + #include "sysdep.h" + #include "bfd.h" +-#include "libbfd.h" + #include "libiberty.h" + #include "progress.h" + #include "getopt.h" +@@ -1255,8 +1254,7 @@ write_archive (bfd *iarch) + bfd *contents_head = iarch->archive_next; + int ofd = -1; + +- old_name = (char *) xmalloc (strlen (bfd_get_filename (iarch)) + 1); +- strcpy (old_name, bfd_get_filename (iarch)); ++ old_name = xstrdup (bfd_get_filename (iarch)); + new_name = make_tempname (old_name, &ofd); + + if (new_name == NULL) +@@ -1308,7 +1306,7 @@ write_archive (bfd *iarch) + /* We don't care if this fails; we might be creating the archive. */ + bfd_close (iarch); + +- if (smart_rename (new_name, old_name, 0) != 0) ++ if (smart_rename (new_name, old_name, NULL) != 0) + xexit (1); + free (old_name); + free (new_name); +diff --git a/binutils/arsup.c b/binutils/arsup.c +index 5403a0c5d74..f7ce8f0bc82 100644 +--- a/binutils/arsup.c ++++ b/binutils/arsup.c +@@ -42,6 +42,8 @@ extern int deterministic; + + static bfd *obfd; + static char *real_name; ++static char *temp_name; ++static int real_ofd; + static FILE *outfile; + + static void +@@ -149,27 +151,24 @@ maybequit (void) + void + ar_open (char *name, int t) + { +- char *tname; +- const char *bname = lbasename (name); +- real_name = name; ++ real_name = xstrdup (name); ++ temp_name = make_tempname (real_name, &real_ofd); + +- /* Prepend tmp- to the beginning, to avoid file-name clashes after +- truncation on filesystems with limited namespaces (DOS). */ +- if (asprintf (&tname, "%.*stmp-%s", (int) (bname - name), name, bname) == -1) ++ if (temp_name == NULL) + { +- fprintf (stderr, _("%s: Can't allocate memory for temp name (%s)\n"), ++ fprintf (stderr, _("%s: Can't open temporary file (%s)\n"), + program_name, strerror(errno)); + maybequit (); + return; + } + +- obfd = bfd_openw (tname, NULL); ++ obfd = bfd_fdopenw (temp_name, NULL, real_ofd); + + if (!obfd) + { + fprintf (stderr, + _("%s: Can't open output archive %s\n"), +- program_name, tname); ++ program_name, temp_name); + + maybequit (); + } +@@ -344,16 +343,30 @@ ar_save (void) + } + else + { +- char *ofilename = xstrdup (bfd_get_filename (obfd)); ++ struct stat target_stat; + + if (deterministic > 0) + obfd->flags |= BFD_DETERMINISTIC_OUTPUT; + + bfd_close (obfd); + +- smart_rename (ofilename, real_name, 0); ++ if (stat (real_name, &target_stat) != 0) ++ { ++ /* The temp file created in ar_open has mode 0600 as per mkstemp. ++ Create the real empty output file here so smart_rename will ++ update the mode according to the process umask. */ ++ obfd = bfd_openw (real_name, NULL); ++ if (obfd != NULL) ++ { ++ bfd_set_format (obfd, bfd_archive); ++ bfd_close (obfd); ++ } ++ } ++ ++ smart_rename (temp_name, real_name, NULL); + obfd = 0; +- free (ofilename); ++ free (temp_name); ++ free (real_name); + } + } + +diff --git a/binutils/bucomm.h b/binutils/bucomm.h +index 91f6a5b228f..aa7e33d8cd1 100644 +--- a/binutils/bucomm.h ++++ b/binutils/bucomm.h +@@ -71,7 +71,8 @@ extern void print_version (const char *); + /* In rename.c. */ + extern void set_times (const char *, const struct stat *); + +-extern int smart_rename (const char *, const char *, int); ++extern int smart_rename (const char *, const char *, struct stat *); ++ + + /* In libiberty. */ + void *xmalloc (size_t); +diff --git a/binutils/objcopy.c b/binutils/objcopy.c +index eab3b6db585..73aa8bc2514 100644 +--- a/binutils/objcopy.c ++++ b/binutils/objcopy.c +@@ -20,7 +20,6 @@ + + #include "sysdep.h" + #include "bfd.h" +-#include "libbfd.h" + #include "progress.h" + #include "getopt.h" + #include "libiberty.h" +@@ -4861,12 +4860,10 @@ strip_main (int argc, char *argv[]) + output_target, NULL); + if (status == 0) + { +- if (preserve_dates) +- set_times (tmpname, &statbuf); + if (output_file != tmpname) + status = (smart_rename (tmpname, + output_file ? output_file : argv[i], +- preserve_dates) != 0); ++ preserve_dates ? &statbuf : NULL) != 0); + if (status == 0) + status = hold_status; + } +@@ -5931,11 +5928,9 @@ copy_main (int argc, char *argv[]) + output_target, input_arch); + if (status == 0) + { +- if (preserve_dates) +- set_times (tmpname, &statbuf); + if (tmpname != output_filename) + status = (smart_rename (tmpname, input_filename, +- preserve_dates) != 0); ++ preserve_dates ? &statbuf : NULL) != 0); + } + else + unlink_if_ordinary (tmpname); +diff --git a/binutils/rename.c b/binutils/rename.c +index 65ad5bf52c4..72a9323d72c 100644 +--- a/binutils/rename.c ++++ b/binutils/rename.c +@@ -24,14 +24,9 @@ + + #ifdef HAVE_GOOD_UTIME_H + #include <utime.h> +-#else /* ! HAVE_GOOD_UTIME_H */ +-#ifdef HAVE_UTIMES ++#elif defined HAVE_UTIMES + #include <sys/time.h> +-#endif /* HAVE_UTIMES */ +-#endif /* ! HAVE_GOOD_UTIME_H */ +- +-#if ! defined (_WIN32) || defined (__CYGWIN32__) +-static int simple_copy (const char *, const char *); ++#endif + + /* The number of bytes to copy at once. */ + #define COPY_BUF 8192 +@@ -82,7 +77,6 @@ simple_copy (const char *from, const char *to) + } + return 0; + } +-#endif /* __CYGWIN32__ or not _WIN32 */ + + /* Set the times of the file DESTINATION to be the same as those in + STATBUF. */ +@@ -91,122 +85,52 @@ void + set_times (const char *destination, const struct stat *statbuf) + { + int result; +- +- { + #ifdef HAVE_GOOD_UTIME_H +- struct utimbuf tb; +- +- tb.actime = statbuf->st_atime; +- tb.modtime = statbuf->st_mtime; +- result = utime (destination, &tb); +-#else /* ! HAVE_GOOD_UTIME_H */ +-#ifndef HAVE_UTIMES +- long tb[2]; +- +- tb[0] = statbuf->st_atime; +- tb[1] = statbuf->st_mtime; +- result = utime (destination, tb); +-#else /* HAVE_UTIMES */ +- struct timeval tv[2]; +- +- tv[0].tv_sec = statbuf->st_atime; +- tv[0].tv_usec = 0; +- tv[1].tv_sec = statbuf->st_mtime; +- tv[1].tv_usec = 0; +- result = utimes (destination, tv); +-#endif /* HAVE_UTIMES */ +-#endif /* ! HAVE_GOOD_UTIME_H */ +- } ++ struct utimbuf tb; ++ ++ tb.actime = statbuf->st_atime; ++ tb.modtime = statbuf->st_mtime; ++ result = utime (destination, &tb); ++#elif defined HAVE_UTIMES ++ struct timeval tv[2]; ++ ++ tv[0].tv_sec = statbuf->st_atime; ++ tv[0].tv_usec = 0; ++ tv[1].tv_sec = statbuf->st_mtime; ++ tv[1].tv_usec = 0; ++ result = utimes (destination, tv); ++#else ++ long tb[2]; ++ ++ tb[0] = statbuf->st_atime; ++ tb[1] = statbuf->st_mtime; ++ result = utime (destination, tb); ++#endif + + if (result != 0) + non_fatal (_("%s: cannot set time: %s"), destination, strerror (errno)); + } + +-#ifndef S_ISLNK +-#ifdef S_IFLNK +-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) +-#else +-#define S_ISLNK(m) 0 +-#define lstat stat +-#endif +-#endif +- +-/* Rename FROM to TO, copying if TO is a link. +- Return 0 if ok, -1 if error. */ ++/* Copy FROM to TO. TARGET_STAT has the file status that, if non-NULL, ++ is used to fix up timestamps. Return 0 if ok, -1 if error. ++ At one time this function renamed files, but file permissions are ++ tricky to update given the number of different schemes used by ++ various systems. So now we just copy. */ + + int +-smart_rename (const char *from, const char *to, int preserve_dates ATTRIBUTE_UNUSED) ++smart_rename (const char *from, const char *to, ++ struct stat *target_stat) + { +- bfd_boolean exists; +- struct stat s; +- int ret = 0; +- +- exists = lstat (to, &s) == 0; +- +-#if defined (_WIN32) && !defined (__CYGWIN32__) +- /* Win32, unlike unix, will not erase `to' in `rename(from, to)' but +- fail instead. Also, chown is not present. */ ++ int ret; + +- if (exists) +- remove (to); +- +- ret = rename (from, to); ++ ret = simple_copy (from, to); + if (ret != 0) +- { +- /* We have to clean up here. */ +- non_fatal (_("unable to rename '%s'; reason: %s"), to, strerror (errno)); +- unlink (from); +- } +-#else +- /* Use rename only if TO is not a symbolic link and has +- only one hard link, and we have permission to write to it. */ +- if (! exists +- || (!S_ISLNK (s.st_mode) +- && S_ISREG (s.st_mode) +- && (s.st_mode & S_IWUSR) +- && s.st_nlink == 1) +- ) +- { +- ret = rename (from, to); +- if (ret == 0) +- { +- if (exists) +- { +- /* Try to preserve the permission bits and ownership of +- TO. First get the mode right except for the setuid +- bit. Then change the ownership. Then fix the setuid +- bit. We do the chmod before the chown because if the +- chown succeeds, and we are a normal user, we won't be +- able to do the chmod afterward. We don't bother to +- fix the setuid bit first because that might introduce +- a fleeting security problem, and because the chown +- will clear the setuid bit anyhow. We only fix the +- setuid bit if the chown succeeds, because we don't +- want to introduce an unexpected setuid file owned by +- the user running objcopy. */ +- chmod (to, s.st_mode & 0777); +- if (chown (to, s.st_uid, s.st_gid) >= 0) +- chmod (to, s.st_mode & 07777); +- } +- } +- else +- { +- /* We have to clean up here. */ +- non_fatal (_("unable to rename '%s'; reason: %s"), to, strerror (errno)); +- unlink (from); +- } +- } +- else +- { +- ret = simple_copy (from, to); +- if (ret != 0) +- non_fatal (_("unable to copy file '%s'; reason: %s"), to, strerror (errno)); ++ non_fatal (_("unable to copy file '%s'; reason: %s"), ++ to, strerror (errno)); + +- if (preserve_dates) +- set_times (to, &s); +- unlink (from); +- } +-#endif /* _WIN32 && !__CYGWIN32__ */ ++ if (target_stat != NULL) ++ set_times (to, target_stat); ++ unlink (from); + + return ret; + } +-- +2.17.1 + diff --git a/poky/meta/recipes-devtools/binutils/binutils_2.36.bb b/poky/meta/recipes-devtools/binutils/binutils_2.36.bb index a50d2ee7e..ee9617de1 100644 --- a/poky/meta/recipes-devtools/binutils/binutils_2.36.bb +++ b/poky/meta/recipes-devtools/binutils/binutils_2.36.bb @@ -25,7 +25,7 @@ EXTRA_OECONF_class-native = "--enable-targets=all \ --disable-sim \ --disable-werror" -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, elfutils" # gcc9.0 end up mis-compiling libbfd.so with O2 which then crashes on target # So remove -O2 and use -Os as workaround diff --git a/poky/meta/recipes-devtools/bison/bison_3.7.5.bb b/poky/meta/recipes-devtools/bison/bison_3.7.6.bb index c8bbea445..a8d57f274 100644 --- a/poky/meta/recipes-devtools/bison/bison_3.7.5.bb +++ b/poky/meta/recipes-devtools/bison/bison_3.7.6.bb @@ -5,7 +5,7 @@ grammars ought to work with Bison with no change. Anyone familiar with Yacc shou little trouble." HOMEPAGE = "http://www.gnu.org/software/bison/" LICENSE = "GPLv3" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" +LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464" SECTION = "devel" DEPENDS = "bison-native flex-native" @@ -13,12 +13,27 @@ SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.xz \ file://add-with-bisonlocaledir.patch \ file://0001-Use-mapped-file-name-for-symbols.patch \ " -SRC_URI[sha256sum] = "e8c53bc5bc396d636622d0f25e31ca92fd53f00b09629f13ef540d564a6b31ab" +SRC_URI[sha256sum] = "67d68ce1e22192050525643fc0a7a22297576682bef6a5c51446903f5aeef3cf" + +inherit autotools gettext texinfo # No point in hardcoding path to m4, just use PATH -EXTRA_OECONF += "M4=m4" +CACHED_CONFIGUREVARS = "ac_cv_path_M4=m4" -inherit autotools gettext texinfo +PACKAGECONFIG ??= "readline ${@ 'textstyle' if d.getVar('USE_NLS') == 'yes' else ''}" +PACKAGECONFIG_class-native ??= "" + +# Make readline and textstyle optional. There are recipie for these, but leave them +# disabled for the native recipe. This prevents host contamination of the native tool. +PACKAGECONFIG[readline] = "--with-libreadline-prefix,--without-libreadline-prefix,readline" +PACKAGECONFIG[textstyle] = "--with-libtextstyle-prefix,--without-libtextstyle-prefix,gettext" + +# Include the cached configure variables, configure is really good at finding +# libreadline, even if we don't want it. +CACHED_CONFIGUREVARS += "${@bb.utils.contains('PACKAGECONFIG', 'readline', '', ' \ + ac_cv_header_readline_history_h=no \ + ac_cv_header_readline_readline_h=no \ + gl_cv_lib_readline=no', d)}" # The automatic m4 path detection gets confused, so force the right value acpaths = "-I ./m4" diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch new file mode 100644 index 000000000..d7188881d --- /dev/null +++ b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch @@ -0,0 +1,42 @@ +From 3d19b0fb882c5e195362a9f0909c474e60070ca0 Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@gmail.com> +Date: Fri, 18 Jun 2021 11:10:36 -0400 +Subject: [PATCH] btrfs-progs: include linux/const.h to fix build with 5.12+ + headers + +btrfs-tools compile fails with mips, musl and 5.12+ headers. + +The definition of __ALIGN_KERNEL has moved in 5.12+ kernels, so we +add an explicit include of const.h to pickup the macro: + + | make: *** [Makefile:595: mkfs.btrfs] Error 1 + | make: *** Waiting for unfinished jobs.... + | libbtrfs.a(volumes.o): in function `dev_extent_search_start': + | /usr/src/debug/btrfs-tools/5.12.1-r0/git/kernel-shared/volumes.c:464: undefined reference to `__ALIGN_KERNEL' + | collect2: error: ld returned 1 exit status + +This is safe for older kernel's as well, since the header still +exists, and is valid to include. + +Upstream-status: OE Specific [mips64 + musl + libc-headers] + +Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> +--- + kerncompat.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kerncompat.h b/kerncompat.h +index df167fe6..254235bd 100644 +--- a/kerncompat.h ++++ b/kerncompat.h +@@ -30,6 +30,7 @@ + #include <linux/types.h> + #include <linux/kernel.h> + #include <stdint.h> ++#include <linux/const.h> + + #include <features.h> + +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.10.1.bb b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.12.1.bb index fca010d4a..d0c9cf2a9 100644 --- a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.10.1.bb +++ b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.12.1.bb @@ -7,28 +7,47 @@ btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3." HOMEPAGE = "https://btrfs.wiki.kernel.org" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067" +LICENSE = "GPLv2 & LGPLv2.1+" +LIC_FILES_CHKSUM = " \ + file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067 \ + file://libbtrfsutil/COPYING;md5=4fbd65380cdd255951079008b364516c \ +" SECTION = "base" -DEPENDS = "util-linux attr e2fsprogs lzo acl" +DEPENDS = "lzo util-linux zlib" DEPENDS_append_class-target = " udev" -RDEPENDS_${PN} = "libgcc" -SRCREV = "f2ffce38b9c1477a7350bfe165f0e34b9bde40f5" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \ file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \ + file://0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch \ " +SRCREV = "96d77fcefdd3b9fd297b5aabbce6dc43e2315ee2" +S = "${WORKDIR}/git" -PACKAGECONFIG ??= "python" +PACKAGECONFIG ??= " \ + programs \ + convert \ + python \ + crypto-builtin \ +" PACKAGECONFIG[manpages] = "--enable-documentation, --disable-documentation, asciidoc-native xmlto-native" +PACKAGECONFIG[programs] = "--enable-programs,--disable-programs" +PACKAGECONFIG[convert] = "--enable-convert --with-convert=ext2,--disable-convert --without-convert,e2fsprogs" +PACKAGECONFIG[zoned] = "--enable-zoned,--disable-zoned" PACKAGECONFIG[python] = "--enable-python,--disable-python,python3-setuptools-native" PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd" +# Pick only one crypto provider +PACKAGECONFIG[crypto-builtin] = "--with-crypto=builtin" +PACKAGECONFIG[crypto-libgcrypt] = "--with-crypto=libgcrypt,,libgcrypt" +PACKAGECONFIG[crypto-libsodium] = "--with-crypto=libsodium,,libsodium" +PACKAGECONFIG[crypto-libkcapi] = "--with-crypto=libkcapi,,libkcapi" + inherit autotools-brokensep pkgconfig manpages inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'distutils3-base', '', d)} CLEANBROKEN = "1" +EXTRA_OECONF = "--enable-largefile" EXTRA_OECONF_append_libc-musl = " --disable-backtrace " EXTRA_PYTHON_CFLAGS = "${DEBUG_PREFIX_MAP}" EXTRA_PYTHON_CFLAGS_class-native = "" @@ -41,7 +60,6 @@ do_configure_prepend() { cp -f $(automake --print-libdir)/install-sh ${S}/config/ } -S = "${WORKDIR}/git" do_install_append() { if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then @@ -49,4 +67,6 @@ do_install_append() { fi } +RDEPENDS_${PN} = "libgcc" + BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/ccache/ccache_4.2.bb b/poky/meta/recipes-devtools/ccache/ccache_4.3.bb index 9957bc7e6..53a0bcf7a 100644 --- a/poky/meta/recipes-devtools/ccache/ccache_4.2.bb +++ b/poky/meta/recipes-devtools/ccache/ccache_4.3.bb @@ -7,12 +7,12 @@ HOMEPAGE = "http://ccache.samba.org" SECTION = "devel" LICENSE = "GPLv3+" -LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=28afb89f649f309e7ac1aab554564637" +LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=698a26b57e513d678e1e7727bf56395b" DEPENDS = "zstd" SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz" -SRC_URI[sha256sum] = "dbf139ff32031b54cb47f2d7983269f328df14b5a427882f89f7721e5c411b7e" +SRC_URI[sha256sum] = "b9789c42e52c73e99428f311a34def9ffec3462736439afd12dbacc7987c1533" UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/" @@ -21,3 +21,5 @@ inherit cmake PATCHTOOL = "patch" BBCLASSEXTEND = "native nativesdk" + +PACKAGECONFIG[docs] = "-DENABLE_DOCUMENTATION=ON,-DENABLE_DOCUMENTATION=OFF,asciidoc" diff --git a/poky/meta/recipes-devtools/cmake/cmake-native_3.19.5.bb b/poky/meta/recipes-devtools/cmake/cmake-native_3.20.3.bb index d91e42ef9..335097d38 100644 --- a/poky/meta/recipes-devtools/cmake/cmake-native_3.19.5.bb +++ b/poky/meta/recipes-devtools/cmake/cmake-native_3.20.3.bb @@ -1,7 +1,7 @@ require cmake.inc inherit native -DEPENDS += "bzip2-replacement-native xz-native zlib-native curl-native ncurses-native" +DEPENDS += "bzip2-replacement-native xz-native zlib-native curl-native ncurses-native zstd-native" SRC_URI += "file://OEToolchainConfig.cmake \ file://environment.d-cmake.sh \ diff --git a/poky/meta/recipes-devtools/cmake/cmake.inc b/poky/meta/recipes-devtools/cmake/cmake.inc index e0f59a6c6..0987c01c8 100644 --- a/poky/meta/recipes-devtools/cmake/cmake.inc +++ b/poky/meta/recipes-devtools/cmake/cmake.inc @@ -10,19 +10,18 @@ HOMEPAGE = "http://www.cmake.org/" BUGTRACKER = "http://public.kitware.com/Bug/my_view_page.php" SECTION = "console/utils" LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://Copyright.txt;md5=c721f56fce89ba2eadc2fdd8ba1f4d83 \ +LIC_FILES_CHKSUM = "file://Copyright.txt;md5=31023e1d3f51ca90a58f55bcee8e2339 \ file://Source/cmake.h;beginline=1;endline=2;md5=a5f70e1fef8614734eae0d62b4f5891b \ " CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}" SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \ - file://0002-cmake-Prevent-the-detection-of-Qt5.patch \ file://0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch \ file://0004-Fail-silently-if-system-Qt-installation-is-broken.patch \ " -SRC_URI[sha256sum] = "c432296eb5dec6d71eae15d140f6297d63df44e9ffe3e453628d1dc8fc4201ce" +SRC_URI[sha256sum] = "4d008ac3461e271fcfac26a05936f77fc7ab64402156fb371d41284851a651b8" UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch b/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch index 818151032..9609f5f7c 100644 --- a/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch +++ b/poky/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch @@ -1,4 +1,4 @@ -From 66d5b27dc37ef6243f6549e16d0285ba6c064a6e Mon Sep 17 00:00:00 2001 +From e75f76b00cc9c1cfc231c5e731e975552f5dd13e Mon Sep 17 00:00:00 2001 From: Cody P Schafer <dev@codyps.com> Date: Thu, 27 Apr 2017 11:35:05 -0400 Subject: [PATCH] CMakeDetermineSystem: use oe environment vars to load default @@ -25,7 +25,7 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> 1 file changed, 7 insertions(+) diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake -index bae270d..5bb6bc0 100644 +index bae270de..5bb6bc0d 100644 --- a/Modules/CMakeDetermineSystem.cmake +++ b/Modules/CMakeDetermineSystem.cmake @@ -111,6 +111,13 @@ else() diff --git a/poky/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch b/poky/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch deleted file mode 100644 index 33db07ccf..000000000 --- a/poky/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 98abade8cc119e076e4c5f1461c5188f6d49c1d8 Mon Sep 17 00:00:00 2001 -From: Otavio Salvador <otavio@ossystems.com.br> -Date: Wed, 17 Jan 2018 10:02:14 -0200 -Subject: [PATCH] cmake: Prevent the detection of Qt5 - -Organization: O.S. Systems Software LTDA. - -CMake doesn't have dependency on qt4/qt5, so these tests usually fail -but still can cause undeterministic results or build failures (when -OE_QMAKE_PATH_EXTERNAL_HOST_BINS is undefined or native qmake removed -while running the test in cmake) - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> - ---- - Source/QtDialog/CMakeLists.txt | 2 +- - Tests/CMakeLists.txt | 2 +- - Tests/Qt4And5Automoc/CMakeLists.txt | 4 ++-- - Tests/QtAutogen/AutogenGuiTest.cmake | 3 +-- - Tests/QtAutogen/MacOsFW/CMakeLists.txt | 2 +- - Tests/RunCMake/CMakeLists.txt | 2 +- - Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake | 2 +- - 7 files changed, 8 insertions(+), 9 deletions(-) - -diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt -index 452a303..d0a9fb4 100644 ---- a/Source/QtDialog/CMakeLists.txt -+++ b/Source/QtDialog/CMakeLists.txt -@@ -3,7 +3,7 @@ - - project(QtDialog) - CMake_OPTIONAL_COMPONENT(cmake-gui) --find_package(Qt5Widgets REQUIRED) -+#find_package(Qt5Widgets REQUIRED) - - set(CMake_QT_EXTRA_LIBRARIES) - -diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt -index 1fb47cb..e022229 100644 ---- a/Tests/CMakeLists.txt -+++ b/Tests/CMakeLists.txt -@@ -251,7 +251,7 @@ if(BUILD_TESTING) - set(CMake_TEST_Qt5 1) - endif() - if(CMake_TEST_Qt5) -- find_package(Qt5Widgets QUIET NO_MODULE) -+ #find_package(Qt5Widgets QUIET NO_MODULE) - endif() - - if(NOT CMake_TEST_EXTERNAL_CMAKE) -diff --git a/Tests/Qt4And5Automoc/CMakeLists.txt b/Tests/Qt4And5Automoc/CMakeLists.txt -index ad74961..a9dd74b 100644 ---- a/Tests/Qt4And5Automoc/CMakeLists.txt -+++ b/Tests/Qt4And5Automoc/CMakeLists.txt -@@ -3,11 +3,11 @@ cmake_minimum_required(VERSION 2.8.12) - project(Qt4And5Automoc) - - if (QT_REVERSE_FIND_ORDER) -- find_package(Qt5Core REQUIRED) -+ #find_package(Qt5Core REQUIRED) - find_package(Qt4 REQUIRED) - else() - find_package(Qt4 REQUIRED) -- find_package(Qt5Core REQUIRED) -+ #find_package(Qt5Core REQUIRED) - endif() - - set(CMAKE_AUTOMOC ON) -diff --git a/Tests/QtAutogen/AutogenGuiTest.cmake b/Tests/QtAutogen/AutogenGuiTest.cmake -index b76d341..a6e0acb 100644 ---- a/Tests/QtAutogen/AutogenGuiTest.cmake -+++ b/Tests/QtAutogen/AutogenGuiTest.cmake -@@ -22,8 +22,7 @@ if (QT_TEST_VERSION EQUAL 4) - endmacro() - - elseif(QT_TEST_VERSION EQUAL 5) -- -- find_package(Qt5Widgets REQUIRED) -+ #find_package(Qt5Widgets REQUIRED) - - set(QT_QTCORE_TARGET Qt5::Core) - set(QT_LIBRARIES Qt5::Widgets) -diff --git a/Tests/QtAutogen/MacOsFW/CMakeLists.txt b/Tests/QtAutogen/MacOsFW/CMakeLists.txt -index c08efc4..87e25d9 100644 ---- a/Tests/QtAutogen/MacOsFW/CMakeLists.txt -+++ b/Tests/QtAutogen/MacOsFW/CMakeLists.txt -@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10) - project(MacOsFW) - include("../AutogenGuiTest.cmake") - --find_package(Qt5Test REQUIRED) -+#find_package(Qt5Test REQUIRED) - - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/bin) -diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt -index 370dd76..6bacbff 100644 ---- a/Tests/RunCMake/CMakeLists.txt -+++ b/Tests/RunCMake/CMakeLists.txt -@@ -473,7 +473,7 @@ if(NOT WIN32) - endif () - - find_package(Qt4 QUIET) --find_package(Qt5Core QUIET) -+#find_package(Qt5Core QUIET) - if (QT4_FOUND AND Qt5Core_FOUND AND NOT Qt5Core_VERSION VERSION_LESS 5.1.0) - add_RunCMake_test(IncompatibleQt) - endif() -diff --git a/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake b/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake -index 4fccdc4..b76e1e5 100644 ---- a/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake -+++ b/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake -@@ -1,6 +1,6 @@ - - find_package(Qt4 REQUIRED) --find_package(Qt5Core REQUIRED) -+#find_package(Qt5Core REQUIRED) - - add_executable(mainexe main.cpp) - target_link_libraries(mainexe Qt4::QtCore Qt5::Core) diff --git a/poky/meta/recipes-devtools/cmake/cmake_3.19.5.bb b/poky/meta/recipes-devtools/cmake/cmake_3.20.3.bb index 64c92b89f..64c92b89f 100644 --- a/poky/meta/recipes-devtools/cmake/cmake_3.19.5.bb +++ b/poky/meta/recipes-devtools/cmake/cmake_3.20.3.bb diff --git a/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch index d675af4f8..b63fe5394 100644 --- a/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch +++ b/poky/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch @@ -1,25 +1,28 @@ -From 218a4760945be7a404df6515ffbc769c92791f9b Mon Sep 17 00:00:00 2001 +From 6f8f6d151b831b60f6e7892aa9294a6361353c72 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Fri, 30 Dec 2016 18:31:02 +0200 Subject: [PATCH] Do not set PYTHON_INSTALL_DIR by running python Upstream-Status: Inappropriate [oe-core specific] Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - +Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> --- src/python/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt -index 855127f..dff1d97 100644 +index a31b14d..01fd8ca 100644 --- a/src/python/CMakeLists.txt +++ b/src/python/CMakeLists.txt @@ -14,7 +14,7 @@ if (NOT SKBUILD) - FIND_PACKAGE(PythonInterp 3 EXACT REQUIRED) + FIND_PACKAGE(PythonLibs 3 REQUIRED) endif (NOT SKBUILD) --EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) -+#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) +-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) ++#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH}) MESSAGE(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}") +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.0.bb b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.3.bb index e0433806b..481c4bff2 100644 --- a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.0.bb +++ b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.3.bb @@ -8,7 +8,7 @@ SRC_URI = "git://github.com/rpm-software-management/createrepo_c \ file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \ " -SRCREV = "909a0636665ed96f97babc3b887f9badc88875c3" +SRCREV = "8196982f0974c268898a5550d61b374bd58103e2" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb b/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb index 0a007bb2c..ce242c359 100644 --- a/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb +++ b/poky/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb @@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" SECTION = "devel" DEPENDS += "expect-native" +RDEPENDS_${PN} = "expect" inherit autotools diff --git a/poky/meta/recipes-devtools/distcc/distcc_3.3.5.bb b/poky/meta/recipes-devtools/distcc/distcc_3.4.bb index 5c2644199..3bab6d53e 100644 --- a/poky/meta/recipes-devtools/distcc/distcc_3.3.5.bb +++ b/poky/meta/recipes-devtools/distcc/distcc_3.4.bb @@ -20,7 +20,7 @@ SRC_URI = "git://github.com/distcc/distcc.git \ file://distcc \ file://distcc.service \ " -SRCREV = "8572e2a1af39e69b2a2d74622fed6d2dd7dca9b7" +SRCREV = "50d821efe99cae82c05be0a4ab3b4035ef0d3883" S = "${WORKDIR}/git" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" diff --git a/poky/meta/recipes-devtools/dnf/dnf/0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch b/poky/meta/recipes-devtools/dnf/dnf/0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch new file mode 100644 index 000000000..99afe0984 --- /dev/null +++ b/poky/meta/recipes-devtools/dnf/dnf/0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch @@ -0,0 +1,39 @@ +From 2729c00f0060beab8537a9bebc796b170949093d Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 4 May 2021 22:03:30 +0200 +Subject: [PATCH 1/2] dnf/rpm/miscutils.py: fix usage of _() + +Specifically: +- an import of _ was missing +- _ was reused for a different purpose + +Upstream-Status: Submitted [https://github.com/rpm-software-management/dnf/pull/1762] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + dnf/rpm/miscutils.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 235aaf28f..7e33d4c42 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -22,6 +22,7 @@ import subprocess + import logging + + from dnf.i18n import ucd ++from dnf.i18n import _ + from shutil import which + + +@@ -46,7 +47,7 @@ def _verifyPkgUsingRpmkeys(package, installroot): + env={'LC_ALL': 'C'}, + stdout=subprocess.PIPE, + cwd='/') as p: +- data, _ = p.communicate() ++ data, err = p.communicate() + if p.returncode != 0 or data != (package.encode('ascii', 'strict') + b': digests signatures OK\n'): + return 0 + else: +-- +2.31.1 + diff --git a/poky/meta/recipes-devtools/dnf/dnf/0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch b/poky/meta/recipes-devtools/dnf/dnf/0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch new file mode 100644 index 000000000..b4c9e074d --- /dev/null +++ b/poky/meta/recipes-devtools/dnf/dnf/0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch @@ -0,0 +1,37 @@ +From dc14022a99dc017c52c484efb32729729baf854c Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 4 May 2021 22:07:32 +0200 +Subject: [PATCH 2/2] dnf/rpm/miscutils.py: do not hardcode /usr/bin/rpmkeys + +Some build systems (e.g. Yocto) place a specially configured +rpmkeys executable elsewhere and set up PATH accordingly; +it's better to always take it from there. + +Upstream-Status: Submitted [https://github.com/rpm-software-management/dnf/pull/1763] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + dnf/rpm/miscutils.py | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 7e33d4c42..fcd956db9 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -30,11 +30,9 @@ logger = logging.getLogger('dnf') + + + def _verifyPkgUsingRpmkeys(package, installroot): +- rpmkeys_binary = '/usr/bin/rpmkeys' +- if not os.path.isfile(rpmkeys_binary): +- rpmkeys_binary = which("rpmkeys") +- logger.info(_('Using rpmkeys executable from {path} to verify signature for package: {package}.').format( +- path=rpmkeys_binary, package=package)) ++ rpmkeys_binary = which("rpmkeys") ++ logger.info(_('Using rpmkeys executable from {path} to verify signature for package: {package}.').format( ++ path=rpmkeys_binary, package=package)) + + if not os.path.isfile(rpmkeys_binary): + logger.critical(_('Cannot find rpmkeys executable to verify signatures.')) +-- +2.31.1 + diff --git a/poky/meta/recipes-devtools/dnf/dnf_4.6.0.bb b/poky/meta/recipes-devtools/dnf/dnf_4.7.0.bb index 6651e6435..7314eaf7b 100644 --- a/poky/meta/recipes-devtools/dnf/dnf_4.6.0.bb +++ b/poky/meta/recipes-devtools/dnf/dnf_4.7.0.bb @@ -16,9 +16,11 @@ SRC_URI = "git://github.com/rpm-software-management/dnf.git \ file://0030-Run-python-scripts-using-env.patch \ file://0001-set-python-path-for-completion_helper.patch \ file://0001-dnf-write-the-log-lock-to-root.patch \ + file://0001-dnf-rpm-miscutils.py-fix-usage-of-_.patch \ + file://0002-dnf-rpm-miscutils.py-do-not-hardcode-usr-bin-rpmkeys.patch \ " -SRCREV = "c826d7db401ebf9b59b2fa74570a919e4af2673e" +SRCREV = "395541fbf8f87f81cdca7567f22be1182e55bea7" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/dpkg/dpkg_1.20.7.1.bb b/poky/meta/recipes-devtools/dpkg/dpkg_1.20.9.bb index 55ac84f72..60ae3ff73 100644 --- a/poky/meta/recipes-devtools/dpkg/dpkg_1.20.7.1.bb +++ b/poky/meta/recipes-devtools/dpkg/dpkg_1.20.9.bb @@ -1,7 +1,7 @@ require dpkg.inc LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" -SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=sid \ +SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=1.20.x \ file://noman.patch \ file://remove-tar-no-timestamp.patch \ file://arch_pm.patch \ @@ -19,6 +19,6 @@ SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=sid \ SRC_URI_append_class-native = " file://0001-build.c-ignore-return-of-1-from-tar-cf.patch" -SRCREV = "667bf0aeb92e0e7bb225ee273569c5e2389083bd" +SRCREV = "2177b782b16e77e97c9643961a5ae3c639bcc4a3" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch new file mode 100644 index 000000000..26f972b31 --- /dev/null +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch @@ -0,0 +1,24 @@ +From 42ba67f9a51ef959e7fd8dac29b5398c121c6976 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Fri, 30 Apr 2021 23:45:56 +0200 +Subject: [PATCH] lib/ext2fs/unix_io.c: do unlock on error + +Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/68] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + lib/ext2fs/unix_io.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c +index 64eee342..528c2fbc 100644 +--- a/lib/ext2fs/unix_io.c ++++ b/lib/ext2fs/unix_io.c +@@ -398,7 +398,7 @@ static errcode_t raw_write_blk(io_channel channel, + mutex_lock(data, BOUNCE_MTX); + if (ext2fs_llseek(data->dev, location, SEEK_SET) < 0) { + retval = errno ? errno : EXT2_ET_LLSEEK_FAILED; +- goto error_out; ++ goto error_unlock; + } + actual = write(data->dev, buf, size); + mutex_unlock(data, BOUNCE_MTX); diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch new file mode 100644 index 000000000..2452f7e08 --- /dev/null +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch @@ -0,0 +1,48 @@ +From 3593063f735f453d43f461292e26913436c11ca3 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Sat, 1 May 2021 13:06:12 +0200 +Subject: [PATCH] lib/ext2fs/unix_io.c: revert parts of "libext2fs: fix + potential races in unix_io" + +Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/68] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + lib/ext2fs/unix_io.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c +index 528c2fbc..f4916b21 100644 +--- a/lib/ext2fs/unix_io.c ++++ b/lib/ext2fs/unix_io.c +@@ -311,10 +311,10 @@ bounce_read: + size += really_read; + goto short_read; + } +- actual = size; +- if (actual > align_size) +- actual = align_size; +- actual -= offset; ++ if ((actual + offset) > align_size) ++ actual = align_size - offset; ++ if (actual > size) ++ actual = size; + memcpy(buf, data->bounce + offset, actual); + + really_read += actual; +@@ -455,9 +455,10 @@ bounce_write: + } + } + actual = size; +- if (actual > align_size) +- actual = align_size; +- actual -= offset; ++ if ((actual + offset) > align_size) ++ actual = align_size - offset; ++ if (actual > size) ++ actual = size; + memcpy(((char *)data->bounce) + offset, buf, actual); + if (ext2fs_llseek(data->dev, aligned_blk * align_size, SEEK_SET) < 0) { + retval = errno ? errno : EXT2_ET_LLSEEK_FAILED; +-- +2.24.0 + diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch index d7c07c3b0..e8b2aafbf 100644 --- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch @@ -1,4 +1,4 @@ -From 9263b8764702f2b26ddaaf80808ebab31a1dba3b Mon Sep 17 00:00:00 2001 +From 8957443bcbea43685c76eb3cbc5009f7fd529283 Mon Sep 17 00:00:00 2001 From: Jackie Huang <jackie.huang@windriver.com> Date: Wed, 10 Aug 2016 11:19:44 +0800 Subject: [PATCH] Fix missing check for permission denied. diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch index 88d0ae77c..96eb7f20d 100644 --- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch @@ -1,4 +1,4 @@ -From 6e4c1644a3a8cacf7c1f5953cc378589bb046d5a Mon Sep 17 00:00:00 2001 +From 3b75308cc75adc249db6ca36e42fe93309b9a018 Mon Sep 17 00:00:00 2001 From: Ross Burton <ross.burton@intel.com> Date: Mon, 23 Dec 2013 13:38:34 +0000 Subject: [PATCH] e2fsprogs: silence debugfs @@ -14,10 +14,10 @@ Signed-off-by: Ross Burton <ross.burton@intel.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c -index 132c5f9d..98063727 100644 +index b67a88bc..76dd5556 100644 --- a/debugfs/debugfs.c +++ b/debugfs/debugfs.c -@@ -2510,7 +2510,7 @@ static int source_file(const char *cmd_file, int ss_idx) +@@ -2518,7 +2518,7 @@ static int source_file(const char *cmd_file, int ss_idx) cp = strchr(buf, '\r'); if (cp) *cp = 0; diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.1.bb b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.2.bb index be8b67c35..fc022f37d 100644 --- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.1.bb +++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.2.bb @@ -4,6 +4,8 @@ SRC_URI += "file://remove.ldconfig.call.patch \ file://run-ptest \ file://ptest.patch \ file://mkdir_p.patch \ + file://0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch \ + file://0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch \ " SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch \ @@ -11,7 +13,7 @@ SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permissio " -SRCREV = "3114c623f56b0d61f5f34b85f7b23d28f6c848c0" +SRCREV = "1eea0e2bd9a6760ebad834d5d2cf700fffe5ebe2" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$" EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \ diff --git a/poky/meta/recipes-devtools/elfutils/elfutils_0.183.bb b/poky/meta/recipes-devtools/elfutils/elfutils_0.185.bb index c0833686d..b1ffbc18b 100644 --- a/poky/meta/recipes-devtools/elfutils/elfutils_0.183.bb +++ b/poky/meta/recipes-devtools/elfutils/elfutils_0.185.bb @@ -21,7 +21,7 @@ SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \ file://run-ptest \ file://ptest.patch \ file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \ - file://0001-add-support-for-ipkg-to-debuginfod.cxx.patch \ + file://0001-debuginfod-debuginfod-client.c-correct-string-format.patch \ " SRC_URI_append_libc-musl = " \ file://0002-musl-libs.patch \ @@ -29,7 +29,7 @@ SRC_URI_append_libc-musl = " \ file://0004-Fix-error-on-musl.patch \ file://0015-config-eu.am-do-not-use-Werror.patch \ " -SRC_URI[sha256sum] = "c3637c208d309d58714a51e61e63f1958808fead882e9b607506a29e5474f2c5" +SRC_URI[sha256sum] = "dc8d3e74ab209465e7f568e1b3bb9a5a142f8656e2b57d10049a73da2ae6b5a6" inherit autotools gettext ptest pkgconfig @@ -38,13 +38,13 @@ EXTRA_OECONF = "--program-prefix=eu-" DEPENDS_BZIP2 = "bzip2-replacement-native" DEPENDS_BZIP2_class-target = "bzip2" -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}" PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}" PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz" PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl" PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd" -RDEPENDS_${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils" +RDEPENDS_${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar" EXTRA_OECONF_append_class-target = " --disable-tests-rpath" @@ -86,6 +86,7 @@ do_install_ptest() { cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests cp -r ${B}/config.h ${D}${PTEST_PATH} cp -r ${B}/backends ${D}${PTEST_PATH} + cp -r ${B}/debuginfod ${D}${PTEST_PATH} sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {} fi @@ -142,6 +143,7 @@ INHIBIT_PACKAGE_STRIP_FILES = "\ ${PKGD}${PTEST_PATH}/tests/backtrace-data \ ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \ ${PKGD}${PTEST_PATH}/tests/deleted \ + ${PKGD}${PTEST_PATH}/tests/dwfllines \ ${PKGD}${PTEST_PATH}/src/strip \ ${PKGD}${PTEST_PATH}/src/addr2line \ ${PKGD}${PTEST_PATH}/src/elfcmp \ @@ -159,4 +161,4 @@ INHIBIT_PACKAGE_STRIP_FILES = "\ ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \ " -PRIVATE_LIBS_${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1" +PRIVATE_LIBS_${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1" diff --git a/poky/meta/recipes-devtools/elfutils/files/0001-add-support-for-ipkg-to-debuginfod.cxx.patch b/poky/meta/recipes-devtools/elfutils/files/0001-add-support-for-ipkg-to-debuginfod.cxx.patch deleted file mode 100644 index 5f82afef0..000000000 --- a/poky/meta/recipes-devtools/elfutils/files/0001-add-support-for-ipkg-to-debuginfod.cxx.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 571416bf5b5ef319df6d9c79e46680920487e4a7 Mon Sep 17 00:00:00 2001 -From: dorindabassey <dorindabassey@gmail.com> -Date: Sat, 19 Dec 2020 01:11:46 +0100 -Subject: [PATCH] add support for ipkg to debuginfod.cxx - -added support for ipkg to the debuginfod scanner. 0.182 only supports RPM and scan .debs, with this patch, debuginfod scanner would be able to scan .ipk - -Upstream-status: Submitted [https://sourceware.org/pipermail/elfutils-devel/2020q4/003357.html] - -Signed-off-by: dorindabassey <dorindabassey@gmail.com> - ---- - debuginfod/debuginfod.cxx | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx -index b34eacc..a8915f2 100644 ---- a/debuginfod/debuginfod.cxx -+++ b/debuginfod/debuginfod.cxx -@@ -484,11 +484,13 @@ parse_opt (int key, char *arg, - { - scan_archives[".deb"]="dpkg-deb --fsys-tarfile"; - scan_archives[".ddeb"]="dpkg-deb --fsys-tarfile"; -+ scan_archives[".ipk"]="dpkg-deb --fsys-tarfile"; - } - else - { - scan_archives[".deb"]="(bsdtar -O -x -f - data.tar.xz)<"; - scan_archives[".ddeb"]="(bsdtar -O -x -f - data.tar.xz)<"; -+ scan_archives[".ipk"]="(bsdtar -O -x -f - data.tar.xz)<"; - } - // .udeb too? - break; diff --git a/poky/meta/recipes-devtools/elfutils/files/0001-debuginfod-debuginfod-client.c-correct-string-format.patch b/poky/meta/recipes-devtools/elfutils/files/0001-debuginfod-debuginfod-client.c-correct-string-format.patch new file mode 100644 index 000000000..5b225c532 --- /dev/null +++ b/poky/meta/recipes-devtools/elfutils/files/0001-debuginfod-debuginfod-client.c-correct-string-format.patch @@ -0,0 +1,63 @@ +From c3055ce9eb32d0d24abc5cea5e1d231c499312a7 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 19 Apr 2021 23:29:10 +0200 +Subject: [PATCH] debuginfod/debuginfod-client.c: correct string format on + 32bit arches with 64bit time_t + +Use intmax_t to print time_t + +time_t is platform dependent and some of architectures e.g. +x32, riscv32, arc use 64bit time_t even while they are 32bit +architectures, therefore directly using integer printf formats will not +work portably, use intmax_t to typecast time_t into printf family of +functions + +Upstream-Status: Pending + +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + debuginfod/debuginfod-client.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index ee7eda2..083ec2c 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -226,7 +226,7 @@ debuginfod_config_cache(char *config_path, + if (fd < 0) + return -errno; + +- if (dprintf(fd, "%ld", cache_config_default_s) < 0) ++ if (dprintf(fd, "%jd", (intmax_t)cache_config_default_s) < 0) + return -errno; + } + +@@ -234,7 +234,7 @@ debuginfod_config_cache(char *config_path, + FILE *config_file = fopen(config_path, "r"); + if (config_file) + { +- if (fscanf(config_file, "%ld", &cache_config) != 1) ++ if (fscanf(config_file, "%jd", (intmax_t*)(&cache_config)) != 1) + cache_config = cache_config_default_s; + fclose(config_file); + } +@@ -267,7 +267,7 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path) + if (fd < 0) + return -errno; + +- if (dprintf(fd, "%ld", cache_clean_default_interval_s) < 0) ++ if (dprintf(fd, "%jd", (intmax_t)cache_clean_default_interval_s) < 0) + return -errno; + + /* init max age config file. */ +@@ -275,7 +275,7 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path) + && (fd = open(maxage_path, O_CREAT | O_RDWR, DEFFILEMODE)) < 0) + return -errno; + +- if (dprintf(fd, "%ld", cache_default_max_unused_age_s) < 0) ++ if (dprintf(fd, "%jd", (intmax_t)cache_default_max_unused_age_s) < 0) + return -errno; + + return 0; diff --git a/poky/meta/recipes-devtools/elfutils/files/0002-musl-libs.patch b/poky/meta/recipes-devtools/elfutils/files/0002-musl-libs.patch index b373940d3..c7360da7a 100644 --- a/poky/meta/recipes-devtools/elfutils/files/0002-musl-libs.patch +++ b/poky/meta/recipes-devtools/elfutils/files/0002-musl-libs.patch @@ -1,4 +1,4 @@ -From 18c527991deee93170a887b6da622560d5606913 Mon Sep 17 00:00:00 2001 +From 0f4667f0bb4b000d74ade07e90bd690b7217a19d Mon Sep 17 00:00:00 2001 From: Hongxu Jia <hongxu.jia@windriver.com> Date: Fri, 23 Aug 2019 10:18:47 +0800 Subject: [PATCH] musl-libs @@ -82,7 +82,7 @@ index ecb4d01..edc85e3 100644 #include <stdint.h> diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c -index 6edb27f..f331e3c 100644 +index c0f8dfa..aa78033 100644 --- a/libdwfl/linux-kernel-modules.c +++ b/libdwfl/linux-kernel-modules.c @@ -50,6 +50,7 @@ diff --git a/poky/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch b/poky/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch index 65593be32..2e379cdba 100644 --- a/poky/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch +++ b/poky/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch @@ -1,4 +1,4 @@ -From 2dab1a02a3cfd80629f3e0f380805a5e58dd0ac3 Mon Sep 17 00:00:00 2001 +From 2f94d488bf3daaa6a8548ee77120fc2506a9bbe3 Mon Sep 17 00:00:00 2001 From: Hongxu Jia <hongxu.jia@windriver.com> Date: Fri, 23 Aug 2019 10:19:48 +0800 Subject: [PATCH] musl-utils @@ -39,7 +39,7 @@ index e117166..8326f6c 100644 /* State of -D/-U flags. */ extern bool arlib_deterministic_output; diff --git a/src/elfcompress.c b/src/elfcompress.c -index 1b5b1e3..21c9024 100644 +index 2c6d91b..608646e 100644 --- a/src/elfcompress.c +++ b/src/elfcompress.c @@ -37,6 +37,13 @@ @@ -57,7 +57,7 @@ index 1b5b1e3..21c9024 100644 ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; diff --git a/src/strip.c b/src/strip.c -index 7a5d4e4..81a0d57 100644 +index 70fc8c0..d035d9e 100644 --- a/src/strip.c +++ b/src/strip.c @@ -46,6 +46,13 @@ @@ -75,7 +75,7 @@ index 7a5d4e4..81a0d57 100644 /* Name and version of program. */ diff --git a/src/unstrip.c b/src/unstrip.c -index 8580329..d547487 100644 +index e488e81..0e44456 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -52,6 +52,15 @@ diff --git a/poky/meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch b/poky/meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch index 8e1e97041..2fa60c333 100644 --- a/poky/meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch +++ b/poky/meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch @@ -1,4 +1,4 @@ -From ce3b1403bd88261b5461a9dcb7d6d6be9185703e Mon Sep 17 00:00:00 2001 +From 72819106d0e5666d172d39c24c19e4e7a3b8be0e Mon Sep 17 00:00:00 2001 From: Richard Purdie <richard.purdie@linuxfoundation.org> Date: Wed, 1 May 2019 22:15:03 +0100 Subject: [PATCH] Fix error on musl: @@ -19,7 +19,7 @@ Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> 1 file changed, 5 insertions(+) diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c -index abbdf3f..bd90f4d 100644 +index 197c6a5..3683672 100644 --- a/tests/elfstrmerge.c +++ b/tests/elfstrmerge.c @@ -33,6 +33,11 @@ diff --git a/poky/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch b/poky/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch index 205362626..5cd6fffc2 100644 --- a/poky/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch +++ b/poky/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch @@ -1,4 +1,4 @@ -From dfe11e043cd8ea0b0f0252bcff9f5a6b98c0ecd3 Mon Sep 17 00:00:00 2001 +From cfced441d4a6f2eca51d29c52240275bd6f54e49 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Mon, 22 Jun 2020 21:35:16 +0000 Subject: [PATCH] config/eu.am: do not use -Werror @@ -16,22 +16,22 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 2 deletions(-) diff --git a/config/eu.am b/config/eu.am -index 6c3c444..3bc0dc9 100644 +index 2c3e457..8fb0411 100644 --- a/config/eu.am +++ b/config/eu.am -@@ -73,7 +73,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ - -Wold-style-definition -Wstrict-prototypes -Wtrampolines \ +@@ -89,7 +89,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ + -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \ $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ - $(if $($(*F)_no_Werror),,-Werror) \ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ - $(if $($(*F)_no_Wpacked_not_aligned),-Wno-packed-not-aligned,) \ -@@ -83,7 +82,6 @@ AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \ - -Wtrampolines \ + $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \ +@@ -99,7 +98,6 @@ AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \ + $(TRAMPOLINES_WARNING) \ $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ - $(if $($(*F)_no_Werror),,-Werror) \ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ - $(if $($(*F)_no_Wpacked_not_aligned),-Wno-packed-not-aligned,) \ + $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \ diff --git a/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.3.bb b/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.3.bb new file mode 100644 index 000000000..d07d5c436 --- /dev/null +++ b/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.3.bb @@ -0,0 +1,23 @@ +SUMMARY = "Tools for erofs filesystems" +LICENSE = "GPLv2+" +SECTION = "base" +LIC_FILES_CHKSUM = "file://COPYING;md5=94fa01670a2a8f2d3ab2de15004e0848" +HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/README" + +SRCREV = "2cd522105ea771ec30b269cd4c57e2265a4d6349" +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git" + +UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))" + +S = "${WORKDIR}/git" + +DEPENDS = "util-linux-libuuid" + +inherit pkgconfig autotools + +PACKAGECONFIG ??= "lz4" +PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4" + +EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.7.bb b/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb index a697b74f9..16fe54096 100644 --- a/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.7.bb +++ b/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb @@ -10,7 +10,7 @@ DEPENDS = "util-linux" SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BP}.tar.gz \ file://0001-gptcurses-correctly-include-curses.h.patch \ " -SRC_URI[sha256sum] = "754004b7f85b279287c7ac3c0469b1d7e0eae043a97a2e587b0560ca5f3828c0" +SRC_URI[sha256sum] = "95d19856f004dabc4b8c342b2612e8d0a9eebdd52004297188369f152e9dc6df" UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/gptfdisk/files/gptfdisk/" UPSTREAM_CHECK_REGEX = "/gptfdisk/(?P<pver>(\d+[\.\-_]*)+)/" diff --git a/poky/meta/recipes-devtools/file/file_5.39.bb b/poky/meta/recipes-devtools/file/file_5.40.bb index abaa8149a..ec79839bd 100644 --- a/poky/meta/recipes-devtools/file/file_5.39.bb +++ b/poky/meta/recipes-devtools/file/file_5.40.bb @@ -11,10 +11,9 @@ LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=0251eaec1188b20d9a72c502ecfdd DEPENDS = "file-replacement-native" DEPENDS_class-native = "bzip2-replacement-native" -SRC_URI = "git://github.com/file/file.git \ - file://0001-src-compress.c-correct-header-define-for-xz-lzma.patch" +SRC_URI = "git://github.com/file/file.git" -SRCREV = "87731415de945660b00f02207d8e9d986ef9b82e" +SRCREV = "f49fda6f52a9477d817dbd9c06afab02daf025f8" S = "${WORKDIR}/git" inherit autotools update-alternatives diff --git a/poky/meta/recipes-devtools/file/files/0001-src-compress.c-correct-header-define-for-xz-lzma.patch b/poky/meta/recipes-devtools/file/files/0001-src-compress.c-correct-header-define-for-xz-lzma.patch deleted file mode 100644 index f8ba2f615..000000000 --- a/poky/meta/recipes-devtools/file/files/0001-src-compress.c-correct-header-define-for-xz-lzma.patch +++ /dev/null @@ -1,27 +0,0 @@ -From ffb6ebdb42590cb9f7d3f5177b7b820a9edc4c81 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Sun, 18 Oct 2020 23:40:42 +0200 -Subject: [PATCH] src/compress.c: correct header define for xz/lzma - -Upstream-Status: Submitted [https://github.com/file/file/pull/98] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - src/compress.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/compress.c b/src/compress.c -index 67f21583..9670b72c 100644 ---- a/src/compress.c -+++ b/src/compress.c -@@ -71,7 +71,7 @@ typedef void (*sig_t)(int); - #include <bzlib.h> - #endif - --#if defined(HAVE_XZLIB_H) && defined(XZLIBSUPPORT) -+#if defined(HAVE_LZMA_H) && defined(XZLIBSUPPORT) - #define BUILTIN_XZLIB - #include <lzma.h> - #endif --- -2.28.0 - diff --git a/poky/meta/recipes-devtools/flex/flex_2.6.4.bb b/poky/meta/recipes-devtools/flex/flex_2.6.4.bb index 1d43d2228..54e7e0172 100644 --- a/poky/meta/recipes-devtools/flex/flex_2.6.4.bb +++ b/poky/meta/recipes-devtools/flex/flex_2.6.4.bb @@ -3,12 +3,14 @@ DESCRIPTION = "Flex is a fast lexical analyser generator. Flex is a tool for ge lexical patterns in text." HOMEPAGE = "http://sourceforge.net/projects/flex/" SECTION = "devel" -LICENSE = "BSD-2-Clause" +LICENSE = "BSD-3-Clause & LGPL-2.0+" +LICENSE_${PN}-libfl = "BSD-3-Clause" DEPENDS = "${@bb.utils.contains('PTEST_ENABLED', '1', 'bison-native flex-native', '', d)}" BBCLASSEXTEND = "native nativesdk" -LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067" +LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067 \ + file://src/gettext.h;beginline=1;endline=17;md5=9c05dda2f58d89b850c399cf22e1a00c" SRC_URI = "https://github.com/westes/flex/releases/download/v${PV}/flex-${PV}.tar.gz \ file://run-ptest \ diff --git a/poky/meta/recipes-devtools/gcc/gcc-10.2.inc b/poky/meta/recipes-devtools/gcc/gcc-11.1.inc index c0cd8b31d..c21242af5 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-10.2.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-11.1.inc @@ -2,11 +2,11 @@ require gcc-common.inc # Third digit in PV should be incremented after a minor release -PV = "10.2.0" +PV = "11.1.0" # BINV should be incremented to a revision after a minor gcc release -BINV = "10.2.0" +BINV = "11.1.1" FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:" @@ -23,9 +23,12 @@ LIC_FILES_CHKSUM = "\ file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \ " -BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz" -#RELEASE ?= "93a49d2d2292893b9b7f38132df949c70942838c" +#RELEASE ?= "5b2ac9b40c325e9209c0bd55955db84aad4a0cc5" #BASEURI ?= "https://github.com/gcc-mirror/gcc/archive/${RELEASE}.zip;downloadfilename=gcc-${PV}-${RELEASE}.zip" + +BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz \ + http://downloads.yoctoproject.org/mirror/sources/gcc-11.1.0-9ee61d2b51df012c659359873637cc2162ecccf3.patch;apply=yes;name=backports \ + " SRC_URI = "\ ${BASEURI} \ file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \ @@ -65,15 +68,16 @@ SRC_URI = "\ file://0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch \ file://0036-mingw32-Enable-operation_not_supported.patch \ file://0037-libatomic-Do-not-enforce-march-on-aarch64.patch \ - file://0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch \ - file://0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch \ - file://0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch \ - file://0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch \ - file://0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch \ + file://0001-libstdc-Fix-installation-of-python-hooks-PR-99453.patch \ + file://0038-arc-Update-64bit-move-split-patterns.patch \ + file://0039-arc-Fix-u-maddhisi-patterns.patch \ + file://0040-arc-Update-doloop_end-patterns.patch \ " -SRC_URI[sha256sum] = "b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c" +SRC_URI[sha256sum] = "4c4a6fb8a8396059241c2e674b85b351c26a5d678274007f076957afa1cc9ddf" +SRC_URI[backports.sha256sum] = "69274bebd6c069a13443d4af61070e854740a639ec4d66eedf3e80070363587b" S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}" + # For dev release snapshotting #S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${RELEASE}" #B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}" diff --git a/poky/meta/recipes-devtools/gcc/gcc-configure-common.inc b/poky/meta/recipes-devtools/gcc/gcc-configure-common.inc index a64c4caf0..dc7f458b2 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-configure-common.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-configure-common.inc @@ -40,6 +40,7 @@ EXTRA_OECONF = "\ ${@get_gcc_mips_plt_setting(bb, d)} \ ${@get_gcc_ppc_plt_settings(bb, d)} \ ${@get_gcc_multiarch_setting(bb, d)} \ + --enable-standard-branch-protection \ " # glibc version is a minimum controlling whether features are enabled. diff --git a/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc index d3875c94d..1872faee1 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-cross-canadian.inc @@ -75,6 +75,7 @@ FILES_${PN} = "\ ${gcclibdir}/${TARGET_SYS}/${BINV}/include-fixed \ ${gcclibdir}/${TARGET_SYS}/${BINV}/plugin/include/ \ ${gcclibdir}/${TARGET_SYS}/${BINV}/plugin/gtype.* \ + ${libdir}/bfd-plugins/*.so \ ${includedir}/c++/${BINV} \ ${prefix}/${TARGET_SYS}/bin/* \ ${prefix}/${TARGET_SYS}/lib/* \ @@ -92,6 +93,8 @@ EXEEXT = "" # Compute how to get from libexecdir to bindir in python (easier than shell) BINRELPATH = "${@os.path.relpath(d.expand("${bindir}"), d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"))}" +# linker plugin path +LIBRELPATH = "${@os.path.relpath(d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"), d.expand("${libdir}/bfd-plugins"))}" do_install () { ( cd ${B}/${TARGET_SYS}/libgcc; oe_runmake 'DESTDIR=${D}' install-unwind_h-forbuild install-unwind_h ) @@ -121,7 +124,7 @@ do_install () { dest=${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/ install -d $dest suffix=${EXEEXT} - for t in ar as ld nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do + for t in ar as ld ld.bfd ld.gold nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do if [ "$t" = "g77" -o "$t" = "gfortran" ] && [ ! -e ${D}${bindir}/${TARGET_PREFIX}$t$suffix ]; then continue fi @@ -136,8 +139,12 @@ do_install () { cp ${S}/libquadmath/quadmath.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ + # install LTO linker plugins where binutils tools can find it + install -d ${D}${libdir}/bfd-plugins + ln -sf ${LIBRELPATH}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so + chown -R root:root ${D} - + cross_canadian_bindirlinks for i in linux ${CANADIANEXTRAOS} diff --git a/poky/meta/recipes-devtools/gcc/gcc-cross-canadian_10.2.bb b/poky/meta/recipes-devtools/gcc/gcc-cross-canadian_11.1.bb index bf53c5cd7..bf53c5cd7 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-cross-canadian_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/gcc-cross-canadian_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/gcc-cross.inc b/poky/meta/recipes-devtools/gcc/gcc-cross.inc index e08807afa..dca4036ab 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-cross.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-cross.inc @@ -83,6 +83,8 @@ INHIBIT_PACKAGE_STRIP = "1" # Compute how to get from libexecdir to bindir in python (easier than shell) BINRELPATH = "${@os.path.relpath(d.expand("${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_SYS}"), d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"))}" +# linker plugin path +LIBRELPATH = "${@os.path.relpath(d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"), d.expand("${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/bfd-plugins"))}" do_install () { ( cd ${B}/${TARGET_SYS}/libgcc; oe_runmake 'DESTDIR=${D}' install-unwind_h-forbuild install-unwind_h ) @@ -92,7 +94,7 @@ do_install () { install -d ${D}${target_libdir} # Link gfortran to g77 to satisfy not-so-smart configure or hard coded g77 - # gfortran is fully backwards compatible. This is a safe and practical solution. + # gfortran is fully backwards compatible. This is a safe and practical solution. if [ -n "${@d.getVar('FORTRAN')}" ]; then ln -sf ${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}gfortran ${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}g77 || true fortsymlinks="g77 gfortran" @@ -118,6 +120,10 @@ do_install () { cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ find ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed -type f -not -name "README" -not -name limits.h -not -name syslimits.h | xargs rm -f + + # install LTO linker plugins where binutils tools can find it + install -d ${D}${libdir}/bfd-plugins + ln -sf ${LIBRELPATH}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so } do_package[noexec] = "1" diff --git a/poky/meta/recipes-devtools/gcc/gcc-cross_10.2.bb b/poky/meta/recipes-devtools/gcc/gcc-cross_11.1.bb index b43cca0c5..b43cca0c5 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-cross_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/gcc-cross_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/gcc-crosssdk_10.2.bb b/poky/meta/recipes-devtools/gcc/gcc-crosssdk_11.1.bb index 40a6c4fef..40a6c4fef 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-crosssdk_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/gcc-crosssdk_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/gcc-runtime.inc b/poky/meta/recipes-devtools/gcc/gcc-runtime.inc index 9dcce2653..59d9a2468 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-runtime.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-runtime.inc @@ -49,16 +49,18 @@ RUNTIMETARGET_libc-newlib = "libstdc++-v3" # libiberty # libgfortran needs separate recipe due to libquadmath dependency -SLIB = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}" -SLIB_NEW = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}" +# Relative path to be repaced into debug info +REL_S = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}" DEBUG_PREFIX_MAP_class-target = " \ -fdebug-prefix-map=${WORKDIR}/recipe-sysroot= \ -fdebug-prefix-map=${WORKDIR}/recipe-sysroot-native= \ - -fdebug-prefix-map=${SLIB}=${SLIB_NEW} \ - -fdebug-prefix-map=${SLIB}/include=${SLIB_NEW}/libstdc++-v3/../include \ - -fdebug-prefix-map=${SLIB}/libiberty=${SLIB_NEW}/libstdc++-v3/../libiberty \ - -fdebug-prefix-map=${B}=${SLIB_NEW} \ + -fdebug-prefix-map=${S}=${REL_S} \ + -fdebug-prefix-map=${S}/include=${REL_S}/libstdc++-v3/../include \ + -fdebug-prefix-map=${S}/libiberty=${REL_S}/libstdc++-v3/../libiberty \ + -fdebug-prefix-map=${S}/libgcc=${REL_S}/libstdc++-v3/../libgcc \ + -fdebug-prefix-map=${B}=${REL_S} \ + -ffile-prefix-map=${B}/${HOST_SYS}/libstdc++-v3/include=${includedir}/c++/${BINV} \ " do_configure () { diff --git a/poky/meta/recipes-devtools/gcc/gcc-runtime_10.2.bb b/poky/meta/recipes-devtools/gcc/gcc-runtime_11.1.bb index dd430b57e..dd430b57e 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-runtime_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/gcc-runtime_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc b/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc index d0348c481..59e91daae 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-sanitizers.inc @@ -90,7 +90,9 @@ FILES_libasan-dev += "\ ${libdir}/libhwasan.so \ ${libdir}/libasan.la \ " -FILES_libasan-staticdev += "${libdir}/libasan.a" +FILES_libasan-staticdev += "${libdir}/libasan.a \ + ${libdir}/libhwasan.a \ +" FILES_libubsan += "${libdir}/libubsan.so.*" FILES_libubsan-dev += "\ diff --git a/poky/meta/recipes-devtools/gcc/gcc-sanitizers_10.2.bb b/poky/meta/recipes-devtools/gcc/gcc-sanitizers_11.1.bb index f3c705811..f3c705811 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-sanitizers_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/gcc-sanitizers_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/gcc-source_10.2.bb b/poky/meta/recipes-devtools/gcc/gcc-source_11.1.bb index b890fa33e..b890fa33e 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-source_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/gcc-source_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/gcc-target.inc b/poky/meta/recipes-devtools/gcc/gcc-target.inc index 164a669aa..0ee3e83d4 100644 --- a/poky/meta/recipes-devtools/gcc/gcc-target.inc +++ b/poky/meta/recipes-devtools/gcc/gcc-target.inc @@ -54,6 +54,7 @@ FILES_${PN} = "\ ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBS} \ ${gcclibdir}/${TARGET_SYS}/${BINV}/include \ ${gcclibdir}/${TARGET_SYS}/${BINV}/include-fixed \ + ${libdir}/bfd-plugins/*.so \ " INSANE_SKIP_${PN} += "dev-so" RRECOMMENDS_${PN} += "\ @@ -215,7 +216,8 @@ do_install () { ln -sf ${bindir}/${TARGET_PREFIX}cpp ${D}${base_libdir}/cpp ln -sf g++ c++ ln -sf gcc cc - + install -d ${D}${libdir}/bfd-plugins + ln -sf ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so chown -R root:root ${D} } diff --git a/poky/meta/recipes-devtools/gcc/gcc/0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch b/poky/meta/recipes-devtools/gcc/gcc/0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch deleted file mode 100644 index c060accd9..000000000 --- a/poky/meta/recipes-devtools/gcc/gcc/0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch +++ /dev/null @@ -1,66 +0,0 @@ -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From fd2ec4542fd2975e6d3f2f1c1a2639945a84f9e1 Mon Sep 17 00:00:00 2001 -From: Jakub Jelinek <jakub@redhat.com> -Date: Mon, 3 Aug 2020 22:55:28 +0200 -Subject: [PATCH] aarch64: Fix up __aarch64_cas16_acq_rel fallback - -As mentioned in the PR, the fallback path when LSE is unavailable writes -incorrect registers to the memory if the previous content compares equal -to x0, x1 - it writes copy of x0, x1 from the start of function, but it -should write x2, x3. - -2020-08-03 Jakub Jelinek <jakub@redhat.com> - - PR target/96402 - * config/aarch64/lse.S (__aarch64_cas16_acq_rel): Use x2, x3 instead - of x(tmp0), x(tmp1) in STXP arguments. - - * gcc.target/aarch64/pr96402.c: New test. - -(cherry picked from commit 90b43856fdff7d96d93d22970eca8a86c56e0ddc) ---- - gcc/testsuite/gcc.target/aarch64/pr96402.c | 16 ++++++++++++++++ - libgcc/config/aarch64/lse.S | 2 +- - 2 files changed, 17 insertions(+), 1 deletion(-) - create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96402.c - -diff --git a/gcc/testsuite/gcc.target/aarch64/pr96402.c b/gcc/testsuite/gcc.target/aarch64/pr96402.c -new file mode 100644 -index 00000000000..fa2dddfac15 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/pr96402.c -@@ -0,0 +1,16 @@ -+/* PR target/96402 */ -+/* { dg-do run { target int128 } } */ -+/* { dg-options "-moutline-atomics" } */ -+ -+int -+main () -+{ -+ __int128 a = 0; -+ __sync_val_compare_and_swap (&a, (__int128) 0, (__int128) 1); -+ if (a != 1) -+ __builtin_abort (); -+ __sync_val_compare_and_swap (&a, (__int128) 1, (((__int128) 0xdeadbeeffeedbac1ULL) << 64) | 0xabadcafe00c0ffeeULL); -+ if (a != ((((__int128) 0xdeadbeeffeedbac1ULL) << 64) | 0xabadcafe00c0ffeeULL)) -+ __builtin_abort (); -+ return 0; -+} -diff --git a/libgcc/config/aarch64/lse.S b/libgcc/config/aarch64/lse.S -index 64691c601c1..c8fbfbce4fd 100644 ---- a/libgcc/config/aarch64/lse.S -+++ b/libgcc/config/aarch64/lse.S -@@ -203,7 +203,7 @@ STARTFN NAME(cas) - cmp x0, x(tmp0) - ccmp x1, x(tmp1), #0, eq - bne 1f -- STXP w(tmp2), x(tmp0), x(tmp1), [x4] -+ STXP w(tmp2), x2, x3, [x4] - cbnz w(tmp2), 0b - 1: ret - --- -2.26.2 - diff --git a/poky/meta/recipes-devtools/gcc/gcc/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch b/poky/meta/recipes-devtools/gcc/gcc/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch deleted file mode 100644 index 73de4c759..000000000 --- a/poky/meta/recipes-devtools/gcc/gcc/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch +++ /dev/null @@ -1,202 +0,0 @@ -CVE: CVE-2020-13844 -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From 1ff243934ac443b5f58cd02a5012ce58ecc31fb2 Mon Sep 17 00:00:00 2001 -From: Matthew Malcomson <matthew.malcomson@arm.com> -Date: Thu, 9 Jul 2020 09:11:58 +0100 -Subject: [PATCH 1/3] aarch64: New Straight Line Speculation (SLS) mitigation - flags - -Here we introduce the flags that will be used for straight line speculation. - -The new flag introduced is `-mharden-sls=`. -This flag can take arguments of `none`, `all`, or a comma seperated list of one -or more of `retbr` or `blr`. -`none` indicates no special mitigation of the straight line speculation -vulnerability. -`all` requests all mitigations currently implemented. -`retbr` requests that the RET and BR instructions have a speculation barrier -inserted after them. -`blr` requests that BLR instructions are replaced by a BL to a function stub -using a BR with a speculation barrier after it. - -Setting this on a per-function basis using attributes or the like is not -enabled, but may be in the future. - -gcc/ChangeLog: - -2020-06-02 Matthew Malcomson <matthew.malcomson@arm.com> - - * config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p): - New. - (aarch64_harden_sls_blr_p): New. - * config/aarch64/aarch64.c (enum aarch64_sls_hardening_type): - New. - (aarch64_harden_sls_retbr_p): New. - (aarch64_harden_sls_blr_p): New. - (aarch64_validate_sls_mitigation): New. - (aarch64_override_options): Parse options for SLS mitigation. - * config/aarch64/aarch64.opt (-mharden-sls): New option. - * doc/invoke.texi: Document new option. ---- - gcc/config/aarch64/aarch64-protos.h | 3 ++ - gcc/config/aarch64/aarch64.c | 76 +++++++++++++++++++++++++++++++++++++ - gcc/config/aarch64/aarch64.opt | 4 ++ - gcc/doc/invoke.texi | 12 ++++++ - 4 files changed, 95 insertions(+) - -diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h -index 723d9ba..eb5f4b4 100644 ---- a/gcc/config/aarch64/aarch64-protos.h -+++ b/gcc/config/aarch64/aarch64-protos.h -@@ -781,4 +781,7 @@ extern const atomic_ool_names aarch64_ool_ldeor_names; - - tree aarch64_resolve_overloaded_builtin_general (location_t, tree, void *); - -+extern bool aarch64_harden_sls_retbr_p (void); -+extern bool aarch64_harden_sls_blr_p (void); -+ - #endif /* GCC_AARCH64_PROTOS_H */ -diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c -index b86434a..437a9cf 100644 ---- a/gcc/config/aarch64/aarch64.c -+++ b/gcc/config/aarch64/aarch64.c -@@ -14494,6 +14494,79 @@ aarch64_validate_mcpu (const char *str, const struct processor **res, - return false; - } - -+/* Straight line speculation indicators. */ -+enum aarch64_sls_hardening_type -+{ -+ SLS_NONE = 0, -+ SLS_RETBR = 1, -+ SLS_BLR = 2, -+ SLS_ALL = 3, -+}; -+static enum aarch64_sls_hardening_type aarch64_sls_hardening; -+ -+/* Return whether we should mitigatate Straight Line Speculation for the RET -+ and BR instructions. */ -+bool -+aarch64_harden_sls_retbr_p (void) -+{ -+ return aarch64_sls_hardening & SLS_RETBR; -+} -+ -+/* Return whether we should mitigatate Straight Line Speculation for the BLR -+ instruction. */ -+bool -+aarch64_harden_sls_blr_p (void) -+{ -+ return aarch64_sls_hardening & SLS_BLR; -+} -+ -+/* As of yet we only allow setting these options globally, in the future we may -+ allow setting them per function. */ -+static void -+aarch64_validate_sls_mitigation (const char *const_str) -+{ -+ char *token_save = NULL; -+ char *str = NULL; -+ -+ if (strcmp (const_str, "none") == 0) -+ { -+ aarch64_sls_hardening = SLS_NONE; -+ return; -+ } -+ if (strcmp (const_str, "all") == 0) -+ { -+ aarch64_sls_hardening = SLS_ALL; -+ return; -+ } -+ -+ char *str_root = xstrdup (const_str); -+ str = strtok_r (str_root, ",", &token_save); -+ if (!str) -+ error ("invalid argument given to %<-mharden-sls=%>"); -+ -+ int temp = SLS_NONE; -+ while (str) -+ { -+ if (strcmp (str, "blr") == 0) -+ temp |= SLS_BLR; -+ else if (strcmp (str, "retbr") == 0) -+ temp |= SLS_RETBR; -+ else if (strcmp (str, "none") == 0 || strcmp (str, "all") == 0) -+ { -+ error ("%<%s%> must be by itself for %<-mharden-sls=%>", str); -+ break; -+ } -+ else -+ { -+ error ("invalid argument %<%s%> for %<-mharden-sls=%>", str); -+ break; -+ } -+ str = strtok_r (NULL, ",", &token_save); -+ } -+ aarch64_sls_hardening = (aarch64_sls_hardening_type) temp; -+ free (str_root); -+} -+ - /* Parses CONST_STR for branch protection features specified in - aarch64_branch_protect_types, and set any global variables required. Returns - the parsing result and assigns LAST_STR to the last processed token from -@@ -14738,6 +14811,9 @@ aarch64_override_options (void) - selected_arch = NULL; - selected_tune = NULL; - -+ if (aarch64_harden_sls_string) -+ aarch64_validate_sls_mitigation (aarch64_harden_sls_string); -+ - if (aarch64_branch_protection_string) - aarch64_validate_mbranch_protection (aarch64_branch_protection_string); - -diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt -index d99d14c..5170361 100644 ---- a/gcc/config/aarch64/aarch64.opt -+++ b/gcc/config/aarch64/aarch64.opt -@@ -71,6 +71,10 @@ mgeneral-regs-only - Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save - Generate code which uses only the general registers. - -+mharden-sls= -+Target RejectNegative Joined Var(aarch64_harden_sls_string) -+Generate code to mitigate against straight line speculation. -+ - mfix-cortex-a53-835769 - Target Report Var(aarch64_fix_a53_err835769) Init(2) Save - Workaround for ARM Cortex-A53 Erratum number 835769. -diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi -index a2794a6..bd5b77a 100644 ---- a/gcc/doc/invoke.texi -+++ b/gcc/doc/invoke.texi -@@ -696,6 +696,7 @@ Objective-C and Objective-C++ Dialects}. - -msign-return-address=@var{scope} @gol - -mbranch-protection=@var{none}|@var{standard}|@var{pac-ret}[+@var{leaf} - +@var{b-key}]|@var{bti} @gol -+-mharden-sls=@var{opts} @gol - -march=@var{name} -mcpu=@var{name} -mtune=@var{name} @gol - -moverride=@var{string} -mverbose-cost-dump @gol - -mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{sysreg} @gol -@@ -17065,6 +17066,17 @@ functions. The optional argument @samp{b-key} can be used to sign the functions - with the B-key instead of the A-key. - @samp{bti} turns on branch target identification mechanism. - -+@item -mharden-sls=@var{opts} -+@opindex mharden-sls -+Enable compiler hardening against straight line speculation (SLS). -+@var{opts} is a comma-separated list of the following options: -+@table @samp -+@item retbr -+@item blr -+@end table -+In addition, @samp{-mharden-sls=all} enables all SLS hardening while -+@samp{-mharden-sls=none} disables all SLS hardening. -+ - @item -msve-vector-bits=@var{bits} - @opindex msve-vector-bits - Specify the number of bits in an SVE vector register. This option only has --- -2.7.4 - diff --git a/poky/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/poky/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch index 82ae9f8d1..0a108ee51 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch @@ -1,4 +1,4 @@ -From f2a5dc3bc7e5727d6bf77e1c6e8a31a6f000883d Mon Sep 17 00:00:00 2001 +From 368eaf1846733a9920c7cf5bc547a377e7167785 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 08:37:11 +0400 Subject: [PATCH] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET @@ -12,10 +12,10 @@ Upstream-Status: Inappropriate [embedded specific] 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure -index 4cc938ebb7d..226a64939d1 100755 +index 504f6410274..bcebad264ec 100755 --- a/configure +++ b/configure -@@ -7722,7 +7722,7 @@ fi +@@ -9728,7 +9728,7 @@ fi # for target_alias and gcc doesn't manage it consistently. target_configargs="--cache-file=./config.cache ${target_configargs}" @@ -25,10 +25,10 @@ index 4cc938ebb7d..226a64939d1 100755 *" newlib "*) case " $target_configargs " in diff --git a/configure.ac b/configure.ac -index c78d9cbea62..f024f4bac9b 100644 +index 088e735c5db..1289fe08760 100644 --- a/configure.ac +++ b/configure.ac -@@ -3227,7 +3227,7 @@ fi +@@ -3240,7 +3240,7 @@ fi # for target_alias and gcc doesn't manage it consistently. target_configargs="--cache-file=./config.cache ${target_configargs}" diff --git a/poky/meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch b/poky/meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch deleted file mode 100644 index addecb4bd..000000000 --- a/poky/meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch +++ /dev/null @@ -1,208 +0,0 @@ -From 2824d2418605e092899117e77bc8ebf332321807 Mon Sep 17 00:00:00 2001 -From: Jakub Jelinek <jakub@redhat.com> -Date: Fri, 15 Jan 2021 13:12:59 +0100 -Subject: [PATCH] libatomic, libgomp, libitc: Fix bootstrap [PR70454] - -The recent changes to error on mixing -march=i386 and -fcf-protection broke -bootstrap. This patch changes lib{atomic,gomp,itm} configury, so that it -only adds -march=i486 to flags if really needed (i.e. when 486 or later isn't -on by default already). Similarly, it will not use ifuncs if -mcx16 -(or -march=i686 for 32-bit) is on by default. - -2021-01-15 Jakub Jelinek <jakub@redhat.com> - - PR target/70454 -libatomic/ - * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to - be added through preprocessor check on - __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. Determine if try_ifunc is needed - based on preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 - or __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8. -libgomp/ - * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to - be added through preprocessor check on - __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. -libitm/ - * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to - be added through preprocessor check on - __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. - -Upstream-Status: Backport [master post 10.x release] ---- - libatomic/configure.tgt | 56 +++++++++++++++++++++++------------------ - libgomp/configure.tgt | 35 +++++++++++--------------- - libitm/configure.tgt | 37 +++++++++++++-------------- - 3 files changed, 64 insertions(+), 64 deletions(-) - -diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt -index 5dd0926d20..6ea082a29b 100644 ---- a/libatomic/configure.tgt -+++ b/libatomic/configure.tgt -@@ -81,32 +81,40 @@ case "${target_cpu}" in - ARCH=sparc - ;; - -- i[3456]86) -- case " ${CC} ${CFLAGS} " in -- *" -m64 "*|*" -mx32 "*) -- ;; -- *) -- if test -z "$with_arch"; then -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -- XCFLAGS="${XCFLAGS} -fomit-frame-pointer" -- fi -- esac -- ARCH=x86 -- # ??? Detect when -march=i686 is already enabled. -- try_ifunc=yes -- ;; -- x86_64) -- case " ${CC} ${CFLAGS} " in -- *" -m32 "*) -+ i[3456]86 | x86_64) -+ cat > conftestx.c <<EOF -+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 -+#error need -march=i486 -+#endif -+EOF -+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then -+ : -+ else -+ if test "${target_cpu}" = x86_64; then - XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" -- XCFLAGS="${XCFLAGS} -fomit-frame-pointer" -- ;; -- *) -- ;; -- esac -+ else -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -+ fi -+ XCFLAGS="${XCFLAGS} -fomit-frame-pointer" -+ fi -+ cat > conftestx.c <<EOF -+#ifdef __x86_64__ -+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 -+#error need -mcx16 -+#endif -+#else -+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 -+#error need -march=i686 -+#endif -+#endif -+EOF -+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then -+ try_ifunc=no -+ else -+ try_ifunc=yes -+ fi -+ rm -f conftestx.c - ARCH=x86 -- # ??? Detect when -mcx16 is already enabled. -- try_ifunc=yes - ;; - - *) ARCH="${target_cpu}" ;; -diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt -index 4790a31e39..761ef2a7db 100644 ---- a/libgomp/configure.tgt -+++ b/libgomp/configure.tgt -@@ -70,28 +70,23 @@ if test x$enable_linux_futex = xyes; then - ;; - - # Note that bare i386 is not included here. We need cmpxchg. -- i[456]86-*-linux*) -+ i[456]86-*-linux* | x86_64-*-linux*) - config_path="linux/x86 linux posix" -- case " ${CC} ${CFLAGS} " in -- *" -m64 "*|*" -mx32 "*) -- ;; -- *) -- if test -z "$with_arch"; then -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -- fi -- esac -- ;; -- -- # Similar jiggery-pokery for x86_64 multilibs, except here we -- # can't rely on the --with-arch configure option, since that -- # applies to the 64-bit side. -- x86_64-*-linux*) -- config_path="linux/x86 linux posix" -- case " ${CC} ${CFLAGS} " in -- *" -m32 "*) -+ cat > conftestx.c <<EOF -+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 -+#error need -march=i486 -+#endif -+EOF -+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then -+ : -+ else -+ if test "${target_cpu}" = x86_64; then - XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" -- ;; -- esac -+ else -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -+ fi -+ fi -+ rm -f conftestx.c - ;; - - # Note that sparcv7 and sparcv8 is not included here. We need cas. -diff --git a/libitm/configure.tgt b/libitm/configure.tgt -index 04109160e9..ca62bac627 100644 ---- a/libitm/configure.tgt -+++ b/libitm/configure.tgt -@@ -58,16 +58,23 @@ case "${target_cpu}" in - - arm*) ARCH=arm ;; - -- i[3456]86) -- case " ${CC} ${CFLAGS} " in -- *" -m64 "*|*" -mx32 "*) -- ;; -- *) -- if test -z "$with_arch"; then -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -- XCFLAGS="${XCFLAGS} -fomit-frame-pointer" -- fi -- esac -+ i[3456]86 | x86_64) -+ cat > conftestx.c <<EOF -+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 -+#error need -march=i486 -+#endif -+EOF -+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then -+ : -+ else -+ if test "${target_cpu}" = x86_64; then -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" -+ else -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -+ fi -+ XCFLAGS="${XCFLAGS} -fomit-frame-pointer" -+ fi -+ rm -f conftestx.c - XCFLAGS="${XCFLAGS} -mrtm" - ARCH=x86 - ;; -@@ -102,16 +109,6 @@ case "${target_cpu}" in - ARCH=sparc - ;; - -- x86_64) -- case " ${CC} ${CFLAGS} " in -- *" -m32 "*) -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" -- XCFLAGS="${XCFLAGS} -fomit-frame-pointer" -- ;; -- esac -- XCFLAGS="${XCFLAGS} -mrtm" -- ARCH=x86 -- ;; - s390|s390x) - XCFLAGS="${XCFLAGS} -mzarch -mhtm" - ARCH=s390 diff --git a/poky/meta/recipes-devtools/gcc/gcc/0001-libstdc-Fix-installation-of-python-hooks-PR-99453.patch b/poky/meta/recipes-devtools/gcc/gcc/0001-libstdc-Fix-installation-of-python-hooks-PR-99453.patch new file mode 100644 index 000000000..d82f533cb --- /dev/null +++ b/poky/meta/recipes-devtools/gcc/gcc/0001-libstdc-Fix-installation-of-python-hooks-PR-99453.patch @@ -0,0 +1,57 @@ +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From ad4c21f0f59b52357019148ec94d767aa2acd8f2 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely <jwakely@redhat.com> +Date: Tue, 1 Jun 2021 11:00:16 +0100 +Subject: [PATCH] libstdc++: Fix installation of python hooks [PR 99453] + +When no shared library is installed, the new code to determine the name +of the -gdb.py file yields an empty string. Use the name of the static +library in that case. + +libstdc++-v3/ChangeLog: + + PR libstdc++/99453 + * python/Makefile.am: Use archive name for printer hook if no + dynamic library name is available. + * python/Makefile.in: Regenerate. + +(cherry picked from commit 9f7bc160b4a0f27dce248d1226e3ae7104b0e67b) +--- + libstdc++-v3/python/Makefile.am | 4 ++++ + libstdc++-v3/python/Makefile.in | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/libstdc++-v3/python/Makefile.am b/libstdc++-v3/python/Makefile.am +index 0c2b207b86e..8efefa5725c 100644 +--- a/libstdc++-v3/python/Makefile.am ++++ b/libstdc++-v3/python/Makefile.am +@@ -48,5 +48,9 @@ install-data-local: gdb.py + ## the correct name. + @libname=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \ + $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \ ++ if [ -z "$$libname" ]; then \ ++ libname=`sed -ne "/^old_library=/{s/.*='//;s/'$$//;s/ .*//;p;}" \ ++ $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \ ++ fi; \ + echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \ + $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py +diff --git a/libstdc++-v3/python/Makefile.in b/libstdc++-v3/python/Makefile.in +index 2efe0b96a19..9904a9197de 100644 +--- a/libstdc++-v3/python/Makefile.in ++++ b/libstdc++-v3/python/Makefile.in +@@ -609,6 +609,10 @@ install-data-local: gdb.py + @$(mkdir_p) $(DESTDIR)$(toolexeclibdir) + @libname=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \ + $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \ ++ if [ -z "$$libname" ]; then \ ++ libname=`sed -ne "/^old_library=/{s/.*='//;s/'$$//;s/ .*//;p;}" \ ++ $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \ ++ fi; \ + echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \ + $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py + +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/gcc/gcc/0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch b/poky/meta/recipes-devtools/gcc/gcc/0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch deleted file mode 100644 index 823cc8b66..000000000 --- a/poky/meta/recipes-devtools/gcc/gcc/0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch +++ /dev/null @@ -1,607 +0,0 @@ -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From b1204d16e1ec96a4aa89e44de8990e2499ffdb22 Mon Sep 17 00:00:00 2001 -From: Matthew Malcomson <matthew.malcomson@arm.com> -Date: Thu, 9 Jul 2020 09:11:59 +0100 -Subject: [PATCH 2/3] aarch64: Introduce SLS mitigation for RET and BR - instructions - -Instructions following RET or BR are not necessarily executed. In order -to avoid speculation past RET and BR we can simply append a speculation -barrier. - -Since these speculation barriers will not be architecturally executed, -they are not expected to add a high performance penalty. - -The speculation barrier is to be SB when targeting architectures which -have this enabled, and DSB SY + ISB otherwise. - -We add tests for each of the cases where such an instruction was seen. - -This is implemented by modifying each machine description pattern that -emits either a RET or a BR instruction. We choose not to use something -like `TARGET_ASM_FUNCTION_EPILOGUE` since it does not affect the -`indirect_jump`, `jump`, `sibcall_insn` and `sibcall_value_insn` -patterns and we find it preferable to implement the functionality in the -same way for every pattern. - -There is one particular case which is slightly tricky. The -implementation of TARGET_ASM_TRAMPOLINE_TEMPLATE uses a BR which needs -to be mitigated against. The trampoline template is used *once* per -compilation unit, and the TRAMPOLINE_SIZE is exposed to the user via the -builtin macro __LIBGCC_TRAMPOLINE_SIZE__. -In the future we may implement function specific attributes to turn on -and off hardening on a per-function basis. -The fixed nature of the trampoline described above implies it will be -safer to ensure this speculation barrier is always used. - -Testing: - Bootstrap and regtest done on aarch64-none-linux - Used a temporary hack(1) to use these options on every test in the - testsuite and a script to check that the output never emitted an - unmitigated RET or BR. - -1) Temporary hack was a change to the testsuite to always use -`-save-temps` and run a script on the assembly output of those -compilations which produced one to ensure every RET or BR is immediately -followed by a speculation barrier. - -gcc/ChangeLog: - - * config/aarch64/aarch64-protos.h (aarch64_sls_barrier): New. - * config/aarch64/aarch64.c (aarch64_output_casesi): Emit - speculation barrier after BR instruction if needs be. - (aarch64_trampoline_init): Handle ptr_mode value & adjust size - of code copied. - (aarch64_sls_barrier): New. - (aarch64_asm_trampoline_template): Add needed barriers. - * config/aarch64/aarch64.h (AARCH64_ISA_SB): New. - (TARGET_SB): New. - (TRAMPOLINE_SIZE): Account for barrier. - * config/aarch64/aarch64.md (indirect_jump, *casesi_dispatch, - simple_return, *do_return, *sibcall_insn, *sibcall_value_insn): - Emit barrier if needs be, also account for possible barrier using - "sls_length" attribute. - (sls_length): New attribute. - (length): Determine default using any non-default sls_length - value. - -gcc/testsuite/ChangeLog: - - * gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c: New test. - * gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c: - New test. - * gcc.target/aarch64/sls-mitigation/sls-mitigation.exp: New file. - * lib/target-supports.exp (check_effective_target_aarch64_asm_sb_ok): - New proc. ---- - gcc/config/aarch64/aarch64-protos.h | 1 + - gcc/config/aarch64/aarch64.c | 41 ++++++- - gcc/config/aarch64/aarch64.h | 10 +- - gcc/config/aarch64/aarch64.md | 76 +++++++++---- - .../aarch64/sls-mitigation/sls-miti-retbr-pacret.c | 21 ++++ - .../aarch64/sls-mitigation/sls-miti-retbr.c | 119 +++++++++++++++++++++ - .../aarch64/sls-mitigation/sls-mitigation.exp | 73 +++++++++++++ - gcc/testsuite/lib/target-supports.exp | 2 +- - 8 files changed, 318 insertions(+), 25 deletions(-) - create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c - create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c - create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp - -diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h -index eb5f4b4..ee0ffde 100644 ---- a/gcc/config/aarch64/aarch64-protos.h -+++ b/gcc/config/aarch64/aarch64-protos.h -@@ -781,6 +781,7 @@ extern const atomic_ool_names aarch64_ool_ldeor_names; - - tree aarch64_resolve_overloaded_builtin_general (location_t, tree, void *); - -+const char *aarch64_sls_barrier (int); - extern bool aarch64_harden_sls_retbr_p (void); - extern bool aarch64_harden_sls_blr_p (void); - -diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c -index 437a9cf..44e3d1f 100644 ---- a/gcc/config/aarch64/aarch64.c -+++ b/gcc/config/aarch64/aarch64.c -@@ -10852,8 +10852,8 @@ aarch64_return_addr (int count, rtx frame ATTRIBUTE_UNUSED) - static void - aarch64_asm_trampoline_template (FILE *f) - { -- int offset1 = 16; -- int offset2 = 20; -+ int offset1 = 24; -+ int offset2 = 28; - - if (aarch64_bti_enabled ()) - { -@@ -10876,6 +10876,17 @@ aarch64_asm_trampoline_template (FILE *f) - } - asm_fprintf (f, "\tbr\t%s\n", reg_names [IP1_REGNUM]); - -+ /* We always emit a speculation barrier. -+ This is because the same trampoline template is used for every nested -+ function. Since nested functions are not particularly common or -+ performant we don't worry too much about the extra instructions to copy -+ around. -+ This is not yet a problem, since we have not yet implemented function -+ specific attributes to choose between hardening against straight line -+ speculation or not, but such function specific attributes are likely to -+ happen in the future. */ -+ asm_fprintf (f, "\tdsb\tsy\n\tisb\n"); -+ - /* The trampoline needs an extra padding instruction. In case if BTI is - enabled the padding instruction is replaced by the BTI instruction at - the beginning. */ -@@ -10890,10 +10901,14 @@ static void - aarch64_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value) - { - rtx fnaddr, mem, a_tramp; -- const int tramp_code_sz = 16; -+ const int tramp_code_sz = 24; - - /* Don't need to copy the trailing D-words, we fill those in below. */ -- emit_block_move (m_tramp, assemble_trampoline_template (), -+ /* We create our own memory address in Pmode so that `emit_block_move` can -+ use parts of the backend which expect Pmode addresses. */ -+ rtx temp = convert_memory_address (Pmode, XEXP (m_tramp, 0)); -+ emit_block_move (gen_rtx_MEM (BLKmode, temp), -+ assemble_trampoline_template (), - GEN_INT (tramp_code_sz), BLOCK_OP_NORMAL); - mem = adjust_address (m_tramp, ptr_mode, tramp_code_sz); - fnaddr = XEXP (DECL_RTL (fndecl), 0); -@@ -11084,6 +11099,8 @@ aarch64_output_casesi (rtx *operands) - output_asm_insn (buf, operands); - output_asm_insn (patterns[index][1], operands); - output_asm_insn ("br\t%3", operands); -+ output_asm_insn (aarch64_sls_barrier (aarch64_harden_sls_retbr_p ()), -+ operands); - assemble_label (asm_out_file, label); - return ""; - } -@@ -22924,6 +22941,22 @@ aarch64_file_end_indicate_exec_stack () - #undef GNU_PROPERTY_AARCH64_FEATURE_1_BTI - #undef GNU_PROPERTY_AARCH64_FEATURE_1_AND - -+/* Helper function for straight line speculation. -+ Return what barrier should be emitted for straight line speculation -+ mitigation. -+ When not mitigating against straight line speculation this function returns -+ an empty string. -+ When mitigating against straight line speculation, use: -+ * SB when the v8.5-A SB extension is enabled. -+ * DSB+ISB otherwise. */ -+const char * -+aarch64_sls_barrier (int mitigation_required) -+{ -+ return mitigation_required -+ ? (TARGET_SB ? "sb" : "dsb\tsy\n\tisb") -+ : ""; -+} -+ - /* Target-specific selftests. */ - - #if CHECKING_P -diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h -index 1ce23c6..c21015f 100644 ---- a/gcc/config/aarch64/aarch64.h -+++ b/gcc/config/aarch64/aarch64.h -@@ -281,6 +281,7 @@ extern unsigned aarch64_architecture_version; - #define AARCH64_ISA_F32MM (aarch64_isa_flags & AARCH64_FL_F32MM) - #define AARCH64_ISA_F64MM (aarch64_isa_flags & AARCH64_FL_F64MM) - #define AARCH64_ISA_BF16 (aarch64_isa_flags & AARCH64_FL_BF16) -+#define AARCH64_ISA_SB (aarch64_isa_flags & AARCH64_FL_SB) - - /* Crypto is an optional extension to AdvSIMD. */ - #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO) -@@ -378,6 +379,9 @@ extern unsigned aarch64_architecture_version; - #define TARGET_FIX_ERR_A53_835769_DEFAULT 1 - #endif - -+/* SB instruction is enabled through +sb. */ -+#define TARGET_SB (AARCH64_ISA_SB) -+ - /* Apply the workaround for Cortex-A53 erratum 835769. */ - #define TARGET_FIX_ERR_A53_835769 \ - ((aarch64_fix_a53_err835769 == 2) \ -@@ -1058,8 +1062,10 @@ typedef struct - - #define RETURN_ADDR_RTX aarch64_return_addr - --/* BTI c + 3 insns + 2 pointer-sized entries. */ --#define TRAMPOLINE_SIZE (TARGET_ILP32 ? 24 : 32) -+/* BTI c + 3 insns -+ + sls barrier of DSB + ISB. -+ + 2 pointer-sized entries. */ -+#define TRAMPOLINE_SIZE (24 + (TARGET_ILP32 ? 8 : 16)) - - /* Trampolines contain dwords, so must be dword aligned. */ - #define TRAMPOLINE_ALIGNMENT 64 -diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md -index 8c8be3c..dda04ee 100644 ---- a/gcc/config/aarch64/aarch64.md -+++ b/gcc/config/aarch64/aarch64.md -@@ -407,10 +407,25 @@ - ;; Attribute that specifies whether the alternative uses MOVPRFX. - (define_attr "movprfx" "no,yes" (const_string "no")) - -+;; Attribute to specify that an alternative has the length of a single -+;; instruction plus a speculation barrier. -+(define_attr "sls_length" "none,retbr,casesi" (const_string "none")) -+ - (define_attr "length" "" - (cond [(eq_attr "movprfx" "yes") - (const_int 8) -- ] (const_int 4))) -+ -+ (eq_attr "sls_length" "retbr") -+ (cond [(match_test "!aarch64_harden_sls_retbr_p ()") (const_int 4) -+ (match_test "TARGET_SB") (const_int 8)] -+ (const_int 12)) -+ -+ (eq_attr "sls_length" "casesi") -+ (cond [(match_test "!aarch64_harden_sls_retbr_p ()") (const_int 16) -+ (match_test "TARGET_SB") (const_int 20)] -+ (const_int 24)) -+ ] -+ (const_int 4))) - - ;; Strictly for compatibility with AArch32 in pipeline models, since AArch64 has - ;; no predicated insns. -@@ -447,8 +462,12 @@ - (define_insn "indirect_jump" - [(set (pc) (match_operand:DI 0 "register_operand" "r"))] - "" -- "br\\t%0" -- [(set_attr "type" "branch")] -+ { -+ output_asm_insn ("br\\t%0", operands); -+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ()); -+ } -+ [(set_attr "type" "branch") -+ (set_attr "sls_length" "retbr")] - ) - - (define_insn "jump" -@@ -765,7 +784,7 @@ - "* - return aarch64_output_casesi (operands); - " -- [(set_attr "length" "16") -+ [(set_attr "sls_length" "casesi") - (set_attr "type" "branch")] - ) - -@@ -844,18 +863,23 @@ - [(return)] - "" - { -+ const char *ret = NULL; - if (aarch64_return_address_signing_enabled () - && TARGET_ARMV8_3 - && !crtl->calls_eh_return) - { - if (aarch64_ra_sign_key == AARCH64_KEY_B) -- return "retab"; -+ ret = "retab"; - else -- return "retaa"; -+ ret = "retaa"; - } -- return "ret"; -+ else -+ ret = "ret"; -+ output_asm_insn (ret, operands); -+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ()); - } -- [(set_attr "type" "branch")] -+ [(set_attr "type" "branch") -+ (set_attr "sls_length" "retbr")] - ) - - (define_expand "return" -@@ -867,8 +891,12 @@ - (define_insn "simple_return" - [(simple_return)] - "" -- "ret" -- [(set_attr "type" "branch")] -+ { -+ output_asm_insn ("ret", operands); -+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ()); -+ } -+ [(set_attr "type" "branch") -+ (set_attr "sls_length" "retbr")] - ) - - (define_insn "*cb<optab><mode>1" -@@ -1066,10 +1094,16 @@ - (unspec:DI [(match_operand:DI 2 "const_int_operand")] UNSPEC_CALLEE_ABI) - (return)] - "SIBLING_CALL_P (insn)" -- "@ -- br\\t%0 -- b\\t%c0" -- [(set_attr "type" "branch, branch")] -+ { -+ if (which_alternative == 0) -+ { -+ output_asm_insn ("br\\t%0", operands); -+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ()); -+ } -+ return "b\\t%c0"; -+ } -+ [(set_attr "type" "branch, branch") -+ (set_attr "sls_length" "retbr,none")] - ) - - (define_insn "*sibcall_value_insn" -@@ -1080,10 +1114,16 @@ - (unspec:DI [(match_operand:DI 3 "const_int_operand")] UNSPEC_CALLEE_ABI) - (return)] - "SIBLING_CALL_P (insn)" -- "@ -- br\\t%1 -- b\\t%c1" -- [(set_attr "type" "branch, branch")] -+ { -+ if (which_alternative == 0) -+ { -+ output_asm_insn ("br\\t%1", operands); -+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ()); -+ } -+ return "b\\t%c1"; -+ } -+ [(set_attr "type" "branch, branch") -+ (set_attr "sls_length" "retbr,none")] - ) - - ;; Call subroutine returning any type. -diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c -new file mode 100644 -index 0000000..fa1887a ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c -@@ -0,0 +1,21 @@ -+/* Avoid ILP32 since pacret is only available for LP64 */ -+/* { dg-do compile { target { ! ilp32 } } } */ -+/* { dg-additional-options "-mharden-sls=retbr -mbranch-protection=pac-ret -march=armv8.3-a" } */ -+ -+/* Testing the do_return pattern for retaa and retab. */ -+long retbr_subcall(void); -+long retbr_do_return_retaa(void) -+{ -+ return retbr_subcall()+1; -+} -+ -+__attribute__((target("branch-protection=pac-ret+b-key"))) -+long retbr_do_return_retab(void) -+{ -+ return retbr_subcall()+1; -+} -+ -+/* Ensure there are no BR or RET instructions which are not directly followed -+ by a speculation barrier. */ -+/* { dg-final { scan-assembler-not {\t(br|ret|retaa|retab)\tx[0-9][0-9]?\n\t(?!dsb\tsy\n\tisb)} } } */ -+/* { dg-final { scan-assembler-not {ret\t} } } */ -diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c -new file mode 100644 -index 0000000..76b8d03 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c -@@ -0,0 +1,119 @@ -+/* We ensure that -Wpedantic is off since it complains about the trampolines -+ we explicitly want to test. */ -+/* { dg-additional-options "-mharden-sls=retbr -Wno-pedantic " } */ -+/* -+ Ensure that the SLS hardening of RET and BR leaves no unprotected RET/BR -+ instructions. -+ */ -+typedef int (foo) (int, int); -+typedef void (bar) (int, int); -+struct sls_testclass { -+ foo *x; -+ bar *y; -+ int left; -+ int right; -+}; -+ -+int -+retbr_sibcall_value_insn (struct sls_testclass x) -+{ -+ return x.x(x.left, x.right); -+} -+ -+void -+retbr_sibcall_insn (struct sls_testclass x) -+{ -+ x.y(x.left, x.right); -+} -+ -+/* Aim to test two different returns. -+ One that introduces a tail call in the middle of the function, and one that -+ has a normal return. */ -+int -+retbr_multiple_returns (struct sls_testclass x) -+{ -+ int temp; -+ if (x.left % 10) -+ return x.x(x.left, 100); -+ else if (x.right % 20) -+ { -+ return x.x(x.left * x.right, 100); -+ } -+ temp = x.left % x.right; -+ temp *= 100; -+ temp /= 2; -+ return temp % 3; -+} -+ -+void -+retbr_multiple_returns_void (struct sls_testclass x) -+{ -+ if (x.left % 10) -+ { -+ x.y(x.left, 100); -+ } -+ else if (x.right % 20) -+ { -+ x.y(x.left * x.right, 100); -+ } -+ return; -+} -+ -+/* Testing the casesi jump via register. */ -+__attribute__ ((optimize ("Os"))) -+int -+retbr_casesi_dispatch (struct sls_testclass x) -+{ -+ switch (x.left) -+ { -+ case -5: -+ return -2; -+ case -3: -+ return -1; -+ case 0: -+ return 0; -+ case 3: -+ return 1; -+ case 5: -+ break; -+ default: -+ __builtin_unreachable (); -+ } -+ return x.right; -+} -+ -+/* Testing the BR in trampolines is mitigated against. */ -+void f1 (void *); -+void f3 (void *, void (*)(void *)); -+void f2 (void *); -+ -+int -+retbr_trampolines (void *a, int b) -+{ -+ if (!b) -+ { -+ f1 (a); -+ return 1; -+ } -+ if (b) -+ { -+ void retbr_tramp_internal (void *c) -+ { -+ if (c == a) -+ f2 (c); -+ } -+ f3 (a, retbr_tramp_internal); -+ } -+ return 0; -+} -+ -+/* Testing the indirect_jump pattern. */ -+void -+retbr_indirect_jump (int *buf) -+{ -+ __builtin_longjmp(buf, 1); -+} -+ -+/* Ensure there are no BR or RET instructions which are not directly followed -+ by a speculation barrier. */ -+/* { dg-final { scan-assembler-not {\t(br|ret|retaa|retab)\tx[0-9][0-9]?\n\t(?!dsb\tsy\n\tisb|sb)} } } */ -diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp -new file mode 100644 -index 0000000..8122503 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp -@@ -0,0 +1,73 @@ -+# Regression driver for SLS mitigation on AArch64. -+# Copyright (C) 2020 Free Software Foundation, Inc. -+# Contributed by ARM Ltd. -+# -+# This file is part of GCC. -+# -+# GCC is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3, or (at your option) -+# any later version. -+# -+# GCC is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with GCC; see the file COPYING3. If not see -+# <http://www.gnu.org/licenses/>. */ -+ -+# Exit immediately if this isn't an AArch64 target. -+if {![istarget aarch64*-*-*] } then { -+ return -+} -+ -+# Load support procs. -+load_lib gcc-dg.exp -+load_lib torture-options.exp -+ -+# If a testcase doesn't have special options, use these. -+global DEFAULT_CFLAGS -+if ![info exists DEFAULT_CFLAGS] then { -+ set DEFAULT_CFLAGS " " -+} -+ -+# Initialize `dg'. -+dg-init -+torture-init -+ -+# Use different architectures as well as the normal optimisation options. -+# (i.e. use both SB and DSB+ISB barriers). -+ -+set save-dg-do-what-default ${dg-do-what-default} -+# Main loop. -+# Run with torture tests (i.e. a bunch of different optimisation levels) just -+# to increase test coverage. -+set dg-do-what-default assemble -+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ -+ "-save-temps" $DEFAULT_CFLAGS -+ -+# Run the same tests but this time with SB extension. -+# Since not all supported assemblers will support that extension we decide -+# whether to assemble or just compile based on whether the extension is -+# supported for the available assembler. -+ -+set templist {} -+foreach x $DG_TORTURE_OPTIONS { -+ lappend templist "$x -march=armv8.3-a+sb " -+ lappend templist "$x -march=armv8-a+sb " -+} -+set-torture-options $templist -+if { [check_effective_target_aarch64_asm_sb_ok] } { -+ set dg-do-what-default assemble -+} else { -+ set dg-do-what-default compile -+} -+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ -+ "-save-temps" $DEFAULT_CFLAGS -+set dg-do-what-default ${save-dg-do-what-default} -+ -+# All done. -+torture-finish -+dg-finish -diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp -index 8a186dd..9d2e093 100644 ---- a/gcc/testsuite/lib/target-supports.exp -+++ b/gcc/testsuite/lib/target-supports.exp -@@ -9432,7 +9432,7 @@ proc check_effective_target_aarch64_tiny { } { - # various architecture extensions via the .arch_extension pseudo-op. - - foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod" "sve" -- "i8mm" "f32mm" "f64mm" "bf16" } { -+ "i8mm" "f32mm" "f64mm" "bf16" "sb" } { - eval [string map [list FUNC $aarch64_ext] { - proc check_effective_target_aarch64_asm_FUNC_ok { } { - if { [istarget aarch64*-*-*] } { --- -2.7.4 - diff --git a/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch b/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch index 697bdc821..18a9fb870 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch @@ -1,6 +1,6 @@ -From 74cc21f474402cf3578e37e1d7a1a22bbd070f6a Mon Sep 17 00:00:00 2001 +From 118c6f054711d437167ff125a88c9236bfc8099c Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 29 Mar 2013 08:59:00 +0400 +Date: Mon, 8 Mar 2021 16:04:20 -0800 Subject: [PATCH] gcc: poison-system-directories Add /sw/include and /opt/include based on the original @@ -11,11 +11,9 @@ aborted. Instead, we add the two missing items to the current scan. If the user wants this to be a failure, they can add "-Werror=poison-system-directories". +Upstream-Status: Pending Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com> -Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com> - -Upstream-Status: Pending --- gcc/common.opt | 4 ++++ gcc/config.in | 10 ++++++++++ @@ -27,10 +25,10 @@ Upstream-Status: Pending 7 files changed, 86 insertions(+), 2 deletions(-) diff --git a/gcc/common.opt b/gcc/common.opt -index 3ec7743ea..d3c3e51dc 100644 +index c75dd36843e..49acbd6ed44 100644 --- a/gcc/common.opt +++ b/gcc/common.opt -@@ -682,6 +682,10 @@ Wreturn-local-addr +@@ -683,6 +683,10 @@ Wreturn-local-addr Common Var(warn_return_local_addr) Init(1) Warning Warn about returning a pointer/reference to a local or temporary variable. @@ -42,10 +40,10 @@ index 3ec7743ea..d3c3e51dc 100644 Common Var(warn_shadow) Warning Warn when one variable shadows another. Same as -Wshadow=global. diff --git a/gcc/config.in b/gcc/config.in -index 364eba477..7d2c3bbf1 100644 +index 10a13cde586..8848284da41 100644 --- a/gcc/config.in +++ b/gcc/config.in -@@ -224,6 +224,16 @@ +@@ -218,6 +218,16 @@ #endif @@ -63,18 +61,18 @@ index 364eba477..7d2c3bbf1 100644 optimizer and back end) to be checked for dynamic type safety at runtime. This is quite expensive. */ diff --git a/gcc/configure b/gcc/configure -index 2a9d646b4..a848792f2 100755 +index 9bb436ce7bd..3f0734bff11 100755 --- a/gcc/configure +++ b/gcc/configure -@@ -1010,6 +1010,7 @@ with_system_zlib - enable_maintainer_mode +@@ -1020,6 +1020,7 @@ enable_maintainer_mode enable_link_mutex + enable_link_serialization enable_version_specific_runtime_libs +enable_poison_system_directories enable_plugin enable_host_shared enable_libquadmath_support -@@ -1766,6 +1767,8 @@ Optional Features: +@@ -1782,6 +1783,8 @@ Optional Features: --enable-version-specific-runtime-libs specify that runtime libraries should be installed in a compiler-specific directory @@ -83,7 +81,7 @@ index 2a9d646b4..a848792f2 100755 --enable-plugin enable plugin support --enable-host-shared build host code as shared libraries --disable-libquadmath-support -@@ -30280,6 +30283,22 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then : +@@ -31325,6 +31328,22 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then : fi @@ -107,16 +105,16 @@ index 2a9d646b4..a848792f2 100755 diff --git a/gcc/configure.ac b/gcc/configure.ac -index 51cce36ce..66ffde305 100644 +index caa611933df..54e21764b3e 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac -@@ -6614,6 +6614,22 @@ AC_ARG_ENABLE(version-specific-runtime-libs, +@@ -7123,6 +7123,22 @@ AC_ARG_ENABLE(version-specific-runtime-libs, [specify that runtime libraries should be installed in a compiler-specific directory])]) +AC_ARG_ENABLE([poison-system-directories], + AS_HELP_STRING([--enable-poison-system-directories], -+ [warn for use of native system header directories (no/yes/error)]),, ++ [warn for use of native system header directories (no/yes/error)]),, + [enable_poison_system_directories=no]) +AC_MSG_NOTICE([poisoned directories $enable_poison_system_directories]) +if test "x${enable_poison_system_directories}" != "xno"; then @@ -134,10 +132,10 @@ index 51cce36ce..66ffde305 100644 AC_SUBST(subdirs) AC_SUBST(srcdir) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi -index d929eb109..aa5ff88b1 100644 +index 7a368959e5e..6659a903bf0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi -@@ -351,6 +351,7 @@ Objective-C and Objective-C++ Dialects}. +@@ -369,6 +369,7 @@ Objective-C and Objective-C++ Dialects}. -Wpacked -Wno-packed-bitfield-compat -Wpacked-not-aligned -Wpadded @gol -Wparentheses -Wno-pedantic-ms-format @gol -Wpointer-arith -Wno-pointer-compare -Wno-pointer-to-int-cast @gol @@ -145,7 +143,7 @@ index d929eb109..aa5ff88b1 100644 -Wno-pragmas -Wno-prio-ctor-dtor -Wredundant-decls @gol -Wrestrict -Wno-return-local-addr -Wreturn-type @gol -Wno-scalar-storage-order -Wsequence-point @gol -@@ -6928,6 +6929,14 @@ made up of data only and thus requires no special treatment. But, for +@@ -7735,6 +7736,14 @@ made up of data only and thus requires no special treatment. But, for most targets, it is made up of code and thus requires the stack to be made executable in order for the program to work properly. @@ -161,10 +159,10 @@ index d929eb109..aa5ff88b1 100644 @opindex Wfloat-equal @opindex Wno-float-equal diff --git a/gcc/gcc.c b/gcc/gcc.c -index 49c9c6c17..24a92bf27 100644 +index 7837553958b..19c75b6e20d 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c -@@ -1044,6 +1044,8 @@ proper position among the other output files. */ +@@ -1152,6 +1152,8 @@ proper position among the other output files. */ "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \ "%X %{o*} %{e*} %{N} %{n} %{r}\ %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \ @@ -173,7 +171,7 @@ index 49c9c6c17..24a92bf27 100644 %{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) " \ VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ -@@ -1138,8 +1140,11 @@ static const char *cpp_unique_options = +@@ -1247,8 +1249,11 @@ static const char *cpp_unique_options = static const char *cpp_options = "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\ %{f*} %{g*:%{%:debug-level-gt(0):%{g*}\ @@ -185,10 +183,10 @@ index 49c9c6c17..24a92bf27 100644 +#endif + " %{undef} %{save-temps*:-fpch-preprocess}"; - /* This contains cpp options which are not passed when the preprocessor - output will be used by another program. */ + /* Pass -d* flags, possibly modifying -dumpdir, -dumpbase et al. + diff --git a/gcc/incpath.c b/gcc/incpath.c -index 94eaba7b1..bfad4ebe3 100644 +index 446d280321d..fbfc0ce03b8 100644 --- a/gcc/incpath.c +++ b/gcc/incpath.c @@ -26,6 +26,7 @@ @@ -199,7 +197,7 @@ index 94eaba7b1..bfad4ebe3 100644 /* Microsoft Windows does not natively support inodes. VMS has non-numeric inodes. */ -@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose) +@@ -395,6 +396,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose) } fprintf (stderr, _("End of search list.\n")); } @@ -226,6 +224,3 @@ index 94eaba7b1..bfad4ebe3 100644 } /* Use given -I paths for #include "..." but not #include <...>, and --- -2.25.1 - diff --git a/poky/meta/recipes-devtools/gcc/gcc/0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch b/poky/meta/recipes-devtools/gcc/gcc/0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch deleted file mode 100644 index 716a36717..000000000 --- a/poky/meta/recipes-devtools/gcc/gcc/0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch +++ /dev/null @@ -1,658 +0,0 @@ -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@arm.com> - -From a5e7efc40ed841934c1d913f39476afa17d8e5f7 Mon Sep 17 00:00:00 2001 -From: Matthew Malcomson <matthew.malcomson@arm.com> -Date: Thu, 9 Jul 2020 09:11:59 +0100 -Subject: [PATCH 3/3] aarch64: Mitigate SLS for BLR instruction - -This patch introduces the mitigation for Straight Line Speculation past -the BLR instruction. - -This mitigation replaces BLR instructions with a BL to a stub which uses -a BR to jump to the original value. These function stubs are then -appended with a speculation barrier to ensure no straight line -speculation happens after these jumps. - -When optimising for speed we use a set of stubs for each function since -this should help the branch predictor make more accurate predictions -about where a stub should branch. - -When optimising for size we use one set of stubs for all functions. -This set of stubs can have human readable names, and we are using -`__call_indirect_x<N>` for register x<N>. - -When BTI branch protection is enabled the BLR instruction can jump to a -`BTI c` instruction using any register, while the BR instruction can -only jump to a `BTI c` instruction using the x16 or x17 registers. -Hence, in order to ensure this transformation is safe we mov the value -of the original register into x16 and use x16 for the BR. - -As an example when optimising for size: -a - BLR x0 -instruction would get transformed to something like - BL __call_indirect_x0 -where __call_indirect_x0 labels a thunk that contains -__call_indirect_x0: - MOV X16, X0 - BR X16 - <speculation barrier> - -The first version of this patch used local symbols specific to a -compilation unit to try and avoid relocations. -This was mistaken since functions coming from the same compilation unit -can still be in different sections, and the assembler will insert -relocations at jumps between sections. - -On any relocation the linker is permitted to emit a veneer to handle -jumps between symbols that are very far apart. The registers x16 and -x17 may be clobbered by these veneers. -Hence the function stubs cannot rely on the values of x16 and x17 being -the same as just before the function stub is called. - -Similar can be said for the hot/cold partitioning of single functions, -so function-local stubs have the same restriction. - -This updated version of the patch never emits function stubs for x16 and -x17, and instead forces other registers to be used. - -Given the above, there is now no benefit to local symbols (since they -are not enough to avoid dealing with linker intricacies). This patch -now uses global symbols with hidden visibility each stored in their own -COMDAT section. This means stubs can be shared between compilation -units while still avoiding the PLT indirection. - -This patch also removes the `__call_indirect_x30` stub (and -function-local equivalent) which would simply jump back to the original -location. - -The function-local stubs are emitted to the assembly output file in one -chunk, which means we need not add the speculation barrier directly -after each one. -This is because we know for certain that the instructions directly after -the BR in all but the last function stub will be from another one of -these stubs and hence will not contain a speculation gadget. -Instead we add a speculation barrier at the end of the sequence of -stubs. - -The global stubs are emitted in COMDAT/.linkonce sections by -themselves so that the linker can remove duplicates from multiple object -files. This means they are not emitted in one chunk, and each one must -include the speculation barrier. - -Another difference is that since the global stubs are shared across -compilation units we do not know that all functions will be targeting an -architecture supporting the SB instruction. -Rather than provide multiple stubs for each architecture, we provide a -stub that will work for all architectures -- using the DSB+ISB barrier. - -This mitigation does not apply for BLR instructions in the following -places: -- Some accesses to thread-local variables use a code sequence with a BLR - instruction. This code sequence is part of the binary interface between - compiler and linker. If this BLR instruction needs to be mitigated, it'd - probably be best to do so in the linker. It seems that the code sequence - for thread-local variable access is unlikely to lead to a Spectre Revalation - Gadget. -- PLT stubs are produced by the linker and each contain a BLR instruction. - It seems that at most only after the last PLT stub a Spectre Revalation - Gadget might appear. - -Testing: - Bootstrap and regtest on AArch64 - (with BOOT_CFLAGS="-mharden-sls=retbr,blr") - Used a temporary hack(1) in gcc-dg.exp to use these options on every - test in the testsuite, a slight modification to emit the speculation - barrier after every function stub, and a script to check that the - output never emitted a BLR, or unmitigated BR or RET instruction. - Similar on an aarch64-none-elf cross-compiler. - -1) Temporary hack emitted a speculation barrier at the end of every stub -function, and used a script to ensure that: - a) Every RET or BR is immediately followed by a speculation barrier. - b) No BLR instruction is emitted by compiler. - -gcc/ChangeLog: - - * config/aarch64/aarch64-protos.h (aarch64_indirect_call_asm): - New declaration. - * config/aarch64/aarch64.c (aarch64_regno_regclass): Handle new - stub registers class. - (aarch64_class_max_nregs): Likewise. - (aarch64_register_move_cost): Likewise. - (aarch64_sls_shared_thunks): Global array to store stub labels. - (aarch64_sls_emit_function_stub): New. - (aarch64_create_blr_label): New. - (aarch64_sls_emit_blr_function_thunks): New. - (aarch64_sls_emit_shared_blr_thunks): New. - (aarch64_asm_file_end): New. - (aarch64_indirect_call_asm): New. - (TARGET_ASM_FILE_END): Use aarch64_asm_file_end. - (TARGET_ASM_FUNCTION_EPILOGUE): Use - aarch64_sls_emit_blr_function_thunks. - * config/aarch64/aarch64.h (STB_REGNUM_P): New. - (enum reg_class): Add STUB_REGS class. - (machine_function): Introduce `call_via` array for - function-local stub labels. - * config/aarch64/aarch64.md (*call_insn, *call_value_insn): Use - aarch64_indirect_call_asm to emit code when hardening BLR - instructions. - * config/aarch64/constraints.md (Ucr): New constraint - representing registers for indirect calls. Is GENERAL_REGS - usually, and STUB_REGS when hardening BLR instruction against - SLS. - * config/aarch64/predicates.md (aarch64_general_reg): STUB_REGS class - is also a general register. - -gcc/testsuite/ChangeLog: - - * gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c: New test. - * gcc.target/aarch64/sls-mitigation/sls-miti-blr.c: New test. ---- - gcc/config/aarch64/aarch64-protos.h | 1 + - gcc/config/aarch64/aarch64.c | 225 ++++++++++++++++++++- - gcc/config/aarch64/aarch64.h | 15 ++ - gcc/config/aarch64/aarch64.md | 11 +- - gcc/config/aarch64/constraints.md | 9 + - gcc/config/aarch64/predicates.md | 3 +- - .../aarch64/sls-mitigation/sls-miti-blr-bti.c | 40 ++++ - .../aarch64/sls-mitigation/sls-miti-blr.c | 33 +++ - 8 files changed, 328 insertions(+), 9 deletions(-) - create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c - create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c - -diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h -index ee0ffde..839f801 100644 ---- a/gcc/config/aarch64/aarch64-protos.h -+++ b/gcc/config/aarch64/aarch64-protos.h -@@ -782,6 +782,7 @@ extern const atomic_ool_names aarch64_ool_ldeor_names; - tree aarch64_resolve_overloaded_builtin_general (location_t, tree, void *); - - const char *aarch64_sls_barrier (int); -+const char *aarch64_indirect_call_asm (rtx); - extern bool aarch64_harden_sls_retbr_p (void); - extern bool aarch64_harden_sls_blr_p (void); - -diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c -index 2389d49..0f7bba3 100644 ---- a/gcc/config/aarch64/aarch64.c -+++ b/gcc/config/aarch64/aarch64.c -@@ -10605,6 +10605,9 @@ aarch64_label_mentioned_p (rtx x) - enum reg_class - aarch64_regno_regclass (unsigned regno) - { -+ if (STUB_REGNUM_P (regno)) -+ return STUB_REGS; -+ - if (GP_REGNUM_P (regno)) - return GENERAL_REGS; - -@@ -10939,6 +10942,7 @@ aarch64_class_max_nregs (reg_class_t regclass, machine_mode mode) - unsigned int nregs, vec_flags; - switch (regclass) - { -+ case STUB_REGS: - case TAILCALL_ADDR_REGS: - case POINTER_REGS: - case GENERAL_REGS: -@@ -13155,10 +13159,12 @@ aarch64_register_move_cost (machine_mode mode, - = aarch64_tune_params.regmove_cost; - - /* Caller save and pointer regs are equivalent to GENERAL_REGS. */ -- if (to == TAILCALL_ADDR_REGS || to == POINTER_REGS) -+ if (to == TAILCALL_ADDR_REGS || to == POINTER_REGS -+ || to == STUB_REGS) - to = GENERAL_REGS; - -- if (from == TAILCALL_ADDR_REGS || from == POINTER_REGS) -+ if (from == TAILCALL_ADDR_REGS || from == POINTER_REGS -+ || from == STUB_REGS) - from = GENERAL_REGS; - - /* Make RDFFR very expensive. In particular, if we know that the FFR -@@ -22957,6 +22963,215 @@ aarch64_sls_barrier (int mitigation_required) - : ""; - } - -+static GTY (()) tree aarch64_sls_shared_thunks[30]; -+static GTY (()) bool aarch64_sls_shared_thunks_needed = false; -+const char *indirect_symbol_names[30] = { -+ "__call_indirect_x0", -+ "__call_indirect_x1", -+ "__call_indirect_x2", -+ "__call_indirect_x3", -+ "__call_indirect_x4", -+ "__call_indirect_x5", -+ "__call_indirect_x6", -+ "__call_indirect_x7", -+ "__call_indirect_x8", -+ "__call_indirect_x9", -+ "__call_indirect_x10", -+ "__call_indirect_x11", -+ "__call_indirect_x12", -+ "__call_indirect_x13", -+ "__call_indirect_x14", -+ "__call_indirect_x15", -+ "", /* "__call_indirect_x16", */ -+ "", /* "__call_indirect_x17", */ -+ "__call_indirect_x18", -+ "__call_indirect_x19", -+ "__call_indirect_x20", -+ "__call_indirect_x21", -+ "__call_indirect_x22", -+ "__call_indirect_x23", -+ "__call_indirect_x24", -+ "__call_indirect_x25", -+ "__call_indirect_x26", -+ "__call_indirect_x27", -+ "__call_indirect_x28", -+ "__call_indirect_x29", -+}; -+ -+/* Function to create a BLR thunk. This thunk is used to mitigate straight -+ line speculation. Instead of a simple BLR that can be speculated past, -+ we emit a BL to this thunk, and this thunk contains a BR to the relevant -+ register. These thunks have the relevant speculation barries put after -+ their indirect branch so that speculation is blocked. -+ -+ We use such a thunk so the speculation barriers are kept off the -+ architecturally executed path in order to reduce the performance overhead. -+ -+ When optimizing for size we use stubs shared by the linked object. -+ When optimizing for performance we emit stubs for each function in the hope -+ that the branch predictor can better train on jumps specific for a given -+ function. */ -+rtx -+aarch64_sls_create_blr_label (int regnum) -+{ -+ gcc_assert (STUB_REGNUM_P (regnum)); -+ if (optimize_function_for_size_p (cfun)) -+ { -+ /* For the thunks shared between different functions in this compilation -+ unit we use a named symbol -- this is just for users to more easily -+ understand the generated assembly. */ -+ aarch64_sls_shared_thunks_needed = true; -+ const char *thunk_name = indirect_symbol_names[regnum]; -+ if (aarch64_sls_shared_thunks[regnum] == NULL) -+ { -+ /* Build a decl representing this function stub and record it for -+ later. We build a decl here so we can use the GCC machinery for -+ handling sections automatically (through `get_named_section` and -+ `make_decl_one_only`). That saves us a lot of trouble handling -+ the specifics of different output file formats. */ -+ tree decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL, -+ get_identifier (thunk_name), -+ build_function_type_list (void_type_node, -+ NULL_TREE)); -+ DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL, -+ NULL_TREE, void_type_node); -+ TREE_PUBLIC (decl) = 1; -+ TREE_STATIC (decl) = 1; -+ DECL_IGNORED_P (decl) = 1; -+ DECL_ARTIFICIAL (decl) = 1; -+ make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl)); -+ resolve_unique_section (decl, 0, false); -+ aarch64_sls_shared_thunks[regnum] = decl; -+ } -+ -+ return gen_rtx_SYMBOL_REF (Pmode, thunk_name); -+ } -+ -+ if (cfun->machine->call_via[regnum] == NULL) -+ cfun->machine->call_via[regnum] -+ = gen_rtx_LABEL_REF (Pmode, gen_label_rtx ()); -+ return cfun->machine->call_via[regnum]; -+} -+ -+/* Helper function for aarch64_sls_emit_blr_function_thunks and -+ aarch64_sls_emit_shared_blr_thunks below. */ -+static void -+aarch64_sls_emit_function_stub (FILE *out_file, int regnum) -+{ -+ /* Save in x16 and branch to that function so this transformation does -+ not prevent jumping to `BTI c` instructions. */ -+ asm_fprintf (out_file, "\tmov\tx16, x%d\n", regnum); -+ asm_fprintf (out_file, "\tbr\tx16\n"); -+} -+ -+/* Emit all BLR stubs for this particular function. -+ Here we emit all the BLR stubs needed for the current function. Since we -+ emit these stubs in a consecutive block we know there will be no speculation -+ gadgets between each stub, and hence we only emit a speculation barrier at -+ the end of the stub sequences. -+ -+ This is called in the TARGET_ASM_FUNCTION_EPILOGUE hook. */ -+void -+aarch64_sls_emit_blr_function_thunks (FILE *out_file) -+{ -+ if (! aarch64_harden_sls_blr_p ()) -+ return; -+ -+ bool any_functions_emitted = false; -+ /* We must save and restore the current function section since this assembly -+ is emitted at the end of the function. This means it can be emitted *just -+ after* the cold section of a function. That cold part would be emitted in -+ a different section. That switch would trigger a `.cfi_endproc` directive -+ to be emitted in the original section and a `.cfi_startproc` directive to -+ be emitted in the new section. Switching to the original section without -+ restoring would mean that the `.cfi_endproc` emitted as a function ends -+ would happen in a different section -- leaving an unmatched -+ `.cfi_startproc` in the cold text section and an unmatched `.cfi_endproc` -+ in the standard text section. */ -+ section *save_text_section = in_section; -+ switch_to_section (function_section (current_function_decl)); -+ for (int regnum = 0; regnum < 30; ++regnum) -+ { -+ rtx specu_label = cfun->machine->call_via[regnum]; -+ if (specu_label == NULL) -+ continue; -+ -+ targetm.asm_out.print_operand (out_file, specu_label, 0); -+ asm_fprintf (out_file, ":\n"); -+ aarch64_sls_emit_function_stub (out_file, regnum); -+ any_functions_emitted = true; -+ } -+ if (any_functions_emitted) -+ /* Can use the SB if needs be here, since this stub will only be used -+ by the current function, and hence for the current target. */ -+ asm_fprintf (out_file, "\t%s\n", aarch64_sls_barrier (true)); -+ switch_to_section (save_text_section); -+} -+ -+/* Emit shared BLR stubs for the current compilation unit. -+ Over the course of compiling this unit we may have converted some BLR -+ instructions to a BL to a shared stub function. This is where we emit those -+ stub functions. -+ This function is for the stubs shared between different functions in this -+ compilation unit. We share when optimizing for size instead of speed. -+ -+ This function is called through the TARGET_ASM_FILE_END hook. */ -+void -+aarch64_sls_emit_shared_blr_thunks (FILE *out_file) -+{ -+ if (! aarch64_sls_shared_thunks_needed) -+ return; -+ -+ for (int regnum = 0; regnum < 30; ++regnum) -+ { -+ tree decl = aarch64_sls_shared_thunks[regnum]; -+ if (!decl) -+ continue; -+ -+ const char *name = indirect_symbol_names[regnum]; -+ switch_to_section (get_named_section (decl, NULL, 0)); -+ ASM_OUTPUT_ALIGN (out_file, 2); -+ targetm.asm_out.globalize_label (out_file, name); -+ /* Only emits if the compiler is configured for an assembler that can -+ handle visibility directives. */ -+ targetm.asm_out.assemble_visibility (decl, VISIBILITY_HIDDEN); -+ ASM_OUTPUT_TYPE_DIRECTIVE (out_file, name, "function"); -+ ASM_OUTPUT_LABEL (out_file, name); -+ aarch64_sls_emit_function_stub (out_file, regnum); -+ /* Use the most conservative target to ensure it can always be used by any -+ function in the translation unit. */ -+ asm_fprintf (out_file, "\tdsb\tsy\n\tisb\n"); -+ ASM_DECLARE_FUNCTION_SIZE (out_file, name, decl); -+ } -+} -+ -+/* Implement TARGET_ASM_FILE_END. */ -+void -+aarch64_asm_file_end () -+{ -+ aarch64_sls_emit_shared_blr_thunks (asm_out_file); -+ /* Since this function will be called for the ASM_FILE_END hook, we ensure -+ that what would be called otherwise (e.g. `file_end_indicate_exec_stack` -+ for FreeBSD) still gets called. */ -+#ifdef TARGET_ASM_FILE_END -+ TARGET_ASM_FILE_END (); -+#endif -+} -+ -+const char * -+aarch64_indirect_call_asm (rtx addr) -+{ -+ gcc_assert (REG_P (addr)); -+ if (aarch64_harden_sls_blr_p ()) -+ { -+ rtx stub_label = aarch64_sls_create_blr_label (REGNO (addr)); -+ output_asm_insn ("bl\t%0", &stub_label); -+ } -+ else -+ output_asm_insn ("blr\t%0", &addr); -+ return ""; -+} -+ - /* Target-specific selftests. */ - - #if CHECKING_P -@@ -23507,6 +23722,12 @@ aarch64_libgcc_floating_mode_supported_p - #undef TARGET_MD_ASM_ADJUST - #define TARGET_MD_ASM_ADJUST arm_md_asm_adjust - -+#undef TARGET_ASM_FILE_END -+#define TARGET_ASM_FILE_END aarch64_asm_file_end -+ -+#undef TARGET_ASM_FUNCTION_EPILOGUE -+#define TARGET_ASM_FUNCTION_EPILOGUE aarch64_sls_emit_blr_function_thunks -+ - struct gcc_target targetm = TARGET_INITIALIZER; - - #include "gt-aarch64.h" -diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h -index 8e0fc37..7331450 100644 ---- a/gcc/config/aarch64/aarch64.h -+++ b/gcc/config/aarch64/aarch64.h -@@ -643,6 +643,16 @@ extern unsigned aarch64_architecture_version; - #define GP_REGNUM_P(REGNO) \ - (((unsigned) (REGNO - R0_REGNUM)) <= (R30_REGNUM - R0_REGNUM)) - -+/* Registers known to be preserved over a BL instruction. This consists of the -+ GENERAL_REGS without x16, x17, and x30. The x30 register is changed by the -+ BL instruction itself, while the x16 and x17 registers may be used by -+ veneers which can be inserted by the linker. */ -+#define STUB_REGNUM_P(REGNO) \ -+ (GP_REGNUM_P (REGNO) \ -+ && (REGNO) != R16_REGNUM \ -+ && (REGNO) != R17_REGNUM \ -+ && (REGNO) != R30_REGNUM) \ -+ - #define FP_REGNUM_P(REGNO) \ - (((unsigned) (REGNO - V0_REGNUM)) <= (V31_REGNUM - V0_REGNUM)) - -@@ -667,6 +677,7 @@ enum reg_class - { - NO_REGS, - TAILCALL_ADDR_REGS, -+ STUB_REGS, - GENERAL_REGS, - STACK_REG, - POINTER_REGS, -@@ -689,6 +700,7 @@ enum reg_class - { \ - "NO_REGS", \ - "TAILCALL_ADDR_REGS", \ -+ "STUB_REGS", \ - "GENERAL_REGS", \ - "STACK_REG", \ - "POINTER_REGS", \ -@@ -708,6 +720,7 @@ enum reg_class - { \ - { 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */ \ - { 0x00030000, 0x00000000, 0x00000000 }, /* TAILCALL_ADDR_REGS */\ -+ { 0x3ffcffff, 0x00000000, 0x00000000 }, /* STUB_REGS */ \ - { 0x7fffffff, 0x00000000, 0x00000003 }, /* GENERAL_REGS */ \ - { 0x80000000, 0x00000000, 0x00000000 }, /* STACK_REG */ \ - { 0xffffffff, 0x00000000, 0x00000003 }, /* POINTER_REGS */ \ -@@ -862,6 +875,8 @@ typedef struct GTY (()) machine_function - struct aarch64_frame frame; - /* One entry for each hard register. */ - bool reg_is_wrapped_separately[LAST_SAVED_REGNUM]; -+ /* One entry for each general purpose register. */ -+ rtx call_via[SP_REGNUM]; - bool label_is_assembled; - } machine_function; - #endif -diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md -index dda04ee..43da754 100644 ---- a/gcc/config/aarch64/aarch64.md -+++ b/gcc/config/aarch64/aarch64.md -@@ -1022,16 +1022,15 @@ - ) - - (define_insn "*call_insn" -- [(call (mem:DI (match_operand:DI 0 "aarch64_call_insn_operand" "r, Usf")) -+ [(call (mem:DI (match_operand:DI 0 "aarch64_call_insn_operand" "Ucr, Usf")) - (match_operand 1 "" "")) - (unspec:DI [(match_operand:DI 2 "const_int_operand")] UNSPEC_CALLEE_ABI) - (clobber (reg:DI LR_REGNUM))] - "" - "@ -- blr\\t%0 -+ * return aarch64_indirect_call_asm (operands[0]); - bl\\t%c0" -- [(set_attr "type" "call, call")] --) -+ [(set_attr "type" "call, call")]) - - (define_expand "call_value" - [(parallel -@@ -1050,13 +1049,13 @@ - - (define_insn "*call_value_insn" - [(set (match_operand 0 "" "") -- (call (mem:DI (match_operand:DI 1 "aarch64_call_insn_operand" "r, Usf")) -+ (call (mem:DI (match_operand:DI 1 "aarch64_call_insn_operand" "Ucr, Usf")) - (match_operand 2 "" ""))) - (unspec:DI [(match_operand:DI 3 "const_int_operand")] UNSPEC_CALLEE_ABI) - (clobber (reg:DI LR_REGNUM))] - "" - "@ -- blr\\t%1 -+ * return aarch64_indirect_call_asm (operands[1]); - bl\\t%c1" - [(set_attr "type" "call, call")] - ) -diff --git a/gcc/config/aarch64/constraints.md b/gcc/config/aarch64/constraints.md -index d993268..8cc6f50 100644 ---- a/gcc/config/aarch64/constraints.md -+++ b/gcc/config/aarch64/constraints.md -@@ -24,6 +24,15 @@ - (define_register_constraint "Ucs" "TAILCALL_ADDR_REGS" - "@internal Registers suitable for an indirect tail call") - -+(define_register_constraint "Ucr" -+ "aarch64_harden_sls_blr_p () ? STUB_REGS : GENERAL_REGS" -+ "@internal Registers to be used for an indirect call. -+ This is usually the general registers, but when we are hardening against -+ Straight Line Speculation we disallow x16, x17, and x30 so we can use -+ indirection stubs. These indirection stubs cannot use the above registers -+ since they will be reached by a BL that may have to go through a linker -+ veneer.") -+ - (define_register_constraint "w" "FP_REGS" - "Floating point and SIMD vector registers.") - -diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md -index 215fcec..1754b1e 100644 ---- a/gcc/config/aarch64/predicates.md -+++ b/gcc/config/aarch64/predicates.md -@@ -32,7 +32,8 @@ - - (define_predicate "aarch64_general_reg" - (and (match_operand 0 "register_operand") -- (match_test "REGNO_REG_CLASS (REGNO (op)) == GENERAL_REGS"))) -+ (match_test "REGNO_REG_CLASS (REGNO (op)) == STUB_REGS -+ || REGNO_REG_CLASS (REGNO (op)) == GENERAL_REGS"))) - - ;; Return true if OP a (const_int 0) operand. - (define_predicate "const0_operand" -diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c -new file mode 100644 -index 0000000..b1fb754 ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c -@@ -0,0 +1,40 @@ -+/* { dg-do compile } */ -+/* { dg-additional-options "-mharden-sls=blr -mbranch-protection=bti" } */ -+/* -+ Ensure that the SLS hardening of BLR leaves no BLR instructions. -+ Here we also check that there are no BR instructions with anything except an -+ x16 or x17 register. This is because a `BTI c` instruction can be branched -+ to using a BLR instruction using any register, but can only be branched to -+ with a BR using an x16 or x17 register. -+ */ -+typedef int (foo) (int, int); -+typedef void (bar) (int, int); -+struct sls_testclass { -+ foo *x; -+ bar *y; -+ int left; -+ int right; -+}; -+ -+/* We test both RTL patterns for a call which returns a value and a call which -+ does not. */ -+int blr_call_value (struct sls_testclass x) -+{ -+ int retval = x.x(x.left, x.right); -+ if (retval % 10) -+ return 100; -+ return 9; -+} -+ -+int blr_call (struct sls_testclass x) -+{ -+ x.y(x.left, x.right); -+ if (x.left % 10) -+ return 100; -+ return 9; -+} -+ -+/* { dg-final { scan-assembler-not {\tblr\t} } } */ -+/* { dg-final { scan-assembler-not {\tbr\tx(?!16|17)} } } */ -+/* { dg-final { scan-assembler {\tbr\tx(16|17)} } } */ -+ -diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c -new file mode 100644 -index 0000000..88bafff ---- /dev/null -+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c -@@ -0,0 +1,33 @@ -+/* { dg-additional-options "-mharden-sls=blr -save-temps" } */ -+/* Ensure that the SLS hardening of BLR leaves no BLR instructions. -+ We only test that all BLR instructions have been removed, not that the -+ resulting code makes sense. */ -+typedef int (foo) (int, int); -+typedef void (bar) (int, int); -+struct sls_testclass { -+ foo *x; -+ bar *y; -+ int left; -+ int right; -+}; -+ -+/* We test both RTL patterns for a call which returns a value and a call which -+ does not. */ -+int blr_call_value (struct sls_testclass x) -+{ -+ int retval = x.x(x.left, x.right); -+ if (retval % 10) -+ return 100; -+ return 9; -+} -+ -+int blr_call (struct sls_testclass x) -+{ -+ x.y(x.left, x.right); -+ if (x.left % 10) -+ return 100; -+ return 9; -+} -+ -+/* { dg-final { scan-assembler-not {\tblr\t} } } */ -+/* { dg-final { scan-assembler {\tbr\tx[0-9][0-9]?} } } */ --- -2.7.4 - diff --git a/poky/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/poky/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch index 27237feb5..7a6765455 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch @@ -1,4 +1,4 @@ -From 6e3395c0bc933bdc3242d1dead4896d0aa4e11a8 Mon Sep 17 00:00:00 2001 +From 274a27da6fe355c4c49953b3b69c8949d2412c62 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:08:31 +0400 Subject: [PATCH] gcc-4.3.3: SYSROOT_CFLAGS_FOR_TARGET @@ -26,10 +26,10 @@ Upstream-Status: Pending 1 file changed, 32 insertions(+) diff --git a/configure b/configure -index 226a64939d1..b31dc137fc9 100755 +index bcebad264ec..86e4ee7c383 100755 --- a/configure +++ b/configure -@@ -6971,6 +6971,38 @@ fi +@@ -8977,6 +8977,38 @@ fi diff --git a/poky/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch b/poky/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch index 7c751bef6..8184e6874 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch @@ -1,4 +1,4 @@ -From 85a7c5aeb82ed61e6ef6d8e061b9da9e6a4a652c Mon Sep 17 00:00:00 2001 +From 2fa5c93641b75a662839c1b6eee172b6c481c70e Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:10:06 +0400 Subject: [PATCH] 64-bit multilib hack. @@ -19,7 +19,7 @@ and be able to patch these entries with a complete set of correct paths but this don't have such code at this point. This is something the target gcc recipe should do and override these platform defaults in its build config. -Do same for riscv64 and aarch64 +Do same for riscv64, aarch64 & arc RP 15/8/11 @@ -30,14 +30,15 @@ Signed-off-by: Elvis Dowson <elvis.dowson@gmail.com> Signed-off-by: Mark Hatle <mark.hatle@windriver.com> --- gcc/config/aarch64/t-aarch64-linux | 8 ++++---- + gcc/config/arc/t-multilib-linux | 4 ++-- gcc/config/i386/t-linux64 | 6 ++---- gcc/config/mips/t-linux64 | 10 +++------- gcc/config/riscv/t-linux | 6 ++++-- gcc/config/rs6000/t-linux64 | 5 ++--- - 5 files changed, 15 insertions(+), 20 deletions(-) + 6 files changed, 17 insertions(+), 22 deletions(-) diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux -index 83e59e33b85..b1356be1fb4 100644 +index 241b0ef20b6..a7dadb2d64f 100644 --- a/gcc/config/aarch64/t-aarch64-linux +++ b/gcc/config/aarch64/t-aarch64-linux @@ -21,8 +21,8 @@ @@ -53,8 +54,24 @@ index 83e59e33b85..b1356be1fb4 100644 -MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32) +#MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32) +diff --git a/gcc/config/arc/t-multilib-linux b/gcc/config/arc/t-multilib-linux +index fc3fff640a2..d58e28f6df8 100644 +--- a/gcc/config/arc/t-multilib-linux ++++ b/gcc/config/arc/t-multilib-linux +@@ -16,9 +16,9 @@ + # along with GCC; see the file COPYING3. If not see + # <http://www.gnu.org/licenses/>. + +-MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400 ++#MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400 + +-MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400 ++#MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400 + + # Aliases: + MULTILIB_MATCHES += mcpu?arc700=mA7 diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64 -index 1171e218578..5e057b7e5db 100644 +index d288b093522..7b5980a9d21 100644 --- a/gcc/config/i386/t-linux64 +++ b/gcc/config/i386/t-linux64 @@ -32,7 +32,5 @@ @@ -68,7 +85,7 @@ index 1171e218578..5e057b7e5db 100644 +MULTILIB_DIRNAMES = . . +MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir)) diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64 -index ceb58d3b5f3..43fe2bf28ab 100644 +index 130e1f04707..3b7eb6b2a2f 100644 --- a/gcc/config/mips/t-linux64 +++ b/gcc/config/mips/t-linux64 @@ -17,10 +17,6 @@ @@ -98,7 +115,7 @@ index 216d2776a18..e4d817621fc 100644 +#MULTILIB_OSDIRNAMES := $(patsubst lib%,../lib%,$(MULTILIB_DIRNAMES)) +MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir)) diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64 -index 264a7e27524..dc9d440f66b 100644 +index e11a118cb5f..4eaffb416fe 100644 --- a/gcc/config/rs6000/t-linux64 +++ b/gcc/config/rs6000/t-linux64 @@ -26,10 +26,9 @@ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch b/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch index 4020c9e3c..c921ac334 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch @@ -1,4 +1,4 @@ -From 6ddfb0bfcd1eea71acd37ab06f7a4510b9f1d12b Mon Sep 17 00:00:00 2001 +From 57e2c5e35732988c0b287289eb0997b4e9769371 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:12:56 +0400 Subject: [PATCH] optional libstdc @@ -25,10 +25,10 @@ Upstream-Status: Inappropriate [embedded specific] 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt -index c49da99d395..35f712e2c84 100644 +index 64e46e7573e..1824380f27a 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt -@@ -2025,6 +2025,10 @@ nostdinc++ +@@ -2166,6 +2166,10 @@ nostdinc++ C++ ObjC++ Do not search standard system include directories for C++. @@ -40,10 +40,10 @@ index c49da99d395..35f712e2c84 100644 C ObjC C++ ObjC++ Joined Separate ; Documented in common.opt diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c -index 0ab63bcd211..7b081e9e4f0 100644 +index 3c9bd1490b4..818beb61cee 100644 --- a/gcc/cp/g++spec.c +++ b/gcc/cp/g++spec.c -@@ -137,6 +137,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, +@@ -159,6 +159,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, switch (decoded_options[i].opt_index) { case OPT_nostdlib: @@ -52,10 +52,10 @@ index 0ab63bcd211..7b081e9e4f0 100644 library = -1; break; diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi -index f12d8d12150..cf6cb428e7d 100644 +index 6659a903bf0..9ee63dbe52f 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi -@@ -230,6 +230,9 @@ in the following sections. +@@ -239,6 +239,9 @@ in the following sections. -fno-weak -nostdinc++ @gol -fvisibility-inlines-hidden @gol -fvisibility-ms-compat @gol @@ -63,9 +63,9 @@ index f12d8d12150..cf6cb428e7d 100644 +-fvtv-counts -fvtv-debug @gol +-nostdlib++ @gol -fext-numeric-literals @gol - -Wabi-tag -Wcatch-value -Wcatch-value=@var{n} @gol - -Wno-class-conversion -Wclass-memaccess @gol -@@ -599,7 +602,7 @@ Objective-C and Objective-C++ Dialects}. + -flang-info-include-translate@r{[}=@var{header}@r{]} @gol + -flang-info-include-translate-not @gol +@@ -632,7 +635,7 @@ Objective-C and Objective-C++ Dialects}. -pie -pthread -r -rdynamic @gol -s -static -static-pie -static-libgcc -static-libstdc++ @gol -static-libasan -static-libtsan -static-liblsan -static-libubsan @gol @@ -74,7 +74,7 @@ index f12d8d12150..cf6cb428e7d 100644 -T @var{script} -Wl,@var{option} -Xlinker @var{option} @gol -u @var{symbol} -z @var{keyword}} -@@ -14407,6 +14410,33 @@ Specify that the program entry point is @var{entry}. The argument is +@@ -15708,6 +15711,33 @@ Specify that the program entry point is @var{entry}. The argument is interpreted by the linker; the GNU linker accepts either a symbol name or an address. @@ -109,10 +109,10 @@ index f12d8d12150..cf6cb428e7d 100644 @opindex pie Produce a dynamically linked position independent executable on targets diff --git a/gcc/gcc.c b/gcc/gcc.c -index b2200c5185a..f8be58ce0a6 100644 +index 19c75b6e20d..be7630ffd8c 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c -@@ -1051,6 +1051,7 @@ proper position among the other output files. */ +@@ -1162,6 +1162,7 @@ proper position among the other output files. */ %(mflib) " STACK_SPLIT_SPEC "\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \ %{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch b/poky/meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch index 9fbbe8070..265ca0e21 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch @@ -1,4 +1,4 @@ -From a6c90d3a9c5010b4aa7cc30467cf81ca7e0f430e Mon Sep 17 00:00:00 2001 +From 127716a32a11ca2a6b3aac068054bfc69c4dcfd8 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:16:28 +0400 Subject: [PATCH] COLLECT_GCC_OPTIONS @@ -14,10 +14,10 @@ Upstream-Status: Pending 1 file changed, 9 insertions(+) diff --git a/gcc/gcc.c b/gcc/gcc.c -index f8be58ce0a6..48b0f9dde81 100644 +index be7630ffd8c..1bc45285384 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c -@@ -4806,6 +4806,15 @@ set_collect_gcc_options (void) +@@ -5383,6 +5383,15 @@ set_collect_gcc_options (void) sizeof ("COLLECT_GCC_OPTIONS=") - 1); first_time = TRUE; diff --git a/poky/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch b/poky/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch index a764bdd0f..9844c2ae8 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch @@ -1,4 +1,4 @@ -From 5670d4489f119d2da661734895ac0be99b606d1b Mon Sep 17 00:00:00 2001 +From e64342df647829d3e1c52fd480a5be7c1281ced0 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:17:25 +0400 Subject: [PATCH] Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B} @@ -26,10 +26,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gcc/Makefile.in b/gcc/Makefile.in -index 543b477ff18..a67d2cc18d6 100644 +index 8a5fb3fd99c..7da6f439fff 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in -@@ -540,7 +540,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@ +@@ -552,7 +552,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@ TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@ xmake_file=@xmake_file@ @@ -39,10 +39,10 @@ index 543b477ff18..a67d2cc18d6 100644 TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@ TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@ diff --git a/gcc/configure b/gcc/configure -index 8de766a942c..b26e8fc7fee 100755 +index 3f0734bff11..c5d3bc4ee2d 100755 --- a/gcc/configure +++ b/gcc/configure -@@ -12705,8 +12705,8 @@ for f in $tm_file; do +@@ -13090,8 +13090,8 @@ for f in $tm_file; do tm_include_list="${tm_include_list} $f" ;; defaults.h ) @@ -54,10 +54,10 @@ index 8de766a942c..b26e8fc7fee 100755 * ) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" diff --git a/gcc/configure.ac b/gcc/configure.ac -index 8bfd6feb780..26fa46802c7 100644 +index 54e21764b3e..f83420326d6 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac -@@ -2138,8 +2138,8 @@ for f in $tm_file; do +@@ -2263,8 +2263,8 @@ for f in $tm_file; do tm_include_list="${tm_include_list} $f" ;; defaults.h ) @@ -69,7 +69,7 @@ index 8bfd6feb780..26fa46802c7 100644 * ) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh -index d2c677a4a42..d03852481cb 100644 +index c49acd8f7e4..a0a657bdbb9 100644 --- a/gcc/mkconfig.sh +++ b/gcc/mkconfig.sh @@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then diff --git a/poky/meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch b/poky/meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch index 714db3bef..47f611e37 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch @@ -1,4 +1,4 @@ -From f05062625e7a4751be723595a2f7a4b7fbeff311 Mon Sep 17 00:00:00 2001 +From 904d102e3ccb93296b16ceb2e283a6ccf3c1d718 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:20:01 +0400 Subject: [PATCH] fortran cross-compile hack. @@ -16,10 +16,10 @@ Upstream-Status: Inappropriate [embedded specific] 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libgfortran/configure b/libgfortran/configure -index b4cf854ddb3..e8e0ac3b1cf 100755 +index f3634389cf8..f974e874b8e 100755 --- a/libgfortran/configure +++ b/libgfortran/configure -@@ -13090,7 +13090,7 @@ esac +@@ -13102,7 +13102,7 @@ esac # We need gfortran to compile parts of the library #AC_PROG_FC(gfortran) @@ -29,10 +29,10 @@ index b4cf854ddb3..e8e0ac3b1cf 100755 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac -index 711dc60ff78..3c9bbfbf47d 100644 +index 8961e314d82..49c8221cb6b 100644 --- a/libgfortran/configure.ac +++ b/libgfortran/configure.ac -@@ -258,7 +258,7 @@ AC_SUBST(enable_static) +@@ -271,7 +271,7 @@ AC_SUBST(enable_static) # We need gfortran to compile parts of the library #AC_PROG_FC(gfortran) diff --git a/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch b/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch index 8ad6853d8..c720defa3 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch @@ -1,4 +1,4 @@ -From 1d76de7f1f5c99f1fa1a4b14aedad3d702e4e136 Mon Sep 17 00:00:00 2001 +From 33a7a55d39c040ba09af2d69f7fa9cf8e6f84c91 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:22:00 +0400 Subject: [PATCH] cpp: honor sysroot. @@ -26,21 +26,23 @@ Upstream-Status: Pending 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h -index 0ad4a33b93e..16c744f4f90 100644 +index 8902ae1d2ed..e99e2fcd6ad 100644 --- a/gcc/cp/lang-specs.h +++ b/gcc/cp/lang-specs.h -@@ -66,5 +66,5 @@ along with GCC; see the file COPYING3. If not see +@@ -116,7 +116,7 @@ along with GCC; see the file COPYING3. If not see {".ii", "@c++-cpp-output", 0, 0, 0}, {"@c++-cpp-output", "%{!E:%{!M:%{!MM:" - " cc1plus -fpreprocessed %i %(cc1_options) %2" + " cc1plus -fpreprocessed %i %I %(cc1_options) %2" - " %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + " %{!fsyntax-only:" + " %{fmodule-only:%{!S:-o %g.s%V}}" + " %{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}" diff --git a/gcc/gcc.c b/gcc/gcc.c -index 48b0f9dde81..c87f603955f 100644 +index 1bc45285384..8737bae5353 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c -@@ -1348,7 +1348,7 @@ static const struct compiler default_compilers[] = +@@ -1470,7 +1470,7 @@ static const struct compiler default_compilers[] = %W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0}, {".i", "@cpp-output", 0, 0, 0}, {"@cpp-output", diff --git a/poky/meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch b/poky/meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch index 625e2d870..f385f8c5a 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch @@ -1,4 +1,4 @@ -From 4fad4433c96bc9d0d9d124f9674fb3389f6f426e Mon Sep 17 00:00:00 2001 +From a2dc2fa4cc7e5d54544d4a7b6601eef79bc26cad Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:23:08 +0400 Subject: [PATCH] MIPS64: Default to N64 ABI @@ -14,10 +14,10 @@ Upstream-Status: Inappropriate [OE config specific] 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gcc/config.gcc b/gcc/config.gcc -index cf1a87e2efd..37c4221a39f 100644 +index 3ec7582f5dd..a046fa6945c 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc -@@ -2511,29 +2511,29 @@ mips*-*-linux*) # Linux MIPS, either endian. +@@ -2543,29 +2543,29 @@ mips*-*-linux*) # Linux MIPS, either endian. default_mips_arch=mips32 ;; mips64el-st-linux-gnu) diff --git a/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch index e35797633..4726267a8 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch @@ -1,4 +1,4 @@ -From 8fc016a53c22c19feccbfa13ebdf19090dc67058 Mon Sep 17 00:00:00 2001 +From 8e9d6efecdc8c42f47e3a012dee764b13c3dad59 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:24:50 +0400 Subject: [PATCH] Define GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER @@ -31,7 +31,7 @@ Upstream-Status: Inappropriate [OE configuration] 12 files changed, 29 insertions(+), 34 deletions(-) diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h -index e25fcac3c59..01aca0c6542 100644 +index c1dae8ca2cf..3ce2b76c1a4 100644 --- a/gcc/config/alpha/linux-elf.h +++ b/gcc/config/alpha/linux-elf.h @@ -23,8 +23,8 @@ along with GCC; see the file COPYING3. If not see @@ -46,7 +46,7 @@ index e25fcac3c59..01aca0c6542 100644 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" #elif DEFAULT_LIBC == LIBC_GLIBC diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h -index 5bdcfa0c5d3..0c0332f317f 100644 +index 85d0136e76e..6bd95855827 100644 --- a/gcc/config/arm/linux-eabi.h +++ b/gcc/config/arm/linux-eabi.h @@ -65,8 +65,8 @@ @@ -61,7 +61,7 @@ index 5bdcfa0c5d3..0c0332f317f 100644 #define GLIBC_DYNAMIC_LINKER \ diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h -index 0ec3aa53189..abfa9566d74 100644 +index 0c1c4e70b6b..6bd643ade11 100644 --- a/gcc/config/arm/linux-elf.h +++ b/gcc/config/arm/linux-elf.h @@ -60,7 +60,7 @@ @@ -74,7 +74,7 @@ index 0ec3aa53189..abfa9566d74 100644 #define LINUX_TARGET_LINK_SPEC "%{h*} \ %{static:-Bstatic} \ diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h -index 9f823f125ed..e0390b7d5e3 100644 +index 04b274f1654..7aafcf3ac2d 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -20,7 +20,7 @@ along with GCC; see the file COPYING3. If not see @@ -87,7 +87,7 @@ index 9f823f125ed..e0390b7d5e3 100644 #undef MUSL_DYNAMIC_LINKER #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1" diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h -index 6cb68d1ccfa..7de09ec857c 100644 +index b3822ced528..92d303e80d6 100644 --- a/gcc/config/i386/linux64.h +++ b/gcc/config/i386/linux64.h @@ -27,9 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see @@ -104,7 +104,7 @@ index 6cb68d1ccfa..7de09ec857c 100644 #undef MUSL_DYNAMIC_LINKER32 #define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1" diff --git a/gcc/config/linux.h b/gcc/config/linux.h -index 95654bcdb5a..0c1a8118a26 100644 +index 4e1db60fced..87efc5f69fe 100644 --- a/gcc/config/linux.h +++ b/gcc/config/linux.h @@ -94,10 +94,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see @@ -123,7 +123,7 @@ index 95654bcdb5a..0c1a8118a26 100644 #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker" #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64" diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h -index 54446e58e5f..4786ee304c1 100644 +index 44a85e410d9..8d41b5574f6 100644 --- a/gcc/config/mips/linux.h +++ b/gcc/config/mips/linux.h @@ -22,20 +22,20 @@ along with GCC; see the file COPYING3. If not see @@ -154,7 +154,7 @@ index 54446e58e5f..4786ee304c1 100644 #undef MUSL_DYNAMIC_LINKER32 #define MUSL_DYNAMIC_LINKER32 \ diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h -index 4afef7c228c..01997330741 100644 +index 9238de5bc92..7136a83260a 100644 --- a/gcc/config/riscv/linux.h +++ b/gcc/config/riscv/linux.h @@ -22,7 +22,7 @@ along with GCC; see the file COPYING3. If not see @@ -167,10 +167,10 @@ index 4afef7c228c..01997330741 100644 #define MUSL_ABI_SUFFIX \ "%{mabi=ilp32:-sf}" \ diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h -index 34776c8421e..967c1c43c63 100644 +index e3f2cd254f6..a11e01faa3d 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h -@@ -419,24 +419,19 @@ extern int dot_symbols; +@@ -336,24 +336,19 @@ extern int dot_symbols; #undef LINK_OS_DEFAULT_SPEC #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" @@ -201,7 +201,7 @@ index 34776c8421e..967c1c43c63 100644 #undef DEFAULT_ASM_ENDIAN #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN) diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h -index c1d0441d488..81373eb8336 100644 +index 7558d2f7195..3aaa6c3a078 100644 --- a/gcc/config/sh/linux.h +++ b/gcc/config/sh/linux.h @@ -64,7 +64,7 @@ along with GCC; see the file COPYING3. If not see @@ -214,10 +214,10 @@ index c1d0441d488..81373eb8336 100644 #undef SUBTARGET_LINK_EMUL_SUFFIX #define SUBTARGET_LINK_EMUL_SUFFIX "%{mfdpic:_fd;:_linux}" diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h -index 81201e67a2f..8b6fc577594 100644 +index 2550d7ee8f0..a94f4cd8ba2 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h -@@ -84,7 +84,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); +@@ -78,7 +78,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); When the -shared link option is used a final link is not being done. */ @@ -227,10 +227,10 @@ index 81201e67a2f..8b6fc577594 100644 #undef LINK_SPEC #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h -index a1a0efd8f28..85d1084afc2 100644 +index 95af8afa9b5..63127afb074 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h -@@ -84,8 +84,8 @@ along with GCC; see the file COPYING3. If not see +@@ -78,8 +78,8 @@ along with GCC; see the file COPYING3. If not see When the -shared link option is used a final link is not being done. */ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch b/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch index 88e1715b5..814ce18b9 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch @@ -1,4 +1,4 @@ -From a22d1264049d29b90663cf5667049ae6f9b7a5ce Mon Sep 17 00:00:00 2001 +From 12646c0899dec1b127ce71ebacf2571c1c7360f4 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:26:37 +0400 Subject: [PATCH] gcc: Fix argument list too long error. @@ -22,17 +22,18 @@ fix. Add the sort to the original gcc code, leaving the tr+sort to fix the origi issue but include the new files too as reported by Zhuang <qiuguang.zqg@alibaba-inc.com> Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> --- gcc/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/Makefile.in b/gcc/Makefile.in -index a67d2cc18d6..480c9366418 100644 +index 7da6f439fff..59c45c81393 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in -@@ -3606,7 +3606,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype - # We keep the directory structure for files in config or c-family and .def - # files. All other files are flattened to a single directory. +@@ -3678,7 +3678,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype + # We keep the directory structure for files in config, common/config or + # c-family and .def files. All other files are flattened to a single directory. $(mkinstalldirs) $(DESTDIR)$(plugin_includedir) - headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \ + headers=`echo $(sort $(PLUGIN_HEADERS)) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch b/poky/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch index 207cdb57a..1e657666d 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch @@ -1,4 +1,4 @@ -From fa47586935a18ecfc2ad5586802e326e21741b7b Mon Sep 17 00:00:00 2001 +From 7928a4eddc4a6d821a6aa6eaaea1fd60d54e3da9 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:28:10 +0400 Subject: [PATCH] Disable sdt. @@ -25,10 +25,10 @@ Upstream-Status: Inappropriate [hack] 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/gcc/configure b/gcc/configure -index b26e8fc7fee..6080f86145e 100755 +index c5d3bc4ee2d..5160917d73e 100755 --- a/gcc/configure +++ b/gcc/configure -@@ -29789,12 +29789,12 @@ fi +@@ -30812,12 +30812,12 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5 $as_echo_n "checking sys/sdt.h in the target C library... " >&6; } have_sys_sdt_h=no @@ -48,10 +48,10 @@ index b26e8fc7fee..6080f86145e 100755 $as_echo "$have_sys_sdt_h" >&6; } diff --git a/gcc/configure.ac b/gcc/configure.ac -index 26fa46802c7..42be5252778 100644 +index f83420326d6..50f78308e8a 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac -@@ -6190,15 +6190,15 @@ fi +@@ -6653,15 +6653,15 @@ fi AC_SUBST([enable_default_ssp]) # Test for <sys/sdt.h> on the target. @@ -77,10 +77,10 @@ index 26fa46802c7..42be5252778 100644 # Check if TFmode long double should be used by default or not. # Some glibc targets used DFmode long double, but with glibc 2.4 diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure -index 9f9c5a2419a..71ed13b815b 100755 +index a310e9feb6c..c879445b8a6 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure -@@ -22615,11 +22615,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -22014,11 +22014,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -96,10 +96,10 @@ index 9f9c5a2419a..71ed13b815b 100755 $as_echo "$glibcxx_cv_sys_sdt_h" >&6; } diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac -index 699e55fd829..5c7a7bda439 100644 +index 3c799be82b1..3f63a8ec9ce 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac -@@ -241,7 +241,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN +@@ -240,7 +240,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN GLIBCXX_CHECK_SC_NPROC_ONLN GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP GLIBCXX_CHECK_SYSCTL_HW_NCPU diff --git a/poky/meta/recipes-devtools/gcc/gcc/0014-libtool.patch b/poky/meta/recipes-devtools/gcc/gcc/0014-libtool.patch index f4e70c3b1..f2b8924eb 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0014-libtool.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0014-libtool.patch @@ -1,4 +1,4 @@ -From 6ecd478881468934444ff85611fd43f7033b1e81 Mon Sep 17 00:00:00 2001 +From a5b984db9669cf38a7bd76c3fcdb41c086f740db Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:29:11 +0400 Subject: [PATCH] libtool diff --git a/poky/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch b/poky/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch index bc2674abc..1ccf39ceb 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch @@ -1,4 +1,4 @@ -From de4427fa49c07dc651ee6ceaf5c5078700ca3b08 Mon Sep 17 00:00:00 2001 +From 0ae7090dec149cb2ff0c87eef87c043d4000ece1 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:30:32 +0400 Subject: [PATCH] gcc: armv4: pass fix-v4bx to linker to support EABI. @@ -19,7 +19,7 @@ Upstream-Status: Pending 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h -index 0c0332f317f..7b3769e8459 100644 +index 6bd95855827..77befab5da8 100644 --- a/gcc/config/arm/linux-eabi.h +++ b/gcc/config/arm/linux-eabi.h @@ -91,10 +91,14 @@ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch b/poky/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch index 1dc4bb859..bde7ec660 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch @@ -1,4 +1,4 @@ -From 6b363c2c1c089ee900efa6013aefba1003840a37 Mon Sep 17 00:00:00 2001 +From 5ce8aa4615a3816d12c43752323154744517ae9f Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 Mar 2013 09:33:04 +0400 Subject: [PATCH] Use the multilib config files from ${B} instead of using the @@ -18,10 +18,10 @@ Upstream-Status: Inappropriate [configuration] 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/gcc/configure b/gcc/configure -index 6080f86145e..825a9652329 100755 +index 5160917d73e..e663052cad2 100755 --- a/gcc/configure +++ b/gcc/configure -@@ -12685,10 +12685,20 @@ done +@@ -13070,10 +13070,20 @@ done tmake_file_= for f in ${tmake_file} do @@ -46,7 +46,7 @@ index 6080f86145e..825a9652329 100755 done tmake_file="${tmake_file_}${omp_device_property_tmake_file}" -@@ -12699,6 +12709,10 @@ tm_file_list="options.h" +@@ -13084,6 +13094,10 @@ tm_file_list="options.h" tm_include_list="options.h insn-constants.h" for f in $tm_file; do case $f in @@ -58,10 +58,10 @@ index 6080f86145e..825a9652329 100755 f=`echo $f | sed 's/^..//'` tm_file_list="${tm_file_list} $f" diff --git a/gcc/configure.ac b/gcc/configure.ac -index 42be5252778..6099eb3251f 100644 +index 50f78308e8a..2b84875b028 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac -@@ -2118,10 +2118,20 @@ done +@@ -2243,10 +2243,20 @@ done tmake_file_= for f in ${tmake_file} do @@ -86,7 +86,7 @@ index 42be5252778..6099eb3251f 100644 done tmake_file="${tmake_file_}${omp_device_property_tmake_file}" -@@ -2132,6 +2142,10 @@ tm_file_list="options.h" +@@ -2257,6 +2267,10 @@ tm_file_list="options.h" tm_include_list="options.h insn-constants.h" for f in $tm_file; do case $f in diff --git a/poky/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch b/poky/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch index 05f12847e..3e0a1b413 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch @@ -1,4 +1,4 @@ -From 08752c2f1d21553301bee5757c453c6a36cbe03c Mon Sep 17 00:00:00 2001 +From 75a1ce0265ca123f74f17a40ad8bd8f26d9c2ab3 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 20 Feb 2015 09:39:38 +0000 Subject: [PATCH] Avoid using libdir from .la which usually points to a host diff --git a/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch b/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch index 886a1221d..e6596da5c 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch @@ -1,4 +1,4 @@ -From 5c3d66378c7ff60ca11a875aa4aa6f8a8529d43a Mon Sep 17 00:00:00 2001 +From b6e229a13aebfbb3fe38c216fd51b68bf71cfa9c Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 20 Feb 2015 09:40:59 +0000 Subject: [PATCH] export CPP @@ -37,7 +37,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 1 insertion(+) diff --git a/Makefile.in b/Makefile.in -index 36e369df6e7..c717903bb13 100644 +index 047be0255e2..af19589fa95 100644 --- a/Makefile.in +++ b/Makefile.in @@ -149,6 +149,7 @@ BUILD_EXPORTS = \ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch b/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch index 2797b2c22..120d5a29b 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch @@ -1,4 +1,4 @@ -From 378b752c5d9a3dba4e58cdadf8b4b4f34ea99a76 Mon Sep 17 00:00:00 2001 +From 6f410ed8fb7eee11ba7a25634c2257666b98ef52 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 20 Feb 2015 10:25:11 +0000 Subject: [PATCH] Ensure target gcc headers can be included @@ -11,20 +11,24 @@ found by gcc with the existing search paths. Add support for picking up these headers under the sysroot supplied on the gcc command line in order to resolve this. +Extend target gcc headers search to musl too + Upstream-Status: Pending Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Khem Raj <raj.khem@gmail.com> --- - gcc/Makefile.in | 2 ++ - gcc/cppdefault.c | 4 ++++ - 2 files changed, 6 insertions(+) + gcc/Makefile.in | 2 ++ + gcc/config/linux.h | 8 ++++++++ + gcc/config/rs6000/sysv4.h | 8 ++++++++ + gcc/cppdefault.c | 4 ++++ + 4 files changed, 22 insertions(+) diff --git a/gcc/Makefile.in b/gcc/Makefile.in -index 480c9366418..011c7ac2db6 100644 +index 59c45c81393..9b17d120aa1 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in -@@ -618,6 +618,7 @@ libexecdir = @libexecdir@ +@@ -630,6 +630,7 @@ libexecdir = @libexecdir@ # Directory in which the compiler finds libraries etc. libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) @@ -32,7 +36,7 @@ index 480c9366418..011c7ac2db6 100644 # Directory in which the compiler finds executables libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) # Directory in which all plugin resources are installed -@@ -2946,6 +2947,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localedir)\" +@@ -3016,6 +3017,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localedir)\" PREPROCESSOR_DEFINES = \ -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \ @@ -40,11 +44,63 @@ index 480c9366418..011c7ac2db6 100644 -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +diff --git a/gcc/config/linux.h b/gcc/config/linux.h +index 87efc5f69fe..b525bcd56b3 100644 +--- a/gcc/config/linux.h ++++ b/gcc/config/linux.h +@@ -165,6 +165,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + ++#ifdef GCC_INCLUDE_SUBDIR_TARGET ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ ++ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET ++#endif ++ + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ + { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +@@ -191,6 +198,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + INCLUDE_DEFAULTS_MUSL_PREFIX \ + INCLUDE_DEFAULTS_MUSL_CROSS \ + INCLUDE_DEFAULTS_MUSL_TOOL \ ++ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ + { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ +diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h +index 510abe169c5..0c2bba5ea32 100644 +--- a/gcc/config/rs6000/sysv4.h ++++ b/gcc/config/rs6000/sysv4.h +@@ -995,6 +995,13 @@ ncrtn.o%s" + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + ++#ifdef GCC_INCLUDE_SUBDIR_TARGET ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ ++ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET ++#endif ++ + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ + { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +@@ -1021,6 +1028,7 @@ ncrtn.o%s" + INCLUDE_DEFAULTS_MUSL_PREFIX \ + INCLUDE_DEFAULTS_MUSL_CROSS \ + INCLUDE_DEFAULTS_MUSL_TOOL \ ++ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ + { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c -index af38cc494ea..2f43b88a0c3 100644 +index c503d14fc3f..d54d6ce0076 100644 --- a/gcc/cppdefault.c +++ b/gcc/cppdefault.c -@@ -59,6 +59,10 @@ const struct default_include cpp_include_defaults[] +@@ -64,6 +64,10 @@ const struct default_include cpp_include_defaults[] /* This is the dir for gcc's private headers. */ { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 }, #endif diff --git a/poky/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch b/poky/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch index c3baf8b45..bb2a3671f 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch @@ -1,4 +1,4 @@ -From 870e805d705d99d9b9d7dbd09727f9c1d2ad9c1d Mon Sep 17 00:00:00 2001 +From cd09adb1e7f2a7e81a9f595a17c36f24911b90ac Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Tue, 3 Mar 2015 08:21:19 +0000 Subject: [PATCH] Don't search host directory during "relink" if $inst_prefix diff --git a/poky/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/poky/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch index abee48669..0f3b3869b 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch @@ -1,4 +1,4 @@ -From aba42de763a619355471efd1573561b0cbf51162 Mon Sep 17 00:00:00 2001 +From 7faad21154a76b200efcced9e12945057c94dff3 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Tue, 28 Apr 2015 23:15:27 -0700 Subject: [PATCH] Use SYSTEMLIBS_DIR replacement instead of hardcoding @@ -12,7 +12,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h -index e587e2e9ad6..ddc62895693 100644 +index 7f2529a2a1d..5303b39186f 100644 --- a/gcc/config/aarch64/aarch64-linux.h +++ b/gcc/config/aarch64/aarch64-linux.h @@ -21,7 +21,7 @@ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch b/poky/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch index c55b66d4b..41536a8a3 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch @@ -1,4 +1,4 @@ -From d63820a78d92f302410358293546f01c7ad17bd8 Mon Sep 17 00:00:00 2001 +From 96aa24a874331a318693e4fccc4bc4e7d3fbad2b Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Tue, 28 Apr 2015 23:18:39 -0700 Subject: [PATCH] aarch64: Add support for musl ldso @@ -11,7 +11,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h -index ddc62895693..b301825313a 100644 +index 5303b39186f..4bcae7f3110 100644 --- a/gcc/config/aarch64/aarch64-linux.h +++ b/gcc/config/aarch64/aarch64-linux.h @@ -24,7 +24,7 @@ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch b/poky/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch index 80c4d2292..fb4511cc1 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch @@ -1,4 +1,4 @@ -From 3474e16ad4ea8cf4e0e330568e3bc9039e723dce Mon Sep 17 00:00:00 2001 +From 2cfc5ee38b3f5ec1d7965aae0991bcd48b5dc2e6 Mon Sep 17 00:00:00 2001 From: Robert Yang <liezhi.yang@windriver.com> Date: Sun, 5 Jul 2015 20:25:18 -0700 Subject: [PATCH] libcc1: fix libcc1's install path and rpath @@ -20,10 +20,10 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com> 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am -index c005b0dad4a..ec31d35b7b9 100644 +index f148fdd7aa2..0b6eb8f2855 100644 --- a/libcc1/Makefile.am +++ b/libcc1/Makefile.am -@@ -37,8 +37,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \ +@@ -40,8 +40,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \ $(Wc)$(libiberty_normal))) libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) @@ -35,10 +35,10 @@ index c005b0dad4a..ec31d35b7b9 100644 if ENABLE_PLUGIN plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in -index 7104b649026..2103c477468 100644 +index 753d435c9cb..455627b0a3b 100644 --- a/libcc1/Makefile.in +++ b/libcc1/Makefile.in -@@ -393,8 +393,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \ +@@ -398,8 +398,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \ $(Wc)$(libiberty_normal))) libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) diff --git a/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch b/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch index dc3e6da65..b1054fa74 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch @@ -1,4 +1,4 @@ -From 702daf2e9cb97337e0e594fcd435b1b61a917d14 Mon Sep 17 00:00:00 2001 +From 354682ad8f71f62643dcd83f64b51b5979615a0c Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 7 Dec 2015 23:39:54 +0000 Subject: [PATCH] handle sysroot support for nativesdk-gcc @@ -23,6 +23,9 @@ b) Add other paths which need relocation into a .gccrelocprefix section Upstream-Status: Inappropriate RP 2015/7/28 +Extend the gccrelocprefix support to musl config too, this ensures +that gcc will get right bits in SDK installations + Signed-off-by: Khem Raj <raj.khem@gmail.com> Added PREFIXVAR and EXEC_PREFIXVAR to support runtime relocation. Without @@ -32,19 +35,21 @@ implementation.) Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org> --- - gcc/c-family/c-opts.c | 4 +-- - gcc/cppdefault.c | 63 ++++++++++++++++++++++++++----------------- - gcc/cppdefault.h | 13 ++++----- - gcc/gcc.c | 20 +++++++++----- - gcc/incpath.c | 12 ++++----- - gcc/prefix.c | 6 +++-- - 6 files changed, 70 insertions(+), 48 deletions(-) + gcc/c-family/c-opts.c | 4 +-- + gcc/config/linux.h | 24 +++++++-------- + gcc/config/rs6000/sysv4.h | 24 +++++++-------- + gcc/cppdefault.c | 63 ++++++++++++++++++++++++--------------- + gcc/cppdefault.h | 13 ++++---- + gcc/gcc.c | 20 +++++++++---- + gcc/incpath.c | 12 ++++---- + gcc/prefix.c | 6 ++-- + 8 files changed, 94 insertions(+), 72 deletions(-) diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c -index 58ba0948e79..806bbcfb7a5 100644 +index 89e05a4c551..5577383665d 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c -@@ -1409,8 +1409,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain) +@@ -1436,8 +1436,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain) size_t prefix_len, suffix_len; suffix_len = strlen (suffix); @@ -55,8 +60,164 @@ index 58ba0948e79..806bbcfb7a5 100644 path = (char *) xmalloc (prefix_len + suffix_len + 1); memcpy (path, prefix, prefix_len); +diff --git a/gcc/config/linux.h b/gcc/config/linux.h +index b525bcd56b3..ba02c013e30 100644 +--- a/gcc/config/linux.h ++++ b/gcc/config/linux.h +@@ -129,53 +129,53 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + * Unfortunately, this is mostly duplicated from cppdefault.c */ + #if DEFAULT_LIBC == LIBC_MUSL + #define INCLUDE_DEFAULTS_MUSL_GPP \ +- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ +- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ +- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, + + #ifdef LOCAL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_LOCAL \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 }, \ ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_LOCAL + #endif + + #ifdef PREFIX_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_PREFIX \ +- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, ++ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_PREFIX + #endif + + #ifdef CROSS_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_CROSS \ +- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, ++ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_CROSS + #endif + + #ifdef TOOL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_TOOL \ +- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, ++ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + + #ifdef GCC_INCLUDE_SUBDIR_TARGET + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ +- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET + #endif + + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 }, \ ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_NATIVE + #endif +@@ -200,7 +200,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + INCLUDE_DEFAULTS_MUSL_TOOL \ + INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ ++ { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ + } + #endif +diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h +index 0c2bba5ea32..313a8de4417 100644 +--- a/gcc/config/rs6000/sysv4.h ++++ b/gcc/config/rs6000/sysv4.h +@@ -959,53 +959,53 @@ ncrtn.o%s" + /* Include order changes for musl, same as in generic linux.h. */ + #if DEFAULT_LIBC == LIBC_MUSL + #define INCLUDE_DEFAULTS_MUSL_GPP \ +- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ +- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ +- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, + + #ifdef LOCAL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_LOCAL \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 }, \ ++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_LOCAL + #endif + + #ifdef PREFIX_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_PREFIX \ +- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, ++ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_PREFIX + #endif + + #ifdef CROSS_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_CROSS \ +- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, ++ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_CROSS + #endif + + #ifdef TOOL_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_TOOL \ +- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, ++ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_TOOL + #endif + + #ifdef GCC_INCLUDE_SUBDIR_TARGET + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ +- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0}, ++ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0}, + #else + #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET + #endif + + #ifdef NATIVE_SYSTEM_HEADER_DIR + #define INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ +- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 }, \ ++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 }, + #else + #define INCLUDE_DEFAULTS_MUSL_NATIVE + #endif +@@ -1030,7 +1030,7 @@ ncrtn.o%s" + INCLUDE_DEFAULTS_MUSL_TOOL \ + INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \ + INCLUDE_DEFAULTS_MUSL_NATIVE \ +- { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ ++ { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \ + { 0, 0, 0, 0, 0, 0 } \ + } + #endif diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c -index 2f43b88a0c3..6b6be04686c 100644 +index d54d6ce0076..784a92a0c24 100644 --- a/gcc/cppdefault.c +++ b/gcc/cppdefault.c @@ -35,6 +35,30 @@ @@ -90,7 +251,7 @@ index 2f43b88a0c3..6b6be04686c 100644 const struct default_include cpp_include_defaults[] #ifdef INCLUDE_DEFAULTS = INCLUDE_DEFAULTS; -@@ -42,38 +66,38 @@ const struct default_include cpp_include_defaults[] +@@ -42,17 +66,17 @@ const struct default_include cpp_include_defaults[] = { #ifdef GPLUSPLUS_INCLUDE_DIR /* Pick up GNU C++ generic include files. */ @@ -110,6 +271,9 @@ index 2f43b88a0c3..6b6be04686c 100644 + { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1, GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, #endif + #ifdef GPLUSPLUS_LIBCXX_INCLUDE_DIR +@@ -62,23 +86,23 @@ const struct default_include cpp_include_defaults[] + #endif #ifdef GCC_INCLUDE_DIR /* This is the dir for gcc's private headers. */ - { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 }, @@ -138,7 +302,7 @@ index 2f43b88a0c3..6b6be04686c 100644 /* A multilib suffix needs adding if different multilibs use different headers. */ #ifdef SYSROOT_HEADERS_SUFFIX_SPEC -@@ -85,33 +109,24 @@ const struct default_include cpp_include_defaults[] +@@ -90,33 +114,24 @@ const struct default_include cpp_include_defaults[] #endif #ifdef CROSS_INCLUDE_DIR /* One place the target system's headers might be. */ @@ -179,7 +343,7 @@ index 2f43b88a0c3..6b6be04686c 100644 /* This value is set by cpp_relocated at runtime */ const char *gcc_exec_prefix; diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h -index a681264f75e..5e10a2fa140 100644 +index fd3c655db1c..20669ac427d 100644 --- a/gcc/cppdefault.h +++ b/gcc/cppdefault.h @@ -33,7 +33,8 @@ @@ -191,8 +355,8 @@ index a681264f75e..5e10a2fa140 100644 + const char *const component; /* The component containing the directory (see update_path in prefix.c) */ - const char cplusplus; /* Only look here if we're compiling C++. */ -@@ -50,17 +51,13 @@ struct default_include + const char cplusplus; /* When this is non-zero, we should only +@@ -55,17 +56,13 @@ struct default_include }; extern const struct default_include cpp_include_defaults[]; @@ -214,7 +378,7 @@ index a681264f75e..5e10a2fa140 100644 subdirectory of the actual installation. */ extern const char *gcc_exec_prefix; diff --git a/gcc/gcc.c b/gcc/gcc.c -index c87f603955f..535d5c3bb65 100644 +index 8737bae5353..aa6fbe43965 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -252,6 +252,8 @@ FILE *report_times_to_file = NULL; @@ -226,7 +390,7 @@ index c87f603955f..535d5c3bb65 100644 /* Nonzero means pass the updated target_system_root to the compiler. */ static int target_system_root_changed; -@@ -526,6 +528,7 @@ or with constant text in a single argument. +@@ -568,6 +570,7 @@ or with constant text in a single argument. %G process LIBGCC_SPEC as a spec. %R Output the concatenation of target_system_root and target_sysroot_suffix. @@ -234,7 +398,7 @@ index c87f603955f..535d5c3bb65 100644 %S process STARTFILE_SPEC as a spec. A capital S is actually used here. %E process ENDFILE_SPEC as a spec. A capital E is actually used here. %C process CPP_SPEC as a spec. -@@ -1499,10 +1502,10 @@ static const char *gcc_libexec_prefix; +@@ -1621,10 +1624,10 @@ static const char *gcc_libexec_prefix; gcc_exec_prefix is set because, in that case, we know where the compiler has been installed, and use paths relative to that location instead. */ @@ -249,7 +413,7 @@ index c87f603955f..535d5c3bb65 100644 /* For native compilers, these are well-known paths containing components that may be provided by the system. For cross -@@ -1510,9 +1513,9 @@ static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX; +@@ -1632,9 +1635,9 @@ static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX; static const char *md_exec_prefix = MD_EXEC_PREFIX; static const char *md_startfile_prefix = MD_STARTFILE_PREFIX; static const char *md_startfile_prefix_1 = MD_STARTFILE_PREFIX_1; @@ -261,7 +425,7 @@ index c87f603955f..535d5c3bb65 100644 = STANDARD_STARTFILE_PREFIX_2; /* A relative path to be used in finding the location of tools -@@ -5952,6 +5955,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part) +@@ -6564,6 +6567,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part) } break; @@ -274,7 +438,7 @@ index c87f603955f..535d5c3bb65 100644 value = do_spec_1 (startfile_spec, 0, NULL); if (value != 0) diff --git a/gcc/incpath.c b/gcc/incpath.c -index 9098ab044ab..bfad4ebe382 100644 +index fbfc0ce03b8..a82e543428b 100644 --- a/gcc/incpath.c +++ b/gcc/incpath.c @@ -131,7 +131,7 @@ add_standard_paths (const char *sysroot, const char *iprefix, @@ -286,7 +450,7 @@ index 9098ab044ab..bfad4ebe382 100644 { /* Look for directories that start with the standard prefix. "Translate" them, i.e. replace /usr/local/lib/gcc... with -@@ -145,7 +145,7 @@ add_standard_paths (const char *sysroot, const char *iprefix, +@@ -146,7 +146,7 @@ add_standard_paths (const char *sysroot, const char *iprefix, now. */ if (sysroot && p->add_sysroot) continue; @@ -295,7 +459,7 @@ index 9098ab044ab..bfad4ebe382 100644 { char *str = concat (iprefix, p->fname + len, NULL); if (p->multilib == 1 && imultilib) -@@ -185,7 +185,7 @@ add_standard_paths (const char *sysroot, const char *iprefix, +@@ -187,7 +187,7 @@ add_standard_paths (const char *sysroot, const char *iprefix, free (sysroot_no_trailing_dir_separator); } else if (!p->add_sysroot && relocated @@ -304,7 +468,7 @@ index 9098ab044ab..bfad4ebe382 100644 { static const char *relocated_prefix; char *ostr; -@@ -202,12 +202,12 @@ add_standard_paths (const char *sysroot, const char *iprefix, +@@ -204,12 +204,12 @@ add_standard_paths (const char *sysroot, const char *iprefix, dummy = concat (gcc_exec_prefix, "dummy", NULL); relocated_prefix = make_relative_prefix (dummy, @@ -321,7 +485,7 @@ index 9098ab044ab..bfad4ebe382 100644 str = update_path (ostr, p->component); free (ostr); diff --git a/gcc/prefix.c b/gcc/prefix.c -index 1a403e535bd..c26d07bde12 100644 +index 747c09de638..f728638dc65 100644 --- a/gcc/prefix.c +++ b/gcc/prefix.c @@ -72,7 +72,9 @@ License along with GCC; see the file COPYING3. If not see @@ -344,6 +508,3 @@ index 1a403e535bd..c26d07bde12 100644 /* We used to strip trailing DIR_SEPARATORs here, but that can sometimes yield a result with no separator when one was coded --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/poky/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch index abf1f8491..ff622b105 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch @@ -1,4 +1,4 @@ -From 9c0c73ee48dbee2aad57f4dcdad1b7b74e77b944 Mon Sep 17 00:00:00 2001 +From c55e24459370ad96577496ecd87475e3a9de7dad Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 7 Dec 2015 23:41:45 +0000 Subject: [PATCH] Search target sysroot gcc version specific dirs with @@ -51,10 +51,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/gcc/gcc.c b/gcc/gcc.c -index 535d5c3bb65..04647ae812d 100644 +index aa6fbe43965..f8a71a13826 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c -@@ -2616,7 +2616,7 @@ for_each_path (const struct path_prefix *paths, +@@ -2811,7 +2811,7 @@ for_each_path (const struct path_prefix *paths, if (path == NULL) { len = paths->max_len + extra_space + 1; @@ -63,7 +63,7 @@ index 535d5c3bb65..04647ae812d 100644 path = XNEWVEC (char, len); } -@@ -2628,6 +2628,33 @@ for_each_path (const struct path_prefix *paths, +@@ -2823,6 +2823,33 @@ for_each_path (const struct path_prefix *paths, /* Look first in MACHINE/VERSION subdirectory. */ if (!skip_multi_dir) { diff --git a/poky/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch b/poky/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch index 97bf2f3a7..c2698f9ee 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch @@ -1,4 +1,4 @@ -From 3a003af8804dda90fdf4862eca5f66cb12faaf02 Mon Sep 17 00:00:00 2001 +From cd5db101e3c4e72248f988a67ce28be8e24f66d4 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 7 Dec 2015 23:42:45 +0000 Subject: [PATCH] Fix various _FOR_BUILD and related variables @@ -26,7 +26,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Makefile.in b/Makefile.in -index c717903bb13..5abc649868d 100644 +index af19589fa95..d0116a23e1a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -152,6 +152,7 @@ BUILD_EXPORTS = \ @@ -64,7 +64,7 @@ index c717903bb13..5abc649868d 100644 "FLEX=$(FLEX)" \ "INSTALL=$(INSTALL)" \ diff --git a/Makefile.tpl b/Makefile.tpl -index efed1511750..778beb705b4 100644 +index 6e0337fb48f..4fcac93d3d8 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -154,6 +154,7 @@ BUILD_EXPORTS = \ @@ -94,10 +94,10 @@ index efed1511750..778beb705b4 100644 CFLAGS="$(CFLAGS)"; export CFLAGS; \ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ diff --git a/gcc/Makefile.in b/gcc/Makefile.in -index 011c7ac2db6..2f1165f7b5e 100644 +index 9b17d120aa1..3053d05903c 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in -@@ -805,7 +805,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@ +@@ -820,7 +820,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@ BUILD_NO_PIE_FLAG = @BUILD_NO_PIE_FLAG@ BUILD_LDFLAGS += $(BUILD_NO_PIE_FLAG) BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \ @@ -107,10 +107,10 @@ index 011c7ac2db6..2f1165f7b5e 100644 # Actual name to use when installing a native compiler. GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)') diff --git a/gcc/configure b/gcc/configure -index 825a9652329..ff46cf58960 100755 +index e663052cad2..b0906aa3e96 100755 --- a/gcc/configure +++ b/gcc/configure -@@ -12314,7 +12314,7 @@ else +@@ -12699,7 +12699,7 @@ else CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ @@ -120,10 +120,10 @@ index 825a9652329..ff46cf58960 100755 --enable-languages=${enable_languages-all} \ ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \ diff --git a/gcc/configure.ac b/gcc/configure.ac -index 6099eb3251f..b3c345b61dc 100644 +index 2b84875b028..bfbd8946e8a 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac -@@ -1898,7 +1898,7 @@ else +@@ -2023,7 +2023,7 @@ else CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch b/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch index 3cd75b718..2e65740ec 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch @@ -1,4 +1,4 @@ -From 4e53d0ae70af85af0e112a48a3e4dfe4c39f4a8d Mon Sep 17 00:00:00 2001 +From 9bbce1b5a10caf636eee137e5a229e5434a6c8f5 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Tue, 2 Feb 2016 10:26:10 -0800 Subject: [PATCH] nios2: Define MUSL_DYNAMIC_LINKER @@ -12,7 +12,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 1 insertion(+) diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h -index 4bdcdcca1f0..e7943a9d640 100644 +index 08edf1521f6..15696d86241 100644 --- a/gcc/config/nios2/linux.h +++ b/gcc/config/nios2/linux.h @@ -30,6 +30,7 @@ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch b/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch index 2a6769a82..9c616d24d 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch @@ -1,4 +1,4 @@ -From 5db0404eb770ac477fd99d444226bcf021067584 Mon Sep 17 00:00:00 2001 +From 745a2ac7825c73102b888226c54397d21512f86b Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Tue, 27 Jun 2017 18:10:54 -0700 Subject: [PATCH] Add ssp_nonshared to link commandline for musl targets @@ -22,12 +22,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> gcc/config/rs6000/linux64.h | 10 ++++++++++ 3 files changed, 27 insertions(+) -diff --git a/gcc/config/linux.h b/gcc/config/linux.h -index 0c1a8118a26..bdc2a2d0659 100644 --- a/gcc/config/linux.h +++ b/gcc/config/linux.h -@@ -195,6 +195,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ +@@ -203,6 +203,13 @@ see the files COPYING3 and COPYING.RUNTI + { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \ { 0, 0, 0, 0, 0, 0 } \ } +#ifdef TARGET_LIBC_PROVIDES_SSP @@ -40,8 +38,6 @@ index 0c1a8118a26..bdc2a2d0659 100644 #endif #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */ -diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h -index b7026fcbee7..dd54d6c393e 100644 --- a/gcc/config/rs6000/linux.h +++ b/gcc/config/rs6000/linux.h @@ -94,6 +94,16 @@ @@ -61,11 +57,9 @@ index b7026fcbee7..dd54d6c393e 100644 #undef LINK_OS_LINUX_SPEC #define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared: %{!static: \ %{!static-pie: \ -diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h -index 967c1c43c63..dc5e4d97975 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h -@@ -452,6 +452,16 @@ extern int dot_symbols; +@@ -369,6 +369,16 @@ extern int dot_symbols; " -m elf64ppc") #endif diff --git a/poky/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch b/poky/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch index 767cba038..b74aeb8bb 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch @@ -1,4 +1,4 @@ -From fbc926dbf6a47fa623b9c94cd9b09a0e90448fdc Mon Sep 17 00:00:00 2001 +From 695adb4dffb23c6f5cbc757e05cf4187a2bd6528 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Wed, 4 May 2016 21:11:34 -0700 Subject: [PATCH] Link libgcc using LDFLAGS, not just SHLIB_LDFLAGS @@ -12,7 +12,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc -index c997553447c..330352c2c81 100644 +index c59b43b7b69..ca4c141f526 100644 --- a/libgcc/config/t-slibgcc +++ b/libgcc/config/t-slibgcc @@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch b/poky/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch index 4f18907a1..86f75d0d5 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch @@ -1,4 +1,4 @@ -From 24dc04dc8d69e3bf61322615b3ef18e02ccd311e Mon Sep 17 00:00:00 2001 +From a9173429ae256c4b4a3ab4d758a6adf42f8c4239 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 3 Feb 2017 12:56:00 -0800 Subject: [PATCH] sync gcc stddef.h with musl @@ -14,7 +14,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 9 insertions(+) diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h -index 9d67eac4947..6cb5edbedb4 100644 +index 66619fe43b1..3f843d6f365 100644 --- a/gcc/ginclude/stddef.h +++ b/gcc/ginclude/stddef.h @@ -128,6 +128,7 @@ _TYPE_wchar_t; diff --git a/poky/meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch b/poky/meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch index 702279af0..70afa4f9e 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch @@ -1,4 +1,4 @@ -From 27b8ba5555ada2dab076988529bfb84d00a4b901 Mon Sep 17 00:00:00 2001 +From 3d59f763b824ac11f8360931092baf0bc1719562 Mon Sep 17 00:00:00 2001 From: Juro Bystricky <juro.bystricky@intel.com> Date: Mon, 19 Mar 2018 22:31:20 -0700 Subject: [PATCH] fix segmentation fault in precompiled header generation @@ -19,10 +19,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/libcpp/lex.c b/libcpp/lex.c -index 56ac3a1dd73..73a951148b3 100644 +index 06bcc31c87e..24bed9a35fa 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c -@@ -3311,11 +3311,27 @@ cpp_spell_token (cpp_reader *pfile, const cpp_token *token, +@@ -3531,11 +3531,27 @@ cpp_spell_token (cpp_reader *pfile, const cpp_token *token, spell_ident: case SPELL_IDENT: if (forstring) diff --git a/poky/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch b/poky/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch index 0a0767b44..0be03e652 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch @@ -1,4 +1,4 @@ -From 2512aacf023c679d86d8f40caff4f6ff412b32ff Mon Sep 17 00:00:00 2001 +From bb171ef618f8892bd56e57ae41ecb6e02caa8173 Mon Sep 17 00:00:00 2001 From: RAGHUNATH LOLUR <raghunath.lolur@kpit.com> Date: Wed, 6 Dec 2017 22:52:26 -0800 Subject: [PATCH] Fix for testsuite failure diff --git a/poky/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch b/poky/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch index ba7c2b8fd..129f555a4 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch @@ -1,4 +1,4 @@ -From 3fc06241ce37e2e4b3ed21ace28d347eb511448d Mon Sep 17 00:00:00 2001 +From 0b900d6410b7c1938e86eceb87b032fd538566a9 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Wed, 6 Jun 2018 12:10:22 -0700 Subject: [PATCH] Re-introduce spe commandline options @@ -10,17 +10,18 @@ Upstream-Status: Inappropriate [SPE port is removed from rs600 port] Signed-off-by: Khem Raj <raj.khem@gmail.com> --- - gcc/config/rs6000/rs6000.opt | 12 ++++++++++++ - 1 file changed, 12 insertions(+) + gcc/config/rs6000/rs6000.opt | 13 +++++++++++++ + 1 file changed, 13 insertions(+) diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt -index f95b8279270..0e52d51409d 100644 +index 0dbdf753673..b273eb65c35 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt -@@ -344,6 +344,18 @@ mdebug= +@@ -352,6 +352,19 @@ mdebug= Target RejectNegative Joined -mdebug= Enable debug output. ++; PPC SPE ABI +mspe +Target Var(rs6000_spe) Save +Generate SPE SIMD instructions on E500. @@ -33,6 +34,6 @@ index f95b8279270..0e52d51409d 100644 +Target RejectNegative Var(rs6000_spe_abi, 0) +Do not use the SPE ABI extensions. + + ; Altivec ABI mabi=altivec Target RejectNegative Var(rs6000_altivec_abi) Save - Use the AltiVec ABI extensions. diff --git a/poky/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch b/poky/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch index 4ce9dc6de..3f666dc7b 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch @@ -1,4 +1,4 @@ -From b42ff59c3fe2967d37815c8db72a47b9b7f585b4 Mon Sep 17 00:00:00 2001 +From ea9154338cb3acbd75945fddde4202e73c20dd1a Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy <nsz@port70.net> Date: Sat, 24 Oct 2015 20:09:53 +0000 Subject: [PATCH] libgcc_s: Use alias for __cpu_indicator_init instead of @@ -39,10 +39,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c -index 48f00c5fcfc..468f5f71fac 100644 +index ac69eed4d32..ffaa44a16fc 100644 --- a/gcc/config/i386/i386-expand.c +++ b/gcc/config/i386/i386-expand.c -@@ -10941,10 +10941,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget, +@@ -11038,10 +11038,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget, { case IX86_BUILTIN_CPU_INIT: { @@ -56,11 +56,11 @@ index 48f00c5fcfc..468f5f71fac 100644 return expand_expr (call_expr, target, mode, EXPAND_NORMAL); } diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c -index 00322c58622..f42bbb8af98 100644 +index ef463848f9d..1a3de052c80 100644 --- a/libgcc/config/i386/cpuinfo.c +++ b/libgcc/config/i386/cpuinfo.c -@@ -508,7 +508,7 @@ __cpu_indicator_init (void) - return 0; +@@ -63,7 +63,7 @@ __cpu_indicator_init (void) + __cpu_features2); } -#if defined SHARED && defined USE_ELF_SYMVER diff --git a/poky/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch b/poky/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch index dd1bf6ded..874cd7798 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch @@ -1,4 +1,4 @@ -From 0395060a7dcf98c5f5a65103f6aaa71d6b862259 Mon Sep 17 00:00:00 2001 +From 520411cf364ee4b0b5a8f0857498aaabd790afb3 Mon Sep 17 00:00:00 2001 From: Richard Purdie <richard.purdie@linuxfoundation.org> Date: Tue, 10 Mar 2020 08:26:53 -0700 Subject: [PATCH] gentypes/genmodes: Do not use __LINE__ for maintaining @@ -17,7 +17,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/gcc/gengtype.c b/gcc/gengtype.c -index 981577481af..d5700fff401 100644 +index 5f50242e857..cbaca9b8cd0 100644 --- a/gcc/gengtype.c +++ b/gcc/gengtype.c @@ -991,7 +991,7 @@ create_field_at (pair_p next, type_p type, const char *name, options_p opt, @@ -38,7 +38,7 @@ index 981577481af..d5700fff401 100644 /* Reverse a linked list of 'struct pair's in place. */ pair_p -@@ -5187,7 +5187,7 @@ main (int argc, char **argv) +@@ -5189,7 +5189,7 @@ main (int argc, char **argv) /* These types are set up with #define or else outside of where we can see them. We should initialize them before calling read_input_list. */ @@ -48,10 +48,10 @@ index 981577481af..d5700fff401 100644 POS_HERE (do_scalar_typedef ("CUMULATIVE_ARGS", &pos)); POS_HERE (do_scalar_typedef ("REAL_VALUE_TYPE", &pos)); diff --git a/gcc/genmodes.c b/gcc/genmodes.c -index bd78310ea24..dbd02c51a4c 100644 +index c268ebc4c6e..4361f3f1563 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c -@@ -430,7 +430,7 @@ complete_all_modes (void) +@@ -438,7 +438,7 @@ complete_all_modes (void) } /* For each mode in class CLASS, construct a corresponding complex mode. */ @@ -60,7 +60,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void make_complex_modes (enum mode_class cl, const char *file, unsigned int line) -@@ -489,7 +489,7 @@ make_complex_modes (enum mode_class cl, +@@ -497,7 +497,7 @@ make_complex_modes (enum mode_class cl, having as many components as necessary. ORDER is the sorting order of the mode, with smaller numbers indicating a higher priority. */ #define VECTOR_MODES_WITH_PREFIX(PREFIX, C, W, ORDER) \ @@ -69,7 +69,7 @@ index bd78310ea24..dbd02c51a4c 100644 #define VECTOR_MODES(C, W) VECTOR_MODES_WITH_PREFIX (V, C, W, 0) static void ATTRIBUTE_UNUSED make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width, -@@ -541,7 +541,7 @@ make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width, +@@ -549,7 +549,7 @@ make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width, /* Create a vector of booleans called NAME with COUNT elements and BYTESIZE bytes in total. */ #define VECTOR_BOOL_MODE(NAME, COUNT, BYTESIZE) \ @@ -78,7 +78,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void ATTRIBUTE_UNUSED make_vector_bool_mode (const char *name, unsigned int count, unsigned int bytesize, const char *file, -@@ -563,7 +563,7 @@ make_vector_bool_mode (const char *name, unsigned int count, +@@ -571,7 +571,7 @@ make_vector_bool_mode (const char *name, unsigned int count, /* Input. */ #define _SPECIAL_MODE(C, N) \ @@ -87,7 +87,7 @@ index bd78310ea24..dbd02c51a4c 100644 #define RANDOM_MODE(N) _SPECIAL_MODE (RANDOM, N) #define CC_MODE(N) _SPECIAL_MODE (CC, N) -@@ -576,7 +576,7 @@ make_special_mode (enum mode_class cl, const char *name, +@@ -584,7 +584,7 @@ make_special_mode (enum mode_class cl, const char *name, #define INT_MODE(N, Y) FRACTIONAL_INT_MODE (N, -1U, Y) #define FRACTIONAL_INT_MODE(N, B, Y) \ @@ -96,7 +96,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void make_int_mode (const char *name, -@@ -589,16 +589,16 @@ make_int_mode (const char *name, +@@ -611,16 +611,16 @@ make_opaque_mode (const char *name, } #define FRACT_MODE(N, Y, F) \ @@ -117,7 +117,7 @@ index bd78310ea24..dbd02c51a4c 100644 /* Create a fixed-point mode by setting CL, NAME, BYTESIZE, IBIT, FBIT, FILE, and LINE. */ -@@ -619,7 +619,7 @@ make_fixed_point_mode (enum mode_class cl, +@@ -641,7 +641,7 @@ make_fixed_point_mode (enum mode_class cl, #define FLOAT_MODE(N, Y, F) FRACTIONAL_FLOAT_MODE (N, -1U, Y, F) #define FRACTIONAL_FLOAT_MODE(N, B, Y, F) \ @@ -126,7 +126,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void make_float_mode (const char *name, -@@ -636,7 +636,7 @@ make_float_mode (const char *name, +@@ -658,7 +658,7 @@ make_float_mode (const char *name, #define DECIMAL_FLOAT_MODE(N, Y, F) \ FRACTIONAL_DECIMAL_FLOAT_MODE (N, -1U, Y, F) #define FRACTIONAL_DECIMAL_FLOAT_MODE(N, B, Y, F) \ @@ -135,7 +135,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void make_decimal_float_mode (const char *name, -@@ -651,7 +651,7 @@ make_decimal_float_mode (const char *name, +@@ -673,7 +673,7 @@ make_decimal_float_mode (const char *name, } #define RESET_FLOAT_FORMAT(N, F) \ @@ -144,7 +144,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void ATTRIBUTE_UNUSED reset_float_format (const char *name, const char *format, const char *file, unsigned int line) -@@ -672,7 +672,7 @@ reset_float_format (const char *name, const char *format, +@@ -694,7 +694,7 @@ reset_float_format (const char *name, const char *format, /* __intN support. */ #define INT_N(M,PREC) \ @@ -153,7 +153,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void ATTRIBUTE_UNUSED make_int_n (const char *m, int bitsize, const char *file, unsigned int line) -@@ -701,7 +701,7 @@ make_int_n (const char *m, int bitsize, +@@ -723,7 +723,7 @@ make_int_n (const char *m, int bitsize, /* Partial integer modes are specified by relation to a full integer mode. */ #define PARTIAL_INT_MODE(M,PREC,NAME) \ @@ -162,7 +162,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void ATTRIBUTE_UNUSED make_partial_integer_mode (const char *base, const char *name, unsigned int precision, -@@ -728,7 +728,7 @@ make_partial_integer_mode (const char *base, const char *name, +@@ -750,7 +750,7 @@ make_partial_integer_mode (const char *base, const char *name, /* A single vector mode can be specified by naming its component mode and the number of components. */ #define VECTOR_MODE(C, M, N) \ @@ -171,7 +171,7 @@ index bd78310ea24..dbd02c51a4c 100644 static void ATTRIBUTE_UNUSED make_vector_mode (enum mode_class bclass, const char *base, -@@ -771,7 +771,7 @@ make_vector_mode (enum mode_class bclass, +@@ -793,7 +793,7 @@ make_vector_mode (enum mode_class bclass, /* Adjustability. */ #define _ADD_ADJUST(A, M, X, C1, C2) \ diff --git a/poky/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch b/poky/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch index de82a3a53..3a7618c82 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch @@ -1,4 +1,4 @@ -From 6f87a095f0e696bec07a50df789c9db8bdbca43d Mon Sep 17 00:00:00 2001 +From 96d895c8d5dc895d24fe37aa2b4f201a2566b4cc Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Tue, 12 May 2020 10:39:09 -0700 Subject: [PATCH] mingw32: Enable operation_not_supported @@ -12,15 +12,15 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libstdc++-v3/config/os/mingw32/error_constants.h b/libstdc++-v3/config/os/mingw32/error_constants.h -index 68ac72a78fb..71cd5815b81 100644 +index eca06a97014..933cfab49cf 100644 --- a/libstdc++-v3/config/os/mingw32/error_constants.h +++ b/libstdc++-v3/config/os/mingw32/error_constants.h @@ -107,7 +107,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - #ifdef _GLIBCXX_HAVE_EPERM + #ifdef EPERM operation_not_permitted = EPERM, #endif -// operation_not_supported = EOPNOTSUPP, + operation_not_supported = EOPNOTSUPP, - #ifdef _GLIBCXX_HAVE_EWOULDBLOCK + #ifdef EWOULDBLOCK operation_would_block = EWOULDBLOCK, #endif diff --git a/poky/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch b/poky/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch index 3946acea1..4c9a79cb6 100644 --- a/poky/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch +++ b/poky/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch @@ -1,4 +1,4 @@ -From 38d262bfe7c0c894c364dc6e4dc7971e78a73974 Mon Sep 17 00:00:00 2001 +From 36d4fdbc99e69f9d70a29e2bada40cc3c1534557 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Wed, 13 May 2020 15:10:38 -0700 Subject: [PATCH] libatomic: Do not enforce march on aarch64 @@ -17,7 +17,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 2 files changed, 2 deletions(-) diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am -index 133fbbca77e..ac1ca645876 100644 +index 0f3cd6f7121..c8124c1d5aa 100644 --- a/libatomic/Makefile.am +++ b/libatomic/Makefile.am @@ -125,7 +125,6 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS))) @@ -29,10 +29,10 @@ index 133fbbca77e..ac1ca645876 100644 endif if ARCH_ARM_LINUX diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in -index a51807e95c9..97df2d7ff03 100644 +index 0a51bd55f01..6d5b1581706 100644 --- a/libatomic/Makefile.in +++ b/libatomic/Makefile.in -@@ -431,7 +431,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files))) +@@ -432,7 +432,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files))) libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \ _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \ $(am__append_3) $(am__append_4) diff --git a/poky/meta/recipes-devtools/gcc/gcc/0038-arc-Update-64bit-move-split-patterns.patch b/poky/meta/recipes-devtools/gcc/gcc/0038-arc-Update-64bit-move-split-patterns.patch new file mode 100644 index 000000000..37fe95d71 --- /dev/null +++ b/poky/meta/recipes-devtools/gcc/gcc/0038-arc-Update-64bit-move-split-patterns.patch @@ -0,0 +1,290 @@ +From 0061fabeb9393c362601486105202cfe837a5a68 Mon Sep 17 00:00:00 2001 +From: Claudiu Zissulescu <claziss@synopsys.com> +Date: Wed, 9 Jun 2021 12:12:57 +0300 +Subject: [PATCH] arc: Update 64bit move split patterns. + +ARCv2HS can use a limited number of instructions to implement 64bit +moves. The VADD2 is used as a 64bit move, the LDD/STD are 64 bit loads +and stores. All those instructions are not baseline, hence we need to +provide alternatives when they are not available or cannot be generate +due to instruction restriction. + +This patch is cleaning up those move patterns, and updates splits +instruction lengths. + +This is a backport from mainline gcc. + +gcc/ +2021-06-09 Claudiu Zissulescu <claziss@synopsys.com> + + * config/arc/arc-protos.h (arc_split_move_p): New prototype. + * config/arc/arc.c (arc_split_move_p): New function. + (arc_split_move): Clean up. + * config/arc/arc.md (movdi_insn): Clean up, use arc_split_move_p. + (movdf_insn): Likewise. + * config/arc/simdext.md (mov<VWH>_insn): Likewise. + +Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=0061fabeb9393c362601486105202cfe837a5a68] + +Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com> +(cherry picked from commit c0ba7a8af5366c37241f20e8be41e362f7260389) +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + gcc/config/arc/arc-protos.h | 1 + + gcc/config/arc/arc.c | 44 ++++++++++++---------- + gcc/config/arc/arc.md | 91 +++++++++------------------------------------ + gcc/config/arc/simdext.md | 38 ++++--------------- + 4 files changed, 52 insertions(+), 122 deletions(-) + +diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h +index 1f56a0d82e4..62d7e45d29d 100644 +--- a/gcc/config/arc/arc-protos.h ++++ b/gcc/config/arc/arc-protos.h +@@ -50,6 +50,7 @@ extern void arc_split_ior (rtx *); + extern bool arc_check_mov_const (HOST_WIDE_INT ); + extern bool arc_split_mov_const (rtx *); + extern bool arc_can_use_return_insn (void); ++extern bool arc_split_move_p (rtx *); + #endif /* RTX_CODE */ + + extern bool arc_ccfsm_branch_deleted_p (void); +diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c +index 3201c3fefd7..db541bc11f5 100644 +--- a/gcc/config/arc/arc.c ++++ b/gcc/config/arc/arc.c +@@ -10129,6 +10129,31 @@ arc_process_double_reg_moves (rtx *operands) + return true; + } + ++ ++/* Check if we need to split a 64bit move. We do not need to split it if we can ++ use vadd2 or ldd/std instructions. */ ++ ++bool ++arc_split_move_p (rtx *operands) ++{ ++ machine_mode mode = GET_MODE (operands[0]); ++ ++ if (TARGET_LL64 ++ && ((memory_operand (operands[0], mode) ++ && (even_register_operand (operands[1], mode) ++ || satisfies_constraint_Cm3 (operands[1]))) ++ || (memory_operand (operands[1], mode) ++ && even_register_operand (operands[0], mode)))) ++ return false; ++ ++ if (TARGET_PLUS_QMACW ++ && even_register_operand (operands[0], mode) ++ && even_register_operand (operands[1], mode)) ++ return false; ++ ++ return true; ++} ++ + /* operands 0..1 are the operands of a 64 bit move instruction. + split it into two moves with operands 2/3 and 4/5. */ + +@@ -10146,25 +10171,6 @@ arc_split_move (rtx *operands) + return; + } + +- if (TARGET_LL64 +- && ((memory_operand (operands[0], mode) +- && (even_register_operand (operands[1], mode) +- || satisfies_constraint_Cm3 (operands[1]))) +- || (memory_operand (operands[1], mode) +- && even_register_operand (operands[0], mode)))) +- { +- emit_move_insn (operands[0], operands[1]); +- return; +- } +- +- if (TARGET_PLUS_QMACW +- && even_register_operand (operands[0], mode) +- && even_register_operand (operands[1], mode)) +- { +- emit_move_insn (operands[0], operands[1]); +- return; +- } +- + if (TARGET_PLUS_QMACW + && GET_CODE (operands[1]) == CONST_VECTOR) + { +diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md +index 7a52551eef5..91a838a38e4 100644 +--- a/gcc/config/arc/arc.md ++++ b/gcc/config/arc/arc.md +@@ -1329,47 +1329,20 @@ core_3, archs4x, archs4xd, archs4xd_slow" + "register_operand (operands[0], DImode) + || register_operand (operands[1], DImode) + || (satisfies_constraint_Cm3 (operands[1]) +- && memory_operand (operands[0], DImode))" +- "* +-{ +- switch (which_alternative) +- { +- default: +- return \"#\"; +- +- case 0: +- if (TARGET_PLUS_QMACW +- && even_register_operand (operands[0], DImode) +- && even_register_operand (operands[1], DImode)) +- return \"vadd2%?\\t%0,%1,0\"; +- return \"#\"; +- +- case 2: +- if (TARGET_LL64 +- && memory_operand (operands[1], DImode) +- && even_register_operand (operands[0], DImode)) +- return \"ldd%U1%V1 %0,%1%&\"; +- return \"#\"; +- +- case 3: +- if (TARGET_LL64 +- && memory_operand (operands[0], DImode) +- && (even_register_operand (operands[1], DImode) +- || satisfies_constraint_Cm3 (operands[1]))) +- return \"std%U0%V0 %1,%0\"; +- return \"#\"; +- } +-}" +- "&& reload_completed" ++ && memory_operand (operands[0], DImode))" ++ "@ ++ vadd2\\t%0,%1,0 ++ # ++ ldd%U1%V1\\t%0,%1 ++ std%U0%V0\\t%1,%0" ++ "&& reload_completed && arc_split_move_p (operands)" + [(const_int 0)] + { + arc_split_move (operands); + DONE; + } + [(set_attr "type" "move,move,load,store") +- ;; ??? The ld/st values could be 4 if it's [reg,bignum]. +- (set_attr "length" "8,16,*,*")]) +- ++ (set_attr "length" "8,16,16,16")]) + + ;; Floating point move insns. + +@@ -1408,50 +1381,22 @@ core_3, archs4x, archs4xd, archs4xd_slow" + (define_insn_and_split "*movdf_insn" + [(set (match_operand:DF 0 "move_dest_operand" "=D,r,r,r,r,m") + (match_operand:DF 1 "move_double_src_operand" "r,D,r,E,m,r"))] +- "register_operand (operands[0], DFmode) +- || register_operand (operands[1], DFmode)" +- "* +-{ +- switch (which_alternative) +- { +- default: +- return \"#\"; +- +- case 2: +- if (TARGET_PLUS_QMACW +- && even_register_operand (operands[0], DFmode) +- && even_register_operand (operands[1], DFmode)) +- return \"vadd2%?\\t%0,%1,0\"; +- return \"#\"; +- +- case 4: +- if (TARGET_LL64 +- && ((even_register_operand (operands[0], DFmode) +- && memory_operand (operands[1], DFmode)) +- || (memory_operand (operands[0], DFmode) +- && even_register_operand (operands[1], DFmode)))) +- return \"ldd%U1%V1 %0,%1%&\"; +- return \"#\"; +- +- case 5: +- if (TARGET_LL64 +- && ((even_register_operand (operands[0], DFmode) +- && memory_operand (operands[1], DFmode)) +- || (memory_operand (operands[0], DFmode) +- && even_register_operand (operands[1], DFmode)))) +- return \"std%U0%V0 %1,%0\"; +- return \"#\"; +- } +-}" +- "reload_completed" ++ "(register_operand (operands[0], DFmode) ++ || register_operand (operands[1], DFmode))" ++ "@ ++ # ++ # ++ vadd2\\t%0,%1,0 ++ # ++ ldd%U1%V1\\t%0,%1 ++ std%U0%V0\\t%1,%0" ++ "&& reload_completed && arc_split_move_p (operands)" + [(const_int 0)] + { + arc_split_move (operands); + DONE; + } + [(set_attr "type" "move,move,move,move,load,store") +- (set_attr "predicable" "no,no,no,yes,no,no") +- ;; ??? The ld/st values could be 16 if it's [reg,bignum]. + (set_attr "length" "4,16,8,16,16,16")]) + + (define_insn_and_split "*movdf_insn_nolrsr" +diff --git a/gcc/config/arc/simdext.md b/gcc/config/arc/simdext.md +index f0900757452..36f41a5c3d0 100644 +--- a/gcc/config/arc/simdext.md ++++ b/gcc/config/arc/simdext.md +@@ -1402,41 +1402,19 @@ + (match_operand:VWH 1 "general_operand" "i,r,m,r"))] + "(register_operand (operands[0], <MODE>mode) + || register_operand (operands[1], <MODE>mode))" +- "* +-{ +- switch (which_alternative) +- { +- default: +- return \"#\"; +- +- case 1: +- if (TARGET_PLUS_QMACW +- && even_register_operand (operands[0], <MODE>mode) +- && even_register_operand (operands[1], <MODE>mode)) +- return \"vadd2%?\\t%0,%1,0\"; +- return \"#\"; +- +- case 2: +- if (TARGET_LL64) +- return \"ldd%U1%V1 %0,%1\"; +- return \"#\"; +- +- case 3: +- if (TARGET_LL64) +- return \"std%U0%V0 %1,%0\"; +- return \"#\"; +- } +-}" +- "reload_completed" ++ "@ ++ # ++ vadd2\\t%0,%1,0 ++ ldd%U1%V1\\t%0,%1 ++ std%U0%V0\\t%1,%0" ++ "&& reload_completed && arc_split_move_p (operands)" + [(const_int 0)] + { + arc_split_move (operands); + DONE; + } +- [(set_attr "type" "move,multi,load,store") +- (set_attr "predicable" "no,no,no,no") +- (set_attr "iscompact" "false,false,false,false") +- ]) ++ [(set_attr "type" "move,move,load,store") ++ (set_attr "length" "16,8,16,16")]) + + (define_expand "movmisalign<mode>" + [(set (match_operand:VWH 0 "general_operand" "") +-- +2.16.2 + diff --git a/poky/meta/recipes-devtools/gcc/gcc/0039-arc-Fix-u-maddhisi-patterns.patch b/poky/meta/recipes-devtools/gcc/gcc/0039-arc-Fix-u-maddhisi-patterns.patch new file mode 100644 index 000000000..9c5a2b8b3 --- /dev/null +++ b/poky/meta/recipes-devtools/gcc/gcc/0039-arc-Fix-u-maddhisi-patterns.patch @@ -0,0 +1,127 @@ +From 4186b7e93be73f8d68dc0fcc00a4cc8cc83e99a8 Mon Sep 17 00:00:00 2001 +From: Claudiu Zissulescu <claziss@synopsys.com> +Date: Wed, 9 Jun 2021 12:12:57 +0300 +Subject: [PATCH] arc: Fix (u)maddhisi patterns + +Rework the (u)maddhisi4 patterns and use VMAC2H(U) instruction instead +of the 64bit MAC(U) instruction. +This fixes the next execute.exp failures: + arith-rand-ll.c -O2 execution test + arith-rand-ll.c -O3 execution test + pr78726.c -O2 execution test + pr78726.c -O3 execution test + +gcc/ +2021-06-09 Claudiu Zissulescu <claziss@synopsys.com> + + * config/arc/arc.md (maddhisi4): Use VMAC2H instruction. + (machi): New pattern. + (umaddhisi4): Use VMAC2HU instruction. + (umachi): New pattern. + +Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=4186b7e93be73f8d68dc0fcc00a4cc8cc83e99a8] + +Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com> +(cherry picked from commit dd4778a59b4693777c732075021375e19eee6a76) +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + gcc/config/arc/arc.md | 66 ++++++++++++++++++++++++++++++++------------------- + 1 file changed, 41 insertions(+), 25 deletions(-) + +diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md +index 91a838a38e4..2a7e087ff72 100644 +--- a/gcc/config/arc/arc.md ++++ b/gcc/config/arc/arc.md +@@ -6053,48 +6053,64 @@ core_3, archs4x, archs4xd, archs4xd_slow" + + ;; MAC and DMPY instructions + +-; Use MAC instruction to emulate 16bit mac. ++; Use VMAC2H(U) instruction to emulate scalar 16bit mac. + (define_expand "maddhisi4" + [(match_operand:SI 0 "register_operand" "") + (match_operand:HI 1 "register_operand" "") + (match_operand:HI 2 "extend_operand" "") + (match_operand:SI 3 "register_operand" "")] +- "TARGET_PLUS_DMPY" ++ "TARGET_PLUS_MACD" + "{ +- rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST); +- rtx tmp1 = gen_reg_rtx (SImode); +- rtx tmp2 = gen_reg_rtx (SImode); +- rtx accl = gen_lowpart (SImode, acc_reg); +- +- emit_move_insn (accl, operands[3]); +- emit_insn (gen_rtx_SET (tmp1, gen_rtx_SIGN_EXTEND (SImode, operands[1]))); +- emit_insn (gen_rtx_SET (tmp2, gen_rtx_SIGN_EXTEND (SImode, operands[2]))); +- emit_insn (gen_mac (tmp1, tmp2)); +- emit_move_insn (operands[0], accl); ++ rtx acc_reg = gen_rtx_REG (SImode, ACC_REG_FIRST); ++ ++ emit_move_insn (acc_reg, operands[3]); ++ emit_insn (gen_machi (operands[1], operands[2])); ++ emit_move_insn (operands[0], acc_reg); + DONE; + }") + +-; The same for the unsigned variant, but using MACU instruction. ++(define_insn "machi" ++ [(set (reg:SI ARCV2_ACC) ++ (plus:SI ++ (mult:SI (sign_extend:SI (match_operand:HI 0 "register_operand" "%r")) ++ (sign_extend:SI (match_operand:HI 1 "register_operand" "r"))) ++ (reg:SI ARCV2_ACC)))] ++ "TARGET_PLUS_MACD" ++ "vmac2h\\t0,%0,%1" ++ [(set_attr "length" "4") ++ (set_attr "type" "multi") ++ (set_attr "predicable" "no") ++ (set_attr "cond" "nocond")]) ++ ++; The same for the unsigned variant, but using VMAC2HU instruction. + (define_expand "umaddhisi4" + [(match_operand:SI 0 "register_operand" "") + (match_operand:HI 1 "register_operand" "") +- (match_operand:HI 2 "extend_operand" "") ++ (match_operand:HI 2 "register_operand" "") + (match_operand:SI 3 "register_operand" "")] +- "TARGET_PLUS_DMPY" ++ "TARGET_PLUS_MACD" + "{ +- rtx acc_reg = gen_rtx_REG (DImode, ACC_REG_FIRST); +- rtx tmp1 = gen_reg_rtx (SImode); +- rtx tmp2 = gen_reg_rtx (SImode); +- rtx accl = gen_lowpart (SImode, acc_reg); +- +- emit_move_insn (accl, operands[3]); +- emit_insn (gen_rtx_SET (tmp1, gen_rtx_ZERO_EXTEND (SImode, operands[1]))); +- emit_insn (gen_rtx_SET (tmp2, gen_rtx_ZERO_EXTEND (SImode, operands[2]))); +- emit_insn (gen_macu (tmp1, tmp2)); +- emit_move_insn (operands[0], accl); ++ rtx acc_reg = gen_rtx_REG (SImode, ACC_REG_FIRST); ++ ++ emit_move_insn (acc_reg, operands[3]); ++ emit_insn (gen_umachi (operands[1], operands[2])); ++ emit_move_insn (operands[0], acc_reg); + DONE; + }") + ++(define_insn "umachi" ++ [(set (reg:SI ARCV2_ACC) ++ (plus:SI ++ (mult:SI (zero_extend:SI (match_operand:HI 0 "register_operand" "%r")) ++ (zero_extend:SI (match_operand:HI 1 "register_operand" "r"))) ++ (reg:SI ARCV2_ACC)))] ++ "TARGET_PLUS_MACD" ++ "vmac2hu\\t0,%0,%1" ++ [(set_attr "length" "4") ++ (set_attr "type" "multi") ++ (set_attr "predicable" "no") ++ (set_attr "cond" "nocond")]) ++ + (define_expand "maddsidi4" + [(match_operand:DI 0 "register_operand" "") + (match_operand:SI 1 "register_operand" "") +-- +2.16.2 + diff --git a/poky/meta/recipes-devtools/gcc/gcc/0040-arc-Update-doloop_end-patterns.patch b/poky/meta/recipes-devtools/gcc/gcc/0040-arc-Update-doloop_end-patterns.patch new file mode 100644 index 000000000..5f0bf8df8 --- /dev/null +++ b/poky/meta/recipes-devtools/gcc/gcc/0040-arc-Update-doloop_end-patterns.patch @@ -0,0 +1,105 @@ +From 5a9b6a004f89fdd95b0470e1324dc4dee8c41d24 Mon Sep 17 00:00:00 2001 +From: Claudiu Zissulescu <claziss@synopsys.com> +Date: Wed, 9 Jun 2021 12:12:57 +0300 +Subject: [PATCH] arc: Update doloop_end patterns + +ARC processor can use LP instruction to implement zero overlay loops. +The current inplementation doesn't handle the unlikely situation when +the loop iterator is located in memory. Refurbish the loop_end insn +pattern into a define_insn_and_split pattern. + +gcc/ +2021-07-09 Claudiu Zissulescu <claziss@synopsys.com> + + * config/arc/arc.md (loop_end): Change it to + define_insn_and_split. + +Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5a9b6a004f89fdd95b0470e1324dc4dee8c41d24] + +Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com> +(cherry picked from commit 174e75a210753b68de0f2c398a13ace0f512e35b) +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + gcc/config/arc/arc.md | 46 ++++++++++++++++++++-------------------------- + 1 file changed, 20 insertions(+), 26 deletions(-) + +diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md +index 2a7e087ff72..d704044c13f 100644 +--- a/gcc/config/arc/arc.md ++++ b/gcc/config/arc/arc.md +@@ -4986,7 +4986,7 @@ core_3, archs4x, archs4xd, archs4xd_slow" + (define_expand "doloop_end" + [(parallel [(set (pc) + (if_then_else +- (ne (match_operand 0 "" "") ++ (ne (match_operand 0 "nonimmediate_operand") + (const_int 1)) + (label_ref (match_operand 1 "" "")) + (pc))) +@@ -5012,44 +5012,38 @@ core_3, archs4x, archs4xd, archs4xd_slow" + + ;; if by any chance the lp_count is not used, then use an 'r' + ;; register, instead of going to memory. +-(define_insn "loop_end" +- [(set (pc) +- (if_then_else (ne (match_operand:SI 2 "nonimmediate_operand" "0,m") +- (const_int 1)) +- (label_ref (match_operand 1 "" "")) +- (pc))) +- (set (match_operand:SI 0 "nonimmediate_operand" "=r,m") +- (plus (match_dup 2) (const_int -1))) +- (unspec [(const_int 0)] UNSPEC_ARC_LP) +- (clobber (match_scratch:SI 3 "=X,&r"))] +- "" +- "; ZOL_END, begins @%l1" +- [(set_attr "length" "0") +- (set_attr "predicable" "no") +- (set_attr "type" "loop_end")]) +- + ;; split pattern for the very slim chance when the loop register is + ;; memory. +-(define_split ++(define_insn_and_split "loop_end" + [(set (pc) +- (if_then_else (ne (match_operand:SI 0 "memory_operand") ++ (if_then_else (ne (match_operand:SI 0 "nonimmediate_operand" "+r,!m") + (const_int 1)) +- (label_ref (match_operand 1 "")) ++ (label_ref (match_operand 1 "" "")) + (pc))) + (set (match_dup 0) (plus (match_dup 0) (const_int -1))) + (unspec [(const_int 0)] UNSPEC_ARC_LP) +- (clobber (match_scratch:SI 2))] +- "memory_operand (operands[0], SImode)" ++ (clobber (match_scratch:SI 2 "=X,&r"))] ++ "" ++ "@ ++ ; ZOL_END, begins @%l1 ++ #" ++ "reload_completed && memory_operand (operands[0], Pmode)" + [(set (match_dup 2) (match_dup 0)) +- (set (match_dup 2) (plus:SI (match_dup 2) (const_int -1))) ++ (parallel ++ [(set (reg:CC_ZN CC_REG) ++ (compare:CC_ZN (plus:SI (match_dup 2) (const_int -1)) ++ (const_int 0))) ++ (set (match_dup 2) (plus:SI (match_dup 2) (const_int -1)))]) + (set (match_dup 0) (match_dup 2)) +- (set (reg:CC CC_REG) (compare:CC (match_dup 2) (const_int 0))) + (set (pc) +- (if_then_else (ne (reg:CC CC_REG) ++ (if_then_else (ne (reg:CC_ZN CC_REG) + (const_int 0)) + (label_ref (match_dup 1)) + (pc)))] +- "") ++ "" ++ [(set_attr "length" "0,24") ++ (set_attr "predicable" "no") ++ (set_attr "type" "loop_end")]) + + (define_insn "loop_fail" + [(set (reg:SI LP_COUNT) +-- +2.16.2 + diff --git a/poky/meta/recipes-devtools/gcc/gcc_10.2.bb b/poky/meta/recipes-devtools/gcc/gcc_11.1.bb index 7d9359058..7d9359058 100644 --- a/poky/meta/recipes-devtools/gcc/gcc_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/gcc_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/libgcc-initial_10.2.bb b/poky/meta/recipes-devtools/gcc/libgcc-initial_11.1.bb index 0c698c26e..0c698c26e 100644 --- a/poky/meta/recipes-devtools/gcc/libgcc-initial_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/libgcc-initial_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/libgcc_10.2.bb b/poky/meta/recipes-devtools/gcc/libgcc_11.1.bb index ea210a113..ea210a113 100644 --- a/poky/meta/recipes-devtools/gcc/libgcc_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/libgcc_11.1.bb diff --git a/poky/meta/recipes-devtools/gcc/libgfortran_10.2.bb b/poky/meta/recipes-devtools/gcc/libgfortran_11.1.bb index 71dd8b4bd..71dd8b4bd 100644 --- a/poky/meta/recipes-devtools/gcc/libgfortran_10.2.bb +++ b/poky/meta/recipes-devtools/gcc/libgfortran_11.1.bb diff --git a/poky/meta/recipes-devtools/gdb/gdb-10.1.inc b/poky/meta/recipes-devtools/gdb/gdb-10.2.inc index 07de17f84..0d275075e 100644 --- a/poky/meta/recipes-devtools/gdb/gdb-10.1.inc +++ b/poky/meta/recipes-devtools/gdb/gdb-10.2.inc @@ -15,5 +15,9 @@ SRC_URI = "${GNU_MIRROR}/gdb/gdb-${PV}.tar.xz \ file://0009-resolve-restrict-keyword-conflict.patch \ file://0010-Fix-invalid-sigprocmask-call.patch \ file://0011-gdbserver-ctrl-c-handling.patch \ + file://0012-arc-Add-support-for-signal-handlers.patch \ + file://0013-arc-Add-support-for-signal-frames-for-Linux-targets.patch \ + file://0014-arc-Take-into-account-the-REGNUM-in-supply-collect-g.patch \ + file://0015-gdb-Add-native-support-for-ARC-in-GNU-Linux.patch \ " -SRC_URI[sha256sum] = "f82f1eceeec14a3afa2de8d9b0d3c91d5a3820e23e0a01bbb70ef9f0276b62c0" +SRC_URI[sha256sum] = "aaa1223d534c9b700a8bec952d9748ee1977513f178727e1bee520ee000b4f29" diff --git a/poky/meta/recipes-devtools/gdb/gdb-common.inc b/poky/meta/recipes-devtools/gdb/gdb-common.inc index 6e0455203..a2a6364da 100644 --- a/poky/meta/recipes-devtools/gdb/gdb-common.inc +++ b/poky/meta/recipes-devtools/gdb/gdb-common.inc @@ -29,7 +29,7 @@ EXTRA_OECONF = "--disable-gdbtk --disable-x --disable-werror \ --disable-gprof \ " -PACKAGECONFIG ??= "readline" +PACKAGECONFIG ??= "readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" # Use --without-system-readline to compile with readline 5. PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,readline" PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,python3,python3 python3-codecs" diff --git a/poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc b/poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc index c9daf25a4..edb05b6f1 100644 --- a/poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc +++ b/poky/meta/recipes-devtools/gdb/gdb-cross-canadian.inc @@ -11,12 +11,13 @@ DEPENDS = "nativesdk-ncurses nativesdk-expat nativesdk-gettext \ GDBPROPREFIX = "--program-prefix='${TARGET_PREFIX}'" # Overrides PACKAGECONFIG variables in gdb-common.inc -PACKAGECONFIG ??= "python readline" +PACKAGECONFIG ??= "python readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,nativesdk-python3, \ nativesdk-python3-core \ nativesdk-python3-codecs nativesdk-python3-netclient \ " PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,nativesdk-readline" +PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, nativesdk-elfutils" SSTATE_DUPWHITELIST += "${STAGING_DATADIR}/gdb" diff --git a/poky/meta/recipes-devtools/gdb/gdb-cross-canadian_10.1.bb b/poky/meta/recipes-devtools/gdb/gdb-cross-canadian_10.2.bb index 301035940..301035940 100644 --- a/poky/meta/recipes-devtools/gdb/gdb-cross-canadian_10.1.bb +++ b/poky/meta/recipes-devtools/gdb/gdb-cross-canadian_10.2.bb diff --git a/poky/meta/recipes-devtools/gdb/gdb-cross.inc b/poky/meta/recipes-devtools/gdb/gdb-cross.inc index ebe329f6d..f8a113da8 100644 --- a/poky/meta/recipes-devtools/gdb/gdb-cross.inc +++ b/poky/meta/recipes-devtools/gdb/gdb-cross.inc @@ -5,9 +5,10 @@ DEPENDS = "expat-native ncurses-native flex-native bison-native" inherit python3native # Overrides PACKAGECONFIG variables in gdb-common.inc -PACKAGECONFIG ??= "python readline" +PACKAGECONFIG ??= "python readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3-native" PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,readline-native" +PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, elfutils-native" do_compile_prepend() { export STAGING_LIBDIR="${STAGING_LIBDIR_NATIVE}" diff --git a/poky/meta/recipes-devtools/gdb/gdb-cross_10.1.bb b/poky/meta/recipes-devtools/gdb/gdb-cross_10.2.bb index 50cf159fd..50cf159fd 100644 --- a/poky/meta/recipes-devtools/gdb/gdb-cross_10.1.bb +++ b/poky/meta/recipes-devtools/gdb/gdb-cross_10.2.bb diff --git a/poky/meta/recipes-devtools/gdb/gdb/0012-arc-Add-support-for-signal-handlers.patch b/poky/meta/recipes-devtools/gdb/gdb/0012-arc-Add-support-for-signal-handlers.patch new file mode 100644 index 000000000..6a98b6576 --- /dev/null +++ b/poky/meta/recipes-devtools/gdb/gdb/0012-arc-Add-support-for-signal-handlers.patch @@ -0,0 +1,218 @@ +From bfee93403b46ae4f050282b7721ba39073905c69 Mon Sep 17 00:00:00 2001 +From: Anton Kolesov <Anton.Kolesov@synopsys.com> +Date: Mon, 22 Aug 2016 19:39:46 +0300 +Subject: [PATCH 1/4] arc: Add support for signal handlers + +This patch adds the necessary infrastructure to handle signal frames for +ARC architecture. It is fairly similar to what any other architecture +would have. Linux specific parts will be in a separate patch. + +v2 [1]: +- Make the logic of "arc_sigtramp_frame_sniffer ()" simpler. + +[1] Tom's remark for the first version +https://sourceware.org/pipermail/gdb-patches/2020-November/173221.html + +gdb/ChangeLog: + + * arc-tdep.c (arc_make_sigtramp_frame_cache): New function. + (arc_sigtramp_frame_this_id): Likewise. + (arc_sigtramp_frame_prev_register): Likewise. + (arc_sigtramp_frame_sniffer): Likewise. + (arc_siftramp_frame_unwind): New global variable. + (arc_gdbarch_init): Use sigtramp capabilities. + (arc_dump_tdep): Print sigtramp fields. + * arc-tdep.h (gdbarch_tdep): Add sigtramp fields. + +Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=b4e3cd0440109d0a5552d3313ccbd35c8103335b] + +Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> +Signed-off-by: Shahab Vahedi <shahab@synopsys.com> +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + gdb/arc-tdep.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gdb/arc-tdep.h | 13 ++++++ + 2 files changed, 136 insertions(+) + +diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c +index 93e2fd88a9a..3356252525d 100644 +--- a/gdb/arc-tdep.c ++++ b/gdb/arc-tdep.c +@@ -1843,6 +1843,104 @@ arc_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, + reg->how = DWARF2_FRAME_REG_CFA; + } + ++/* Signal trampoline frame unwinder. Allows frame unwinding to happen ++ from within signal handlers. */ ++ ++static struct arc_frame_cache * ++arc_make_sigtramp_frame_cache (struct frame_info *this_frame) ++{ ++ if (arc_debug) ++ debug_printf ("arc: sigtramp_frame_cache\n"); ++ ++ struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame)); ++ ++ /* Allocate new frame cache instance and space for saved register info. */ ++ struct arc_frame_cache *cache = FRAME_OBSTACK_ZALLOC (struct arc_frame_cache); ++ cache->saved_regs = trad_frame_alloc_saved_regs (this_frame); ++ ++ /* Get the stack pointer and use it as the frame base. */ ++ cache->prev_sp = arc_frame_base_address (this_frame, NULL); ++ ++ /* If the ARC-private target-dependent info doesn't have a table of ++ offsets of saved register contents within an OS signal context ++ structure, then there is nothing to analyze. */ ++ if (tdep->sc_reg_offset == NULL) ++ return cache; ++ ++ /* Find the address of the sigcontext structure. */ ++ CORE_ADDR addr = tdep->sigcontext_addr (this_frame); ++ ++ /* For each register, if its contents have been saved within the ++ sigcontext structure, determine the address of those contents. */ ++ gdb_assert (tdep->sc_num_regs <= (ARC_LAST_REGNUM + 1)); ++ for (int i = 0; i < tdep->sc_num_regs; i++) ++ { ++ if (tdep->sc_reg_offset[i] != ARC_OFFSET_NO_REGISTER) ++ cache->saved_regs[i].addr = addr + tdep->sc_reg_offset[i]; ++ } ++ ++ return cache; ++} ++ ++/* Implement the "this_id" frame_unwind method for signal trampoline ++ frames. */ ++ ++static void ++arc_sigtramp_frame_this_id (struct frame_info *this_frame, ++ void **this_cache, struct frame_id *this_id) ++{ ++ if (arc_debug) ++ debug_printf ("arc: sigtramp_frame_this_id\n"); ++ ++ if (*this_cache == NULL) ++ *this_cache = arc_make_sigtramp_frame_cache (this_frame); ++ ++ struct gdbarch *gdbarch = get_frame_arch (this_frame); ++ struct arc_frame_cache *cache = (struct arc_frame_cache *) *this_cache; ++ CORE_ADDR stack_addr = cache->prev_sp; ++ CORE_ADDR code_addr ++ = get_frame_register_unsigned (this_frame, gdbarch_pc_regnum (gdbarch)); ++ *this_id = frame_id_build (stack_addr, code_addr); ++} ++ ++/* Get a register from a signal handler frame. */ ++ ++static struct value * ++arc_sigtramp_frame_prev_register (struct frame_info *this_frame, ++ void **this_cache, int regnum) ++{ ++ if (arc_debug) ++ debug_printf ("arc: sigtramp_frame_prev_register (regnum = %d)\n", regnum); ++ ++ /* Make sure we've initialized the cache. */ ++ if (*this_cache == NULL) ++ *this_cache = arc_make_sigtramp_frame_cache (this_frame); ++ ++ struct arc_frame_cache *cache = (struct arc_frame_cache *) *this_cache; ++ return trad_frame_get_prev_register (this_frame, cache->saved_regs, regnum); ++} ++ ++/* Frame sniffer for signal handler frame. Only recognize a frame if we ++ have a sigcontext_addr handler in the target dependency. */ ++ ++static int ++arc_sigtramp_frame_sniffer (const struct frame_unwind *self, ++ struct frame_info *this_frame, ++ void **this_cache) ++{ ++ struct gdbarch_tdep *tdep; ++ ++ if (arc_debug) ++ debug_printf ("arc: sigtramp_frame_sniffer\n"); ++ ++ tdep = gdbarch_tdep (get_frame_arch (this_frame)); ++ ++ /* If we have a sigcontext_addr handler, then just return 1 (same as the ++ "default_frame_sniffer ()"). */ ++ return (tdep->sigcontext_addr != NULL && tdep->is_sigtramp != NULL ++ && tdep->is_sigtramp (this_frame)); ++} ++ + /* Structure defining the ARC ordinary frame unwind functions. Since we are + the fallback unwinder, we use the default frame sniffer, which always + accepts the frame. */ +@@ -1858,6 +1956,21 @@ static const struct frame_unwind arc_frame_unwind = { + NULL + }; + ++/* Structure defining the ARC signal frame unwind functions. Custom ++ sniffer is used, because this frame must be accepted only in the right ++ context. */ ++ ++static const struct frame_unwind arc_sigtramp_frame_unwind = { ++ SIGTRAMP_FRAME, ++ default_frame_unwind_stop_reason, ++ arc_sigtramp_frame_this_id, ++ arc_sigtramp_frame_prev_register, ++ NULL, ++ arc_sigtramp_frame_sniffer, ++ NULL, ++ NULL ++}; ++ + + static const struct frame_base arc_normal_base = { + &arc_frame_unwind, +@@ -2272,6 +2385,7 @@ arc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) + /* Frame unwinders and sniffers. */ + dwarf2_frame_set_init_reg (gdbarch, arc_dwarf2_frame_init_reg); + dwarf2_append_unwinders (gdbarch); ++ frame_unwind_append_unwinder (gdbarch, &arc_sigtramp_frame_unwind); + frame_unwind_append_unwinder (gdbarch, &arc_frame_unwind); + frame_base_set_default (gdbarch, &arc_normal_base); + +@@ -2350,6 +2464,15 @@ arc_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file) + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + fprintf_unfiltered (file, "arc_dump_tdep: jb_pc = %i\n", tdep->jb_pc); ++ ++ fprintf_unfiltered (file, "arc_dump_tdep: is_sigtramp = <%s>\n", ++ host_address_to_string (tdep->is_sigtramp)); ++ fprintf_unfiltered (file, "arc_dump_tdep: sigcontext_addr = <%s>\n", ++ host_address_to_string (tdep->sigcontext_addr)); ++ fprintf_unfiltered (file, "arc_dump_tdep: sc_reg_offset = <%s>\n", ++ host_address_to_string (tdep->sc_reg_offset)); ++ fprintf_unfiltered (file, "arc_dump_tdep: sc_num_regs = %d\n", ++ tdep->sc_num_regs); + } + + /* This command accepts single argument - address of instruction to +diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h +index 50b14905134..70fc3d95c48 100644 +--- a/gdb/arc-tdep.h ++++ b/gdb/arc-tdep.h +@@ -124,6 +124,19 @@ struct gdbarch_tdep + + /* Whether target has hardware (aka zero-delay) loops. */ + bool has_hw_loops; ++ ++ /* Detect sigtramp. */ ++ bool (*is_sigtramp) (struct frame_info *); ++ ++ /* Get address of sigcontext for sigtramp. */ ++ CORE_ADDR (*sigcontext_addr) (struct frame_info *); ++ ++ /* Offset of registers in `struct sigcontext'. */ ++ const int *sc_reg_offset; ++ ++ /* Number of registers in sc_reg_offsets. Most likely a ARC_LAST_REGNUM, ++ but in theory it could be less, so it is kept separate. */ ++ int sc_num_regs; + }; + + /* Utility functions used by other ARC-specific modules. */ +-- +2.16.2 + diff --git a/poky/meta/recipes-devtools/gdb/gdb/0013-arc-Add-support-for-signal-frames-for-Linux-targets.patch b/poky/meta/recipes-devtools/gdb/gdb/0013-arc-Add-support-for-signal-frames-for-Linux-targets.patch new file mode 100644 index 000000000..f699a5888 --- /dev/null +++ b/poky/meta/recipes-devtools/gdb/gdb/0013-arc-Add-support-for-signal-frames-for-Linux-targets.patch @@ -0,0 +1,232 @@ +From 16ddc17b4f403a38701e0108b02aff967900cc66 Mon Sep 17 00:00:00 2001 +From: Anton Kolesov <Anton.Kolesov@synopsys.com> +Date: Thu, 22 Dec 2016 21:52:16 +0300 +Subject: [PATCH 2/4] arc: Add support for signal frames for Linux targets + +Implement functions needed to unwind signal frames on ARC Linux targets. + +gdb/ChangeLog + + * arc-linux-tdep.c (arc_linux_sc_reg_offsets): New static variable. + (arc_linux_is_sigtramp): New function. + (arc_linux_sigcontext_addr): Likewise. + (arc_linux_init_osabi): Use them. + +Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=d4af727286e3a9f177ba11677fbd3a012d36558a] + +Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> +Signed-off-by: Shahab Vahedi <shahab@synopsys.com> +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + gdb/arc-linux-tdep.c | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 181 insertions(+) + +diff --git a/gdb/arc-linux-tdep.c b/gdb/arc-linux-tdep.c +index a7bace12623..17bb3e7b276 100644 +--- a/gdb/arc-linux-tdep.c ++++ b/gdb/arc-linux-tdep.c +@@ -33,6 +33,60 @@ + + #define REGOFF(offset) (offset * ARC_REGISTER_SIZE) + ++/* arc_linux_sc_reg_offsets[i] is the offset of register i in the `struct ++ sigcontext'. Array index is an internal GDB register number, as defined in ++ arc-tdep.h:arc_regnum. ++ ++ From <include/uapi/asm/sigcontext.h> and <include/uapi/asm/ptrace.h>. ++ ++ The layout of this struct is tightly bound to "arc_regnum" enum ++ in arc-tdep.h. Any change of order in there, must be reflected ++ here as well. */ ++static const int arc_linux_sc_reg_offsets[] = { ++ /* R0 - R12. */ ++ REGOFF (22), REGOFF (21), REGOFF (20), REGOFF (19), ++ REGOFF (18), REGOFF (17), REGOFF (16), REGOFF (15), ++ REGOFF (14), REGOFF (13), REGOFF (12), REGOFF (11), ++ REGOFF (10), ++ ++ /* R13 - R25. */ ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ++ ++ REGOFF (9), /* R26 (GP) */ ++ REGOFF (8), /* FP */ ++ REGOFF (23), /* SP */ ++ ARC_OFFSET_NO_REGISTER, /* ILINK */ ++ ARC_OFFSET_NO_REGISTER, /* R30 */ ++ REGOFF (7), /* BLINK */ ++ ++ /* R32 - R59. */ ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ++ ARC_OFFSET_NO_REGISTER, ++ ++ REGOFF (4), /* LP_COUNT */ ++ ARC_OFFSET_NO_REGISTER, /* RESERVED */ ++ ARC_OFFSET_NO_REGISTER, /* LIMM */ ++ ARC_OFFSET_NO_REGISTER, /* PCL */ ++ ++ REGOFF (6), /* PC */ ++ REGOFF (5), /* STATUS32 */ ++ REGOFF (2), /* LP_START */ ++ REGOFF (3), /* LP_END */ ++ REGOFF (1), /* BTA */ ++}; ++ + /* arc_linux_core_reg_offsets[i] is the offset in the .reg section of GDB + regnum i. Array index is an internal GDB register number, as defined in + arc-tdep.h:arc_regnum. +@@ -87,6 +141,127 @@ static const int arc_linux_core_reg_offsets[] = { + REGOFF (6) /* ERET */ + }; + ++/* Is THIS_FRAME a sigtramp function - the function that returns from ++ signal handler into normal execution flow? This is the case if the PC is ++ either at the start of, or in the middle of the two instructions: ++ ++ mov r8, __NR_rt_sigreturn ; __NR_rt_sigreturn == 139 ++ trap_s 0 ; `swi' for ARC700 ++ ++ On ARC uClibc Linux this function is called __default_rt_sa_restorer. ++ ++ Returns TRUE if this is a sigtramp frame. */ ++ ++static bool ++arc_linux_is_sigtramp (struct frame_info *this_frame) ++{ ++ struct gdbarch *gdbarch = get_frame_arch (this_frame); ++ CORE_ADDR pc = get_frame_pc (this_frame); ++ ++ if (arc_debug) ++ { ++ debug_printf ("arc-linux: arc_linux_is_sigtramp, pc=%s\n", ++ paddress(gdbarch, pc)); ++ } ++ ++ static const gdb_byte insns_be_hs[] = { ++ 0x20, 0x8a, 0x12, 0xc2, /* mov r8,nr_rt_sigreturn */ ++ 0x78, 0x1e /* trap_s 0 */ ++ }; ++ static const gdb_byte insns_be_700[] = { ++ 0x20, 0x8a, 0x12, 0xc2, /* mov r8,nr_rt_sigreturn */ ++ 0x22, 0x6f, 0x00, 0x3f /* swi */ ++ }; ++ ++ gdb_byte arc_sigtramp_insns[sizeof (insns_be_700)]; ++ size_t insns_sz; ++ if (arc_mach_is_arcv2 (gdbarch)) ++ { ++ insns_sz = sizeof (insns_be_hs); ++ memcpy (arc_sigtramp_insns, insns_be_hs, insns_sz); ++ } ++ else ++ { ++ insns_sz = sizeof (insns_be_700); ++ memcpy (arc_sigtramp_insns, insns_be_700, insns_sz); ++ } ++ if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_LITTLE) ++ { ++ /* On little endian targets, ARC code section is in what is called ++ "middle endian", where half-words are in the big-endian order, ++ only bytes inside the halfwords are in the little endian order. ++ As a result it is very easy to convert big endian instruction to ++ little endian, since it is needed to swap bytes in the halfwords, ++ so there is no need to have information on whether that is a ++ 4-byte instruction or 2-byte. */ ++ gdb_assert ((insns_sz % 2) == 0); ++ for (int i = 0; i < insns_sz; i += 2) ++ std::swap (arc_sigtramp_insns[i], arc_sigtramp_insns[i+1]); ++ } ++ ++ gdb_byte buf[insns_sz]; ++ ++ /* Read the memory at the PC. Since we are stopped, any breakpoint must ++ have been removed. */ ++ if (!safe_frame_unwind_memory (this_frame, pc, buf, insns_sz)) ++ { ++ /* Failed to unwind frame. */ ++ return FALSE; ++ } ++ ++ /* Is that code the sigtramp instruction sequence? */ ++ if (memcmp (buf, arc_sigtramp_insns, insns_sz) == 0) ++ return TRUE; ++ ++ /* No - look one instruction earlier in the code... */ ++ if (!safe_frame_unwind_memory (this_frame, pc - 4, buf, insns_sz)) ++ { ++ /* Failed to unwind frame. */ ++ return FALSE; ++ } ++ ++ return (memcmp (buf, arc_sigtramp_insns, insns_sz) == 0); ++} ++ ++/* Get sigcontext structure of sigtramp frame - it contains saved ++ registers of interrupted frame. ++ ++ Stack pointer points to the rt_sigframe structure, and sigcontext can ++ be found as in: ++ ++ struct rt_sigframe { ++ struct siginfo info; ++ struct ucontext uc; ++ ... ++ }; ++ ++ struct ucontext { ++ unsigned long uc_flags; ++ struct ucontext *uc_link; ++ stack_t uc_stack; ++ struct sigcontext uc_mcontext; ++ sigset_t uc_sigmask; ++ }; ++ ++ sizeof (struct siginfo) == 0x80 ++ offsetof (struct ucontext, uc_mcontext) == 0x14 ++ ++ GDB cannot include linux headers and use offsetof () because those are ++ target headers and GDB might be built for a different run host. There ++ doesn't seem to be an established mechanism to figure out those offsets ++ via gdbserver, so the only way is to hardcode values in the GDB, ++ meaning that GDB will be broken if values will change. That seems to ++ be a very unlikely scenario and other arches (aarch64, alpha, amd64, ++ etc) in GDB hardcode values. */ ++ ++static CORE_ADDR ++arc_linux_sigcontext_addr (struct frame_info *this_frame) ++{ ++ const int ucontext_offset = 0x80; ++ const int sigcontext_offset = 0x14; ++ return get_frame_sp (this_frame) + ucontext_offset + sigcontext_offset; ++} ++ + /* Implement the "cannot_fetch_register" gdbarch method. */ + + static int +@@ -504,6 +679,12 @@ arc_linux_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch) + if (arc_debug) + debug_printf ("arc-linux: GNU/Linux OS/ABI initialization.\n"); + ++ /* Fill in target-dependent info in ARC-private structure. */ ++ tdep->is_sigtramp = arc_linux_is_sigtramp; ++ tdep->sigcontext_addr = arc_linux_sigcontext_addr; ++ tdep->sc_reg_offset = arc_linux_sc_reg_offsets; ++ tdep->sc_num_regs = ARRAY_SIZE (arc_linux_sc_reg_offsets); ++ + /* If we are using Linux, we have in uClibc + (libc/sysdeps/linux/arc/bits/setjmp.h): + +-- +2.16.2 + diff --git a/poky/meta/recipes-devtools/gdb/gdb/0014-arc-Take-into-account-the-REGNUM-in-supply-collect-g.patch b/poky/meta/recipes-devtools/gdb/gdb/0014-arc-Take-into-account-the-REGNUM-in-supply-collect-g.patch new file mode 100644 index 000000000..a7256065c --- /dev/null +++ b/poky/meta/recipes-devtools/gdb/gdb/0014-arc-Take-into-account-the-REGNUM-in-supply-collect-g.patch @@ -0,0 +1,104 @@ +From 5eb97d5e92ad23ee81cebc1ebd5eafe0aa55fc17 Mon Sep 17 00:00:00 2001 +From: Shahab Vahedi <shahab@synopsys.com> +Date: Tue, 10 Nov 2020 19:34:57 +0100 +Subject: [PATCH 3/4] arc: Take into account the REGNUM in supply/collect gdb + hooks + +All the arc_linux_supply_*() target operations and the +arc_linux_collect_v2_regset() in arc-linux-tdep.c were +supplying/collecting all the registers in regcache as if the +REGNUM was set to -1. + +The more efficient behavior is to examine the REGNUM and act +accordingly. That is what this patch does. + +gdb/ChangeLog: + + * arc-linux-tdep.c (supply_register): New. + (arc_linux_supply_gregset, arc_linux_supply_v2_regset, + arc_linux_collect_v2_regset): Consider REGNUM. + +Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=46023bbe81355230b4e7b76d3084337823d02362] + +Signed-off-by: Shahab Vahedi <shahab@synopsys.com> +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + gdb/arc-linux-tdep.c | 41 ++++++++++++++++++++++++++++++++--------- + 1 file changed, 32 insertions(+), 9 deletions(-) + +diff --git a/gdb/arc-linux-tdep.c b/gdb/arc-linux-tdep.c +index 17bb3e7b276..e83d82b6f5c 100644 +--- a/gdb/arc-linux-tdep.c ++++ b/gdb/arc-linux-tdep.c +@@ -535,6 +535,18 @@ arc_linux_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc) + } + } + ++/* Populate REGCACHE with register REGNUM from BUF. */ ++ ++static void ++supply_register (struct regcache *regcache, int regnum, const gdb_byte *buf) ++{ ++ /* Skip non-existing registers. */ ++ if ((arc_linux_core_reg_offsets[regnum] == ARC_OFFSET_NO_REGISTER)) ++ return; ++ ++ regcache->raw_supply (regnum, buf + arc_linux_core_reg_offsets[regnum]); ++} ++ + void + arc_linux_supply_gregset (const struct regset *regset, + struct regcache *regcache, +@@ -545,9 +557,14 @@ arc_linux_supply_gregset (const struct regset *regset, + + const bfd_byte *buf = (const bfd_byte *) gregs; + +- for (int reg = 0; reg <= ARC_LAST_REGNUM; reg++) +- if (arc_linux_core_reg_offsets[reg] != ARC_OFFSET_NO_REGISTER) +- regcache->raw_supply (reg, buf + arc_linux_core_reg_offsets[reg]); ++ /* regnum == -1 means writing all the registers. */ ++ if (regnum == -1) ++ for (int reg = 0; reg <= ARC_LAST_REGNUM; reg++) ++ supply_register (regcache, reg, buf); ++ else if (regnum <= ARC_LAST_REGNUM) ++ supply_register (regcache, regnum, buf); ++ else ++ gdb_assert_not_reached ("Invalid regnum in arc_linux_supply_gregset."); + } + + void +@@ -558,9 +575,12 @@ arc_linux_supply_v2_regset (const struct regset *regset, + const bfd_byte *buf = (const bfd_byte *) v2_regs; + + /* user_regs_arcv2 is defined in linux arch/arc/include/uapi/asm/ptrace.h. */ +- regcache->raw_supply (ARC_R30_REGNUM, buf); +- regcache->raw_supply (ARC_R58_REGNUM, buf + REGOFF (1)); +- regcache->raw_supply (ARC_R59_REGNUM, buf + REGOFF (2)); ++ if (regnum == -1 || regnum == ARC_R30_REGNUM) ++ regcache->raw_supply (ARC_R30_REGNUM, buf); ++ if (regnum == -1 || regnum == ARC_R58_REGNUM) ++ regcache->raw_supply (ARC_R58_REGNUM, buf + REGOFF (1)); ++ if (regnum == -1 || regnum == ARC_R59_REGNUM) ++ regcache->raw_supply (ARC_R59_REGNUM, buf + REGOFF (2)); + } + + /* Populate BUF with register REGNUM from the REGCACHE. */ +@@ -618,9 +638,12 @@ arc_linux_collect_v2_regset (const struct regset *regset, + { + bfd_byte *buf = (bfd_byte *) v2_regs; + +- regcache->raw_collect (ARC_R30_REGNUM, buf); +- regcache->raw_collect (ARC_R58_REGNUM, buf + REGOFF (1)); +- regcache->raw_collect (ARC_R59_REGNUM, buf + REGOFF (2)); ++ if (regnum == -1 || regnum == ARC_R30_REGNUM) ++ regcache->raw_collect (ARC_R30_REGNUM, buf); ++ if (regnum == -1 || regnum == ARC_R58_REGNUM) ++ regcache->raw_collect (ARC_R58_REGNUM, buf + REGOFF (1)); ++ if (regnum == -1 || regnum == ARC_R59_REGNUM) ++ regcache->raw_collect (ARC_R59_REGNUM, buf + REGOFF (2)); + } + + /* Linux regset definitions. */ +-- +2.16.2 + diff --git a/poky/meta/recipes-devtools/gdb/gdb/0015-gdb-Add-native-support-for-ARC-in-GNU-Linux.patch b/poky/meta/recipes-devtools/gdb/gdb/0015-gdb-Add-native-support-for-ARC-in-GNU-Linux.patch new file mode 100644 index 000000000..31cf0b0be --- /dev/null +++ b/poky/meta/recipes-devtools/gdb/gdb/0015-gdb-Add-native-support-for-ARC-in-GNU-Linux.patch @@ -0,0 +1,414 @@ +From 32b366249fd42d74cbc4a91039431554ebadcfd0 Mon Sep 17 00:00:00 2001 +From: Anton Kolesov <anton.kolesov@synopsys.com> +Date: Fri, 14 Feb 2014 11:56:23 +0400 +Subject: [PATCH 4/4] gdb: Add native support for ARC in GNU/Linux + +With this patch in place it is possible to build a GDB that +can run on ARC (GNU/Linux) hosts for debugging ARC targets. + +The "arc-linux-nat.c" is a rather small one that mostly deals +with registers and a few thread related hooks. + +v2 [1]: +- Remove "void" from the input of "_initialize_arc_linux_nat ()" + +[1] Tom's remark after the first patch +https://sourceware.org/pipermail/gdb-patches/2020-November/173223.html + +gdb/ChangeLog: + + * Makefile.in (ALLDEPFILES): Add arc-linux-nat.c. + * configure.host (host to gdb names): Add arc*-*-linux*. + * configure.nat (gdb_host_cpu): Add arc. + * arc-linux-nat.c: New. + +Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=04c9f85efcd8df5fc482ce97c0104cc7dd5d19e6] + +Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> +Signed-off-by: Shahab Vahedi <shahab@synopsys.com> +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + gdb/Makefile.in | 1 + + gdb/arc-linux-nat.c | 320 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gdb/configure.host | 3 + + gdb/configure.nat | 4 + + 4 files changed, 328 insertions(+) + create mode 100644 gdb/arc-linux-nat.c + +diff --git a/gdb/Makefile.in b/gdb/Makefile.in +index ec371fc7e52..c76136907ae 100644 +--- a/gdb/Makefile.in ++++ b/gdb/Makefile.in +@@ -2136,6 +2136,7 @@ ALLDEPFILES = \ + amd64-obsd-tdep.c \ + amd64-sol2-tdep.c \ + amd64-tdep.c \ ++ arc-linux-nat.c \ + arc-tdep.c \ + arm.c \ + arm-bsd-tdep.c \ +diff --git a/gdb/arc-linux-nat.c b/gdb/arc-linux-nat.c +new file mode 100644 +index 00000000000..41301fd4fed +--- /dev/null ++++ b/gdb/arc-linux-nat.c +@@ -0,0 +1,320 @@ ++/* Native-dependent code for GNU/Linux ARC. ++ ++ Copyright 2020 Free Software Foundation, Inc. ++ ++ This file is part of GDB. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see <http://www.gnu.org/licenses/>. */ ++ ++#include "defs.h" ++#include "frame.h" ++#include "inferior.h" ++#include "gdbcore.h" ++#include "regcache.h" ++#include "gdbsupport/gdb_assert.h" ++#include "target.h" ++#include "linux-nat.h" ++#include "nat/gdb_ptrace.h" ++ ++#include <stdint.h> ++#include <sys/types.h> ++#include <sys/param.h> ++#include <signal.h> ++#include <sys/user.h> ++#include <sys/ioctl.h> ++#include "gdbsupport/gdb_wait.h" ++#include <fcntl.h> ++#include <sys/procfs.h> ++#include <linux/elf.h> ++ ++#include "gregset.h" ++#include "arc-tdep.h" ++#include "arc-linux-tdep.h" ++#include "arch/arc.h" ++ ++/* Defines ps_err_e, struct ps_prochandle. */ ++#include "gdb_proc_service.h" ++ ++/* Linux starting with 4.12 supports NT_ARC_V2 note type, which adds R30, ++ R58 and R59 registers, which are specific to ARC HS and aren't ++ available in ARC 700. */ ++#if defined (NT_ARC_V2) && defined (__ARCHS__) ++#define ARC_HAS_V2_REGSET ++#endif ++ ++class arc_linux_nat_target final : public linux_nat_target ++{ ++public: ++ /* Add ARC register access methods. */ ++ void fetch_registers (struct regcache *, int) override; ++ void store_registers (struct regcache *, int) override; ++ ++ const struct target_desc *read_description () override; ++ ++ /* Handle threads */ ++ void low_prepare_to_resume (struct lwp_info *lp) override; ++}; ++ ++static arc_linux_nat_target the_arc_linux_nat_target; ++ ++/* Read general registers from target process/thread (via ptrace) ++ into REGCACHE. */ ++ ++static void ++fetch_gregs (struct regcache *regcache, int regnum) ++{ ++ const int tid = get_ptrace_pid (regcache->ptid ()); ++ struct iovec iov; ++ gdb_gregset_t regs; ++ ++ iov.iov_base = ®s; ++ iov.iov_len = sizeof (gdb_gregset_t); ++ ++ if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, (void *) &iov) < 0) ++ perror_with_name (_("Couldn't get general registers")); ++ else ++ arc_linux_supply_gregset (NULL, regcache, regnum, ®s, 0); ++} ++ ++#ifdef ARC_HAS_V2_REGSET ++/* Read ARC v2 registers from target process/thread (via ptrace) ++ into REGCACHE. */ ++ ++static void ++fetch_v2_regs (struct regcache *regcache, int regnum) ++{ ++ const int tid = get_ptrace_pid (regcache->ptid ()); ++ struct iovec iov; ++ bfd_byte v2_buffer[ARC_LINUX_SIZEOF_V2_REGSET]; ++ ++ iov.iov_base = &v2_buffer; ++ iov.iov_len = ARC_LINUX_SIZEOF_V2_REGSET; ++ ++ if (ptrace (PTRACE_GETREGSET, tid, NT_ARC_V2, (void *) &iov) < 0) ++ perror_with_name (_("Couldn't get ARC HS registers")); ++ else ++ arc_linux_supply_v2_regset (NULL, regcache, regnum, v2_buffer, 0); ++} ++#endif ++ ++/* Store general registers from REGCACHE into the target process/thread. */ ++ ++static void ++store_gregs (const struct regcache *regcache, int regnum) ++{ ++ const int tid = get_ptrace_pid (regcache->ptid ()); ++ struct iovec iov; ++ gdb_gregset_t regs; ++ ++ iov.iov_base = ®s; ++ iov.iov_len = sizeof (gdb_gregset_t); ++ ++ if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, (void *) &iov) < 0) ++ perror_with_name (_("Couldn't get general registers")); ++ else ++ { ++ arc_linux_collect_gregset (NULL, regcache, regnum, regs, 0); ++ ++ if (ptrace (PTRACE_SETREGSET, tid, NT_PRSTATUS, (void *) &iov) < 0) ++ perror_with_name (_("Couldn't write general registers")); ++ } ++} ++ ++#ifdef ARC_HAS_V2_REGSET ++/* Store ARC v2 registers from REGCACHE into the target process/thread. */ ++ ++static void ++store_v2_regs (const struct regcache *regcache, int regnum) ++{ ++ const int tid = get_ptrace_pid (regcache->ptid ()); ++ struct iovec iov; ++ bfd_byte v2_buffer[ARC_LINUX_SIZEOF_V2_REGSET]; ++ ++ iov.iov_base = &v2_buffer; ++ iov.iov_len = ARC_LINUX_SIZEOF_V2_REGSET; ++ ++ if (ptrace (PTRACE_GETREGSET, tid, NT_ARC_V2, (void *) &iov) < 0) ++ perror_with_name (_("Couldn't get ARC HS registers")); ++ else ++ { ++ arc_linux_collect_v2_regset (NULL, regcache, regnum, v2_buffer, 0); ++ ++ if (ptrace (PTRACE_SETREGSET, tid, NT_ARC_V2, (void *) &iov) < 0) ++ perror_with_name (_("Couldn't write ARC HS registers")); ++ } ++} ++#endif ++ ++/* Target operation: Read REGNUM register (all registers if REGNUM == -1) ++ from target process into REGCACHE. */ ++ ++void ++arc_linux_nat_target::fetch_registers (struct regcache *regcache, int regnum) ++{ ++ ++ if (regnum == -1 || regnum <= ARC_LAST_REGNUM) ++ fetch_gregs (regcache, regnum); ++ ++#ifdef ARC_HAS_V2_REGSET ++ if (regnum == -1 ++ || regnum == ARC_R30_REGNUM ++ || regnum == ARC_R58_REGNUM ++ || regnum == ARC_R59_REGNUM) ++ fetch_v2_regs (regcache, regnum); ++#endif ++} ++ ++/* Target operation: Store REGNUM register (all registers if REGNUM == -1) ++ to the target process from REGCACHE. */ ++ ++void ++arc_linux_nat_target::store_registers (struct regcache *regcache, int regnum) ++{ ++ if (regnum == -1 || regnum <= ARC_LAST_REGNUM) ++ store_gregs (regcache, regnum); ++ ++#ifdef ARC_HAS_V2_REGSET ++ if (regnum == -1 ++ || regnum == ARC_R30_REGNUM ++ || regnum == ARC_R58_REGNUM ++ || regnum == ARC_R59_REGNUM) ++ store_v2_regs (regcache, regnum); ++#endif ++} ++ ++/* Copy general purpose register(s) from REGCACHE into regset GREGS. ++ This function is exported to proc-service.c */ ++ ++void ++fill_gregset (const struct regcache *regcache, ++ gdb_gregset_t *gregs, int regnum) ++{ ++ arc_linux_collect_gregset (NULL, regcache, regnum, gregs, 0); ++} ++ ++/* Copy all the general purpose registers from regset GREGS into REGCACHE. ++ This function is exported to proc-service.c. */ ++ ++void ++supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregs) ++{ ++ arc_linux_supply_gregset (NULL, regcache, -1, gregs, 0); ++} ++ ++/* ARC doesn't have separate FP registers. This function is exported ++ to proc-service.c. */ ++ ++void ++fill_fpregset (const struct regcache *regcache, ++ gdb_fpregset_t *fpregsetp, int regnum) ++{ ++ if (arc_debug) ++ debug_printf ("arc-linux-nat: fill_fpregset called."); ++ return; ++} ++ ++/* ARC doesn't have separate FP registers. This function is exported ++ to proc-service.c. */ ++ ++void ++supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp) ++{ ++ if (arc_debug) ++ debug_printf ("arc-linux-nat: supply_fpregset called."); ++ return; ++} ++ ++/* Implement the "read_description" method of linux_nat_target. */ ++ ++const struct target_desc * ++arc_linux_nat_target::read_description () ++{ ++ /* This is a native target, hence description is hardcoded. */ ++#ifdef __ARCHS__ ++ arc_arch_features features (4, ARC_ISA_ARCV2); ++#else ++ arc_arch_features features (4, ARC_ISA_ARCV1); ++#endif ++ return arc_lookup_target_description (features); ++} ++ ++/* As described in arc_linux_collect_gregset(), we need to write resume-PC ++ to ERET. However by default GDB for native targets doesn't write ++ registers if they haven't been changed. This is a callback called by ++ generic GDB, and in this callback we have to rewrite PC value so it ++ would force rewrite of register on target. It seems that the only ++ other arch that utilizes this hook is x86/x86-64 for HW breakpoint ++ support. But then, AFAIK no other arch has this stop_pc/eret ++ complexity. ++ ++ No better way was found, other than this fake write of register value, ++ to force GDB into writing register to target. Is there any? */ ++ ++void ++arc_linux_nat_target::low_prepare_to_resume (struct lwp_info *lwp) ++{ ++ /* When new processes and threads are created we do not have the address ++ space for them and calling get_thread_regcache will cause an internal ++ error in GDB. It looks like that checking for last_resume_kind is the ++ sensible way to determine processes for which we cannot get regcache. ++ Ultimately, a better way would be removing the need for ++ low_prepare_to_resume in the first place. */ ++ if (lwp->last_resume_kind == resume_stop) ++ return; ++ ++ struct regcache *regcache = get_thread_regcache (this, lwp->ptid); ++ struct gdbarch *gdbarch = regcache->arch (); ++ ++ /* Read current PC value, then write it back. It is required to call ++ invalidate(), otherwise GDB will note that new value is equal to old ++ value and will skip write. */ ++ ULONGEST new_pc; ++ regcache_cooked_read_unsigned (regcache, gdbarch_pc_regnum (gdbarch), ++ &new_pc); ++ regcache->invalidate (gdbarch_pc_regnum (gdbarch)); ++ regcache_cooked_write_unsigned (regcache, gdbarch_pc_regnum (gdbarch), ++ new_pc); ++} ++ ++/* Fetch the thread-local storage pointer for libthread_db. Note that ++ this function is not called from GDB, but is called from libthread_db. ++ This is required to debug multithreaded applications with NPTL. */ ++ ++ps_err_e ++ps_get_thread_area (struct ps_prochandle *ph, lwpid_t lwpid, int idx, ++ void **base) ++{ ++ if (arc_debug >= 2) ++ debug_printf ("arc-linux-nat: ps_get_thread_area called"); ++ ++ if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) ++ return PS_ERR; ++ ++ /* IDX is the bias from the thread pointer to the beginning of the ++ thread descriptor. It has to be subtracted due to implementation ++ quirks in libthread_db. */ ++ *base = (void *) ((char *) *base - idx); ++ ++ return PS_OK; ++} ++ ++/* Suppress warning from -Wmissing-prototypes. */ ++void _initialize_arc_linux_nat (); ++void ++_initialize_arc_linux_nat () ++{ ++ /* Register the target. */ ++ linux_target = &the_arc_linux_nat_target; ++ add_inf_child_target (&the_arc_linux_nat_target); ++} +diff --git a/gdb/configure.host b/gdb/configure.host +index ce528237291..e94a19b0332 100644 +--- a/gdb/configure.host ++++ b/gdb/configure.host +@@ -60,6 +60,7 @@ case "${host_cpu}" in + + aarch64*) gdb_host_cpu=aarch64 ;; + alpha*) gdb_host_cpu=alpha ;; ++arc*) gdb_host_cpu=arc ;; + arm*) gdb_host_cpu=arm ;; + hppa*) gdb_host_cpu=pa ;; + i[34567]86*) gdb_host_cpu=i386 ;; +@@ -91,6 +92,8 @@ alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu) + gdb_host=nbsd ;; + alpha*-*-openbsd*) gdb_host=nbsd ;; + ++arc*-*-linux*) gdb_host=linux ;; ++ + arm*-*-freebsd*) gdb_host=fbsd ;; + arm*-*-linux*) gdb_host=linux ;; + arm*-*-netbsdelf* | arm*-*-knetbsd*-gnu) +diff --git a/gdb/configure.nat b/gdb/configure.nat +index bb70e303384..cd11bc86dca 100644 +--- a/gdb/configure.nat ++++ b/gdb/configure.nat +@@ -238,6 +238,10 @@ case ${gdb_host} in + nat/aarch64-linux.o \ + nat/aarch64-sve-linux-ptrace.o" + ;; ++ arc) ++ # Host: ARC based machine running GNU/Linux ++ NATDEPFILES="${NATDEPFILES} arc-linux-nat.o" ++ ;; + arm) + # Host: ARM based machine running GNU/Linux + NATDEPFILES="${NATDEPFILES} arm-linux-nat.o \ +-- +2.16.2 + diff --git a/poky/meta/recipes-devtools/gdb/gdb_10.1.bb b/poky/meta/recipes-devtools/gdb/gdb_10.2.bb index d70757a15..d70757a15 100644 --- a/poky/meta/recipes-devtools/gdb/gdb_10.1.bb +++ b/poky/meta/recipes-devtools/gdb/gdb_10.2.bb diff --git a/poky/meta/recipes-devtools/git/git_2.31.1.bb b/poky/meta/recipes-devtools/git/git_2.32.0.bb index 6bfa1f7a1..f45737b09 100644 --- a/poky/meta/recipes-devtools/git/git_2.31.1.bb +++ b/poky/meta/recipes-devtools/git/git_2.32.0.bb @@ -5,5 +5,5 @@ EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \ " EXTRA_OEMAKE += "NO_GETTEXT=1" -SRC_URI[tarball.sha256sum] = "46d37c229e9d786510e0c53b60065704ce92d5aedc16f2c5111e3ed35093bfa7" -SRC_URI[manpages.sha256sum] = "d330498aaaea6928b0abbbbb896f6f605efd8d35f23cbbb2de38c87a737d4543" +SRC_URI[tarball.sha256sum] = "6038f06d396ba9dab2eee541c7db6e7f9f847f181ec62f3d8441893f8c469398" +SRC_URI[manpages.sha256sum] = "b5533c40ea1688231c0e2df51cc0d1c0272e17fe78a45ba6e60cb8f61fa4a53c" diff --git a/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb b/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb index c41177c72..8d7d6ac3e 100644 --- a/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb +++ b/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb @@ -9,8 +9,8 @@ DEPENDS_class-native = "hostperl-runtime-native" INHIBIT_DEFAULT_DEPS = "1" -SRCREV = "6faca61810d335c7837f320733fe8e15a1431fc2" -PV = "20210125+git${SRCPV}" +SRCREV = "92fac9b5ceb9f111a04d7f8f98831570e77886c6" +PV = "20210522+git${SRCPV}" SRC_URI = "git://git.savannah.gnu.org/config.git \ file://gnu-configize.in" diff --git a/poky/meta/recipes-devtools/go/go-1.16.2.inc b/poky/meta/recipes-devtools/go/go-1.16.5.inc index e65caf819..bd928e44f 100644 --- a/poky/meta/recipes-devtools/go/go-1.16.2.inc +++ b/poky/meta/recipes-devtools/go/go-1.16.5.inc @@ -1,7 +1,7 @@ require go-common.inc GO_BASEVERSION = "1.16" -PV = "1.16.2" +PV = "1.16.5" FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:" LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707" @@ -17,4 +17,4 @@ SRC_URI += "\ file://0008-use-GOBUILDMODE-to-set-buildmode.patch \ file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \ " -SRC_URI[main.sha256sum] = "37ca14287a23cb8ba2ac3f5c3dd8adbc1f7a54b9701a57824bf19a0b271f83ea" +SRC_URI[main.sha256sum] = "7bfa7e5908c7cc9e75da5ddf3066d7cbcf3fd9fa51945851325eebc17f50ba80" diff --git a/poky/meta/recipes-devtools/go/go-binary-native_1.16.2.bb b/poky/meta/recipes-devtools/go/go-binary-native_1.16.5.bb index 4fb060173..b3e2b6a60 100644 --- a/poky/meta/recipes-devtools/go/go-binary-native_1.16.2.bb +++ b/poky/meta/recipes-devtools/go/go-binary-native_1.16.5.bb @@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707" PROVIDES = "go-native" SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}" -SRC_URI[go_linux_amd64.sha256sum] = "542e936b19542e62679766194364f45141fde55169db2d8d01046555ca9eb4b8" -SRC_URI[go_linux_arm64.sha256sum] = "6924601d998a0917694fd14261347e3798bd2ad6b13c4d7f2edd70c9d57f62ab" +SRC_URI[go_linux_amd64.sha256sum] = "b12c23023b68de22f74c0524f10b753e7b08b1504cb7e417eccebdd3fae49061" +SRC_URI[go_linux_arm64.sha256sum] = "d5446b46ef6f36fdffa852f73dfbbe78c1ddf010b99fa4964944b9ae8b4d6799" UPSTREAM_CHECK_URI = "https://golang.org/dl/" UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux" diff --git a/poky/meta/recipes-devtools/go/go-common.inc b/poky/meta/recipes-devtools/go/go-common.inc index f18d928c7..39a681a71 100644 --- a/poky/meta/recipes-devtools/go/go-common.inc +++ b/poky/meta/recipes-devtools/go/go-common.inc @@ -14,7 +14,7 @@ LICENSE = "BSD-3-Clause" inherit goarch -SRC_URI = "http://golang.org/dl/go${PV}.src.tar.gz;name=main" +SRC_URI = "https://golang.org/dl/go${PV}.src.tar.gz;name=main" S = "${WORKDIR}/go" B = "${S}" UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.src\.tar" diff --git a/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.2.bb b/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.5.bb index 7ac9449e4..7ac9449e4 100644 --- a/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.2.bb +++ b/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.5.bb diff --git a/poky/meta/recipes-devtools/go/go-cross_1.16.2.bb b/poky/meta/recipes-devtools/go/go-cross_1.16.5.bb index 80b5a03f6..80b5a03f6 100644 --- a/poky/meta/recipes-devtools/go/go-cross_1.16.2.bb +++ b/poky/meta/recipes-devtools/go/go-cross_1.16.5.bb diff --git a/poky/meta/recipes-devtools/go/go-crosssdk_1.16.2.bb b/poky/meta/recipes-devtools/go/go-crosssdk_1.16.5.bb index 1857c8a57..1857c8a57 100644 --- a/poky/meta/recipes-devtools/go/go-crosssdk_1.16.2.bb +++ b/poky/meta/recipes-devtools/go/go-crosssdk_1.16.5.bb diff --git a/poky/meta/recipes-devtools/go/go-native_1.16.2.bb b/poky/meta/recipes-devtools/go/go-native_1.16.5.bb index f14892cdb..f14892cdb 100644 --- a/poky/meta/recipes-devtools/go/go-native_1.16.2.bb +++ b/poky/meta/recipes-devtools/go/go-native_1.16.5.bb diff --git a/poky/meta/recipes-devtools/go/go-runtime_1.16.2.bb b/poky/meta/recipes-devtools/go/go-runtime_1.16.5.bb index 63464a150..63464a150 100644 --- a/poky/meta/recipes-devtools/go/go-runtime_1.16.2.bb +++ b/poky/meta/recipes-devtools/go/go-runtime_1.16.5.bb diff --git a/poky/meta/recipes-devtools/go/go_1.16.2.bb b/poky/meta/recipes-devtools/go/go_1.16.5.bb index 4e9e0ebec..4e9e0ebec 100644 --- a/poky/meta/recipes-devtools/go/go_1.16.2.bb +++ b/poky/meta/recipes-devtools/go/go_1.16.5.bb diff --git a/poky/meta/recipes-devtools/help2man/help2man_1.48.2.bb b/poky/meta/recipes-devtools/help2man/help2man_1.48.3.bb index 3e9b509ed..a612c0896 100644 --- a/poky/meta/recipes-devtools/help2man/help2man_1.48.2.bb +++ b/poky/meta/recipes-devtools/help2man/help2man_1.48.3.bb @@ -6,7 +6,7 @@ LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464" SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "20cb36111df91d61741a20680912ab0e4c59da479c3fb05837c6f0a8cb7cb467" +SRC_URI[sha256sum] = "8361ff3c643fbd391064e97e5f54592ca28b880eaffbf566a68e0ad800d1a8ac" inherit autotools diff --git a/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb b/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb index 231c1c20e..61b8487c7 100644 --- a/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb +++ b/poky/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb @@ -11,6 +11,7 @@ PR = "r2" DEPENDS = "" INHIBIT_DEFAULT_DEPS = "1" +ICECC_DISABLED = "1" # This is needed, because otherwise there is dependency loop from quilt-native # Dependency loop #1 found: diff --git a/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb b/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb index 65905966c..03792730f 100644 --- a/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb +++ b/poky/meta/recipes-devtools/jquery/jquery_3.6.0.bb @@ -19,6 +19,11 @@ SRC_URI[map.sha256sum] = "399548fb0e7b146c12f5ba18099a47d594a970fee96212eee0ab48 UPSTREAM_CHECK_REGEX = "jquery-(?P<pver>\d+(\.\d+)+)\.js" +# https://github.com/jquery/jquery/issues/3927 +# There are ways jquery can expose security issues but any issues are in the apps exposing them +# and there is little we can directly do +CVE_CHECK_WHITELIST += "CVE-2007-2379" + inherit allarch do_install() { diff --git a/poky/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch b/poky/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch index f4fb6d3b2..76fce1976 100644 --- a/poky/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch +++ b/poky/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch @@ -13,7 +13,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libcomps/src/python/src/CMakeLists.txt b/libcomps/src/python/src/CMakeLists.txt -index adabb31..b9b96ab 100644 +index 89b9c91..08cd6b5 100644 --- a/libcomps/src/python/src/CMakeLists.txt +++ b/libcomps/src/python/src/CMakeLists.txt @@ -9,13 +9,13 @@ set (pycomps_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}) @@ -23,7 +23,7 @@ index adabb31..b9b96ab 100644 - pycomps_hash.c pycomps_exc.c pycomps_lbw.c) + pycomps_hash.c pycomps_exc.c pycomps_lbw.c crc32.c) - set (pycomps_HEADERS pycomps_23macros.h pycomps_sequence.h + set (pycomps_HEADERS pycomps_macros.h pycomps_sequence.h pycomps_envs.h pycomps_categories.h pycomps_groups.h pycomps_gids.h pycomps_utils.h pycomps_dict.h pycomps_mdict.h pycomps_hash.h pycomps_exc.h pycomps_lbw.h @@ -46,5 +46,5 @@ index d8f5e34..f266067 100644 static uint32_t crc32_tab[] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, -- -2.26.2 +2.25.1 diff --git a/poky/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/poky/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch index 3e9102605..6cd052889 100644 --- a/poky/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch +++ b/poky/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch @@ -10,18 +10,18 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcomps/src/python/src/CMakeLists.txt b/libcomps/src/python/src/CMakeLists.txt -index b9b96ab..6d44567 100644 +index f813af4..9eebb6c 100644 --- a/libcomps/src/python/src/CMakeLists.txt +++ b/libcomps/src/python/src/CMakeLists.txt -@@ -115,7 +115,7 @@ IF (SKBUILD) +@@ -85,7 +85,7 @@ IF (SKBUILD) INSTALL(FILES libcomps/__init__.py DESTINATION libcomps/src/python/src/libcomps) INSTALL(TARGETS pycomps LIBRARY DESTINATION libcomps/src/python/src/libcomps) ELSE () -- EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) -+ #EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) +- EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) ++ #EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) INSTALL(FILES ${pycomps_SRCDIR}/libcomps/__init__.py DESTINATION ${PYTHON_INSTALL_DIR}/libcomps) #INSTALL(FILES ${pycomps_SRCDIR}/tests/__test.py DESTINATION -- -2.26.2 +2.25.1 diff --git a/poky/meta/recipes-devtools/libcomps/libcomps_0.1.15.bb b/poky/meta/recipes-devtools/libcomps/libcomps_0.1.17.bb index 58d2dee89..502bc4688 100644 --- a/poky/meta/recipes-devtools/libcomps/libcomps_0.1.15.bb +++ b/poky/meta/recipes-devtools/libcomps/libcomps_0.1.17.bb @@ -9,7 +9,7 @@ SRC_URI = "git://github.com/rpm-software-management/libcomps.git \ file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \ " -SRCREV = "b213f749405d84e989b25e183bcf28ce701696dd" +SRCREV = "dfaffdce1969042bda4a184865861573bb07a5a3" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/libdnf/libdnf/0001-drop-FindPythonInstDir.cmake.patch b/poky/meta/recipes-devtools/libdnf/libdnf/0001-drop-FindPythonInstDir.cmake.patch new file mode 100644 index 000000000..d483dd410 --- /dev/null +++ b/poky/meta/recipes-devtools/libdnf/libdnf/0001-drop-FindPythonInstDir.cmake.patch @@ -0,0 +1,42 @@ +From c0a465ccae395871ab10932975e37894220bc6a1 Mon Sep 17 00:00:00 2001 +From: Hongxu Jia <hongxu.jia@windriver.com> +Date: Tue, 1 Jun 2021 10:23:59 +0800 +Subject: [PATCH] drop FindPythonInstDir.cmake + +Since commit [1] applied, PYTHON_INSTALL_DIR is not right +on nativesdk build +... +|Building for python3 +|-- Python install dir is +|tmp-glibc/work/x86_64-nativesdk-wrlinuxsdk-linux/nativesdk-libdnf/0.63.0-r0/ +recipe-sysroot-native/usr/lib/python3.9/site-packages +... + +Yocto manually set PYTHON_INSTALL_DIR from recipe, it is not +necessary to call FindPythonInstDir.cmake which will override +Yocto setting + +[1] https://github.com/rpm-software-management/libdnf/commit/f1cffbfb9f338da827e233c2d8ac3a25a6a59a69 + +Upstream-Status: Inappropriate [Yocto specific] + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +--- + cmake/modules/FindPythonInstDir.cmake | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/cmake/modules/FindPythonInstDir.cmake b/cmake/modules/FindPythonInstDir.cmake +index ed098ded..8b137891 100644 +--- a/cmake/modules/FindPythonInstDir.cmake ++++ b/cmake/modules/FindPythonInstDir.cmake +@@ -1,6 +1 @@ +-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c " +-from sys import stdout +-from sysconfig import get_path +-path=get_path(name='platlib', vars={'platbase':'${CMAKE_INSTALL_PREFIX}'}) +-stdout.write(path)" +-OUTPUT_VARIABLE PYTHON_INSTALL_DIR) ++ +-- +2.18.1 + diff --git a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch index f8d256e01..b740521fd 100644 --- a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch +++ b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch @@ -1,23 +1,26 @@ -From 8aa5402393fabaf4fff51be3af4868e8dfab6da7 Mon Sep 17 00:00:00 2001 +From fc0b81bb717db3f41513f09f6661676a7aea6dd4 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Tue, 9 Mar 2021 19:30:42 +0000 Subject: [PATCH] libdnf/config.h: avoid the use of non-portable __WORDSIZE Upstream-Status: Submitted [https://github.com/rpm-software-management/libdnf/pull/1159] Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + --- - libdnf/config.h | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) + libdnf/config.h | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libdnf/config.h b/libdnf/config.h -index 16121f6f..2925923e 100644 +index 01b330b4..dbd53f5e 100644 --- a/libdnf/config.h +++ b/libdnf/config.h -@@ -18,12 +18,10 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ +@@ -20,14 +20,11 @@ + #ifdef __APPLE__ + #include <stdint.h> +-#else -#include <bits/wordsize.h> + #endif +#include <limits.h> -#if __WORDSIZE == 32 diff --git a/poky/meta/recipes-devtools/libdnf/libdnf_0.58.0.bb b/poky/meta/recipes-devtools/libdnf/libdnf_0.63.0.bb index dbe68d5a1..a26ee55cb 100644 --- a/poky/meta/recipes-devtools/libdnf/libdnf_0.58.0.bb +++ b/poky/meta/recipes-devtools/libdnf/libdnf_0.63.0.bb @@ -12,10 +12,11 @@ SRC_URI = "git://github.com/rpm-software-management/libdnf;branch=dnf-4-master \ file://0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch \ file://enable_test_data_dir_set.patch \ file://0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch \ + file://0001-drop-FindPythonInstDir.cmake.patch \ " -SRCREV = "85278894f21bc1957dc47a2a09ddacf59bc3cda8" -UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" +SRCREV = "669a5c691acba91693d238d6262ac99a440aa9b3" +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!4\.90)\d+(\.\d+)+)" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/libedit/libedit_20210216-3.1.bb b/poky/meta/recipes-devtools/libedit/libedit_20210522-3.1.bb index 97aceaf71..43e6f2244 100644 --- a/poky/meta/recipes-devtools/libedit/libedit_20210216-3.1.bb +++ b/poky/meta/recipes-devtools/libedit/libedit_20210522-3.1.bb @@ -13,7 +13,7 @@ inherit autotools SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \ file://stdc-predef.patch \ " -SRC_URI[sha256sum] = "2283f741d2aab935c8c52c04b57bf952d02c2c02e651172f8ac811f77b1fc77a" +SRC_URI[sha256sum] = "0220bc2047e927c0c1984ef5f7b4eb2a9469a5b7bf12ba573ca3b23ca02bbb6f" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb b/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb index 2f60ce8e0..771b2c094 100644 --- a/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb +++ b/poky/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb @@ -8,8 +8,8 @@ SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch= file://0001-modulemd-generate-the-manpage-only-if-the-feature-is.patch \ " -PV = "2.12.0" -SRCREV = "aaed38c899a958a88a6a368a70510e350ebe336c" +PV = "2.12.1" +SRCREV = "c0897fa0e9d7d1305fd4813b1010c1d4cca42346" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch b/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch index 46ab9a113..2ea50f00f 100644 --- a/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch +++ b/poky/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Do not try to obtain PYTHON_INSTALL_DIR by running python. Upstream-Status: Inappropriate [oe-core specific] Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - +Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> --- librepo/python/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/librepo/python/CMakeLists.txt b/librepo/python/CMakeLists.txt -index 52fc39e..2024407 100644 +index 8523ca7..06e5f7b 100644 --- a/librepo/python/CMakeLists.txt +++ b/librepo/python/CMakeLists.txt @@ -16,12 +16,12 @@ SET (librepomodule_SRCS @@ -20,16 +20,19 @@ index 52fc39e..2024407 100644 -EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c " -from sys import stdout --from distutils import sysconfig --path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}') +-from sysconfig import get_path +-path=get_path(name='platlib', vars={'platbase':'${CMAKE_INSTALL_PREFIX}'}) -stdout.write(path)" -OUTPUT_VARIABLE PYTHON_INSTALL_DIR) +#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c " +#from sys import stdout -+#from distutils import sysconfig -+#path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}') ++#from sysconfig import get_path ++#path=get_path(name='platlib', vars={'platbase':'${CMAKE_INSTALL_PREFIX}'}) +#stdout.write(path)" +#OUTPUT_VARIABLE PYTHON_INSTALL_DIR) INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH}) MESSAGE(STATUS "Python3 install dir is ${PYTHON_INSTALL_DIR}") +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/librepo/librepo_1.13.0.bb b/poky/meta/recipes-devtools/librepo/librepo_1.14.1.bb index 0a68e0ac4..867645258 100644 --- a/poky/meta/recipes-devtools/librepo/librepo_1.13.0.bb +++ b/poky/meta/recipes-devtools/librepo/librepo_1.14.1.bb @@ -10,7 +10,7 @@ SRC_URI = "git://github.com/rpm-software-management/librepo.git \ file://0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch \ " -SRCREV = "a244d78bab11510408fb9413f1c78c2f56c69fa5" +SRCREV = "c5fe6b85b47f2e4f7a37cff3f3214205d1b54db5" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc b/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc index 19a03d473..e9225e140 100644 --- a/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc +++ b/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc @@ -22,6 +22,7 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \ file://0001-libtool-Fix-support-for-NIOS2-processor.patch \ file://0001-libtool-Check-for-static-libs-for-internal-compiler-.patch \ file://0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch \ + file://0001-Makefile.am-make-sure-autoheader-run-before-automake.patch \ " SRC_URI[md5sum] = "addf44b646ddb4e3919805aa88fa7c5e" diff --git a/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-automake.patch b/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-automake.patch new file mode 100644 index 000000000..87f849234 --- /dev/null +++ b/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-automake.patch @@ -0,0 +1,35 @@ +From e82c06584f02e3e4487aa73aa05981e2a35dc6d1 Mon Sep 17 00:00:00 2001 +From: Mingli Yu <mingli.yu@windriver.com> +Date: Tue, 13 Apr 2021 07:17:29 +0000 +Subject: [PATCH] Makefile.am: make sure autoheader run before automake + +When use automake to generate Makefile.in from Makefile.am, there +comes below race: + | configure.ac:45: error: required file 'config-h.in' not found + +It is because the file config-h.in in updating process by autoheader, +so make automake run after autoheader to avoid the above race. + +Upstream-Status: Submitted [libtool-patches@gnu.org maillist] + +Signed-off-by: Mingli Yu <mingli.yu@windriver.com> +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 2752ecc..29950db 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -328,7 +328,7 @@ EXTRA_DIST += $(lt_aclocal_m4) \ + $(lt_obsolete_m4) \ + $(stamp_mk) + +-$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4) ++$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4) $(lt_config_h_in) + $(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOMAKE) Makefile + + # Don't let unused scripts leak into the libltdl Makefile +-- +2.29.2 + diff --git a/poky/meta/recipes-devtools/llvm/llvm/0001-nfc-Fix-missing-include.patch b/poky/meta/recipes-devtools/llvm/llvm/0001-nfc-Fix-missing-include.patch deleted file mode 100644 index f6dee77ab..000000000 --- a/poky/meta/recipes-devtools/llvm/llvm/0001-nfc-Fix-missing-include.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3b7e611bd58ba842470d17374c550e14bceca5c7 Mon Sep 17 00:00:00 2001 -From: serge-sans-paille <sguelton@redhat.com> -Date: Tue, 10 Nov 2020 14:55:25 +0100 -Subject: [PATCH] [nfc] Fix missing include - -Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - llvm/utils/benchmark/src/benchmark_register.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/llvm/utils/benchmark/src/benchmark_register.h b/llvm/utils/benchmark/src/benchmark_register.h -index 0705e219f2fa..4caa5ad4da07 100644 ---- a/llvm/utils/benchmark/src/benchmark_register.h -+++ b/llvm/utils/benchmark/src/benchmark_register.h -@@ -1,6 +1,7 @@ - #ifndef BENCHMARK_REGISTER_H - #define BENCHMARK_REGISTER_H - -+#include <limits> - #include <vector> - - #include "check.h" --- -2.30.1 - diff --git a/poky/meta/recipes-devtools/llvm/llvm_git.bb b/poky/meta/recipes-devtools/llvm/llvm_git.bb index db6694339..8a5d3dc9b 100644 --- a/poky/meta/recipes-devtools/llvm/llvm_git.bb +++ b/poky/meta/recipes-devtools/llvm/llvm_git.bb @@ -19,8 +19,8 @@ inherit cmake pkgconfig PROVIDES += "llvm${PV}" -MAJOR_VERSION = "11" -MINOR_VERSION = "1" +MAJOR_VERSION = "12" +MINOR_VERSION = "0" PATCH_VERSION = "0" PV = "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" @@ -29,12 +29,11 @@ LLVM_RELEASE = "${PV}" LLVM_DIR = "llvm${LLVM_RELEASE}" BRANCH = "release/${MAJOR_VERSION}.x" -SRCREV = "1fdec59bffc11ae37eb51a1b9869f0696bfd5312" +SRCREV = "fa0971b87fb2c9d14d1bba2551e61f02f18f329b" SRC_URI = "git://github.com/llvm/llvm-project.git;branch=${BRANCH} \ file://0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch;striplevel=2 \ file://0007-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \ file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \ - file://0001-nfc-Fix-missing-include.patch;striplevel=2 \ " UPSTREAM_CHECK_GITTAGREGEX = "llvmorg-(?P<pver>\d+(\.\d+)+)" diff --git a/poky/meta/recipes-devtools/m4/m4-1.4.18.inc b/poky/meta/recipes-devtools/m4/m4-1.4.19.inc index a9b63c1bf..5f3d59226 100644 --- a/poky/meta/recipes-devtools/m4/m4-1.4.18.inc +++ b/poky/meta/recipes-devtools/m4/m4-1.4.19.inc @@ -4,24 +4,21 @@ DESCRIPTION = "GNU m4 is an implementation of the traditional Unix macro process compatible although it has some extensions (for example, handling more than 9 positional parameters to macros). \ GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc." -inherit autotools texinfo ptest +inherit autotools texinfo ptest gettext SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \ file://ac_config_links.patch \ - file://m4-1.4.18-glibc-change-work-around.patch \ " -SRC_URI_append_class-target = " file://0001-Unset-need_charset_alias-when-building-for-musl.patch \ - file://run-ptest \ +SRC_URI_append_class-target = " file://run-ptest \ file://serial-tests-config.patch \ - file://0001-test-getopt-posix-fix.patch \ " -SRC_URI[md5sum] = "a077779db287adf4e12a035029002d28" -SRC_URI[sha256sum] = "ab2633921a5cd38e48797bf5521ad259bdc4b979078034a3b790d7fec5493fab" +SRC_URI[md5sum] = "f4a2b0284d80353b995f8ef2385ed73c" +SRC_URI[sha256sum] = "3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70" LICENSE = "GPLv3" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\ +LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464\ file://examples/COPYING;md5=4031593b2166d6c47cae282d944a7ede" # Fix "Argument list too long" error when len(TMPDIR) = 410 @@ -49,6 +46,8 @@ do_install_ptest() { chmod 0755 ${D}${PTEST_PATH}/tests/test-mbrtowc-w32-1.sh ${D}${PTEST_PATH}/tests/test-spawn-pipe-main \ ${D}${PTEST_PATH}/tests/test-spawn-pipe-child ${D}${PTEST_PATH}/tests/test-version-etc \ ${D}${PTEST_PATH}/tests/test-xalloc-die + + ln -s ptest ${D}${libdir}/${BPN}/${BP} } diff --git a/poky/meta/recipes-devtools/m4/m4-native_1.4.18.bb b/poky/meta/recipes-devtools/m4/m4-native_1.4.19.bb index 407ad8933..407ad8933 100644 --- a/poky/meta/recipes-devtools/m4/m4-native_1.4.18.bb +++ b/poky/meta/recipes-devtools/m4/m4-native_1.4.19.bb diff --git a/poky/meta/recipes-devtools/m4/m4/0001-Unset-need_charset_alias-when-building-for-musl.patch b/poky/meta/recipes-devtools/m4/m4/0001-Unset-need_charset_alias-when-building-for-musl.patch deleted file mode 100644 index ba1a4bab4..000000000 --- a/poky/meta/recipes-devtools/m4/m4/0001-Unset-need_charset_alias-when-building-for-musl.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b9565dc2fe0c4f7daaec91b7e83bc7313dee2f4a Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Mon, 13 Apr 2015 17:02:13 -0700 -Subject: [PATCH] Unset need_charset_alias when building for musl - -localcharset uses ac_cv_gnu_library_2_1 from glibc21.m4 -which actually shoudl be fixed in gnulib and then all downstream -projects will get it eventually. For now we apply the fix to -coreutils - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - lib/gnulib.mk | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/gnulib.mk b/lib/gnulib.mk -index e1d74db..c0e92dd 100644 ---- a/lib/gnulib.mk -+++ b/lib/gnulib.mk -@@ -1882,7 +1882,7 @@ install-exec-localcharset: all-local - case '$(host_os)' in \ - darwin[56]*) \ - need_charset_alias=true ;; \ -- darwin* | cygwin* | mingw* | pw32* | cegcc*) \ -+ darwin* | cygwin* | mingw* | pw32* | cegcc* | linux-musl*) \ - need_charset_alias=false ;; \ - *) \ - need_charset_alias=true ;; \ --- -2.1.4 - diff --git a/poky/meta/recipes-devtools/m4/m4/0001-test-getopt-posix-fix.patch b/poky/meta/recipes-devtools/m4/m4/0001-test-getopt-posix-fix.patch deleted file mode 100644 index 11508ee0e..000000000 --- a/poky/meta/recipes-devtools/m4/m4/0001-test-getopt-posix-fix.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 75bea7c72a919859674f493548653de88f96c798 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Mon, 22 Apr 2019 10:36:13 +0800 -Subject: [PATCH] test-getopt-posix fix - -fix below problem: -test-getopt.h:754: assertion 'strcmp (argv[1], "donald") == 0' failed - -get this patch from -https://github.com/habitat-sh/core-plans/blob/master/m4/fix-test-getopt-posix-with-glibc-2.26.patch - -Upstream-Status: Pending - -have report this bug to m4-discuss@gnu.org - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - tests/test-getopt-posix.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/tests/test-getopt-posix.c b/tests/test-getopt-posix.c -index 5532271..2a3d511 100644 ---- a/tests/test-getopt-posix.c -+++ b/tests/test-getopt-posix.c -@@ -22,6 +22,13 @@ - ftell link warning if we are not using the gnulib ftell module. */ - #define _GL_NO_LARGE_FILES - -+/* -+ * Glibc 2.26 does hard include bits/getopt_posix.h which causes the system -+ * to use glibc's getopt but the tests expect gnulib behavior. Until a better -+ * fix is available this avoids that mis-resolution. -+ */ -+#include <getopt.h> -+ - /* POSIX and glibc provide the getopt() function in <unistd.h>, see - http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html - https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html --- -2.7.4 - diff --git a/poky/meta/recipes-devtools/m4/m4/ac_config_links.patch b/poky/meta/recipes-devtools/m4/m4/ac_config_links.patch index 71edf5951..39fcd9189 100644 --- a/poky/meta/recipes-devtools/m4/m4/ac_config_links.patch +++ b/poky/meta/recipes-devtools/m4/m4/ac_config_links.patch @@ -12,20 +12,26 @@ source, and what we want is to is to not touch it. Tested on x86_64_linux (Ubuntu 8.04 and 9.10). -2009-11-10 Esben Haabendal <eha@doredevelopment.dk> +2009-11-10 Esben Haabendal <eha@doredevelopment.dk> +--- + configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -Index: m4-1.4.18/configure -=================================================================== ---- m4-1.4.18.orig/configure -+++ m4-1.4.18/configure -@@ -24415,8 +24415,8 @@ $as_echo "#define GNULIB_TEST_GETTIMEOFD +diff --git a/configure b/configure +index 883336a..6343a34 100755 +--- a/configure ++++ b/configure +@@ -37061,8 +37061,8 @@ printf "%s\n" "#define GNULIB_TEST_GETRANDOM 1" >>confdefs.h # only, it does not matter if we skip the link with older autoconf. # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH # builds, so use a shell variable to bypass this. - GNUmakefile=GNUmakefile - ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile" -+ # GNUmakefile=GNUmakefile -+ # ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile" ++# GNUmakefile=GNUmakefile ++# ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile" - : + LIB_HARD_LOCALE="$LIB_SETLOCALE_NULL" +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch b/poky/meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch deleted file mode 100644 index c10bcbf69..000000000 --- a/poky/meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch +++ /dev/null @@ -1,130 +0,0 @@ -update for glibc libio.h removal in 2.28+ - -see -https://src.fedoraproject.org/rpms/m4/c/814d592134fad36df757f9a61422d164ea2c6c9b?branch=master - -Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4af4a4a718] -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Index: m4-1.4.18/lib/fflush.c -=================================================================== ---- m4-1.4.18.orig/lib/fflush.c -+++ m4-1.4.18/lib/fflush.c -@@ -33,7 +33,7 @@ - #undef fflush - - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - - /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ - static void -@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp) - - #endif - --#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) -+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) - - # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ -@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream) - if (stream == NULL || ! freading (stream)) - return fflush (stream); - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - - clear_ungetc_buffer_preserving_position (stream); - -Index: m4-1.4.18/lib/fpending.c -=================================================================== ---- m4-1.4.18.orig/lib/fpending.c -+++ m4-1.4.18/lib/fpending.c -@@ -32,7 +32,7 @@ __fpending (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - return fp->_IO_write_ptr - fp->_IO_write_base; - #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ -Index: m4-1.4.18/lib/fpurge.c -=================================================================== ---- m4-1.4.18.orig/lib/fpurge.c -+++ m4-1.4.18/lib/fpurge.c -@@ -62,7 +62,7 @@ fpurge (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - fp->_IO_read_end = fp->_IO_read_ptr; - fp->_IO_write_ptr = fp->_IO_write_base; - /* Avoid memory leak when there is an active ungetc buffer. */ -Index: m4-1.4.18/lib/freadahead.c -=================================================================== ---- m4-1.4.18.orig/lib/freadahead.c -+++ m4-1.4.18/lib/freadahead.c -@@ -25,7 +25,7 @@ - size_t - freadahead (FILE *fp) - { --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - if (fp->_IO_write_ptr > fp->_IO_write_base) - return 0; - return (fp->_IO_read_end - fp->_IO_read_ptr) -Index: m4-1.4.18/lib/freading.c -=================================================================== ---- m4-1.4.18.orig/lib/freading.c -+++ m4-1.4.18/lib/freading.c -@@ -31,7 +31,7 @@ freading (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - return ((fp->_flags & _IO_NO_WRITES) != 0 - || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 - && fp->_IO_read_base != NULL)); -Index: m4-1.4.18/lib/fseeko.c -=================================================================== ---- m4-1.4.18.orig/lib/fseeko.c -+++ m4-1.4.18/lib/fseeko.c -@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int when - #endif - - /* These tests are based on fpurge.c. */ --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - if (fp->_IO_read_end == fp->_IO_read_ptr - && fp->_IO_write_ptr == fp->_IO_write_base - && fp->_IO_save_base == NULL) -@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int when - return -1; - } - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - fp->_flags &= ~_IO_EOF_SEEN; - fp->_offset = pos; - #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ -Index: m4-1.4.18/lib/stdio-impl.h -=================================================================== ---- m4-1.4.18.orig/lib/stdio-impl.h -+++ m4-1.4.18/lib/stdio-impl.h -@@ -18,6 +18,12 @@ - the same implementation of stdio extension API, except that some fields - have different naming conventions, or their access requires some casts. */ - -+/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this -+ problem by defining it ourselves. FIXME: Do not rely on glibc -+ internals. */ -+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN -+# define _IO_IN_BACKUP 0x100 -+#endif - - /* BSD stdio derived implementations. */ - diff --git a/poky/meta/recipes-devtools/m4/m4_1.4.18.bb b/poky/meta/recipes-devtools/m4/m4_1.4.19.bb index b12c0adf3..b12c0adf3 100644 --- a/poky/meta/recipes-devtools/m4/m4_1.4.18.bb +++ b/poky/meta/recipes-devtools/m4/m4_1.4.19.bb diff --git a/poky/meta/recipes-devtools/meson/meson.inc b/poky/meta/recipes-devtools/meson/meson.inc index e186dede9..7ddfccf2d 100644 --- a/poky/meta/recipes-devtools/meson/meson.inc +++ b/poky/meta/recipes-devtools/meson/meson.inc @@ -12,21 +12,12 @@ SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${P file://0003-native_bindir.patch \ file://0001-python-module-do-not-manipulate-the-environment-when.patch \ file://disable-rpath-handling.patch \ - file://cross-prop-default.patch \ file://0001-modules-python.py-do-not-substitute-python-s-install.patch \ - file://0001-minstall-Correctly-set-uid-gid-of-installed-files.patch \ file://gi-target-dep.patch \ + file://0001-Make-CPU-family-warnings-fatal.patch \ + file://0002-Support-building-allarch-recipes-again.patch \ " -SRC_URI[sha256sum] = "72e1c782ba9bda204f4a1ed57f98d027d7b6eb9414c723eebbd6ec7f1955c8a6" - -SRC_URI_append_class-native = " \ - file://0001-Make-CPU-family-warnings-fatal.patch \ - file://0002-Support-building-allarch-recipes-again.patch \ -" - -# remove at next version upgrade or when output changes -PR = "r1" -HASHEQUIV_HASH_VERSION .= ".1" +SRC_URI[sha256sum] = "3144a3da662fcf79f1e5602fa929f2821cba4eba28c2c923fe0a7d3e3db04d5d" UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases" UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch index 48941c97f..bcccfabd1 100644 --- a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch +++ b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch @@ -1,41 +1,43 @@ -From 76934bcbf2cfa7304e8864e28c51f58adda0392f Mon Sep 17 00:00:00 2001 +From b64032a2eb1fb760f4ffd5b4b666e2433cf80d39 Mon Sep 17 00:00:00 2001 From: Ross Burton <ross.burton@intel.com> Date: Tue, 3 Jul 2018 13:59:09 +0100 -Subject: [PATCH] Make CPU family warnings fatal +Subject: [PATCH 1/2] Make CPU family warnings fatal Upstream-Status: Inappropriate [OE specific] Signed-off-by: Ross Burton <ross.burton@intel.com> - --- mesonbuild/envconfig.py | 2 +- mesonbuild/environment.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py -index ba35d16..2d3c34c 100644 +index c6a4df3..4d58c91 100644 --- a/mesonbuild/envconfig.py +++ b/mesonbuild/envconfig.py -@@ -254,7 +254,7 @@ class MachineInfo: - +@@ -266,7 +266,7 @@ class MachineInfo: + cpu_family = literal['cpu_family'] if cpu_family not in known_cpu_families: -- mlog.warning('Unknown CPU family {}, please report this at https://github.com/mesonbuild/meson/issues/new'.format(cpu_family)) +- mlog.warning(f'Unknown CPU family {cpu_family}, please report this at https://github.com/mesonbuild/meson/issues/new') + raise EnvironmentException('Unknown CPU family {}, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.'.format(cpu_family)) - + endian = literal['endian'] if endian not in ('little', 'big'): diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py -index 756dd81..4d2c2b6 100644 +index fc9b703..eea8345 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py -@@ -434,9 +434,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str: +@@ -436,9 +436,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str: trial = 'ppc64' - + if trial not in known_cpu_families: - mlog.warning('Unknown CPU family {!r}, please report this at ' - 'https://github.com/mesonbuild/meson/issues/new with the ' - 'output of `uname -a` and `cat /proc/cpuinfo`'.format(trial)) + raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial) - + return trial + +-- +2.24.0 diff --git a/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch b/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch index 471f1500d..ce90e515d 100644 --- a/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +++ b/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch @@ -1,4 +1,4 @@ -From d3ef01a4208a801acad380a4aaceb6a21f8fa603 Mon Sep 17 00:00:00 2001 +From 2f9c59e0489e569c5382404667c10f5c200a72ad Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Fri, 4 Aug 2017 16:16:41 +0300 Subject: [PATCH] gtkdoc: fix issues that arise when cross-compiling @@ -20,11 +20,11 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 4 insertions(+) diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py -index bcf77b9..6a4b472 100644 +index dc2979e..c9ff9bd 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py -@@ -974,6 +974,10 @@ This will become a hard error in the future.''') - args.append('--{}={}'.format(program_name, path)) +@@ -1053,6 +1053,10 @@ class GnomeModule(ExtensionModule): + args.append(f'--{program_name}={path}') if namespace: args.append('--namespace=' + namespace) + gtkdoc_exe_wrapper = state.environment.properties.host.get('gtkdoc_exe_wrapper', None) diff --git a/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch b/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch deleted file mode 100644 index d55b7cc7c..000000000 --- a/poky/meta/recipes-devtools/meson/meson/0001-minstall-Correctly-set-uid-gid-of-installed-files.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 3f6f4964dc79ae986f44afe1687922381f237edd Mon Sep 17 00:00:00 2001 -From: Peter Kjellerstedt <pkj@axis.com> -Date: Wed, 3 Mar 2021 12:47:28 +0100 -Subject: [PATCH] minstall: Correctly set uid/gid of installed files - -In commit caab4d3d, the uid and gid arguments passed to os.chown() by -set_chown() were accidentally swapped, causing files to end up with -incorrect owner/group if the owner and group are not the same. - -Upstream-Status: Backport [https://github.com/mesonbuild/meson/commit/6226ac26ef63335bfb817db02b3f295c78214a82] -Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> ---- - mesonbuild/minstall.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py -index 785ff5869..07da408aa 100644 ---- a/mesonbuild/minstall.py -+++ b/mesonbuild/minstall.py -@@ -148,7 +148,7 @@ def set_chown(path: str, user: T.Optional[str] = None, group: T.Optional[str] = - Use a real function rather than a lambda to help mypy out. Also real - functions are faster. - """ -- real_os_chown(path, gid, uid, dir_fd=dir_fd, follow_symlinks=follow_symlinks) -+ real_os_chown(path, uid, gid, dir_fd=dir_fd, follow_symlinks=follow_symlinks) - - try: - os.chown = chown diff --git a/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch b/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch index eb0e90dbd..fdadc6869 100644 --- a/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch +++ b/poky/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch @@ -1,4 +1,4 @@ -From 689e28c49b85311f93f39df70cbee702fc44afb6 Mon Sep 17 00:00:00 2001 +From 2264e67d7c2c22ca634fd26ea8ada6f0344ab280 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Mon, 19 Nov 2018 14:24:26 +0100 Subject: [PATCH] python module: do not manipulate the environment when calling @@ -12,10 +12,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 12 deletions(-) diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py -index 07be318..b770603 100644 +index 422155b..aaf5844 100644 --- a/mesonbuild/modules/python.py +++ b/mesonbuild/modules/python.py -@@ -71,11 +71,6 @@ class PythonDependency(ExternalDependency): +@@ -70,11 +70,6 @@ class PythonDependency(ExternalDependency): old_pkg_libdir = os.environ.get('PKG_CONFIG_LIBDIR') old_pkg_path = os.environ.get('PKG_CONFIG_PATH') @@ -26,9 +26,9 @@ index 07be318..b770603 100644 - try: self.pkgdep = PkgConfigDependency(pkg_name, environment, kwargs) - mlog.debug('Found "{}" via pkgconfig lookup in LIBPC ({})'.format(pkg_name, pkg_libdir)) -@@ -84,13 +79,6 @@ class PythonDependency(ExternalDependency): - mlog.debug('"{}" could not be found in LIBPC ({})'.format(pkg_name, pkg_libdir)) + mlog.debug(f'Found "{pkg_name}" via pkgconfig lookup in LIBPC ({pkg_libdir})') +@@ -83,13 +78,6 @@ class PythonDependency(ExternalDependency): + mlog.debug(f'"{pkg_name}" could not be found in LIBPC ({pkg_libdir})') mlog.debug(e) - if old_pkg_path is not None: @@ -39,5 +39,5 @@ index 07be318..b770603 100644 - else: - os.environ.pop('PKG_CONFIG_LIBDIR', None) else: - mlog.debug('"{}" could not be found in LIBPC ({}), this is likely due to a relocated python installation'.format(pkg_name, pkg_libdir)) + mlog.debug(f'"{pkg_name}" could not be found in LIBPC ({pkg_libdir}), this is likely due to a relocated python installation') diff --git a/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch b/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch index d0fe1126f..dcc1ce9c2 100644 --- a/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch +++ b/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch @@ -1,26 +1,28 @@ -From 6efb6114836fd4a1e012aa03b37f3beeeb22b466 Mon Sep 17 00:00:00 2001 +From 656bf55fed01df2d2e2ad6d9d9887173cb16b85c Mon Sep 17 00:00:00 2001 From: Peter Kjellerstedt <pkj@axis.com> Date: Thu, 26 Jul 2018 16:32:49 +0200 -Subject: [PATCH] Support building allarch recipes again +Subject: [PATCH 2/2] Support building allarch recipes again This registers "allarch" as a known CPU family. Upstream-Status: Inappropriate [OE specific] Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> - --- mesonbuild/envconfig.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py -index 2d3c34c..b9e7908 100644 +index 4d58c91..ff01ad1 100644 --- a/mesonbuild/envconfig.py +++ b/mesonbuild/envconfig.py -@@ -38,6 +38,7 @@ _T = T.TypeVar('_T') - - +@@ -36,6 +36,7 @@ from pathlib import Path + + known_cpu_families = ( + 'allarch', 'aarch64', 'alpha', 'arc', +-- +2.24.0 + diff --git a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch index ed85116c4..89257b9e0 100644 --- a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch +++ b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch @@ -1,4 +1,4 @@ -From 1546e1f95a119175b7a4e4272a26dd85505e5ede Mon Sep 17 00:00:00 2001 +From 30e97d4090a3d3f5b7ddcaf27cfa17f3c8c1d462 Mon Sep 17 00:00:00 2001 From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Date: Wed, 15 Nov 2017 15:05:01 +0100 Subject: [PATCH] native_bindir @@ -18,23 +18,22 @@ Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> --- mesonbuild/dependencies/base.py | 19 +++++++++++-------- - mesonbuild/dependencies/ui.py | 6 +++--- - 2 files changed, 14 insertions(+), 11 deletions(-) + 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py -index cd77b4b..7e3f338 100644 +index 14380d4..d0c443f 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py -@@ -192,7 +192,7 @@ class Dependency: +@@ -179,7 +179,7 @@ class Dependency: def get_exe_args(self, compiler): return [] - def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str: + def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str: - raise DependencyException('{!r} is not a pkgconfig dependency'.format(self.name)) + raise DependencyException(f'{self.name!r} is not a pkgconfig dependency') def get_configtool_variable(self, variable_name): -@@ -280,7 +280,7 @@ class InternalDependency(Dependency): +@@ -267,7 +267,7 @@ class InternalDependency(Dependency): return True return any(d.is_built() for d in self.ext_deps) @@ -43,7 +42,7 @@ index cd77b4b..7e3f338 100644 raise DependencyException('Method "get_pkgconfig_variable()" is ' 'invalid for an internal dependency') -@@ -658,8 +658,11 @@ class PkgConfigDependency(ExternalDependency): +@@ -645,8 +645,11 @@ class PkgConfigDependency(ExternalDependency): return s.format(self.__class__.__name__, self.name, self.is_found, self.version_reqs) @@ -57,16 +56,16 @@ index cd77b4b..7e3f338 100644 p, out, err = Popen_safe(cmd, env=env) rc, out, err = p.returncode, out.strip(), err.strip() call = ' '.join(cmd) -@@ -685,7 +688,7 @@ class PkgConfigDependency(ExternalDependency): - env['PKG_CONFIG_LIBDIR'] = new_pkg_config_libdir - mlog.debug('PKG_CONFIG_LIBDIR: ' + new_pkg_config_libdir) +@@ -674,7 +677,7 @@ class PkgConfigDependency(ExternalDependency): + if key.startswith('PKG_'): + mlog.debug(f'env[{key}]: {value}') - def _call_pkgbin(self, args, env=None): + def _call_pkgbin(self, args, env=None, use_native=False): # Always copy the environment since we're going to modify it # with pkg-config variables if env is None: -@@ -699,7 +702,7 @@ class PkgConfigDependency(ExternalDependency): +@@ -688,7 +691,7 @@ class PkgConfigDependency(ExternalDependency): targs = tuple(args) cache = PkgConfigDependency.pkgbin_cache if (self.pkgbin, targs, fenv) not in cache: @@ -75,7 +74,7 @@ index cd77b4b..7e3f338 100644 return cache[(self.pkgbin, targs, fenv)] def _convert_mingw_paths(self, args: T.List[str]) -> T.List[str]: -@@ -905,7 +908,7 @@ class PkgConfigDependency(ExternalDependency): +@@ -894,7 +897,7 @@ class PkgConfigDependency(ExternalDependency): (self.name, out_raw)) self.link_args, self.raw_link_args = self._search_libs(out, out_raw) @@ -84,7 +83,7 @@ index cd77b4b..7e3f338 100644 options = ['--variable=' + variable_name, self.name] if 'define_variable' in kwargs: -@@ -918,7 +921,7 @@ class PkgConfigDependency(ExternalDependency): +@@ -907,7 +910,7 @@ class PkgConfigDependency(ExternalDependency): options = ['--define-variable=' + '='.join(definition)] + options @@ -93,34 +92,3 @@ index cd77b4b..7e3f338 100644 variable = '' if ret != 0: if self.required: -diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py -index d897d76..a598d2e 100644 ---- a/mesonbuild/dependencies/ui.py -+++ b/mesonbuild/dependencies/ui.py -@@ -325,7 +325,7 @@ class QtBaseDependency(ExternalDependency): - self.bindir = self.get_pkgconfig_host_bins(core) - if not self.bindir: - # If exec_prefix is not defined, the pkg-config file is broken -- prefix = core.get_pkgconfig_variable('exec_prefix', {}) -+ prefix = core.get_pkgconfig_variable('exec_prefix', {}, use_native=True) - if prefix: - self.bindir = os.path.join(prefix, 'bin') - -@@ -528,7 +528,7 @@ class Qt4Dependency(QtBaseDependency): - applications = ['moc', 'uic', 'rcc', 'lupdate', 'lrelease'] - for application in applications: - try: -- return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {})) -+ return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}, use_native=True)) - except MesonException: - pass - -@@ -538,7 +538,7 @@ class Qt5Dependency(QtBaseDependency): - QtBaseDependency.__init__(self, 'qt5', env, kwargs) - - def get_pkgconfig_host_bins(self, core): -- return core.get_pkgconfig_variable('host_bins', {}) -+ return core.get_pkgconfig_variable('host_bins', {}, use_native=True) - - def get_private_includes(self, mod_inc_dir, module): - return _qt_get_private_includes(mod_inc_dir, module, self.version) diff --git a/poky/meta/recipes-devtools/meson/meson/cross-prop-default.patch b/poky/meta/recipes-devtools/meson/meson/cross-prop-default.patch deleted file mode 100644 index 772395e87..000000000 --- a/poky/meta/recipes-devtools/meson/meson/cross-prop-default.patch +++ /dev/null @@ -1,23 +0,0 @@ -meson.build files that use cc.run() in native builds can silently fallback to -meson.get_cross_property() in cross builds without an exe-wrapper, but there's -no way to know that this is happening. - -As the defaults may be pessimistic (for example, disabling the support for a -feature that should be enabled) emit a warning when the default is used, so that -the recipe can explicitly set the cross property as relevant. - -Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/5071] -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py -index 3c3cfae0..10e741ae 100644 ---- a/mesonbuild/interpreter.py -+++ b/mesonbuild/interpreter.py -@@ -1890,6 +1890,7 @@ class MesonMain(InterpreterObject): - return props[propname] - except Exception: - if len(args) == 2: -+ mlog.warning('Cross property %s is using default value %s' % (propname, args[1])) - return args[1] - raise InterpreterException('Unknown cross property: %s.' % propname) - diff --git a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch index 25b30ca27..29e164ccc 100644 --- a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch +++ b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch @@ -3,7 +3,7 @@ to be executed) but *host* gobject-introspection libraries, as otherwise the native pkg-config can be used and the build will try to link native and host binaries together. -Upstream-Status: Pending +Upstream-Status: Backport [589236226856f591c9e8daf0cb7aa1aef8862388] Signed-off-by: Ross Burton <ross.burton@arm.com> diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py diff --git a/poky/meta/recipes-devtools/meson/meson_0.57.1.bb b/poky/meta/recipes-devtools/meson/meson_0.58.1.bb index de9b905c1..de9b905c1 100644 --- a/poky/meta/recipes-devtools/meson/meson_0.57.1.bb +++ b/poky/meta/recipes-devtools/meson/meson_0.58.1.bb diff --git a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.57.1.bb b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb index 8778cab12..74e1a7104 100644 --- a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.57.1.bb +++ b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb @@ -1,21 +1,11 @@ include meson.inc -inherit siteinfo +inherit meson-routines inherit nativesdk SRC_URI += "file://meson-setup.py \ file://meson-wrapper" -def meson_endian(prefix, d): - arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS") - sitedata = siteinfo_data_for_machine(arch, os, d) - if "endian-little" in sitedata: - return "little" - elif "endian-big" in sitedata: - return "big" - else: - bb.fatal("Cannot determine endianism for %s-%s" % (arch, os)) - # The cross file logic is similar but not identical to that in meson.bbclass, # since it's generating for an SDK rather than a cross-compile. Important # differences are: @@ -44,7 +34,7 @@ sys_root = @OECORE_TARGET_SYSROOT [host_machine] system = '${SDK_OS}' -cpu_family = '${SDK_ARCH}' +cpu_family = '${@meson_cpu_family("SDK_ARCH", d)}' cpu = '${SDK_ARCH}' endian = '${@meson_endian("SDK", d)}' EOF diff --git a/poky/meta/recipes-devtools/mklibs/files/ac_init_fix.patch b/poky/meta/recipes-devtools/mklibs/files/ac_init_fix.patch deleted file mode 100644 index 422af1042..000000000 --- a/poky/meta/recipes-devtools/mklibs/files/ac_init_fix.patch +++ /dev/null @@ -1,19 +0,0 @@ -Get the version of mklibs by simpler means. The MKLIBS_VERSION string in the -configure.ac file is replaced with real version string by the -do_configure_prepend() function from the recipe .bb file. - -Upstream-Status: Inappropriate [configuration] - -Nitin A Kamble <nitin.a.kamble@intel.com> -Date: 2011/01/24 - -Index: mklibs/configure.ac -=================================================================== ---- mklibs.orig/configure.ac 2010-02-21 17:34:56.000000000 -0800 -+++ mklibs/configure.ac 2011-01-24 18:52:19.943242079 -0800 -@@ -1,4 +1,4 @@ --AC_INIT([mklibs],m4_esyscmd(dpkg-parsechangelog | perl -ne 'print $1 if m/^Version: (.*)$/;')) -+AC_INIT([mklibs], MKLIBS_VERSION) - AM_INIT_AUTOMAKE([foreign no-define]) - AC_CONFIG_HEADERS([config.h]) - AM_MAINTAINER_MODE diff --git a/poky/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch b/poky/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch deleted file mode 100644 index 17d9af4de..000000000 --- a/poky/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch +++ /dev/null @@ -1,103 +0,0 @@ -From dcb45256970b15b672d0004533826c94083356e5 Mon Sep 17 00:00:00 2001 -From: Yuanjie Huang <yuanjie.huang@windriver.com> -Date: Fri, 17 Apr 2015 14:48:20 +0800 -Subject: [PATCH 4/6] avoid failure on symbol provided by application - -Upstream-Status: Pending - -Undefined symbols in a library can be provided by the application -that links to the library, such as `logsink' in libmultipath.so.0. -This fix checks the type of object in which the symbol is needed -and the existence of the symbol in application, when a symbol -cannot be provided by libraries. It prevents false alarm on absence -of symbols. - -Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com> - ---- - src/mklibs | 28 ++++++++++++++++++++++++---- - 1 file changed, 24 insertions(+), 4 deletions(-) - -diff --git a/src/mklibs b/src/mklibs -index a3533c0..66b7a09 100755 ---- a/src/mklibs -+++ b/src/mklibs -@@ -133,9 +133,9 @@ class Symbol(object): - return '@'.join(ret) - - class UndefinedSymbol(Symbol): -- def __init__(self, name, weak, version, library): -+ def __init__(self, name, weak, version, library, object): - super(UndefinedSymbol, self).__init__(name, version, library) -- self.weak, self.library = weak, library -+ self.weak, self.library, self.object = weak, library, object - - def symbol_is_blacklisted(name): - # The ARM Embedded ABI spec states symbols under this namespace as -@@ -152,6 +152,11 @@ def undefined_symbols(obj): - - output = command("mklibs-readelf", "--print-symbols-undefined", obj) - -+ if len(obj) > len(dest_path) and obj[:len(dest_path)] == dest_path: -+ object = obj[len(dest_path) + 1:-len('-so-stripped')] -+ else: -+ object = obj -+ - result = [] - for line in output: - name, weak_string, version_string, library_string = line.split()[:4] -@@ -171,7 +176,7 @@ def undefined_symbols(obj): - if library_string.lower() != 'none': - library = library_string - -- result.append(UndefinedSymbol(name, weak, version, library)) -+ result.append(UndefinedSymbol(name, weak, version, library, object)) - - return result - -@@ -498,12 +503,13 @@ while 1: - and re.search("^ps_", str(symbol))) - and not (re.search("ld-linux.so.3$", str(symbol))) - and not (re.search("^__gnu_local_gp", str(symbol)))): -- debug(DEBUG_SPAM, "needed_symbols adding %s, weak: %s" % (symbol, symbol.weak)) -+ debug(DEBUG_SPAM, "needed_symbols adding %s, weak: %s, for %s" % (symbol, symbol.weak, obj)) - needed_symbols[str(symbol)] = symbol - libraries.update(library_depends(obj)) - - # calculate what symbols are present in small_libs and available_libs - present_symbols = {} -+ present_symbol_progs = {} - checked_libs = small_libs - checked_libs.extend(available_libs) - checked_libs.append(sysroot + ldlib) -@@ -513,6 +519,12 @@ while 1: - names = symbol.base_names() - for name in names: - present_symbols[name] = symbol -+ if not so_pattern.match(lib): -+ debug(DEBUG_SPAM, "present_symbol_progs adding %s, from executable %s" % (' '.join(names), lib)) -+ for name in names: -+ progs = present_symbol_progs.get(name, set()) -+ progs.add(lib) -+ present_symbol_progs[name] = progs - - # are we finished? - num_unresolved = 0 -@@ -568,6 +580,14 @@ while 1: - for name in needed_symbols: - if not name in symbol_provider: - if not needed_symbols[name].weak: -+ # WORKAROUND: Undefined symbols in a library can be provided by the application -+ # that links to the library. So if the object which requires the symbol is a library -+ # and some application can provide the symbol, the undefined symbol is skipped. -+ symbol = needed_symbols[name] -+ if so_pattern.match(symbol.object) and present_symbol_progs.get(name, None): -+ debug(DEBUG_SPAM, "symbol %s in library %s is provided by executable %s" \ -+ % (name, symbol.object, ' '.join(present_symbol_progs[name]))) -+ continue - raise Exception("No library provides non-weak %s" % name) - else: - lib = symbol_provider[name] --- -2.16.1 - diff --git a/poky/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch b/poky/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch deleted file mode 100644 index d27a48916..000000000 --- a/poky/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch +++ /dev/null @@ -1,26 +0,0 @@ -The libc6-dev in Ubuntu 9.04 is so old that the elf.h doesn't -define STT_GNU_IFUNC, so we have to define it ourselves. - -Upstream-Status: Inappropriate [other] - old release specific, maybe removable - --- Dexuan Cui (dexuan.cui@intel.com) Feb 16, 2011. - -diff --git a/src/mklibs-readelf/main.cpp b/src/mklibs-readelf/main.cpp -index 2444c39..56d93f8 100644 ---- a/src/mklibs-readelf/main.cpp -+++ b/src/mklibs-readelf/main.cpp -@@ -6,6 +6,14 @@ - #include <vector> - - #include <elf.h> -+/* -+ * The /usr/include/elf.h in some distributions(like Ubuntu 9.04) doesn't -+ * define the macro. We need to define it here. -+ */ -+#ifndef STT_GNU_IFUNC -+#define STT_GNU_IFUNC 10 /* Symbol is indirect code object */ -+#endif -+ - #include <getopt.h> - - #include "elf.hpp" diff --git a/poky/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch b/poky/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch deleted file mode 100644 index 13e4606b8..000000000 --- a/poky/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch +++ /dev/null @@ -1,81 +0,0 @@ -Remove dependency on dpkg - -Upstream-Status: Submitted - -Asking the host OS whether it supports multiarch is not useful -in a cross-compilation environment, or if the user has specified -a libdir explicitly. So this patch, based on the work of Mentor -Graphics, removes mklibs's dependency on dpkg package. - -Signed-off-by: Yuanjie Huang <Yuanjie.Huang@windriver.com> - src/mklibs | 30 +++++++++++++++++++----------- - 1 file changed, 19 insertions(+), 11 deletions(-) - -diff --git a/src/mklibs b/src/mklibs -index d9b784b..c5614ea 100755 ---- a/src/mklibs -+++ b/src/mklibs -@@ -261,6 +261,11 @@ def extract_soname(so_file): - return "" - - def multiarch(paths): -+ # Asking the host OS whether it supports multiarch is not useful -+ # in a cross-compilation environment, or if the user has specified -+ # a libdir explicitly. -+ if sysroot != "" or libdir != "": -+ return paths - devnull = open('/dev/null', 'w') - dpkg_architecture = subprocess.Popen( - ['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], -@@ -340,7 +345,7 @@ lib_path = [] - dest_path = "DEST" - ldlib = "LDLIB" - include_default_lib_path = "yes" --default_lib_path = multiarch(["/lib/", "/usr/lib/", "/usr/X11R6/lib/"]) -+default_lib_path = ["/lib/", "/usr/lib/", "/usr/X11R6/lib/"] - libc_extras_dir = "/usr/lib/libc_pic" - libc_extras_dir_default = True - libdir = "lib" -@@ -386,7 +391,7 @@ for opt, arg in optlist: - elif opt == "--libdir": - libdir = arg - elif opt in ("--help", "-h"): -- usage(0) -+ usage(0) - sys.exit(0) - elif opt in ("--version", "-V"): - version(vers) -@@ -395,6 +400,7 @@ for opt, arg in optlist: - print "WARNING: unknown option: " + opt + "\targ: " + arg - - if include_default_lib_path == "yes": -+ default_lib_path = multiarch(default_lib_path) - lib_path.extend([a.replace("/lib/", "/" + libdir + "/") for a in default_lib_path]) - - if libc_extras_dir_default: -@@ -661,16 +669,16 @@ ld_path_name = os.path.dirname(ldlib) - ld_full_path = "../" + ldlib - ld_file = find_lib(ld_file_name) - --if ld_path_name != "/lib": -- if os.access(dest_path + "/" + ld_file_name, os.F_OK): -- os.remove(dest_path + "/" + ld_file_name) -+#if ld_path_name != "/lib": -+# if os.access(dest_path + "/" + ld_file_name, os.F_OK): -+# os.remove(dest_path + "/" + ld_file_name) - --if not os.path.exists(dest_path + "/../" + ld_path_name): -- os.mkdir(dest_path + "/../" + ld_path_name) -+#if not os.path.exists(dest_path + "/../" + ld_path_name): -+# os.mkdir(dest_path + "/../" + ld_path_name) - --if not os.access(dest_path + "/" + ld_full_path, os.F_OK): -- debug(DEBUG_NORMAL, "I: stripping and copying dynamic linker to " + ld_full_path) -+if not os.access(dest_path + "/" + ld_file_name, os.F_OK): -+ debug(DEBUG_NORMAL, "I: stripping and copying dynamic linker to " + ld_file_name) - command(target + "objcopy", "--strip-unneeded -R .note -R .comment", -- ld_file, dest_path + "/" + ld_full_path) -+ ld_file, dest_path + "/" + ld_file_name) - --os.chmod(dest_path + "/" + ld_full_path, 0755) -+os.chmod(dest_path + "/" + ld_file_name, 0755) diff --git a/poky/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch b/poky/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch deleted file mode 100644 index bc56593e6..000000000 --- a/poky/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch +++ /dev/null @@ -1,34 +0,0 @@ -From eddf04c7f8312e9c29cdb24e431b7e4fb2cc70ed Mon Sep 17 00:00:00 2001 -From: Yuanjie Huang <yuanjie.huang@windriver.com> -Date: Wed, 15 Apr 2015 14:00:06 +0800 -Subject: [PATCH] Show GNU unique symbols as provided symbols - -Upstream-Status: Submitted - -GNU Unique symbol is a GNU extension employed by new version of GCC -by default. Even Standard C++ library in GCC 4.9 provides some symbols, -such as _ZNSs4_Rep20_S_empty_rep_storageE in this binding type instead -of ELF standard weak binding. -This patch adds support of this new binding type to mklibs-readelf. - -Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com> ---- - src/mklibs-readelf/main.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/mklibs-readelf/main.cpp b/src/mklibs-readelf/main.cpp -index 56d93f8..0134530 100644 ---- a/src/mklibs-readelf/main.cpp -+++ b/src/mklibs-readelf/main.cpp -@@ -88,7 +88,7 @@ static void process_symbols_provided (const Elf::section_type<Elf::section_type_ - uint8_t type = symbol->get_type (); - const std::string &name = symbol->get_name_string (); - -- if (bind != STB_GLOBAL && bind != STB_WEAK) -+ if (bind != STB_GLOBAL && bind != STB_WEAK && bind != STB_GNU_UNIQUE) - continue; - if (shndx == SHN_UNDEF || shndx == SHN_ABS) - continue; --- -1.8.5.2.233.g932f7e4 - diff --git a/poky/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch b/poky/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch deleted file mode 100644 index 75500a029..000000000 --- a/poky/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch +++ /dev/null @@ -1,18 +0,0 @@ -In cross builds we will have to respect sysroot - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending - -Index: mklibs-0.1.39/src/mklibs -=================================================================== ---- mklibs-0.1.39.orig/src/mklibs 2014-03-01 18:25:36.000000000 +0000 -+++ mklibs-0.1.39/src/mklibs 2014-10-19 00:51:46.813534596 +0000 -@@ -495,7 +495,7 @@ - present_symbols = {} - checked_libs = small_libs - checked_libs.extend(available_libs) -- checked_libs.append(ldlib) -+ checked_libs.append(sysroot + ldlib) - for lib in checked_libs: - for symbol in provided_symbols(lib): - debug(DEBUG_SPAM, "present_symbols adding %s" % symbol) diff --git a/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb b/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb deleted file mode 100644 index 1784af1f4..000000000 --- a/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "Shared library optimisation tool" -DESCRIPTION = "mklibs produces cut-down shared libraries that contain only the routines required by a particular set of executables." -HOMEPAGE = "https://launchpad.net/mklibs" -SECTION = "devel" -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://debian/copyright;md5=98d31037b13d896e33890738ef01af64" - -SRC_URI = "http://snapshot.debian.org/archive/debian/20180828T214102Z/pool/main/m/mklibs/mklibs_${PV}.tar.xz \ - file://ac_init_fix.patch\ - file://fix_STT_GNU_IFUNC.patch\ - file://sysrooted-ldso.patch \ - file://avoid-failure-on-symbol-provided-by-application.patch \ - file://show-GNU-unique-symbols-as-provided-symbols.patch \ - file://fix_cross_compile.patch \ -" - -SRC_URI[md5sum] = "6b6eeb9b4016c6a7317acc28c89e32cc" -SRC_URI[sha256sum] = "3af0b6bd35e5b6fc58d8b68827fbae2ff6b7e20dd2b238ccb9b49d84722066c2" - -UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/m/mklibs/" - -inherit autotools gettext native diff --git a/poky/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch b/poky/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch deleted file mode 100644 index 12707357b..000000000 --- a/poky/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 04fbe6ddb5f1e02efbcae3cdf5beb16757a98948 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 10 May 2019 12:58:01 -0700 -Subject: [PATCH] mmc_cmd.c: Use extra braces when initializing subobjects - -clang warns with -Werror,-Wmissing-braces, as following error -| mmc_cmds.c:1886:36: error: suggest braces around initialization of subobject [-Werror,-W -missing-braces] -| struct rpmb_frame frame_status = {0}; -| ^ -| {} - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - mmc_cmds.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/mmc_cmds.c b/mmc_cmds.c -index 19a9da1..838e8c3 100644 ---- a/mmc_cmds.c -+++ b/mmc_cmds.c -@@ -1883,7 +1883,7 @@ static int do_rpmb_op(int fd, - u_int16_t rpmb_type; - struct mmc_ioc_multi_cmd *mioc; - struct mmc_ioc_cmd *ioc; -- struct rpmb_frame frame_status = {0}; -+ struct rpmb_frame frame_status = {{0}}; - - if (!frame_in || !frame_out || !out_cnt) - return -EINVAL; diff --git a/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb b/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb index 8fe606915..bdd0bf7f1 100644 --- a/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb +++ b/poky/meta/recipes-devtools/mmc/mmc-utils_git.bb @@ -5,13 +5,11 @@ LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://mmc.c;beginline=1;endline=20;md5=fae32792e20f4d27ade1c5a762d16b7d" SRCBRANCH ?= "master" -SRCREV = "73d6c59af8d1bcedf5de4aa1f5d5b7f765f545f5" +SRCREV = "43282e80e174cc73b09b81a4d17cb3a7b4dc5cfc" PV = "0.1+git${SRCPV}" -SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git;branch=${SRCBRANCH} \ - file://0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch \ - " +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git;branch=${SRCBRANCH}" UPSTREAM_CHECK_COMMITS = "1" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/mtools/mtools_4.0.26.bb b/poky/meta/recipes-devtools/mtools/mtools_4.0.29.bb index 493871306..38de1dd92 100644 --- a/poky/meta/recipes-devtools/mtools/mtools_4.0.26.bb +++ b/poky/meta/recipes-devtools/mtools/mtools_4.0.29.bb @@ -24,7 +24,7 @@ RRECOMMENDS_${PN}_libc-glibc = "\ glibc-gconv-ibm866 \ glibc-gconv-ibm869 \ " -SRC_URI[sha256sum] = "539f1c8b476a16e198d8bcb10a5799e22e69de49d854f7dbd85b64c2a45dea1a" +SRC_URI[sha256sum] = "c6b50b4603e7afe54ba0109094669373028db9af743f5c541bca4b7664aefec7" SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \ file://mtools-makeinfo.patch \ diff --git a/poky/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.3.bb b/poky/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.5.bb index ce299d6b6..93d291110 100644 --- a/poky/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.3.bb +++ b/poky/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.5.bb @@ -12,8 +12,8 @@ SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV " UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/" -SRC_URI[md5sum] = "7bbadb3c381f3ea935b21d3bb8cc4671" -SRC_URI[sha256sum] = "046517600fb0aed6c4645edefe02281f4fa2f1c02f71596152d93172452c0b01" +SRC_URI[md5sum] = "025b19744e5c7fc1c8380e17df1fcc64" +SRC_URI[sha256sum] = "528635e674addea5c2b3a3268404ad04a952c4f410d17c3d754f5dd5529770c9" TARGET_CC_ARCH += "${LDFLAGS}" diff --git a/poky/meta/recipes-devtools/opkg/opkg/0001-tests-let-the-OS-negotiate-relative-package-dirs.patch b/poky/meta/recipes-devtools/opkg/opkg/0001-tests-let-the-OS-negotiate-relative-package-dirs.patch deleted file mode 100644 index 33b7280e5..000000000 --- a/poky/meta/recipes-devtools/opkg/opkg/0001-tests-let-the-OS-negotiate-relative-package-dirs.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 4acda6d01c5abd33f1a1a3275fd695363f59473f Mon Sep 17 00:00:00 2001 -From: Alex Stewart <alex.stewart@ni.com> -Date: Tue, 15 Dec 2020 15:17:54 -0600 -Subject: [opkg][opkg-0.4.4 PATCH] tests: let the OS negotiate relative package - dirs - -In cases where a regression test requires that a package be installed to -a subdirectory in the test feed, the opk.py module will attempt to -resolve the subdirectory and rebase it to the root of the test feed. - -This is unnecessary, since all operations which make use of the -subdirectory path do so from the perspective of the test feed already. -Further, the rebase implementation breaks in cases where the test feed -is beyond a symlink. - -Remove the resolve-and-rebase logic, and allow the OS to negotiate the -relative path. - -Upstream-Status: Submitted [https://groups.google.com/g/opkg-devel/c/dE1o7_OVQSY] - -Signed-off-by: Alex Stewart <alex.stewart@ni.com> ---- - tests/opk.py | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/tests/opk.py b/tests/opk.py -index 692339567f72441766c8e658edc5bdf6a339f77d..711abacaeb328283e31524f6a49305fc7d39696a 100644 ---- a/tests/opk.py -+++ b/tests/opk.py -@@ -58,9 +58,7 @@ class Opk: - if 'Version' not in control.keys(): - control['Version'] = '1.0' - if subdirectory is not None: -- subdir = Path(subdirectory).resolve() -- opkdir = Path(cfg.opkdir) -- self._relative_dir = subdir.relative_to(opkdir) -+ self._relative_dir = Path(subdirectory) - else: - self._relative_dir = None - self.control = control --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/opkg/opkg/sourcedateepoch.patch b/poky/meta/recipes-devtools/opkg/opkg/sourcedateepoch.patch deleted file mode 100644 index 4578fa33b..000000000 --- a/poky/meta/recipes-devtools/opkg/opkg/sourcedateepoch.patch +++ /dev/null @@ -1,24 +0,0 @@ -Having CLEAN_DATE come from the current date doesn't allow for build -reproducibility. Add the option of using SOURCE_DATE_EPOCH if set -which for OE, it will be. - -Upstream-Status: Pending -RP 2021/2/2 - -Index: opkg-0.4.4/configure.ac -=================================================================== ---- opkg-0.4.4.orig/configure.ac -+++ opkg-0.4.4/configure.ac -@@ -281,7 +281,11 @@ AC_FUNC_UTIME_NULL - AC_FUNC_VPRINTF - AC_CHECK_FUNCS([memmove memset mkdir regcomp strchr strcspn strdup strerror strndup strrchr strstr strtol strtoul sysinfo utime]) - --CLEAN_DATE=`date +"%B %Y" | tr -d '\n'` -+if ! test -z "$SOURCE_DATE_EPOCH" ; then -+ CLEAN_DATE=`LC_ALL=C date -d @$SOURCE_DATE_EPOCH +"%B %Y" | tr -d '\n'` -+else -+ CLEAN_DATE=`date +"%B %Y" | tr -d '\n'` -+fi - - AC_SUBST([CLEAN_DATE]) - diff --git a/poky/meta/recipes-devtools/opkg/opkg_0.4.4.bb b/poky/meta/recipes-devtools/opkg/opkg_0.4.5.bb index 9eca61be2..56d6211ae 100644 --- a/poky/meta/recipes-devtools/opkg/opkg_0.4.4.bb +++ b/poky/meta/recipes-devtools/opkg/opkg_0.4.5.bb @@ -15,13 +15,11 @@ PE = "1" SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \ file://opkg.conf \ file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \ - file://0001-tests-let-the-OS-negotiate-relative-package-dirs.patch \ - file://sourcedateepoch.patch \ file://run-ptest \ " -SRC_URI[md5sum] = "345900c1d4747d58455867f9fe88ca43" -SRC_URI[sha256sum] = "2217acc58b8eb31300631ebae75e222ebc700c9c1cf6408088705d19a472c839" +SRC_URI[md5sum] = "5dc41ad37d88803b5e0f456a9c5a0811" +SRC_URI[sha256sum] = "a1214a75fa34fb9228db8da47308e0e711b1c93fd8938cf164c10fd28eb50f1e" # This needs to be before ptest inherit, otherwise all ptest files end packaged # in libopkg package if OPKGLIBDIR == libdir, because default @@ -62,6 +60,19 @@ do_install_ptest () { sed -i -e '/@PYTHONPATH=. $(PYTHON) $^/a\\t@if [ "$$?" != "0" ];then echo "FAIL:"$^;else echo "PASS:"$^;fi' ${D}${PTEST_PATH}/tests/Makefile } +WARN_QA_append += "openssl-deprecation" +QAPKGTEST[openssl-deprecation] = "package_qa_check_openssl_deprecation" +def package_qa_check_openssl_deprecation (package, d, messages): + sane = True + + pkgconfig = (d.getVar("PACKAGECONFIG") or "").split() + if pkgconfig and 'openssl' in pkgconfig: + package_qa_add_message(messages, 'openssl-deprecation', '"openssl" in opkg.bb PACKAGECONFIG. Feed signature checking with OpenSSL will be deprecated in the next opkg release. Consider using GPG checking instead.') + sane = False + + return sane + + RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config libarchive" RDEPENDS_${PN}_class-native = "" RDEPENDS_${PN}_class-nativesdk = "" diff --git a/poky/meta/recipes-devtools/patchelf/patchelf/6edec83653ce1b5fc201ff6db93b966394766814.patch b/poky/meta/recipes-devtools/patchelf/patchelf/6edec83653ce1b5fc201ff6db93b966394766814.patch new file mode 100644 index 000000000..ba35ec6ff --- /dev/null +++ b/poky/meta/recipes-devtools/patchelf/patchelf/6edec83653ce1b5fc201ff6db93b966394766814.patch @@ -0,0 +1,44 @@ +From 6edec83653ce1b5fc201ff6db93b966394766814 Mon Sep 17 00:00:00 2001 +From: rmnull <rmnull@users.noreply.github.com> +Date: Tue, 18 Aug 2020 20:22:52 +0530 +Subject: [PATCH] mark phdrs synced with sections, avoid rechecking it when + syncing note sections to segments. + +This also serves as a bug fix when a previously synced note segment +overlaps with another section and creates a false alarm. + +Upstream-Status: Backport +--- + src/patchelf.cc | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/patchelf.cc b/src/patchelf.cc +index 05ec793..622f0b6 100644 +--- a/src/patchelf.cc ++++ b/src/patchelf.cc +@@ -669,6 +669,7 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff, + memset(contents + rdi(shdr.sh_offset), 'X', rdi(shdr.sh_size)); + } + ++ std::set<unsigned int> noted_phdrs = {}; + for (auto & i : replacedSections) { + std::string sectionName = i.first; + auto & shdr = findSection(sectionName); +@@ -721,7 +722,7 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff, + shdr.sh_addralign = orig_shdr.sh_addralign; + + for (unsigned int j = 0; j < phdrs.size(); ++j) +- if (rdi(phdrs[j].p_type) == PT_NOTE) { ++ if (rdi(phdrs[j].p_type) == PT_NOTE && noted_phdrs.find(j) == noted_phdrs.end()) { + Elf_Off p_start = rdi(phdrs[j].p_offset); + Elf_Off p_end = p_start + rdi(phdrs[j].p_filesz); + Elf_Off s_start = rdi(orig_shdr.sh_offset); +@@ -739,6 +740,8 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff, + phdrs[j].p_offset = shdr.sh_offset; + phdrs[j].p_vaddr = phdrs[j].p_paddr = shdr.sh_addr; + phdrs[j].p_filesz = phdrs[j].p_memsz = shdr.sh_size; ++ ++ noted_phdrs.insert(j); + } + } + diff --git a/poky/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch b/poky/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch new file mode 100644 index 000000000..a06876e50 --- /dev/null +++ b/poky/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch @@ -0,0 +1,44 @@ +If a binary has multiple SHT_NOTE sections and corresponding PT_NOTE +headers, we can see the error: + +patchelf: cannot normalize PT_NOTE segment: non-contiguous SHT_NOTE sections + +if the SHT_NOTE sections aren't sized to end on aligned boundaries. An example +would be a binary with: + + [ 2] .note.ABI-tag NOTE 00000000000002f4 000002f4 + 0000000000000020 0000000000000000 A 0 0 4 + [ 3] .note.gnu.propert NOTE 0000000000000318 00000318 + 0000000000000030 0000000000000000 A 0 0 8 + [ 4] .note.gnu.build-i NOTE 0000000000000348 00000348 + 0000000000000024 0000000000000000 A 0 0 4 + + NOTE 0x0000000000000318 0x0000000000000318 0x0000000000000318 + 0x0000000000000030 0x0000000000000030 R 0x8 + NOTE 0x00000000000002f4 0x00000000000002f4 0x00000000000002f4 + 0x0000000000000078 0x0000000000000074 R 0x4 + +since the PT_NOTE section at 2f4 covers [2] and [3] but the code +calclates curr_off should be 314, not the 318 in the binary. This +is an alignment issue. + +To fix this, we need to round curr_off to the next section alignment. + +Upstream-Status: Submitted [https://github.com/NixOS/patchelf/pull/274] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: git/src/patchelf.cc +=================================================================== +--- git.orig/src/patchelf.cc ++++ git/src/patchelf.cc +@@ -1010,8 +1010,9 @@ void ElfFile<ElfFileParamNames>::normali + size_t size = 0; + for (const auto & shdr : shdrs) { + if (rdi(shdr.sh_type) != SHT_NOTE) continue; +- if (rdi(shdr.sh_offset) != curr_off) continue; ++ if (rdi(shdr.sh_offset) != roundUp(curr_off, rdi(shdr.sh_addralign))) continue; + size = rdi(shdr.sh_size); ++ curr_off = roundUp(curr_off, rdi(shdr.sh_addralign)); + break; + } + if (size == 0) diff --git a/poky/meta/recipes-devtools/patchelf/patchelf_0.12.bb b/poky/meta/recipes-devtools/patchelf/patchelf_0.12.bb index 95886c6d3..7c97ea078 100644 --- a/poky/meta/recipes-devtools/patchelf/patchelf_0.12.bb +++ b/poky/meta/recipes-devtools/patchelf/patchelf_0.12.bb @@ -6,6 +6,8 @@ LICENSE = "GPLv3" SRC_URI = "git://github.com/NixOS/patchelf;protocol=https \ file://handle-read-only-files.patch \ + file://6edec83653ce1b5fc201ff6db93b966394766814.patch \ + file://alignmentfix.patch \ " SRCREV = "8d3a16e97294e3c5521c61b4c8835499c9918264" diff --git a/poky/meta/recipes-devtools/perl-cross/files/0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch b/poky/meta/recipes-devtools/perl-cross/files/0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch new file mode 100644 index 000000000..744e4e09c --- /dev/null +++ b/poky/meta/recipes-devtools/perl-cross/files/0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch @@ -0,0 +1,27 @@ +From d22f2bb5afcd278b68999f5ce0362328fc8c7723 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 3 Jun 2021 18:50:56 +0200 +Subject: [PATCH] cnf/configure_func_sel.sh: disable thread_safe_nl_langinfo_l + +Upstream-Status: Submitted [https://github.com/arsv/perl-cross/pull/115] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + cnf/configure_func_sel.sh | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/cnf/configure_func_sel.sh b/cnf/configure_func_sel.sh +index f48294f..90d350d 100644 +--- a/cnf/configure_func_sel.sh ++++ b/cnf/configure_func_sel.sh +@@ -97,5 +97,9 @@ else + result "irrelevant" + fi + +-# Assume nl_langinfo_l is threadsafe if available +-define d_thread_safe_nl_langinfo_l "$d_nl_langinfo_l" ++# thread_safe_nl_langinfo_l is not enabled by default ++# by upstream, and causes t/Langinfo.t to fail when it is ++# (starting from 5.34.0). This means the configuration is ++# either not well tested, or not at all tested, so we should ++# pick a safer option. ++define d_thread_safe_nl_langinfo_l "undef" diff --git a/poky/meta/recipes-devtools/perl/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch b/poky/meta/recipes-devtools/perl-cross/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch index 3b0fc453e..3b0fc453e 100644 --- a/poky/meta/recipes-devtools/perl/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch +++ b/poky/meta/recipes-devtools/perl-cross/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch diff --git a/poky/meta/recipes-devtools/perl/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch b/poky/meta/recipes-devtools/perl-cross/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch index 0aaeaa29e..0aaeaa29e 100644 --- a/poky/meta/recipes-devtools/perl/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch +++ b/poky/meta/recipes-devtools/perl-cross/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch diff --git a/poky/meta/recipes-devtools/perl/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch b/poky/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch index e7985036a..e7985036a 100644 --- a/poky/meta/recipes-devtools/perl/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch +++ b/poky/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch diff --git a/poky/meta/recipes-devtools/perl-cross/files/README.md b/poky/meta/recipes-devtools/perl-cross/files/README.md new file mode 100644 index 000000000..93217245c --- /dev/null +++ b/poky/meta/recipes-devtools/perl-cross/files/README.md @@ -0,0 +1,29 @@ +**perl-cross** provides configure script, top-level Makefile +and some auxiliary files for [perl](http://www.perl.org), +with the primary emphasis on cross-compiling the source. + + # Get perl and perl-cross sources + curl -L -O http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz + curl -L -O https://github.com/arsv/perl-cross/releases/download/1.1.3/perl-cross-1.1.3.tar.gz + + # Unpack perl-cross over perl, overwriting Makefile + tar -zxf perl-5.24.1.tar.gz + cd perl-5.24.1 + tar --strip-components=1 -zxf ../perl-cross-1.1.3.tar.gz + + # Proceed as usual with most autoconfed packages + ./configure --target=arm-linux-gnueabi --prefix=/usr -Duseshrplib + make -j4 + make DESTDIR=/path/to/staging/dir install + +Unlike mainline Perl, this configure never runs any target executables, +relying solely on compile/link tests and pre-defined hints. +On the flip side, it is only meant to run on resonably sane modern unix systems. + +Check [project pages](http://arsv.github.io/perl-cross/) for more info. +In particular, [configure usage](http://arsv.github.io/perl-cross/usage.html) +lists available configure options. + +Perl-cross is a free software licensed under the same terms +as the original perl source. +See LICENSE, Copying and Artistic files. diff --git a/poky/meta/recipes-devtools/perl-cross/files/determinism.patch b/poky/meta/recipes-devtools/perl-cross/files/determinism.patch new file mode 100644 index 000000000..e9bf752bc --- /dev/null +++ b/poky/meta/recipes-devtools/perl-cross/files/determinism.patch @@ -0,0 +1,46 @@ +Fixes to make the perl build reproducible: + +a) Remove the \n from configure_attr.sh since it gets quoted differently depending on + whether the shell is bash or dash which can cause the test result to be incorrect. + Reported upstream: https://github.com/arsv/perl-cross/issues/87 + +b) Sort the order of the module lists from configure_mods.sh since otherwise + the result isn't the same leading to makefile differences. + Reported upstream: https://github.com/arsv/perl-cross/issues/88 + +c) Sort the Encode::Byte byte_t.fnm file output (and the makefile depends whilst + there for good measure) + This needs to go to upstream perl (not done) + +d) Use bash for perl-cross configure since otherwise trnl gets set to "\n" with bash + and "" with dash + Reported upstream: https://github.com/arsv/perl-cross/issues/87 + +RP 2020/2/7 + +Upstream-Status: Pending [75% submitted] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org + +Index: perl-5.30.1/cnf/configure_mods.sh +=================================================================== +--- perl-5.30.1.orig/cnf/configure_mods.sh ++++ perl-5.30.1/cnf/configure_mods.sh +@@ -82,7 +82,7 @@ extonlyif() { + } + + definetrimspaces() { +- v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//'` ++ v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//' | xargs -n1 | LANG=C sort | xargs` + define $1 "$v" + } + +Index: perl-5.30.1/cnf/configure +=================================================================== +--- perl-5.30.1.orig/cnf/configure ++++ perl-5.30.1/cnf/configure +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + + base=${0%/*}; test -z "$base" && base=. + diff --git a/poky/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb b/poky/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb new file mode 100644 index 000000000..b77bbd1fd --- /dev/null +++ b/poky/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb @@ -0,0 +1,39 @@ +SUMMARY = "Perl-cross build system" +HOMEPAGE = "https://github.com/arsv/perl-cross" +DESCRIPTION = "perl-cross provides configure script, top-level Makefile and some auxiliary files for perl, \ +with the primary emphasis on cross-compiling the source." +SECTION = "devel" +LICENSE = "Artistic-1.0 | GPL-1.0+" +# README.md is taken from https://github.com/arsv/perl-cross/blob/master/README.md +# but is not provided inside the release tarballs +LIC_FILES_CHKSUM = "file://${WORKDIR}/README.md;md5=252fcce2026b765fee1ad74d2fb07a3b" + +inherit allarch + +SRC_URI = "https://github.com/arsv/perl-cross/releases/download/${PV}/perl-cross-${PV}.tar.gz;name=perl-cross \ + file://README.md \ + file://0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch \ + file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \ + file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \ + file://determinism.patch \ + file://0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch \ + " +UPSTREAM_CHECK_URI = "https://github.com/arsv/perl-cross/releases/" + +SRC_URI[perl-cross.sha256sum] = "4010f41870d64e3957b4b8ce70ebba10a7c4a3e86c5551acb4099c3fcbb37ce5" + +S = "${WORKDIR}/perl-cross-${PV}" + +do_configure () { +} + +do_compile () { +} + +do_install_class-native() { + mkdir -p ${D}/${datadir}/perl-cross/ + cp -rf ${S}/* ${D}/${datadir}/perl-cross/ +} + +BBCLASSEXTEND = "native" + diff --git a/poky/meta/recipes-devtools/perl/files/determinism.patch b/poky/meta/recipes-devtools/perl/files/determinism.patch index ccdd52a0d..aa85ccef1 100644 --- a/poky/meta/recipes-devtools/perl/files/determinism.patch +++ b/poky/meta/recipes-devtools/perl/files/determinism.patch @@ -21,19 +21,6 @@ RP 2020/2/7 Upstream-Status: Pending [75% submitted] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org -Index: perl-5.30.1/cnf/configure_mods.sh -=================================================================== ---- perl-5.30.1.orig/cnf/configure_mods.sh -+++ perl-5.30.1/cnf/configure_mods.sh -@@ -82,7 +82,7 @@ extonlyif() { - } - - definetrimspaces() { -- v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//'` -+ v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//' | xargs -n1 | LANG=C sort | xargs` - define $1 "$v" - } - Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL =================================================================== --- perl-5.30.1.orig/cpan/Encode/Byte/Makefile.PL @@ -56,13 +43,3 @@ Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL { print FILELIST $self->catfile($dir,$file) . "\n"; } -Index: perl-5.30.1/cnf/configure -=================================================================== ---- perl-5.30.1.orig/cnf/configure -+++ perl-5.30.1/cnf/configure -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - - base=${0%/*}; test -z "$base" && base=. - diff --git a/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb b/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb index c44ee6340..2234f6a74 100644 --- a/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb +++ b/poky/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb @@ -17,8 +17,8 @@ DEPENDS += "perl" SRC_URI = "https://cpan.metacpan.org/authors/id/H/HA/${CPAN_AUTHOR}/${CPAN_NAME}-${PV}.tar.gz" -SRC_URI[md5sum] = "d5c96d51d8d5510f7c0b7f354c49af1c" -SRC_URI[sha256sum] = "77f9fff0c96c5e09f34d0416b3533c3319f7cd0bb1f7fe8f8072ad59f433f0e5" +SRC_URI[md5sum] = "5643cd323afb77d20363acbaf9b12bcc" +SRC_URI[sha256sum] = "571c21193ad16195df58b06b268798796a391b398c443271721d2cc0fb7c4ac3" S = "${WORKDIR}/${CPAN_NAME}-${PV}" diff --git a/poky/meta/recipes-devtools/perl/perl_5.32.1.bb b/poky/meta/recipes-devtools/perl/perl_5.34.0.bb index b28040c7f..7935a5872 100644 --- a/poky/meta/recipes-devtools/perl/perl_5.32.1.bb +++ b/poky/meta/recipes-devtools/perl/perl_5.34.0.bb @@ -9,18 +9,14 @@ LIC_FILES_CHKSUM = "file://Copying;md5=5b122a36d0f6dc55279a0ebc69f3c60b \ SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \ - https://github.com/arsv/perl-cross/releases/download/1.3.5/perl-cross-1.3.5.tar.gz;name=perl-cross \ file://perl-rdepends.txt \ - file://0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch \ file://0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch \ file://0001-Somehow-this-module-breaks-through-the-perl-wrapper-.patch \ file://errno_ver.diff \ file://native-perlinc.patch \ - file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \ file://perl-dynloader.patch \ - file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \ file://0002-Constant-Fix-up-shebang.patch \ - file://determinism.patch \ + file://determinism.patch \ " SRC_URI_append_class-native = " \ file://perl-configpm-switch.patch \ @@ -29,14 +25,13 @@ SRC_URI_append_class-target = " \ file://encodefix.patch \ " -SRC_URI[perl.sha256sum] = "03b693901cd8ae807231b1787798cf1f2e0b8a56218d07b7da44f784a7caeb2c" -SRC_URI[perl-cross.sha256sum] = "91c66f6b2b99fccfd4fee14660b677380b0c98f9456359e91449798c2ad2ef25" +SRC_URI[perl.sha256sum] = "551efc818b968b05216024fb0b727ef2ad4c100f8cb6b43fab615fa78ae5be9a" S = "${WORKDIR}/perl-${PV}" inherit upstream-version-is-even update-alternatives -DEPENDS += "zlib virtual/crypt" +DEPENDS += "perlcross-native zlib virtual/crypt" PERL_LIB_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}.0" @@ -47,12 +42,8 @@ PACKAGECONFIG[gdbm] = ",-Ui_gdbm,gdbm" # Don't generate comments in enc2xs output files. They are not reproducible export ENC2XS_NO_COMMENTS = "1" -do_unpack_append() { - bb.build.exec_func('do_copy_perlcross', d) -} - -do_copy_perlcross() { - cp -rfp ${WORKDIR}/perl-cross*/* ${S} +do_configure_prepend() { + cp -rfp ${STAGING_DATADIR_NATIVE}/perl-cross/* ${S} } do_configure_class-target() { diff --git a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.4.bb index 12496c384..93832105f 100644 --- a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb +++ b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.4.bb @@ -20,7 +20,7 @@ SRC_URI = "\ file://pkg-config-native.in \ file://pkg-config-esdk.in \ " -SRC_URI[sha256sum] = "b846aea51cf696c3392a0ae58bef93e2e72f8e7073ca6ad1ed8b01c85871f9c0" +SRC_URI[sha256sum] = "d73f32c248a4591139a6b17777c80d4deab6b414ec2b3d21d0a24be348c476ab" inherit autotools diff --git a/poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch b/poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch new file mode 100644 index 000000000..bee458572 --- /dev/null +++ b/poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch @@ -0,0 +1,144 @@ +From 7e821441c482917e54435a07893272d87d3ad9e5 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter <reiter.christoph@gmail.com> +Date: Fri, 24 Aug 2018 19:43:04 +0200 +Subject: [PATCH] autotools: remove support for the __int64 type. See #1313 + +__int64 was the 64bit type for Visual Studio before it added support for +"long long" with VS2013. I think this was used to build glib with mingw and +make the result usable for VS 6.0 which didn't support "long long" (??) + +Given that newer MSVC links against a different crt and mixing is not supported +and everything supports "long long" nowadays just remove it. + +This is also a cleanup for printf format changes needed for #1497 + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Backport [https://github.com/GNOME/glib/commit/7e821441c4] +--- + configure.ac | 43 ++++--------------------------------------- + 1 file changed, 4 insertions(+), 39 deletions(-) + +--- a/glib/configure.ac ++++ b/glib/configure.ac +@@ -550,7 +550,6 @@ AC_CHECK_SIZEOF(long) + AC_CHECK_SIZEOF(int) + AC_CHECK_SIZEOF(void *) + AC_CHECK_SIZEOF(long long) +-AC_CHECK_SIZEOF(__int64) + + AC_CACHE_CHECK([for sig_atomic_t], ac_cv_type_sig_atomic_t, + [AC_TRY_LINK([#include <signal.h> +@@ -564,7 +563,7 @@ if test x$ac_cv_type_sig_atomic_t = xyes + [Define if you have the 'sig_atomic_t' type.]) + fi + +-if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then ++if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 ; then + : + else + AC_MSG_ERROR([ +@@ -573,7 +572,7 @@ else + ]) + fi + +-AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [ ++AS_IF([test x$ac_cv_sizeof_long_long = x8], [ + # long long is a 64 bit integer. + AC_MSG_CHECKING(for format to printf and scanf a guint64) + AC_CACHE_VAL(glib_cv_long_long_format,[ +@@ -599,14 +598,6 @@ AS_IF([test x$glib_native_win32 != xyes + AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64]) + fi + ], [AC_MSG_RESULT(none)]) +-],[ test x$ac_cv_sizeof___int64 = x8], [ +- # __int64 is a 64 bit integer. +- AC_MSG_CHECKING(for format to printf and scanf a guint64) +- # We know this is MSVCRT.DLL, and what the formats are +- glib_cv_long_long_format=I64 +- AC_MSG_RESULT(%${glib_cv_long_long_format}u) +- AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long]) +- AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64]) + ]) + + AC_C_CONST +@@ -872,9 +863,6 @@ case $ac_cv_sizeof_size_t in + $ac_cv_sizeof_long_long) + glib_size_type='long long' + ;; +- $ac_cv_sizeof__int64) +- glib_size_type='__int64' +- ;; + *) AC_MSG_ERROR([No type matching size_t in size]) + ;; + esac +@@ -931,9 +919,6 @@ case $ac_cv_sizeof_ssize_t in + $ac_cv_sizeof_long_long) + glib_ssize_type='long long' + ;; +- $ac_cv_sizeof__int64) +- glib_ssize_type='__int64' +- ;; + *) AC_MSG_ERROR([No type matching ssize_t in size]) + ;; + esac +@@ -2985,17 +2970,6 @@ $ac_cv_sizeof_long_long) + gint64_constant='(G_GNUC_EXTENSION (val##LL))' + guint64_constant='(G_GNUC_EXTENSION (val##ULL))' + ;; +-$ac_cv_sizeof___int64) +- gint64='__int64' +- if test -n "$glib_cv_long_long_format"; then +- gint64_modifier='"'$glib_cv_long_long_format'"' +- gint64_format='"'$glib_cv_long_long_format'i"' +- guint64_format='"'$glib_cv_long_long_format'u"' +- fi +- glib_extension= +- gint64_constant='(val##i64)' +- guint64_constant='(val##ui64)' +- ;; + esac + glib_size_t=$ac_cv_sizeof_size_t + glib_ssize_t=$ac_cv_sizeof_ssize_t +@@ -3020,7 +2994,7 @@ long) + gsize_format='"lu"' + glib_msize_type='LONG' + ;; +-"long long"|__int64) ++"long long") + gsize_modifier='"I64"' + gsize_format='"I64u"' + glib_msize_type='INT64' +@@ -3043,7 +3017,7 @@ long) + gssize_format='"li"' + glib_mssize_type='LONG' + ;; +-"long long"|__int64) ++"long long") + gssize_modifier='"I64"' + gssize_format='"I64i"' + glib_mssize_type='INT64' +@@ -3080,14 +3054,6 @@ $ac_cv_sizeof_long_long) + glib_gpi_cast='(gint64)' + glib_gpui_cast='(guint64)' + ;; +-$ac_cv_sizeof___int64) +- glib_intptr_type_define=__int64 +- gintptr_modifier='"I64"' +- gintptr_format='"I64i"' +- guintptr_format='"I64u"' +- glib_gpi_cast='(gint64)' +- glib_gpui_cast='(guint64)' +- ;; + *) + glib_unknown_void_p=yes + ;; +@@ -3258,9 +3224,6 @@ $ac_cv_sizeof_long) + $ac_cv_sizeof_long_long) + gint64='long long' + ;; +-$ac_cv_sizeof___int64) +- gint64='__int64' +- ;; + esac + + AC_CHECK_TYPE([guint32],,,[typedef unsigned $gint32 guint32;]) diff --git a/poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch b/poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch new file mode 100644 index 000000000..a4e92da34 --- /dev/null +++ b/poky/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch @@ -0,0 +1,68 @@ +From 3d7cde654c4c6f3bdad32f5521f28f5802a7c377 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter <reiter.christoph@gmail.com> +Date: Fri, 24 Aug 2018 21:46:47 +0200 +Subject: [PATCH] autotools: use C99 printf format specifiers on Windows. Fixes + #1497 + +Since we now require a C99 compatible printf and use gnulib on Windows, +we also mark our printf functions as gnu_printf. GCC complains about the +Windows specific I64 specifiers we still write to glibconfig.h with the +autotools build. + +To fix this switch all I64(x) to ll(x). + +This also makes the glibconfig.h output for those macros match the ones +we get when using meson. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Backport [https://github.com/GNOME/glib/commit/3d7cde654c] +--- + configure.ac | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +--- a/glib/configure.ac ++++ b/glib/configure.ac +@@ -576,7 +576,7 @@ AS_IF([test x$ac_cv_sizeof_long_long = x + # long long is a 64 bit integer. + AC_MSG_CHECKING(for format to printf and scanf a guint64) + AC_CACHE_VAL(glib_cv_long_long_format,[ +- for format in ll q I64; do ++ for format in ll q; do + AC_TRY_RUN([#include <stdio.h> + int main() + { +@@ -2995,8 +2995,8 @@ long) + glib_msize_type='LONG' + ;; + "long long") +- gsize_modifier='"I64"' +- gsize_format='"I64u"' ++ gsize_modifier='"ll"' ++ gsize_format='"llu"' + glib_msize_type='INT64' + ;; + esac +@@ -3018,8 +3018,8 @@ long) + glib_mssize_type='LONG' + ;; + "long long") +- gssize_modifier='"I64"' +- gssize_format='"I64i"' ++ gssize_modifier='"ll"' ++ gssize_format='"lli"' + glib_mssize_type='INT64' + ;; + esac +@@ -3048,9 +3048,9 @@ $ac_cv_sizeof_long) + ;; + $ac_cv_sizeof_long_long) + glib_intptr_type_define='long long' +- gintptr_modifier='"I64"' +- gintptr_format='"I64i"' +- guintptr_format='"I64u"' ++ gintptr_modifier='"ll"' ++ gintptr_format='"lli"' ++ guintptr_format='"llu"' + glib_gpi_cast='(gint64)' + glib_gpui_cast='(guint64)' + ;; diff --git a/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb b/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb index 52ef2a977..964d85fa3 100644 --- a/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb +++ b/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb @@ -11,11 +11,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" SRCREV = "edf8e6f0ea77ede073f07bff0d2ae1fc7a38103b" PV = "0.29.2+git${SRCPV}" -SRC_URI = "git://anongit.freedesktop.org/pkg-config \ +SRC_URI = "git://gitlab.freedesktop.org/pkg-config/pkg-config.git;branch=master;protocol=https \ file://pkg-config-esdk.in \ file://pkg-config-native.in \ file://fix-glib-configure-libtool-usage.patch \ file://0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch \ + file://0001-autotools-remove-support-for-the-__int64-type.-See-1.patch \ + file://0001-autotools-use-C99-printf-format-specifiers-on-Window.patch \ " S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-devtools/pseudo/pseudo_git.bb b/poky/meta/recipes-devtools/pseudo/pseudo_git.bb index 17bd02c27..4eab13312 100644 --- a/poky/meta/recipes-devtools/pseudo/pseudo_git.bb +++ b/poky/meta/recipes-devtools/pseudo/pseudo_git.bb @@ -6,7 +6,7 @@ SRC_URI = "git://git.yoctoproject.org/pseudo;branch=oe-core \ file://fallback-group \ " -SRCREV = "60e25a36558f1f07dcce1a044fe976b475bec42b" +SRCREV = "ee24ebec9e5a11dd5208c9be2870f35eab3b9e20" S = "${WORKDIR}/git" PV = "1.9.0+git${SRCPV}" diff --git a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.1.bb b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.3.bb index 6c3b88678..d160fd655 100644 --- a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.1.bb +++ b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.20.3.bb @@ -12,7 +12,7 @@ SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/v${PV}/${S file://0001-numpy-core-Define-RISCV-32-support.patch \ file://run-ptest \ " -SRC_URI[sha256sum] = "9bf51d69ebb4ca9239e55bedc2185fe2c0ec222da0adee7ece4125414676846d" +SRC_URI[sha256sum] = "b7340f0628ce1823c151e3d2a2a8cba2a3ff1357fba4475a24b1816e75c21f90" UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases" UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch index 680edbe70..1082fe79b 100644 --- a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch +++ b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch @@ -1,4 +1,4 @@ -From 6380cc63f79abe8b8404c9be5ed5f213a70c8c6a Mon Sep 17 00:00:00 2001 +From f6afc18e08a6c428ce8becd114c535a6840f1b9f Mon Sep 17 00:00:00 2001 From: Hongxu Jia <hongxu.jia@windriver.com> Date: Tue, 17 Jul 2018 10:13:38 +0800 Subject: [PATCH] conditionally do not fetch code by easy_install @@ -15,7 +15,7 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> 1 file changed, 5 insertions(+) diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py -index eeb21b5..eca1edd 100644 +index 45adb6a..9ac3342 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -636,6 +636,11 @@ class easy_install(Command): diff --git a/poky/meta/recipes-devtools/python/python-cython.inc b/poky/meta/recipes-devtools/python/python-cython.inc index 0e6bac06a..04fd2ec2b 100644 --- a/poky/meta/recipes-devtools/python/python-cython.inc +++ b/poky/meta/recipes-devtools/python/python-cython.inc @@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa" PYPI_PACKAGE = "Cython" BBCLASSEXTEND = "native nativesdk" -SRC_URI[sha256sum] = "df6b83c7a6d1d967ea89a2903e4a931377634a297459652e4551734c48195406" +SRC_URI[sha256sum] = "6a0d31452f0245daacb14c979c77e093eb1a546c760816b5eed0047686baad8e" UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar" inherit pypi diff --git a/poky/meta/recipes-devtools/python/python-gitdb.inc b/poky/meta/recipes-devtools/python/python-gitdb.inc index 618d85ff8..53d925a49 100644 --- a/poky/meta/recipes-devtools/python/python-gitdb.inc +++ b/poky/meta/recipes-devtools/python/python-gitdb.inc @@ -8,7 +8,7 @@ inherit pypi PYPI_PACKAGE = "gitdb" -SRC_URI[sha256sum] = "c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9" +SRC_URI[sha256sum] = "96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005" DEPENDS = "${PYTHON_PN}-async ${PYTHON_PN}-setuptools-native ${PYTHON_PN}-smmap" diff --git a/poky/meta/recipes-devtools/python/python3-attrs_20.3.0.bb b/poky/meta/recipes-devtools/python/python3-attrs_21.2.0.bb index 55cfda718..e89fbc96f 100644 --- a/poky/meta/recipes-devtools/python/python3-attrs_20.3.0.bb +++ b/poky/meta/recipes-devtools/python/python3-attrs_21.2.0.bb @@ -3,8 +3,7 @@ HOMEPAGE = "http://www.attrs.org/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff" -SRC_URI[sha256sum] = "832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" -SRC_URI[md5sum] = "4fe38f89297b2b446d83190fce189f29" +SRC_URI[sha256sum] = "ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" inherit pypi setuptools3 diff --git a/poky/meta/recipes-devtools/python/python3-cython_0.29.22.bb b/poky/meta/recipes-devtools/python/python3-cython_0.29.23.bb index 2ec4033fa..2ec4033fa 100644 --- a/poky/meta/recipes-devtools/python/python3-cython_0.29.22.bb +++ b/poky/meta/recipes-devtools/python/python3-cython_0.29.23.bb diff --git a/poky/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb b/poky/meta/recipes-devtools/python/python3-dbusmock_0.23.1.bb index 0b87ab038..b5fa1868b 100644 --- a/poky/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb +++ b/poky/meta/recipes-devtools/python/python3-dbusmock_0.23.1.bb @@ -4,7 +4,7 @@ HOMEPAGE = "https://pypi.org/project/python-dbusmock/" LICENSE = "GPL-3.0" LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02" -SRC_URI[sha256sum] = "2191919cc411fb94953b36e46bfd55ee5ad4162432ee0d0892bc2c4770ff5d7c" +SRC_URI[sha256sum] = "b5c36a9c9935d1867cf79d8666b08ad906660e6d4d967e9fded4361ad7eef54f" PYPI_PACKAGE = "python-dbusmock" diff --git a/poky/meta/recipes-devtools/python/python3-docutils_0.16.bb b/poky/meta/recipes-devtools/python/python3-docutils_0.16.bb deleted file mode 100644 index 50547a1b0..000000000 --- a/poky/meta/recipes-devtools/python/python3-docutils_0.16.bb +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "Text processing system for documentation" -HOMEPAGE = "http://docutils.sourceforge.net" -SECTION = "devel/python" -LICENSE = "PSF & BSD-2-Clause & GPLv3" -LIC_FILES_CHKSUM = "file://COPYING.txt;md5=7a4646907ab9083c826280b19e103106" - -DEPENDS = "python3" - -SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz" -SRC_URI[md5sum] = "9ccb6f332e23360f964de72c8ea5f0ed" -SRC_URI[sha256sum] = "7d4e999cca74a52611773a42912088078363a30912e8822f7a3d38043b767573" - -S = "${WORKDIR}/docutils-${PV}" - -inherit distutils3 - -BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-devtools/python/python3-docutils_0.17.1.bb b/poky/meta/recipes-devtools/python/python3-docutils_0.17.1.bb new file mode 100644 index 000000000..54a809847 --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-docutils_0.17.1.bb @@ -0,0 +1,11 @@ +SUMMARY = "Docutils is a modular system for processing documentation into useful formats" +HOMEPAGE = "http://docutils.sourceforge.net" +SECTION = "devel/python" +LICENSE = "PSF & BSD-2-Clause & GPLv3" +LIC_FILES_CHKSUM = "file://COPYING.txt;md5=836a1950177996968a49ff477a4a61c4" + +SRC_URI[sha256sum] = "686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-devtools/python/python3-git_3.1.14.bb b/poky/meta/recipes-devtools/python/python3-git_3.1.17.bb index 911c8f148..009cac660 100644 --- a/poky/meta/recipes-devtools/python/python3-git_3.1.14.bb +++ b/poky/meta/recipes-devtools/python/python3-git_3.1.17.bb @@ -12,7 +12,7 @@ PYPI_PACKAGE = "GitPython" inherit pypi setuptools3 -SRC_URI[sha256sum] = "be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61" +SRC_URI[sha256sum] = "ee24bdc93dce357630764db659edaf6b8d664d4ff5447ccfeedd2dc5c253f41e" DEPENDS += " ${PYTHON_PN}-gitdb" diff --git a/poky/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb b/poky/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb deleted file mode 100644 index fe56bf964..000000000 --- a/poky/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb +++ /dev/null @@ -1,4 +0,0 @@ -inherit setuptools3 -require python-gitdb.inc - -SRC_URI[md5sum] = "0e2d3f34efece5deda7c55fede6507cc" diff --git a/poky/meta/recipes-devtools/python/python3-gitdb_4.0.7.bb b/poky/meta/recipes-devtools/python/python3-gitdb_4.0.7.bb new file mode 100644 index 000000000..988d67b5f --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-gitdb_4.0.7.bb @@ -0,0 +1,4 @@ +inherit setuptools3 +require python-gitdb.inc + +SRC_URI[md5sum] = "3f52187435ab0b6e64a15782ffaf29ab" diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb b/poky/meta/recipes-devtools/python/python3-hypothesis_6.14.0.bb index be9418386..89071b2a9 100644 --- a/poky/meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb +++ b/poky/meta/recipes-devtools/python/python3-hypothesis_6.14.0.bb @@ -7,8 +7,16 @@ PYPI_PACKAGE = "hypothesis" inherit pypi setuptools3 -SRC_URI[sha256sum] = "c16fbde26b65c98a2464c48209b066c2f6dab5e8e38acd9d959021eb8d58b6c0" +SRC_URI[sha256sum] = "9bdee01ae260329b16117e9b0229a839b4a77747a985922653f595bd2a6a541a" -RDEPENDS_${PN} += "python3-attrs python3-core python3-sortedcontainers" +RDEPENDS_${PN} += " \ + python3-attrs \ + python3-compression \ + python3-core \ + python3-json \ + python3-sortedcontainers \ + python3-statistics \ + python3-unittest \ + " BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/python/python3-importlib-metadata_3.4.0.bb b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.5.0.bb index 81f24e55c..7c156787a 100644 --- a/poky/meta/recipes-devtools/python/python3-importlib-metadata_3.4.0.bb +++ b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.5.0.bb @@ -8,7 +8,7 @@ inherit pypi setuptools3 PYPI_PACKAGE = "importlib_metadata" UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/" -SRC_URI[sha256sum] = "fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d" +SRC_URI[sha256sum] = "b142cc1dd1342f31ff04bb7d022492b09920cb64fed867cd3ea6f80fe3ebd139" S = "${WORKDIR}/importlib_metadata-${PV}" diff --git a/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb b/poky/meta/recipes-devtools/python/python3-jinja2_3.0.1.bb index dbdf563f8..b37a043cc 100644 --- a/poky/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb +++ b/poky/meta/recipes-devtools/python/python3-jinja2_3.0.1.bb @@ -4,7 +4,7 @@ HOMEPAGE = "https://pypi.org/project/Jinja/" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462" -SRC_URI[sha256sum] = "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6" +SRC_URI[sha256sum] = "703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4" PYPI_PACKAGE = "Jinja2" @@ -13,8 +13,7 @@ CVE_PRODUCT = "jinja2 jinja" CLEANBROKEN = "1" inherit pypi setuptools3 -# ptest disabled in OE-Core for now due to missing dependencies - +inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)} SRC_URI += " \ file://run-ptest \ @@ -27,6 +26,7 @@ do_install_ptest() { RDEPENDS_${PN}-ptest += " \ ${PYTHON_PN}-pytest \ + ${PYTHON_PN}-toml \ ${PYTHON_PN}-unixadmin \ " diff --git a/poky/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb b/poky/meta/recipes-devtools/python/python3-libarchive-c_3.1.bb index 3a2d8733e..d8f7862f9 100644 --- a/poky/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb +++ b/poky/meta/recipes-devtools/python/python3-libarchive-c_3.1.bb @@ -9,13 +9,14 @@ PYPI_PACKAGE = "libarchive-c" inherit pypi setuptools3 -SRC_URI[md5sum] = "083bd2cb0043c1e22a52cb9a05e31532" -SRC_URI[sha256sum] = "9919344cec203f5db6596a29b5bc26b07ba9662925a05e24980b84709232ef60" +SRC_URI[md5sum] = "8c62da42a8b9bd24642e5430427e6f5a" +SRC_URI[sha256sum] = "618a7ecfbfb58ca15e11e3138d4a636498da3b6bc212811af158298530fbb87e" RDEPENDS_${PN} += "\ libarchive \ ${PYTHON_PN}-ctypes \ ${PYTHON_PN}-mmap \ + ${PYTHON_PN}-logging \ " BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-devtools/python/python3-magic_0.4.22.bb b/poky/meta/recipes-devtools/python/python3-magic_0.4.24.bb index b82892759..a54bf2431 100644 --- a/poky/meta/recipes-devtools/python/python3-magic_0.4.22.bb +++ b/poky/meta/recipes-devtools/python/python3-magic_0.4.24.bb @@ -11,7 +11,7 @@ PYPI_PACKAGE = "python-magic" inherit pypi setuptools3 -SRC_URI[sha256sum] = "ca884349f2c92ce830e3f498c5b7c7051fe2942c3ee4332f65213b8ebff15a62" +SRC_URI[sha256sum] = "de800df9fb50f8ec5974761054a708af6e4246b03b4bdaee993f948947b0ebcf" RDEPENDS_${PN} += "file \ ${PYTHON_PN}-ctypes \ diff --git a/poky/meta/recipes-devtools/python/python3-markdown_3.3.4.bb b/poky/meta/recipes-devtools/python/python3-markdown_3.3.4.bb new file mode 100644 index 000000000..47cccbe5b --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-markdown_3.3.4.bb @@ -0,0 +1,13 @@ +SUMMARY = "A Python implementation of John Gruber's Markdown." +HOMEPAGE = "https://python-markdown.github.io/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=745aaad0c69c60039e638bff9ffc59ed" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "Markdown" +SRC_URI[sha256sum] = "31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49" + +BBCLASSEXTEND = "native" + +RDEPENDS_${PN} += "${PYTHON_PN}-logging ${PYTHON_PN}-setuptools" diff --git a/poky/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb b/poky/meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb index 403a98a43..5be43b6c5 100644 --- a/poky/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb +++ b/poky/meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb @@ -3,12 +3,11 @@ HOMEPAGE = "http://github.com/mitsuhiko/markupsafe" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75" -SRC_URI[md5sum] = "43fd756864fe42063068e092e220c57b" -SRC_URI[sha256sum] = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b" +SRC_URI[sha256sum] = "594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a" PYPI_PACKAGE = "MarkupSafe" inherit pypi setuptools3 -# ptest disabled in OE-Core for now due to missing dependencies +inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)} RDEPENDS_${PN} += "${PYTHON_PN}-stringold" diff --git a/poky/meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb b/poky/meta/recipes-devtools/python/python3-more-itertools_8.8.0.bb index 0cb61915b..1c0e84d27 100644 --- a/poky/meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb +++ b/poky/meta/recipes-devtools/python/python3-more-itertools_8.8.0.bb @@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/erikrose/more-itertools" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5" -SRC_URI[sha256sum] = "c5d6da9ca3ff65220c3bfd2a8db06d698f05d4d2b9be57e1deb2be5a45019713" +SRC_URI[sha256sum] = "83f0308e05477c68f56ea3a888172c78ed5d5b3c282addb67508e7ba6c8f813a" inherit pypi setuptools3 ptest @@ -11,9 +11,13 @@ SRC_URI += " \ file://run-ptest \ " +RDEPENDS_${PN} += " \ + ${PYTHON_PN}-asyncio \ + " + RDEPENDS_${PN}-ptest += " \ ${PYTHON_PN}-pytest \ -" + " do_install_ptest() { install -d ${D}${PTEST_PATH}/tests diff --git a/poky/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb b/poky/meta/recipes-devtools/python/python3-pycairo_1.20.1.bb index 8987b7a42..d169a3ca7 100644 --- a/poky/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb +++ b/poky/meta/recipes-devtools/python/python3-pycairo_1.20.1.bb @@ -13,8 +13,8 @@ DEPENDS = "cairo python3" SRC_URI = "https://github.com/pygobject/pycairo/releases/download/v${PV}/pycairo-${PV}.tar.gz" UPSTREAM_CHECK_URI = "https://github.com/pygobject/pycairo/releases/" -SRC_URI[md5sum] = "a1f9b661a0000c2f42281db933284451" -SRC_URI[sha256sum] = "5695a10cb7f9ae0d01f665b56602a845b0a8cb17e2123bfece10c2e58552468c" +SRC_URI[md5sum] = "fa88a28cadbfb34192fe743d32c0ee33" +SRC_URI[sha256sum] = "1ee72b035b21a475e1ed648e26541b04e5d7e753d75ca79de8c583b25785531b" S = "${WORKDIR}/pycairo-${PV}" diff --git a/poky/meta/recipes-devtools/python/python3-pygments_2.8.1.bb b/poky/meta/recipes-devtools/python/python3-pygments_2.9.0.bb index a2e008348..7fedcb5a8 100644 --- a/poky/meta/recipes-devtools/python/python3-pygments_2.8.1.bb +++ b/poky/meta/recipes-devtools/python/python3-pygments_2.9.0.bb @@ -5,7 +5,7 @@ LICENSE = "BSD-2-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=98419e351433ac106a24e3ad435930bc" inherit setuptools3 -SRC_URI[sha256sum] = "2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94" +SRC_URI[sha256sum] = "a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f" DEPENDS += "\ ${PYTHON_PN} \ diff --git a/poky/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb b/poky/meta/recipes-devtools/python/python3-pygobject_3.40.1.bb index 8df3150e3..f5679a4ba 100644 --- a/poky/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb +++ b/poky/meta/recipes-devtools/python/python3-pygobject_3.40.1.bb @@ -16,7 +16,7 @@ SRC_URI = " \ http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \ file://0001-Do-not-build-tests.patch \ " -SRC_URI[sha256sum] = "0372d1bb9122fc19f500a249b1f38c2bb67485000f5887497b4b205b3e7084d5" +SRC_URI[sha256sum] = "00c6d591f4cb40c335ab1fd3e8c17869ba15cfda54416fe363290af766790035" UNKNOWN_CONFIGURE_WHITELIST = "introspection" diff --git a/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb b/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb index d221cbcd7..fa43e6ebf 100644 --- a/poky/meta/recipes-devtools/python/python3-pytest_6.2.2.bb +++ b/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b" SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch " -SRC_URI[sha256sum] = "9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9" +SRC_URI[sha256sum] = "50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b" inherit update-alternatives pypi setuptools3 diff --git a/poky/meta/recipes-devtools/python/python3-pyyaml_5.4.1.bb b/poky/meta/recipes-devtools/python/python3-pyyaml_5.4.1.bb new file mode 100644 index 000000000..dce1ad57d --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-pyyaml_5.4.1.bb @@ -0,0 +1,19 @@ +SUMMARY = "Python support for YAML" +DEPENDS += "libyaml ${PYTHON_PN}-cython-native" +HOMEPAGE = "https://pyyaml.org/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079" + +PYPI_PACKAGE = "PyYAML" + +inherit pypi setuptools3 + +SRC_URI[sha256sum] = "607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e" + +RDEPENDS_${PN} += "\ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-netclient \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/python/python3-scons-native_3.1.2.bb b/poky/meta/recipes-devtools/python/python3-scons-native_4.1.0.bb index 9e127304d..9e127304d 100644 --- a/poky/meta/recipes-devtools/python/python3-scons-native_3.1.2.bb +++ b/poky/meta/recipes-devtools/python/python3-scons-native_4.1.0.bb diff --git a/poky/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch b/poky/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch new file mode 100644 index 000000000..ff212b85e --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch @@ -0,0 +1,46 @@ +From 82be2b7b9758a2f62ee11931da674cd541076041 Mon Sep 17 00:00:00 2001 +From: Tim Orling <ticotimo@gmail.com> +Date: Sat, 22 May 2021 11:20:46 -0700 +Subject: [PATCH] Fix man page installation + +Fixes: + error: can't copy 'build/doc/man/scons.1': doesn't exist or not a regular file + +Upstream-Status: Inappropriate [oe specific] + +Signed-off-by: Tim Orling <ticotimo@gmail.com> +--- + MANIFEST.in | 2 +- + setup.cfg | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/MANIFEST.in b/MANIFEST.in +index 04ec000..937f6f3 100644 +--- a/MANIFEST.in ++++ b/MANIFEST.in +@@ -4,7 +4,7 @@ recursive-include SCons/Tool/docbook * + include LICENSE + + include scons.1 sconsign.1 scons-time.1 +-recursive-include build/doc/man *.1 ++#recursive-include build/doc/man *.1 + + + +diff --git a/setup.cfg b/setup.cfg +index 37e5204..677c00a 100644 +--- a/setup.cfg ++++ b/setup.cfg +@@ -56,9 +56,9 @@ console_scripts = + scons.tool.docbook = *.* + + [options.data_files] +-. = build/doc/man/scons.1 +- build/doc/man/scons-time.1 +- build/doc/man/sconsign.1 ++. = scons.1 ++ scons-time.1 ++ sconsign.1 + + [sdist] + dist-dir = build/dist diff --git a/poky/meta/recipes-devtools/python/python3-scons_3.1.2.bb b/poky/meta/recipes-devtools/python/python3-scons_3.1.2.bb deleted file mode 100644 index 12122131a..000000000 --- a/poky/meta/recipes-devtools/python/python3-scons_3.1.2.bb +++ /dev/null @@ -1,34 +0,0 @@ -SUMMARY = "Software Construction tool (make/autotools replacement)" -HOMEPAGE = "https://github.com/SCons/scons" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE-python3-scons-${PV};md5=e14e1b33428df24a40a782ae142785d0" - -# pypi package does not have a valid license file -SRC_URI += "https://raw.githubusercontent.com/SCons/scons/${PV}/LICENSE;downloadfilename=LICENSE-python3-scons-${PV};name=license" - -SRC_URI[md5sum] = "f9c4ad06dcf1427be95472eaf380c81a" -SRC_URI[sha256sum] = "8aaa483c303efeb678e6f7c776c8444a482f8ddc3ad891f8b6cdd35264da9a1f" -SRC_URI[license.md5sum] = "e14e1b33428df24a40a782ae142785d0" -SRC_URI[license.sha256sum] = "72ed889165fb28378cadac14552be4a959f1ebab6b148abb5dd2b49712c3c6f6" - -S = "${WORKDIR}/scons-${PV}" - -UPSTREAM_CHECK_URI = "http://scons.org/pages/download.html" -UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar" - -inherit pypi setuptools3 - -do_install_prepend() { - sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${S}/script/* -} - -RDEPENDS_${PN}_class-target = "\ - python3-core \ - python3-fcntl \ - python3-io \ - python3-json \ - python3-shell \ - python3-pickle \ - python3-pprint \ - " diff --git a/poky/meta/recipes-devtools/python/python3-scons_4.1.0.bb b/poky/meta/recipes-devtools/python/python3-scons_4.1.0.bb new file mode 100644 index 000000000..5894a5ef3 --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-scons_4.1.0.bb @@ -0,0 +1,27 @@ +SUMMARY = "Software Construction tool (make/autotools replacement)" +HOMEPAGE = "https://github.com/SCons/scons" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=b94c6e2be9670c62b38f7118c12866d2" + +SRC_URI += " file://0001-Fix-man-page-installation.patch" +SRC_URI[sha256sum] = "accb8035be2c9cfbab06471286eaeff86a10037a8064cf4ef4c3df04ea5a7387" + +PYPI_PACKAGE = "SCons" + +inherit pypi setuptools3 + +RDEPENDS_${PN}_class-target = "\ + python3-core \ + python3-compression \ + python3-fcntl \ + python3-importlib-metadata \ + python3-io \ + python3-json \ + python3-shell \ + python3-pickle \ + python3-pkg-resources \ + python3-pprint \ + " + +FILES_${PN}-doc += "${datadir}/scons*.1" diff --git a/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb b/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.0.1.bb index ead80da7b..24409eddc 100644 --- a/poky/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb +++ b/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.0.1.bb @@ -4,7 +4,7 @@ DESCRIPTION = "setuptools_scm handles managing your Python package versions in S LICENSE = "MIT" LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489" -SRC_URI[sha256sum] = "c85b6b46d0edd40d2301038cdea96bb6adc14d62ef943e75afb08b3e7bcf142a" +SRC_URI[sha256sum] = "d1925a69cb07e9b29416a275b9fadb009a23c148ace905b2fb220649a6c18e92" PYPI_PACKAGE = "setuptools_scm" inherit pypi setuptools3 diff --git a/poky/meta/recipes-devtools/python/python3-setuptools/reproducibility.patch b/poky/meta/recipes-devtools/python/python3-setuptools/reproducibility.patch new file mode 100644 index 000000000..149d8ad5c --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-setuptools/reproducibility.patch @@ -0,0 +1,40 @@ +The License-File lines in PKG-INFO change ordering depending on the order on disk, +for example for python-packaging, one build shows: + +License-File: LICENSE +License-File: LICENSE.APACHE +License-File: LICENSE.BSD + +and the other shows: + +License-File: LICENSE +License-File: LICENSE.BSD +License-File: LICENSE.APACHE + +This is because glob uses os.listdir() which is unsorted. Sort the result to avoid this. + +Upstream-Status: Submitted [https://github.com/pypa/setuptools/issues/2691] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: setuptools-57.0.0/setuptools/dist.py +=================================================================== +--- setuptools-57.0.0.orig/setuptools/dist.py ++++ setuptools-57.0.0/setuptools/dist.py +@@ -15,7 +15,7 @@ import distutils.command + from distutils.util import strtobool + from distutils.debug import DEBUG + from distutils.fancy_getopt import translate_longopt +-from glob import iglob ++from glob import glob + import itertools + import textwrap + from typing import List, Optional, TYPE_CHECKING +@@ -603,7 +603,7 @@ class Distribution(_Distribution): + return ( + path + for pattern in patterns +- for path in iglob(pattern) ++ for path in sorted(glob(pattern)) + if not path.endswith('~') + and os.path.isfile(path) + ) diff --git a/poky/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb b/poky/meta/recipes-devtools/python/python3-setuptools_57.0.0.bb index 74264a381..a15b51e31 100644 --- a/poky/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb +++ b/poky/meta/recipes-devtools/python/python3-setuptools_57.0.0.bb @@ -8,9 +8,10 @@ inherit pypi setuptools3 SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch" -SRC_URI += "file://0001-change-shebang-to-python3.patch" +SRC_URI += "file://0001-change-shebang-to-python3.patch \ + file://reproducibility.patch" -SRC_URI[sha256sum] = "1ce82798848a978696465866bb3aaab356003c42d6143e1111fcf069ac838274" +SRC_URI[sha256sum] = "401cbf33a7bf817d08014d51560fc003b895c4cdc1a5b521ad2969e928a07535" DEPENDS += "${PYTHON_PN}" diff --git a/poky/meta/recipes-devtools/python/python3-six_1.15.0.bb b/poky/meta/recipes-devtools/python/python3-six_1.15.0.bb deleted file mode 100644 index 6c6f3f962..000000000 --- a/poky/meta/recipes-devtools/python/python3-six_1.15.0.bb +++ /dev/null @@ -1,5 +0,0 @@ -inherit setuptools3 -require python-six.inc - -SRC_URI[md5sum] = "9f90a0eaa0ea7747fda01ca79d21ebcb" -SRC_URI[sha256sum] = "30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259" diff --git a/poky/meta/recipes-devtools/python/python3-six_1.16.0.bb b/poky/meta/recipes-devtools/python/python3-six_1.16.0.bb new file mode 100644 index 000000000..1ba48d4f4 --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-six_1.16.0.bb @@ -0,0 +1,4 @@ +inherit setuptools3 +require python-six.inc + +SRC_URI[sha256sum] = "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926" diff --git a/poky/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb b/poky/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb new file mode 100644 index 000000000..ba3408247 --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb @@ -0,0 +1,13 @@ +SUMMARY = "Translator of plain ASCII punctuation characters into 'smart' typographic punctuation HTML entities" +HOMEPAGE = "https://pythonhosted.org/smartypants/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=977036977591ac666c728921ecc54c4f" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "smartypants" +SRC_URI[sha256sum] = "7812353a32022699a1aa8cd5626e01c94a946dcaeedaee2d0b382bae4c4cbf36" + +BBCLASSEXTEND = "native" + +UPSTREAM_CHECK_REGEX = "/${PYPI_PACKAGE}/(?P<pver>(?!2\.0\.1)(\d+[\.\-_]*)+)/" diff --git a/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.3.0.bb b/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb index 6060c0372..0755d3e17 100644 --- a/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.3.0.bb +++ b/poky/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb @@ -4,6 +4,6 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae" inherit pypi setuptools3 -SRC_URI[sha256sum] = "59cc937650cf60d677c16775597c89a960658a09cf7c1a668f86e1e4464b10a1" +SRC_URI[sha256sum] = "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb b/poky/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb new file mode 100644 index 000000000..3becb0dd8 --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb @@ -0,0 +1,14 @@ +SUMMARY = "Filters to enhance web typography, including support for Django & Jinja templates" +HOMEPAGE = "https://github.com/mintchaos/typogrify" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=12bc792d6f5415dbf421f3fd183c6dd2" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "typogrify" +SRC_URI[sha256sum] = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38" + +BBCLASSEXTEND = "native" + +RDEPENDS_${PN} += "${PYTHON_PN}-smartypants" + diff --git a/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch b/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch index 237645bc6..9ed03858d 100644 --- a/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch +++ b/poky/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch @@ -9,8 +9,7 @@ installs python-config there) to race, resulting in a failure due to attempting to install python-config into a nonexistent BINDIR. Ensure it also exists in the libainstall target. -Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186] - +Upstream-Status: Backport [https://github.com/python/cpython/commit/a25c46bd7dd47a2f95b32d17ee2f66de214892c6] Signed-off-by: Changqing Li <changqing.li@windriver.com> --- Makefile.pre.in | 2 +- diff --git a/poky/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch b/poky/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch new file mode 100644 index 000000000..7d684b3c4 --- /dev/null +++ b/poky/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch @@ -0,0 +1,33 @@ +From 7a2bddfa437be633bb6945d0e6b7d6f27da870ad Mon Sep 17 00:00:00 2001 +From: Tim Orling <timothy.t.orling@intel.com> +Date: Fri, 18 Jun 2021 11:56:50 -0700 +Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk + +These tests need full packagegroup-core-buildessential, the +easiest way to dynamically check for that is looking for +'tools-sdk' in IMAGE_FEATURES. + +Upstream-Status: Inappropriate [oe-specific] + +Signed-off-by: Tim Orling <timothy.t.orlign@intel.com> +--- + Lib/ctypes/test/test_find.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py +index 92ac184..0d009d1 100644 +--- a/Lib/ctypes/test/test_find.py ++++ b/Lib/ctypes/test/test_find.py +@@ -112,10 +112,12 @@ class FindLibraryLinux(unittest.TestCase): + # LD_LIBRARY_PATH) + self.assertEqual(find_library(libname), 'lib%s.so' % libname) + ++ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"") + def test_find_library_with_gcc(self): + with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None): + self.assertNotEqual(find_library('c'), None) + ++ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"") + def test_find_library_with_ld(self): + with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \ + unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None): diff --git a/poky/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch b/poky/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch index 35b7e0c48..c3d1e06d0 100644 --- a/poky/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch +++ b/poky/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch @@ -23,24 +23,24 @@ Before this patch: Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132] + +Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org> + Signed-off-by: Mingli Yu <mingli.yu@windriver.com> --- Lib/test/test_locale.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py -index e2c2178..558d63c 100644 ---- a/Lib/test/test_locale.py -+++ b/Lib/test/test_locale.py -@@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase): +Index: Python-3.9.4/Lib/test/test_locale.py +=================================================================== +--- Python-3.9.4.orig/Lib/test/test_locale.py ++++ Python-3.9.4/Lib/test/test_locale.py +@@ -562,7 +562,7 @@ class TestMiscellaneous(unittest.TestCas self.skipTest('test needs Turkish locale') loc = locale.getlocale(locale.LC_CTYPE) if verbose: - print('testing with %a' % (loc,), end=' ', flush=True) + print('testing with %a...' % (loc,), end=' ', flush=True) - locale.setlocale(locale.LC_CTYPE, loc) - self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) - --- -2.7.4 - + try: + locale.setlocale(locale.LC_CTYPE, loc) + except locale.Error as exc: diff --git a/poky/meta/recipes-devtools/python/python3/create_manifest3.py b/poky/meta/recipes-devtools/python/python3/create_manifest3.py index 4da02a299..045240ea0 100644 --- a/poky/meta/recipes-devtools/python/python3/create_manifest3.py +++ b/poky/meta/recipes-devtools/python/python3/create_manifest3.py @@ -36,7 +36,7 @@ # Tha method to handle cached files does not work when a module includes a folder which # itself contains the pycache folder, gladly this is almost never the case. # -# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29 at gmail dot com> +# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org> import sys @@ -45,6 +45,11 @@ import json import os import collections +if '-d' in sys.argv: + debugFlag = '-d' +else: + debugFlag = '' + # Get python version from ${PYTHON_MAJMIN} pyversion = str(sys.argv[1]) @@ -84,6 +89,12 @@ def prepend_comments(comments, json_manifest): manifest.seek(0, 0) manifest.write(comments + json_contents) +def print_indent(msg, offset): + for l in msg.splitlines(): + msg = ' ' * offset + l + print(msg) + + # Read existing JSON manifest with open('python3-manifest.json') as manifest: # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker @@ -99,7 +110,7 @@ with open('python3-manifest.json') as manifest: # Not exactly the same so it should not be a function # -print ('Getting dependencies for package: core') +print_indent('Getting dependencies for package: core', 0) # This special call gets the core dependencies and @@ -109,7 +120,7 @@ print ('Getting dependencies for package: core') # on the new core package, they will still find them # even when checking the old_manifest -output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') +output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8') for coredep in output.split(): coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}') if isCached(coredep): @@ -149,17 +160,16 @@ for filedep in old_manifest['core']['files']: # Get actual module name , shouldnt be affected by libdir/bindir, etc. pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0] - # We now know that were dealing with a python module, so we can import it # and check what its dependencies are. # We launch a separate task for each module for deterministic behavior. # Each module will only import what is necessary for it to work in specific. # The output of each task will contain each module's dependencies - print ('Getting dependencies for module: %s' % pymodule) - output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') - print ('The following dependencies were found for module %s:\n' % pymodule) - print (output) + print_indent('Getting dependencies for module: %s' % pymodule, 2) + output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8') + print_indent('The following dependencies were found for module %s:\n' % pymodule, 4) + print_indent(output, 6) for pymodule_dep in output.split(): @@ -178,12 +188,13 @@ for filedep in old_manifest['core']['files']: # all others will use this a base. +print('\n\nChecking for directories...\n') # To improve the script speed, we check which packages contain directories # since we will be looping through (only) those later. for pypkg in old_manifest: for filedep in old_manifest[pypkg]['files']: if isFolder(filedep): - print ('%s is a folder' % filedep) + print_indent('%s is a directory' % filedep, 2) if pypkg not in hasfolders: hasfolders.append(pypkg) if filedep not in allfolders: @@ -221,14 +232,14 @@ for pypkg in old_manifest: print('\n') print('--------------------------') - print ('Handling package %s' % pypkg) + print('Handling package %s' % pypkg) print('--------------------------') # Handle special cases, we assume that when they were manually added # to the manifest we knew what we were doing. special_packages = ['misc', 'modules', 'dev', 'tests'] if pypkg in special_packages or 'staticdev' in pypkg: - print('Passing %s package directly' % pypkg) + print_indent('Passing %s package directly' % pypkg, 2) new_manifest[pypkg] = old_manifest[pypkg] continue @@ -259,7 +270,7 @@ for pypkg in old_manifest: # Get actual module name , shouldnt be affected by libdir/bindir, etc. # We need to check if the imported module comes from another (e.g. sqlite3.dump) - path,pymodule = os.path.split(filedep) + path, pymodule = os.path.split(filedep) path = os.path.basename(path) pymodule = os.path.splitext(os.path.basename(pymodule))[0] @@ -279,10 +290,10 @@ for pypkg in old_manifest: # Each module will only import what is necessary for it to work in specific. # The output of each task will contain each module's dependencies - print ('\nGetting dependencies for module: %s' % pymodule) - output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') - print ('The following dependencies were found for module %s:\n' % pymodule) - print (output) + print_indent('\nGetting dependencies for module: %s' % pymodule, 2) + output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8') + print_indent('The following dependencies were found for module %s:\n' % pymodule, 4) + print_indent(output, 6) reportFILES = [] reportRDEPS = [] @@ -325,7 +336,7 @@ for pypkg in old_manifest: # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder)) for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']: if folder_dep == folder: - print ('%s folder found in %s' % (folder, pypkg_with_folder)) + print ('%s directory found in %s' % (folder, pypkg_with_folder)) folderFound = True if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg: new_manifest[pypkg]['rdepends'].append(pypkg_with_folder) @@ -424,7 +435,7 @@ prepend_comments(comments,'python3-manifest.json.new') if (repeated): error_msg = '\n\nERROR:\n' - error_msg += 'The following files are repeated (contained in more than one package),\n' + error_msg += 'The following files were found in more than one package),\n' error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n' error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n' error_msg += '\n'.join(repeated) diff --git a/poky/meta/recipes-devtools/python/python3/get_module_deps3.py b/poky/meta/recipes-devtools/python/python3/get_module_deps3.py index 6806f2317..1f4c982ae 100644 --- a/poky/meta/recipes-devtools/python/python3/get_module_deps3.py +++ b/poky/meta/recipes-devtools/python/python3/get_module_deps3.py @@ -3,14 +3,18 @@ # them out, the output of this execution will have all dependencies # for a specific module, which will be parsed an dealt on create_manifest.py # -# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> +# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org> -# We can get a log per module, for all the dependencies that were found, but its messy. -debug=False import sys import os +# We can get a log per module, for all the dependencies that were found, but its messy. +if '-d' in sys.argv: + debug = True +else: + debug = False + # We can get a list of the modules which are currently required to run python # so we run python-core and get its modules, we then import what we need # and check what modules are currently running, if we substract them from the @@ -19,13 +23,13 @@ import os # We use importlib to achieve this, so we also need to know what modules importlib needs import importlib -core_deps=set(sys.modules) +core_deps = set(sys.modules) def fix_path(dep_path): import os # We DONT want the path on our HOST system - pivot='recipe-sysroot-native' - dep_path=dep_path[dep_path.find(pivot)+len(pivot):] + pivot = 'recipe-sysroot-native' + dep_path = dep_path[dep_path.find(pivot)+len(pivot):] if '/usr/bin' in dep_path: dep_path = dep_path.replace('/usr/bin''${bindir}') @@ -46,8 +50,8 @@ def fix_path(dep_path): # Module to import was passed as an argument current_module = str(sys.argv[1]).rstrip() -if(debug==True): - log = open('log_%s' % current_module,'w') +if debug == True: + log = open('temp/log_%s' % current_module.strip('.*'),'w') log.write('Module %s generated the following dependencies:\n' % current_module) try: m = importlib.import_module(current_module) @@ -63,13 +67,13 @@ try: except: pass # ignore all import or other exceptions raised during import except ImportError as e: - if (debug==True): - log.write('Module was not found') + if debug == True: + log.write('Module was not found\n') pass # Get current module dependencies, dif will contain a list of specific deps for this module -module_deps=set(sys.modules) +module_deps = set(sys.modules) # We handle the core package (1st pass on create_manifest.py) as a special case if current_module == 'python-core-package': @@ -81,14 +85,18 @@ else: # Check where each dependency came from for item in dif: - dep_path='' + # Main module returns script filename, __main matches mp_main__ as well + if 'main__' in item: + continue + + dep_path = '' try: - if (debug==True): - log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n') + if debug == True: + log.write('\nCalling: sys.modules[' + '%s' % item + '].__file__\n') dep_path = sys.modules['%s' % item].__file__ except AttributeError as e: # Deals with thread (builtin module) not having __file__ attribute - if debug==True: + if debug == True: log.write(item + ' ') log.write(str(e)) log.write('\n') @@ -96,11 +104,16 @@ for item in dif: except NameError as e: # Deals with NameError: name 'dep_path' is not defined # because module is not found (wasn't compiled?), e.g. bddsm - if (debug==True): + if debug == True: log.write(item+' ') log.write(str(e)) pass + if dep_path == '': + continue + if debug == True: + log.write('Dependency path found:\n%s\n' % dep_path) + # Site-customize is a special case since we (OpenEmbedded) put it there manually if 'sitecustomize' in dep_path: dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py' @@ -111,52 +124,51 @@ for item in dif: dep_path = fix_path(dep_path) import sysconfig - soabi=sysconfig.get_config_var('SOABI') + soabi = sysconfig.get_config_var('SOABI') # Check if its a shared library and deconstruct it if soabi in dep_path: - if (debug==True): - log.write('Shared library found in %s' % dep_path) + if debug == True: + log.write('Shared library found in %s\n' % dep_path) dep_path = dep_path.replace(soabi,'*') print (dep_path) continue if "_sysconfigdata" in dep_path: dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") - if (debug==True): + if debug == True: log.write(dep_path+'\n') # Prints out result, which is what will be used by create_manifest print (dep_path) - import imp - cpython_tag = imp.get_tag() - cached='' + cpython_tag = sys.implementation.cache_tag + cached = '' # Theres no naive way to find *.pyc files on python3 try: - if (debug==True): - log.write('Calling: sys.modules[' + '%s' % item + '].__cached__\n') + if debug == True: + log.write('\nCalling: sys.modules[' + '%s' % item + '].__cached__\n') cached = sys.modules['%s' % item].__cached__ except AttributeError as e: # Deals with thread (builtin module) not having __cached__ attribute - if debug==True: + if debug == True: log.write(item + ' ') log.write(str(e)) log.write('\n') pass except NameError as e: # Deals with NameError: name 'cached' is not defined - if (debug==True): + if debug == True: log.write(item+' ') log.write(str(e)) pass if cached is not None: - if (debug==True): - log.write(cached) + if debug == True: + log.write(cached + '\n') cached = fix_path(cached) cached = cached.replace(cpython_tag,'*') if "_sysconfigdata" in cached: cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") print (cached) -if debug==True: +if debug == True: log.close() diff --git a/poky/meta/recipes-devtools/python/python3/python3-manifest.json b/poky/meta/recipes-devtools/python/python3/python3-manifest.json index 615dc3a5e..d65cf49cb 100644 --- a/poky/meta/recipes-devtools/python/python3/python3-manifest.json +++ b/poky/meta/recipes-devtools/python/python3/python3-manifest.json @@ -814,6 +814,7 @@ "shell", "smtpd", "sqlite3", + "statistics", "stringold", "syslog", "terminal", @@ -1085,6 +1086,20 @@ ], "cached": [] }, + "statistics": { + "summary": "Basic statistics module", + "rdepends": [ + "core", + "math", + "numbers" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/statistics.py" + ], + "cached": [ + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc" + ] + }, "stringold": { "summary": "Python string APIs [deprecated]", "rdepends": [ diff --git a/poky/meta/recipes-devtools/python/python3_3.9.2.bb b/poky/meta/recipes-devtools/python/python3_3.9.5.bb index fd1172335..1717ff737 100644 --- a/poky/meta/recipes-devtools/python/python3_3.9.2.bb +++ b/poky/meta/recipes-devtools/python/python3_3.9.5.bb @@ -31,6 +31,7 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \ file://0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch \ file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \ + ${@bb.utils.contains('IMAGE_FEATURES', 'tools-sdk', '', 'file://0001-test_ctypes.test_find-skip-without-tools-sdk.patch', d)} \ " SRC_URI_append_class-native = " \ @@ -38,7 +39,7 @@ SRC_URI_append_class-native = " \ file://12-distutils-prefix-is-inside-staging-area.patch \ file://0001-Don-t-search-system-for-headers-libraries.patch \ " -SRC_URI[sha256sum] = "3c2034c54f811448f516668dce09d24008a0716c3a794dd8639b5388cbde247d" +SRC_URI[sha256sum] = "0c5a140665436ec3dbfbb79e2dfb6d192655f26ef4a29aeffcb6d1820d716d83" # exclude pre-releases for both python 2.x and 3.x UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" @@ -69,7 +70,7 @@ ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}" -DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2" +DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2 autoconf-archive-native" DEPENDS_append_class-target = " python3-native" DEPENDS_append_class-nativesdk = " python3-native" @@ -344,6 +345,7 @@ PACKAGES =+ "libpython3 libpython3-staticdev" FILES_libpython3 = "${libdir}/libpython*.so.*" FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a" INSANE_SKIP_${PN}-dev += "dev-elf" +INSANE_SKIP_${PN}-ptest = "dev-deps" # catch all the rest (unsorted) PACKAGES += "${PN}-misc" @@ -367,7 +369,7 @@ FILES_${PN}-man = "${datadir}/man" # See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395 RDEPENDS_libpython3_append_libc-glibc = " libgcc" RDEPENDS_${PN}-ctypes_append_libc-glibc = " ${MLPREFIX}ldconfig" -RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip bzip2 libgcc tzdata-europe coreutils sed" +RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev unzip bzip2 libgcc tzdata-europe coreutils sed" RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9" RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}" RDEPENDS_${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter tcl', '', d)}" diff --git a/poky/meta/recipes-devtools/qemu/qemu-native_5.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu-native_6.0.0.bb index c8acff8e1..d23d7a8ad 100644 --- a/poky/meta/recipes-devtools/qemu/qemu-native_5.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu-native_6.0.0.bb @@ -6,4 +6,4 @@ require qemu-native.inc EXTRA_OECONF_append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent" -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "pie" diff --git a/poky/meta/recipes-devtools/qemu/qemu-system-native_5.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu-system-native_6.0.0.bb index 222b55cbc..9d7d0cdce 100644 --- a/poky/meta/recipes-devtools/qemu/qemu-system-native_5.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu-system-native_6.0.0.bb @@ -1,5 +1,7 @@ BPN = "qemu" +inherit python3-dir + require qemu-native.inc # As some of the files installed by qemu-native and qemu-system-native @@ -9,7 +11,7 @@ DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native" EXTRA_OECONF_append = " --target-list=${@get_qemu_system_target_list(d)}" -PACKAGECONFIG ??= "fdt alsa kvm \ +PACKAGECONFIG ??= "fdt alsa kvm pie \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \ " @@ -23,4 +25,7 @@ do_install_append() { rm -f ${D}${datadir}/qemu/trace-events-all rm -rf ${D}${datadir}/qemu/keymaps rm -rf ${D}${datadir}/icons/ + + # Install qmp.py to be used with testimage + install -D ${S}/python/qemu/qmp.py ${D}${PYTHON_SITEPACKAGES_DIR}/qmp.py } diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc index a62580959..6674936fe 100644 --- a/poky/meta/recipes-devtools/qemu/qemu.inc +++ b/poky/meta/recipes-devtools/qemu/qemu.inc @@ -25,20 +25,37 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ file://0010-configure-Add-pkg-config-handling-for-libgcrypt.patch \ file://0001-Add-enable-disable-udev.patch \ file://0001-qemu-Do-not-include-file-if-not-exists.patch \ - file://mingwfix.patch \ - file://mmap.patch \ file://mmap2.patch \ file://determinism.patch \ file://0001-tests-meson.build-use-relative-path-to-refer-to-file.patch \ - file://CVE-2021-20203.patch \ + file://0001-configure-fix-detection-of-gdbus-codegen.patch \ + file://0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch \ + file://0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch \ + file://0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch \ + file://0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch \ + file://0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch \ + file://0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch \ + file://0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch \ + file://0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch \ " UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" -SRC_URI[sha256sum] = "cb18d889b628fbe637672b0326789d9b0e3b8027e0445b936537c78549df17bc" +SRC_URI[sha256sum] = "87bc1a471ca24b97e7005711066007d443423d19aacda3d442558ae032fa30b9" SRC_URI_append_class-target = " file://cross.patch" SRC_URI_append_class-nativesdk = " file://cross.patch" +# Applies against virglrender < 0.6.0 and not qemu itself +CVE_CHECK_WHITELIST += "CVE-2017-5957" + +# The VNC server can expose host files uder some circumstances. We don't +# enable it by default. +CVE_CHECK_WHITELIST += "CVE-2007-0998" + +# 'The issues identified by this CVE were determined to not constitute a vulnerability.' +# https://bugzilla.redhat.com/show_bug.cgi?id=1609015#c11 +CVE_CHECK_WHITELIST += "CVE-2018-18438" + COMPATIBLE_HOST_mipsarchn32 = "null" COMPATIBLE_HOST_mipsarchn64 = "null" @@ -56,8 +73,6 @@ do_install_ptest() { find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcodp]" | xargs -i rm -rf {} # Don't check the file genreated by configure - sed -i -e 's,${HOSTTOOLS_DIR}/python3,${bindir}/python3,' \ - ${D}/${PTEST_PATH}/tests/qemu-iotests/common.env sed -i -e "1s,#!/usr/bin/bash,#!${base_bindir}/bash," ${D}${PTEST_PATH}/tests/data/acpi/disassemle-aml.sh # Strip the paths from the QEMU variable, we can use PATH @@ -84,7 +99,7 @@ EXTRA_OECONF = " \ --extra-cflags='${CFLAGS}' \ --extra-ldflags='${LDFLAGS}' \ --with-git=/bin/false \ - --disable-git-update \ + --with-git-submodules=ignore \ --meson=meson \ ${PACKAGECONFIG_CONFARGS} \ " diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch index c99adee8a..4b37967e7 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch @@ -12,13 +12,13 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> configure | 4 ++++ 1 file changed, 4 insertions(+) -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -1525,6 +1525,10 @@ for opt do +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -1565,6 +1565,10 @@ for opt do ;; - --disable-libdaxctl) libdaxctl=no + --disable-gio) gio=no ;; + --enable-libudev) libudev="yes" + ;; diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch new file mode 100644 index 000000000..8bffc3129 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch @@ -0,0 +1,50 @@ +From 464cfc64201b21386030b8f353fe9724a3413a85 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini <pbonzini@redhat.com> +Date: Wed, 5 May 2021 10:15:34 -0400 +Subject: [PATCH] configure: fix detection of gdbus-codegen + +"pkg-config --variable=gdbus_codegen gio-2.0" returns "gdbus-codegen", +and it does not pass test -x (which does not walk the path). + +Meson 0.58.0 notices that something is iffy, as the dbus_vmstate1 +assignment in tests/qtest/meson.build uses an empty string as the +command, and fails very eloquently: + +../tests/qtest/meson.build:92:2: ERROR: No program name specified. + +Use the "has" function instead of test -x, and fix the generation +of config-host.mak since meson.build expects that GDBUS_CODEGEN +is absent, rather than empty, if the tool is unavailable. + +Reported-by: Sebastian Mitterle <smitterl@redhat.com> +Fixes: #178 +Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> +Upstream-Status: Backport [https://git.qemu.org/?p=qemu.git;a=commitdiff;h=5ecfb76ccc056eb6127e44268e475827ae73b9e0] +(not in 6.0.0, should be kept when upgrading) +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + configure | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +Index: qemu-6.0.0/configure +=================================================================== +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -3366,7 +3366,7 @@ if ! test "$gio" = "no"; then + gio_cflags=$($pkg_config --cflags gio-2.0) + gio_libs=$($pkg_config --libs gio-2.0) + gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0) +- if [ ! -x "$gdbus_codegen" ]; then ++ if ! has "$gdbus_codegen"; then + gdbus_codegen= + fi + # Check that the libraries actually work -- Ubuntu 18.04 ships +@@ -5704,6 +5704,8 @@ if test "$gio" = "yes" ; then + echo "CONFIG_GIO=y" >> $config_host_mak + echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak + echo "GIO_LIBS=$gio_libs" >> $config_host_mak ++fi ++if test "$gdbus_codegen" != "" ; then + echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak + fi + echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch new file mode 100644 index 000000000..11b6e3c67 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch @@ -0,0 +1,35 @@ +From c5844a4cdee37268c9b65a65e6968ee129bb742d Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 14 Jun 2021 10:27:17 -0700 +Subject: [PATCH] linux-user: Tag vsx with ieee128 fpbits + +In OE we need this for ppc64le usermode to work since we generate 128bit +long doubles and glibc 2.34 is now checking for this in hwcaps at +runtime and failing to run the binary if machine does not support 128bit +IEEE fp + +Fixes +Fatal glibc error: CPU lacks float128 support (POWER 9 or later required) + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + linux-user/elfload.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/linux-user/elfload.c b/linux-user/elfload.c +index 17ab06f612..e7dd18fd40 100644 +--- a/linux-user/elfload.c ++++ b/linux-user/elfload.c +@@ -830,7 +830,7 @@ static uint32_t get_elf_hwcap2(void) + PPC2_ISA207S), QEMU_PPC_FEATURE2_ARCH_2_07 | + QEMU_PPC_FEATURE2_VEC_CRYPTO); + GET_FEATURE2(PPC2_ISA300, QEMU_PPC_FEATURE2_ARCH_3_00 | +- QEMU_PPC_FEATURE2_DARN); ++ QEMU_PPC_FEATURE2_DARN | QEMU_PPC_FEATURE2_HAS_IEEE128); + + #undef GET_FEATURE + #undef GET_FEATURE2 +-- +2.32.0 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch index 8ce12bdb4..2f2d19f53 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch @@ -20,10 +20,10 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> hw/usb/dev-wacom.c | 94 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) -Index: qemu-5.2.0/hw/usb/dev-wacom.c +Index: qemu-6.0.0/hw/usb/dev-wacom.c =================================================================== ---- qemu-5.2.0.orig/hw/usb/dev-wacom.c -+++ qemu-5.2.0/hw/usb/dev-wacom.c +--- qemu-6.0.0.orig/hw/usb/dev-wacom.c ++++ qemu-6.0.0/hw/usb/dev-wacom.c @@ -69,6 +69,89 @@ static const USBDescStrings desc_strings [STR_SERIALNUMBER] = "1", }; diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch index 3fe9aa6eb..b8d288d3a 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch @@ -15,11 +15,11 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> linux-user/syscall.c | 2 ++ 1 file changed, 2 insertions(+) -Index: qemu-5.2.0/linux-user/syscall.c +Index: qemu-6.0.0/linux-user/syscall.c =================================================================== ---- qemu-5.2.0.orig/linux-user/syscall.c -+++ qemu-5.2.0/linux-user/syscall.c -@@ -109,7 +109,9 @@ +--- qemu-6.0.0.orig/linux-user/syscall.c ++++ qemu-6.0.0/linux-user/syscall.c +@@ -113,7 +113,9 @@ #include <linux/blkpg.h> #include <netpacket/packet.h> #include <linux/netlink.h> @@ -28,4 +28,4 @@ Index: qemu-5.2.0/linux-user/syscall.c +#endif #include <linux/rtc.h> #include <sound/asound.h> - #ifdef CONFIG_BTRFS + #ifdef HAVE_BTRFS_H diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch index 5cb5757c3..d5e1ab4d5 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch @@ -16,19 +16,16 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com> tests/meson.build | 2 +- 1 files changed, 1 insertions(+), 1 deletion(-) -diff --git a/tests/meson.build b/tests/meson.build -index afeb6be..54684b5 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -113,7 +113,7 @@ tests = { +Index: qemu-6.0.0/tests/unit/meson.build +=================================================================== +--- qemu-6.0.0.orig/tests/unit/meson.build ++++ qemu-6.0.0/tests/unit/meson.build +@@ -42,7 +42,7 @@ tests = { 'test-keyval': [testqapi], 'test-logging': [], 'test-uuid': [], - 'ptimer-test': ['ptimer-test-stubs.c', meson.source_root() / 'hw/core/ptimer.c'], -+ 'ptimer-test': ['ptimer-test-stubs.c', '../hw/core/ptimer.c'], ++ 'ptimer-test': ['ptimer-test-stubs.c', '../../hw/core/ptimer.c'], 'test-qapi-util': [], } --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch new file mode 100644 index 000000000..981c23729 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch @@ -0,0 +1,43 @@ +CVE: CVE-2021-3545 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 121841b25d72d13f8cad554363138c360f1250ea Mon Sep 17 00:00:00 2001 +From: Li Qiang <liq3ea@163.com> +Date: Sat, 15 May 2021 20:03:56 -0700 +Subject: [PATCH 1/7] vhost-user-gpu: fix memory disclosure in + virgl_cmd_get_capset_info (CVE-2021-3545) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Otherwise some of the 'resp' will be leaked to guest. + +Fixes: CVE-2021-3545 +Reported-by: Li Qiang <liq3ea@163.com> +virtio-gpu fix: 42a8dadc74 ("virtio-gpu: fix information leak +in getting capset info dispatch") + +Signed-off-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20210516030403.107723-2-liq3ea@163.com> +Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> +--- + contrib/vhost-user-gpu/virgl.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c +index 9e6660c7ab..6a332d601f 100644 +--- a/contrib/vhost-user-gpu/virgl.c ++++ b/contrib/vhost-user-gpu/virgl.c +@@ -128,6 +128,7 @@ virgl_cmd_get_capset_info(VuGpu *g, + + VUGPU_FILL_CMD(info); + ++ memset(&resp, 0, sizeof(resp)); + if (info.capset_index == 0) { + resp.capset_id = VIRTIO_GPU_CAPSET_VIRGL; + virgl_renderer_get_cap_set(resp.capset_id, +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch b/poky/meta/recipes-devtools/qemu/qemu/0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch new file mode 100644 index 000000000..a9aee47e3 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch @@ -0,0 +1,41 @@ +CVE: CVE-2021-3544 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 86dd8fac2acc366930a5dc08d3fb1b1e816f4e1e Mon Sep 17 00:00:00 2001 +From: Li Qiang <liq3ea@163.com> +Date: Sat, 15 May 2021 20:03:57 -0700 +Subject: [PATCH 2/7] vhost-user-gpu: fix resource leak in + 'vg_resource_create_2d' (CVE-2021-3544) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Call 'vugbm_buffer_destroy' in error path to avoid resource leak. + +Fixes: CVE-2021-3544 +Reported-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Prasad J Pandit <pjp@fedoraproject.org> +Signed-off-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20210516030403.107723-3-liq3ea@163.com> +Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> +--- + contrib/vhost-user-gpu/vhost-user-gpu.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/contrib/vhost-user-gpu/vhost-user-gpu.c b/contrib/vhost-user-gpu/vhost-user-gpu.c +index f73f292c9f..b5e153d0d6 100644 +--- a/contrib/vhost-user-gpu/vhost-user-gpu.c ++++ b/contrib/vhost-user-gpu/vhost-user-gpu.c +@@ -349,6 +349,7 @@ vg_resource_create_2d(VuGpu *g, + g_critical("%s: resource creation failed %d %d %d", + __func__, c2d.resource_id, c2d.width, c2d.height); + g_free(res); ++ vugbm_buffer_destroy(&res->buffer); + cmd->error = VIRTIO_GPU_RESP_ERR_OUT_OF_MEMORY; + return; + } +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch b/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch index fd54f96b0..733789be2 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch @@ -18,13 +18,13 @@ Signed-off-by: Roy Li <rongqing.li@windriver.com> hw/mips/malta.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: qemu-5.2.0/hw/mips/malta.c +Index: qemu-6.0.0/hw/mips/malta.c =================================================================== ---- qemu-5.2.0.orig/hw/mips/malta.c -+++ qemu-5.2.0/hw/mips/malta.c -@@ -62,7 +62,7 @@ - - #define ENVP_ADDR 0x80002000l +--- qemu-6.0.0.orig/hw/mips/malta.c ++++ qemu-6.0.0/hw/mips/malta.c +@@ -65,7 +65,7 @@ + #define ENVP_PADDR 0x2000 + #define ENVP_VADDR cpu_mips_phys_to_kseg0(NULL, ENVP_PADDR) #define ENVP_NB_ENTRIES 16 -#define ENVP_ENTRY_SIZE 256 +#define ENVP_ENTRY_SIZE 1024 diff --git a/poky/meta/recipes-devtools/qemu/qemu/0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch b/poky/meta/recipes-devtools/qemu/qemu/0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch new file mode 100644 index 000000000..171848640 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch @@ -0,0 +1,48 @@ +CVE: CVE-2021-3544 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From b9f79858a614d95f5de875d0ca31096eaab72c3b Mon Sep 17 00:00:00 2001 +From: Li Qiang <liq3ea@163.com> +Date: Sat, 15 May 2021 20:03:58 -0700 +Subject: [PATCH 3/7] vhost-user-gpu: fix memory leak in + vg_resource_attach_backing (CVE-2021-3544) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Check whether the 'res' has already been attach_backing to avoid +memory leak. + +Fixes: CVE-2021-3544 +Reported-by: Li Qiang <liq3ea@163.com> +virtio-gpu fix: 204f01b309 ("virtio-gpu: fix memory leak +in resource attach backing") + +Signed-off-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20210516030403.107723-4-liq3ea@163.com> +Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> +--- + contrib/vhost-user-gpu/vhost-user-gpu.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/contrib/vhost-user-gpu/vhost-user-gpu.c b/contrib/vhost-user-gpu/vhost-user-gpu.c +index b5e153d0d6..0437e52b64 100644 +--- a/contrib/vhost-user-gpu/vhost-user-gpu.c ++++ b/contrib/vhost-user-gpu/vhost-user-gpu.c +@@ -489,6 +489,11 @@ vg_resource_attach_backing(VuGpu *g, + return; + } + ++ if (res->iov) { ++ cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC; ++ return; ++ } ++ + ret = vg_create_mapping_iov(g, &ab, cmd, &res->iov); + if (ret != 0) { + cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC; +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch b/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch index a0bd1c5eb..330bcaef0 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch @@ -12,11 +12,11 @@ Signed-off-by: Ross Burton <ross.burton@intel.com> configure | 9 --------- 1 file changed, 9 deletions(-) -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -5001,15 +5001,6 @@ fi +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -4648,15 +4648,6 @@ fi # check if we have valgrind/valgrind.h valgrind_h=no diff --git a/poky/meta/recipes-devtools/qemu/qemu/0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch b/poky/meta/recipes-devtools/qemu/qemu/0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch new file mode 100644 index 000000000..9fc2fafe1 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch @@ -0,0 +1,50 @@ +CVE: CVE-2021-3544 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From b7afebcf9e6ecf3cf9b5a9b9b731ed04bca6aa3e Mon Sep 17 00:00:00 2001 +From: Li Qiang <liq3ea@163.com> +Date: Sat, 15 May 2021 20:03:59 -0700 +Subject: [PATCH 4/7] vhost-user-gpu: fix memory leak while calling + 'vg_resource_unref' (CVE-2021-3544) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If the guest trigger following sequences, the attach_backing will be leaked: + + vg_resource_create_2d + vg_resource_attach_backing + vg_resource_unref + +This patch fix this by freeing 'res->iov' in vg_resource_destroy. + +Fixes: CVE-2021-3544 +Reported-by: Li Qiang <liq3ea@163.com> +virtio-gpu fix: 5e8e3c4c75 ("virtio-gpu: fix resource leak +in virgl_cmd_resource_unref") + +Reviewed-by: Prasad J Pandit <pjp@fedoraproject.org> +Signed-off-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20210516030403.107723-5-liq3ea@163.com> +Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> +--- + contrib/vhost-user-gpu/vhost-user-gpu.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/contrib/vhost-user-gpu/vhost-user-gpu.c b/contrib/vhost-user-gpu/vhost-user-gpu.c +index 0437e52b64..770dfad529 100644 +--- a/contrib/vhost-user-gpu/vhost-user-gpu.c ++++ b/contrib/vhost-user-gpu/vhost-user-gpu.c +@@ -400,6 +400,7 @@ vg_resource_destroy(VuGpu *g, + } + + vugbm_buffer_destroy(&res->buffer); ++ g_free(res->iov); + pixman_image_unref(res->image); + QTAILQ_REMOVE(&g->reslist, res, next); + g_free(res); +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch b/poky/meta/recipes-devtools/qemu/qemu/0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch new file mode 100644 index 000000000..e70f3c02c --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch @@ -0,0 +1,58 @@ +CVE: CVE-2021-3544 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From f6091d86ba9ea05f4e111b9b42ee0005c37a6779 Mon Sep 17 00:00:00 2001 +From: Li Qiang <liq3ea@163.com> +Date: Sat, 15 May 2021 20:04:00 -0700 +Subject: [PATCH 5/7] vhost-user-gpu: fix memory leak in + 'virgl_cmd_resource_unref' (CVE-2021-3544) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The 'res->iov' will be leaked if the guest trigger following sequences: + + virgl_cmd_create_resource_2d + virgl_resource_attach_backing + virgl_cmd_resource_unref + +This patch fixes this. + +Fixes: CVE-2021-3544 +Reported-by: Li Qiang <liq3ea@163.com> +virtio-gpu fix: 5e8e3c4c75 ("virtio-gpu: fix resource leak +in virgl_cmd_resource_unref" + +Signed-off-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20210516030403.107723-6-liq3ea@163.com> +Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> +--- + contrib/vhost-user-gpu/virgl.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c +index 6a332d601f..c669d73a1d 100644 +--- a/contrib/vhost-user-gpu/virgl.c ++++ b/contrib/vhost-user-gpu/virgl.c +@@ -108,9 +108,16 @@ virgl_cmd_resource_unref(VuGpu *g, + struct virtio_gpu_ctrl_command *cmd) + { + struct virtio_gpu_resource_unref unref; ++ struct iovec *res_iovs = NULL; ++ int num_iovs = 0; + + VUGPU_FILL_CMD(unref); + ++ virgl_renderer_resource_detach_iov(unref.resource_id, ++ &res_iovs, ++ &num_iovs); ++ g_free(res_iovs); ++ + virgl_renderer_resource_unref(unref.resource_id); + } + +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch b/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch index 201125c1f..05dc849da 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch @@ -51,11 +51,11 @@ Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> qapi/char.json | 5 +++ 3 files changed, 109 insertions(+) -Index: qemu-5.2.0/chardev/char-socket.c +Index: qemu-6.0.0/chardev/char-socket.c =================================================================== ---- qemu-5.2.0.orig/chardev/char-socket.c -+++ qemu-5.2.0/chardev/char-socket.c -@@ -1308,6 +1308,67 @@ static bool qmp_chardev_validate_socket( +--- qemu-6.0.0.orig/chardev/char-socket.c ++++ qemu-6.0.0/chardev/char-socket.c +@@ -1362,6 +1362,67 @@ static bool qmp_chardev_validate_socket( return true; } @@ -123,7 +123,7 @@ Index: qemu-5.2.0/chardev/char-socket.c static void qmp_chardev_open_socket(Chardev *chr, ChardevBackend *backend, -@@ -1316,6 +1377,9 @@ static void qmp_chardev_open_socket(Char +@@ -1370,6 +1431,9 @@ static void qmp_chardev_open_socket(Char { SocketChardev *s = SOCKET_CHARDEV(chr); ChardevSocket *sock = backend->u.socket.data; @@ -133,7 +133,7 @@ Index: qemu-5.2.0/chardev/char-socket.c bool do_nodelay = sock->has_nodelay ? sock->nodelay : false; bool is_listen = sock->has_server ? sock->server : true; bool is_telnet = sock->has_telnet ? sock->telnet : false; -@@ -1381,6 +1445,14 @@ static void qmp_chardev_open_socket(Char +@@ -1446,6 +1510,14 @@ static void qmp_chardev_open_socket(Char update_disconnected_filename(s); @@ -148,7 +148,7 @@ Index: qemu-5.2.0/chardev/char-socket.c if (s->is_listen) { if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270, is_waitconnect, errp) < 0) { -@@ -1400,6 +1472,9 @@ static void qemu_chr_parse_socket(QemuOp +@@ -1465,6 +1537,9 @@ static void qemu_chr_parse_socket(QemuOp const char *host = qemu_opt_get(opts, "host"); const char *port = qemu_opt_get(opts, "port"); const char *fd = qemu_opt_get(opts, "fd"); @@ -158,7 +158,7 @@ Index: qemu-5.2.0/chardev/char-socket.c #ifdef CONFIG_LINUX bool tight = qemu_opt_get_bool(opts, "tight", true); bool abstract = qemu_opt_get_bool(opts, "abstract", false); -@@ -1407,6 +1482,20 @@ static void qemu_chr_parse_socket(QemuOp +@@ -1472,6 +1547,20 @@ static void qemu_chr_parse_socket(QemuOp SocketAddressLegacy *addr; ChardevSocket *sock; @@ -179,7 +179,7 @@ Index: qemu-5.2.0/chardev/char-socket.c if ((!!path + !!fd + !!host) != 1) { error_setg(errp, "Exactly one of 'path', 'fd' or 'host' required"); -@@ -1448,13 +1537,24 @@ static void qemu_chr_parse_socket(QemuOp +@@ -1522,13 +1611,24 @@ static void qemu_chr_parse_socket(QemuOp sock->tls_creds = g_strdup(qemu_opt_get(opts, "tls-creds")); sock->has_tls_authz = qemu_opt_get(opts, "tls-authz"); sock->tls_authz = g_strdup(qemu_opt_get(opts, "tls-authz")); @@ -204,11 +204,11 @@ Index: qemu-5.2.0/chardev/char-socket.c #ifdef CONFIG_LINUX q_unix->has_tight = true; q_unix->tight = tight; -Index: qemu-5.2.0/chardev/char.c +Index: qemu-6.0.0/chardev/char.c =================================================================== ---- qemu-5.2.0.orig/chardev/char.c -+++ qemu-5.2.0/chardev/char.c -@@ -839,6 +839,9 @@ QemuOptsList qemu_chardev_opts = { +--- qemu-6.0.0.orig/chardev/char.c ++++ qemu-6.0.0/chardev/char.c +@@ -840,6 +840,9 @@ QemuOptsList qemu_chardev_opts = { .name = "path", .type = QEMU_OPT_STRING, },{ @@ -218,10 +218,10 @@ Index: qemu-5.2.0/chardev/char.c .name = "host", .type = QEMU_OPT_STRING, },{ -Index: qemu-5.2.0/qapi/char.json +Index: qemu-6.0.0/qapi/char.json =================================================================== ---- qemu-5.2.0.orig/qapi/char.json -+++ qemu-5.2.0/qapi/char.json +--- qemu-6.0.0.orig/qapi/char.json ++++ qemu-6.0.0/qapi/char.json @@ -250,6 +250,10 @@ # # @addr: socket address to listen on (server=true) diff --git a/poky/meta/recipes-devtools/qemu/qemu/0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch b/poky/meta/recipes-devtools/qemu/qemu/0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch new file mode 100644 index 000000000..5efb87ca3 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch @@ -0,0 +1,49 @@ +CVE: CVE-2021-3544 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 63736af5a6571d9def93769431e0d7e38c6677bf Mon Sep 17 00:00:00 2001 +From: Li Qiang <liq3ea@163.com> +Date: Sat, 15 May 2021 20:04:01 -0700 +Subject: [PATCH 6/7] vhost-user-gpu: fix memory leak in + 'virgl_resource_attach_backing' (CVE-2021-3544) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If 'virgl_renderer_resource_attach_iov' failed, the 'res_iovs' will +be leaked. + +Fixes: CVE-2021-3544 +Reported-by: Li Qiang <liq3ea@163.com> +virtio-gpu fix: 33243031da ("virtio-gpu-3d: fix memory leak +in resource attach backing") + +Signed-off-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20210516030403.107723-7-liq3ea@163.com> +Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> +--- + contrib/vhost-user-gpu/virgl.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c +index c669d73a1d..a16a311d80 100644 +--- a/contrib/vhost-user-gpu/virgl.c ++++ b/contrib/vhost-user-gpu/virgl.c +@@ -287,8 +287,11 @@ virgl_resource_attach_backing(VuGpu *g, + return; + } + +- virgl_renderer_resource_attach_iov(att_rb.resource_id, ++ ret = virgl_renderer_resource_attach_iov(att_rb.resource_id, + res_iovs, att_rb.nr_entries); ++ if (ret != 0) { ++ g_free(res_iovs); ++ } + } + + static void +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch b/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch index 294cf5129..3491fa8a5 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch @@ -29,11 +29,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com> hw/intc/apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: qemu-5.2.0/hw/intc/apic.c +Index: qemu-6.0.0/hw/intc/apic.c =================================================================== ---- qemu-5.2.0.orig/hw/intc/apic.c -+++ qemu-5.2.0/hw/intc/apic.c -@@ -605,7 +605,7 @@ int apic_accept_pic_intr(DeviceState *de +--- qemu-6.0.0.orig/hw/intc/apic.c ++++ qemu-6.0.0/hw/intc/apic.c +@@ -606,7 +606,7 @@ int apic_accept_pic_intr(DeviceState *de APICCommonState *s = APIC(dev); uint32_t lvt0; diff --git a/poky/meta/recipes-devtools/qemu/qemu/0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch b/poky/meta/recipes-devtools/qemu/qemu/0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch new file mode 100644 index 000000000..33e6a6619 --- /dev/null +++ b/poky/meta/recipes-devtools/qemu/qemu/0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch @@ -0,0 +1,49 @@ +CVE: CVE-2021-3546 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 9f22893adcb02580aee5968f32baa2cd109b3ec2 Mon Sep 17 00:00:00 2001 +From: Li Qiang <liq3ea@163.com> +Date: Sat, 15 May 2021 20:04:02 -0700 +Subject: [PATCH 7/7] vhost-user-gpu: fix OOB write in 'virgl_cmd_get_capset' + (CVE-2021-3546) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If 'virgl_cmd_get_capset' set 'max_size' to 0, +the 'virgl_renderer_fill_caps' will write the data after the 'resp'. +This patch avoid this by checking the returned 'max_size'. + +virtio-gpu fix: abd7f08b23 ("display: virtio-gpu-3d: check +virgl capabilities max_size") + +Fixes: CVE-2021-3546 +Reported-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Prasad J Pandit <pjp@fedoraproject.org> +Signed-off-by: Li Qiang <liq3ea@163.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20210516030403.107723-8-liq3ea@163.com> +Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> +--- + contrib/vhost-user-gpu/virgl.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c +index a16a311d80..7172104b19 100644 +--- a/contrib/vhost-user-gpu/virgl.c ++++ b/contrib/vhost-user-gpu/virgl.c +@@ -177,6 +177,10 @@ virgl_cmd_get_capset(VuGpu *g, + + virgl_renderer_get_cap_set(gc.capset_id, &max_ver, + &max_size); ++ if (!max_size) { ++ cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER; ++ return; ++ } + resp = g_malloc0(sizeof(*resp) + max_size); + + resp->hdr.type = VIRTIO_GPU_RESP_OK_CAPSET; +-- +2.25.1 + diff --git a/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch b/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch index c5d206b91..cc6a5fe75 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch @@ -14,11 +14,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com> configure | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -2956,6 +2956,30 @@ has_libgcrypt() { +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -2847,6 +2847,30 @@ has_libgcrypt() { return 0 } @@ -49,7 +49,7 @@ Index: qemu-5.2.0/configure if test "$nettle" != "no"; then pass="no" -@@ -2994,7 +3018,14 @@ fi +@@ -2885,7 +2909,14 @@ fi if test "$gcrypt" != "no"; then pass="no" @@ -65,7 +65,7 @@ Index: qemu-5.2.0/configure gcrypt_cflags=$(libgcrypt-config --cflags) gcrypt_libs=$(libgcrypt-config --libs) # Debian has removed -lgpg-error from libgcrypt-config -@@ -3004,12 +3035,12 @@ if test "$gcrypt" != "no"; then +@@ -2895,12 +2926,12 @@ if test "$gcrypt" != "no"; then then gcrypt_libs="$gcrypt_libs -lgpg-error" fi diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch deleted file mode 100644 index 269c6f129..000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-20203.patch +++ /dev/null @@ -1,73 +0,0 @@ -From: Prasad J Pandit <pjp@fedoraproject.org> - -While activating device in vmxnet3_acticate_device(), it does not -validate guest supplied configuration values against predefined -minimum - maximum limits. This may lead to integer overflow or -OOB access issues. Add checks to avoid it. - -Fixes: CVE-2021-20203 -Buglink: https://bugs.launchpad.net/qemu/+bug/1913873 -Reported-by: Gaoning Pan <pgn@zju.edu.cn> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> - -Upstream-Status: Acepted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg07935.html] -CVE: CVE-2021-20203 -Signed-off-by: Minjae Kim <flowergom@gmail.com> ---- - hw/net/vmxnet3.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c -index eff299f629..4a910ca971 100644 ---- a/hw/net/vmxnet3.c -+++ b/hw/net/vmxnet3.c -@@ -1420,6 +1420,7 @@ static void vmxnet3_activate_device(VMXNET3State *s) - vmxnet3_setup_rx_filtering(s); - /* Cache fields from shared memory */ - s->mtu = VMXNET3_READ_DRV_SHARED32(d, s->drv_shmem, devRead.misc.mtu); -+ assert(VMXNET3_MIN_MTU <= s->mtu && s->mtu < VMXNET3_MAX_MTU); - VMW_CFPRN("MTU is %u", s->mtu); - - s->max_rx_frags = -@@ -1473,6 +1474,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* Read rings memory locations for TX queues */ - pa = VMXNET3_READ_TX_QUEUE_DESCR64(d, qdescr_pa, conf.txRingBasePA); - size = VMXNET3_READ_TX_QUEUE_DESCR32(d, qdescr_pa, conf.txRingSize); -+ if (size > VMXNET3_TX_RING_MAX_SIZE) { -+ size = VMXNET3_TX_RING_MAX_SIZE; -+ } - - vmxnet3_ring_init(d, &s->txq_descr[i].tx_ring, pa, size, - sizeof(struct Vmxnet3_TxDesc), false); -@@ -1483,6 +1487,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* TXC ring */ - pa = VMXNET3_READ_TX_QUEUE_DESCR64(d, qdescr_pa, conf.compRingBasePA); - size = VMXNET3_READ_TX_QUEUE_DESCR32(d, qdescr_pa, conf.compRingSize); -+ if (size > VMXNET3_TC_RING_MAX_SIZE) { -+ size = VMXNET3_TC_RING_MAX_SIZE; -+ } - vmxnet3_ring_init(d, &s->txq_descr[i].comp_ring, pa, size, - sizeof(struct Vmxnet3_TxCompDesc), true); - VMXNET3_RING_DUMP(VMW_CFPRN, "TXC", i, &s->txq_descr[i].comp_ring); -@@ -1524,6 +1531,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* RX rings */ - pa = VMXNET3_READ_RX_QUEUE_DESCR64(d, qd_pa, conf.rxRingBasePA[j]); - size = VMXNET3_READ_RX_QUEUE_DESCR32(d, qd_pa, conf.rxRingSize[j]); -+ if (size > VMXNET3_RX_RING_MAX_SIZE) { -+ size = VMXNET3_RX_RING_MAX_SIZE; -+ } - vmxnet3_ring_init(d, &s->rxq_descr[i].rx_ring[j], pa, size, - sizeof(struct Vmxnet3_RxDesc), false); - VMW_CFPRN("RX queue %d:%d: Base: %" PRIx64 ", Size: %d", -@@ -1533,6 +1543,9 @@ static void vmxnet3_activate_device(VMXNET3State *s) - /* RXC ring */ - pa = VMXNET3_READ_RX_QUEUE_DESCR64(d, qd_pa, conf.compRingBasePA); - size = VMXNET3_READ_RX_QUEUE_DESCR32(d, qd_pa, conf.compRingSize); -+ if (size > VMXNET3_RC_RING_MAX_SIZE) { -+ size = VMXNET3_RC_RING_MAX_SIZE; -+ } - vmxnet3_ring_init(d, &s->rxq_descr[i].comp_ring, pa, size, - sizeof(struct Vmxnet3_RxCompDesc), true); - VMW_CFPRN("RXC queue %d: Base: %" PRIx64 ", Size: %d", i, pa, size); --- -2.29.2 diff --git a/poky/meta/recipes-devtools/qemu/qemu/cross.patch b/poky/meta/recipes-devtools/qemu/qemu/cross.patch index 438c1ad08..a0fc39e5e 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/cross.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/cross.patch @@ -6,19 +6,19 @@ Upstream-Status: Inappropriate [may be rewritten in a way upstream may accept?] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Index: qemu-5.2.0/configure +Index: qemu-6.0.0/configure =================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -6973,7 +6973,6 @@ if has $sdl2_config; then +--- qemu-6.0.0.orig/configure ++++ qemu-6.0.0/configure +@@ -6371,7 +6371,6 @@ if has $sdl2_config; then fi echo "strip = [$(meson_quote $strip)]" >> $cross echo "windres = [$(meson_quote $windres)]" >> $cross --if test -n "$cross_prefix"; then +-if test "$cross_compile" = "yes"; then cross_arg="--cross-file config-meson.cross" echo "[host_machine]" >> $cross if test "$mingw32" = "yes" ; then -@@ -6999,9 +6998,6 @@ if test -n "$cross_prefix"; then +@@ -6403,9 +6402,6 @@ if test "$cross_compile" = "yes"; then else echo "endian = 'little'" >> $cross fi diff --git a/poky/meta/recipes-devtools/qemu/qemu/determinism.patch b/poky/meta/recipes-devtools/qemu/qemu/determinism.patch index cb1c90777..330a31204 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/determinism.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/determinism.patch @@ -4,38 +4,19 @@ qemu build are not reproducible due to either full buildpaths or timestamps. Replace the full paths with relative ones. I couldn't figure out how to get meson to pass relative paths but we can fix that in the script. -For the keymaps, omit the timestamps as they don't matter to us. - Upstream-Status: Pending [some version of all/part of this may be accepted] RP 2021/3/1 -Index: qemu-5.2.0/scripts/decodetree.py +Index: qemu-6.0.0/scripts/decodetree.py =================================================================== ---- qemu-5.2.0.orig/scripts/decodetree.py -+++ qemu-5.2.0/scripts/decodetree.py -@@ -1303,8 +1303,8 @@ def main(): +--- qemu-6.0.0.orig/scripts/decodetree.py ++++ qemu-6.0.0/scripts/decodetree.py +@@ -1304,7 +1304,7 @@ def main(): toppat = ExcMultiPattern(0) for filename in args: - input_file = filename -- f = open(filename, 'r') + input_file = os.path.relpath(filename) -+ f = open(input_file, 'r') + f = open(filename, 'rt', encoding='utf-8') parse_file(f, toppat) f.close() - -Index: qemu-5.2.0/ui/keycodemapdb/tools/keymap-gen -=================================================================== ---- qemu-5.2.0.orig/ui/keycodemapdb/tools/keymap-gen -+++ qemu-5.2.0/ui/keycodemapdb/tools/keymap-gen -@@ -317,9 +317,8 @@ class LanguageGenerator(object): - raise NotImplementedError() - - def generate_header(self, database, args): -- today = time.strftime("%Y-%m-%d %H:%M") - self._boilerplate([ -- "This file is auto-generated from keymaps.csv on %s" % today, -+ "This file is auto-generated from keymaps.csv", - "Database checksum sha256(%s)" % database.mapchecksum, - "To re-generate, run:", - " %s" % args, diff --git a/poky/meta/recipes-devtools/qemu/qemu/mingwfix.patch b/poky/meta/recipes-devtools/qemu/qemu/mingwfix.patch deleted file mode 100644 index 8d76cef63..000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/mingwfix.patch +++ /dev/null @@ -1,21 +0,0 @@ -OE assumes that mingw files are in a unix like file layout. The -'flattening' done by configure in qemu for mingw32 breaks things -for us. We are discussing with upstream but for now, hack this to -disable it and use the unix like layout everywhere. - -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg01073.html] - -Index: qemu-5.2.0/configure -=================================================================== ---- qemu-5.2.0.orig/configure -+++ qemu-5.2.0/configure -@@ -1541,7 +1541,7 @@ libdir="${libdir:-$prefix/lib}" - libexecdir="${libexecdir:-$prefix/libexec}" - includedir="${includedir:-$prefix/include}" - --if test "$mingw32" = "yes" ; then -+if test "$mingw32" = "dontwantthis" ; then - mandir="$prefix" - datadir="$prefix" - docdir="$prefix" diff --git a/poky/meta/recipes-devtools/qemu/qemu/mmap.patch b/poky/meta/recipes-devtools/qemu/qemu/mmap.patch deleted file mode 100644 index edd9734f3..000000000 --- a/poky/meta/recipes-devtools/qemu/qemu/mmap.patch +++ /dev/null @@ -1,29 +0,0 @@ -If mremap() is called without the MREMAP_MAYMOVE flag with a start address -just before the end of memory (reserved_va) where new_size would exceed -GUEST_ADD_MAX, the assert(end - 1 <= GUEST_ADDR_MAX) in page_set_flags() -would trigger. - -Add an extra guard to the guest_range_valid() checks to prevent this and -avoid asserting binaries when reserved_va is set. - -This meant a test case now gives the same behaviour regardless of whether -reserved_va is set or not. - -Upstream-Status: Backport [https://github.com/qemu/qemu/commit/ccc5ccc17f8cfbfd87d9aede5d12a2d47c56e712] -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org - -Index: qemu-5.2.0/linux-user/mmap.c -=================================================================== ---- qemu-5.2.0.orig/linux-user/mmap.c -+++ qemu-5.2.0/linux-user/mmap.c -@@ -727,7 +727,9 @@ abi_long target_mremap(abi_ulong old_add - - if (!guest_range_valid(old_addr, old_size) || - ((flags & MREMAP_FIXED) && -- !guest_range_valid(new_addr, new_size))) { -+ !guest_range_valid(new_addr, new_size)) || -+ ((flags & MREMAP_MAYMOVE) == 0 && -+ !guest_range_valid(old_addr, new_size))) { - errno = ENOMEM; - return -1; - } diff --git a/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch b/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch index 165213175..e115473b7 100644 --- a/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch +++ b/poky/meta/recipes-devtools/qemu/qemu/mmap2.patch @@ -13,27 +13,26 @@ rather than ENOMEM so adjust the other part of the test to this. Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg01355.html] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org -Index: qemu-5.2.0/linux-user/mmap.c +Index: qemu-6.0.0/linux-user/mmap.c =================================================================== ---- qemu-5.2.0.orig/linux-user/mmap.c -+++ qemu-5.2.0/linux-user/mmap.c -@@ -722,12 +722,14 @@ abi_long target_mremap(abi_ulong old_add +--- qemu-6.0.0.orig/linux-user/mmap.c ++++ qemu-6.0.0/linux-user/mmap.c +@@ -733,12 +733,16 @@ abi_long target_mremap(abi_ulong old_add int prot; void *host_addr; -- if (!guest_range_valid(old_addr, old_size) || +- if (!guest_range_valid_untagged(old_addr, old_size) || - ((flags & MREMAP_FIXED) && -- !guest_range_valid(new_addr, new_size)) || -- ((flags & MREMAP_MAYMOVE) == 0 && -- !guest_range_valid(old_addr, new_size))) { -- errno = ENOMEM; -+ if (!guest_range_valid(old_addr, old_size)) { ++ if (!guest_range_valid_untagged(old_addr, old_size)) { + errno = EFAULT; + return -1; + } -+ -+ if (((flags & MREMAP_FIXED) && !guest_range_valid(new_addr, new_size)) || -+ ((flags & MREMAP_MAYMOVE) == 0 && !guest_range_valid(old_addr, new_size))) { ++ ++ if (((flags & MREMAP_FIXED) && + !guest_range_valid_untagged(new_addr, new_size)) || + ((flags & MREMAP_MAYMOVE) == 0 && + !guest_range_valid_untagged(old_addr, new_size))) { +- errno = ENOMEM; + errno = EINVAL; return -1; } diff --git a/poky/meta/recipes-devtools/qemu/qemu_5.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu_6.0.0.bb index 7afa66e39..90b135a61 100644 --- a/poky/meta/recipes-devtools/qemu/qemu_5.2.0.bb +++ b/poky/meta/recipes-devtools/qemu/qemu_6.0.0.bb @@ -19,10 +19,11 @@ do_install_append_class-nativesdk() { } PACKAGECONFIG ??= " \ - fdt sdl kvm \ + fdt sdl kvm pie \ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \ " -PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm \ +PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm pie \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \ " diff --git a/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch b/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch index 38d755205..d8fcc1672 100644 --- a/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch +++ b/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch @@ -1,4 +1,4 @@ -From 9bbe3f8564705aafcdcc5f2f033f9241a97f47c6 Mon Sep 17 00:00:00 2001 +From 7b2dd83d8fcd06af8e583b53da79ed0033793d46 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Mon, 27 Feb 2017 09:43:30 +0200 Subject: [PATCH] Do not hardcode "lib/rpm" as the installation path for @@ -14,7 +14,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac -index 6c78568e4..76b1d40e4 100644 +index fe35a90fa..b2faec6f3 100644 --- a/configure.ac +++ b/configure.ac @@ -966,7 +966,7 @@ else @@ -40,7 +40,7 @@ index 35c8cf9df..9d8b2825c 100644 %_infodir %{_datadir}/info %_mandir %{_datadir}/man diff --git a/rpm.am b/rpm.am -index cd40a16be..e6941e09f 100644 +index 8e1dc2184..3d889ec86 100644 --- a/rpm.am +++ b/rpm.am @@ -1,10 +1,10 @@ @@ -55,4 +55,4 @@ index cd40a16be..e6941e09f 100644 +rpmconfigdir = $(libdir)/rpm # Libtool version (current-revision-age) for all our libraries - rpm_version_info = 10:2:1 + rpm_version_info = 10:3:1 diff --git a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.2.bb b/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb index d369c706a..95a6f5cf7 100644 --- a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.2.bb +++ b/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb @@ -43,11 +43,11 @@ SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.16.x \ " PE = "1" -SRCREV = "278883a704ea36c97974d0f2d65d41abe78b0e2a" +SRCREV = "3659b8a04f5b8bacf6535e0124e7fe23f15286bd" S = "${WORKDIR}/git" -DEPENDS = "libgcrypt db file popt xz bzip2 elfutils python3" +DEPENDS = "libgcrypt file popt xz bzip2 elfutils python3" DEPENDS_append_class-native = " file-replacement-native bzip2-replacement-native" inherit autotools gettext pkgconfig python3native @@ -70,11 +70,12 @@ EXTRA_OECONF_append_class-nativesdk = " --sysconfdir=/etc --disable-plugins" BBCLASSEXTEND = "native nativesdk" -PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)}" +PACKAGECONFIG ??= "bdb ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)}" # The inhibit plugin serves no purpose outside of the target PACKAGECONFIG_remove_class-native = "inhibit" PACKAGECONFIG_remove_class-nativesdk = "inhibit" +PACKAGECONFIG[bdb] = "--enable-bdb,--disable-bdb,db" PACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils" PACKAGECONFIG[inhibit] = "--enable-inhibit-plugin,--disable-inhibit-plugin,dbus" PACKAGECONFIG[rpm2archive] = "--with-archive,--without-archive,libarchive" diff --git a/poky/meta/recipes-devtools/rsync/files/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch b/poky/meta/recipes-devtools/rsync/files/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch new file mode 100644 index 000000000..2d51ddf96 --- /dev/null +++ b/poky/meta/recipes-devtools/rsync/files/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch @@ -0,0 +1,31 @@ +From fbe85634d88e82fbb439ae2a5d1aca8b8c309bea Mon Sep 17 00:00:00 2001 +From: Matt McCutchen <matt@mattmccutchen.net> +Date: Wed, 26 Aug 2020 12:16:08 -0400 +Subject: [PATCH] rsync-ssl: Verify the hostname in the certificate when using + openssl. + +CVE: CVE-2020-14387 + +Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=c3f7414] + +Signed-off-by: Chen Qi <Qi.Chen@windriver.com> +--- + rsync-ssl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rsync-ssl b/rsync-ssl +index 8101975..46701af 100755 +--- a/rsync-ssl ++++ b/rsync-ssl +@@ -129,7 +129,7 @@ function rsync_ssl_helper { + fi + + if [[ $RSYNC_SSL_TYPE == openssl ]]; then +- exec $RSYNC_SSL_OPENSSL s_client $caopt $certopt -quiet -verify_quiet -servername $hostname -connect $hostname:$port ++ exec $RSYNC_SSL_OPENSSL s_client $caopt $certopt -quiet -verify_quiet -servername $hostname -verify_hostname $hostname -connect $hostname:$port + elif [[ $RSYNC_SSL_TYPE == gnutls ]]; then + exec $RSYNC_SSL_GNUTLS --logfile=/dev/null $gnutls_cert_opt $gnutls_opts $hostname:$port + else +-- +2.17.1 + diff --git a/poky/meta/recipes-devtools/rsync/rsync_3.2.3.bb b/poky/meta/recipes-devtools/rsync/rsync_3.2.3.bb index 8b36a8ebd..cb1866775 100644 --- a/poky/meta/recipes-devtools/rsync/rsync_3.2.3.bb +++ b/poky/meta/recipes-devtools/rsync/rsync_3.2.3.bb @@ -14,6 +14,7 @@ SRC_URI = "https://download.samba.org/pub/${BPN}/src/${BP}.tar.gz \ file://rsyncd.conf \ file://makefile-no-rebuild.patch \ file://determism.patch \ + file://0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch \ " SRC_URI[sha256sum] = "becc3c504ceea499f4167a260040ccf4d9f2ef9499ad5683c179a697146ce50e" diff --git a/poky/meta/recipes-devtools/ruby/ruby_3.0.0.bb b/poky/meta/recipes-devtools/ruby/ruby_3.0.1.bb index 28e12c3cd..944cb81c1 100644 --- a/poky/meta/recipes-devtools/ruby/ruby_3.0.0.bb +++ b/poky/meta/recipes-devtools/ruby/ruby_3.0.1.bb @@ -8,7 +8,7 @@ SRC_URI += " \ file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \ " -SRC_URI[sha256sum] = "a13ed141a1c18eb967aac1e33f4d6ad5f21be1ac543c344e0d6feeee54af8e28" +SRC_URI[sha256sum] = "369825db2199f6aeef16b408df6a04ebaddb664fb9af0ec8c686b0ce7ab77727" PACKAGECONFIG ??= "" PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb index 2b1409d78..137e5097f 100644 --- a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb +++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb @@ -32,7 +32,9 @@ do_compile() { } do_install() { + install -d "${D}${includedir}" oe_runmake install INSTALL_DIR=${D}${sbindir} + install -m 0644 "${S}"/squashfs_fs.h "${D}${includedir}" } ARM_INSTRUCTION_SET_armv4 = "arm" diff --git a/poky/meta/recipes-devtools/strace/strace_5.11.bb b/poky/meta/recipes-devtools/strace/strace_5.12.bb index f6a91df1d..6a8996535 100644 --- a/poky/meta/recipes-devtools/strace/strace_5.11.bb +++ b/poky/meta/recipes-devtools/strace/strace_5.12.bb @@ -15,7 +15,7 @@ SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \ file://uintptr_t.patch \ file://0001-strace-fix-reproducibilty-issues.patch \ " -SRC_URI[sha256sum] = "ffe340b10c145a0f85734271e9cce56457d23f21a7ea5931ab32f8cf4e793879" +SRC_URI[sha256sum] = "29171edf9d252f89c988a4c340dfdec662f458cb8c63d85431d64bab5911e7c4" inherit autotools ptest diff --git a/poky/meta/recipes-devtools/swig/swig.inc b/poky/meta/recipes-devtools/swig/swig.inc index e62718c50..292bca393 100644 --- a/poky/meta/recipes-devtools/swig/swig.inc +++ b/poky/meta/recipes-devtools/swig/swig.inc @@ -13,6 +13,8 @@ SECTION = "devel" DEPENDS = "libpcre bison-native" SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz" +UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/swig/files/swig/" +UPSTREAM_CHECK_REGEX = "swig-(?P<pver>\d+(\.\d+)+)" inherit autotools python3native pkgconfig diff --git a/poky/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch b/poky/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch deleted file mode 100644 index 885c39561..000000000 --- a/poky/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch +++ /dev/null @@ -1,330 +0,0 @@ -From 1a5aadcd66e85c63d228bfd811a521d617c22a38 Mon Sep 17 00:00:00 2001 -From: Patrick Schneider <patrick.schneider@meetnow.eu> -Date: Thu, 13 Apr 2017 15:02:53 +0200 -Subject: [PATCH] Add Node 7.x aka V8 5.2+ support - -* Use WeakCallbackInfo instead of WeakCallbackData -* Use GetPrivate instead of GetHiddenValue -* Adopted new signature for SetWeak to support destructor calling -* SetAccessor deprecation fixed -* Proper version checks where applicable - -Upstream-Status: Submitted [https://github.com/swig/swig/pull/968] - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> ---- - Lib/javascript/v8/javascriptcode.swg | 27 +++++++++++++++++----- - Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++--- - Lib/javascript/v8/javascriptinit.swg | 16 +++++++++++-- - Lib/javascript/v8/javascriptrun.swg | 40 ++++++++++++++++++++++++++++----- - 4 files changed, 95 insertions(+), 17 deletions(-) - -diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg -index fb7d55c..b8c5089 100644 ---- a/Lib/javascript/v8/javascriptcode.swg -+++ b/Lib/javascript/v8/javascriptcode.swg -@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v - SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) { - v8::Local<v8::Object> object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - if(proxy->swigCMemOwn && proxy->swigCObject) { -@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - } - delete proxy; - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); -+#endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) - object.Dispose(); -@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - object.Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) - object->Dispose(isolate); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object->Dispose(); - #endif - } -@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v - SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) { - v8::Local<v8::Object> object = data.GetValue(); - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - if(proxy->swigCMemOwn && proxy->swigCObject) { -@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - object->Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); - #endif - } -@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat - * ----------------------------------------------------------------------------- */ - %fragment("js_getter", "templates") - %{ -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - static SwigV8ReturnValue $jswrapper(v8::Local<v8::String> property, const SwigV8PropertyCallbackInfo &info) { -+#else -+static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> property, const SwigV8PropertyCallbackInfo &info) { -+#endif - SWIGV8_HANDLESCOPE(); - - v8::Handle<v8::Value> jsresult; -@@ -233,8 +245,11 @@ fail: - * ----------------------------------------------------------------------------- */ - %fragment("js_setter", "templates") - %{ --static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, -- const SwigV8PropertyCallbackInfoVoid &info) { -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) { -+#else -+static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) { -+#endif - SWIGV8_HANDLESCOPE(); - - $jslocals -diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg -index 091467d..7461079 100644 ---- a/Lib/javascript/v8/javascripthelpers.swg -+++ b/Lib/javascript/v8/javascripthelpers.swg -@@ -6,11 +6,16 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; - typedef v8::AccessorGetter SwigV8AccessorGetterCallback; - typedef v8::AccessorSetter SwigV8AccessorSetterCallback; - typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - typedef v8::FunctionCallback SwigV8FunctionCallback; - typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; - typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; - typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid; -+#else -+typedef v8::FunctionCallback SwigV8FunctionCallback; -+typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; -+typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; -+typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid; - #endif - - /** -@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle<v8::Object> obj, const char - */ - SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> obj, const char* symbol, - SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); -+#else -+ obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); -+#endif - } - --SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, -- const SwigV8PropertyCallbackInfoVoid& info) -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) -+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info) -+#else -+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info) -+#endif - { - char buffer[256]; - char msg[512]; - int res; - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - property->WriteUtf8(buffer, 256); - res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); -+#else -+ v8::Local<v8::String> sproperty; -+ if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) { -+ sproperty->WriteUtf8(buffer, 256); -+ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); -+ } -+ else { -+ res = -1; -+ } -+#endif - - if(res<0) { - SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); -diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg -index 34befa7..86008d9 100644 ---- a/Lib/javascript/v8/javascriptinit.swg -+++ b/Lib/javascript/v8/javascriptinit.swg -@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { - v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); - v8::Local<v8::External> mod = SWIGV8_EXTERNAL_NEW(swig_module); - assert(!mod.IsEmpty()); -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -+ global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod); -+#endif - } - - SWIGRUNTIME swig_module_info * - SWIG_V8_GetModule(void *) { - v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); -+ v8::Local<v8::Value> moduleinfo; -+ if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo)) -+ return 0; -+#endif - -- if (moduleinfo.IsEmpty()) -+ if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined()) - { - // It's not yet loaded - return 0; -@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) { - - v8::Local<v8::External> moduleinfo_extern = v8::Local<v8::External>::Cast(moduleinfo); - -- if (moduleinfo_extern.IsEmpty()) -+ if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined()) - { - // Something's not right - return 0; -diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg -index 5ac52a5..30002c0 100644 ---- a/Lib/javascript/v8/javascriptrun.swg -+++ b/Lib/javascript/v8/javascriptrun.swg -@@ -193,8 +193,10 @@ public: - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data); -+#else -+ void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data); - #endif - }; - -@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val - SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) { - SWIGV8_Proxy *proxy = data.GetParameter(); -+#else -+SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) { -+ SWIGV8_Proxy *proxy = data.GetParameter(); - #endif - - delete proxy; -@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> obj, void *ptr, sw - } else { - cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); - } --#else -+#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { - cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); - } else { - cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor); - } -+#else -+ if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { -+ cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter); -+ } else { -+ cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter); -+ } - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) -@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle<v8::Value> valRef) { - - v8::Handle<v8::Object> objRef = valRef->ToObject(); - if(objRef->InternalFieldCount() < 1) return false; -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - v8::Handle<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -+ v8::Local<v8::Value> flag; -+ if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag)) -+ return false; -+#endif - return (flag->IsBoolean() && flag->BooleanValue()); - } - -@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist - SwigV8PackedData *cdata = static_cast<SwigV8PackedData *>(parameter); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SwigV8PackedData *cdata) { --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Object, SwigV8PackedData> &data) { - v8::Local<v8::Object> object = data.GetValue(); - SwigV8PackedData *cdata = data.GetParameter(); -+#else -+SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo<SwigV8PackedData> &data) { -+ SwigV8PackedData *cdata = data.GetParameter(); - #endif - - delete cdata; -@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Ob - object->Dispose(isolate); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - object->Dispose(); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - object.Clear(); - #endif - } -@@ -550,7 +571,12 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - // v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW(); - v8::Local<v8::Object> obj = SWIGV8_OBJECT_NEW(); - -+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); -+#else -+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); -+ obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true)); -+#endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) - obj->SetPointerInInternalField(0, cdata); -@@ -573,9 +599,11 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf - cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); - #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) - cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); --#else -+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) - cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); - // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); -+#else -+ cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); - #endif - - #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) --- -2.9.5 - diff --git a/poky/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch b/poky/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch deleted file mode 100644 index f4ed782a8..000000000 --- a/poky/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch +++ /dev/null @@ -1,179 +0,0 @@ -From 90ba174fcea1618af57aa594199541d47a89b7f6 Mon Sep 17 00:00:00 2001 -From: William S Fulton <wsf@fultondesigns.co.uk> -Date: Sun, 17 Sep 2017 19:02:55 +0100 -Subject: [PATCH 1/2] Fix generated code for constant expressions containing - wchar_t L literals. - -Such as: - # define __WCHAR_MAX (0x7fffffff + L'\0') - -Reported on swig-user mailing list. ---- - CHANGES.current | 5 +++++ - Examples/test-suite/csharp/preproc_constants_c_runme.cs | 3 ++- - Examples/test-suite/csharp/preproc_constants_runme.cs | 2 ++ - Examples/test-suite/d/preproc_constants_c_runme.1.d | 2 ++ - Examples/test-suite/d/preproc_constants_c_runme.2.d | 2 ++ - Examples/test-suite/d/preproc_constants_runme.1.d | 2 ++ - Examples/test-suite/d/preproc_constants_runme.2.d | 2 ++ - Examples/test-suite/php/preproc_constants_c_runme.php | 2 ++ - Examples/test-suite/php/preproc_constants_runme.php | 2 ++ - Examples/test-suite/php5/preproc_constants_c_runme.php | 2 ++ - Examples/test-suite/php5/preproc_constants_runme.php | 2 ++ - Examples/test-suite/preproc_constants.i | 3 +++ - Source/CParse/parser.y | 2 +- - 13 files changed, 29 insertions(+), 2 deletions(-) - -Upstream-Status: Backport -[https://github.com/swig/swig/commit/90ba174fcea1618af57aa594199541d47a89b7f6] -Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com> - -diff --git a/Examples/test-suite/csharp/preproc_constants_c_runme.cs b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -index 76c684d..1c28e49 100644 ---- a/Examples/test-suite/csharp/preproc_constants_c_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_c_runme.cs -@@ -61,7 +61,8 @@ public class runme { - assert( typeof(int) == preproc_constants_c.EXPR_LAND.GetType() ); - assert( typeof(int) == preproc_constants_c.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants_c.EXPR_CONDITIONAL.GetType() ); -- -+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MAX.GetType() ); -+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MIN.GetType() ); - } - static void assert(bool assertion) { - if (!assertion) -diff --git a/Examples/test-suite/csharp/preproc_constants_runme.cs b/Examples/test-suite/csharp/preproc_constants_runme.cs -index 9fae591..6b02e30 100644 ---- a/Examples/test-suite/csharp/preproc_constants_runme.cs -+++ b/Examples/test-suite/csharp/preproc_constants_runme.cs -@@ -60,6 +60,8 @@ public class runme { - assert( typeof(bool) == preproc_constants.EXPR_LAND.GetType() ); - assert( typeof(bool) == preproc_constants.EXPR_LOR.GetType() ); - assert( typeof(double) == preproc_constants.EXPR_CONDITIONAL.GetType() ); -+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MAX.GetType() ); -+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MIN.GetType() ); - - } - static void assert(bool assertion) { -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.1.d b/Examples/test-suite/d/preproc_constants_c_runme.1.d -index d846c71..2b349af 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.1.d -@@ -61,4 +61,6 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_c_runme.2.d b/Examples/test-suite/d/preproc_constants_c_runme.2.d -index 9bdbb93..1bac525 100644 ---- a/Examples/test-suite/d/preproc_constants_c_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_c_runme.2.d -@@ -61,4 +61,6 @@ void main() { - static assert(is(int == typeof(EXPR_LAND()))); - static assert(is(int == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.1.d b/Examples/test-suite/d/preproc_constants_runme.1.d -index 009405f..f743f48 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.1.d -+++ b/Examples/test-suite/d/preproc_constants_runme.1.d -@@ -60,4 +60,6 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/d/preproc_constants_runme.2.d b/Examples/test-suite/d/preproc_constants_runme.2.d -index 2d92ef0..0d96c37 100644 ---- a/Examples/test-suite/d/preproc_constants_runme.2.d -+++ b/Examples/test-suite/d/preproc_constants_runme.2.d -@@ -60,4 +60,6 @@ void main() { - static assert(is(bool == typeof(EXPR_LAND()))); - static assert(is(bool == typeof(EXPR_LOR()))); - static assert(is(double == typeof(EXPR_CONDITIONAL()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MAX()))); -+ static assert(is(int == typeof(EXPR_WCHAR_MIN()))); - } -diff --git a/Examples/test-suite/php/preproc_constants_c_runme.php b/Examples/test-suite/php/preproc_constants_c_runme.php -index af9b76e..e59fe18 100644 ---- a/Examples/test-suite/php/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php/preproc_constants_c_runme.php -@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php -index 5c9119b..8e117ea 100644 ---- a/Examples/test-suite/php/preproc_constants_runme.php -+++ b/Examples/test-suite/php/preproc_constants_runme.php -@@ -61,5 +61,7 @@ check::equal(gettype(preproc_constants::EXPR_OR), "integer", "preproc_constants. - check::equal(gettype(preproc_constants::EXPR_LAND), "boolean", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php5/preproc_constants_c_runme.php b/Examples/test-suite/php5/preproc_constants_c_runme.php -index 1ea0195..d978fab 100644 ---- a/Examples/test-suite/php5/preproc_constants_c_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_c_runme.php -@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant - check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/php5/preproc_constants_runme.php b/Examples/test-suite/php5/preproc_constants_runme.php -index fb9ee4f..7527026 100644 ---- a/Examples/test-suite/php5/preproc_constants_runme.php -+++ b/Examples/test-suite/php5/preproc_constants_runme.php -@@ -70,5 +70,7 @@ check::equal(gettype(preproc_constants::EXPR_LAND), "integer", "preproc_constant - check::equal(gettype(preproc_constants::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type"); - - check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type"); -+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type"); - - ?> -diff --git a/Examples/test-suite/preproc_constants.i b/Examples/test-suite/preproc_constants.i -index 3a999ad..16b44c9 100644 ---- a/Examples/test-suite/preproc_constants.i -+++ b/Examples/test-suite/preproc_constants.i -@@ -87,6 +87,9 @@ - #define EXPR_LOR 0xFF || 1 - #define EXPR_CONDITIONAL true ? 2 : 2.2 - -+#define EXPR_WCHAR_MAX (0x7fffffff + L'\0') -+#define EXPR_WCHAR_MIN (-EXPR_WCHAR_MAX - 1) -+ - #define EXPR_CHAR_COMPOUND_ADD 'A' + 12 - #define EXPR_CHAR_COMPOUND_LSHIFT 'B' << 6 - #define H_SUPPRESS_SCALING_MAGIC (('s'<<24) | ('u'<<16) | ('p'<<8) | 'p') -diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y -index 2e92cd0..273dadb 100644 ---- a/Source/CParse/parser.y -+++ b/Source/CParse/parser.y -@@ -194,7 +194,7 @@ int SWIG_cparse_template_reduce(int treduce) { - * ----------------------------------------------------------------------------- */ - - static int promote_type(int t) { -- if (t <= T_UCHAR || t == T_CHAR) return T_INT; -+ if (t <= T_UCHAR || t == T_CHAR || t == T_WCHAR) return T_INT; - return t; - } - --- -2.9.5 - diff --git a/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch b/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch index 81df3e264..f27f80ea1 100644 --- a/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch +++ b/poky/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch @@ -13,13 +13,11 @@ http://sourceforge.net/mailarchive/message.php?msg_id=29179733 Source/Modules/main.cxx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) -diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx -index d2f5d3b..cbb0a12 100644 --- a/Source/Modules/main.cxx +++ b/Source/Modules/main.cxx -@@ -26,6 +26,11 @@ char cvsroot_main_cxx[] = "$Id$"; - #include "cparse.h" +@@ -25,6 +25,11 @@ #include <ctype.h> + #include <errno.h> #include <limits.h> // for INT_MAX +#ifndef _WIN32 +#include <cstddef> @@ -29,7 +27,7 @@ index d2f5d3b..cbb0a12 100644 // Global variables -@@ -902,9 +907,9 @@ int SWIG_main(int argc, char *argv[], Language *l) { +@@ -934,9 +939,9 @@ int SWIG_main(int argc, char *argv[], co // Check for SWIG_LIB environment variable if ((c = getenv("SWIG_LIB")) == (char *) 0) { @@ -40,7 +38,7 @@ index d2f5d3b..cbb0a12 100644 if (!(GetModuleFileName(0, buf, MAX_PATH) == 0 || (p = strrchr(buf, '\\')) == 0)) { *(p + 1) = '\0'; SwigLib = NewStringf("%sLib", buf); // Native windows installation path -@@ -914,7 +919,22 @@ int SWIG_main(int argc, char *argv[], Language *l) { +@@ -946,7 +951,22 @@ int SWIG_main(int argc, char *argv[], co if (Len(SWIG_LIB_WIN_UNIX) > 0) SwigLibWinUnix = NewString(SWIG_LIB_WIN_UNIX); // Unix installation path using a drive letter (for msys/mingw) #else @@ -64,6 +62,3 @@ index d2f5d3b..cbb0a12 100644 #endif } else { SwigLib = NewString(c); --- -1.7.9.5 - diff --git a/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch b/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch index 1b1128aca..114de7ed9 100644 --- a/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch +++ b/poky/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch @@ -9,11 +9,9 @@ Upstream-Status: pending configure.ac | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) -diff --git a/configure.ac b/configure.ac -index 0c984b7..6edcec1 100644 --- a/configure.ac +++ b/configure.ac -@@ -70,38 +70,14 @@ AC_MSG_RESULT([$with_pcre]) +@@ -52,38 +52,14 @@ AC_MSG_RESULT([$with_pcre]) dnl To make configuring easier, check for a locally built PCRE using the Tools/pcre-build.sh script if test x"${with_pcre}" = xyes ; then @@ -59,6 +57,3 @@ index 0c984b7..6edcec1 100644 dnl CCache --- -1.9.3 - diff --git a/poky/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch b/poky/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch deleted file mode 100644 index a91385916..000000000 --- a/poky/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch +++ /dev/null @@ -1,191 +0,0 @@ -From b6c0ef4b8f6e5c089ac7104b3aaba8f1d17b8b82 Mon Sep 17 00:00:00 2001 -From: Olly Betts <olly@survex.com> -Date: Mon, 11 Jun 2018 15:51:53 +1200 -Subject: [PATCH] [Python] Fix new GCC8 warnings in generated code - -Avoid casts between incompatible function types where possible (when -keyword args are in use, it is not possible to avoid such warnings as -they are inherent in the design of Python's C API in that particular -case). Fixes #1259. - -Upstream-Status: Backport -[https://github.com/swig/swig/commit/7f9883011029674553a2a4b623d459f02b512458] - -Signed-off-by: Yi Zhao <yi.zhao@windriver.com> ---- - Lib/python/pyinit.swg | 4 ++-- - Lib/python/pyrun.swg | 34 ++++++++++++++++++++++++++-------- - Source/Modules/python.cxx | 26 +++++++++++++------------- - 3 files changed, 41 insertions(+), 23 deletions(-) - -diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg -index 2cc5828..6bf68c1 100644 ---- a/Lib/python/pyinit.swg -+++ b/Lib/python/pyinit.swg -@@ -368,8 +368,8 @@ SWIG_init(void) { - (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL - }; - static SwigPyGetSet thisown_getset_closure = { -- (PyCFunction) SwigPyObject_own, -- (PyCFunction) SwigPyObject_own -+ SwigPyObject_own, -+ SwigPyObject_own - }; - static PyGetSetDef thisown_getset_def = { - (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure -diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg -index ab1237f..3d0b1b3 100644 ---- a/Lib/python/pyrun.swg -+++ b/Lib/python/pyrun.swg -@@ -465,6 +465,14 @@ SwigPyObject_repr(SwigPyObject *v, PyObject *args) - return repr; - } - -+/* We need a version taking two PyObject* parameters so it's a valid -+ * PyCFunction to use in swigobject_methods[]. */ -+SWIGRUNTIME PyObject * -+SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) -+{ -+ return SwigPyObject_repr((SwigPyObject*)v); -+} -+ - SWIGRUNTIME int - SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) - { -@@ -594,11 +602,7 @@ SwigPyObject_append(PyObject* v, PyObject* next) - } - - SWIGRUNTIME PyObject* --#ifdef METH_NOARGS --SwigPyObject_next(PyObject* v) --#else - SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) --#endif - { - SwigPyObject *sobj = (SwigPyObject *) v; - if (sobj->next) { -@@ -633,6 +637,20 @@ SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) - return SWIG_Py_Void(); - } - -+#ifdef METH_NOARGS -+static PyObject* -+SwigPyObject_disown2(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) -+{ -+ return SwigPyObject_disown(v); -+} -+ -+static PyObject* -+SwigPyObject_acquire2(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) -+{ -+ return SwigPyObject_acquire(v); -+} -+#endif -+ - SWIGINTERN PyObject* - SwigPyObject_own(PyObject *v, PyObject *args) - { -@@ -673,12 +691,12 @@ SwigPyObject_own(PyObject *v, PyObject *args) - #ifdef METH_O - static PyMethodDef - swigobject_methods[] = { -- {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, -- {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, -+ {(char *)"disown", (PyCFunction)SwigPyObject_disown2, METH_NOARGS, (char *)"releases ownership of the pointer"}, -+ {(char *)"acquire", (PyCFunction)SwigPyObject_acquire2,METH_NOARGS, (char *)"acquires ownership of the pointer"}, - {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, - {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, - {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, -- {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, -+ {(char *)"__repr__",(PyCFunction)SwigPyObject_repr2, METH_NOARGS, (char *)"returns object representation"}, - {0, 0, 0, 0} - }; - #else -@@ -689,7 +707,7 @@ swigobject_methods[] = { - {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, - {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, - {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, -- {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, -+ {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, - {0, 0, 0, 0} - }; - #endif -diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx -index a6801fc..72eaa77 100644 ---- a/Source/Modules/python.cxx -+++ b/Source/Modules/python.cxx -@@ -1109,7 +1109,7 @@ public: - * ------------------------------------------------------------ */ - int add_pyinstancemethod_new() { - String *name = NewString("SWIG_PyInstanceMethod_New"); -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, NULL},\n", name, name); -+ Printf(methods, "\t { \"%s\", %s, METH_O, NULL},\n", name, name); - Delete(name); - return 0; - } -@@ -2479,17 +2479,17 @@ public: - if (!kw) { - if (n && funpack) { - if (num_required == 0 && num_arguments == 0) { -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_NOARGS, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_NOARGS, ", name, function); - } else if (num_required == 1 && num_arguments == 1) { -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_O, ", name, function); - } else { -- Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function); - } - } else { -- Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function); -+ Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function); - } - } else { -- Printf(methods, "\t { (char *)\"%s\", (PyCFunction) %s, METH_VARARGS | METH_KEYWORDS, ", name, function); -+ Printf(methods, "\t { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, ", name, function); - } - - if (!n) { -@@ -3857,7 +3857,7 @@ public: - if (shadow) { - if (builtin) { - String *rname = SwigType_namestr(real_classname); -- Printf(builtin_methods, " { \"__disown__\", (PyCFunction) Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname); -+ Printf(builtin_methods, " { \"__disown__\", Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname); - Delete(rname); - } else { - String *symname = Getattr(n, "sym:name"); -@@ -4694,13 +4694,13 @@ public: - int argcount = Getattr(n, "python:argcount") ? atoi(Char(Getattr(n, "python:argcount"))) : 2; - String *ds = have_docstring(n) ? cdocstring(n, AUTODOC_FUNC) : NewString(""); - if (check_kwargs(n)) { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS|METH_KEYWORDS, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, \"%s\" },\n", symname, wname, ds); - } else if (argcount == 0) { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_NOARGS, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", %s, METH_NOARGS, \"%s\" },\n", symname, wname, ds); - } else if (argcount == 1) { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_O, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", %s, METH_O, \"%s\" },\n", symname, wname, ds); - } else { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS, (char *) \"%s\" },\n", symname, wname, ds); -+ Printf(builtin_methods, " { \"%s\", %s, METH_VARARGS, \"%s\" },\n", symname, wname, ds); - } - Delete(fullname); - Delete(wname); -@@ -4801,10 +4801,10 @@ public: - Append(pyflags, "METH_VARARGS"); - if (have_docstring(n)) { - String *ds = cdocstring(n, AUTODOC_STATICFUNC); -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, (char *) \"%s\" },\n", symname, wname, pyflags, ds); -+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"%s\" },\n", symname, wname, pyflags, ds); - Delete(ds); - } else { -- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, \"\" },\n", symname, wname, pyflags); -+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"\" },\n", symname, wname, pyflags); - } - Delete(fullname); - Delete(wname); --- -2.7.4 - diff --git a/poky/meta/recipes-devtools/swig/swig/determinism.patch b/poky/meta/recipes-devtools/swig/swig/determinism.patch index 8ffb4bce8..84c399182 100644 --- a/poky/meta/recipes-devtools/swig/swig/determinism.patch +++ b/poky/meta/recipes-devtools/swig/swig/determinism.patch @@ -5,11 +5,9 @@ Upstream-Status: Inappropriate [OE reproducibiity fix upstream unlikely to take] RP 2021/3/1 -Index: swig-3.0.12/Source/Modules/main.cxx -=================================================================== ---- swig-3.0.12.orig/Source/Modules/main.cxx -+++ swig-3.0.12/Source/Modules/main.cxx -@@ -636,7 +636,6 @@ void SWIG_getoptions(int argc, char *arg +--- a/Source/Modules/main.cxx ++++ b/Source/Modules/main.cxx +@@ -642,7 +642,6 @@ static void getoptions(int argc, char *a } } else if (strcmp(argv[i], "-version") == 0) { fprintf(stdout, "\nSWIG Version %s\n", Swig_package_version()); diff --git a/poky/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch b/poky/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch deleted file mode 100644 index 10e4afd1b..000000000 --- a/poky/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 9825fcbab5c4ddd867432f9922bebfbec7b78af0 Mon Sep 17 00:00:00 2001 -From: Mark Dufour <m.dufour@kopano.com> -Date: Tue, 14 Feb 2017 10:34:37 +0100 -Subject: [PATCH] [Coverity] fix issue reported for SWIG_Python_FixMethods - -Fix Coverity issue reported for SWIG_Python_FixMethods: - -"buffer_size: Calling strncpy with a source string whose length -(10 chars) is greater than or equal to the size argument (10) -will fail to null-terminate buff." - -The issue is only reported for the "swig_ptr: " line, but for -consistency we replace both occurrences of strncpy with memcpy. ---- -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Backport [https://github.com/swig/swig/pull/898] - - Lib/python/pyinit.swg | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: swig-3.0.12/Lib/python/pyinit.swg -=================================================================== ---- swig-3.0.12.orig/Lib/python/pyinit.swg -+++ swig-3.0.12/Lib/python/pyinit.swg -@@ -306,9 +306,9 @@ SWIG_Python_FixMethods(PyMethodDef *meth - char *ndoc = (char*)malloc(ldoc + lptr + 10); - if (ndoc) { - char *buff = ndoc; -- strncpy(buff, methods[i].ml_doc, ldoc); -+ memcpy(buff, methods[i].ml_doc, ldoc); - buff += ldoc; -- strncpy(buff, "swig_ptr: ", 10); -+ memcpy(buff, "swig_ptr: ", 10); - buff += 10; - SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); - methods[i].ml_doc = ndoc; diff --git a/poky/meta/recipes-devtools/swig/swig_3.0.12.bb b/poky/meta/recipes-devtools/swig/swig_3.0.12.bb deleted file mode 100644 index 090aaa811..000000000 --- a/poky/meta/recipes-devtools/swig/swig_3.0.12.bb +++ /dev/null @@ -1,13 +0,0 @@ -require ${BPN}.inc - -SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \ - file://0001-configure-use-pkg-config-for-pcre-detection.patch \ - file://0001-Add-Node-7.x-aka-V8-5.2-support.patch \ - file://swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch \ - file://Python-Fix-new-GCC8-warnings-in-generated-code.patch \ - file://0001-Fix-generated-code-for-constant-expressions-containi.patch \ - file://determinism.patch \ - " -SRC_URI[md5sum] = "82133dfa7bba75ff9ad98a7046be687c" -SRC_URI[sha256sum] = "7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d" - diff --git a/poky/meta/recipes-devtools/swig/swig_4.0.2.bb b/poky/meta/recipes-devtools/swig/swig_4.0.2.bb new file mode 100644 index 000000000..718ad89a5 --- /dev/null +++ b/poky/meta/recipes-devtools/swig/swig_4.0.2.bb @@ -0,0 +1,7 @@ +require ${BPN}.inc + +SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \ + file://0001-configure-use-pkg-config-for-pcre-detection.patch \ + file://determinism.patch \ + " +SRC_URI[sha256sum] = "d53be9730d8d58a16bf0cbd1f8ac0c0c3e1090573168bfa151b01eb47fa906fc" diff --git a/poky/meta/recipes-devtools/tcf-agent/tcf-agent/0001-Fixed-copyright-messages.patch b/poky/meta/recipes-devtools/tcf-agent/tcf-agent/0001-Fixed-copyright-messages.patch new file mode 100644 index 000000000..ed73808e9 --- /dev/null +++ b/poky/meta/recipes-devtools/tcf-agent/tcf-agent/0001-Fixed-copyright-messages.patch @@ -0,0 +1,56 @@ +From 20ac1f939a8a97b03abec55d865050fdaa0f343a Mon Sep 17 00:00:00 2001 +From: Eugene Tarassov <eugenet@xilinx.com> +Date: Tue, 8 Jan 2019 21:56:16 -0800 +Subject: [oe-core][PATCH 1/1] Fixed copyright messages + +Upstream-Status: Backport [https://git.eclipse.org/c/tcf/org.eclipse.tcf.agent.git/commit/?id=20ac1f939a8a97b03abec55d865050fdaa0f343a] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com> +--- + agent/tcf/framework/channel_lws.c | 2 +- + agent/tcf/framework/cpudefs-mdep-mux.h | 19 +++++++++++++------ + 2 files changed, 14 insertions(+), 7 deletions(-) + +diff --git a/agent/tcf/framework/channel_lws.c b/agent/tcf/framework/channel_lws.c +index 0cb9585..d9352f3 100644 +--- a/tcf/framework/channel_lws.c ++++ b/tcf/framework/channel_lws.c +@@ -1,5 +1,5 @@ + /******************************************************************************* +- * Copyright (c) 2016-2017 Wind River Systems, Inc. ++ * Copyright (c) 2016-2018 Wind River Systems, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. +diff --git a/agent/tcf/framework/cpudefs-mdep-mux.h b/agent/tcf/framework/cpudefs-mdep-mux.h +index c9e0db7..0397a6a 100644 +--- a/tcf/framework/cpudefs-mdep-mux.h ++++ b/tcf/framework/cpudefs-mdep-mux.h +@@ -1,10 +1,17 @@ +-/* +- * Copyright (c) 2013 Wind River Systems, Inc. ++/******************************************************************************* ++ * Copyright (c) 2013 Wind River Systems, Inc. and others. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Eclipse Public License v1.0 ++ * and Eclipse Distribution License v1.0 which accompany this distribution. ++ * The Eclipse Public License is available at ++ * http://www.eclipse.org/legal/epl-v10.html ++ * and the Eclipse Distribution License is available at ++ * http://www.eclipse.org/org/documents/edl-v10.php. ++ * You may elect to redistribute this code under either of these licenses. + * +- * The right to copy, distribute, modify or otherwise make use +- * of this software may be licensed only pursuant to the terms +- * of an applicable Wind River license agreement. +- */ ++ * Contributors: ++ * Wind River Systems - initial API and implementation ++ *******************************************************************************/ + + #include <tcf/config.h> + +-- +2.7.4 + diff --git a/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb b/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb index 854269a0f..87369c47d 100644 --- a/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb +++ b/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb @@ -15,6 +15,7 @@ SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent \ file://ldflags.patch \ file://tcf-agent.init \ file://tcf-agent.service \ + file://0001-Fixed-copyright-messages.patch \ " DEPENDS = "util-linux openssl" diff --git a/poky/meta/recipes-devtools/unfs3/unfs3_git.bb b/poky/meta/recipes-devtools/unfs3/unfs3_git.bb index a21fb5839..f9bae720c 100644 --- a/poky/meta/recipes-devtools/unfs3/unfs3_git.bb +++ b/poky/meta/recipes-devtools/unfs3/unfs3_git.bb @@ -37,7 +37,7 @@ BBCLASSEXTEND = "native nativesdk" inherit autotools EXTRA_OECONF_append_class-native = " --sbindir=${bindir}" CFLAGS_append = " -I${STAGING_INCDIR}/tirpc" -LDFLAGS_append = " -ltirpc" +EXTRA_OECONF_append = " LIBS=-ltirpc" # Turn off these header detects else the inode search # will walk entire file systems and this is a real problem diff --git a/poky/meta/recipes-devtools/vala/vala_0.50.4.bb b/poky/meta/recipes-devtools/vala/vala_0.52.4.bb index 438163551..8e2869d40 100644 --- a/poky/meta/recipes-devtools/vala/vala_0.50.4.bb +++ b/poky/meta/recipes-devtools/vala/vala_0.52.4.bb @@ -2,4 +2,4 @@ require ${BPN}.inc SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch" -SRC_URI[sha256sum] = "58fc31fa8bf492035b11d1a7d514801710afc65bd458b24c0f8d00280a92a38c" +SRC_URI[sha256sum] = "ecde520e5160e659ee699f8b1cdc96065edbd44bbd08eb48ef5f2506751fdf31" diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch new file mode 100644 index 000000000..2a73f7e81 --- /dev/null +++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch @@ -0,0 +1,72 @@ +From 61bc8664f93cd980831c9da4a3e8a385b089a0ab Mon Sep 17 00:00:00 2001 +From: Yi Fan Yu <yifan.yu@windriver.com> +Date: Tue, 23 Mar 2021 09:32:22 -0700 +Subject: [PATCH] Add missing musl.supp + +3.17 did not ship musl.supp in the tarball. + +This is a workaround until next release. + +Upstream-Status: Backport [dde556d51f8226a6de564a00bf82536bb7042c54] + +Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> +--- + musl.supp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + create mode 100644 musl.supp + +diff --git a/musl.supp b/musl.supp +new file mode 100644 +index 000000000..864172a24 +--- /dev/null ++++ b/musl.supp +@@ -0,0 +1,46 @@ ++# Suppressions for musl libc ++# See: https://www.openwall.com/lists/musl/2017/06/15/4 ++ ++{ ++ musl-dynlink-false-positive1 ++ Memcheck:Leak ++ fun:calloc ++ fun:load_direct_deps ++ fun:load_deps ++ fun:load_deps ++ fun:__dls3 ++ fun:__dls2b ++ fun:__dls2 ++} ++ ++{ ++ musl-dynlink-false-positive2 ++ Memcheck:Leak ++ fun:calloc ++ fun:load_direct_deps ++ fun:load_deps ++ fun:load_deps ++ fun:__dls3 ++ fun:__dls2 ++} ++ ++{ ++ musl-dynlink-false-positive3 ++ Memcheck:Leak ++ fun:calloc ++ fun:load_library ++ fun:load_preload ++ fun:__dls3 ++ fun:__dls2b ++ fun:__dls2 ++} ++ ++{ ++ musl-dynlink-false-positive4 ++ Memcheck:Leak ++ fun:calloc ++ fun:load_library ++ fun:load_preload ++ fun:__dls3 ++ fun:__dls2 ++} +-- +2.17.1 + diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch deleted file mode 100644 index 98cbcd132..000000000 --- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch +++ /dev/null @@ -1,200 +0,0 @@ -From 83c24e31df6932a6d4fced179050c6d8d8c6f3b5 Mon Sep 17 00:00:00 2001 -From: Philippe Waroquiers <philippe.waroquiers@skynet.be> -Date: Sun, 7 Mar 2021 22:29:27 +0100 -Subject: [PATCH] Fix nlcontrolc.vgtest hanging on newer glibc and/or arm64 - -This test verifies that GDB can interrupt a process with all threads -blocked in a long select syscall. -The test used to terminate by having GDB modifying the select argument. -However, modifying the select argument works only for specific arch -and/or specific versions of glibc. -The test then blocks on other architectures/glibc versions. - -The previous version of the test was: - * first launching sleepers so as to have all threads blocked in long select - * interrupting these threads - * changing the select time arg so that the threads burn cpu - * and then change variables to have the program exit. - -The new version does: - * first launches sleepers so that all threads are burning cpu. - * interrupting these threads - * change the local variables of sleepers so that the threads will - block in a long select syscall - * interrupt these threads - * kill the program. - -With this new version, we still check the behaviour of gdb+vgdbserver -for both burning and sleep threads, but without having the termination -depending on modifying select syscall argument. - -Tested on debian amd64 and on ubuntu arm64 (to check the test does not hang -on an arm64 platform). - -Upstream-Status: Backport - -From commit on master: -c79180a3afcf65902e578646c3b716cc749db406 - -Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> ---- - gdbserver_tests/nlcontrolc.stderr.exp | 4 +- - gdbserver_tests/nlcontrolc.stdinB.gdb | 57 +++++++++++++++----------- - gdbserver_tests/nlcontrolc.stdoutB.exp | 25 ++++++----- - gdbserver_tests/nlcontrolc.vgtest | 12 +++--- - 4 files changed, 56 insertions(+), 42 deletions(-) - -diff --git a/gdbserver_tests/nlcontrolc.stderr.exp b/gdbserver_tests/nlcontrolc.stderr.exp -index ac75bb3da..b63a9a988 100644 ---- a/gdbserver_tests/nlcontrolc.stderr.exp -+++ b/gdbserver_tests/nlcontrolc.stderr.exp -@@ -3,9 +3,9 @@ Nulgrind, the minimal Valgrind tool - (action at startup) vgdb me ... - - --loops/sleep_ms/burn/threads_spec/affinity: 1000000000 1000000000 1000000000 BSBSBSBS 1 -+loops/sleep_ms/burn/threads_spec/affinity: 1000000000 0 100000 BSBSBSBS 1 - Brussels ready to sleep and/or burn - London ready to sleep and/or burn - Petaouchnok ready to sleep and/or burn - main ready to sleep and/or burn -- -+Gdb request to kill this process -diff --git a/gdbserver_tests/nlcontrolc.stdinB.gdb b/gdbserver_tests/nlcontrolc.stdinB.gdb -index 667ece18d..ea4fcd530 100644 ---- a/gdbserver_tests/nlcontrolc.stdinB.gdb -+++ b/gdbserver_tests/nlcontrolc.stdinB.gdb -@@ -9,32 +9,43 @@ shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep main nl - # - continue - # --# Here, all tasks should be blocked in a loooonnnng select, all in WaitSys --info threads --# We will unblock them by changing their timeout argument --# To avoid going into the frame where the timeval arg is, --# it has been defined as global variables, as the nr --# of calls on the stack differs between 32bits and 64bits, --# and/or between OS. --# ensure select finishes in a few milliseconds max: --p t[0].tv_sec = 0 --p t[1].tv_sec = 0 --p t[2].tv_sec = 0 --p t[3].tv_sec = 0 --# --# We will change the burning parameters in a few seconds -+# Threads are burning cpu now -+# We would like to fully test info threads here, but which thread are Runnable -+# or Yielding is unpredictable. With a recent enough gdb, check the nr of -+# threads by state using pipe commands and grep/wc. -+init-if-undefined $_gdb_major = 0 -+init-if-undefined $_gdb_minor = 0 -+if $_gdb_major >= 9 -+ | info threads | grep VgTs_Runnable | wc -l -+ | info threads | grep VgTs_Yielding | wc -l -+else -+ echo 1\n -+ echo 3\n -+end -+# We change the variables so that all the threads are blocked in a syscall -+p burn = 0 -+p sleepms = 1000000 -+# -+# - shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep changed nlcontrolc.stdoutB.out - # --echo changed burning parameters\n -+echo changed burning parameters to sleeping parameters\n - continue -+# Here, all tasks should be blocked in a loooonnnng select, all in WaitSys -+info threads -+# We reset the sleepms to 0. The threads should still be blocked in the syscall -+p sleepms = 0 -+shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep reset nlcontrolc.stdoutB.out - # --# Threads are burning cpu now --# We would like to test info threads here, but which thread are Runnable or Yielding --# is unpredictable. --# info threads --p burn = 0 --p loops = 0 --p report_finished = 0 -+echo reset to sleeping parameters\n - continue --# and the process should stop very quickly now -+# threads should still be blocked in a loooonnnng select, all in WaitSys -+info threads -+if $_gdb_major >= 9 -+ | info threads | grep VgTs_WaitSys | wc -l -+else -+ echo 4\n -+end -+# Make the process die. -+kill - quit -diff --git a/gdbserver_tests/nlcontrolc.stdoutB.exp b/gdbserver_tests/nlcontrolc.stdoutB.exp -index e8a5ff8ba..2e8dc8498 100644 ---- a/gdbserver_tests/nlcontrolc.stdoutB.exp -+++ b/gdbserver_tests/nlcontrolc.stdoutB.exp -@@ -1,18 +1,21 @@ - Continuing. - Program received signal SIGTRAP, Trace/breakpoint trap. -+do_burn () at sleepers.c:41 -+41 for (i = 0; i < burn; i++) loopnr++; -+ > > > > > >1 -+3 -+$1 = 0 -+$2 = 1000000 -+changed burning parameters to sleeping parameters -+Continuing. -+Program received signal SIGTRAP, Trace/breakpoint trap. - 0x........ in syscall ... - * 1 Thread .... (tid 1 VgTs_WaitSys) 0x........ in syscall ... --$1 = 0 --$2 = 0 - $3 = 0 --$4 = 0 --changed burning parameters -+reset to sleeping parameters - Continuing. - Program received signal SIGTRAP, Trace/breakpoint trap. --do_burn () at sleepers.c:41 --41 for (i = 0; i < burn; i++) loopnr++; --$5 = 0 --$6 = 0 --$7 = 0 --Continuing. --Program exited normally. -+0x........ in syscall ... -+* 1 Thread .... (tid 1 VgTs_WaitSys) 0x........ in syscall ... -+ > > > >4 -+Kill the program being debugged? (y or n) [answered Y; input not from terminal] -diff --git a/gdbserver_tests/nlcontrolc.vgtest b/gdbserver_tests/nlcontrolc.vgtest -index bb5308403..09edfcaba 100644 ---- a/gdbserver_tests/nlcontrolc.vgtest -+++ b/gdbserver_tests/nlcontrolc.vgtest -@@ -4,16 +4,16 @@ - # and modify some variables - # the user can control-c an process with all threads in Running/Yielding - # and modify some variables --# sleepers is started with argument so that it will compute during ages. --# The variable modifications means it will exit in a reasonable time. --# This test is disabled on Solaris because modifying select/poll/ppoll timeout --# has no effect if a thread is already blocked in that syscall. -+# sleepers is started so that it burns CPU. -+# We then interrupt the process. -+# We modify variables so that instead of burning cpu, sleepers blocks -+# all threads in a select syscall. - prog: sleepers --args: 1000000000 1000000000 1000000000 BSBSBSBS 1 -+args: 1000000000 0 100000 BSBSBSBS 1 - vgopts: --tool=none --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-nlcontrolc - stderr_filter: filter_stderr - # Bug 338633 nlcontrol hangs on arm64 currently. --prereq: test -e gdb -a -f vgdb.invoker && ! ../tests/arch_test arm64 && ! ../tests/os_test solaris -+prereq: test -e gdb -a -f vgdb.invoker && ! ../tests/os_test solaris - progB: gdb - argsB: --quiet -l 60 --nx ./sleepers - stdinB: nlcontrolc.stdinB.gdb --- -2.29.2 - diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch deleted file mode 100644 index 37f6ea667..000000000 --- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 15330adf7c2471fbaa6a0818db07078d81dbff97 Mon Sep 17 00:00:00 2001 -From: Bart Van Assche <bvanassche@acm.org> -Date: Sat, 19 Sep 2020 08:08:59 -0700 -Subject: [PATCH] drd: Port to Fedora 33 - -Apparently on Fedora 33 the POSIX thread functions exist in both libc and -libpthread. Hence this patch that intercepts the pthread functions in -libc. See also https://bugs.kde.org/show_bug.cgi?id=426144 . - -Signed-off-by: Bart Van Assche <bvanassche@acm.org> - -This patch was imported from the valgrind sourceware server -(https://sourceware.org/git/?p=valgrind.git;a=commit;h=15330adf7c2471fbaa6a0818db07078d81dbff97) -It was modified to remove the changes to the valgrind NEWS file, -as these are difficult to maintain and don't impact the valgrind -code itself. - -Upstream-Status: Backport - -Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com> ---- - drd/drd_pthread_intercepts.c | 9 +++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c -index 58c45aaec..c2882e5ab 100644 ---- a/drd/drd_pthread_intercepts.c -+++ b/drd/drd_pthread_intercepts.c -@@ -174,7 +174,16 @@ static int never_true; - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ - { return implf argl; } - #else -+/* -+ * On Linux, intercept both the libc and the libpthread functions. At -+ * least glibc 2.32.9000 (Fedora 34) has an implementation of all pthread -+ * functions in both libc and libpthread. Older glibc versions only have an -+ * implementation of the pthread functions in libpthread. -+ */ - #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ -+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \ -+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ -+ { return implf argl; } \ - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ - { return implf argl; } --- -2.25.1 - diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch deleted file mode 100644 index e96bf3c61..000000000 --- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch +++ /dev/null @@ -1,31 +0,0 @@ -The changes in 0001-drd-Port-to-Fedora-33.patch break builds on musl. These -need a __GLIBC__ guard to ensure musl builds continue to work. - -Upstream-Status: Pending -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> - -Index: valgrind-3.16.1/drd/drd_pthread_intercepts.c -=================================================================== ---- valgrind-3.16.1.orig/drd/drd_pthread_intercepts.c -+++ valgrind-3.16.1/drd/drd_pthread_intercepts.c -@@ -180,6 +180,7 @@ static int never_true; - * functions in both libc and libpthread. Older glibc versions only have an - * implementation of the pthread functions in libpthread. - */ -+#ifdef __GLIBC__ - #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \ - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ -@@ -187,6 +188,12 @@ static int never_true; - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ - { return implf argl; } -+#else -+#define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ -+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ -+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ -+ { return implf argl; } -+#endif - #endif - - /** diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch new file mode 100644 index 000000000..371c1701d --- /dev/null +++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch @@ -0,0 +1,65 @@ +From 4c8c4a9c3a92300e3e6500e5a278ca37514a1fdb Mon Sep 17 00:00:00 2001 +From: Yi Fan Yu <yifan.yu@windriver.com> +Date: Thu, 1 Apr 2021 15:31:47 -0400 +Subject: [PATCH] drd/tests/swapcontext: Add SIGALRM handler to avoid + stacktrace + +During testing for oe-core build on QEMU, +SIGALRM can trigger during nanosleep. +This results a different stderr output than expected. + +``` +==277== Process terminating with default action of signal 14 (SIGALRM) +==277== at 0x36C74C3943: clock_nanosleep@@GLIBC_2.17 (clock_nanosleep.c:43) +==277== by 0x36C74C8726: nanosleep (nanosleep.c:25) +``` + +This stacktrace printing will not occur +if we add a handler that simply exits. + +https://bugs.kde.org/show_bug.cgi?id=435160 + +Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> +--- + drd/tests/swapcontext.c | 5 +++++ + drd/tests/swapcontext.stderr.exp | 4 ---- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c +index 622c70bc5..2cb969a5e 100644 +--- a/drd/tests/swapcontext.c ++++ b/drd/tests/swapcontext.c +@@ -25,6 +25,10 @@ typedef struct thread_local { + size_t nrsw; + } thread_local_t; + ++static void sig_alrm_handler(int signo) { ++ _exit(1); ++} ++ + static void f(void *data, int n) + { + enum { NR_SWITCHES = 200000 }; +@@ -76,6 +80,7 @@ int main(int argc, char *argv[]) + pthread_attr_t attr; + int i, res; + ++ signal(SIGALRM, sig_alrm_handler); + memset(tlocal, 0, sizeof(tlocal)); + + pthread_attr_init(&attr); +diff --git a/drd/tests/swapcontext.stderr.exp b/drd/tests/swapcontext.stderr.exp +index fcb5d5ed4..d18786f80 100644 +--- a/drd/tests/swapcontext.stderr.exp ++++ b/drd/tests/swapcontext.stderr.exp +@@ -1,7 +1,3 @@ + + +-Process terminating with default action of signal 14 (SIGALRM) +- at 0x........: swapcontext (in /...libc...) +- by 0x........: f (swapcontext.c:?) +- + ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +-- +2.17.1 + diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch deleted file mode 100644 index f66df3d2d..000000000 --- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch +++ /dev/null @@ -1,54 +0,0 @@ -From cdec010444df5a4328e90d07a2024fdeefcc74b5 Mon Sep 17 00:00:00 2001 -From: Paul Floyd <paulf@free.fr> -Date: Wed, 18 Nov 2020 12:49:20 -0400 -Subject: [PATCH] helgrind: Intercept libc functions - -PTH_FUNC definition needs to be modified in order to -intercept posix thread functions in both libc and -libpthread. In order to handle this in helgrind, weak alias -the pthread functions in glibc. - -Upstream-Status: Submitted - -Signed-off-by: Paul Floyd <paulf@free.fr> -Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com> ---- - helgrind/hg_intercepts.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/helgrind/hg_intercepts.c b/helgrind/hg_intercepts.c -index a10c3a4a3..316140ca6 100644 ---- a/helgrind/hg_intercepts.c -+++ b/helgrind/hg_intercepts.c -@@ -77,6 +77,11 @@ - /*--- ---*/ - /*----------------------------------------------------------------*/ - -+#define hg_expand(tok) #tok -+#define hg_str(tok) hg_expand(tok) -+# define hg_weak_alias(name, aliasname) \ -+ extern __typeof (name) aliasname __attribute__ ((weak, alias(hg_str(name)))) -+ - #if defined(VGO_solaris) - /* On Solaris, libpthread is just a filter library on top of libc. - * Threading and synchronization functions in runtime linker are not -@@ -91,9 +96,16 @@ - #define CREQ_PTHREAD_T Word - #define SEM_ERROR ret - #else -+#ifdef MUSL_LIBC -+#define PTH_FUNC(ret_ty, f, args...) \ -+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \ -+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args) -+#else - #define PTH_FUNC(ret_ty, f, args...) \ - ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \ -+ hg_weak_alias(I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f), I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)); \ - ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args) -+#endif - #define CREQ_PTHREAD_T pthread_t - #define SEM_ERROR errno - #endif /* VGO_solaris */ --- -2.17.1 - diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch deleted file mode 100644 index 7c6214497..000000000 --- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 0748ed5403a75c12ad9137b3fabf9d8397206ed8 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard <mark@klomp.org> -Date: Tue, 1 Dec 2020 13:57:39 +0100 -Subject: [PATCH] lmw, lswi and related PowerPC insns aren't allowed on ppc64le - -lmw, lswi and related PowerPC insns aren't allowed on ppc64le - -Newer binutils produce an error when the assembly contains lmw, stmw, -lswi, lswx, stswi, or stswx instructions in little-endian mode. - -Only build and run the lsw and ldst_multiple testcases on ppc64[be]. - -https://bugs.kde.org/show_bug.cgi?id=427870 -Upstream-Status: Backport [https://sourceware.org/git/?p=valgrind.git;a=commit;h=74b74174d572fee4015b8f4e326db3cd949bcdc3] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - none/tests/ppc64/Makefile.am | 9 ++++++--- - none/tests/ppc64/ldst_multiple.vgtest | 1 + - 2 files changed, 7 insertions(+), 3 deletions(-) - -diff --git a/none/tests/ppc64/Makefile.am b/none/tests/ppc64/Makefile.am -index 9bc0d0a..9d1e8b7 100644 ---- a/none/tests/ppc64/Makefile.am -+++ b/none/tests/ppc64/Makefile.am -@@ -54,16 +54,20 @@ EXTRA_DIST = \ - - check_PROGRAMS = \ - allexec \ -- lsw jm-insns round \ -+ jm-insns round \ - test_isa_2_06_part1 test_isa_2_06_part2 test_isa_2_06_part3 \ - test_dfp1 test_dfp2 test_dfp3 test_dfp4 test_dfp5 \ - test_isa_2_07_part1 test_isa_2_07_part2 \ - test_isa_3_0 \ - subnormal_test \ -- test_tm test_touch_tm ldst_multiple data-cache-instructions \ -+ test_tm test_touch_tm data-cache-instructions \ - power6_mf_gpr std_reg_imm \ - twi_tdi tw_td power6_bcmp - -+# lmw, stmw, lswi, lswx, stswi, stswx compile (and run) only on big endian. -+if VGCONF_PLATFORMS_INCLUDE_PPC64BE_LINUX -+check_PROGRAMS += lsw ldst_multiple -+endif - - AM_CFLAGS += @FLAG_M64@ - AM_CXXFLAGS += @FLAG_M64@ -@@ -175,4 +179,3 @@ test_isa_2_07_part2_LDADD = -lm - test_tm_LDADD = -lm - test_touch_tm_LDADD = -lm - test_isa_3_0_LDADD = -lm -- -diff --git a/none/tests/ppc64/ldst_multiple.vgtest b/none/tests/ppc64/ldst_multiple.vgtest -index 87e668e..22dd46c 100644 ---- a/none/tests/ppc64/ldst_multiple.vgtest -+++ b/none/tests/ppc64/ldst_multiple.vgtest -@@ -1 +1,2 @@ -+prereq: ../../../tests/is_ppc64_BE - prog: ldst_multiple --- -2.31.0 - diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch index d641998d7..e421ac6c8 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch +++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch @@ -19,7 +19,7 @@ index 6e5a797b9..0ede1ab18 100644 @@ -25,10 +25,10 @@ Open file descriptor ...: /dev/null - FILE DESCRIPTORS: 6 open at exit. + FILE DESCRIPTORS: 6 open (3 std) at exit. -Open file descriptor ...: /tmp/data2 +Open file descriptor ...: ... ... diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch index 480fe3324..7f0e38cb9 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch +++ b/poky/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch @@ -1,18 +1,58 @@ -From bd4e926e7e14747b3cd4d7b2a1bd5410b22f3ea2 Mon Sep 17 00:00:00 2001 +From 26c104adf6c5162572b7aa2fac89d0835b7f8f0b Mon Sep 17 00:00:00 2001 From: Randy MacLeod <Randy.MacLeod@windriver.com> Date: Tue, 16 Oct 2018 21:27:46 -0400 Subject: [PATCH] context APIs are not available on musl -Upstream-Status: Pending - Updated patch for valgrind-3.14 Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com> + +Apply same patch to drd/tests/swapcontext.c +for valgrind-3.17. + +Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=434775] + +Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> --- + drd/tests/swapcontext.c | 6 ++++++ memcheck/tests/linux/stack_changes.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + 2 files changed, 12 insertions(+), 1 deletion(-) +diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c +index 622c70bc5..5e72bb0f3 100644 +--- a/drd/tests/swapcontext.c ++++ b/drd/tests/swapcontext.c +@@ -20,6 +20,7 @@ + + #define STACKSIZE (PTHREAD_STACK_MIN + 4096) + ++#ifdef __GLIBC__ + typedef struct thread_local { + ucontext_t uc[3]; + size_t nrsw; +@@ -67,9 +68,11 @@ void *worker(void *data) + swapcontext(&tlocal->uc[0], &tlocal->uc[1]); + return NULL; + } ++#endif + + int main(int argc, char *argv[]) + { ++#ifdef __GLIBC__ + enum { NR = 32 }; + thread_local_t tlocal[NR]; + pthread_t thread[NR]; +@@ -94,6 +97,9 @@ int main(int argc, char *argv[]) + + for (i = 0; i < NR; i++) + pthread_join(thread[i], NULL); ++#else ++ printf("libc context call APIs e.g. getcontext() are deprecated by posix\n"); ++#endif + + return 0; + } diff --git a/memcheck/tests/linux/stack_changes.c b/memcheck/tests/linux/stack_changes.c index 7f97b90a5..a26cb4ae6 100644 --- a/memcheck/tests/linux/stack_changes.c @@ -48,5 +88,5 @@ index 7f97b90a5..a26cb4ae6 100644 return 0; } -- -2.17.0 +2.17.1 diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch b/poky/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch index b431d3356..db6867f62 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch +++ b/poky/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch @@ -1,4 +1,4 @@ -From 67e7a690107efb16d6d5aebfe420b64a552accdf Mon Sep 17 00:00:00 2001 +From d85cc45e0ddeda68adf594dead715964cb32d0e7 Mon Sep 17 00:00:00 2001 From: Qing He <qing.he@intel.com> Date: Tue, 31 Aug 2010 22:51:58 +0800 Subject: [PATCH] valgrind: fix perl scripts @@ -22,10 +22,11 @@ Signed-off-by: Maxin B. John <maxin.john@intel.com> cachegrind/cg_diff.in | 2 +- massif/ms_print.in | 2 +- perf/vg_perf.in | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) + tests/vg_regtest.in | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cachegrind/cg_annotate.in b/cachegrind/cg_annotate.in -index 69365e8..978265d 100644 +index fea114b..5e814fd 100644 --- a/cachegrind/cg_annotate.in +++ b/cachegrind/cg_annotate.in @@ -1,4 +1,4 @@ @@ -35,7 +36,7 @@ index 69365e8..978265d 100644 ##--------------------------------------------------------------------## ##--- Cachegrind's annotator. cg_annotate.in ---## diff --git a/cachegrind/cg_diff.in b/cachegrind/cg_diff.in -index 395460b..05873cc 100755 +index 9d9258e..d0f0ec7 100755 --- a/cachegrind/cg_diff.in +++ b/cachegrind/cg_diff.in @@ -1,4 +1,4 @@ @@ -45,7 +46,7 @@ index 395460b..05873cc 100755 ##--------------------------------------------------------------------## ##--- Cachegrind's differencer. cg_diff.in ---## diff --git a/massif/ms_print.in b/massif/ms_print.in -index e6fae89..3b85b40 100755 +index a206ce4..df1bc31 100755 --- a/massif/ms_print.in +++ b/massif/ms_print.in @@ -1,4 +1,4 @@ @@ -55,7 +56,7 @@ index e6fae89..3b85b40 100755 ##--------------------------------------------------------------------## ##--- Massif's results printer ms_print.in ---## diff --git a/perf/vg_perf.in b/perf/vg_perf.in -index 7a80cb0..28f6156 100644 +index 90ee1d2..c585096 100644 --- a/perf/vg_perf.in +++ b/perf/vg_perf.in @@ -1,4 +1,4 @@ @@ -65,7 +66,7 @@ index 7a80cb0..28f6156 100644 ##--- Valgrind performance testing script vg_perf ---## ##--------------------------------------------------------------------## diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in -index cb05b52..032e947 100755 +index 0fe6341..1b45eb7 100755 --- a/tests/vg_regtest.in +++ b/tests/vg_regtest.in @@ -1,4 +1,4 @@ @@ -74,5 +75,6 @@ index cb05b52..032e947 100755 ##--------------------------------------------------------------------## ##--- Valgrind regression testing script vg_regtest ---## ##--------------------------------------------------------------------## ---- -2.4.0 +-- +2.29.2 + diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64 b/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64 index 93bfd45a4..b4fc8af33 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64 +++ b/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64 @@ -31,6 +31,8 @@ drd/tests/annotate_static drd/tests/annotate_trace_memory drd/tests/annotate_trace_memory_xml drd/tests/atomic_var +drd/tests/bar_bad +drd/tests/bar_bad_xml drd/tests/bar_trivial drd/tests/bug-235681 drd/tests/bug322621 @@ -233,3 +235,4 @@ memcheck/tests/wrapmalloc memcheck/tests/wrapmallocstatic memcheck/tests/writev1 memcheck/tests/xml1 +memcheck/tests/linux/stack_changes diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-all b/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-all index d6a85c473..e69de29bb 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-all +++ b/poky/meta/recipes-devtools/valgrind/valgrind/remove-for-all @@ -1,2 +0,0 @@ -drd/tests/bar_bad -drd/tests/bar_bad_xml diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/run-ptest b/poky/meta/recipes-devtools/valgrind/valgrind/run-ptest index f37780ef6..caeae84d4 100755 --- a/poky/meta/recipes-devtools/valgrind/valgrind/run-ptest +++ b/poky/meta/recipes-devtools/valgrind/valgrind/run-ptest @@ -7,6 +7,7 @@ # Randy MacLeod <Randy.MacLeod@windriver.com> ############################################################### VALGRIND_LIB=@libdir@/valgrind +VALGRIND_LIBEXECDIR=@libexecdir@/valgrind VALGRIND_BIN=@bindir@/valgrind LOG="${VALGRIND_LIB}/ptest/valgrind_ptest_$(date +%Y%m%d-%H%M%S).log" @@ -31,12 +32,19 @@ if [ "$arch" = "aarch64" ]; then done fi +echo "Run flaky tests using taskset to limit them to a single core." +for i in `cat taskset_nondeterministic_tests`; do + taskset 0x00000001 perl tests/vg_regtest --valgrind=${VALGRIND_BIN} --valgrind-lib=${VALGRIND_LIBEXECDIR} --yocto-ptest $i 2>&1|tee -a ${LOG} + mv $i.vgtest $i.IGNORE +done + + cd ${VALGRIND_LIB}/ptest && ./tests/vg_regtest \ --valgrind=${VALGRIND_BIN} \ - --valgrind-lib=${VALGRIND_LIB} \ + --valgrind-lib=${VALGRIND_LIBEXECDIR} \ --yocto-ptest \ gdbserver_tests ${TOOLS} ${EXP_TOOLS} \ - 2>&1|tee ${LOG} + 2>&1|tee -a ${LOG} cd ${VALGRIND_LIB}/ptest && \ ./tests/post_regtest_checks $(pwd) \ @@ -55,6 +63,11 @@ for i in `cat remove-for-all`; do mv $i.IGNORE $i.vgtest; done +echo "Restore flaky and other non-deterministic tests" +for i in `cat taskset_nondeterministic_tests`; do + mv $i.IGNORE $i.vgtest; +done + echo "Failed test details..." failed_tests=`grep FAIL: ${LOG} | awk '{print $2}'` for test in $failed_tests; do diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch b/poky/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch index eea671da0..bde1241dc 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch +++ b/poky/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch @@ -1,3 +1,8 @@ +From 8154d38bac5cdb3675cfdaf562ab9da01988b263 Mon Sep 17 00:00:00 2001 +From: Yi Fan Yu <yifan.yu@windriver.com> +Date: Wed, 17 Mar 2021 12:16:31 -0400 +Subject: [PATCH 19/20] remove s390x_vec_op_t + s390x_vec_op_t is not needed anywhere, only elements of enum are accessed removing it ensures that valgrind can be built with -fno-common option @@ -6,14 +11,25 @@ ld: ../../VEX/libvex-amd64-linux.a(libvex_amd64_linux_a-guest_s390_helpers.o):/u Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> +--- + VEX/priv/guest_s390_defs.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/VEX/priv/guest_s390_defs.h b/VEX/priv/guest_s390_defs.h +index 9054290..dab8002 100644 --- a/VEX/priv/guest_s390_defs.h +++ b/VEX/priv/guest_s390_defs.h -@@ -286,7 +286,7 @@ enum { - S390_VEC_OP_VFCHE = 18, - S390_VEC_OP_VFTCI = 19, - S390_VEC_OP_LAST = 20 // supposed to be the last element in enum +@@ -284,7 +284,7 @@ typedef enum { + S390_VEC_OP_VBPERM, + S390_VEC_OP_VMSL, + S390_VEC_OP_LAST // supposed to be the last element in enum -} s390x_vec_op_t; +}; /* Arguments of s390x_dirtyhelper_vec_op(...) which are packed into one ULong variable. +-- +2.29.2 + diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests b/poky/meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests new file mode 100644 index 000000000..e15100ade --- /dev/null +++ b/poky/meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests @@ -0,0 +1,2 @@ +helgrind/tests/hg05_race2 +helgrind/tests/tc09_bad_unlock diff --git a/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb b/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb index 2b1d18557..60b248681 100644 --- a/poky/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb +++ b/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb @@ -18,6 +18,7 @@ SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \ file://run-ptest \ file://remove-for-aarch64 \ file://remove-for-all \ + file://taskset_nondeterministic_tests \ file://0004-Fix-out-of-tree-builds.patch \ file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \ file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \ @@ -42,14 +43,11 @@ SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \ file://s390x_vec_op_t.patch \ file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \ file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \ - file://0001-drd-Port-to-Fedora-33.patch \ - file://0001-drd-musl-fix.patch \ - file://0001-helgrind-Intercept-libc-functions.patch \ - file://0001-Fix-nlcontrolc.vgtest-hanging-on-newer-glibc-and-or-.patch \ - file://0001-lmw-lswi-and-related-PowerPC-insns-aren-t-allowed-on.patch \ + file://0001-Add-missing-musl.supp.patch \ + file://0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch \ " -SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589" -SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca" +SRC_URI[md5sum] = "afe11b5572c3121a781433b7c0ab741b" +SRC_URI[sha256sum] = "ad3aec668e813e40f238995f60796d9590eee64a16dff88421430630e69285a2" UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar" COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux' @@ -110,7 +108,7 @@ do_configure_prepend () { } do_install_append () { - install -m 644 ${B}/default.supp ${D}/${libdir}/valgrind/ + install -m 644 ${B}/default.supp ${D}/${libexecdir}/valgrind/ oe_multilib_header valgrind/config.h } @@ -123,9 +121,9 @@ VALGRINDARCH_mipsel = "mips32" VALGRINDARCH_mips64el = "mips64" VALGRINDARCH_powerpc = "ppc" VALGRINDARCH_powerpc64 = "ppc64" -VALGRINDARCH_powerpc64el = "ppc64le" +VALGRINDARCH_powerpc64le = "ppc64le" -INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so" +INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libexecdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so" RDEPENDS_${PN} += "perl" @@ -133,12 +131,13 @@ RDEPENDS_${PN} += "perl" # redirect functions like strlen. RRECOMMENDS_${PN} += "${TCLIBC}-dbg" -RDEPENDS_${PN}-ptest += " bash coreutils file \ +RDEPENDS_${PN}-ptest += " bash coreutils curl file \ gdb libgomp \ perl \ perl-module-file-basename perl-module-file-glob perl-module-getopt-long \ - perl-module-overloading \ - procps sed ${PN}-dbg ${PN}-src" + perl-module-overloading perl-module-cwd perl-module-ipc-open3 \ + perl-module-carp perl-module-symbol \ + procps sed ${PN}-dbg ${PN}-src ${TCLIBC}-src gcc-runtime-dbg" RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" # One of the tests contains a bogus interpreter path on purpose. @@ -158,7 +157,7 @@ do_install_ptest() { # # The regression tests require scripts and data files that are not # copied to the build directory. They must be copied from the - # source directory. + # source directory. saved_dir=$PWD for parent_dir in ${S} ${B} ; do cd $parent_dir @@ -189,6 +188,7 @@ do_install_ptest() { cp ${B}/config.h ${D}${PTEST_PATH} install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH} install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH} + install -D ${WORKDIR}/taskset_nondeterministic_tests ${D}${PTEST_PATH} # Add an executable need by none/tests/bigcode mkdir ${D}${PTEST_PATH}/perf @@ -222,14 +222,22 @@ do_install_ptest() { sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest + # point the expanded @abs_top_builddir@ of the host to PTEST_PATH + sed -i s:${S}:${PTEST_PATH}:g \ + ${D}${PTEST_PATH}/memcheck/tests/linux/debuginfod-check.vgtest + # handle multilib sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest + sed -i s:@libexecdir@:${libexecdir}:g ${D}${PTEST_PATH}/run-ptest sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020) # https://bugs.kde.org/show_bug.cgi?id=402833 rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest + # This is known failure see https://bugs.kde.org/show_bug.cgi?id=435732 + rm ${D}${PTEST_PATH}/memcheck/tests/leak_cpp_interior.vgtest + # As the binary isn't stripped or debug-splitted, the source file isn't fetched # via dwarfsrcfiles either, so it needs to be installed manually. mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/ @@ -238,7 +246,7 @@ do_install_ptest() { # avoid stripping some generated binaries otherwise some of the tests will fail # run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail -INHIBIT_PACKAGE_STRIP_FILES = "\ +INHIBIT_PACKAGE_STRIP_FILES += "\ ${PKGD}${PTEST_PATH}/none/tests/tls \ ${PKGD}${PTEST_PATH}/none/tests/tls.so \ ${PKGD}${PTEST_PATH}/none/tests/tls2.so \ diff --git a/poky/meta/recipes-extended/acpica/acpica_20210105.bb b/poky/meta/recipes-extended/acpica/acpica_20210331.bb index 0188dc8a1..e17bc94c3 100644 --- a/poky/meta/recipes-extended/acpica/acpica_20210105.bb +++ b/poky/meta/recipes-extended/acpica/acpica_20210331.bb @@ -17,7 +17,7 @@ COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" DEPENDS = "m4-native flex-native bison-native" SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz" -SRC_URI[sha256sum] = "a9be7b749025e60f93fde2fe531bfe0d84a33641d3e0c9b0f6049f996dbb1ff8" +SRC_URI[sha256sum] = "b49237a2c3df58b57310612ec3a6ebee69e1a525b5efeec7152faf32a03b7068" UPSTREAM_CHECK_URI = "https://acpica.org/downloads" diff --git a/poky/meta/recipes-extended/at/at_3.2.1.bb b/poky/meta/recipes-extended/at/at_3.2.2.bb index ae15df866..5c2018774 100644 --- a/poky/meta/recipes-extended/at/at_3.2.1.bb +++ b/poky/meta/recipes-extended/at/at_3.2.2.bb @@ -37,7 +37,7 @@ SRC_URI = "http://software.calhariz.com/at/${BPN}_${PV}.orig.tar.gz \ PAM_SRC_URI = "file://pam.conf.patch \ file://configure-add-enable-pam.patch" -SRC_URI[sha256sum] = "aabe6e5cb6dd19fe9fb25c2747492f2db38762b95ea41b86f949609c39fb55c4" +SRC_URI[sha256sum] = "2211da14914fde1f9cc83592838fb6385a32fb11fcecb7816c77700df6559088" EXTRA_OECONF += "ac_cv_path_SENDMAIL=/bin/true \ --with-daemon_username=root \ @@ -72,4 +72,5 @@ do_install () { if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then install -D -m 0644 ${WORKDIR}/${BP}/pam.conf ${D}${sysconfdir}/pam.d/atd fi + rm -f ${D}${datadir}/at/batch-job } diff --git a/poky/meta/recipes-extended/bash/bash.inc b/poky/meta/recipes-extended/bash/bash.inc index d3e1dfdb3..7350601c6 100644 --- a/poky/meta/recipes-extended/bash/bash.inc +++ b/poky/meta/recipes-extended/bash/bash.inc @@ -91,6 +91,9 @@ do_install_append_class-target () { do_install_ptest () { make INSTALL_TEST_DIR=${D}${PTEST_PATH}/tests install-test cp ${B}/Makefile ${D}${PTEST_PATH} + cp ${B}/config.h ${D}${PTEST_PATH} + cp ${B}/version.h ${D}${PTEST_PATH} + cp ${S}/y.tab.[ch] ${D}${PTEST_PATH} install -D ${WORKDIR}/run-bash-ptests ${D}${PTEST_PATH}/run-bash-ptests sed -i -e 's/^Makefile/_Makefile/' -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \ -e 's|${DEBUG_PREFIX_MAP}||g' \ diff --git a/poky/meta/recipes-extended/cpio/cpio_2.13.bb b/poky/meta/recipes-extended/cpio/cpio_2.13.bb index 94d86100c..f4df826ed 100644 --- a/poky/meta/recipes-extended/cpio/cpio_2.13.bb +++ b/poky/meta/recipes-extended/cpio/cpio_2.13.bb @@ -16,6 +16,9 @@ SRC_URI[sha256sum] = "e87470d9c984317f658567c03bfefb6b0c829ff17dbf6b0de48d71a4c8 inherit autotools gettext texinfo +# Issue applies to use of cpio in SUSE/OBS, doesn't apply to us +CVE_CHECK_WHITELIST += "CVE-2010-4226" + EXTRA_OECONF += "DEFAULT_RMT_DIR=${sbindir}" do_install () { diff --git a/poky/meta/recipes-extended/cronie/cronie_1.5.5.bb b/poky/meta/recipes-extended/cronie/cronie_1.5.7.bb index 0def4a187..d0abdd839 100644 --- a/poky/meta/recipes-extended/cronie/cronie_1.5.5.bb +++ b/poky/meta/recipes-extended/cronie/cronie_1.5.7.bb @@ -25,8 +25,7 @@ SRC_URI = "https://github.com/cronie-crond/cronie/releases/download/cronie-${PV} PAM_SRC_URI = "file://crond_pam_config.patch" PAM_DEPS = "libpam libpam-runtime pam-plugin-access pam-plugin-loginuid" -SRC_URI[md5sum] = "351a37d0b5bd0144816724b4482747ad" -SRC_URI[sha256sum] = "be34c79505e5544323281854744b9955ff16b160ee569f9df7c0dddae5720eac" +SRC_URI[sha256sum] = "538bcfaf2e986e5ae1edf6d1472a77ea8271d6a9005aee2497a9ed6e13320eb3" inherit autotools update-rc.d useradd systemd diff --git a/poky/meta/recipes-extended/cups/cups.inc b/poky/meta/recipes-extended/cups/cups.inc index 244c87001..be5a11c94 100644 --- a/poky/meta/recipes-extended/cups/cups.inc +++ b/poky/meta/recipes-extended/cups/cups.inc @@ -6,7 +6,7 @@ document types." HOMEPAGE = "https://www.cups.org/" SECTION = "console/utils" LICENSE = "Apache-2.0" -DEPENDS = "gnutls libpng jpeg dbus zlib libusb1" +DEPENDS = "libpng jpeg dbus zlib libusb1" SRC_URI = "https://github.com/apple/cups/releases/download/v${PV}/${BP}-source.tar.gz \ file://0001-use-echo-only-in-init.patch \ @@ -43,12 +43,12 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd', d)}" PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl" +PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls" PACKAGECONFIG[pam] = "--enable-pam --with-pam-module=unix, --disable-pam, libpam" PACKAGECONFIG[systemd] = "--with-systemd=${systemd_system_unitdir},--without-systemd,systemd" PACKAGECONFIG[xinetd] = "--with-xinetd=${sysconfdir}/xinetd.d,--without-xinetd,xinetd" EXTRA_OECONF = " \ - --enable-gnutls \ --enable-dbus \ --enable-browsing \ --disable-gssapi \ @@ -127,3 +127,7 @@ SYSROOT_PREPROCESS_FUNCS += "cups_sysroot_preprocess" cups_sysroot_preprocess () { sed -i ${SYSROOT_DESTDIR}${bindir_crossscripts}/cups-config -e 's:cups_datadir=.*:cups_datadir=${datadir}/cups:' -e 's:cups_serverbin=.*:cups_serverbin=${libexecdir}/cups:' } + +# -25317 concerns /var/log/cups having lp ownership. Our /var/log/cups is +# root:root, so this doesn't apply. +CVE_CHECK_WHITELIST += "CVE-2021-25317"
\ No newline at end of file diff --git a/poky/meta/recipes-extended/diffutils/diffutils/0001-c-stack-stop-using-SIGSTKSZ.patch b/poky/meta/recipes-extended/diffutils/diffutils/0001-c-stack-stop-using-SIGSTKSZ.patch new file mode 100644 index 000000000..50e627fa3 --- /dev/null +++ b/poky/meta/recipes-extended/diffutils/diffutils/0001-c-stack-stop-using-SIGSTKSZ.patch @@ -0,0 +1,84 @@ +From 87b3a8f9ceb2cf0a5c8b72e460465fb9ff2d62d9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 30 Apr 2021 17:40:36 -0700 +Subject: [PATCH] c-stack: stop using SIGSTKSZ + +This patch is required with glibc 2.34+ +based on gnulib [1] + +[1] https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=f9e2b20a12a230efa30f1d479563ae07d276a94b + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + lib/c-stack.c | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +diff --git a/lib/c-stack.c b/lib/c-stack.c +index 9bbe6fe..e0874c9 100644 +--- a/lib/c-stack.c ++++ b/lib/c-stack.c +@@ -51,13 +51,14 @@ + typedef struct sigaltstack stack_t; + #endif + #ifndef SIGSTKSZ +-# define SIGSTKSZ 16384 +-#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384 ++#define get_sigstksz() (16384) ++#elif HAVE_LIBSIGSEGV + /* libsigsegv 2.6 through 2.8 have a bug where some architectures use + more than the Linux default of an 8k alternate stack when deciding + if a fault was caused by stack overflow. */ +-# undef SIGSTKSZ +-# define SIGSTKSZ 16384 ++#define get_sigstksz() ((SIGSTKSZ) < 16384 ? 16384 : (SIGSTKSZ)) ++#else ++#define get_sigstksz() ((SIGSTKSZ)) + #endif + + #include <stdlib.h> +@@ -136,7 +137,8 @@ die (int signo) + /* Storage for the alternate signal stack. */ + static union + { +- char buffer[SIGSTKSZ]; ++ /* allocate buffer with size from get_sigstksz() */ ++ char *buffer; + + /* These other members are for proper alignment. There's no + standard way to guarantee stack alignment, but this seems enough +@@ -208,10 +210,11 @@ c_stack_action (void (*action) (int)) + program_error_message = _("program error"); + stack_overflow_message = _("stack overflow"); + ++ alternate_signal_stack.buffer = malloc(get_sigstksz()); + /* Always install the overflow handler. */ + if (stackoverflow_install_handler (overflow_handler, + alternate_signal_stack.buffer, +- sizeof alternate_signal_stack.buffer)) ++ get_sigstksz())) + { + errno = ENOTSUP; + return -1; +@@ -284,14 +287,15 @@ c_stack_action (void (*action) (int)) + stack_t st; + struct sigaction act; + st.ss_flags = 0; ++ alternate_signal_stack.buffer = malloc(get_sigstksz()); + # if SIGALTSTACK_SS_REVERSED + /* Irix mistakenly treats ss_sp as the upper bound, rather than + lower bound, of the alternate stack. */ +- st.ss_sp = alternate_signal_stack.buffer + SIGSTKSZ - sizeof (void *); +- st.ss_size = sizeof alternate_signal_stack.buffer - sizeof (void *); ++ st.ss_sp = alternate_signal_stack.buffer + get_sigstksz() - sizeof (void *); ++ st.ss_size = get_sigstksz() - sizeof (void *); + # else + st.ss_sp = alternate_signal_stack.buffer; +- st.ss_size = sizeof alternate_signal_stack.buffer; ++ st.ss_size = get_sigstksz(); + # endif + r = sigaltstack (&st, NULL); + if (r != 0) +-- +2.31.1 + diff --git a/poky/meta/recipes-extended/diffutils/diffutils_3.7.bb b/poky/meta/recipes-extended/diffutils/diffutils_3.7.bb index 8111ae606..b9a54fea5 100644 --- a/poky/meta/recipes-extended/diffutils/diffutils_3.7.bb +++ b/poky/meta/recipes-extended/diffutils/diffutils_3.7.bb @@ -6,6 +6,7 @@ require diffutils.inc SRC_URI = "${GNU_MIRROR}/diffutils/diffutils-${PV}.tar.xz \ file://run-ptest \ file://0001-Skip-strip-trailing-cr-test-case.patch \ + file://0001-c-stack-stop-using-SIGSTKSZ.patch \ " SRC_URI[md5sum] = "4824adc0e95dbbf11dfbdfaad6a1e461" diff --git a/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch b/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch index 54aec0128..b3f3de4a1 100644 --- a/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch +++ b/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch @@ -19,7 +19,7 @@ index 13c2bc0..0b6ca1d 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. - AC_INIT(ethtool, 5.10, netdev@vger.kernel.org) + AC_INIT(ethtool, 5.12, netdev@vger.kernel.org) AC_PREREQ(2.52) AC_CONFIG_SRCDIR([ethtool.c]) -AM_INIT_AUTOMAKE([gnu subdir-objects]) diff --git a/poky/meta/recipes-extended/ethtool/ethtool_5.10.bb b/poky/meta/recipes-extended/ethtool/ethtool_5.12.bb index 5c0df3acb..df7dd4774 100644 --- a/poky/meta/recipes-extended/ethtool/ethtool_5.10.bb +++ b/poky/meta/recipes-extended/ethtool/ethtool_5.12.bb @@ -11,7 +11,7 @@ SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \ file://avoid_parallel_tests.patch \ " -SRC_URI[sha256sum] = "4b86adb3ed913c1ef14a276301981f696ab4ec360c19f0a5b68235c4756abae5" +SRC_URI[sha256sum] = "7ca623cc1dd25ba66531573da6a11f1ecde9b62b00742d9ba54f9ba983439bfa" UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/" diff --git a/poky/meta/recipes-extended/ghostscript/ghostscript_9.53.3.bb b/poky/meta/recipes-extended/ghostscript/ghostscript_9.54.0.bb index cbf60c8c8..81f8d615a 100644 --- a/poky/meta/recipes-extended/ghostscript/ghostscript_9.53.3.bb +++ b/poky/meta/recipes-extended/ghostscript/ghostscript_9.54.0.bb @@ -19,6 +19,10 @@ DEPENDS_class-native = "libpng-native" UPSTREAM_CHECK_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases" UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar" +# As of ghostscript 9.54.0 the jpeg issue in the CVE is present in the gs jpeg sources +# however we use an external jpeg which doesn't have the issue. +CVE_CHECK_WHITELIST += "CVE-2013-6629" + def gs_verdir(v): return "".join(v.split(".")) @@ -41,7 +45,7 @@ SRC_URI_class-native = "${SRC_URI_BASE} \ file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \ " -SRC_URI[sha256sum] = "6eaf422f26a81854a230b80fd18aaef7e8d94d661485bd2e97e695b9dce7bf7f" +SRC_URI[sha256sum] = "0646bb97f6f4d10a763f4919c54fa28b4fbdd3dff8e7de3410431c81762cade0" # Put something like # diff --git a/poky/meta/recipes-extended/groff/groff_1.22.4.bb b/poky/meta/recipes-extended/groff/groff_1.22.4.bb index 983cb9aea..f0e9eb6a8 100644 --- a/poky/meta/recipes-extended/groff/groff_1.22.4.bb +++ b/poky/meta/recipes-extended/groff/groff_1.22.4.bb @@ -62,6 +62,10 @@ do_install_append() { rm -rf ${D}${bindir}/glilypond rm -rf ${D}${libdir}/groff/glilypond rm -rf ${D}${mandir}/man1/glilypond* + + # not ship /usr/bin/grap2graph and its releated man files + rm -rf ${D}${bindir}/grap2graph + rm -rf ${D}${mandir}/man1/grap2graph* } do_install_append_class-native() { diff --git a/poky/meta/recipes-extended/hdparm/hdparm_9.60.bb b/poky/meta/recipes-extended/hdparm/hdparm_9.62.bb index 41f70b403..026772351 100644 --- a/poky/meta/recipes-extended/hdparm/hdparm_9.60.bb +++ b/poky/meta/recipes-extended/hdparm/hdparm_9.62.bb @@ -25,8 +25,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/hdparm/${BP}.tar.gz \ file://wiper.sh-fix-stat-path.patch \ " -SRC_URI[md5sum] = "25a791d47236c58801f8b27074f3ef93" -SRC_URI[sha256sum] = "8397739c73e44d5ab96c4aef28fa9c0147276d53a1b5657ce04c4565cf6635cc" +SRC_URI[sha256sum] = "2c0f9d75cdbeda928a25a128cd3d0b7120445ec0910c0b29d4c1038ed1be777f" EXTRA_OEMAKE = 'STRIP="echo" LDFLAGS="${LDFLAGS}"' diff --git a/poky/meta/recipes-extended/less/less_563.bb b/poky/meta/recipes-extended/less/less_590.bb index 123522b5d..82a231264 100644 --- a/poky/meta/recipes-extended/less/less_563.bb +++ b/poky/meta/recipes-extended/less/less_590.bb @@ -28,7 +28,7 @@ DEPENDS = "ncurses" SRC_URI = "http://www.greenwoodsoftware.com/${BPN}/${BPN}-${PV}.tar.gz \ " -SRC_URI[sha256sum] = "ce5b6d2b9fc4442d7a07c93ab128d2dff2ce09a1d4f2d055b95cf28dd0dc9a9a" +SRC_URI[sha256sum] = "6aadf54be8bf57d0e2999a3c5d67b1de63808bb90deb8f77b028eafae3a08e10" UPSTREAM_CHECK_URI = "http://www.greenwoodsoftware.com/less/download.html" diff --git a/poky/meta/recipes-extended/libarchive/libarchive_3.5.1.bb b/poky/meta/recipes-extended/libarchive/libarchive_3.5.1.bb index 1387b6906..ebecee1f3 100644 --- a/poky/meta/recipes-extended/libarchive/libarchive_3.5.1.bb +++ b/poky/meta/recipes-extended/libarchive/libarchive_3.5.1.bb @@ -7,10 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d499814247adaee08d88080841cb5665" DEPENDS = "e2fsprogs-native" -PACKAGECONFIG ?= "zlib bz2 xz lzo" +PACKAGECONFIG ?= "zlib bz2 xz lzo zstd" PACKAGECONFIG_append_class-target = "\ - libxml2 \ ${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \ " @@ -29,6 +28,7 @@ PACKAGECONFIG[lzo] = "--with-lzo2,--without-lzo2,lzo," PACKAGECONFIG[nettle] = "--with-nettle,--without-nettle,nettle," PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4," PACKAGECONFIG[mbedtls] = "--with-mbedtls,--without-mbedtls,mbedtls," +PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd," EXTRA_OECONF += "--enable-largefile" diff --git a/poky/meta/recipes-extended/libidn/libidn2_2.3.0.bb b/poky/meta/recipes-extended/libidn/libidn2_2.3.1.bb index 7adf924ae..d33d6a7da 100644 --- a/poky/meta/recipes-extended/libidn/libidn2_2.3.0.bb +++ b/poky/meta/recipes-extended/libidn/libidn2_2.3.1.bb @@ -6,12 +6,12 @@ LICENSE = "(GPLv2+ | LGPLv3) & GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=2d834ea7d480438ada04e5d846152395 \ file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://src/idn2.c;endline=16;md5=426b74d6deb620ab6d39c8a6efd4c13a \ - file://lib/idn2.h.in;endline=27;md5=c2cd28d3f87260f157f022eabb83714f" + file://src/idn2.c;endline=16;md5=e4b6d628a84a55f1fd8ae4c76c5f6509 \ + file://lib/idn2.h.in;endline=27;md5=d0fc8ec628be130a1d5b889107e92477" SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz" -SRC_URI[md5sum] = "01c5084995295e519f95978ae9785ee0" -SRC_URI[sha256sum] = "e1cb1db3d2e249a6a3eb6f0946777c2e892d5c5dc7bd91c74394fc3a01cab8b5" +SRC_URI[md5sum] = "cda07f5ac55fccfafdf7ee01828adad5" +SRC_URI[sha256sum] = "8af684943836b8b53965d5f5b6714ef13c26c91eaa36ce7d242e3d21f5d40f2d" DEPENDS = "virtual/libiconv libunistring" diff --git a/poky/meta/recipes-extended/libsolv/libsolv_0.7.17.bb b/poky/meta/recipes-extended/libsolv/libsolv_0.7.19.bb index fa6e8a3c4..0c6963632 100644 --- a/poky/meta/recipes-extended/libsolv/libsolv_0.7.17.bb +++ b/poky/meta/recipes-extended/libsolv/libsolv_0.7.19.bb @@ -11,7 +11,7 @@ DEPENDS = "expat zlib" SRC_URI = "git://github.com/openSUSE/libsolv.git \ " -SRCREV = "4bc791c0d235eb14bfe4c5da607206bfdfa6983d" +SRCREV = "c773294be6b0a2425f344a8999f173fb00cfd16f" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" @@ -20,7 +20,7 @@ S = "${WORKDIR}/git" inherit cmake PACKAGECONFIG ??= "${@bb.utils.contains('PACKAGE_CLASSES','package_rpm','rpm','',d)}" -PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON -DENABLE_RPMDB_BDB=ON,,rpm" +PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON -DENABLE_RPMDB_BDB=ON,,db rpm" EXTRA_OECMAKE = "-DMULTI_SEMANTICS=ON -DENABLE_COMPLEX_DEPS=ON" diff --git a/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.1.bb b/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.2.bb index 579226425..b66626328 100644 --- a/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.1.bb +++ b/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.2.bb @@ -12,7 +12,7 @@ PROVIDES = "virtual/librpc" SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2" UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/libtirpc/files/libtirpc/" UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/" -SRC_URI[sha256sum] = "245895caf066bec5e3d4375942c8cb4366adad184c29c618d97f724ea309ee17" +SRC_URI[sha256sum] = "e24eb88b8ce7db3b7ca6eb80115dd1284abc5ec32a8deccfed2224fc2532b9fd" inherit autotools pkgconfig diff --git a/poky/meta/recipes-extended/logrotate/logrotate_3.18.0.bb b/poky/meta/recipes-extended/logrotate/logrotate_3.18.1.bb index 55684ac9f..d853f7bec 100644 --- a/poky/meta/recipes-extended/logrotate/logrotate_3.18.0.bb +++ b/poky/meta/recipes-extended/logrotate/logrotate_3.18.1.bb @@ -19,7 +19,10 @@ SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz file://disable-check-different-filesystems.patch \ " -SRC_URI[sha256sum] = "841f81bf09d0014e4a2e11af166bb33fcd8429cc0c2d4a7d3d9ceb3858cfccc5" +SRC_URI[sha256sum] = "14a924e4804b3974e85019a9f9352c2a69726702e6656155c48bcdeace68a5dc" + +# These CVEs are debian, gentoo or SUSE specific on the way logrotate was installed/used +CVE_CHECK_WHITELIST += "CVE-2011-1548 CVE-2011-1549 CVE-2011-1550" PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'acl selinux', d)}" diff --git a/poky/meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch b/poky/meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch new file mode 100644 index 000000000..f32cd1837 --- /dev/null +++ b/poky/meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch @@ -0,0 +1,27 @@ +lsb-release maintains it's own copy of help2man. Include the support +for specifying SOURCE_DATE_EPOCH from upstream. + +Upstream-Status: Pending + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +diff --git a/help2man b/help2man +index 13015c2..63439db 100755 +--- a/help2man ++++ b/help2man +@@ -173,7 +173,14 @@ my ($help_text, $version_text) = map { + or die "$this_program: can't get `--$_' info from $ARGV[0]\n" + } qw(help), $opt_version_key; + +-my $date = strftime "%B %Y", localtime; ++my $epoch_secs = time; ++if (exists $ENV{SOURCE_DATE_EPOCH} and $ENV{SOURCE_DATE_EPOCH} =~ /^(\d+)$/) ++{ ++ $epoch_secs = $1; ++ $ENV{TZ} = 'UTC0'; ++} ++ ++my $date = strftime "%B %Y", localtime $epoch_secs; + (my $program = $ARGV[0]) =~ s!.*/!!; + my $package = $program; + my $version; diff --git a/poky/meta/recipes-extended/lsb/lsb-release_1.4.bb b/poky/meta/recipes-extended/lsb/lsb-release_1.4.bb index 3e8f7a13e..bafc18fcc 100644 --- a/poky/meta/recipes-extended/lsb/lsb-release_1.4.bb +++ b/poky/meta/recipes-extended/lsb/lsb-release_1.4.bb @@ -11,6 +11,7 @@ LIC_FILES_CHKSUM = "file://README;md5=12da544b1a3a5a1795a21160b49471cf" SRC_URI = "${SOURCEFORGE_MIRROR}/project/lsb/lsb_release/1.4/lsb-release-1.4.tar.gz \ file://0001-fix-lsb_release-to-work-with-busybox-head-and-find.patch \ file://0001-Remove-timestamp-from-manpage.patch \ + file://help2man-reproducibility.patch \ " SRC_URI[md5sum] = "30537ef5a01e0ca94b7b8eb6a36bb1e4" diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-Add-more-musl-exclusions.patch b/poky/meta/recipes-extended/ltp/ltp/0001-Add-more-musl-exclusions.patch deleted file mode 100644 index f2fc8ee95..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/0001-Add-more-musl-exclusions.patch +++ /dev/null @@ -1,32 +0,0 @@ -From ad8e73306cb8293f7d32841e1599fd9048801f1f Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 20 Dec 2019 13:06:05 +0100 -Subject: [PATCH] Add more musl exclusions - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> -[ pvorel: rebase for 20200515: enable accept4_01 ] -[ pvorel: rebase for 20200120: enable fanotify13, fanotify15, setxattr03 ] -Signed-off-by: Petr Vorel <petr.vorel@gmail.com> ---- - testcases/kernel/syscalls/timer_create/Makefile | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/testcases/kernel/syscalls/timer_create/Makefile b/testcases/kernel/syscalls/timer_create/Makefile -index ada241fe1..d454b01e7 100644 ---- a/testcases/kernel/syscalls/timer_create/Makefile -+++ b/testcases/kernel/syscalls/timer_create/Makefile -@@ -5,6 +5,10 @@ top_srcdir ?= ../../../.. - - include $(top_srcdir)/include/mk/testcases.mk - -+ifeq ($(LIBC),musl) -+FILTER_OUT_MAKE_TARGETS := timer_create01 timer_create03 -+endif -+ - CPPFLAGS += -D_GNU_SOURCE -I$(abs_srcdir)/../include - - LDLIBS += -lpthread -lrt --- -2.26.2 - diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch b/poky/meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch deleted file mode 100644 index 29b2bf7e4..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 74958c3e341de713b596c8cfd35b2391d6c7bc09 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Thu, 7 Jan 2016 18:19:03 +0000 -Subject: [PATCH] build: Add option to select libc implementation - -There are more than glibc for C library implementation available on -linux now a days, uclibc cloaked like glibc but musl e.g. is very -different and does not implement all GNU extensions. - -Disable tests specifically not building _yet_ on musl based systems - -Upstream-Status: Pending (pvorel: this is not going to be fixed, instead -each test needs to be fixed) - -rt_tgsigqueueinfo fails with: -rt_tgsigqueueinfo01.c: In function 'sigusr1_handler': -rt_tgsigqueueinfo01.c:42:22: error: 'siginfo_t' {aka 'struct <anonymous>'} has no member named '_sifields'; did you mean '__si_fields'? - 42 | sigval_rcv = uinfo->_sifields._rt.SI_SIGVAL.sival_ptr; - | ^~~~~~~~~ - | __si_fields - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -[ pvorel: rebase for 20200515: enable pty, ioctl ] -[ pvorel: rebase for 20200120: enable mallopt, profil, rpc016, -rt_sigsuspend, sbrk_mutex, setdomainname, sethostname, sigsuspend, -testpi-3, testpi-5, testpi-6, ustat; move rt_tgsigqueueinfo -from 0006-rt_tgsigqueueinfo-disable-test-on-musl.patch ] -Signed-off-by: Petr Vorel <petr.vorel@gmail.com> ---- - Makefile | 5 +++++ - testcases/kernel/sched/Makefile | 4 +++- - testcases/kernel/syscalls/Makefile | 4 ++++ - 3 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index 768ca4606..e9d679a71 100644 ---- a/Makefile -+++ b/Makefile -@@ -41,6 +41,11 @@ vpath %.mk $(top_srcdir)/mk:$(top_srcdir)/mk/include - UCLINUX ?= 0 - export UCLINUX - -+# System C library implementation (glibc,uclibc,musl etc.) -+# default to glibc if not set -+LIBC ?= glibc -+export LIBC -+ - # CLEAN_TARGETS: Targets which exist solely in clean. - # COMMON_TARGETS: Targets which exist in all, clean, and install. - # INSTALL_TARGETS: Targets which exist in clean and install (contains -diff --git a/testcases/kernel/sched/Makefile b/testcases/kernel/sched/Makefile -index 6a57d79ee..74bb93370 100644 ---- a/testcases/kernel/sched/Makefile -+++ b/testcases/kernel/sched/Makefile -@@ -23,5 +23,7 @@ - top_srcdir ?= ../../.. - - include $(top_srcdir)/include/mk/env_pre.mk -- -+ifeq ($(LIBC),musl) -+ FILTER_OUT_DIRS += process_stress -+endif - include $(top_srcdir)/include/mk/generic_trunk_target.mk -diff --git a/testcases/kernel/syscalls/Makefile b/testcases/kernel/syscalls/Makefile -index c6dc8d9e7..aa50761ea 100644 ---- a/testcases/kernel/syscalls/Makefile -+++ b/testcases/kernel/syscalls/Makefile -@@ -15,6 +15,10 @@ FILTER_OUT_DIRS += capget capset chmod chown clone fork getcontext llseek \ - mincore mprotect nftw profil remap_file_pages sbrk - endif - -+ifeq ($(LIBC),musl) -+FILTER_OUT_DIRS += confstr fmtmsg getcontext rt_tgsigqueueinfo -+endif -+ - ifeq ($(UCLIBC),1) - FILTER_OUT_DIRS += profil - endif --- -2.26.2 - diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch b/poky/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch deleted file mode 100644 index c2a70dcb6..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 2d1d6350af1db28ec520e26d0069a0518950b0a1 Mon Sep 17 00:00:00 2001 -From: Richard Purdie <richard.purdie@linuxfoundation.org> -Date: Tue, 9 Mar 2021 15:21:11 +0000 -Subject: [PATCH 1/3] open_posix_testsuite/generate-makefiles.sh: Avoid - inconsistencies with make version - -With make 4.1, INSTALL_TARGETS+=<tab> will add a space to the variable whereas -with make 4.3, it will not. This leads to differing run.sh files in installed -in packages which is undesireable. If tests is empty we don't have to add -the line to the makefiles at all which seems like the easiest way to -avoid the differences in make behaviour. - -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021386.html] - ---- - .../open_posix_testsuite/scripts/generate-makefiles.sh | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh -index 200a631db..4b3aaa4a0 100755 ---- a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh -+++ b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh -@@ -148,8 +148,12 @@ EOF - - fi - -- cat >> "$makefile.2" <<EOF -+ if [ ! -z "${tests}" ]; then -+ cat >> "$makefile.2" <<EOF - INSTALL_TARGETS+= ${tests} -+EOF -+ fi -+ cat >> "$makefile.2" <<EOF - MAKE_TARGETS+= ${targets} - - EOF --- -2.27.0 - diff --git a/poky/meta/recipes-extended/ltp/ltp/0002-Makefile-Avoid-wildcard-determinism-issues.patch b/poky/meta/recipes-extended/ltp/ltp/0002-Makefile-Avoid-wildcard-determinism-issues.patch deleted file mode 100644 index 4859c3eae..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/0002-Makefile-Avoid-wildcard-determinism-issues.patch +++ /dev/null @@ -1,310 +0,0 @@ -From 4030e28f2c2296ba138cb5e2495202f8aec7ba32 Mon Sep 17 00:00:00 2001 -From: Richard Purdie <richard.purdie@linuxfoundation.org> -Date: Tue, 9 Mar 2021 15:21:36 +0000 -Subject: [PATCH 2/3] Makefile: Avoid wildcard determinism issues - -wildcard used in Makefiles preserves the order of the files on disk -which leads to differences in the order the binaries are linked. - -This patch tweaks the usage of wildcard to also have a sort, making -the binaries reproducible. A previous patch massively improved -the situation but wider testing showed that these other changes can -have an effect on some binaries, this patch avoids those issues as -exposed by our wider testing. - -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021388.html] - ---- - include/mk/env_post.mk | 2 +- - include/mk/module.mk | 2 +- - runtest/Makefile | 2 +- - scenario_groups/Makefile | 2 +- - testcases/commands/ldd/datafiles/Makefile | 2 +- - testcases/kernel/hotplug/memory_hotplug/Makefile | 3 ++- - testcases/kernel/io/disktest/Makefile | 2 +- - testcases/kernel/io/disktest/Makefile.linux | 4 ++-- - testcases/kernel/sched/hyperthreading/ht_affinity/Makefile | 2 +- - testcases/kernel/sched/hyperthreading/ht_enabled/Makefile | 2 +- - testcases/kernel/sched/sched_stress/Makefile | 2 +- - testcases/kernel/syscalls/lchown/Makefile | 2 +- - testcases/kernel/syscalls/migrate_pages/Makefile | 2 +- - testcases/kernel/syscalls/move_pages/Makefile | 2 +- - testcases/kernel/syscalls/utils/compat_16.mk | 2 +- - testcases/kernel/syscalls/utils/newer_64.mk | 2 +- - testcases/misc/math/float/Makefile | 2 +- - testcases/network/nfs/nfs_stress/nfs05_make_tree.c | 4 ++-- - testcases/network/nfsv4/locks/Makefile | 2 +- - utils/sctp/func_tests/Makefile | 2 +- - 20 files changed, 23 insertions(+), 22 deletions(-) - -diff --git a/include/mk/env_post.mk b/include/mk/env_post.mk -index d52ad9f0b..1d22f9c53 100644 ---- a/include/mk/env_post.mk -+++ b/include/mk/env_post.mk -@@ -47,7 +47,7 @@ LDFLAGS += -L$(top_builddir)/lib/android_libpthread - LDFLAGS += -L$(top_builddir)/lib/android_librt - endif - --MAKE_TARGETS ?= $(notdir $(patsubst %.c,%,$(wildcard $(abs_srcdir)/*.c))) -+MAKE_TARGETS ?= $(notdir $(patsubst %.c,%,$(sort $(wildcard $(abs_srcdir)/*.c)))) - MAKE_TARGETS := $(filter-out $(FILTER_OUT_MAKE_TARGETS),$(MAKE_TARGETS)) - - # with only *.dwo, .[0-9]+.dwo can not be cleaned -diff --git a/include/mk/module.mk b/include/mk/module.mk -index 95fb8336a..6c8814b96 100644 ---- a/include/mk/module.mk -+++ b/include/mk/module.mk -@@ -42,7 +42,7 @@ endif - - ifneq ($(filter install clean,$(MAKECMDGOALS)),) - MAKE_TARGETS := $(filter-out %.ko, $(MAKE_TARGETS)) --MAKE_TARGETS += $(wildcard *.ko) -+MAKE_TARGETS += $(sort $(wildcard *.ko)) - endif - - CLEAN_TARGETS += .dep_modules *.mod built-in.a -diff --git a/runtest/Makefile b/runtest/Makefile -index b7caaee06..6a1565b6a 100644 ---- a/runtest/Makefile -+++ b/runtest/Makefile -@@ -36,7 +36,7 @@ ifneq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes) - UNWANTED_FILES += power_management_tests - endif - --INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*)))) -+INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(sort $(wildcard $(abs_srcdir)/*))))) - - MAKE_TARGETS := - -diff --git a/scenario_groups/Makefile b/scenario_groups/Makefile -index 2978675d9..fcbc92708 100644 ---- a/scenario_groups/Makefile -+++ b/scenario_groups/Makefile -@@ -31,7 +31,7 @@ UNWANTED_FILES := Makefile - - INSTALL_MODE := 00644 - --INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*)))) -+INSTALL_TARGETS := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(sort $(wildcard $(abs_srcdir)/*))))) - - MAKE_TARGETS := - -diff --git a/testcases/commands/ldd/datafiles/Makefile b/testcases/commands/ldd/datafiles/Makefile -index d8bcf5c06..01c352052 100644 ---- a/testcases/commands/ldd/datafiles/Makefile -+++ b/testcases/commands/ldd/datafiles/Makefile -@@ -21,7 +21,7 @@ CPPFLAGS += -fpic - - INSTALL_TARGETS := ldd*.so lddfile.out - --LDD_C_FILES := $(wildcard $(abs_srcdir)/lddfile*.c) -+LDD_C_FILES := $(sort $(wildcard $(abs_srcdir)/lddfile*.c)) - LDD_SO_FILES := $(patsubst $(abs_srcdir)/%.c,%.obj.so,$(LDD_C_FILES)) - MAKE_TARGETS := lddfile.out - CLEAN_TARGETS += *.obj $(LDD_SO_FILES) -diff --git a/testcases/kernel/hotplug/memory_hotplug/Makefile b/testcases/kernel/hotplug/memory_hotplug/Makefile -index d1ba65e65..38a77a2ba 100644 ---- a/testcases/kernel/hotplug/memory_hotplug/Makefile -+++ b/testcases/kernel/hotplug/memory_hotplug/Makefile -@@ -31,6 +31,7 @@ LDLIBS := $(filter-out -lltp,$(LDLIBS)) - - MAKE_TARGETS := memtoy - --memtoy: $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) -+memtoy: $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) -+ - - include $(top_srcdir)/include/mk/generic_leaf_target.mk -diff --git a/testcases/kernel/io/disktest/Makefile b/testcases/kernel/io/disktest/Makefile -index d10d98434..3a3a9cbf0 100644 ---- a/testcases/kernel/io/disktest/Makefile -+++ b/testcases/kernel/io/disktest/Makefile -@@ -209,7 +209,7 @@ LDLIBS += -lpthread - - MAKE_TARGETS := disktest - --OBJS := $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) -+OBJS := $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) - - disktest-$(VER): - mkdir -p "$@" -diff --git a/testcases/kernel/io/disktest/Makefile.linux b/testcases/kernel/io/disktest/Makefile.linux -index ea45b5a57..0f3aab622 100644 ---- a/testcases/kernel/io/disktest/Makefile.linux -+++ b/testcases/kernel/io/disktest/Makefile.linux -@@ -167,8 +167,8 @@ mandir=/usr/share/man - - VER=`grep VER_STR main.h | awk -F\" '{print $$2}'` - GBLHDRS=main.h globals.h defs.h --ALLHDRS=$(wildcard *.h) --SRCS=$(wildcard *.c) -+ALLHDRS=$(sort $(wildcard *.h)) -+SRCS=$(sort $(wildcard *.c)) - OBJS=$(SRCS:.c=.o) - - CFLAGS += -g -Wall -O -D"LINUX" -D"_THREAD_SAFE" -D"_GNU_SOURCE" -D"_LARGE_FILES" -D"_LARGEFILE64_SOURCE" -D"_FILE_OFFSET_BITS=64" $(RPM_OPT_FLAGS) -diff --git a/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile b/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile -index 10fec96dc..6b64bd261 100644 ---- a/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile -+++ b/testcases/kernel/sched/hyperthreading/ht_affinity/Makefile -@@ -28,6 +28,6 @@ INSTALL_TARGETS := smt_smp_affinity.sh - - MAKE_TARGETS := ht_affinity - --$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) -+$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) - - include $(top_srcdir)/include/mk/generic_leaf_target.mk -diff --git a/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile b/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile -index 9c1e139d6..585ff1383 100644 ---- a/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile -+++ b/testcases/kernel/sched/hyperthreading/ht_enabled/Makefile -@@ -28,6 +28,6 @@ INSTALL_TARGETS := smt_smp_enabled.sh - - MAKE_TARGETS := ht_enabled - --$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) -+$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) - - include $(top_srcdir)/include/mk/generic_leaf_target.mk -diff --git a/testcases/kernel/sched/sched_stress/Makefile b/testcases/kernel/sched/sched_stress/Makefile -index b76126c73..4dbbf3477 100644 ---- a/testcases/kernel/sched/sched_stress/Makefile -+++ b/testcases/kernel/sched/sched_stress/Makefile -@@ -10,7 +10,7 @@ INSTALL_TARGETS := sched_stress.sh - - LDLIBS += -lpthread - --MAKE_TARGETS := $(filter-out sched,$(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*.c))) -+MAKE_TARGETS := $(filter-out sched,$(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*.c)))) - - RM += -r - -diff --git a/testcases/kernel/syscalls/lchown/Makefile b/testcases/kernel/syscalls/lchown/Makefile -index 13d39cb81..305fee281 100644 ---- a/testcases/kernel/syscalls/lchown/Makefile -+++ b/testcases/kernel/syscalls/lchown/Makefile -@@ -5,7 +5,7 @@ top_srcdir ?= ../../../.. - - include $(top_srcdir)/include/mk/testcases.mk - --SRCS := $(wildcard $(abs_srcdir)/lchown*.c) -+SRCS := $(sort $(wildcard $(abs_srcdir)/lchown*.c)) - - include $(abs_srcdir)/../utils/compat_16.mk - -diff --git a/testcases/kernel/syscalls/migrate_pages/Makefile b/testcases/kernel/syscalls/migrate_pages/Makefile -index 46912b025..9cf3ce526 100644 ---- a/testcases/kernel/syscalls/migrate_pages/Makefile -+++ b/testcases/kernel/syscalls/migrate_pages/Makefile -@@ -5,7 +5,7 @@ top_srcdir ?= ../../../.. - - include $(top_srcdir)/include/mk/testcases.mk - --MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*[0-9].c)) -+MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*[0-9].c))) - $(MAKE_TARGETS): %: migrate_pages_common.o - - CPPFLAGS += -I$(abs_srcdir)/../utils/ -diff --git a/testcases/kernel/syscalls/move_pages/Makefile b/testcases/kernel/syscalls/move_pages/Makefile -index cd7ff6349..4b22160ed 100644 ---- a/testcases/kernel/syscalls/move_pages/Makefile -+++ b/testcases/kernel/syscalls/move_pages/Makefile -@@ -7,7 +7,7 @@ include $(top_srcdir)/include/mk/testcases.mk - - CPPFLAGS += -I$(abs_srcdir)/../utils - --MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*[0-9].c)) -+MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*[0-9].c))) - - $(MAKE_TARGETS): %: move_pages_support.o - -diff --git a/testcases/kernel/syscalls/utils/compat_16.mk b/testcases/kernel/syscalls/utils/compat_16.mk -index a0ff8f558..e81a00c40 100644 ---- a/testcases/kernel/syscalls/utils/compat_16.mk -+++ b/testcases/kernel/syscalls/utils/compat_16.mk -@@ -50,7 +50,7 @@ - - CPPFLAGS += -I$(abs_srcdir) -I$(abs_srcdir)/../utils - --SRCS ?= $(wildcard $(abs_srcdir)/*.c) -+SRCS ?= $(sort $(wildcard $(abs_srcdir)/*.c)) - - MAKE_TARGETS := $(notdir $(patsubst %.c,%,$(SRCS))) - MAKE_TARGETS_OBJS_WO_COMPAT_16 := $(addsuffix .o,$(MAKE_TARGETS)) -diff --git a/testcases/kernel/syscalls/utils/newer_64.mk b/testcases/kernel/syscalls/utils/newer_64.mk -index 8cd7e03c8..5e798057a 100644 ---- a/testcases/kernel/syscalls/utils/newer_64.mk -+++ b/testcases/kernel/syscalls/utils/newer_64.mk -@@ -25,7 +25,7 @@ - - CPPFLAGS += -I$(abs_srcdir) -I$(abs_srcdir)/../utils - --SRCS ?= $(wildcard $(abs_srcdir)/*.c) -+SRCS ?= $(sort $(wildcard $(abs_srcdir)/*.c)) - - MAKE_TARGETS := $(notdir $(patsubst %.c,%,$(SRCS))) - -diff --git a/testcases/misc/math/float/Makefile b/testcases/misc/math/float/Makefile -index 79dda35d6..5f4cb0f6c 100644 ---- a/testcases/misc/math/float/Makefile -+++ b/testcases/misc/math/float/Makefile -@@ -27,6 +27,6 @@ include $(top_srcdir)/include/mk/testcases.mk - LDLIBS += -lpthread -lm - - # main.c doesn't compile... --MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/float*.c)) -+MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/float*.c))) - - include $(top_srcdir)/include/mk/generic_trunk_target.mk -diff --git a/testcases/network/nfs/nfs_stress/nfs05_make_tree.c b/testcases/network/nfs/nfs_stress/nfs05_make_tree.c -index 12c86799d..23c520d9d 100644 ---- a/testcases/network/nfs/nfs_stress/nfs05_make_tree.c -+++ b/testcases/network/nfs/nfs_stress/nfs05_make_tree.c -@@ -104,7 +104,7 @@ static void *thread_fn(LTP_ATTRIBUTE_UNUSED void *args) - "\treturn 0;\n}\n"; - - const char make_buf_n[] = "CFLAGS := -O -w -g\n" -- "SRCS=$(wildcard *.c)\n" -+ "SRCS=$(sort $(wildcard *.c))\n" - "TARGETS=$(SRCS:.c=)\n" - "all: $(TARGETS)\n" - "$(TARGETS): %: %.c\n" -@@ -114,7 +114,7 @@ static void *thread_fn(LTP_ATTRIBUTE_UNUSED void *args) - - const char make_buf[] = "CFLAGS := -O -w -g\n" - "SUBDIR = dir\n" -- "SRCS=$(wildcard *.c)\n" -+ "SRCS=$(sort $(wildcard *.c))\n" - "TARGETS=$(SRCS:.c=)\n" - "all: $(SUBDIR) $(TARGETS)\n" - "$(TARGETS): %: %.c\n" -diff --git a/testcases/network/nfsv4/locks/Makefile b/testcases/network/nfsv4/locks/Makefile -index 5812dea3a..05941c892 100644 ---- a/testcases/network/nfsv4/locks/Makefile -+++ b/testcases/network/nfsv4/locks/Makefile -@@ -28,6 +28,6 @@ MAKE_TARGETS := locktests - - LDLIBS += -lpthread - --$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(wildcard $(abs_srcdir)/*.c)) -+$(MAKE_TARGETS): $(patsubst $(abs_srcdir)/%.c,%.o,$(sort $(wildcard $(abs_srcdir)/*.c))) - - include $(top_srcdir)/include/mk/generic_leaf_target.mk -diff --git a/utils/sctp/func_tests/Makefile b/utils/sctp/func_tests/Makefile -index d296c652a..a17107853 100644 ---- a/utils/sctp/func_tests/Makefile -+++ b/utils/sctp/func_tests/Makefile -@@ -30,7 +30,7 @@ LDFLAGS += $(addprefix -L$(abs_builddir)/../,lib testlib) - - LDLIBS += -lsctputil -lsctp -lpthread - --V4_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*.c)) -+V4_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(sort $(wildcard $(abs_srcdir)/*.c))) - - V6_TARGETS := test_basic_v6 test_fragments_v6 test_getname_v6 \ - test_inaddr_any_v6 test_peeloff_v6 \ --- -2.27.0 - diff --git a/poky/meta/recipes-extended/ltp/ltp/0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch b/poky/meta/recipes-extended/ltp/ltp/0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch deleted file mode 100644 index 5ace82dba..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 0653f1d809d0cc13f84facb9d2d82d984ac4d0ac Mon Sep 17 00:00:00 2001 -From: Richard Purdie <richard.purdie@linuxfoundation.org> -Date: Tue, 9 Mar 2021 15:25:16 +0000 -Subject: [PATCH 3/3] syscalls/swapon/swapoff: Move common library to libs/ - -There is a race/determinism issue with libswapon currently as depending on -which makefile path builds it, the debug paths may be "../swapon/libswapon.c" -or "libswapon.c". To avoid the determinism issue, move libswapon to libs/ -and use it from the shared location. - -The header is moved to the common includes directory to match and -the Makefile.inc fragment can be dropped. - -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021387.html] - ---- - .../kernel/syscalls/swapon => include}/libswapon.h | 0 - libs/libltpswapon/Makefile | 12 ++++++++++++ - .../swapon => libs/libltpswapon}/libswapon.c | 0 - testcases/kernel/syscalls/swapoff/Makefile | 7 +++++-- - testcases/kernel/syscalls/swapoff/Makefile.inc | 6 ------ - testcases/kernel/syscalls/swapoff/swapoff01.c | 2 +- - testcases/kernel/syscalls/swapoff/swapoff02.c | 2 +- - testcases/kernel/syscalls/swapon/Makefile | 6 +++--- - 8 files changed, 22 insertions(+), 13 deletions(-) - rename {testcases/kernel/syscalls/swapon => include}/libswapon.h (100%) - create mode 100644 libs/libltpswapon/Makefile - rename {testcases/kernel/syscalls/swapon => libs/libltpswapon}/libswapon.c (100%) - delete mode 100644 testcases/kernel/syscalls/swapoff/Makefile.inc - -diff --git a/testcases/kernel/syscalls/swapon/libswapon.h b/include/libswapon.h -similarity index 100% -rename from testcases/kernel/syscalls/swapon/libswapon.h -rename to include/libswapon.h -diff --git a/libs/libltpswapon/Makefile b/libs/libltpswapon/Makefile -new file mode 100644 -index 000000000..8f738338b ---- /dev/null -+++ b/libs/libltpswapon/Makefile -@@ -0,0 +1,12 @@ -+# SPDX-License-Identifier: GPL-2.0-or-later -+# -+# Copyright (C) Richard Purdie <richard.purdie@linuxfoundation.org> -+ -+top_srcdir ?= ../.. -+ -+include $(top_srcdir)/include/mk/env_pre.mk -+ -+INTERNAL_LIB := libltpswapon.a -+ -+include $(top_srcdir)/include/mk/lib.mk -+include $(top_srcdir)/include/mk/generic_leaf_target.mk -diff --git a/testcases/kernel/syscalls/swapon/libswapon.c b/libs/libltpswapon/libswapon.c -similarity index 100% -rename from testcases/kernel/syscalls/swapon/libswapon.c -rename to libs/libltpswapon/libswapon.c -diff --git a/testcases/kernel/syscalls/swapoff/Makefile b/testcases/kernel/syscalls/swapoff/Makefile -index fbfbe0441..a74374605 100644 ---- a/testcases/kernel/syscalls/swapoff/Makefile -+++ b/testcases/kernel/syscalls/swapoff/Makefile -@@ -3,7 +3,10 @@ - - top_srcdir ?= ../../../.. - -+LTPLIBS = ltpswapon -+ - include $(top_srcdir)/include/mk/testcases.mk --include $(abs_srcdir)/./Makefile.inc -+ -+LTPLDLIBS = -lltpswapon -+ - include $(top_srcdir)/include/mk/generic_leaf_target.mk --$(MAKE_TARGETS): %: ../swapon/libswapon.o -diff --git a/testcases/kernel/syscalls/swapoff/Makefile.inc b/testcases/kernel/syscalls/swapoff/Makefile.inc -deleted file mode 100644 -index 65350cbeb..000000000 ---- a/testcases/kernel/syscalls/swapoff/Makefile.inc -+++ /dev/null -@@ -1,6 +0,0 @@ --LIBDIR += ../swapon/ --LIBSWAPON := $(LIBDIR)/libswapon.o --$(LIBSWAPON): -- $(MAKE) -C $(LIBDIR) --CPPFLAGS += -I$(abs_srcdir)/$(LIBDIR) --LDFLAGS += -L$(abs_builddir)/$(LIBDIR) -diff --git a/testcases/kernel/syscalls/swapoff/swapoff01.c b/testcases/kernel/syscalls/swapoff/swapoff01.c -index e115269c0..87a217a89 100644 ---- a/testcases/kernel/syscalls/swapoff/swapoff01.c -+++ b/testcases/kernel/syscalls/swapoff/swapoff01.c -@@ -25,7 +25,7 @@ - #include <stdlib.h> - #include "config.h" - #include "lapi/syscalls.h" --#include "../swapon/libswapon.h" -+#include "libswapon.h" - - static void setup(void); - static void cleanup(void); -diff --git a/testcases/kernel/syscalls/swapoff/swapoff02.c b/testcases/kernel/syscalls/swapoff/swapoff02.c -index 8954f975f..60cd66c26 100644 ---- a/testcases/kernel/syscalls/swapoff/swapoff02.c -+++ b/testcases/kernel/syscalls/swapoff/swapoff02.c -@@ -33,7 +33,7 @@ - #include "test.h" - #include "lapi/syscalls.h" - #include "safe_macros.h" --#include "../swapon/libswapon.h" -+#include "libswapon.h" - - static void setup(void); - static void cleanup(void); -diff --git a/testcases/kernel/syscalls/swapon/Makefile b/testcases/kernel/syscalls/swapon/Makefile -index 97113a447..57ec45d48 100644 ---- a/testcases/kernel/syscalls/swapon/Makefile -+++ b/testcases/kernel/syscalls/swapon/Makefile -@@ -8,10 +8,10 @@ endif - - top_srcdir ?= ../../../.. - -+LTPLIBS = ltpswapon -+ - include $(top_srcdir)/include/mk/testcases.mk - --FILTER_OUT_MAKE_TARGETS := libswapon -+LTPLDLIBS = -lltpswapon - - include $(top_srcdir)/include/mk/generic_leaf_target.mk -- --$(MAKE_TARGETS): %: libswapon.o --- -2.27.0 - diff --git a/poky/meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch b/poky/meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch deleted file mode 100644 index 0e7264574..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch +++ /dev/null @@ -1,32 +0,0 @@ -From f4fafbdffae3a63c81f65cef98c72dda26283e06 Mon Sep 17 00:00:00 2001 -From: Dengke Du <dengke.du@windriver.com> -Date: Wed, 8 Feb 2017 16:17:17 +0800 -Subject: [PATCH] Fix test_proc_kill hanging - -Sometimes the signal is delivered to memcg_process before the framework took -into consideration its pid entered in the tasks. Fixed by delaying the signal -send command. - -Upstream-Status: Pending - -Signed-off-by: George Nita <george.nita@enea.com> -Signed-off-by: Dengke Du <dengke.du@windriver.com> ---- - testcases/kernel/controllers/memcg/functional/memcg_lib.sh | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh -index aadaae4..deea5d6 100755 ---- a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh -+++ b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh -@@ -291,6 +291,7 @@ test_proc_kill() - pid=$! - TST_CHECKPOINT_WAIT 0 - echo $pid > tasks -+ sleep 1 - - signal_memcg_process $pid $3 - --- -2.7.4 - diff --git a/poky/meta/recipes-extended/ltp/ltp/determinism.patch b/poky/meta/recipes-extended/ltp/ltp/determinism.patch deleted file mode 100644 index 76d40721b..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/determinism.patch +++ /dev/null @@ -1,43 +0,0 @@ -open_posix_testsuite/generate-makefiles.sh: Fix determinism issue - -Currently the list of tests is generated by the order of the files found -within the directories. This results in differences in the run.sh and -Makefiles. Within Yocto Project this results in differing target -test packages. The fix is simple, just sort the output from locate-test. - -mk/lib.mk: Sort wildcard expansion for determinism - -The order of the objects linked into libltp.a varies depending on the -order of the files found on disk. This results in most ltp binaries -differing depending on that order too. - -Sort the wildcard expansion of *.c which leads to reproducible binaries. - -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2021-March/021272.html http://lists.linux.it/pipermail/ltp/2021-March/021273.html] - -Index: git/testcases/open_posix_testsuite/scripts/generate-makefiles.sh -=================================================================== ---- git.orig/testcases/open_posix_testsuite/scripts/generate-makefiles.sh -+++ git/testcases/open_posix_testsuite/scripts/generate-makefiles.sh -@@ -24,7 +24,7 @@ generate_locate_test_makefile() { - - echo "Generating $maketype Makefiles" - -- locate-test --$maketype | sed -e 's,^./,,g' > make-gen.$maketype -+ locate-test --$maketype | sed -e 's,^./,,g' | sort > make-gen.$maketype - - generate_makefiles make-gen.$maketype $* - -Index: git/include/mk/lib.mk -=================================================================== ---- git.orig/include/mk/lib.mk -+++ git/include/mk/lib.mk -@@ -50,6 +50,7 @@ endif - MAKE_TARGETS += $(LIB) - - LIBSRCS ?= $(wildcard $(abs_srcdir)/*.c) -+LIBSRCS := $(sort $(LIBSRCS)) - LIBSRCS := $(abspath $(LIBSRCS)) - LIBSRCS := $(subst $(abs_srcdir)/,,$(wildcard $(LIBSRCS))) - LIBSRCS := $(filter-out $(FILTER_OUT_LIBSRCS),$(LIBSRCS)) diff --git a/poky/meta/recipes-extended/ltp/ltp/libswapon.patch b/poky/meta/recipes-extended/ltp/ltp/libswapon.patch deleted file mode 100644 index 07b0dcefc..000000000 --- a/poky/meta/recipes-extended/ltp/ltp/libswapon.patch +++ /dev/null @@ -1,368 +0,0 @@ -Index: git/libs/libltpswapon/Makefile -=================================================================== ---- /dev/null -+++ git/libs/libltpswapon/Makefile -@@ -0,0 +1,12 @@ -+# SPDX-License-Identifier: GPL-2.0-or-later -+# -+# Copyright (C) Richard Purdie <richard.purdie@linuxfoundation.org> -+ -+top_srcdir ?= ../.. -+ -+include $(top_srcdir)/include/mk/env_pre.mk -+ -+INTERNAL_LIB := libltpswapon.a -+ -+include $(top_srcdir)/include/mk/lib.mk -+include $(top_srcdir)/include/mk/generic_leaf_target.mk -Index: git/libs/libltpswapon/libswapon.c -=================================================================== ---- /dev/null -+++ git/libs/libltpswapon/libswapon.c -@@ -0,0 +1,90 @@ -+/* -+ * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of -+ * the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it would be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ * -+ * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com> -+ * -+ */ -+ -+#include <errno.h> -+#include "lapi/syscalls.h" -+#include "test.h" -+#include "libswapon.h" -+ -+/* -+ * Make a swap file -+ */ -+int make_swapfile(void (cleanup)(void), const char *swapfile, int safe) -+{ -+ if (!tst_fs_has_free(NULL, ".", sysconf(_SC_PAGESIZE) * 10, -+ TST_BYTES)) { -+ tst_brkm(TBROK, cleanup, -+ "Insufficient disk space to create swap file"); -+ } -+ -+ /* create file */ -+ if (tst_fill_file(swapfile, 0, -+ sysconf(_SC_PAGESIZE), 10) != 0) { -+ tst_brkm(TBROK, cleanup, "Failed to create swapfile"); -+ } -+ -+ /* make the file swapfile */ -+ const char *argv[2 + 1]; -+ argv[0] = "mkswap"; -+ argv[1] = swapfile; -+ argv[2] = NULL; -+ -+ return tst_cmd(cleanup, argv, "/dev/null", "/dev/null", safe); -+} -+ -+/* -+ * Check swapon/swapoff support status of filesystems or files -+ * we are testing on. -+ */ -+void is_swap_supported(void (cleanup)(void), const char *filename) -+{ -+ int fibmap = tst_fibmap(filename); -+ long fs_type = tst_fs_type(cleanup, filename); -+ const char *fstype = tst_fs_type_name(fs_type); -+ -+ int ret = make_swapfile(NULL, filename, 1); -+ if (ret != 0) { -+ if (fibmap == 1) { -+ tst_brkm(TCONF, cleanup, -+ "mkswap on %s not supported", fstype); -+ } else { -+ tst_brkm(TFAIL, cleanup, -+ "mkswap on %s failed", fstype); -+ } -+ } -+ -+ TEST(ltp_syscall(__NR_swapon, filename, 0)); -+ if (TEST_RETURN == -1) { -+ if (fibmap == 1 && errno == EINVAL) { -+ tst_brkm(TCONF, cleanup, -+ "Swapfile on %s not implemented", fstype); -+ } else { -+ tst_brkm(TFAIL | TERRNO, cleanup, -+ "swapon on %s failed", fstype); -+ } -+ } -+ -+ TEST(ltp_syscall(__NR_swapoff, filename, 0)); -+ if (TEST_RETURN == -1) { -+ tst_brkm(TFAIL | TERRNO, cleanup, -+ "swapoff on %s failed", fstype); -+ } -+} -Index: git/testcases/kernel/syscalls/swapoff/Makefile -=================================================================== ---- git.orig/testcases/kernel/syscalls/swapoff/Makefile -+++ git/testcases/kernel/syscalls/swapoff/Makefile -@@ -3,7 +3,11 @@ - - top_srcdir ?= ../../../.. - -+LTPLIBS = ltpswapon -+ - include $(top_srcdir)/include/mk/testcases.mk --include $(abs_srcdir)/./Makefile.inc -+ -+LTPLDLIBS = -lltpswapon -+ - include $(top_srcdir)/include/mk/generic_leaf_target.mk --$(MAKE_TARGETS): %: ../swapon/libswapon.o -+ -Index: git/testcases/kernel/syscalls/swapoff/Makefile.inc -=================================================================== ---- git.orig/testcases/kernel/syscalls/swapoff/Makefile.inc -+++ /dev/null -@@ -1,6 +0,0 @@ --LIBDIR += ../swapon/ --LIBSWAPON := $(LIBDIR)/libswapon.o --$(LIBSWAPON): -- $(MAKE) -C $(LIBDIR) --CPPFLAGS += -I$(abs_srcdir)/$(LIBDIR) --LDFLAGS += -L$(abs_builddir)/$(LIBDIR) -Index: git/testcases/kernel/syscalls/swapon/Makefile -=================================================================== ---- git.orig/testcases/kernel/syscalls/swapon/Makefile -+++ git/testcases/kernel/syscalls/swapon/Makefile -@@ -8,10 +8,10 @@ endif - - top_srcdir ?= ../../../.. - -+LTPLIBS = ltpswapon -+ - include $(top_srcdir)/include/mk/testcases.mk - --FILTER_OUT_MAKE_TARGETS := libswapon -+LTPLDLIBS = -lltpswapon - - include $(top_srcdir)/include/mk/generic_leaf_target.mk -- --$(MAKE_TARGETS): %: libswapon.o -Index: git/testcases/kernel/syscalls/swapon/libswapon.c -=================================================================== ---- git.orig/testcases/kernel/syscalls/swapon/libswapon.c -+++ /dev/null -@@ -1,90 +0,0 @@ --/* -- * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved. -- * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License as -- * published by the Free Software Foundation; either version 2 of -- * the License, or (at your option) any later version. -- * -- * This program is distributed in the hope that it would be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -- * -- * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com> -- * -- */ -- --#include <errno.h> --#include "lapi/syscalls.h" --#include "test.h" --#include "libswapon.h" -- --/* -- * Make a swap file -- */ --int make_swapfile(void (cleanup)(void), const char *swapfile, int safe) --{ -- if (!tst_fs_has_free(NULL, ".", sysconf(_SC_PAGESIZE) * 10, -- TST_BYTES)) { -- tst_brkm(TBROK, cleanup, -- "Insufficient disk space to create swap file"); -- } -- -- /* create file */ -- if (tst_fill_file(swapfile, 0, -- sysconf(_SC_PAGESIZE), 10) != 0) { -- tst_brkm(TBROK, cleanup, "Failed to create swapfile"); -- } -- -- /* make the file swapfile */ -- const char *argv[2 + 1]; -- argv[0] = "mkswap"; -- argv[1] = swapfile; -- argv[2] = NULL; -- -- return tst_cmd(cleanup, argv, "/dev/null", "/dev/null", safe); --} -- --/* -- * Check swapon/swapoff support status of filesystems or files -- * we are testing on. -- */ --void is_swap_supported(void (cleanup)(void), const char *filename) --{ -- int fibmap = tst_fibmap(filename); -- long fs_type = tst_fs_type(cleanup, filename); -- const char *fstype = tst_fs_type_name(fs_type); -- -- int ret = make_swapfile(NULL, filename, 1); -- if (ret != 0) { -- if (fibmap == 1) { -- tst_brkm(TCONF, cleanup, -- "mkswap on %s not supported", fstype); -- } else { -- tst_brkm(TFAIL, cleanup, -- "mkswap on %s failed", fstype); -- } -- } -- -- TEST(ltp_syscall(__NR_swapon, filename, 0)); -- if (TEST_RETURN == -1) { -- if (fibmap == 1 && errno == EINVAL) { -- tst_brkm(TCONF, cleanup, -- "Swapfile on %s not implemented", fstype); -- } else { -- tst_brkm(TFAIL | TERRNO, cleanup, -- "swapon on %s failed", fstype); -- } -- } -- -- TEST(ltp_syscall(__NR_swapoff, filename, 0)); -- if (TEST_RETURN == -1) { -- tst_brkm(TFAIL | TERRNO, cleanup, -- "swapoff on %s failed", fstype); -- } --} -Index: git/testcases/kernel/syscalls/swapon/libswapon.h -=================================================================== ---- git.orig/testcases/kernel/syscalls/swapon/libswapon.h -+++ /dev/null -@@ -1,39 +0,0 @@ --/* -- * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved. -- * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License as -- * published by the Free Software Foundation; either version 2 of -- * the License, or (at your option) any later version. -- * -- * This program is distributed in the hope that it would be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write the Free Software Foundation, -- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -- * -- * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com> -- * -- */ -- --/* -- * Contains common content for all swapon tests -- */ -- --#ifndef __LIBSWAPON_H__ --#define __LIBSWAPON_H__ -- --/* -- * Make a swap file -- */ --int make_swapfile(void (cleanup)(void), const char *swapfile, int safe); -- --/* -- * Check swapon/swapoff support status of filesystems or files -- * we are testing on. -- */ --void is_swap_supported(void (cleanup)(void), const char *filename); --#endif /* __LIBSWAPON_H__ */ -Index: git/testcases/kernel/syscalls/swapoff/swapoff01.c -=================================================================== ---- git.orig/testcases/kernel/syscalls/swapoff/swapoff01.c -+++ git/testcases/kernel/syscalls/swapoff/swapoff01.c -@@ -25,7 +25,7 @@ - #include <stdlib.h> - #include "config.h" - #include "lapi/syscalls.h" --#include "../swapon/libswapon.h" -+#include "libswapon.h" - - static void setup(void); - static void cleanup(void); -Index: git/testcases/kernel/syscalls/swapoff/swapoff02.c -=================================================================== ---- git.orig/testcases/kernel/syscalls/swapoff/swapoff02.c -+++ git/testcases/kernel/syscalls/swapoff/swapoff02.c -@@ -33,7 +33,7 @@ - #include "test.h" - #include "lapi/syscalls.h" - #include "safe_macros.h" --#include "../swapon/libswapon.h" -+#include "libswapon.h" - - static void setup(void); - static void cleanup(void); -Index: git/include/libswapon.h -=================================================================== ---- /dev/null -+++ git/include/libswapon.h -@@ -0,0 +1,39 @@ -+/* -+ * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of -+ * the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it would be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ * -+ * Author: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com> -+ * -+ */ -+ -+/* -+ * Contains common content for all swapon tests -+ */ -+ -+#ifndef __LIBSWAPON_H__ -+#define __LIBSWAPON_H__ -+ -+/* -+ * Make a swap file -+ */ -+int make_swapfile(void (cleanup)(void), const char *swapfile, int safe); -+ -+/* -+ * Check swapon/swapoff support status of filesystems or files -+ * we are testing on. -+ */ -+void is_swap_supported(void (cleanup)(void), const char *filename); -+#endif /* __LIBSWAPON_H__ */ diff --git a/poky/meta/recipes-extended/ltp/ltp_20210121.bb b/poky/meta/recipes-extended/ltp/ltp_20210524.bb index f58ca2eb2..26fd9ac04 100644 --- a/poky/meta/recipes-extended/ltp/ltp_20210121.bb +++ b/poky/meta/recipes-extended/ltp/ltp_20210524.bb @@ -27,21 +27,10 @@ CFLAGS_append_x86-64 = " -fomit-frame-pointer" CFLAGS_append_powerpc64 = " -D__SANE_USERSPACE_TYPES__" CFLAGS_append_mipsarchn64 = " -D__SANE_USERSPACE_TYPES__" -SRCREV = "4d005621edd109d119627eb9210b224a63bf22cb" - -# remove at next version upgrade or when output changes -PR = "r4" -HASHEQUIV_HASH_VERSION .= ".4" +SRCREV = "0fb171f2beddaf64bd27597577c206c0f892b3cd" SRC_URI = "git://github.com/linux-test-project/ltp.git \ - file://0001-build-Add-option-to-select-libc-implementation.patch \ - file://0007-Fix-test_proc_kill-hanging.patch \ - file://0001-Add-more-musl-exclusions.patch \ file://0001-Remove-OOM-tests-from-runtest-mm.patch \ - file://determinism.patch \ - file://0001-open_posix_testsuite-generate-makefiles.sh-Avoid-inc.patch \ - file://0002-Makefile-Avoid-wildcard-determinism-issues.patch \ - file://0003-syscalls-swapon-swapoff-Move-common-library-to-libs.patch \ " S = "${WORKDIR}/git" @@ -61,7 +50,7 @@ EXTRA_OECONF += " --without-tirpc " do_install(){ install -d ${D}${prefix}/ - oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install + oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install include-install # fixup not deploy STPfailure_report.pl to avoid confusing about it fails to run # as it lacks dependency on some perl moudle such as LWP::Simple @@ -78,7 +67,8 @@ do_install(){ find ${D}${prefix} -name Makefile | xargs -n 1 sed -i \ -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \ -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \ - -e 's@[^ ]*--sysroot=[^ "]*@@g' + -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \ + -e 's@[^ ]*--sysroot=[^ "]*@@g' # The controllers memcg_stree test seems to cause us hangs and takes 900s # (maybe we expect more regular output?), anyhow, skip it @@ -121,6 +111,26 @@ FILES_${PN} += "${prefix}/* ${prefix}/runtest/* ${prefix}/scenario_groups/* ${pr INHIBIT_PACKAGE_STRIP_FILES = "${prefix}/testcases/bin/nm01 ${prefix}/testcases/bin/ldd01" INSANE_SKIP_${PN} += "already-stripped staticdev" +remove_broken_musl_sources() { + [ "${TCLIBC}" = "musl" ] || return 0 + + cd ${S} + echo "WARNING: remove unsupported tests (until they're fixed)" + + # sync with upstream + # https://github.com/linux-test-project/ltp/blob/master/travis/alpine.sh#L33 + rm -rfv \ + testcases/kernel/sched/process_stress/process.c \ + testcases/kernel/syscalls/confstr/confstr01.c \ + testcases/kernel/syscalls/fmtmsg/fmtmsg01.c \ + testcases/kernel/syscalls/getcontext/getcontext01.c \ + testcases/kernel/syscalls/rt_tgsigqueueinfo/rt_tgsigqueueinfo01.c \ + testcases/kernel/syscalls/timer_create/timer_create01.c \ + testcases/kernel/syscalls/timer_create/timer_create03.c \ + utils/benchmark/ebizzy-0.3 +} +do_patch[postfuncs] += "remove_broken_musl_sources" + # Avoid file dependency scans, as LTP checks for things that may or may not # exist on the running system. For instance it has specific checks for # csh and ksh which are not typically part of OpenEmbedded systems (but diff --git a/poky/meta/recipes-extended/man-pages/man-pages_5.10.bb b/poky/meta/recipes-extended/man-pages/man-pages_5.11.bb index 8874516aa..3cd0bc525 100644 --- a/poky/meta/recipes-extended/man-pages/man-pages_5.10.bb +++ b/poky/meta/recipes-extended/man-pages/man-pages_5.11.bb @@ -7,7 +7,7 @@ LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://README;md5=207f70f56526417514ac46b6680e314f" SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz" -SRC_URI[sha256sum] = "f2ce94a7250c49910db91806996699e1deac656097d4d53bdf56bdab4b61f228" +SRC_URI[sha256sum] = "3759aee7cd4a229173d3cb651fbba438777bee6206da8d75ea04caaa7c8662b0" inherit manpages diff --git a/poky/meta/recipes-extended/pam/libpam/pam-volatiles.conf b/poky/meta/recipes-extended/pam/libpam/pam-volatiles.conf new file mode 100644 index 000000000..d8b8259a9 --- /dev/null +++ b/poky/meta/recipes-extended/pam/libpam/pam-volatiles.conf @@ -0,0 +1 @@ +d /var/run/sepermit 0755 root root - - diff --git a/poky/meta/recipes-extended/pam/libpam/run-ptest b/poky/meta/recipes-extended/pam/libpam/run-ptest index 69e729ce2..9c304aee4 100644 --- a/poky/meta/recipes-extended/pam/libpam/run-ptest +++ b/poky/meta/recipes-extended/pam/libpam/run-ptest @@ -2,9 +2,10 @@ cd tests +export srcdir=. + failed=0 all=0 - for f in tst-*; do "./$f" > /dev/null 2>&1 case "$?" in @@ -28,4 +29,4 @@ if [ "$failed" -eq 0 ] ; then else echo "$failed of $all tests failed" fi - +unset srcdir diff --git a/poky/meta/recipes-extended/pam/libpam_1.3.1.bb b/poky/meta/recipes-extended/pam/libpam_1.3.1.bb index adc641505..674193483 100644 --- a/poky/meta/recipes-extended/pam/libpam_1.3.1.bb +++ b/poky/meta/recipes-extended/pam/libpam_1.3.1.bb @@ -24,6 +24,7 @@ SRC_URI = "https://github.com/linux-pam/linux-pam/releases/download/v${PV}/Linux file://pam-security-abstract-securetty-handling.patch \ file://pam-unix-nullok-secure.patch \ file://crypt_configure.patch \ + file://pam-volatiles.conf \ " SRC_URI[md5sum] = "558ff53b0fc0563ca97f79e911822165" @@ -140,8 +141,18 @@ do_install() { # don't install /var/run when populating rootfs. Do it through volatile rm -rf ${D}${localstatedir} - install -d ${D}${sysconfdir}/default/volatiles - install -m 0644 ${WORKDIR}/99_pam ${D}${sysconfdir}/default/volatiles + + if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','false','true',d)}; then + rm -rf ${D}${sysconfdir}/init.d/ + rm -rf ${D}${sysconfdir}/rc* + install -d ${D}${sysconfdir}/tmpfiles.d + install -m 0644 ${WORKDIR}/pam-volatiles.conf \ + ${D}${sysconfdir}/tmpfiles.d/pam.conf + else + install -d ${D}${sysconfdir}/default/volatiles + install -m 0644 ${WORKDIR}/99_pam \ + ${D}${sysconfdir}/default/volatiles/ + fi install -d ${D}${sysconfdir}/pam.d/ install -m 0644 ${WORKDIR}/pam.d/* ${D}${sysconfdir}/pam.d/ @@ -158,9 +169,16 @@ do_install_ptest() { if [ ${PTEST_ENABLED} = "1" ]; then mkdir -p ${D}${PTEST_PATH}/tests install -m 0755 ${B}/tests/.libs/* ${D}${PTEST_PATH}/tests + install -m 0644 ${S}/tests/confdir ${D}${PTEST_PATH}/tests fi } +pkg_postinst_${PN}() { + if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then + /etc/init.d/populate-volatile.sh update + fi +} + inherit features_check REQUIRED_DISTRO_FEATURES = "pam" diff --git a/poky/meta/recipes-extended/parted/parted_3.4.bb b/poky/meta/recipes-extended/parted/parted_3.4.bb index c15f5aeb0..fb583489f 100644 --- a/poky/meta/recipes-extended/parted/parted_3.4.bb +++ b/poky/meta/recipes-extended/parted/parted_3.4.bb @@ -47,7 +47,7 @@ do_install_ptest() { sed -e 's| ../parted||' -i $t/tests/*.sh } -RDEPENDS_${PN}-ptest = "bash coreutils perl util-linux-losetup python3 make gawk e2fsprogs-mke2fs python3-core" +RDEPENDS_${PN}-ptest = "bash coreutils perl util-linux-losetup python3 make gawk e2fsprogs-mke2fs python3-core dosfstools" RRECOMMENDS_${PN}-ptest = "kernel-module-scsi-debug" RDEPENDS_${PN}-ptest_append_libc-glibc = "\ glibc-utils \ diff --git a/poky/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch b/poky/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch index 434b6b1c4..535f9ce20 100644 --- a/poky/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch +++ b/poky/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch @@ -15,7 +15,7 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com> 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/man/rpcbind.8 b/man/rpcbind.8 -index af6200f..2e6146b 100644 +index fbf0ace..66f7c08 100644 --- a/man/rpcbind.8 +++ b/man/rpcbind.8 @@ -11,7 +11,7 @@ @@ -27,17 +27,17 @@ index af6200f..2e6146b 100644 .Sh DESCRIPTION The .Nm -@@ -107,6 +107,8 @@ will automatically add +@@ -96,6 +96,8 @@ will automatically add and if IPv6 is enabled, .Li ::1 to the list. +.It Fl p +Bind for fixed UDP port number - .It Fl i - .Dq Insecure - mode. + If no + .Fl h + option is specified, diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c -index 8aef9e5..c2632a4 100644 +index 1743dad..07a1c75 100644 --- a/src/rpcb_svc_com.c +++ b/src/rpcb_svc_com.c @@ -48,6 +48,7 @@ @@ -60,8 +60,8 @@ index 8aef9e5..c2632a4 100644 int fd; struct rmtcallfd_list *rmt; SVCXPRT *xprt; -+ struct __rpc_sockinfo si; -+ struct t_bind taddr; ++ struct __rpc_sockinfo si; ++ struct t_bind taddr; if ((fd = __rpc_nconf2fd(nconf)) == -1) { if (debugging) @@ -70,23 +70,23 @@ index 8aef9e5..c2632a4 100644 return (-1); } + -+ if (fixed_port) { -+ __rpc_fd2sockinfo(fd, &si); -+ memset(&taddr, 0, sizeof(taddr)); -+ taddr.addr.maxlen = taddr.addr.len = si.si_alen; -+ taddr.addr.buf = malloc(si.si_alen); -+ if (taddr.addr.buf == NULL) { -+ return -1; -+ } -+ *(unsigned short *)(&(taddr.addr.buf[0])) = si.si_af; -+ *(unsigned short *)(&(taddr.addr.buf[2])) = htons(fixed_port); -+ xprt = svc_tli_create(fd, nconf, &taddr, RPC_MAXDATASIZE, RPC_MAXDATASIZE); -+ } else ++ if (fixed_port) { ++ __rpc_fd2sockinfo(fd, &si); ++ memset(&taddr, 0, sizeof(taddr)); ++ taddr.addr.maxlen = taddr.addr.len = si.si_alen; ++ taddr.addr.buf = malloc(si.si_alen); ++ if (taddr.addr.buf == NULL) { ++ return -1; ++ } ++ *(unsigned short *)(&(taddr.addr.buf[0])) = si.si_af; ++ *(unsigned short *)(&(taddr.addr.buf[2])) = htons(fixed_port); ++ xprt = svc_tli_create(fd, nconf, &taddr, RPC_MAXDATASIZE, RPC_MAXDATASIZE); ++ } else xprt = svc_tli_create(fd, 0, (struct t_bind *) 0, 0, 0); if (xprt == NULL) { if (debugging) diff --git a/src/rpcbind.c b/src/rpcbind.c -index 137011b..dc3d2d6 100644 +index 25d8a90..36a95b9 100644 --- a/src/rpcbind.c +++ b/src/rpcbind.c @@ -111,6 +111,7 @@ int runasdaemon = 0; @@ -97,7 +97,7 @@ index 137011b..dc3d2d6 100644 char **hosts = NULL; int nhosts = 0; -@@ -869,7 +870,7 @@ parseargs(int argc, char *argv[]) +@@ -884,7 +885,7 @@ parseargs(int argc, char *argv[]) { int c; oldstyle_local = 1; @@ -106,25 +106,25 @@ index 137011b..dc3d2d6 100644 switch (c) { case 'a': doabort = 1; /* when debugging, do an abort on */ -@@ -887,6 +888,9 @@ parseargs(int argc, char *argv[]) +@@ -902,6 +903,9 @@ parseargs(int argc, char *argv[]) if (hosts[nhosts - 1] == NULL) errx(1, "Out of memory"); break; -+ case 'p': -+ fixed_port = atoi(optarg); -+ break; ++ case 'p': ++ fixed_port = atoi(optarg); ++ break; case 'i': insecure = 1; break; -@@ -905,7 +909,7 @@ parseargs(int argc, char *argv[]) +@@ -920,7 +924,7 @@ parseargs(int argc, char *argv[]) break; #endif default: /* error */ - fprintf(stderr, "usage: rpcbind [-adhilswf]\n"); -+ fprintf(stderr, "usage: rpcbind [-adhpilswf]\n"); ++ fprintf(stderr, "usage: rpcbind [-adhpilswf]\n"); exit (1); } } -- -1.9.1 +2.25.1 diff --git a/poky/meta/recipes-extended/rpcbind/rpcbind_1.2.5.bb b/poky/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb index ec8f9e48b..b02638b2c 100644 --- a/poky/meta/recipes-extended/rpcbind/rpcbind_1.2.5.bb +++ b/poky/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb @@ -16,8 +16,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/rpcbind/rpcbind-${PV}.tar.bz2 \ file://rpcbind_add_option_to_fix_port_number.patch \ file://0001-systemd-use-EnvironmentFile.patch \ " -SRC_URI[md5sum] = "ed46f09b9c0fa2d49015f6431bc5ea7b" -SRC_URI[sha256sum] = "2ce360683963b35c19c43f0ee2c7f18aa5b81ef41c3fdbd15ffcb00b8bffda7a" +SRC_URI[sha256sum] = "5613746489cae5ae23a443bb85c05a11741a5f12c8f55d2bb5e83b9defeee8de" inherit autotools update-rc.d systemd pkgconfig update-alternatives diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch index c860c717a..2ee0be54b 100644 --- a/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch +++ b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch @@ -1,21 +1,22 @@ -From bbc85a439672120fa1d36be79e959b28fe840919 Mon Sep 17 00:00:00 2001 +From f14d9d8184753dfbff99d7a51939145355627dcd Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Tue, 30 Jul 2019 18:38:03 +0200 Subject: [PATCH] Do not preserve ownership when installing example jobs Upstream-Status: Pending Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile -index f36e57e..20488af 100644 +index 91d8ed4..72d0ca0 100644 --- a/Makefile +++ b/Makefile -@@ -452,6 +452,6 @@ install: stress-ng stress-ng.1.gz - mkdir -p ${DESTDIR}${MANDIR} - cp stress-ng.1.gz ${DESTDIR}${MANDIR} +@@ -502,6 +502,6 @@ else + cp stress-ng.1 ${DESTDIR}${MANDIR} + endif mkdir -p ${DESTDIR}${JOBDIR} - cp -rp example-jobs/*.job ${DESTDIR}${JOBDIR} + cp -r example-jobs/*.job ${DESTDIR}${JOBDIR} diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.05.bb b/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.10.bb index eb6bdb4a8..7b06f0061 100644 --- a/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.05.bb +++ b/poky/meta/recipes-extended/stress-ng/stress-ng_0.12.10.bb @@ -9,7 +9,7 @@ SRC_URI = "https://kernel.ubuntu.com/~cking/tarballs/${BPN}/${BP}.tar.xz \ file://0001-Do-not-preserve-ownership-when-installing-example-jo.patch \ file://no_daddr_t.patch \ " -SRC_URI[sha256sum] = "af7779aee38e6d94726ed7d5cf36384a64d50c86e42fff89c141d8609913f425" +SRC_URI[sha256sum] = "bd167b6559fa8a28680371b1defd3ffe2344eb550129d58dd7d5e2d568f2786e" DEPENDS = "coreutils-native" diff --git a/poky/meta/recipes-extended/sudo/sudo_1.9.6p1.bb b/poky/meta/recipes-extended/sudo/sudo_1.9.7p1.bb index b33345913..aba6f4a59 100644 --- a/poky/meta/recipes-extended/sudo/sudo_1.9.6p1.bb +++ b/poky/meta/recipes-extended/sudo/sudo_1.9.7p1.bb @@ -7,7 +7,7 @@ SRC_URI = "https://www.sudo.ws/dist/sudo-${PV}.tar.gz \ PAM_SRC_URI = "file://sudo.pam" -SRC_URI[sha256sum] = "a9e9cdc058fafeb9cd3ebfb864c81755e524d98aa022152763f25bce8ca3ca90" +SRC_URI[sha256sum] = "391431f454e55121b60c6ded0fcf30ddb80d623d7d16a6d1907cfa6a0b91d8cf" DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" RDEPENDS_${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}" diff --git a/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.2.bb b/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.3.bb index 5dfeca532..be34ec7b3 100644 --- a/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.2.bb +++ b/poky/meta/recipes-extended/sysklogd/sysklogd_2.2.3.bb @@ -14,7 +14,7 @@ SRC_URI = "git://github.com/troglobit/sysklogd.git;nobranch=1 \ file://sysklogd \ " -SRCREV = "f507ed8ff3f1e9d71bb6f85acbf5d14b2fa4e5f7" +SRCREV = "17b68ca89ab814bb623b615c4e7088d619ed8829" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-extended/sysstat/sysstat.inc b/poky/meta/recipes-extended/sysstat/sysstat.inc index e5e134c03..f97b88d49 100644 --- a/poky/meta/recipes-extended/sysstat/sysstat.inc +++ b/poky/meta/recipes-extended/sysstat/sysstat.inc @@ -23,6 +23,10 @@ PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_system_unitdir}" EXTRA_OECONF += "--disable-stripping" +SYSTEMD_PACKAGES = "${PN}" +SYSTEMD_SERVICE_${PN} = "sysstat.service" +SYSTEMD_AUTO_ENABLE = "enable" + do_configure_prepend() { export sa_lib_dir=${libexecdir}/sa } diff --git a/poky/meta/recipes-extended/unzip/unzip/unzip_optimization.patch b/poky/meta/recipes-extended/unzip/unzip/unzip_optimization.patch new file mode 100644 index 000000000..4bab7b26a --- /dev/null +++ b/poky/meta/recipes-extended/unzip/unzip/unzip_optimization.patch @@ -0,0 +1,127 @@ +unzip: use optimization from bitbake + +Remove -O3 optimizations to use bitbake default optimization levels. + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de> + +diff -rup unix-orig/configure unix/configure +--- a/unix-orig/configure 2021-04-16 10:25:03.120858292 +0000 ++++ b/unix/configure 2021-04-16 10:46:43.292546138 +0000 +@@ -70,7 +70,7 @@ int main() + _EOF_ + $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null + if test $? -eq 0; then +- CFLAGS_OPT='-O3' ++ CFLAGS_OPT='' + echo " DEC C ($CFLAGS_OPT)" + else + # HP-UX HP C? +@@ -111,7 +111,7 @@ int main() + _EOF_ + $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null + if test $? -eq 0; then +- CFLAGS_OPT='-O3' ++ CFLAGS_OPT='' + echo " GNU C ($CFLAGS_OPT)" + # Special Mac OS X shared library "ld" option? + if test ` uname -s 2> /dev/null ` = 'Darwin'; then +diff -rup unix-orig/Makefile unix/Makefile +--- a/unix-orig/Makefile 2021-04-16 10:25:03.000863878 +0000 ++++ b/unix/Makefile 2021-04-16 10:47:31.658299278 +0000 +@@ -47,7 +47,7 @@ LD = $(CC)# must match, else "unresolved + AS = as + LOC = $(D_USE_BZ2) $(LOCAL_UNZIP) + AF = $(LOC) +-CFLAGS = -O ++CFLAGS = + CF_NOOPT = -I. -I$(IZ_BZIP2) -DUNIX $(LOC) + CF = $(CFLAGS) $(CF_NOOPT) + LFLAGS1 = +@@ -594,12 +594,12 @@ generic_shlib: unix_make + @echo\ + 'which is UnZip linked with the DLL). This target is an example only.' + @echo "" +- $(MAKE) objsdll CC=gcc CFLAGS="-O3 -Wall -fPIC -DDLL" ++ $(MAKE) objsdll CC=gcc CFLAGS="-Wall -fPIC -DDLL" + gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL) + $(RM) libunzip.so.0 libunzip.so + $(LN) -s libunzip.so.0.4 libunzip.so.0 + $(LN) -s libunzip.so.0 libunzip.so +- gcc -c -O unzipstb.c ++ gcc -c unzipstb.c + gcc -o unzip_shlib unzipstb.o -L. -lunzip + + #---------------------------------------------------------------------------- +@@ -775,7 +775,7 @@ freebsd: unix_make + # with "echo" instead). + # + gcc: unix_make +- $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O3" LF2="" ++ $(MAKE) unzips CC=gcc LD=gcc CFLAGS="" LF2="" + + # Heurikon HK68 (68010), UniPlus+ System V 5.0, Green Hills C-68000 + hk68: unix_make +@@ -792,7 +792,7 @@ isc: unix_make + isc_gcc: unix_make + $(MAKE) unzips AS=gcc CC=gcc LD=gcc CRCA_O=crc_gcc$O \ + LF="-shlib $(LF)" SL="-shlib $(SL)" FL="-shlib $(FL)" LF2="" \ +- CFLAGS="-O3" LOC="-DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM -DNO_LCHOWN -DNO_LCHMOD $(LOC)" \ ++ CFLAGS="" LOC="-DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM -DNO_LCHOWN -DNO_LCHMOD $(LOC)" \ + AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)" + $(STRIP) $(UNZIPS) + +@@ -808,7 +808,7 @@ isi: unix_make + linux: unix_make + @echo 'NOTE: use linux_noasm target for non-Intel Linux compiles.' + $(MAKE) unzips CC=gcc LD=gcc AS=gcc\ +- CFLAGS="-O3 -Wall -DASM_CRC"\ ++ CFLAGS="-Wall -DASM_CRC"\ + AF="-Di386 $(AF)" CRCA_O=crc_gcc$O + # GRR: this echo is pointless; if user gets this far, no difference to install + # @echo 'Be sure to use the install_asm target rather than the install target' +@@ -818,14 +818,14 @@ linux_asm: linux + # Linux (Posix, approximately SysV): virtually any version since before 0.96, + # for any platform. Change "-O" to "-O3" or whatever, as desired... + linux_noasm: unix_make +- $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O -Wall" ++ $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-Wall" + + # Linux with lcc compiler: __inline__ (stat.h) not recognized, and must edit + # /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined. -O3 + # (or -O2 or -O) is ignored. [GRR 960828: test target only] + # + linux_lcc: unix_make +- $(MAKE) unzips CC=lcc LD=lcc CFLAGS="-O3 -Wall -D__inline__= " ++ $(MAKE) unzips CC=lcc LD=lcc CFLAGS="-Wall -D__inline__= " + + # Linux host with go32 (djgpp) cross-compiler (go32crs.tgz) for 32-bit DOS. + linux_dos: unix_make +@@ -844,7 +844,7 @@ linux_dos: unix_make + # library). + # + linux_shlib: unix_make +- $(MAKE) objsdll CC=gcc CFLAGS="-O3 -Wall -fPIC"\ ++ $(MAKE) objsdll CC=gcc CFLAGS="-Wall -fPIC"\ + LOC="-DDLL -DASM_CRC $(LOC)"\ + AS=gcc AF="-fPIC -Di386 $(AF)" CRCA_O=crc_gcc$O + gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)\ +@@ -858,7 +858,7 @@ linux_shlib: unix_make + # instead of the original UnZip version. (libz was libgz prior to 0.94) + linux_shlibz: unix_make + $(MAKE) objsdll CC=gcc AS=gcc AF="-fPIC -Di386 $(AF)" CRCA_O=crc_gcc$O\ +- CFLAGS="-O3 -Wall -fPIC" LOC="-DDLL -DUSE_ZLIB -DASM_CRC $(LOC)" ++ CFLAGS="-Wall -fPIC" LOC="-DDLL -DUSE_ZLIB -DASM_CRC $(LOC)" + gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)\ + crc_gcc.pic.o + ln -sf libunzip.so.0.4 libunzip.so.0 +@@ -871,7 +871,7 @@ lynx: unix_make + + # Macintosh MacOS X (Unix-compatible enviroment), using standard compiler + macosx: unix_make +- $(MAKE) unzips CFLAGS="-O3 -Wall -DBSD" LF2="" ++ $(MAKE) unzips CFLAGS="-Wall -DBSD" LF2="" + $(STRIP) $(UNZIPS) + + # Macintosh MacOS X (Unix-compatible enviroment), using gcc diff --git a/poky/meta/recipes-extended/unzip/unzip_6.0.bb b/poky/meta/recipes-extended/unzip/unzip_6.0.bb index 0c56a39d9..40f0346f8 100644 --- a/poky/meta/recipes-extended/unzip/unzip_6.0.bb +++ b/poky/meta/recipes-extended/unzip/unzip_6.0.bb @@ -26,12 +26,16 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/ file://CVE-2019-13232_p1.patch \ file://CVE-2019-13232_p2.patch \ file://CVE-2019-13232_p3.patch \ + file://unzip_optimization.patch \ " UPSTREAM_VERSION_UNKNOWN = "1" SRC_URI[md5sum] = "62b490407489521db863b523a7f86375" SRC_URI[sha256sum] = "036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37" +# Patch from https://bugzilla.redhat.com/attachment.cgi?id=293893&action=diff applied to 6.0 source +CVE_CHECK_WHITELIST += "CVE-2008-0888" + # exclude version 5.5.2 which triggers a false positive UPSTREAM_CHECK_REGEX = "unzip(?P<pver>(?!552).+)\.tgz" diff --git a/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb b/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb index 2787b270f..69d5b2f83 100644 --- a/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb +++ b/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb @@ -19,6 +19,9 @@ SRCREV = "6a4af7786630ce48747d9687e2f18f45ea6684c4" S = "${WORKDIR}/git" +# https://github.com/xinetd-org/xinetd/pull/10 is merged into this git tree revision +CVE_CHECK_WHITELIST += "CVE-2013-4342" + inherit autotools update-rc.d systemd pkgconfig SYSTEMD_SERVICE_${PN} = "xinetd.service" diff --git a/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch b/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch index b5ffb95b7..37c5ff0cc 100644 --- a/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch +++ b/poky/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch @@ -1,4 +1,4 @@ -From 986c7917aef632745cb3388a86a2f62347d5a0a5 Mon Sep 17 00:00:00 2001 +From 77c7963c7a0f1c455f20520d5c7b1ec9b17a44fb Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Wed, 23 Dec 2020 19:14:32 +0100 Subject: [PATCH] Makefile: sort all wildcard file list expansions @@ -16,7 +16,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/programs/Makefile b/programs/Makefile -index 936f3c80..b8200fae 100644 +index 599fb02f..2c416467 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -74,11 +74,11 @@ ZSTDLEGACY_DIR := $(ZSTDDIR)/legacy @@ -45,11 +45,11 @@ index 936f3c80..b8200fae 100644 ZSTD_ALL_SRC = $(ZSTDLIB_LOCAL_SRC) $(ZSTD_CLI_SRC) diff --git a/tests/Makefile b/tests/Makefile -index f0605057..74a90b0f 100644 +index 85553007..b71cdba8 100644 --- a/tests/Makefile +++ b/tests/Makefile -@@ -49,7 +49,7 @@ ZSTD_FILES := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES) - ZBUFF_FILES := $(ZSTDDIR)/deprecated/*.c +@@ -49,7 +49,7 @@ ZSTDDECOMP_FILES := $(ZSTDDIR)/decompress/*.c + ZSTD_FILES := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES) ZDICT_FILES := $(ZSTDDIR)/dictBuilder/*.c -ZSTD_F1 := $(wildcard $(ZSTD_FILES)) @@ -57,7 +57,7 @@ index f0605057..74a90b0f 100644 ZSTD_OBJ1 := $(subst $(ZSTDDIR)/common/,zstdm_,$(ZSTD_F1)) ZSTD_OBJ2 := $(subst $(ZSTDDIR)/compress/,zstdc_,$(ZSTD_OBJ1)) ZSTD_OBJ3 := $(subst $(ZSTDDIR)/decompress/,zstdd_,$(ZSTD_OBJ2)) -@@ -211,7 +211,7 @@ bigdict: $(ZSTDMT_OBJECTS) $(PRGDIR)/datagen.c bigdict.c +@@ -202,7 +202,7 @@ bigdict: $(ZSTDMT_OBJECTS) $(PRGDIR)/datagen.c bigdict.c invalidDictionaries : $(ZSTD_OBJECTS) invalidDictionaries.c legacy : CPPFLAGS += -I$(ZSTDDIR)/legacy -DZSTD_LEGACY_SUPPORT=4 @@ -67,10 +67,10 @@ index f0605057..74a90b0f 100644 decodecorpus : LDLIBS += -lm decodecorpus : $(filter-out zstdc_zstd_compress.o, $(ZSTD_OBJECTS)) $(ZDICT_FILES) $(PRGDIR)/util.c $(PRGDIR)/timefn.c decodecorpus.c diff --git a/tests/fuzz/Makefile b/tests/fuzz/Makefile -index f3a561de..68a29ef0 100644 +index ccb574b7..b1cb2935 100644 --- a/tests/fuzz/Makefile +++ b/tests/fuzz/Makefile -@@ -58,7 +58,7 @@ FUZZ_SRC := \ +@@ -62,7 +62,7 @@ FUZZ_SRC := \ $(ZSTDCOMP_SRC) \ $(ZSTDDICT_SRC) \ $(ZSTDLEGACY_SRC) diff --git a/poky/meta/recipes-extended/zstd/zstd/0001-MinGW-Build-Fixes.patch b/poky/meta/recipes-extended/zstd/zstd/0001-MinGW-Build-Fixes.patch new file mode 100644 index 000000000..a0e00dca0 --- /dev/null +++ b/poky/meta/recipes-extended/zstd/zstd/0001-MinGW-Build-Fixes.patch @@ -0,0 +1,193 @@ +From ab9a34c92eec815ef214470c927ddbe2e950e7e5 Mon Sep 17 00:00:00 2001 +From: Joshua Watt <JPEWhacker@gmail.com> +Date: Wed, 26 May 2021 09:15:40 -0500 +Subject: [PATCH] MinGW Build Fixes + +Fixes building on MinGW by + 1) Exporting the OS variable so that it is visible to sub-make + invocations + 2) Fixing the extension handling so that make correctly identifies when + targets need to be rebuilt. Without the correct handling, make would + rebuild the executable targets when running `make install` because + it couldn't find them with the correct extension. + +Upstream-Status: Submitted [https://github.com/facebook/zstd/pull/2685] +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> +--- + Makefile | 1 + + programs/Makefile | 74 +++++++++++++++++++++++------------------------ + 2 files changed, 38 insertions(+), 37 deletions(-) + +diff --git a/Makefile b/Makefile +index c1908f0a..f9ce9504 100644 +--- a/Makefile ++++ b/Makefile +@@ -29,6 +29,7 @@ VOID = /dev/null + # fail on other tested distros (ubuntu, debian) even + # without manually specifying the TARGET_SYSTEM. + TARGET_SYSTEM ?= $(OS) ++export OS + + ifneq (,$(filter Windows%,$(TARGET_SYSTEM))) + EXT =.exe +diff --git a/programs/Makefile b/programs/Makefile +index 599fb02f..79b45c83 100644 +--- a/programs/Makefile ++++ b/programs/Makefile +@@ -209,37 +209,37 @@ SET_CACHE_DIRECTORY = \ + + + .PHONY: all +-all: zstd ++all: zstd$(EXT) + + .PHONY: allVariants +-allVariants: zstd zstd-compress zstd-decompress zstd-small zstd-nolegacy zstd-dictBuilder ++allVariants: zstd$(EXT) zstd-compress$(EXT) zstd-decompress$(EXT) zstd-small$(EXT) zstd-nolegacy$(EXT) zstd-dictBuilder$(EXT) + + .PHONY: zstd # must always be run +-zstd : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP) +-zstd : LDFLAGS += $(THREAD_LD) $(DEBUGFLAGS_LD) +-zstd : LDLIBS += $(ZLIBLD) $(LZMALD) $(LZ4LD) +-zstd : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) ++zstd$(EXT) : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP) ++zstd$(EXT) : LDFLAGS += $(THREAD_LD) $(DEBUGFLAGS_LD) ++zstd$(EXT) : LDLIBS += $(ZLIBLD) $(LZMALD) $(LZ4LD) ++zstd$(EXT) : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) + ifneq (,$(filter Windows%,$(OS))) +-zstd : $(RES_FILE) ++zstd$(EXT) : $(RES_FILE) + endif + + ifndef BUILD_DIR + # generate BUILD_DIR from flags + +-zstd: ++zstd$(EXT): + $(SET_CACHE_DIRECTORY) + + else + # BUILD_DIR is defined + + ZSTD_OBJ := $(addprefix $(BUILD_DIR)/, $(ZSTD_ALL_OBJ)) +-$(BUILD_DIR)/zstd : $(ZSTD_OBJ) ++$(BUILD_DIR)/zstd$(EXT) : $(ZSTD_OBJ) + @echo "$(THREAD_MSG)" + @echo "$(ZLIB_MSG)" + @echo "$(LZMA_MSG)" + @echo "$(LZ4_MSG)" + @echo LINK $@ +- $(CC) $(FLAGS) $^ $(LDLIBS) -o $@$(EXT) ++ $(CC) $(FLAGS) $^ $(LDLIBS) -o $@ + + ifeq ($(HAVE_HASH),1) + SRCBIN_HASH = $(shell cat $(BUILD_DIR)/zstd 2> $(VOID) | $(HASH) | cut -f 1 -d " ") +@@ -249,7 +249,7 @@ else + BIN_ISDIFFERENT = 1 + endif + +-zstd : $(BUILD_DIR)/zstd ++zstd$(EXT) : $(BUILD_DIR)/zstd$(EXT) + if [ $(BIN_ISDIFFERENT) -eq 1 ]; then \ + cp -f $< $@; \ + echo zstd build completed; \ +@@ -263,46 +263,46 @@ endif # BUILD_DIR + .PHONY: zstd-release + zstd-release: DEBUGFLAGS := -DBACKTRACE_ENABLE=0 + zstd-release: DEBUGFLAGS_LD := +-zstd-release: zstd ++zstd-release: zstd$(EXT) + +-zstd32 : CPPFLAGS += $(THREAD_CPP) +-zstd32 : LDFLAGS += $(THREAD_LD) +-zstd32 : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) ++zstd32$(EXT) : CPPFLAGS += $(THREAD_CPP) ++zstd32$(EXT) : LDFLAGS += $(THREAD_LD) ++zstd32$(EXT) : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) + ifneq (,$(filter Windows%,$(OS))) +-zstd32 : $(RES32_FILE) ++zstd32$(EXT) : $(RES32_FILE) + endif +-zstd32 : $(ZSTDLIB_FULL_SRC) $(ZSTD_CLI_SRC) +- $(CC) -m32 $(FLAGS) $^ -o $@$(EXT) ++zstd32$(EXT) : $(ZSTDLIB_FULL_SRC) $(ZSTD_CLI_SRC) ++ $(CC) -m32 $(FLAGS) $^ -o $@ + + ## zstd-nolegacy: same scope as zstd, with just support of legacy formats removed +-zstd-nolegacy : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD) +-zstd-nolegacy : $(ZSTDLIB_CORE_SRC) $(ZDICT_SRC) $(ZSTD_CLI_OBJ) +- $(CC) $(FLAGS) $^ -o $@$(EXT) $(LDFLAGS) ++zstd-nolegacy$(EXT) : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD) ++zstd-nolegacy$(EXT) : $(ZSTDLIB_CORE_SRC) $(ZDICT_SRC) $(ZSTD_CLI_OBJ) ++ $(CC) $(FLAGS) $^ -o $@ $(LDFLAGS) + + .PHONY: zstd-nomt + zstd-nomt : THREAD_CPP := + zstd-nomt : THREAD_LD := + zstd-nomt : THREAD_MSG := - multi-threading disabled +-zstd-nomt : zstd ++zstd-nomt : zstd$(EXT) + + .PHONY: zstd-nogz + zstd-nogz : ZLIBCPP := + zstd-nogz : ZLIBLD := + zstd-nogz : ZLIB_MSG := - gzip support is disabled +-zstd-nogz : zstd ++zstd-nogz : zstd$(EXT) + + .PHONY: zstd-noxz + zstd-noxz : LZMACPP := + zstd-noxz : LZMALD := + zstd-noxz : LZMA_MSG := - xz/lzma support is disabled +-zstd-noxz : zstd ++zstd-noxz : zstd$(EXT) + + ## zstd-dll: zstd executable linked to dynamic library libzstd (must have same version) + .PHONY: zstd-dll + zstd-dll : LDFLAGS+= -L$(ZSTDDIR) + zstd-dll : LDLIBS += -lzstd + zstd-dll : ZSTDLIB_LOCAL_SRC = xxhash.c +-zstd-dll : zstd ++zstd-dll : zstd$(EXT) + + + ## zstd-pgo: zstd executable optimized with PGO. +@@ -321,23 +321,23 @@ zstd-pgo : + $(MAKE) zstd MOREFLAGS=-fprofile-use + + ## zstd-small: minimal target, supporting only zstd compression and decompression. no bench. no legacy. no other format. +-zstd-small: CFLAGS = -Os -s +-zstd-frugal zstd-small: $(ZSTDLIB_CORE_SRC) zstdcli.c util.c timefn.c fileio.c +- $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOTRACE $^ -o $@$(EXT) ++zstd-small$(EXT): CFLAGS = -Os -s ++zstd-frugal$(EXT) zstd-small$(EXT): $(ZSTDLIB_CORE_SRC) zstdcli.c util.c timefn.c fileio.c ++ $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOTRACE $^ -o $@ + +-zstd-decompress: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_DECOMPRESS_C) zstdcli.c util.c timefn.c fileio.c +- $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS -DZSTD_NOTRACE $^ -o $@$(EXT) ++zstd-decompress$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_DECOMPRESS_C) zstdcli.c util.c timefn.c fileio.c ++ $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS -DZSTD_NOTRACE $^ -o $@ + +-zstd-compress: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) zstdcli.c util.c timefn.c fileio.c +- $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS -DZSTD_NOTRACE $^ -o $@$(EXT) ++zstd-compress$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) zstdcli.c util.c timefn.c fileio.c ++ $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS -DZSTD_NOTRACE $^ -o $@ + + ## zstd-dictBuilder: executable supporting dictionary creation and compression (only) +-zstd-dictBuilder: CPPFLAGS += -DZSTD_NOBENCH -DZSTD_NODECOMPRESS -DZSTD_NOTRACE +-zstd-dictBuilder: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) $(ZDICT_SRC) zstdcli.c util.c timefn.c fileio.c dibio.c +- $(CC) $(FLAGS) $^ -o $@$(EXT) ++zstd-dictBuilder$(EXT): CPPFLAGS += -DZSTD_NOBENCH -DZSTD_NODECOMPRESS -DZSTD_NOTRACE ++zstd-dictBuilder$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) $(ZDICT_SRC) zstdcli.c util.c timefn.c fileio.c dibio.c ++ $(CC) $(FLAGS) $^ -o $@ + +-zstdmt: zstd +- ln -sf zstd zstdmt ++zstdmt$(EXT): zstd$(EXT) ++ ln -sf zstd$(EXT) zstdmt$(EXT) + + .PHONY: generate_res + generate_res: $(RES64_FILE) $(RES32_FILE) +-- +2.31.1 + diff --git a/poky/meta/recipes-extended/zstd/zstd_1.4.9.bb b/poky/meta/recipes-extended/zstd/zstd_1.5.0.bb index b86fdf8b2..806edb63c 100644 --- a/poky/meta/recipes-extended/zstd/zstd_1.4.9.bb +++ b/poky/meta/recipes-extended/zstd/zstd_1.5.0.bb @@ -11,9 +11,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=c7f0b161edbe52f5f345a3d1311d0b32 \ SRC_URI = "git://github.com/facebook/zstd.git;branch=release \ file://0001-Makefile-sort-all-wildcard-file-list-expansions.patch \ + file://0001-MinGW-Build-Fixes.patch \ " -SRCREV = "e4558ffd1dc49399faf4ee5d85abed4386b4dcf5" +SRCREV = "a488ba114ec17ea1054b9057c26a046fc122b3b6" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_3.38.2.bb b/poky/meta/recipes-gnome/epiphany/epiphany_40.2.bb index 04f340f13..abd4ad057 100644 --- a/poky/meta/recipes-gnome/epiphany/epiphany_3.38.2.bb +++ b/poky/meta/recipes-gnome/epiphany/epiphany_40.2.bb @@ -6,20 +6,21 @@ BUGTRACKER = "https://gitlab.gnome.org/GNOME/epiphany" LICENSE = "GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" -DEPENDS = "libsoup-2.4 webkitgtk gtk+3 iso-codes avahi libnotify gcr \ +DEPENDS = "libsoup-2.4 webkitgtk gtk+3 iso-codes avahi libnotify gcr gnutls \ gsettings-desktop-schemas libxml2-native \ - glib-2.0 glib-2.0-native json-glib libdazzle libhandy libportal" + glib-2.0 glib-2.0-native json-glib libdazzle libhandy libportal \ + libarchive" GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gsettings features_check upstream-version-is-even gettext mime-xdg +inherit gnomebase gsettings features_check gettext mime-xdg REQUIRED_DISTRO_FEATURES = "x11 opengl" -SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \ +SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@oe.utils.trim_version("${PV}", 1)}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \ file://0002-help-meson.build-disable-the-use-of-yelp.patch \ file://migrator.patch \ file://distributor.patch \ " -SRC_URI[archive.sha256sum] = "8b05f2bcc1e80ecf4a10f6f01b3285087eb4cbdf5741dffb8c0355715ef5116d" +SRC_URI[archive.sha256sum] = "75119e22065657cf70ef2b603d4f73835573bd034f1e618c0f662478fd6c6835" # Developer mode enables debugging PACKAGECONFIG[developer-mode] = "-Ddeveloper_mode=true,-Ddeveloper_mode=false" diff --git a/poky/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch b/poky/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch index 118b5d182..a6c4f92c8 100644 --- a/poky/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch +++ b/poky/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch @@ -1,4 +1,4 @@ -From 3725c254f1d1d8204fa299e71c1e2bfd0ff6a634 Mon Sep 17 00:00:00 2001 +From 77c9f87dc2b3ad0854a678e234e22dfb31902b82 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Wed, 31 Jan 2018 15:50:38 +0200 Subject: [PATCH] help/meson.build: disable the use of yelp @@ -13,11 +13,11 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/help/meson.build b/help/meson.build -index 484860c..d9b2e80 100644 +index ff324dd..f5e421d 100644 --- a/help/meson.build +++ b/help/meson.build -@@ -32,7 +32,7 @@ help_media = [ - 'media/epiphany-private-3-36.png' +@@ -31,7 +31,7 @@ help_media = [ + 'media/org.gnome.Epiphany.svg' ] -gnome.yelp(meson.project_name(), diff --git a/poky/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch b/poky/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch new file mode 100644 index 000000000..81c4bdbbc --- /dev/null +++ b/poky/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch @@ -0,0 +1,37 @@ +From cb3708bad88e713e4ccf705cb8c14c5996cd9d06 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Fri, 23 Apr 2021 16:32:38 +0800 +Subject: [PATCH] gcr/meson.build: fix one parallel build failure + +ui/gcr-live-search.c includes gcr/gcr-marshal.h. Because missing +dependency, following error occurred intermittently during doing parallel +build: + + -o ui/libgcr-ui-3.so.1.0.0.p/gcr-live-search.c.o -c ../gcr-3.38.1/ui/gcr-live-search.c +../gcr-3.38.1/ui/gcr-live-search.c:32:10: fatal error: gcr/gcr-marshal.h: No such file or directory + 32 | #include "gcr/gcr-marshal.h" + | ^~~~~~~~~~~~~~~~~~~ +compilation terminated. + +Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/68/diffs] + +Signed-off-by: Changqing Li <changqing.li@windriver.com> +--- + gcr/meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gcr/meson.build b/gcr/meson.build +index 06c3a63..d9d4b8f 100644 +--- a/gcr/meson.build ++++ b/gcr/meson.build +@@ -181,6 +181,7 @@ gcr_base_dep = declare_dependency( + sources: [ + gcr_enums_gen[1], + gcr_oids[1], ++ gcr_marshal_gen[1], + ], + ) + +-- +2.17.1 + diff --git a/poky/meta/recipes-gnome/gcr/gcr_3.38.1.bb b/poky/meta/recipes-gnome/gcr/gcr_3.40.0.bb index 563087a36..14072ef58 100644 --- a/poky/meta/recipes-gnome/gcr/gcr_3.38.1.bb +++ b/poky/meta/recipes-gnome/gcr/gcr_3.40.0.bb @@ -17,7 +17,9 @@ GNOMEBASEBUILDCLASS = "meson" GTKDOC_MESON_OPTION = "gtk_doc" inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version-is-even vala gobject-introspection gettext mime mime-xdg -SRC_URI[archive.sha256sum] = "17fcaf9c4a93a65fb1c72b82643bb102c13344084687d5886ea66313868d9ec9" +SRC_URI += "file://0001-gcr-meson.build-fix-one-parallel-build-failure.patch" + +SRC_URI[archive.sha256sum] = "b9d3645a5fd953a54285cc64d4fc046736463dbd4dcc25caf5c7b59bed3027f5" PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)}" PACKAGECONFIG[gtk] = "-Dgtk=true,-Dgtk=false,gtk+3" diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch new file mode 100644 index 000000000..a8206a450 --- /dev/null +++ b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch @@ -0,0 +1,171 @@ +From ba73bb0f3d2023839bc3b681c49b7ec1192cceb4 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Sat, 8 May 2021 21:58:54 +0200 +Subject: [PATCH] Add use_prebuilt_tools option + +This allows using the gdk-pixbuf tools from the host to +build and install tests in a cross-compile scenarion. + +Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/merge_requests/119] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + +--- + gdk-pixbuf/meson.build | 11 +++++++++-- + meson.build | 6 +++--- + meson_options.txt | 4 ++++ + tests/meson.build | 16 ++++++++-------- + thumbnailer/meson.build | 24 ++++++++++++++++++------ + 5 files changed, 42 insertions(+), 19 deletions(-) + +diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build +index 8b0590b..7331491 100644 +--- a/gdk-pixbuf/meson.build ++++ b/gdk-pixbuf/meson.build +@@ -342,13 +342,20 @@ foreach bin: gdkpixbuf_bin + include_directories: [ root_inc, gdk_pixbuf_inc ], + c_args: common_cflags + gdk_pixbuf_cflags, + install: true) +- meson.override_find_program(bin_name, bin) ++ if not get_option('use_prebuilt_tools') ++ meson.override_find_program(bin_name, bin) ++ endif + + # Used in tests + set_variable(bin_name.underscorify(), bin) + endforeach + +-if not meson.is_cross_build() ++if get_option('use_prebuilt_tools') ++ gdk_pixbuf_query_loaders = find_program('gdk-pixbuf-query-loaders', required: true) ++ gdk_pixbuf_pixdata = find_program('gdk-pixbuf-pixdata', required: true) ++endif ++ ++if not meson.is_cross_build() or get_option('use_prebuilt_tools') + # The 'loaders.cache' used for testing, so we don't accidentally + # load the installed cache; we always build it by default + loaders_cache = custom_target('loaders.cache', +diff --git a/meson.build b/meson.build +index 7a1409b..0bc73eb 100644 +--- a/meson.build ++++ b/meson.build +@@ -403,16 +403,16 @@ subdir('gdk-pixbuf') + # i18n + subdir('po') + +-if not meson.is_cross_build() ++if not meson.is_cross_build() or get_option('use_prebuilt_tools') + subdir('tests') +- subdir('thumbnailer') + endif ++subdir('thumbnailer') + + # Documentation + build_docs = get_option('gtk_doc') or get_option('docs') + subdir('docs') + +-if not meson.is_cross_build() ++if not meson.is_cross_build() or get_option('use_prebuilt_tools') + meson.add_install_script('build-aux/post-install.py', + gdk_pixbuf_bindir, + gdk_pixbuf_libdir, +diff --git a/meson_options.txt b/meson_options.txt +index 0ee6718..cc29855 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -49,4 +49,8 @@ option('gio_sniffing', + description: 'Perform file type detection using GIO (Unused on MacOS and Windows)', + type: 'boolean', + value: true) ++option('use_prebuilt_tools', ++ description: 'Use prebuilt gdk-pixbuf tools from the host for cross-compilation', ++ type: 'boolean', ++ value: false) + +diff --git a/tests/meson.build b/tests/meson.build +index 7c6cb11..1029e6a 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -5,6 +5,12 @@ + # $PATH. Ideally we should use gnome.compile_resources() and let Meson deal with + # this problem: See https://github.com/mesonbuild/meson/issues/8266. + if enabled_loaders.contains('png') and host_system != 'windows' ++ ++ resources_deps = [loaders_cache,] ++ if not get_option('use_prebuilt_tools') ++ resources_deps += [gdk_pixbuf_pixdata,] ++ endif ++ + # Resources; we cannot use gnome.compile_resources() here, because we need to + # override the environment in order to use the utilities we just built instead + # of the system ones +@@ -21,10 +27,7 @@ if enabled_loaders.contains('png') and host_system != 'windows' + '@INPUT@', + '@OUTPUT@', + ], +- depends: [ +- gdk_pixbuf_pixdata, +- loaders_cache, +- ], ++ depends: resources_deps, + ) + + resources_h = custom_target('resources.h', +@@ -40,10 +43,7 @@ if enabled_loaders.contains('png') and host_system != 'windows' + '@INPUT@', + '@OUTPUT@', + ], +- depends: [ +- gdk_pixbuf_pixdata, +- loaders_cache, +- ], ++ depends: resources_deps, + ) + no_resources = false + else +diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build +index b6a206d..9336c21 100644 +--- a/thumbnailer/meson.build ++++ b/thumbnailer/meson.build +@@ -6,13 +6,29 @@ bin = executable('gdk-pixbuf-thumbnailer', + ], + dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ], + install: true) +-meson.override_find_program('gdk-pixbuf-thumbnailer', bin) ++if not get_option('use_prebuilt_tools') ++ meson.override_find_program('gdk-pixbuf-thumbnailer', bin) ++endif + + gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types', + 'gdk-pixbuf-print-mime-types.c', ++ install: true, + c_args: common_cflags, + dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ]) + ++if get_option('use_prebuilt_tools') ++ gdk_pixbuf_print_mime_types = find_program('gdk-pixbuf-print-mime-types', required: true) ++endif ++ ++thumbnailer_deps = [loaders_cache,] ++ ++if not get_option('use_prebuilt_tools') ++ thumbnailer_deps += [ ++ gdk_pixbuf_print_mime_types, ++ gdk_pixbuf_pixdata, ++ ] ++endif ++ + custom_target('thumbnailer', + input: 'gdk-pixbuf-thumbnailer.thumbnailer.in', + output: 'gdk-pixbuf-thumbnailer.thumbnailer', +@@ -25,10 +41,6 @@ custom_target('thumbnailer', + '@INPUT@', + '@OUTPUT@', + ], +- depends: [ +- gdk_pixbuf_print_mime_types, +- gdk_pixbuf_pixdata, +- loaders_cache, +- ], ++ depends: thumbnailer_deps, + install: true, + install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers')) diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch deleted file mode 100644 index e46140491..000000000 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch +++ /dev/null @@ -1,38 +0,0 @@ -From be8a47e0c21e5577d4f5669d339dfec6299b25be Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 14 Feb 2019 18:06:25 +0100 -Subject: [PATCH] Generate loaders.cache using a native tool when - cross-compiling - -Otherwise meson would attempt to run a target binary. - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - gdk-pixbuf/meson.build | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build -index 5cddbec..78c8bd3 100644 ---- a/gdk-pixbuf/meson.build -+++ b/gdk-pixbuf/meson.build -@@ -324,8 +324,16 @@ if not meson.is_cross_build() - build_by_default: true) - loaders_dep = declare_dependency(sources: [ loaders_cache ]) - else -- loaders_cache = [] -- loaders_dep = declare_dependency() -+ loaders_cache = custom_target('loaders.cache', -+ output: 'loaders.cache', -+ capture: true, -+ command: [ -+ 'gdk-pixbuf-query-loaders', -+ dynamic_loaders, -+ ], -+ depends: dynamic_loaders_dep, -+ build_by_default: true) -+ loaders_dep = declare_dependency(sources: [ loaders_cache ]) - endif - - pkgconfig = import('pkgconfig') diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch deleted file mode 100644 index 110b32a49..000000000 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 8c7ced988def52654946458a3779e383b27f14f7 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 14 Feb 2019 17:56:10 +0100 -Subject: [PATCH] Work-around thumbnailer cross-compile failure - -Install gdk-pixbuf-print-mime-types that's needed for thumbnail -metadata generation. - -The upstream issue is https://bugzilla.gnome.org/show_bug.cgi?id=779057 - -Upstream-Status: Inappropriate [workaround] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - thumbnailer/meson.build | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build -index e801144..aaafec8 100644 ---- a/thumbnailer/meson.build -+++ b/thumbnailer/meson.build -@@ -10,6 +10,7 @@ executable('gdk-pixbuf-thumbnailer', - gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types', - 'gdk-pixbuf-print-mime-types.c', - c_args: common_cflags, -+ install: true, - dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ]) - - custom_target('thumbnailer', diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch deleted file mode 100644 index a9c7600eb..000000000 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 2d1b65bd1272ad63b7fbd4babd9a8e8c296d15b5 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 22 Feb 2019 13:22:06 +0100 -Subject: [PATCH] (target only) Work-around thumbnailer and pixdata - cross-compile failure - -Use native gdk-pixbuf-print-mime-types and gdk-pixbuf-pixdata -when generating the thumbnail metadata and resources. - -This works but the mime types will come from native -loader.cache (which will only contain in-tree loaders), not from the -target loader.cache. - -The upstream issue is https://bugzilla.gnome.org/show_bug.cgi?id=779057 - -Upstream-Status: Inappropriate [workaround] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - build-aux/gen-thumbnailer.py | 2 -- - tests/meson.build | 11 +++++++++-- - thumbnailer/meson.build | 5 +---- - 3 files changed, 10 insertions(+), 8 deletions(-) - -diff --git a/build-aux/gen-thumbnailer.py b/build-aux/gen-thumbnailer.py -index 05ac821..c5b99ab 100644 ---- a/build-aux/gen-thumbnailer.py -+++ b/build-aux/gen-thumbnailer.py -@@ -20,8 +20,6 @@ argparser.add_argument('output', help='Output file') - args = argparser.parse_args() - - newenv = os.environ.copy() --newenv['GDK_PIXBUF_PIXDATA'] = args.pixdata --newenv['GDK_PIXBUF_MODULE_FILE'] = args.loaders - # 'nt': NT-based Windows, see https://docs.python.org/3/library/os.html - if os.name == 'nt': - gdk_pixbuf_dll_buildpath = os.path.dirname(args.pixdata) -diff --git a/tests/meson.build b/tests/meson.build -index 8ed7cc1..e011b77 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -1,12 +1,19 @@ - # Resources; we cannot use gnome.compile_resources() here, because we need to - # override the environment in order to use the utilities we just built instead - # of the system ones -+ -+if not meson.is_cross_build() -+pixdata_binary = gdk_pixbuf_pixdata.full_path() -+else -+pixdata_binary = 'gdk-pixbuf-pixdata' -+endif -+ - resources_c = custom_target('resources.c', - input: 'resources.gresource.xml', - output: 'resources.c', - command: [ - gen_resources, -- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()), -+ '--pixdata=@0@'.format(pixdata_binary), - '--loaders=@0@'.format(loaders_cache.full_path()), - '--sourcedir=@0@'.format(meson.current_source_dir()), - '--source', -@@ -24,7 +31,7 @@ resources_h = custom_target('resources.h', - output: 'resources.h', - command: [ - gen_resources, -- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()), -+ '--pixdata=@0@'.format(pixdata_binary), - '--loaders=@0@'.format(loaders_cache.full_path()), - '--sourcedir=@0@'.format(meson.current_source_dir()), - '--header', -diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build -index aaafec8..71bd61b 100644 ---- a/thumbnailer/meson.build -+++ b/thumbnailer/meson.build -@@ -18,9 +18,7 @@ custom_target('thumbnailer', - output: 'gdk-pixbuf-thumbnailer.thumbnailer', - command: [ - gen_thumbnailer, -- '--printer=@0@'.format(gdk_pixbuf_print_mime_types.full_path()), -- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()), -- '--loaders=@0@'.format(loaders_cache.full_path()), -+ '--printer=gdk-pixbuf-print-mime-types', - '--bindir=@0@'.format(gdk_pixbuf_bindir), - '@INPUT@', - '@OUTPUT@', -@@ -28,7 +26,6 @@ custom_target('thumbnailer', - depends: [ - gdk_pixbuf_print_mime_types, - gdk_pixbuf_pixdata, -- loaders_cache, - ], - install: true, - install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers')) diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0004-Do-not-run-tests-when-building.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0004-Do-not-run-tests-when-building.patch deleted file mode 100644 index 96c546f27..000000000 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0004-Do-not-run-tests-when-building.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 3c4a6c147ae8a0962ba9194373d8a41d14eed44f Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 22 Feb 2019 13:23:55 +0100 -Subject: [PATCH] Do not run tests when building - -Upstream-Status: Inappropriate [cross-compile specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - tests/meson.build | 17 ----------------- - 1 file changed, 17 deletions(-) - -diff --git a/tests/meson.build b/tests/meson.build -index 4fa3fbc..6ef7884 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -138,23 +138,6 @@ foreach t: installed_tests - install_dir: installed_test_bindir, - ) - -- # Two particularly slow tests -- if test_suites.contains('slow') -- timeout = 300 -- else -- timeout = 30 -- endif -- -- test(test_name, test_bin, -- suite: test_suites, -- args: [ '-k', '--tap' ], -- env: [ -- 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), -- 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), -- 'GDK_PIXBUF_MODULE_FILE=@0@'.format(loaders_cache.full_path()), -- ], -- timeout: timeout, -- ) - endforeach - - executable('pixbuf-read', diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch deleted file mode 100644 index 0fe13a387..000000000 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 1a532e090c558a830de9503f56e23414e880bb95 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Wed, 5 Jun 2019 14:17:55 +0200 -Subject: [PATCH] Build thumbnailer and tests also in cross builds. - -Upstream-Status: Inappropriate [relies on oe-core specific hacks] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - meson.build | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/meson.build b/meson.build -index d104cea..7acb88a 100644 ---- a/meson.build -+++ b/meson.build -@@ -397,10 +397,8 @@ endif - # i18n - subdir('po') - --if not meson.is_cross_build() -- subdir('tests') -- subdir('thumbnailer') --endif -+subdir('tests') -+subdir('thumbnailer') - - # Documentation - subdir('docs') diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/CVE-2020-29385.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/CVE-2020-29385.patch deleted file mode 100644 index 3fef2bc1e..000000000 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/CVE-2020-29385.patch +++ /dev/null @@ -1,55 +0,0 @@ -From bdd3acbd48a575d418ba6bf1b32d7bda2fae1c81 Mon Sep 17 00:00:00 2001 -From: Robert Ancell <robert.ancell@canonical.com> -Date: Mon, 30 Nov 2020 12:26:12 +1300 -Subject: [PATCH 02/13] gif: Fix LZW decoder accepting invalid LZW code. - -The code value after a reset wasn't being validated, which means we would -accept invalid codes. This could cause an infinite loop in the decoder. - -Fixes CVE-2020-29385 - -Fixes https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/164 - -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/commit/bdd3acbd48a575d418ba6bf1b32d7bda2fae1c81] -CVE: CVE-2020-29385 -Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com> - ---- - gdk-pixbuf/lzw.c | 13 +++++++------ - 1 files changed, 7 insertions(+), 6 deletions(-) - create mode 100644 tests/test-images/fail/hang_114.gif - -diff --git a/gdk-pixbuf/lzw.c b/gdk-pixbuf/lzw.c -index 9e052a6f7..105daf2b1 100644 ---- a/gdk-pixbuf/lzw.c -+++ b/gdk-pixbuf/lzw.c -@@ -195,19 +195,20 @@ lzw_decoder_feed (LZWDecoder *self, - if (self->last_code != self->clear_code && self->code_table_size < MAX_CODES) { - if (self->code < self->code_table_size) - add_code (self, self->code); -- else if (self->code == self->code_table_size) -+ else - add_code (self, self->last_code); -- else { -- /* Invalid code received - just stop here */ -- self->last_code = self->eoi_code; -- return output_length; -- } - - /* When table is full increase code size */ - if (self->code_table_size == (1 << self->code_size) && self->code_size < LZW_CODE_MAX) - self->code_size++; - } - -+ /* Invalid code received - just stop here */ -+ if (self->code >= self->code_table_size) { -+ self->last_code = self->eoi_code; -+ return output_length; -+ } -+ - /* Convert codeword into indexes */ - n_written += write_indexes (self, output + n_written, output_length - n_written); - } --- -2.25.1 - diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/missing-test-data.patch b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/missing-test-data.patch deleted file mode 100644 index 6c758fd61..000000000 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/missing-test-data.patch +++ /dev/null @@ -1,30 +0,0 @@ -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From d8d231c01ef2e59856da8a5c26ace955e5f29370 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@intel.com> -Date: Mon, 25 Nov 2019 17:05:46 +0000 -Subject: [PATCH] tests: install circular-table.gif - -This test data was added for the pixbuf-gif-circular-table test (added October -2018 in 0b9d004) but because the file was never actually installed the installed -test suite never passes. ---- - tests/meson.build | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tests/meson.build b/tests/meson.build -index 5116fc2b9..80ed3e8b2 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -97,6 +97,7 @@ test_data = [ - 'bug775693.pixdata', - 'bug775229.pixdata', - 'aero.gif', -+ 'circular-table.gif' - ] - - installed_test_bindir = join_paths(gdk_pixbuf_libexecdir, 'installed-tests', meson.project_name()) --- -2.20.1 - diff --git a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb index 226e1c7b8..50d58ef80 100644 --- a/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb +++ b/poky/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb @@ -20,43 +20,37 @@ MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}" SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \ file://run-ptest \ file://fatal-loader.patch \ - file://0001-Work-around-thumbnailer-cross-compile-failure.patch \ - file://0001-Fix-a-couple-of-decisions-around-cross-compilation.patch \ - file://0004-Do-not-run-tests-when-building.patch \ - file://0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch \ - file://missing-test-data.patch \ - file://CVE-2020-29385.patch \ + file://0001-Add-use_prebuilt_tools-option.patch \ " -SRC_URI_append_class-target = " \ - file://0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch \ - " -SRC_URI_append_class-nativesdk = " \ - file://0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch \ - " +SRC_URI[sha256sum] = "c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f" -SRC_URI[md5sum] = "05eb1ebc258ba905f1c8644ef49de064" -SRC_URI[sha256sum] = "1582595099537ca8ff3b99c6804350b4c058bb8ad67411bbaae024ee7cead4e6" +inherit meson pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection gi-docgen lib_package -inherit meson pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection gtk-doc lib_package - -GIR_MESON_OPTION = 'gir' +GIR_MESON_OPTION = 'introspection' +GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_DISABLE_FLAG = "disabled" LIBV = "2.10.0" GDK_PIXBUF_LOADERS ?= "png jpeg" PACKAGECONFIG = "${GDK_PIXBUF_LOADERS} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \ ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}" PACKAGECONFIG_class-native = "${GDK_PIXBUF_LOADERS}" PACKAGECONFIG[png] = "-Dpng=true,-Dpng=false,libpng" PACKAGECONFIG[jpeg] = "-Djpeg=true,-Djpeg=false,jpeg" PACKAGECONFIG[tiff] = "-Dtiff=true,-Dtiff=false,tiff" -PACKAGECONFIG[jpeg2000] = "-Djasper=true,-Djasper=false,jasper" PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false" -PACKAGECONFIG[x11] = "-Dx11=true,-Dx11=false,virtual/libx11" + +EXTRA_OEMESON_class-target = " \ + -Duse_prebuilt_tools=true \ +" + +EXTRA_OEMESON_class-nativesdk = " \ + -Duse_prebuilt_tools=true \ +" PACKAGES =+ "${PN}-xlib" diff --git a/poky/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb b/poky/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb new file mode 100644 index 000000000..b6721dc4e --- /dev/null +++ b/poky/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb @@ -0,0 +1,22 @@ +SUMMARY = "Documentation tool for GObject-based libraries" +DESCRIPTION = "GI-DocGen is a document generator for GObject-based libraries. GObject is \ +the base type system of the GNOME project. GI-Docgen reuses the \ +introspection data generated by GObject-based libraries to generate the API \ +reference of these libraries, as well as other ancillary documentation." +HOMEPAGE = "https://gnome.pages.gitlab.gnome.org/gi-docgen/" + +LICENSE = "GPLv3+ & Apache-2.0" +LIC_FILES_CHKSUM = "file://gi-docgen.py;beginline=1;endline=5;md5=2dc0f1f01202478cfe813c0e7f80b326" + +SRC_URI = "git://gitlab.gnome.org/GNOME/gi-docgen.git;protocol=https;branch=main" + +PV = "2021.6" +SRCREV = "cb76996ba9ef7a1634ab9bde30c77c3bbb47c8db" + +S = "${WORKDIR}/git" + +inherit setuptools3 + +RDEPENDS_${PN} += "python3-asyncio python3-core python3-jinja2 python3-json python3-markdown python3-markupsafe python3-pygments python3-toml python3-typogrify python3-xml" + +BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.3.bb b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.3.bb index 6cde6fffa..61927c0dd 100644 --- a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.3.bb +++ b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.3.bb @@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \ file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \ file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02" -inherit allarch autotools pkgconfig gettext gtk-icon-cache upstream-version-is-even +inherit allarch autotools pkgconfig gettext gtk-icon-cache MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}" SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \ diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb index a36a2b113..672fbd2b0 100644 --- a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb +++ b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \ file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \ file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02" -inherit allarch autotools pkgconfig gettext gtk-icon-cache upstream-version-is-even +inherit allarch autotools pkgconfig gettext gtk-icon-cache MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}" SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \ diff --git a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch index 185ebc154..9071245a8 100644 --- a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch +++ b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch @@ -1,4 +1,4 @@ -From 41c3ee549787333a073a3ce6303efef625c74dce Mon Sep 17 00:00:00 2001 +From 5c606356523431769dffb02fffd2fbca8fb20232 Mon Sep 17 00:00:00 2001 From: Sascha Silbe <x-yo17@se-silbe.de> Date: Fri, 8 Jun 2018 13:55:10 +0200 Subject: [PATCH] Relocate the repository directory for native builds diff --git a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-exclude-girepo_dep-if-introspection-data.patch b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-exclude-girepo_dep-if-introspection-data.patch deleted file mode 100644 index 8fba0124c..000000000 --- a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-exclude-girepo_dep-if-introspection-data.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ef5446af0ddad6a341b47957097ac40c6cb5e6d3 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Tue, 20 Oct 2020 22:40:14 +0200 -Subject: [PATCH] meson.build: exclude girepo_dep if introspection data is - disabled - -Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/248] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index 14af2b1..a3c27c3 100644 ---- a/meson.build -+++ b/meson.build -@@ -283,7 +283,7 @@ pkg.generate( - # FIXME: meson.override_dependency() and declare_dependency()'s variable arguments - # are new in Meson 0.54.0, older versions of Meson won't be able to use g-i as - # subproject anyway --if meson.version().version_compare('>=0.54.0') -+if meson.version().version_compare('>=0.54.0') and get_option('build_introspection_data') == true - girepo_dep = declare_dependency( - sources: typelibs, - dependencies: girepo_dep, diff --git a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.66.1.bb b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.68.0.bb index ebac8d3a4..4c986a574 100644 --- a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.66.1.bb +++ b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.68.0.bb @@ -15,10 +15,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c434e8128a68bedd59b80b2ac1eb1c4a \ SRC_URI = "${GNOME_MIRROR}/${BPN}/${@oe.utils.trim_version("${PV}", 2)}/${BPN}-${PV}.tar.xz \ file://0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch \ - file://0001-meson.build-exclude-girepo_dep-if-introspection-data.patch \ " -SRC_URI[sha256sum] = "dd44a55ee5f426ea22b6b89624708f9e8d53f5cc94e5485c15c87cb30e06161d" +SRC_URI[sha256sum] = "d229242481a201b84a0c66716de1752bca41db4133672cfcfb37c93eb6e54a27" SRC_URI_append_class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch" diff --git a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.38.0.bb b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_40.0.bb index 34681197d..89751a863 100644 --- a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.38.0.bb +++ b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_40.0.bb @@ -11,6 +11,6 @@ DEPENDS = "glib-2.0" GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gsettings gobject-introspection gettext upstream-version-is-even +inherit gnomebase gsettings gobject-introspection gettext -SRC_URI[archive.sha256sum] = "5704c8266004b296036671f223c705dc046aa694a1b1abb87c67e7d2747a8c67" +SRC_URI[archive.sha256sum] = "f1b83bf023c0261eacd0ed36066b76f4a520bbcb14bb69c402b7959257125685" diff --git a/poky/meta/recipes-gnome/gtk+/gtk+3_3.24.25.bb b/poky/meta/recipes-gnome/gtk+/gtk+3_3.24.29.bb index 8c5426f22..031fbb6d6 100644 --- a/poky/meta/recipes-gnome/gtk+/gtk+3_3.24.25.bb +++ b/poky/meta/recipes-gnome/gtk+/gtk+3_3.24.29.bb @@ -8,7 +8,7 @@ SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar file://0003-Add-disable-opengl-configure-option.patch \ file://link_fribidi.patch \ " -SRC_URI[sha256sum] = "87e26b111d3b8a85ff218980a56f3e814257b8dd11e5c4d9a2803b423b08297c" +SRC_URI[sha256sum] = "f57ec4ade8f15cab0c23a80dcaee85b876e70a8823d9105f067ce335a8268caa" S = "${WORKDIR}/gtk+-${PV}" diff --git a/poky/meta/recipes-gnome/libdazzle/libdazzle_3.38.0.bb b/poky/meta/recipes-gnome/libdazzle/libdazzle_3.40.0.bb index a2a1aed7b..ff9088a62 100644 --- a/poky/meta/recipes-gnome/libdazzle/libdazzle_3.38.0.bb +++ b/poky/meta/recipes-gnome/libdazzle/libdazzle_3.40.0.bb @@ -12,7 +12,7 @@ inherit gnomebase upstream-version-is-even vala features_check gobject-introspec DEPENDS = "glib-2.0-native glib-2.0 gtk+3" -SRC_URI[archive.sha256sum] = "e18af28217943bcec106585298a91ec3da48aa3ad62fd0992f23f0c70cd1678f" +SRC_URI[archive.sha256sum] = "dba99a7e65fa6662c012b306e5d0f99ff3b466a46059ea7aa0104aaf65ce4ba5" GIR_MESON_OPTION = 'with_introspection' diff --git a/poky/meta/recipes-gnome/libgudev/files/0001-gudevenumtypes-make-deterministic.patch b/poky/meta/recipes-gnome/libgudev/files/0001-gudevenumtypes-make-deterministic.patch new file mode 100644 index 000000000..aaec9cd20 --- /dev/null +++ b/poky/meta/recipes-gnome/libgudev/files/0001-gudevenumtypes-make-deterministic.patch @@ -0,0 +1,44 @@ +From 078c0db2bc3adf7c665190ee7a9263d7fd1ec618 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 29 Apr 2021 13:06:12 +0200 +Subject: [PATCH] gudevenumtypes: make deterministic + +@filename@ writes the full path to the generated file, +which can vary in CI systems and make outputs non-reproducible. + +Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/libgudev/-/merge_requests/15] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + gudev/gudevenumtypes.c.template | 2 +- + gudev/gudevenumtypes.h.template | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gudev/gudevenumtypes.c.template b/gudev/gudevenumtypes.c.template +index fc30b39..4918f7e 100644 +--- a/gudev/gudevenumtypes.c.template ++++ b/gudev/gudevenumtypes.c.template +@@ -4,7 +4,7 @@ + /*** END file-header ***/ + + /*** BEGIN file-production ***/ +-/* enumerations from "@filename@" */ ++/* enumerations from "@basename@" */ + /*** END file-production ***/ + + /*** BEGIN value-header ***/ +diff --git a/gudev/gudevenumtypes.h.template b/gudev/gudevenumtypes.h.template +index d0ab339..79bf7c4 100644 +--- a/gudev/gudevenumtypes.h.template ++++ b/gudev/gudevenumtypes.h.template +@@ -9,7 +9,7 @@ G_BEGIN_DECLS + + /*** BEGIN file-production ***/ + +-/* enumerations from "@filename@" */ ++/* enumerations from "@basename@" */ + /*** END file-production ***/ + + /*** BEGIN value-header ***/ +-- +2.30.2 + diff --git a/poky/meta/recipes-gnome/libgudev/libgudev_234.bb b/poky/meta/recipes-gnome/libgudev/libgudev_236.bb index 9cea36df5..daa578ddb 100644 --- a/poky/meta/recipes-gnome/libgudev/libgudev_234.bb +++ b/poky/meta/recipes-gnome/libgudev/libgudev_236.bb @@ -5,18 +5,24 @@ other programming languages, such as Javascript, because of GObject \ introspection support." HOMEPAGE = "https://wiki.gnome.org/Projects/libgudev" BUGTRACKER = "https://gitlab.gnome.org/GNOME/libgudev/issues" -SRC_URI[archive.sha256sum] = "1baeacacf0db42fa073ad5183d1decce9317857416a2b0f82ce3370d711a2e37" +SRC_URI[archive.sha256sum] = "e50369d06d594bae615eb7aeb787de304ebaad07a26d1043cef8e9c7ab7c9524" -DEPENDS = "glib-2.0 udev" +SRC_URI_append = " file://0001-gudevenumtypes-make-deterministic.patch" -EXTRA_OECONF = "--disable-umockdev" +DEPENDS = "glib-2.0 udev" RCONFLICTS_${PN} = "systemd (<= 220)" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" +GNOMEBASEBUILDCLASS = "meson" inherit gnomebase gobject-introspection gtk-doc +GIR_MESON_ENABLE_FLAG = 'enabled' +GIR_MESON_DISABLE_FLAG = 'disabled' + +GTKDOC_MESON_OPTION = "gtk_doc" + UPSTREAM_CHECK_URI = "http://ftp.gnome.org/pub/GNOME/sources/libgudev/" UPSTREAM_CHECK_REGEX = "(?P<pver>(\d+))" diff --git a/poky/meta/recipes-gnome/libhandy/libhandy_1.2.0.bb b/poky/meta/recipes-gnome/libhandy/libhandy_1.2.2.bb index 1e37feb20..9652948a3 100644 --- a/poky/meta/recipes-gnome/libhandy/libhandy_1.2.0.bb +++ b/poky/meta/recipes-gnome/libhandy/libhandy_1.2.2.bb @@ -10,7 +10,7 @@ LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https" -SRCREV = "7b38a860ffcec6c2ad28153358cc3d037ddb618f" +SRCREV = "09f36006b26f41a2bb383b0c853e954c5792cfe1" S = "${WORKDIR}/git" GIR_MESON_ENABLE_FLAG = 'enabled' diff --git a/poky/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb b/poky/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb index 1ff4b2e15..d2be715ce 100644 --- a/poky/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb +++ b/poky/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb @@ -9,15 +9,18 @@ SECTION = "libs" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" -DEPENDS = "dbus gtk+3 glib-2.0" +DEPENDS = "dbus glib-2.0 gdk-pixbuf" + +PACKAGECONFIG ?= "" +PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,gtk+3" GNOMEBASEBUILDCLASS = "meson" GTKDOC_MESON_OPTION = "gtk_doc" GIR_MESON_ENABLE_FLAG = "enabled" GIR_MESON_DISABLE_FLAG = "disabled" inherit gnomebase gtk-doc features_check gobject-introspection -# depends on gtk+3 -ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" +# depends on gtk+3 if tests are enabled +ANY_OF_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG', 'tests', '${GTK3DISTROFEATURES}', '', d)}" SRC_URI[archive.md5sum] = "ccd9c53364174cc8d13e18a1988faa76" SRC_URI[archive.sha256sum] = "66c0517ed16df7af258e83208faaf5069727dfd66995c4bbc51c16954d674761" @@ -30,3 +33,6 @@ PROVIDES += "libnotify3" RPROVIDES_${PN} += "libnotify3" RCONFLICTS_${PN} += "libnotify3" RREPLACES_${PN} += "libnotify3" + +# -7381 is specific to the NodeJS bindings +CVE_CHECK_WHITELIST += "CVE-2013-7381" diff --git a/poky/meta/recipes-gnome/libportal/libportal_0.3.bb b/poky/meta/recipes-gnome/libportal/libportal_0.4.bb index bc4ff3784..03e681f58 100644 --- a/poky/meta/recipes-gnome/libportal/libportal_0.3.bb +++ b/poky/meta/recipes-gnome/libportal/libportal_0.4.bb @@ -7,7 +7,7 @@ LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2" SRC_URI = "git://github.com/flatpak/${BPN}.git;protocol=https" -SRCREV = "a609e06d0c4adc5c510cf9ac7b060db3d368e78f" +SRCREV = "f68764e288ede516d902b131cc4fadded3804059" S = "${WORKDIR}/git" GTKDOC_MESON_OPTION = 'gtk_doc' diff --git a/poky/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb b/poky/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb index acdbc1f1b..59de80a69 100644 --- a/poky/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb +++ b/poky/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb @@ -25,6 +25,9 @@ SRC_URI += "file://gtk-option.patch \ SRC_URI[archive.sha256sum] = "f7628905f1cada84e87e2b14883ed57d8094dca3281d5bcb24ece4279e9a92ba" +# Issue only on windows +CVE_CHECK_WHITELIST += "CVE-2018-1000041" + CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" PACKAGECONFIG ??= "gdkpixbuf" diff --git a/poky/meta/recipes-graphics/builder/builder_0.1.bb b/poky/meta/recipes-graphics/builder/builder_0.1.bb index 0a64c31ab..9d5cd8cde 100644 --- a/poky/meta/recipes-graphics/builder/builder_0.1.bb +++ b/poky/meta/recipes-graphics/builder/builder_0.1.bb @@ -29,3 +29,5 @@ do_install () { chown builder.builder ${D}${sysconfdir}/mini_x/session.d/builder_session.sh } +# -4178 is an unrelated 'builder' +CVE_CHECK_WHITELIST = "CVE-2008-4178" diff --git a/poky/meta/recipes-graphics/cairo/cairo/CVE-2020-35492.patch b/poky/meta/recipes-graphics/cairo/cairo/CVE-2020-35492.patch new file mode 100644 index 000000000..fb6ce5cfd --- /dev/null +++ b/poky/meta/recipes-graphics/cairo/cairo/CVE-2020-35492.patch @@ -0,0 +1,60 @@ +Fix stack buffer overflow. + +CVE: CVE-2020-35492 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 03a820b173ed1fdef6ff14b4468f5dbc02ff59be Mon Sep 17 00:00:00 2001 +From: Heiko Lewin <heiko.lewin@worldiety.de> +Date: Tue, 15 Dec 2020 16:48:19 +0100 +Subject: [PATCH] Fix mask usage in image-compositor + +--- + src/cairo-image-compositor.c | 8 ++-- + test/Makefile.sources | 1 + + test/bug-image-compositor.c | 39 ++++++++++++++++++++ + test/reference/bug-image-compositor.ref.png | Bin 0 -> 185 bytes + 4 files changed, 44 insertions(+), 4 deletions(-) + create mode 100644 test/bug-image-compositor.c + create mode 100644 test/reference/bug-image-compositor.ref.png + +diff --git a/src/cairo-image-compositor.c b/src/cairo-image-compositor.c +index 79ad69f68..4f8aaed99 100644 +--- a/src/cairo-image-compositor.c ++++ b/src/cairo-image-compositor.c +@@ -2601,14 +2601,14 @@ _inplace_src_spans (void *abstract_renderer, int y, int h, + unsigned num_spans) + { + cairo_image_span_renderer_t *r = abstract_renderer; +- uint8_t *m; ++ uint8_t *m, *base = (uint8_t*)pixman_image_get_data(r->mask); + int x0; + + if (num_spans == 0) + return CAIRO_STATUS_SUCCESS; + + x0 = spans[0].x; +- m = r->_buf; ++ m = base; + do { + int len = spans[1].x - spans[0].x; + if (len >= r->u.composite.run_length && spans[0].coverage == 0xff) { +@@ -2655,7 +2655,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h, + spans[0].x, y, + spans[1].x - spans[0].x, h); + +- m = r->_buf; ++ m = base; + x0 = spans[1].x; + } else if (spans[0].coverage == 0x0) { + if (spans[0].x != x0) { +@@ -2684,7 +2684,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h, + #endif + } + +- m = r->_buf; ++ m = base; + x0 = spans[1].x; + } else { + *m++ = spans[0].coverage; +-- diff --git a/poky/meta/recipes-graphics/cairo/cairo_1.16.0.bb b/poky/meta/recipes-graphics/cairo/cairo_1.16.0.bb index 68f993d7c..9d9fbfbe0 100644 --- a/poky/meta/recipes-graphics/cairo/cairo_1.16.0.bb +++ b/poky/meta/recipes-graphics/cairo/cairo_1.16.0.bb @@ -27,6 +27,7 @@ SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \ file://CVE-2018-19876.patch \ file://CVE-2019-6461.patch \ file://CVE-2019-6462.patch \ + file://CVE-2020-35492.patch \ " SRC_URI[md5sum] = "f19e0353828269c22bd72e271243a552" diff --git a/poky/meta/recipes-graphics/clutter/clutter-1.0.inc b/poky/meta/recipes-graphics/clutter/clutter-1.0.inc deleted file mode 100644 index 80472178b..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-1.0.inc +++ /dev/null @@ -1,49 +0,0 @@ -SUMMARY = "Graphics library for creating hardware-accelerated user interfaces" -DESCRIPTION = "Clutter is an Open GL based interactive canvas library, \ -designed for creating fast, mainly 2D single window applications such as media \ -box UIs, presentations, kiosk style applications and so on." -HOMEPAGE = "http://www.clutter-project.org/" -LICENSE = "LGPLv2.1+" - -inherit clutter ptest-gnome features_check upstream-version-is-even gobject-introspection -# depends on cogl-1.0 which needs opengl -REQUIRED_DISTRO_FEATURES ?= "opengl" - -DEPENDS = "pango glib-2.0 json-glib atk udev cogl-1.0" -PACKAGE_BEFORE_PN += "${PN}-examples" -AUTOTOOLS_AUXDIR = "${S}/build-aux" - -EDEPENDS_X11 = "virtual/libx11 libxi libxfixes" -EDEPENDS_GLX = "virtual/libgl" -EDEPENDS_EGL = "virtual/egl" -EDEPENDS_WAYLAND = "wayland libxkbcommon gdk-pixbuf" - -EDEPENDS_EVDEV = "libxkbcommon" -ERDEPENDS_EVDEV = "xkeyboard-config" - -# Disable pretty much everything, override in platform specific set up -EXTRA_OECONF += "--disable-quartz-backend \ - --disable-win32-backend \ - --disable-cex100-backend \ - --disable-tslib-input \ - " - -PACKAGECONFIG[gdk] = "--enable-gdk-backend,--disable-gdk-backend,gtk+3" -PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,${EDEPENDS_X11}" -PACKAGECONFIG[glx] = ",,${EDEPENDS_X11} ${EDEPENDS_GLX}" -PACKAGECONFIG[egl] = "--enable-egl-backend,--disable-egl-backend,${EDEPENDS_EGL}" -PACKAGECONFIG[evdev] = "--enable-evdev-input,--disable-evdev-input,${EDEPENDS_EVDEV},${ERDEPENDS_EVDEV}" -PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,${EDEPENDS_WAYLAND}" -PACKAGECONFIG[wayland-compositor] = "--enable-wayland-compositor,--disable-wayland-compositor,wayland" - -# Default configuration, distros might want to override -PACKAGECONFIG ??= "egl gdk \ - ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11', '', d)}" - -FILES_${PN}-examples = "${libdir}/clutter/examples" - -do_configure_prepend() { - # see https://bugzilla.gnome.org/show_bug.cgi?id=661128 for this - touch -t 200001010000 ${S}/po/clutter-1.0.pot -} diff --git a/poky/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch b/poky/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch deleted file mode 100644 index 7b3c1980b..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 3a0404dfbc65c6a864e01d1200a48074e19d5def Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 2 Sep 2016 14:28:38 +0300 -Subject: [PATCH] Remove clutter.types as it is build configuration-specific. - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - doc/reference/clutter.types | 122 -------------------------------------------- - 1 file changed, 122 deletions(-) - delete mode 100644 doc/reference/clutter.types - -diff --git a/doc/reference/clutter.types b/doc/reference/clutter.types -deleted file mode 100644 -index 0037acc..0000000 ---- a/doc/reference/clutter.types -+++ /dev/null -@@ -1,122 +0,0 @@ --cally_actor_get_type --cally_clone_get_type --cally_group_get_type --cally_rectangle_get_type --cally_root_get_type --cally_stage_get_type --cally_text_get_type --cally_texture_get_type --cally_util_get_type --clutter_action_get_type --clutter_actor_box_get_type --clutter_actor_get_type --clutter_actor_meta_get_type --clutter_align_constraint_get_type --clutter_alpha_get_type --clutter_animatable_get_type --clutter_animation_get_type --clutter_animator_get_type --clutter_animator_key_get_type --clutter_backend_get_type --clutter_behaviour_depth_get_type --clutter_behaviour_ellipse_get_type --clutter_behaviour_get_type --clutter_behaviour_opacity_get_type --clutter_behaviour_path_get_type --clutter_behaviour_rotate_get_type --clutter_behaviour_scale_get_type --clutter_bin_layout_get_type --clutter_bind_constraint_get_type --clutter_binding_pool_get_type --clutter_blur_effect_get_type --clutter_box_get_type --clutter_box_layout_get_type --clutter_brightness_contrast_effect_get_type --clutter_cairo_texture_get_type --clutter_canvas_get_type --clutter_child_meta_get_type --clutter_click_action_get_type --clutter_clip_node_get_type --clutter_clone_get_type --clutter_color_get_type --clutter_color_node_get_type --clutter_colorize_effect_get_type --clutter_constraint_get_type --clutter_container_get_type --clutter_content_get_type --clutter_deform_effect_get_type --clutter_desaturate_effect_get_type --clutter_device_manager_get_type --clutter_drag_action_get_type --clutter_drop_action_get_type --clutter_effect_get_type --clutter_event_get_type --clutter_event_sequence_get_type --clutter_fixed_layout_get_type --clutter_flow_layout_get_type --clutter_fog_get_type --clutter_geometry_get_type --clutter_gesture_action_get_type --clutter_glx_texture_pixmap_get_type --clutter_grid_layout_get_type --clutter_group_get_type --clutter_image_get_type --clutter_input_device_get_type --clutter_interval_get_type --clutter_keyframe_transition_get_type --clutter_knot_get_type --clutter_layout_manager_get_type --clutter_layout_meta_get_type --clutter_list_model_get_type --clutter_margin_get_type --clutter_media_get_type --clutter_model_get_type --clutter_model_iter_get_type --clutter_offscreen_effect_get_type --clutter_page_turn_effect_get_type --clutter_paint_node_get_type --clutter_paint_volume_get_type --clutter_pan_action_get_type --clutter_param_color_get_type --clutter_param_fixed_get_type --clutter_param_units_get_type --clutter_path_constraint_get_type --clutter_path_get_type --clutter_path_node_get_type --clutter_perspective_get_type --clutter_pipeline_node_get_type --clutter_point_get_type --clutter_property_transition_get_type --clutter_rect_get_type --clutter_rectangle_get_type --clutter_rotate_action_get_type --clutter_score_get_type --clutter_script_get_type --clutter_scriptable_get_type --clutter_scroll_actor_get_type --clutter_settings_get_type --clutter_shader_effect_get_type --clutter_shader_float_get_type --clutter_shader_get_type --clutter_shader_int_get_type --clutter_shader_matrix_get_type --clutter_size_get_type --clutter_snap_constraint_get_type --clutter_stage_get_type --clutter_stage_manager_get_type --clutter_state_get_type --clutter_state_key_get_type --clutter_swipe_action_get_type --clutter_table_layout_get_type --clutter_tap_action_get_type --clutter_text_buffer_get_type --clutter_text_get_type --clutter_text_node_get_type --clutter_texture_get_type --clutter_texture_node_get_type --clutter_timeline_get_type --clutter_transition_get_type --clutter_transition_group_get_type --clutter_units_get_type --clutter_vertex_get_type --clutter_zoom_action_get_type --- -2.9.3 - diff --git a/poky/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch b/poky/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch deleted file mode 100644 index ce9ab3a24..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch +++ /dev/null @@ -1,19 +0,0 @@ -Install the examples to $libdir/clutter/. - -Signed-off-by: Ross Burton <ross.burton@intel.com> -Upstream-Status: Inappropriate - -Index: clutter-1.26.2/examples/Makefile.am -=================================================================== ---- clutter-1.26.2.orig/examples/Makefile.am -+++ clutter-1.26.2/examples/Makefile.am -@@ -33,7 +33,8 @@ AM_CPPFLAGS = \ - -I$(top_srcdir)/clutter \ - -I$(top_builddir)/clutter - --noinst_PROGRAMS = $(all_examples) -+exampledir = $(pkglibdir)/examples -+example_PROGRAMS = $(all_examples) - - EXTRA_DIST = redhand.png - diff --git a/poky/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch b/poky/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch deleted file mode 100644 index fef82eaf9..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d6ceb5a44b28e0e50ede22b84984d8516897de4b Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Mon, 27 Apr 2015 20:12:33 +0300 -Subject: [PATCH] Run installed tests with tap output - -Configure output from installed-tests to be TAP compliant such that -gnome-desktop-testing-runner properly interprets the results. - -Upstream-Status: Pending - -Signed-off-by: Tim Orling <TicoTimo@gmail.com> - ---- - build-aux/autotools/glib-tap.mk | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/build-aux/autotools/glib-tap.mk b/build-aux/autotools/glib-tap.mk -index a4f0dad..51cfa31 100644 ---- a/build-aux/autotools/glib-tap.mk -+++ b/build-aux/autotools/glib-tap.mk -@@ -127,7 +127,8 @@ installed_test_meta_DATA = $(installed_testcases:=.test) - %.test: %$(EXEEXT) Makefile - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ - echo 'Type=session' >> $@.tmp; \ -- echo 'Exec=env G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 $(installed_testdir)/$<' >> $@.tmp; \ -+ echo 'Exec=env G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 $(installed_testdir)/$< --tap' >> $@.tmp; \ -+ echo 'Output=TAP' >> $@.tmp; \ - mv $@.tmp $@) - - CLEANFILES += $(installed_test_meta_DATA) diff --git a/poky/meta/recipes-graphics/clutter/clutter-1.0/run-ptest b/poky/meta/recipes-graphics/clutter/clutter-1.0/run-ptest deleted file mode 100644 index 98877e522..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-1.0/run-ptest +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -gnome-desktop-testing-runner clutter diff --git a/poky/meta/recipes-graphics/clutter/clutter-1.0_1.26.4.bb b/poky/meta/recipes-graphics/clutter/clutter-1.0_1.26.4.bb deleted file mode 100644 index ee549fbdd..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-1.0_1.26.4.bb +++ /dev/null @@ -1,10 +0,0 @@ -require clutter-1.0.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" - -SRC_URI[archive.md5sum] = "624dd776a5159de0267587b1df6b97b2" -SRC_URI[archive.sha256sum] = "8b48fac159843f556d0a6be3dbfc6b083fc6d9c58a20a49a6b4919ab4263c4e6" -SRC_URI += "file://install-examples.patch \ - file://run-installed-tests-with-tap-output.patch \ - file://0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch \ - file://run-ptest" diff --git a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc b/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc deleted file mode 100644 index 73315c97e..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "GStreamer integration library for Clutter" -DESCRIPTION = "Clutter-Gst is an integration library for using GStreamer with Clutter. \ -It provides a GStreamer sink to upload frames to GL and an actor that \ -implements the ClutterGstPlayer interface using playbin." -HOMEPAGE = "http://www.clutter-project.org/" -BUGTRACKER = "https://gitlab.gnome.org/GNOME/clutter-gst/-/issues" -LICENSE = "LGPLv2+" - -inherit clutter features_check upstream-version-is-even gobject-introspection -# depends on clutter-1.0 which depends on cogl-1.0 -REQUIRED_DISTRO_FEATURES ?= "opengl" - -export GST_PLUGIN_SCANNER_1_0="${S}/gst-plugin-scanner-dummy" - -SRC_URI += "file://0001-Install-example-binary-needed-for-core-image-clutter.patch" - -DEPENDS = "gstreamer1.0-plugins-base gstreamer1.0-plugins-bad clutter-1.0 libgudev" -RDEPENDS_${PN} += "gstreamer1.0-meta-base" -PACKAGES =+ "${PN}-examples" - -FILES_${PN} += "${libdir}/gstreamer-1.0/lib*.so" -FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la" -FILES_${PN}-examples = "${bindir}/video-player ${bindir}/video-sink" diff --git a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch b/poky/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch deleted file mode 100644 index 0b26b990d..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d77c711277bf075ce0545c19b322f040c49c778a Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 30 Apr 2015 12:19:13 +0300 -Subject: [PATCH] Install example binary needed for core-image-clutter - -Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> - -Upstream-Status: Inappropriate [configuration] - -Imported from clutter-gst-1.8 package, git://git.openembedded.org/openembedded, -commit ae28ee3f7a060b9e0d13154a84f2444a98490b5b, updated for clutter-gst 3.0 - -Signed-off-by: Tomas Frydrych <tomas@sleepfive.com> -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - examples/Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/examples/Makefile.am b/examples/Makefile.am -index bfbc1b5..09655e3 100644 ---- a/examples/Makefile.am -+++ b/examples/Makefile.am -@@ -1,6 +1,6 @@ - NULL = # - --noinst_PROGRAMS = camera-player video-player video-sink video-sink-navigation video-content -+bin_PROGRAMS = camera-player video-player video-sink video-sink-navigation video-content - - AM_CPPFLAGS = -I$(top_srcdir) \ - $(MAINTAINER_CFLAGS) \ --- -2.1.4 - diff --git a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb b/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb deleted file mode 100644 index 35382453c..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb +++ /dev/null @@ -1,7 +0,0 @@ -require clutter-gst-3.0.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ - file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4" - -SRC_URI[archive.md5sum] = "2bf9d7ca146c9d71e86c45cd00e9a28e" -SRC_URI[archive.sha256sum] = "fe69bd6c659d24ab30da3f091eb91cd1970026d431179b0724f13791e8ad9f9d" diff --git a/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc b/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc deleted file mode 100644 index 9a28b5219..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "Library for embedding a Clutter canvas in a GTK+ application" -DESCRIPTION = "Clutter-GTK is a library providing facilities to integrate Clutter into GTK+ \ -applications and vice versa. It provides a GTK+ widget, GtkClutterEmbed, for embedding the \ -a Clutter stage into any GtkContainer; and GtkClutterActor, a Clutter \ -actor for embedding any GtkWidget inside a Clutter stage." -HOMEPAGE = "http://www.clutter-project.org/" -BUGTRACKER = "https://gitlab.gnome.org/GNOME/clutter/-/issues" -LICENSE = "LGPLv2+" - -CLUTTERBASEBUILDCLASS = "meson" -inherit clutter features_check upstream-version-is-even gobject-introspection gtk-doc - -# depends on clutter-1.0 which depends on cogl-1.0 -REQUIRED_DISTRO_FEATURES ?= "opengl" -# depends on gtk+3 -ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" - -DEPENDS = "clutter-1.0 gtk+3" -PACKAGES =+ "${PN}-examples" - -GTKDOC_MESON_OPTION = "enable_docs" - -GIR_MESON_OPTION = 'enable_gi' diff --git a/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch b/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch deleted file mode 100644 index e21c6fd90..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 7233883c6bd4e80c0e91b29b5c76fe798023e9fe Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Mon, 11 Feb 2019 16:41:13 +0100 -Subject: [PATCH] Add a config variable for enabling/disabling introspection - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - clutter-gtk/meson.build | 2 +- - meson_options.txt | 4 ++++ - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/clutter-gtk/meson.build b/clutter-gtk/meson.build -index 5d6847d..5d934b6 100644 ---- a/clutter-gtk/meson.build -+++ b/clutter-gtk/meson.build -@@ -49,7 +49,7 @@ clutter_gtk_dep = declare_dependency(link_with: clutter_gtk, - dependencies: [ mathlib_dep, clutter_dep, gtk_dep ], - include_directories: include_directories('.')) - --if not meson.is_cross_build() -+if get_option('enable_gi') - gnome.generate_gir(clutter_gtk, - sources: clutter_gtk_headers + clutter_gtk_sources, - namespace: 'GtkClutter', -diff --git a/meson_options.txt b/meson_options.txt -index aaf59f1..b7e51c3 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -2,3 +2,7 @@ option('enable_docs', - type: 'boolean', - value: false, - description: 'Enable generating the API reference (depends on GTK-Doc)') -+option('enable_gi', -+ type: 'boolean', -+ value: false, -+ description: 'Enable gobject introspection') diff --git a/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb b/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb deleted file mode 100644 index 53948c894..000000000 --- a/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb +++ /dev/null @@ -1,7 +0,0 @@ -require clutter-gtk-1.0.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" - -SRC_URI += " file://0001-Add-a-config-variable-for-enabling-disabling-introsp.patch" -SRC_URI[archive.md5sum] = "b363ac9878e2337be887b8ee9e1da00e" -SRC_URI[archive.sha256sum] = "521493ec038973c77edcb8bc5eac23eed41645117894aaee7300b2487cb42b06" diff --git a/poky/meta/recipes-graphics/cogl/cogl-1.0.inc b/poky/meta/recipes-graphics/cogl/cogl-1.0.inc deleted file mode 100644 index d581ad1c0..000000000 --- a/poky/meta/recipes-graphics/cogl/cogl-1.0.inc +++ /dev/null @@ -1,84 +0,0 @@ -SUMMARY = "Modern 3D graphics API with associated utility APIs" -DESCRIPTION = "Cogl is a small open source library for using 3D graphics \ -hardware for rendering. The API departs from the flat state machine style of \ -OpenGL and is designed to make it easy to write orthogonal components that \ -can render without stepping on each others toes." -HOMEPAGE = "https://gitlab.gnome.org/GNOME/cogl" -LICENSE = "MIT" - -inherit clutter features_check upstream-version-is-even gobject-introspection -# cogl-1.0 needs opengl to build -REQUIRED_DISTRO_FEATURES ?= "opengl" - -DEPENDS = "glib-2.0 gdk-pixbuf" -PACKAGES =+ "${PN}-examples \ - libcogl libcogl-gles2 libcogl-pango libcogl-path \ - " -AUTOTOOLS_AUXDIR = "${S}/build" - -# Extra DEPENDS for PACKAGECONFIG -EDEPENDS_GL = "virtual/libgl libdrm" -EDEPENDS_GLES2 = "virtual/libgles2" -EDEPENDS_KMS = "libdrm virtual/egl" -EDEPENDS_EGL = "virtual/egl" -EDEPENDS_X11 = "virtual/libx11 libxcomposite libxdamage libxfixes libxrandr" -EDEPENDS_WAYLAND = "virtual/egl virtual/libgles2 wayland" - -# Extra RDEPENDS for PACKAGECONFIG -# This has to be explictly listed, because cogl dlopens the backends -ERDEPENDS_GL = "libgl" -ERDEPENDS_GLES2 = "libgles2" - -# GLESv1 is rarely tested, so disable it -EXTRA_OECONF += "--enable-examples-install \ - --enable-debug \ - --disable-gles1 \ - --disable-cairo \ - " -DEBUG_OPTIMIZATION_append = " -Wno-error=maybe-uninitialized" - -# OpenGL/GLX -PACKAGECONFIG[glx] = "--enable-gl --enable-glx,--disable-gl --disable-glx,${EDEPENDS_GL} ${EDEPENDS_X11},${ERDEPENDS_GL}" - -# GLESv2 -PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,${EDEPENDS_GLES2}, ${ERDEPENDS_GLES2}" - -# EGL backends -PACKAGECONFIG[egl-kms] = "--enable-kms-egl-platform,--disable-kms-egl-platform,${EDEPENDS_KMS}" -PACKAGECONFIG[egl-null] = "--enable-null-egl-platform,--disable-null-egl-platform" -PACKAGECONFIG[egl-x11] = "--enable-xlib-egl-platform,--disable-xlib-egl-platform,${EDEPENDS_X11} ${EDEPENDS_EGL}" -PACKAGECONFIG[egl-wayland] = "--enable-wayland-egl-platform,--disable-wayland-egl-platform,${EDEPENDS_WAYLAND}" - -# Wayland (server-side) -PACKAGECONFIG[wayland-server] = "--enable-wayland-egl-server,--disable-wayland-egl-server,${EDEPENDS_WAYLAND}" - -# Support rendering text directly with Pango -PACKAGECONFIG[cogl-pango] = "--enable-cogl-pango,--disable-cogl-pango,pango" - -# Respect the DISTRO_FEATURES to pull in GLX or Wayland as appropriate by -# default. -PACKAGECONFIG ??= "cogl-pango gles2 \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'egl-wayland', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx egl-x11', '', d)} \ - " - -do_compile_prepend() { - export GIR_EXTRA_LIBS_PATH="${B}/cogl/.libs" -} - -FILES_${PN} = "" -FILES_${PN}-examples = "${bindir}/* ${datadir}/cogl/examples-data/*" -FILES_libcogl = "${libdir}/libcogl${SOLIBS} ${libdir}/girepository-1.0/Cogl-*.typelib" -FILES_libcogl-gles2 = "${libdir}/libcogl-gles2${SOLIBS}" -FILES_libcogl-pango = "${libdir}/libcogl-pango${SOLIBS} ${libdir}/girepository-1.0/CoglPango*.typelib" - -FILES_libcogl-path = "${libdir}/libcogl-path${SOLIBS}" - -# For backwards compatibility after Debian-renaming -RPROVIDES_libcogl = "cogl-1.0" -RCONFLICTS_libcogl = "cogl-1.0" -RREPLACES_libcogl = "cogl-1.0" - -RDEPENDS_${PN}-dev = "libcogl" - -COMPATIBLE_HOST_armv4 = 'null' diff --git a/poky/meta/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch b/poky/meta/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch deleted file mode 100644 index 328984a63..000000000 --- a/poky/meta/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch +++ /dev/null @@ -1,92 +0,0 @@ -From bb9765a926588ebfe1eb324fbbe8fc22d419eebe Mon Sep 17 00:00:00 2001 -From: Max Krummenacher <max.krummenacher@toradex.com> -Date: Thu, 25 Jun 2020 11:27:40 +0000 -Subject: [PATCH] configure.ac: don't require eglmesaext.h - -E.g. the Vivante EGL implementation does not provide eglmesaext.h. - -The commit moves the check for header file existence outside of the -check for existence of a egl packageconfig and makes the existence -of eglmesaext.h optional. - -fixes commit fb1acfec ("Fix building against libglvnd-provided EGL headers") -Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> - -Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/cogl/-/merge_requests/28] -Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> ---- - configure.ac | 51 ++++++++++++++++++++++++++++++++------------------- - 1 file changed, 32 insertions(+), 19 deletions(-) - -diff --git a/configure.ac b/configure.ac -index b7ba95d..0d1d8de 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1212,22 +1212,6 @@ AS_IF([test "x$NEED_EGL" = "xyes" && test "x$EGL_CHECKED" != "xyes"], - PKG_CHECK_EXISTS([egl], - [COGL_PKG_REQUIRES="$COGL_PKG_REQUIRES egl"], - [ -- AC_CHECK_HEADERS( -- [EGL/egl.h], -- [], -- [AC_MSG_ERROR([Unable to locate required EGL headers])]) -- AC_CHECK_HEADERS( -- [EGL/eglext.h], -- [], -- [AC_MSG_ERROR([Unable to locate required EGL headers])], -- [#include <EGL/egl.h>]) -- AC_CHECK_HEADERS( -- [EGL/eglmesaext.h], -- [], -- [AC_MSG_ERROR([Unable to locate required EGL headers])], -- [#include <EGL/egl.h> --#include <EGL/eglext.h>]) -- - AC_CHECK_LIB(EGL, [eglInitialize], - [COGL_EXTRA_LDFLAGS="$COGL_EXTRA_LDFLAGS -lEGL"], - [AC_MSG_ERROR([Unable to locate required EGL library])]) -@@ -1236,9 +1220,38 @@ AS_IF([test "x$NEED_EGL" = "xyes" && test "x$EGL_CHECKED" != "xyes"], - ] - ) - -- COGL_EGL_INCLUDES="#include <EGL/egl.h> --#include <EGL/eglext.h> --#include <EGL/eglmesaext.h>" -+dnl Test for the existence of egl headers. -+dnl egl*.h includes eglplatform.h which on __unix__ defaults to a X11 platform. -+dnl In that case AC_CHECK_HEADERS failes if X11 headers are not available. -+dnl Set the usual include guard define and, if the EGL implementation doesn't -+dnl use that guard fall back to USE_OZONE and EGL_NO_X11 platforms which don't -+dnl require additional headers. -+ AC_CHECK_HEADERS( -+ [EGL/egl.h], -+ [COGL_EGL_INCLUDES="#include <EGL/egl.h>"], -+ [AC_MSG_ERROR([Unable to locate required EGL headers])], -+ [#define __egl_h_ -+ #define USE_OZONE -+ #define EGL_NO_X11]) -+ AC_CHECK_HEADERS( -+ [EGL/eglext.h], -+ [COGL_EGL_INCLUDES="$COGL_EGL_INCLUDES -+#include <EGL/eglext.h>"], -+ [AC_MSG_ERROR([Unable to locate required EGL headers])], -+ [#define __eglext_h_ -+ #define USE_OZONE -+ #define EGL_NO_X11 -+$COGL_EGL_INCLUDES]) -+ AC_CHECK_HEADERS( -+ [EGL/eglmesaext.h], -+ [COGL_EGL_INCLUDES="$COGL_EGL_INCLUDES -+#include <EGL/eglmesaext.h>"], -+ [], -+ [#define __eglmesaext_h_ -+#define USE_OZONE -+#define EGL_NO_X11 -+$COGL_EGL_INCLUDES]) -+ - AC_SUBST([COGL_EGL_INCLUDES]) - ]) - --- -2.20.1 - diff --git a/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb b/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb deleted file mode 100644 index b9446fab3..000000000 --- a/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb +++ /dev/null @@ -1,6 +0,0 @@ -require cogl-1.0.inc - -SRC_URI += "file://0001-configure.ac-don-t-require-eglmesaext.h.patch" -SRC_URI[archive.sha256sum] = "a805b2b019184710ff53d0496f9f0ce6dcca420c141a0f4f6fcc02131581d759" - -LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84" diff --git a/poky/meta/recipes-graphics/drm/libdrm/0001-meson-Also-search-for-rst2man.py.patch b/poky/meta/recipes-graphics/drm/libdrm/0001-meson-Also-search-for-rst2man.py.patch deleted file mode 100644 index 67fafd40c..000000000 --- a/poky/meta/recipes-graphics/drm/libdrm/0001-meson-Also-search-for-rst2man.py.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 4129a8c6911b6b0ef3665cb167da6b635c29614d Mon Sep 17 00:00:00 2001 -From: Wang Mingyu <wangmy@cn.fujitsu.com> -Date: Mon, 8 Feb 2021 17:30:52 +0900 -Subject: [PATCH] meson: Also search for rst2man.py - -That's what upstream docutils installs by default. - -Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/drm/-/commit/62b9a3eee9bdaafa766e92d5bebeb4e59845c45a] - -Signed-off-by: Heiko Becker's avatarHeiko Becker <heirecka@exherbo.org> ---- - meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index a4d8d70..07d2e08 100644 ---- a/meson.build -+++ b/meson.build -@@ -261,7 +261,7 @@ else - endif - - with_man_pages = get_option('man-pages') --prog_rst2man = find_program('rst2man', required: with_man_pages == 'true') -+prog_rst2man = find_program('rst2man', 'rst2man.py', required: with_man_pages == 'true') - with_man_pages = with_man_pages != 'false' and prog_rst2man.found() - - config.set10('HAVE_VISIBILITY', --- -2.25.1 - diff --git a/poky/meta/recipes-graphics/drm/libdrm_2.4.104.bb b/poky/meta/recipes-graphics/drm/libdrm_2.4.106.bb index ff869d6db..2f6348902 100644 --- a/poky/meta/recipes-graphics/drm/libdrm_2.4.104.bb +++ b/poky/meta/recipes-graphics/drm/libdrm_2.4.106.bb @@ -11,10 +11,9 @@ PROVIDES = "drm" DEPENDS = "libpthread-stubs" SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.xz \ - file://0001-meson-Also-search-for-rst2man.py.patch \ " -SRC_URI[sha256sum] = "d66ad8b5c2441015ac1333e40137bb803c3bde3612ff040286fcc12158ea1bcb" +SRC_URI[sha256sum] = "92d8ac54429b171e087e61c2894dc5399fe6a549b1fbba09fa6a3cb9d4e57bd4" inherit meson pkgconfig manpages diff --git a/poky/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch b/poky/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch index ef092f17a..cddd33097 100644 --- a/poky/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch +++ b/poky/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch @@ -34,14 +34,14 @@ index 00000000..64b6882d --- /dev/null +++ b/glslang/glslang.pc.cmake.in @@ -0,0 +1,11 @@ -+ prefix=@CMAKE_INSTALL_PREFIX@ -+ exec_prefix=@CMAKE_INSTALL_PREFIX@ -+ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ -+ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ -+ -+ Name: @PROJECT_NAME@ -+ Description: OpenGL and OpenGL ES shader front end and validator -+ Requires: -+ Version: @GLSLANG_VERSION@ -+ Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper -+ Cflags: -I${includedir} ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++ ++Name: @PROJECT_NAME@ ++Description: OpenGL and OpenGL ES shader front end and validator ++Requires: ++Version: @GLSLANG_VERSION@ ++Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper ++Cflags: -I${includedir} diff --git a/poky/meta/recipes-graphics/glslang/glslang_11.2.0.bb b/poky/meta/recipes-graphics/glslang/glslang_11.4.0.bb index 902f7345f..fd4cf6d53 100644 --- a/poky/meta/recipes-graphics/glslang/glslang_11.2.0.bb +++ b/poky/meta/recipes-graphics/glslang/glslang_11.4.0.bb @@ -8,7 +8,7 @@ HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler" LICENSE = "BSD-3-Clause & BSD-2-Clause & MIT & Apache-2.0 & GPL-3-with-bison-exception" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c5ce49c0456e9b413b98a4368c378229" -SRCREV = "5421877c380d5f92c1965c7a94620dac861297dd" +SRCREV = "18eef33bd7a4bf5ad8c69f99cb72022608cf6e73" SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https \ file://0001-generate-glslang-pkg-config.patch" UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$" diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Removed-unused-variable-supp_size-from-plan_subset_e.patch b/poky/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Removed-unused-variable-supp_size-from-plan_subset_e.patch new file mode 100644 index 000000000..c1d4df42a --- /dev/null +++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Removed-unused-variable-supp_size-from-plan_subset_e.patch @@ -0,0 +1,44 @@ +From f96b2b653c605679b83a820b38f49a0a0f4baf42 Mon Sep 17 00:00:00 2001 +From: Andi-Bogdan Postelnicu <abpostelnicu@me.com> +Date: Wed, 2 Jun 2021 14:08:11 +0300 +Subject: [PATCH] Removed unused variable `supp_size` from + plan_subset_encoding(...). + +Upstream-Status: Backport [https://github.com/harfbuzz/harfbuzz/commit/243d056ff1c2af583ceb67e5dfbfaac51dc96e63] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/hb-subset-cff1.cc | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/hb-subset-cff1.cc b/src/hb-subset-cff1.cc +index df322f8..35dae7b 100644 +--- a/src/hb-subset-cff1.cc ++++ b/src/hb-subset-cff1.cc +@@ -402,7 +402,7 @@ struct cff_subset_plan { + void plan_subset_encoding (const OT::cff1::accelerator_subset_t &acc, hb_subset_plan_t *plan) + { + const Encoding *encoding = acc.encoding; +- unsigned int size0, size1, supp_size; ++ unsigned int size0, size1; + hb_codepoint_t code, last_code = CFF_UNDEF_CODE; + hb_vector_t<hb_codepoint_t> supp_codes; + +@@ -412,7 +412,6 @@ struct cff_subset_plan { + return; + } + +- supp_size = 0; + supp_codes.init (); + + subset_enc_num_codes = plan->num_output_glyphs () - 1; +@@ -448,7 +447,6 @@ struct cff_subset_plan { + code_pair_t pair = { supp_codes[i], sid }; + subset_enc_supp_codes.push (pair); + } +- supp_size += SuppEncoding::static_size * supp_codes.length; + } + } + supp_codes.fini (); +-- +2.31.1 + diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.7.4.bb b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.8.1.bb index b08f60255..1a0e651f6 100644 --- a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.7.4.bb +++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.8.1.bb @@ -11,8 +11,9 @@ UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases" UPSTREAM_CHECK_REGEX = "harfbuzz-(?P<pver>\d+(\.\d+)+).tar" SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.xz \ + file://0001-Removed-unused-variable-supp_size-from-plan_subset_e.patch \ " -SRC_URI[sha256sum] = "6ad11d653347bd25d8317589df4e431a2de372c0cf9be3543368e07ec23bb8e7" +SRC_URI[sha256sum] = "4124f663ec4bf4e294d9cf230668370b4249a48ff34deaf0f06e8fc82d891300" inherit meson pkgconfig lib_package gtk-doc gobject-introspection @@ -21,9 +22,8 @@ GIR_MESON_DISABLE_FLAG = 'disabled' GTKDOC_MESON_ENABLE_FLAG = 'enabled' GTKDOC_MESON_DISABLE_FLAG = 'disabled' -PACKAGECONFIG ??= "cairo fontconfig freetype glib icu" +PACKAGECONFIG ??= "cairo freetype glib icu" PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo" -PACKAGECONFIG[fontconfig] = "-Dfontconfig=enabled,-Dfontconfig=disabled,fontconfig" PACKAGECONFIG[freetype] = "-Dfreetype=enabled,-Dfreetype=disabled,freetype" PACKAGECONFIG[glib] = "-Dglib=enabled,-Dglib=disabled,glib-2.0" PACKAGECONFIG[graphite] = "-Dgraphite=enabled,-Dgraphite=disabled,graphite2" diff --git a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-igt_edid-Allocate-raw-8-bytes-for-VSDB.patch b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-igt_edid-Allocate-raw-8-bytes-for-VSDB.patch deleted file mode 100644 index 38bd4550a..000000000 --- a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-igt_edid-Allocate-raw-8-bytes-for-VSDB.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 606349860d27492c328752dca5a3784c0e9a6d24 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 27 Feb 2021 11:05:45 -0800 -Subject: [PATCH i-g-t] lib/igt_edid: Allocate raw 8-bytes for VSDB - -hdmi_vsdb is an element of cea_vsdb which makes the size of cea_vsdb to -be 8 ( 3bytes ieee_oui ) + ( 5bytes hdmi_vsdb struct), its true that we -only use 7 bytes technically we can only allocate 7byte array but since -we are writing to elements of hdmi_vsdb struct which is sitting at offet -4-8 in cea_vsdb, compiler thinks we have an element which is out of -array bounds since out allocated size is 7bytes - -This errors out -../git/lib/igt_edid.c:365:13: error: array subscript 'struct hdmi_vsdb[0]' is partly outside array bounds of 'char[7]' [-Werror=array-bounds] - 365 | hdmi->src_phy_addr[0] = 0x10; - | ^~ - -allocating one extra byte matches with size of cea_vsdb and compiler is -happy - -Upstream-Status: Submitted [https://lists.freedesktop.org/archives/igt-dev/2021-February/029446.html] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - lib/igt_edid.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/igt_edid.c b/lib/igt_edid.c -index 1c85486d..ce09cc47 100644 ---- a/lib/igt_edid.c -+++ b/lib/igt_edid.c -@@ -351,7 +351,7 @@ void cea_sad_init_pcm(struct cea_sad *sad, int channels, - const struct cea_vsdb *cea_vsdb_get_hdmi_default(size_t *size) - { - /* We'll generate a VSDB with 2 extension fields. */ -- static char raw[CEA_VSDB_HDMI_MIN_SIZE + 2] = {0}; -+ static char raw[CEA_VSDB_HDMI_MIN_SIZE + 3] = {0}; - struct cea_vsdb *vsdb; - struct hdmi_vsdb *hdmi; - --- -2.30.1 - diff --git a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/reproducibility.patch b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/reproducibility.patch deleted file mode 100644 index 39e36d873..000000000 --- a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/reproducibility.patch +++ /dev/null @@ -1,38 +0,0 @@ -meson: Allow source location to be configurable - -Hardcoding a build source path into a binary when cross compiling isn't -appropriate and breaks build reproducibility. Allow the srcdir to be -specified by an optional configuration option to meson. - -Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org> -Upstream-Status: Submitted [https://lists.freedesktop.org/archives/igt-dev/2021-February/029443.html] - -Index: git/lib/meson.build -=================================================================== ---- git.orig/lib/meson.build -+++ git/lib/meson.build -@@ -122,7 +122,11 @@ if chamelium.found() - lib_sources += 'igt_chamelium_stream.c' - endif - --srcdir = join_paths(meson.source_root(), 'tests') -+if get_option('srcdir') != '' -+ srcdir = join_paths(get_option('srcdir'), 'tests') -+else -+ srcdir = join_paths(meson.source_root(), 'tests') -+endif - - lib_version = vcs_tag(input : 'version.h.in', output : 'version.h', - fallback : 'NO-GIT', -Index: git/meson_options.txt -=================================================================== ---- git.orig/meson_options.txt -+++ git/meson_options.txt -@@ -50,3 +50,7 @@ option('use_rpath', - type : 'boolean', - value : false, - description : 'Set runpath on installed executables for libigt.so') -+ -+option('srcdir', -+ type : 'string', -+ description : 'Path to source code to be compiled into binaries (optional)') diff --git a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb index 1cc94cf99..5ab0498f7 100644 --- a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb +++ b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb @@ -9,12 +9,10 @@ LICENSE = "MIT" inherit meson -SRCREV = "d16ad07e7f2a028e14d61f570931c87fa5ce404c" -PV = "1.25+git${SRCPV}" +SRCREV = "203def046b466fb2da67f9f15552d84e1c0b41f2" +PV = "1.26" -SRC_URI = "git://gitlab.freedesktop.org/drm/igt-gpu-tools.git;protocol=https \ - file://0001-lib-igt_edid-Allocate-raw-8-bytes-for-VSDB.patch \ - file://reproducibility.patch" +SRC_URI = "git://gitlab.freedesktop.org/drm/igt-gpu-tools.git;protocol=https" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-graphics/images/core-image-clutter.bb b/poky/meta/recipes-graphics/images/core-image-clutter.bb deleted file mode 100644 index a59446102..000000000 --- a/poky/meta/recipes-graphics/images/core-image-clutter.bb +++ /dev/null @@ -1,15 +0,0 @@ -DESCRIPTION = "An image with support for the Open GL-based toolkit Clutter, \ -which enables development of rich and animated graphical user interfaces." - -IMAGE_FEATURES += "splash package-management x11-base x11-sato ssh-server-dropbear" - -LICENSE = "MIT" - -IMAGE_INSTALL = "\ - ${CORE_IMAGE_BASE_INSTALL} \ - packagegroup-core-clutter-core \ - " - -inherit core-image - -QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m 256", d)}' diff --git a/poky/meta/recipes-graphics/images/core-image-weston-sdk.bb b/poky/meta/recipes-graphics/images/core-image-weston-sdk.bb new file mode 100644 index 000000000..f5f7dade5 --- /dev/null +++ b/poky/meta/recipes-graphics/images/core-image-weston-sdk.bb @@ -0,0 +1,11 @@ +require core-image-weston.bb + +DESCRIPTION = "Image with Weston support that includes everything within \ +core-image-weston plus meta-toolchain, development headers and libraries to \ +form a standalone SDK." + +IMAGE_FEATURES += "dev-pkgs tools-sdk \ + tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks ssh-server-openssh" + +IMAGE_INSTALL += "kernel-devsrc" + diff --git a/poky/meta/recipes-graphics/images/core-image-weston.bb b/poky/meta/recipes-graphics/images/core-image-weston.bb index e82e4fbb3..62305cc1c 100644 --- a/poky/meta/recipes-graphics/images/core-image-weston.bb +++ b/poky/meta/recipes-graphics/images/core-image-weston.bb @@ -6,7 +6,7 @@ LICENSE = "MIT" inherit core-image -CORE_IMAGE_BASE_INSTALL += "gtk+3-demo clutter-1.0-examples" +CORE_IMAGE_BASE_INSTALL += "gtk+3-demo" CORE_IMAGE_BASE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'weston-xwayland matchbox-terminal', '', d)}" QB_MEM = "-m 512" diff --git a/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.6.bb b/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.6.bb index b6efc6bca..7d0c4340f 100644 --- a/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.6.bb +++ b/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.6.bb @@ -29,7 +29,7 @@ RCONFLICTS_${PN} += "jpeg" inherit cmake pkgconfig -export NASMENV = "--debug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}" +export NASMENV = "--reproducible --debug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}" # Add nasm-native dependency consistently for all build arches is hard EXTRA_OECMAKE_append_class-native = " -DWITH_SIMD=False" @@ -41,6 +41,9 @@ EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx3 # Work around missing non-floating point ABI support in MIPS EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "-DWITH_SIMD=False", "", d)}" +EXTRA_OECMAKE_append_class-target_arm = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "", "-DWITH_SIMD=False", d)}" +EXTRA_OECMAKE_append_class-target_armeb = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "", "-DWITH_SIMD=False", d)}" + # Provide a workaround if Altivec unit is not present in PPC EXTRA_OECMAKE_append_class-target_powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" EXTRA_OECMAKE_append_class-target_powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" diff --git a/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.5.bb b/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.8.bb index a404fe285..2cd096a57 100644 --- a/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.5.bb +++ b/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.8.bb @@ -12,7 +12,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b" SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \ file://0001-dispatch_common.h-define-also-EGL_NO_X11.patch \ " -SRC_URI[sha256sum] = "261663db21bcc1cc232b07ea683252ee6992982276536924271535875f5b0556" +SRC_URI[sha256sum] = "cf05e4901778c434aef68bb7dc01bea2bce15440c0cecb777fb446f04db6fe0d" UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases" inherit meson pkgconfig features_check diff --git a/poky/meta/recipes-graphics/libva/libva-initial_2.10.0.bb b/poky/meta/recipes-graphics/libva/libva-initial_2.11.0.bb index 5c6abeafe..5c6abeafe 100644 --- a/poky/meta/recipes-graphics/libva/libva-initial_2.10.0.bb +++ b/poky/meta/recipes-graphics/libva/libva-initial_2.11.0.bb diff --git a/poky/meta/recipes-graphics/libva/libva-utils_2.10.0.bb b/poky/meta/recipes-graphics/libva/libva-utils_2.11.1.bb index 828f4fb31..096d80b68 100644 --- a/poky/meta/recipes-graphics/libva/libva-utils_2.10.0.bb +++ b/poky/meta/recipes-graphics/libva/libva-utils_2.11.1.bb @@ -14,8 +14,8 @@ SECTION = "x11" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e" -SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.10-branch" -SRCREV = "f112ee75fcd1472131b20f901b93f6ac1d293fad" +SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.11-branch" +SRCREV = "c0145a895ebe9b24cde5c441733f90482f1e3d71" S = "${WORKDIR}/git" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$" diff --git a/poky/meta/recipes-graphics/libva/libva.inc b/poky/meta/recipes-graphics/libva/libva.inc index d251afa12..43d916cd1 100644 --- a/poky/meta/recipes-graphics/libva/libva.inc +++ b/poky/meta/recipes-graphics/libva/libva.inc @@ -18,7 +18,7 @@ LICENSE = "MIT" SRC_URI = "https://github.com/intel/libva/releases/download/${PV}/libva-${PV}.tar.bz2" LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f" -SRC_URI[sha256sum] = "fa81e35b50d9818fce5ec9eeeeff08a24a8864ceeb9a5c8e7ae4446eacfc0236" +SRC_URI[sha256sum] = "6e361117038b571ad4741d38c9280db8c140b17e76e8c01fc7a4d608d3ed7d5d" S = "${WORKDIR}/libva-${PV}" diff --git a/poky/meta/recipes-graphics/libva/libva_2.10.0.bb b/poky/meta/recipes-graphics/libva/libva_2.11.0.bb index 4d3fa5096..4d3fa5096 100644 --- a/poky/meta/recipes-graphics/libva/libva_2.10.0.bb +++ b/poky/meta/recipes-graphics/libva/libva_2.11.0.bb diff --git a/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch b/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch index df2346d33..eac6d4df8 100644 --- a/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch +++ b/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch @@ -1,4 +1,4 @@ -From 624f430dd0a91344146a2b8d49a69f23560c2fa2 Mon Sep 17 00:00:00 2001 +From d434b9e5d29d614b57c09e164e1d084094bf2150 Mon Sep 17 00:00:00 2001 From: Alistair Francis <alistair@alistair23.me> Date: Thu, 14 Nov 2019 13:08:31 -0800 Subject: [PATCH] meson.build: make TLS ELF optional @@ -30,23 +30,23 @@ Signed-off-by: Alistair Francis <alistair@alistair23.me> 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build -index efc6171..8450968 100644 +index 42f448e..02f6e33 100644 --- a/meson.build +++ b/meson.build -@@ -448,7 +448,7 @@ endif - - # Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS. +@@ -449,7 +449,7 @@ endif use_elf_tls = false --if not ['windows', 'freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29) -+if not ['windows', 'freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29) and get_option('elf-tls') + if (not ['freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and + (not with_platform_android or get_option('platform-sdk-version') >= 29) and +- (not with_platform_windows or not with_shared_glapi)) ++ (not with_platform_windows or not with_shared_glapi) and get_option('elf-tls')) pre_args += '-DUSE_ELF_TLS' use_elf_tls = true endif diff --git a/meson_options.txt b/meson_options.txt -index fc73f6e..d7482c0 100644 +index a7030ab..635ec20 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -420,6 +420,12 @@ option( +@@ -421,6 +421,12 @@ option( value : true, description : 'Enable direct rendering in GLX and EGL for DRI', ) diff --git a/poky/meta/recipes-graphics/mesa/mesa-gl_21.0.1.bb b/poky/meta/recipes-graphics/mesa/mesa-gl_21.1.3.bb index dff79f0be..dff79f0be 100644 --- a/poky/meta/recipes-graphics/mesa/mesa-gl_21.0.1.bb +++ b/poky/meta/recipes-graphics/mesa/mesa-gl_21.1.3.bb diff --git a/poky/meta/recipes-graphics/mesa/mesa.inc b/poky/meta/recipes-graphics/mesa/mesa.inc index caf3c62ad..b7e42a9d7 100644 --- a/poky/meta/recipes-graphics/mesa/mesa.inc +++ b/poky/meta/recipes-graphics/mesa/mesa.inc @@ -10,7 +10,7 @@ HOMEPAGE = "http://mesa3d.org" BUGTRACKER = "https://bugs.freedesktop.org" SECTION = "x11" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://docs/license.rst;md5=9aa1bc48c9826ad9fdb16661f6930496" +LIC_FILES_CHKSUM = "file://docs/license.rst;md5=17a4ea65de7a9ab42437f3131e616a7f" PE = "2" @@ -21,7 +21,7 @@ SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \ " -SRC_URI[sha256sum] = "379fc984459394f2ab2d84049efdc3a659869dc1328ce72ef0598506611712bb" +SRC_URI[sha256sum] = "cbe221282670875ffd762247b6a2c95dcee91d0a34c29802c75ef761fc891e69" UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" @@ -131,6 +131,9 @@ PACKAGECONFIG[v3d] = "" GALLIUMDRIVERS = "swrast" # gallium swrast was found to crash Xorg on startup in x32 qemu GALLIUMDRIVERS_x86-x32 = "" +# Add crocus when 21.2 is out to the list below to support the full range of Intel GPUs +GALLIUMDRIVERS_append_x86_class-target = ",i915,iris" +GALLIUMDRIVERS_append_x86-64_class-target = ",i915,iris" GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" @@ -167,6 +170,8 @@ PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false" PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind" +PACKAGECONFIG[lmsensors] = "-Dlmsensors=enabled,-Dlmsensors=disabled,lmsensors" + # llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2) FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer" diff --git a/poky/meta/recipes-graphics/mesa/mesa_21.0.1.bb b/poky/meta/recipes-graphics/mesa/mesa_21.1.3.bb index 8c584d8e9..28abc91a8 100644 --- a/poky/meta/recipes-graphics/mesa/mesa_21.0.1.bb +++ b/poky/meta/recipes-graphics/mesa/mesa_21.1.3.bb @@ -1,4 +1,5 @@ require ${BPN}.inc -DRIDRIVERS_append_x86_class-target = ",r100,r200,nouveau,i965,i915" -DRIDRIVERS_append_x86-64_class-target = ",r100,r200,nouveau,i965,i915" +DRIDRIVERS_append_x86_class-target = ",r100,r200,nouveau,i965" +DRIDRIVERS_append_x86-64_class-target = ",r100,r200,nouveau,i965" + diff --git a/poky/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch b/poky/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch deleted file mode 100644 index 82c93dd60..000000000 --- a/poky/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch +++ /dev/null @@ -1,20 +0,0 @@ -Fix missing include directory when building tests - -This patch is currently required for all versions of mx -Upstream-Status: Submitted @ https://github.com/clutter-project/mx/issues/82 -Signed-off-by: Tomas Frydrych <tomas@sleepfive.com> --- -Index: git/tests/Makefile.am -=================================================================== ---- git.orig/tests/Makefile.am 2013-05-08 15:18:56.918596425 +0100 -+++ git/tests/Makefile.am 2013-05-08 15:23:26.864781401 +0100 -@@ -10,7 +10,8 @@ - - INCLUDES = \ - -I$(top_srcdir) \ -- -I$(top_builddir) -+ -I$(top_builddir)\ -+ -I$(top_builddir)/mx - - noinst_PROGRAMS = \ - test-deform-texture \ diff --git a/poky/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb b/poky/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb deleted file mode 100644 index 58a6997ff..000000000 --- a/poky/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb +++ /dev/null @@ -1,16 +0,0 @@ -require mx.inc - -# The 1.4.7 tag does not build against cogl 1.14, pull in a revision with a fix -SRCREV = "9b1db6b8060bd00b121a692f942404a24ae2960f" -PV = "1.4.7+git${SRCPV}" - -# Exclude x.99.x versions from upstream checks -UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>^\d+(\.(?!99)\d+)+)" - -SRC_URI = "git://github.com/clutter-project/mx.git;branch=mx-1.4 \ - file://fix-test-includes.patch \ - " -S = "${WORKDIR}/git" - -LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24 \ - file://mx/mx-widget.c;beginline=8;endline=20;md5=13bba3c973a72414a701e1e87b5ee879" diff --git a/poky/meta/recipes-graphics/mx/mx.inc b/poky/meta/recipes-graphics/mx/mx.inc deleted file mode 100644 index c977849c9..000000000 --- a/poky/meta/recipes-graphics/mx/mx.inc +++ /dev/null @@ -1,27 +0,0 @@ -SUMMARY = "Clutter based UI widget library" -DESCRIPTION = "Mx is a widget toolkit using Clutter that provides a set of standard interface \ -elements, including buttons, progress bars, scroll bars and others. It also \ -implements some standard managers. One other interesting feature is the \ -possibility setting style properties from a CSS format file." -HOMEPAGE = "https://github.com/clutter-project/mx" -BUGTRACKER = "https://github.com/clutter-project/mx/issues" -LICENSE = "LGPLv2.1" - -inherit clutter autotools features_check gobject-introspection gtk-doc -# depends on clutter-1.0 which depends on cogl-1.0 -REQUIRED_DISTRO_FEATURES = "opengl" - -DEPENDS = "intltool-native clutter-1.0 dbus-glib gdk-pixbuf" - -SRC_URI = "http://source.clutter-project.org/sources/mx/${@get_verdir("${PV}")}/mx-${PV}.tar.xz" - -EXTRA_OECONF = "--disable-gtk-widgets \ - --with-dbus \ - --with-winsys=none \ - --without-clutter-imcontext \ - --without-clutter-gesture \ - --without-startup-notification \ - --without-glade \ - " - -FILES_${PN} += "${datadir}" diff --git a/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb b/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb deleted file mode 100644 index 2e7b47dd4..000000000 --- a/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright (C) 2007 OpenedHand Ltd. -# - -SUMMARY = "Clutter package groups" - -PR = "r6" - -inherit packagegroup features_check -# rdepends on clutter-* -REQUIRED_DISTRO_FEATURES = "opengl" - -PACKAGES = "\ - ${PN}-core \ - " - -SUMMARY_${PN}-core = "Clutter graphics library" -RDEPENDS_${PN}-core = "\ - clutter-1.0 \ - clutter-gst-3.0 \ - clutter-gtk-1.0 \ - " diff --git a/poky/meta/recipes-graphics/pango/pango_1.48.2.bb b/poky/meta/recipes-graphics/pango/pango_1.48.5.bb index 1dcb43b5e..b29c3c2d9 100644 --- a/poky/meta/recipes-graphics/pango/pango_1.48.2.bb +++ b/poky/meta/recipes-graphics/pango/pango_1.48.5.bb @@ -13,12 +13,14 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7" GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gtk-doc ptest-gnome upstream-version-is-even gobject-introspection +inherit gnomebase gi-docgen ptest-gnome upstream-version-is-even gobject-introspection GIR_MESON_ENABLE_FLAG = "enabled" GIR_MESON_DISABLE_FLAG = "disabled" -SRC_URI[archive.sha256sum] = "d21f8b30dc8abdfc55de25656ecb88dc1105eeeb315e5e2a980dcef8010c2c80" +SRC_URI += "file://run-ptest" + +SRC_URI[archive.sha256sum] = "501e74496173c02dcd024ded7fbb3f09efd37e2a488e248aa40799424dbb3b2a" DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi" @@ -29,7 +31,6 @@ PACKAGECONFIG[x11] = ",,virtual/libx11 libxft" PACKAGECONFIG[tests] = "-Dinstall-tests=true, -Dinstall-tests=false" PACKAGECONFIG[thai] = ",,libthai" -GTKDOC_MESON_OPTION = "gtk_doc" GIR_MESON_OPTION = 'introspection' do_configure_prepend() { diff --git a/poky/meta/recipes-graphics/piglit/piglit_git.bb b/poky/meta/recipes-graphics/piglit/piglit_git.bb index 14f4c75a2..b64a20a58 100644 --- a/poky/meta/recipes-graphics/piglit/piglit_git.bb +++ b/poky/meta/recipes-graphics/piglit/piglit_git.bb @@ -18,7 +18,7 @@ SRC_URI = "git://gitlab.freedesktop.org/mesa/piglit.git;protocol=https \ " UPSTREAM_CHECK_COMMITS = "1" -SRCREV = "d4d9353b7290ed22cb7349226a8e4017402d3f02" +SRCREV = "6a4be9e9946df310d9402f995f371c7deb8c27ba" # (when PV goes above 1.0 remove the trailing r) PV = "1.0+gitr${SRCPV}" diff --git a/poky/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch b/poky/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch index df670cdde..0e8ad7e4d 100644 --- a/poky/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch +++ b/poky/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch @@ -1,17 +1,18 @@ -From 046c3c2da9c4ff66f14db5bd68e9557504a49241 Mon Sep 17 00:00:00 2001 +From d02ad48d5c9b48af70ddea2e6998081347ef82f3 Mon Sep 17 00:00:00 2001 From: Jose Quaresma <quaresma.jose@gmail.com> Date: Sat, 13 Feb 2021 00:45:56 +0000 -Subject: [PATCH 2/3] libshaderc_util: fix glslang header file location +Subject: [PATCH] libshaderc_util: fix glslang header file location Upstream-Status: Pending Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> + --- libshaderc_util/src/compiler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libshaderc_util/src/compiler.cc b/libshaderc_util/src/compiler.cc -index c5ce37e..4703634 100644 +index 051558b..9c4476c 100644 --- a/libshaderc_util/src/compiler.cc +++ b/libshaderc_util/src/compiler.cc @@ -20,7 +20,7 @@ @@ -21,8 +22,5 @@ index c5ce37e..4703634 100644 -#include "SPIRV/GlslangToSpv.h" +#include "glslang/SPIRV/GlslangToSpv.h" #include "libshaderc_util/format.h" - #include "libshaderc_util/io.h" + #include "libshaderc_util/io_shaderc.h" #include "libshaderc_util/message.h" --- -2.30.1 - diff --git a/poky/meta/recipes-graphics/shaderc/shaderc_2020.5.bb b/poky/meta/recipes-graphics/shaderc/shaderc_2021.0.bb index ce51aab03..3d59e0c38 100644 --- a/poky/meta/recipes-graphics/shaderc/shaderc_2020.5.bb +++ b/poky/meta/recipes-graphics/shaderc/shaderc_2021.0.bb @@ -6,7 +6,7 @@ HOMEPAGE = "https://github.com/google/shaderc" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -SRCREV = "f3e39a7eed682faececb73f0b85717f2f44ee9ba" +SRCREV = "1a3e2aaab191f44644e899e29ab7bac50bebdeb8" SRC_URI = "git://github.com/google/shaderc.git;protocol=https;branch=main \ file://0001-cmake-disable-building-external-dependencies.patch \ file://0002-libshaderc_util-fix-glslang-header-file-location.patch \ diff --git a/poky/meta/recipes-graphics/spir/spirv-tools_2020.7.bb b/poky/meta/recipes-graphics/spir/spirv-tools_2021.1.bb index 8be698533..5795d93e5 100644 --- a/poky/meta/recipes-graphics/spir/spirv-tools_2020.7.bb +++ b/poky/meta/recipes-graphics/spir/spirv-tools_2021.1.bb @@ -7,7 +7,7 @@ SECTION = "graphics" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" -SRCREV = "2573fd781b5408cd7fe5755a78b60d767a748ff9" +SRCREV = "4b3707b788c84449a55f67257ae6aab3ca3552cb" SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git \ file://0001-fix-strncpy-bound-error.patch \ " diff --git a/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb b/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.4.bb index abc216f43..e33c4d152 100644 --- a/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb +++ b/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.4.bb @@ -2,7 +2,7 @@ SUMMARY = "Liberation(tm) Fonts" DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \ created by Ascender(c) which aims at metric compatibility with \ Arial, Times New Roman, Courier New." -HOMEPAGE = "https://releases.pagure.org/liberation-fonts/" +HOMEPAGE = "https://github.com/liberationfonts/liberation-fonts" BUGTRACKER = "https://bugzilla.redhat.com/" SECTION = "x11/fonts" @@ -10,21 +10,14 @@ LICENSE = "OFL-1.1" LIC_FILES_CHKSUM = "file://LICENSE;md5=f96db970a9a46c5369142b99f530366b" PE = "1" -# remove at next version upgrade or when output changes -PR = "r1" -HASHEQUIV_HASH_VERSION .= ".2" - -inherit allarch fontcache - -FONT_PACKAGES = "${PN}" - -SRC_URI = "https://releases.pagure.org/liberation-fonts/liberation-fonts-ttf-${PV}.tar.gz \ +SRC_URI = "https://github.com/liberationfonts/liberation-fonts/files/6418984/liberation-fonts-ttf-${PV}.tar.gz \ file://30-liberation-aliases.conf" +SRC_URI[sha256sum] = "26f85412dd0aa9d061504a1cc8aaf0aa12a70710e8d47d8b65a1251757c1a5ef" +UPSTREAM_CHECK_URI = "https://github.com/liberationfonts/liberation-fonts/releases" S = "${WORKDIR}/liberation-fonts-ttf-${PV}" -SRC_URI[md5sum] = "5c781723a0d9ed6188960defba8e91cf" -SRC_URI[sha256sum] = "7890278a6cd17873c57d9cd785c2d230d9abdea837e96516019c5885dd271504" +inherit allarch fontcache do_install () { install -d ${D}${datadir}/fonts/ttf/ diff --git a/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch b/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch deleted file mode 100644 index a0ac3aefd..000000000 --- a/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 3d30df8d8ccb919733b5339b2a82474305b83998 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Tue, 6 Aug 2019 01:19:48 +0000 -Subject: [PATCH] gallium: Expand libc check to be platform OS check - -endianness on musl based systems can also be detected in same way as -glibc, therefore check for __linux__ define instead of __GLIBC__ - -Fixes build on musl/mips - -| ../../../../git/src/gallium/include/pipe/p_config.h:171:2: error: #error Unknown Endianness -| #error Unknown Endianness -| ^~~~~ - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - src/gallium/include/pipe/p_config.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gallium/include/pipe/p_config.h b/src/gallium/include/pipe/p_config.h -index d603681..71cdf49 100644 ---- a/src/gallium/include/pipe/p_config.h -+++ b/src/gallium/include/pipe/p_config.h -@@ -130,7 +130,7 @@ - * Endian detection. - */ - --#ifdef __GLIBC__ -+#ifdef __linux__ - #include <endian.h> - - #if __BYTE_ORDER == __LITTLE_ENDIAN --- -2.17.1 - diff --git a/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb b/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb index 52821195d..65bd1af94 100644 --- a/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb +++ b/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb @@ -8,10 +8,9 @@ HOMEPAGE = "https://virgil3d.github.io/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10" -DEPENDS = "libdrm virtual/libgl libepoxy" -SRCREV = "7d204f3927be65fb3365dce01dbcd04d447a4985" -SRC_URI = "git://anongit.freedesktop.org/virglrenderer \ - file://0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch \ +DEPENDS = "libdrm virtual/libgl virtual/libgbm libepoxy" +SRCREV = "363915595e05fb252e70d6514be2f0c0b5ca312b" +SRC_URI = "git://anongit.freedesktop.org/virglrenderer;branch=branch-0.9.1 \ file://0001-meson.build-use-python3-directly-for-python.patch \ " diff --git a/poky/meta/recipes-graphics/vulkan/assimp_5.0.1.bb b/poky/meta/recipes-graphics/vulkan/assimp_5.0.1.bb index 5a8c62e64..4eb0cefff 100644 --- a/poky/meta/recipes-graphics/vulkan/assimp_5.0.1.bb +++ b/poky/meta/recipes-graphics/vulkan/assimp_5.0.1.bb @@ -21,3 +21,5 @@ S = "${WORKDIR}/git" inherit cmake EXTRA_OECMAKE = "-DASSIMP_BUILD_ASSIMP_TOOLS=OFF -DASSIMP_BUILD_TESTS=OFF -DASSIMP_LIB_INSTALL_DIR=${baselib}" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.170.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.176.0.bb index 4c9c94f3d..cff654a06 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.170.0.bb +++ b/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.176.0.bb @@ -11,7 +11,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=master" -SRCREV = "1d99b835ec3cd5a7fb2f2a2dd9a615ee2d1f0101" +SRCREV = "074fa3055cfee530992bcbfa0fcb23106a82c1ab" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.176.0.bb index 6b6ed06db..e241a2f15 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bb +++ b/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.176.0.bb @@ -11,7 +11,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac" SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git \ " -SRCREV = "c5678a03db383fd0dc5bfb8e9a383043bdbcb57b" +SRCREV = "eb6d6f95dff809d66e95b903105da6424e75862f" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb b/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb index b7c38f654..a177d9a39 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb +++ b/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb @@ -11,7 +11,7 @@ SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git \ " UPSTREAM_CHECK_COMMITS = "1" -SRCREV = "55cebd9e7cc4153a3a7b3a45d42274c0e2a17815" +SRCREV = "04278ed5f0f9847ae6897509eb56d7b21b4e8cde" UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.170.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.176.0.bb index 0c8bcaa08..10fa0fdb3 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.170.0.bb +++ b/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.176.0.bb @@ -6,8 +6,8 @@ SECTION = "libs" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" -SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-1.2.170" -SRCREV = "88ea55de928a08ba5c5f65a93d1e7c8f666fc43f" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-1.2.176" +SRCREV = "eb3d67bd17ee433e2b0a8e56a7249bd83908812e" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-graphics/wayland/libinput_1.16.4.bb b/poky/meta/recipes-graphics/wayland/libinput_1.18.0.bb index 17b73e382..e46071c67 100644 --- a/poky/meta/recipes-graphics/wayland/libinput_1.16.4.bb +++ b/poky/meta/recipes-graphics/wayland/libinput_1.18.0.bb @@ -8,7 +8,7 @@ HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/" SECTION = "libs" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=1f2ea9ebff3a2c6d458faf58492efb63" +LIC_FILES_CHKSUM = "file://COPYING;md5=bab4ac7dc1c10bc0fb037dc76c46ef8a" DEPENDS = "libevdev udev mtdev libcheck" @@ -16,7 +16,7 @@ SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \ file://run-ptest \ file://determinism.patch \ " -SRC_URI[sha256sum] = "65923a06d5a8970e4a999c4668797b9b689614b62b1d44432ab1c87b65e39e29" +SRC_URI[sha256sum] = "18c6a286583268d39841348e561fbb4713bde0c643b360f5d8a3f27800afdb9a" UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" diff --git a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.21.bb index 3fb78f658..16452f86e 100644 --- a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb +++ b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.21.bb @@ -11,8 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ " -SRC_URI[md5sum] = "b0836533a3f2dc6585b1dae00341157f" -SRC_URI[sha256sum] = "9782b7a1a863d82d7c92478497d13c758f52e7da4f197aa16443f73de77e4de7" +SRC_URI[sha256sum] = "b99945842d8be18817c26ee77dafa157883af89268e15f4a5a1a1ff3ffa4cde5" UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" diff --git a/poky/meta/recipes-graphics/wayland/wayland_1.19.0.bb b/poky/meta/recipes-graphics/wayland/wayland_1.19.0.bb index 8f121601c..0fda80cca 100644 --- a/poky/meta/recipes-graphics/wayland/wayland_1.19.0.bb +++ b/poky/meta/recipes-graphics/wayland/wayland_1.19.0.bb @@ -52,9 +52,11 @@ sysroot_stage_all_append_class-target () { cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/ } +PACKAGES += "${PN}-tools" + FILES_${PN} = "${libdir}/*${SOLIBS}" -FILES_${PN}-dev += "${bindir} ${datadir}/wayland" +FILES_${PN}-tools += "${bindir} ${datadir}/wayland" BBCLASSEXTEND = "native nativesdk" -RDEPENDS_${PN}-ptest += "binutils sed" +RDEPENDS_${PN}-ptest += "binutils sed ${PN}-tools" diff --git a/poky/meta/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch b/poky/meta/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch new file mode 100644 index 000000000..06e0f7bae --- /dev/null +++ b/poky/meta/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch @@ -0,0 +1,32 @@ +From a2ba4714a6872e547621d29d9ddcb0f374b88cf6 Mon Sep 17 00:00:00 2001 +From: Chen Qi <Qi.Chen@windriver.com> +Date: Tue, 20 Apr 2021 20:42:18 -0700 +Subject: [PATCH] meson.build: fix incorrect header + +The wayland.c actually include 'xdg-shell-client-protocol.h' instead of +the server one, so fix it. Otherwise, it's possible to get build failure +due to race condition. + +Upstream-Status: Pending + +Signed-off-by: Chen Qi <Qi.Chen@windriver.com> +--- + libweston/backend-wayland/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libweston/backend-wayland/meson.build b/libweston/backend-wayland/meson.build +index 7e82513..29270b5 100644 +--- a/libweston/backend-wayland/meson.build ++++ b/libweston/backend-wayland/meson.build +@@ -10,7 +10,7 @@ srcs_wlwl = [ + fullscreen_shell_unstable_v1_protocol_c, + presentation_time_protocol_c, + presentation_time_server_protocol_h, +- xdg_shell_server_protocol_h, ++ xdg_shell_client_protocol_h, + xdg_shell_protocol_c, + ] + +-- +2.30.2 + diff --git a/poky/meta/recipes-graphics/wayland/weston/xwayland.weston-start b/poky/meta/recipes-graphics/wayland/weston/xwayland.weston-start index b483c97cf..db384b1a5 100644 --- a/poky/meta/recipes-graphics/wayland/weston/xwayland.weston-start +++ b/poky/meta/recipes-graphics/wayland/weston/xwayland.weston-start @@ -2,6 +2,4 @@ if type Xwayland >/dev/null 2>/dev/null; then mkdir -p /tmp/.X11-unix - - add_weston_argument "--modules=xwayland.so" fi diff --git a/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb index 50fbfa613..ce2b7d4f3 100644 --- a/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb +++ b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb @@ -11,6 +11,7 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ file://xwayland.weston-start \ file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \ + file://0001-meson.build-fix-incorrect-header.patch \ " SRC_URI_append_libc-musl = " file://dont-use-plane-add-prop.patch " @@ -124,7 +125,7 @@ SUMMARY_libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wa FILES_${PN}-examples = "${bindir}/*" FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so" -RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland" +RDEPENDS_${PN}-xwayland += "xwayland" RDEPENDS_${PN} += "xkeyboard-config" RRECOMMENDS_${PN} = "weston-init liberation-fonts" diff --git a/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.4.bb b/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.5.bb index 44143a04c..657ec7580 100644 --- a/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.4.bb +++ b/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.5.bb @@ -7,7 +7,7 @@ XKB keymap into one of several output formats. The most common use for \ xkbcomp is to create a compiled keymap file (.xkm extension) which can \ be read directly by XKB-capable X servers or utilities." -LIC_FILES_CHKSUM = "file://COPYING;md5=08436e4f4476964e2e2dd7e7e41e076a" +LIC_FILES_CHKSUM = "file://COPYING;md5=be5e191f04d3f2cd80aa83b928ba984c" DEPENDS += "libxkbfile" @@ -15,4 +15,4 @@ BBCLASSEXTEND = "native" EXTRA_OECONF += "--disable-selective-werror" -SRC_URI[sha256sum] = "59cce603a607a17722a0a1cf99010f4894e7812beb5d695abbc08474d59af27e" +SRC_URI[sha256sum] = "6851086c4244b6fd0cc562880d8ff193fb2bbf1e141c73632e10731b31d4b05e" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.30.0.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.30.0.bb deleted file mode 100644 index d02988caa..000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.30.0.bb +++ /dev/null @@ -1,11 +0,0 @@ -require xorg-driver-input.inc - -SUMMARY = "Generic input driver for the X.Org server based on libinput" -LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0" - -DEPENDS += "libinput" - -SRC_URI[md5sum] = "11dcfa2cc39f790731a9545fcdeea717" -SRC_URI[sha256sum] = "f9c7f9fd41ae14061e0e9c3bd45fa170e5e21027a2bc5810034e1e748db996c0" - -FILES_${PN} += "${datadir}/X11/xorg.conf.d" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.0.1.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.0.1.bb new file mode 100644 index 000000000..1777492ed --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.0.1.bb @@ -0,0 +1,11 @@ +require xorg-driver-input.inc + +SUMMARY = "Generic input driver for the X.Org server based on libinput" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=a22925127bd3c827c384cedd23ed2309" + +DEPENDS += "libinput" + +SRC_URI[sha256sum] = "fddec49c115591918475155bf16aaf23017d7f814cee7823a0c11f867aca245b" + +FILES_${PN} += "${datadir}/X11/xorg.conf.d" diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11_1.7.0.bb b/poky/meta/recipes-graphics/xorg-lib/libx11_1.7.2.bb index 3faee6e49..5d7e9e378 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libx11_1.7.0.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libx11_1.7.2.bb @@ -14,7 +14,7 @@ SRC_URI += "file://Fix-hanging-issue-in-_XReply.patch \ file://disable_tests.patch \ " -SRC_URI[sha256sum] = "36c8f93b6595437c8cfbc9f08618bcb3041cbd303e140a0013f88e4c2977cb54" +SRC_URI[sha256sum] = "1cfa35e37aaabbe4792e9bb690468efefbfbf6b147d9c69d6f90d13c3092ea6c" PROVIDES = "virtual/libx11" @@ -31,9 +31,6 @@ EXTRA_OEMAKE += 'CWARNFLAGS=""' PACKAGECONFIG ??= "xcms" PACKAGECONFIG[xcms] = "--enable-xcms,--disable-xcms" -# src/util/makekeys is built natively but needs -D_GNU_SOURCE defined. -CPPFLAGS_FOR_BUILD += "-D_GNU_SOURCE" - PACKAGES =+ "${PN}-xcb" inherit gettext diff --git a/poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxfixes_6.0.0.bb index f0e2f606c..af7426f7b 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxfixes_6.0.0.bb @@ -6,6 +6,7 @@ provide the minimal server-side support necessary to eliminate problems \ caused by these workarounds." require xorg-lib-common.inc +SRC_URI[sha256sum] = "a7c1a24da53e0b46cac5aea79094b4b2257321c621b258729bc3139149245b4c" LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0" @@ -17,7 +18,3 @@ PE = "1" XORG_PN = "libXfixes" BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "07e01e046a0215574f36a3aacb148be0" -SRC_URI[sha256sum] = "de1cd33aff226e08cefd0e6759341c2c8e8c9faf8ce9ac6ec38d43e287b22ad6" - diff --git a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.0.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.0.bb index 99f55f4a1..26bbaadcb 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.0.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.0.bb @@ -9,7 +9,7 @@ DEPENDS = "util-macros flex-native bison-native" SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "a2202f851e072b84e64a395212cbd976ee18a8ee602008b0bad02a13247dbc52" +SRC_URI[sha256sum] = "7b09e098ea69bc3054f0c57a9a25fda571c4df22398811606e32b5fffeb75e7b" UPSTREAM_CHECK_URI = "http://xkbcommon.org/" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb b/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.1.bb index af6bb19a2..29a799a32 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.1.bb @@ -16,5 +16,4 @@ PE = "1" XORG_PN = "libXres" -SRC_URI[md5sum] = "5d6d443d1abc8e1f6fc1c57fb27729bb" -SRC_URI[sha256sum] = "ff75c1643488e64a7cfbced27486f0f944801319c84c18d3bd3da6bf28c812d4" +SRC_URI[sha256sum] = "b6e6fb1ebb61610e56017edd928fb89a5f53b3f4f990078309877468663b2b11" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch b/poky/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch new file mode 100644 index 000000000..3e87794d2 --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch @@ -0,0 +1,39 @@ +From 5827f6389a227157958d14a687fb29223cb3a03a Mon Sep 17 00:00:00 2001 +From: Mingli Yu <mingli.yu@windriver.com> +Date: Wed, 7 Apr 2021 07:48:42 +0000 +Subject: [PATCH] xshmfence_futex.h: Define SYS_futex if it does not exist + +_NR_futex is not defines by newer architectures e.g. riscv32 as +they only have 64bit variant of time_t. Glibc defines SYS_futex +interface based on __NR_futex, since this is used in applications, +such applications start to fail to build for these newer architectures. +This patch defines a fallback to alias __NR_futex to __NR_futex_time64 +to make SYS_futex keep working. + +Reference: https://git.openembedded.org/openembedded-core/commit/?id=7a218adf9990f5e18d0b6a33eb34091969f979c7 + +Upstream-Status: Pending + +Signed-off-by: Mingli Yu <mingli.yu@windriver.com> +--- + src/xshmfence_futex.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/xshmfence_futex.h b/src/xshmfence_futex.h +index 673ac0e..a71efa5 100644 +--- a/src/xshmfence_futex.h ++++ b/src/xshmfence_futex.h +@@ -53,6 +53,10 @@ static inline int futex_wait(int32_t *addr, int32_t value) { + #include <sys/time.h> + #include <sys/syscall.h> + ++#if !defined(SYS_futex) && defined(SYS_futex_time64) ++#define SYS_futex SYS_futex_time64 ++#endif ++ + static inline long sys_futex(void *addr1, int op, int val1, struct timespec *timeout, void *addr2, int val3) + { + return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); +-- +2.29.2 + diff --git a/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb index cc4569653..d153c7a60 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb @@ -13,7 +13,9 @@ DEPENDS += "virtual/libx11" EXTRA_OECONF += "--with-shared-memory-dir=/dev/shm" -BBCLASSEXTEND = "native nativesdk" +SRC_URI += "file://0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch" SRC_URI[md5sum] = "42dda8016943dc12aff2c03a036e0937" SRC_URI[sha256sum] = "b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.32.bb b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.33.bb index daa07a4d0..197a870e7 100644 --- a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.32.bb +++ b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.33.bb @@ -13,7 +13,7 @@ LICENSE = "MIT & MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9" SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2" -SRC_URI[sha256sum] = "1feee317ba39b91902b0cbd2987c0c73e6afbfc8f4c096367a5c86c216c036a8" +SRC_URI[sha256sum] = "657fd790d6dcf781cd395de4cf726120a5b0f93ba91dfb2628bcc70ae8b1d3bc" SECTION = "x11/libs" DEPENDS = "util-macros libxslt-native" diff --git a/poky/meta/recipes-graphics/xorg-proto/xorgproto_2020.1.bb b/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.4.99.2.bb index c71bc9038..8db3e6d7a 100644 --- a/poky/meta/recipes-graphics/xorg-proto/xorgproto_2020.1.bb +++ b/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.4.99.2.bb @@ -1,4 +1,3 @@ - SUMMARY = "X Window System unified protocol definitions" DESCRIPTION = "This package provides the headers and specification documents defining \ the core protocol and (many) extensions for the X Window System" @@ -7,11 +6,10 @@ BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" SECTION = "x11/libs" LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=b9e051107d5628966739a0b2e9b32676" +LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=dfc4bd2b0568b31725b85b0604e69b56" SRC_URI = "${XORG_MIRROR}/individual/proto/${BP}.tar.bz2" -SRC_URI[md5sum] = "c29f4fa78f53b52b3efdc71ebd9506b6" -SRC_URI[sha256sum] = "54a153f139035a376c075845dd058049177212da94d7a9707cf9468367b699d2" +SRC_URI[sha256sum] = "c38878053179c6f8bc2daeeeeb4710b5fbf0e46db5b3134aee4a1977ffb06e7a" inherit meson diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc index b3e03744c..da025171d 100644 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc +++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc @@ -122,7 +122,6 @@ EXTRA_OECONF += "--with-fop=no \ OPENGL_PKGCONFIGS = "dri glx glamor dri3 xshmfence" PACKAGECONFIG ??= "dga dri2 udev ${XORG_CRYPTO} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '${OPENGL_PKGCONFIGS}', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl wayland', 'xwayland', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-logind', '', d)} \ " diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.10.bb b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.11.bb index 5c6dbac4d..1eb2056b8 100644 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.10.bb +++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.11.bb @@ -8,7 +8,7 @@ SRC_URI += "file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.pat file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \ file://0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch \ " -SRC_URI[sha256sum] = "977420c082450dc808de301ef56af4856d653eea71519a973c3490a780cb7c99" +SRC_URI[sha256sum] = "914c796e3ffabe1af48071d40ccc85e92117c97a9082ed1df29e4d64e3c34c49" # These extensions are now integrated into the server, so declare the migration # path for in-place upgrades. diff --git a/poky/meta/recipes-graphics/xwayland/xwayland_21.1.1.bb b/poky/meta/recipes-graphics/xwayland/xwayland_21.1.1.bb new file mode 100644 index 000000000..8b1c96fc4 --- /dev/null +++ b/poky/meta/recipes-graphics/xwayland/xwayland_21.1.1.bb @@ -0,0 +1,26 @@ +SUMMARY = "XWayland is an X Server that runs under Wayland." +DESCRIPTION = "XWayland is an X Server running as a Wayland client, \ +and thus is capable of displaying native X11 client applications in a \ +Wayland compositor environment. The goal of XWayland is to facilitate \ +the transition from X Window System to Wayland environments, providing \ +a way to run unported applications in the meantime." +HOMEPAGE = "https://fedoraproject.org/wiki/Changes/XwaylandStandalone" + +LICENSE = "MIT-X" +LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880" + +SRC_URI = "https://www.x.org/archive/individual/xserver/xwayland-${PV}.tar.xz" +SRC_URI[sha256sum] = "31f261ce51bbee76a6ca3ec02aa367ffa2b5efa2b98412df57ccefd7a19003ce" + +inherit meson features_check +REQUIRED_DISTRO_FEATURES = "x11 opengl" + +DEPENDS += "xorgproto xtrans pixman libxkbfile libxfont2 wayland wayland-native wayland-protocols libdrm libepoxy" + +do_install_append() { + # remove files not needed and clashing with xserver-xorg + rm -rf ${D}/${libdir}/xorg/ +} + +FILES_${PN} += "${libdir}/xorg/protocol.txt" + diff --git a/poky/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch b/poky/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch deleted file mode 100644 index 7b58568d5..000000000 --- a/poky/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch +++ /dev/null @@ -1,150 +0,0 @@ -From d61ff409cb4dda31386373d706ea0cfb1aaac5b7 Mon Sep 17 00:00:00 2001 -From: Jens Axboe <axboe@kernel.dk> -Date: Wed, 2 May 2018 10:24:17 -0600 -Subject: [PATCH] btt: make device/devno use PATH_MAX to avoid overflow - -Herbo Zhang reports: - -I found a bug in blktrace/btt/devmap.c. The code is just as follows: - -https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git/tree/btt/devmap.c?id=8349ad2f2d19422a6241f94ea84d696b21de4757 - - struct devmap { - -struct list_head head; -char device[32], devno[32]; // #1 -}; - -LIST_HEAD(all_devmaps); - -static int dev_map_add(char *line) -{ -struct devmap *dmp; - -if (strstr(line, "Device") != NULL) -return 1; - -dmp = malloc(sizeof(struct devmap)); -if (sscanf(line, "%s %s", dmp->device, dmp->devno) != 2) { //#2 -free(dmp); -return 1; -} - -list_add_tail(&dmp->head, &all_devmaps); -return 0; -} - -int dev_map_read(char *fname) -{ -char line[256]; // #3 -FILE *fp = my_fopen(fname, "r"); - -if (!fp) { -perror(fname); -return 1; -} - -while (fscanf(fp, "%255[a-zA-Z0-9 :.,/_-]\n", line) == 1) { -if (dev_map_add(line)) -break; -} - -fclose(fp); -return 0; -} - - The line length is 256, but the dmp->device, dmp->devno max length -is only 32. We can put strings longer than 32 into dmp->device and -dmp->devno , and then they will be overflowed. - - we can trigger this bug just as follows: - - $ python -c "print 'A'*256" > ./test - $ btt -M ./test - - *** Error in btt': free(): invalid next size (fast): 0x000055ad7349b250 *** - ======= Backtrace: ========= - /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f7f158ce7e5] - /lib/x86_64-linux-gnu/libc.so.6(+0x7fe0a)[0x7f7f158d6e0a] - /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f7f158da98c] - btt(+0x32e0)[0x55ad7306f2e0] - btt(+0x2c5f)[0x55ad7306ec5f] - btt(+0x251f)[0x55ad7306e51f] - /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f7f15877830] - btt(+0x26b9)[0x55ad7306e6b9] - ======= Memory map: ======== - 55ad7306c000-55ad7307f000 r-xp 00000000 08:14 3698139 - /usr/bin/btt - 55ad7327e000-55ad7327f000 r--p 00012000 08:14 3698139 - /usr/bin/btt - 55ad7327f000-55ad73280000 rw-p 00013000 08:14 3698139 - /usr/bin/btt - 55ad73280000-55ad73285000 rw-p 00000000 00:00 0 - 55ad7349a000-55ad734bb000 rw-p 00000000 00:00 0 - [heap] - 7f7f10000000-7f7f10021000 rw-p 00000000 00:00 0 - 7f7f10021000-7f7f14000000 ---p 00000000 00:00 0 - 7f7f15640000-7f7f15656000 r-xp 00000000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15656000-7f7f15855000 ---p 00016000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15855000-7f7f15856000 r--p 00015000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15856000-7f7f15857000 rw-p 00016000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15857000-7f7f15a16000 r-xp 00000000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15a16000-7f7f15c16000 ---p 001bf000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15c16000-7f7f15c1a000 r--p 001bf000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15c1a000-7f7f15c1c000 rw-p 001c3000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15c1c000-7f7f15c20000 rw-p 00000000 00:00 0 - 7f7f15c20000-7f7f15c46000 r-xp 00000000 08:14 14948478 - /lib/x86_64-linux-gnu/ld-2.23.so - 7f7f15e16000-7f7f15e19000 rw-p 00000000 00:00 0 - 7f7f15e42000-7f7f15e45000 rw-p 00000000 00:00 0 - 7f7f15e45000-7f7f15e46000 r--p 00025000 08:14 14948478 - /lib/x86_64-linux-gnu/ld-2.23.so - 7f7f15e46000-7f7f15e47000 rw-p 00026000 08:14 14948478 - /lib/x86_64-linux-gnu/ld-2.23.so - 7f7f15e47000-7f7f15e48000 rw-p 00000000 00:00 0 - 7ffdebe5c000-7ffdebe7d000 rw-p 00000000 00:00 0 - [stack] - 7ffdebebc000-7ffdebebe000 r--p 00000000 00:00 0 - [vvar] - 7ffdebebe000-7ffdebec0000 r-xp 00000000 00:00 0 - [vdso] - ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 - [vsyscall] - [1] 6272 abort btt -M test - -Signed-off-by: Jens Axboe <axboe@kernel.dk> - -Upstream-Status: Backport -[https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git/commit/?id=d61ff409cb4dda31386373d706ea0cfb1aaac5b7] - -CVE: CVE-2018-10689 - -Signed-off-by: Yi Zhao <yi.zhao@windriver.com> ---- - btt/devmap.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/btt/devmap.c b/btt/devmap.c -index 0553a9e..5fc1cb2 100644 ---- a/btt/devmap.c -+++ b/btt/devmap.c -@@ -23,7 +23,7 @@ - - struct devmap { - struct list_head head; -- char device[32], devno[32]; -+ char device[PATH_MAX], devno[PATH_MAX]; - }; - - LIST_HEAD(all_devmaps); --- -2.7.4 - diff --git a/poky/meta/recipes-kernel/blktrace/blktrace/ldflags.patch b/poky/meta/recipes-kernel/blktrace/blktrace/ldflags.patch deleted file mode 100644 index ab905cf0d..000000000 --- a/poky/meta/recipes-kernel/blktrace/blktrace/ldflags.patch +++ /dev/null @@ -1,114 +0,0 @@ -blktrace: obey LDFLAGS - -Upstream-Status: Pending - -Signed-off-by: Christopher Larson <chris_larson@mentor.com> - -the patch was imported from meta-mentor layer on yoctoproject git server -http://git.yoctoproject.org/cgit/cgit.cgi/meta-mentor as of commit id -aed463414e2e2bf8ca44ba54ee5973e7ed599e57 - -Signed-off-by: Fahad Usman <fahad_usman@mentor.com> - -Index: git/Makefile -=================================================================== ---- git.orig/Makefile -+++ git/Makefile -@@ -1,5 +1,6 @@ - CC = gcc - CFLAGS = -Wall -O2 -g -W -+LDFLAGS = - ALL_CFLAGS = $(CFLAGS) -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 - PROGS = blkparse blktrace verify_blkparse blkrawverify blkiomon - LIBS = -lpthread -@@ -26,19 +27,19 @@ btreplay/btreplay: - $(CC) -o $*.o -c $(ALL_CFLAGS) $< - - blkparse: blkparse.o blkparse_fmt.o rbtree.o act_mask.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - blktrace: blktrace.o act_mask.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS) - - verify_blkparse: verify_blkparse.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - blkrawverify: blkrawverify.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - blkiomon: blkiomon.o rbtree.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -lrt -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -lrt $(LDFLAGS) - - $(PROGS): | depend - -Index: git/btreplay/Makefile -=================================================================== ---- git.orig/btreplay/Makefile -+++ git/btreplay/Makefile -@@ -7,6 +7,7 @@ - - CC = gcc - CFLAGS = -Wall -W -O2 -g -+LDFLAGS = - INCS = -I. -I.. -I../btt - OCFLAGS = -UCOUNT_IOS -UDEBUG -DNDEBUG - XCFLAGS = -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -@@ -32,10 +33,10 @@ clean: docsclean - $(CC) $(CFLAGS) -c -o $*.o $< - - btrecord: btrecord.o -- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - btreplay: btreplay.o -- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS) - - depend: - @$(CC) -MM $(CFLAGS) *.c 1> .depend -Index: git/btt/Makefile -=================================================================== ---- git.orig/btt/Makefile -+++ git/btt/Makefile -@@ -7,6 +7,7 @@ - - CC = gcc - CFLAGS = -Wall -W -O2 -g -+LDFLAGS = - INCS = -I. -I.. - XCFLAGS = -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 - override CFLAGS += $(INCS) $(XCFLAGS) -@@ -38,7 +39,7 @@ clean: docsclean - $(CC) $(CFLAGS) -c -o $*.o $< - - btt: $(OBJS) -- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS) - - ifneq ($(wildcard .depend),) - include .depend -Index: git/iowatcher/Makefile -=================================================================== ---- git.orig/iowatcher/Makefile -+++ git/iowatcher/Makefile -@@ -1,5 +1,6 @@ - CC = gcc - CFLAGS = -Wall -O2 -g -W -Wunused-result -+LDFLAGS = - ALL_CFLAGS = $(CFLAGS) -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 - - PROGS = iowatcher -@@ -19,7 +20,7 @@ all: $(ALL) - $(CC) -o $*.o -c $(ALL_CFLAGS) $< - - iowatcher: blkparse.o plot.o main.o tracers.o mpstat.o fio.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm -lrt -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm $(LDFLAGS) -lrt - - depend: - @$(CC) -MM $(ALL_CFLAGS) *.c 1> .depend diff --git a/poky/meta/recipes-kernel/blktrace/blktrace/make-btt-scripts-python3-ready.patch b/poky/meta/recipes-kernel/blktrace/blktrace/make-btt-scripts-python3-ready.patch deleted file mode 100644 index 3b0c1c692..000000000 --- a/poky/meta/recipes-kernel/blktrace/blktrace/make-btt-scripts-python3-ready.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 70d5ca2d5f3d6b97c11c641b7e0c5836983219a0 Mon Sep 17 00:00:00 2001 -From: Eric Sandeen <sandeen@redhat.com> -Date: Wed, 28 Mar 2018 15:26:36 -0500 -Subject: [oe-core][PATCH 1/1] make btt scripts python3-ready - -Many distributions are moving to python3 by default. Here's -an attempt to make the python scripts in blktrace python3-ready. - -Most of this was done with automated tools. I hand fixed some -space-vs tab issues, and cast an array index to integer. It -passes rudimentary testing when run under python2.7 as well -as python3. - -This doesn't do anything with the shebangs, it leaves them both -invoking whatever "env python" coughs up on the system. - -Signed-off-by: Eric Sandeen <sandeen@redhat.com> -Signed-off-by: Jens Axboe <axboe@kernel.dk> - -Unchanged except to modify shebangs to use python3 since -oe-core does not support python2 anymore. - -Upstream-Status: Backport [git://git.kernel.dk/blktrace.git commit 70d5ca2d5...] - -Signed-off-by: Joe Slater <joe.slater@windriver.com> - ---- - btt/bno_plot.py | 28 +++++++++++++++------------- - btt/btt_plot.py | 22 +++++++++++++--------- - 2 files changed, 28 insertions(+), 22 deletions(-) - ---- git.orig/btt/bno_plot.py -+++ git/btt/bno_plot.py -@@ -1,4 +1,4 @@ --#! /usr/bin/env python -+#! /usr/bin/env python3 - # - # btt blkno plotting interface - # -@@ -38,6 +38,8 @@ automatically push the keys under the gr - To exit the plotter, enter 'quit' or ^D at the 'gnuplot> ' prompt. - """ - -+from __future__ import absolute_import -+from __future__ import print_function - import getopt, glob, os, sys, tempfile - - verbose = 0 -@@ -60,14 +62,14 @@ def parse_args(in_args): - - try: - (opts, args) = getopt.getopt(in_args, s_opts, l_opts) -- except getopt.error, msg: -- print >>sys.stderr, msg -- print >>sys.stderr, __doc__ -+ except getopt.error as msg: -+ print(msg, file=sys.stderr) -+ print(__doc__, file=sys.stderr) - sys.exit(1) - - for (o, a) in opts: - if o in ('-h', '--help'): -- print __doc__ -+ print(__doc__) - sys.exit(0) - elif o in ('-v', '--verbose'): - verbose += 1 -@@ -84,10 +86,10 @@ if __name__ == '__main__': - (bnos, keys_below) = parse_args(sys.argv[1:]) - - if verbose: -- print 'Using files:', -- for bno in bnos: print bno, -- if keys_below: print '\nKeys are to be placed below graph' -- else: print '' -+ print('Using files:', end=' ') -+ for bno in bnos: print(bno, end=' ') -+ if keys_below: print('\nKeys are to be placed below graph') -+ else: print('') - - tmpdir = tempfile.mktemp() - os.mkdir(tmpdir) -@@ -99,7 +101,7 @@ if __name__ == '__main__': - fo = open(t, 'w') - for line in open(f, 'r'): - fld = line.split(None) -- print >>fo, fld[0], fld[1], int(fld[2])-int(fld[1]) -+ print(fld[0], fld[1], int(fld[2])-int(fld[1]), file=fo) - fo.close() - - t = t[t.rfind('/')+1:] -@@ -107,16 +109,16 @@ if __name__ == '__main__': - else: plot_cmd = "%s,'%s'" % (plot_cmd, t) - - fo = open('%s/plot.cmds' % tmpdir, 'w') -- print >>fo, cmds -- if len(bnos) > 10 or keys_below: print >>fo, 'set key below' -- print >>fo, plot_cmd -+ print(cmds, file=fo) -+ if len(bnos) > 10 or keys_below: print('set key below', file=fo) -+ print(plot_cmd, file=fo) - fo.close() - - pid = os.fork() - if pid == 0: - cmd = 'gnuplot %s/plot.cmds -' % tmpdir - -- if verbose: print 'Executing %s' % cmd -+ if verbose: print('Executing %s' % cmd) - - os.chdir(tmpdir) - os.system(cmd) ---- git.orig/btt/btt_plot.py -+++ git/btt/btt_plot.py -@@ -1,4 +1,4 @@ --#! /usr/bin/env python -+#! /usr/bin/env python3 - # - # btt_plot.py: Generate matplotlib plots for BTT generate data files - # -@@ -55,6 +55,10 @@ Arguments: - but the -o (--output) and -T (--title) options will be ignored. - """ - -+from __future__ import absolute_import -+from __future__ import print_function -+import six -+from six.moves import range - __author__ = 'Alan D. Brunelle <alan.brunelle@hp.com>' - - #------------------------------------------------------------------------------ -@@ -82,7 +86,7 @@ get_base = lambda file: file[file.find( - def fatal(msg): - """Generate fatal error message and exit""" - -- print >>sys.stderr, 'FATAL: %s' % msg -+ print('FATAL: %s' % msg, file=sys.stderr) - sys.exit(1) - - #------------------------------------------------------------------------------ -@@ -163,7 +167,7 @@ def get_data(files): - if not os.path.exists(file): - fatal('%s not found' % file) - elif verbose: -- print 'Processing %s' % file -+ print('Processing %s' % file) - - xs = [] - ys = [] -@@ -214,8 +218,8 @@ def parse_args(args): - - try: - (opts, args) = getopt.getopt(args[1:], s_opts, l_opts) -- except getopt.error, msg: -- print >>sys.stderr, msg -+ except getopt.error as msg: -+ print(msg, file=sys.stderr) - fatal(__doc__) - - for (o, a) in opts: -@@ -293,15 +297,15 @@ def generate_output(type, db): - def color(idx, style): - """Returns a color/symbol type based upon the index passed.""" - -- colors = [ 'b', 'g', 'r', 'c', 'm', 'y', 'k' ] -+ colors = [ 'b', 'g', 'r', 'c', 'm', 'y', 'k' ] - l_styles = [ '-', ':', '--', '-.' ] - m_styles = [ 'o', '+', '.', ',', 's', 'v', 'x', '<', '>' ] - - color = colors[idx % len(colors)] - if style == 'line': -- style = l_styles[(idx / len(l_styles)) % len(l_styles)] -+ style = l_styles[int((idx / len(l_styles)) % len(l_styles))] - elif style == 'marker': -- style = m_styles[(idx / len(m_styles)) % len(m_styles)] -+ style = m_styles[int((idx / len(m_styles)) % len(m_styles))] - - return '%s%s' % (color, style) - -@@ -314,7 +318,7 @@ def generate_output(type, db): - ofile = '%s.png' % type - - if verbose: -- print 'Generating plot into %s' % ofile -+ print('Generating plot into %s' % ofile) - - fig = plt.figure(figsize=plot_size) - ax = fig.add_subplot(111) -@@ -329,7 +333,7 @@ def generate_output(type, db): - legends = None - - keys = [] -- for file in db.iterkeys(): -+ for file in six.iterkeys(db): - if not file in ['min_x', 'max_x', 'min_y', 'max_y']: - keys.append(file) - diff --git a/poky/meta/recipes-kernel/blktrace/blktrace_git.bb b/poky/meta/recipes-kernel/blktrace/blktrace_git.bb index 7ccc022b9..d00b1bd0b 100644 --- a/poky/meta/recipes-kernel/blktrace/blktrace_git.bb +++ b/poky/meta/recipes-kernel/blktrace/blktrace_git.bb @@ -10,15 +10,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833" DEPENDS = "libaio" -SRCREV = "cca113f2fe0759b91fd6a0e10fdcda2c28f18a7e" +SRCREV = "366d30b9cdb20345c5d064af850d686da79b89eb" -PV = "1.2.0+git${SRCPV}" +PV = "1.3.0+git${SRCPV}" -SRC_URI = "git://git.kernel.dk/blktrace.git \ - file://ldflags.patch \ - file://CVE-2018-10689.patch \ - file://make-btt-scripts-python3-ready.patch \ -" +SRC_URI = "git://git.kernel.dk/blktrace.git" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-kernel/dtc/dtc/0001-fdtdump-Fix-gcc11-warning.patch b/poky/meta/recipes-kernel/dtc/dtc/0001-fdtdump-Fix-gcc11-warning.patch deleted file mode 100644 index ec825cbf7..000000000 --- a/poky/meta/recipes-kernel/dtc/dtc/0001-fdtdump-Fix-gcc11-warning.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 4827e0db6c4f7dea7f4094f49d3bb48ef6dfdc2d Mon Sep 17 00:00:00 2001 -From: David Gibson <david@gibson.dropbear.id.au> -Date: Wed, 6 Jan 2021 14:52:26 +1100 -Subject: [PATCH] fdtdump: Fix gcc11 warning - -In one place, fdtdump abuses fdt_set_magic(), passing it just a small char -array instead of the full fdt header it expects. That's relying on the -fact that in fact fdt_set_magic() will only actually access the first 4 -bytes of the buffer. - -This trips a new warning in GCC 11 - and it's entirely possible it was -always UB. So, don't do that. - -Upstream-Status: Backport [https://git.kernel.org/pub/scm/utils/dtc/dtc.git/patch/?id=ca16a723fa9dde9c5da80dba567f48715000e77c] -Signed-off-by: David Gibson <david@gibson.dropbear.id.au> ---- - fdtdump.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fdtdump.c b/fdtdump.c -index 9613bef..d9fb374 100644 ---- a/fdtdump.c -+++ b/fdtdump.c -@@ -217,7 +217,7 @@ int main(int argc, char *argv[]) - char *p = buf; - char *endp = buf + len; - -- fdt_set_magic(smagic, FDT_MAGIC); -+ fdt32_st(smagic, FDT_MAGIC); - - /* poor man's memmem */ - while ((endp - p) >= FDT_MAGIC_SIZE) { --- -2.30.1 - diff --git a/poky/meta/recipes-kernel/dtc/dtc_1.6.0.bb b/poky/meta/recipes-kernel/dtc/dtc_1.6.1.bb index a40713785..de9a46d3e 100644 --- a/poky/meta/recipes-kernel/dtc/dtc_1.6.0.bb +++ b/poky/meta/recipes-kernel/dtc/dtc_1.6.1.bb @@ -3,9 +3,7 @@ require dtc.inc LIC_FILES_CHKSUM = "file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://libfdt/libfdt.h;beginline=4;endline=7;md5=05bb357cfb75cae7d2b01d2ee8d76407" -SRCREV = "2525da3dba9beceb96651dc2986581871dbeca30" - -SRC_URI += "file://0001-fdtdump-Fix-gcc11-warning.patch" +SRCREV = "b6910bec11614980a21e46fbccc35934b671bd81" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb index 1d900d85f..e967f485c 100644 --- a/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb +++ b/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb @@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://tools/kgit;beginline=5;endline=9;md5=9c30e971d435e249 DEPENDS = "git-native" -SRCREV = "8f6aaab7f64c6de30d267e31a73f7c3bb30125a9" +SRCREV = "d220b063852245fdd16b9731a395ace525f932d6" PR = "r12" PV = "0.2+git${SRCPV}" diff --git a/poky/meta/recipes-kernel/kexec/kexec-tools_2.0.21.bb b/poky/meta/recipes-kernel/kexec/kexec-tools_2.0.22.bb index 069e8f4d0..dcc440211 100644 --- a/poky/meta/recipes-kernel/kexec/kexec-tools_2.0.21.bb +++ b/poky/meta/recipes-kernel/kexec/kexec-tools_2.0.22.bb @@ -22,7 +22,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz file://0001-kexec-arch-ppc-kexec-ppc.c-correct-double-definition.patch \ " -SRC_URI[sha256sum] = "b3d4cfd2ba10d68ce341ea3b8ca414d00a0b6183b95686172154f94bce834f94" +SRC_URI[sha256sum] = "40623d4321be2865ef9ea2cd6ec998d31dcf93d0f74353cbd3aa06d8821e3e41" inherit autotools update-rc.d systemd diff --git a/poky/meta/recipes-kernel/kmod/kmod.inc b/poky/meta/recipes-kernel/kmod/kmod.inc index ccda9f2b7..e66684fda 100644 --- a/poky/meta/recipes-kernel/kmod/kmod.inc +++ b/poky/meta/recipes-kernel/kmod/kmod.inc @@ -15,9 +15,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ " inherit autotools gtk-doc pkgconfig manpages -SRCREV = "1ccfe994287119cc6cef37a7ca4c529d89de4b95" +SRCREV = "b6ecfc916a17eab8f93be5b09f4e4f845aabd3d1" # Lookout for PV bump too when SRCREV is changed -PV = "28" +PV = "29" SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \ file://depmod-search.conf \ @@ -26,7 +26,6 @@ SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \ S = "${WORKDIR}/git" -EXTRA_AUTORECONF += "--install --symlink" EXTRA_OECONF +=" --enable-tools --with-zlib" PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210208.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210511.bb index 78856cbf6..26091fba7 100644 --- a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210208.bb +++ b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210511.bb @@ -132,7 +132,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \ file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \ file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \ - file://WHENCE;md5=ef0565762eac313c409567b59dff00b2 \ + file://WHENCE;md5=727d0d4e2d420f41d89d098f6322e779 \ " # These are not common licenses, set NO_GENERIC_LICENSE for them @@ -205,7 +205,7 @@ PE = "1" SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "1bcb1a3944c361507754a7d26ccff40ffc28d1fb93bce711d67da26b33e785b7" +SRC_URI[sha256sum] = "2aa6ae8b9808408f9811ac38f00c188e53e984a2b3990254f6c9c02c1ab13417" inherit allarch @@ -229,6 +229,7 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \ ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \ ${PN}-vt6656-license ${PN}-vt6656 \ + ${PN}-rs9113 ${PN}-rs9116 \ ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \ ${PN}-rtl8168 \ ${PN}-cypress-license \ @@ -529,6 +530,16 @@ RDEPENDS_${PN}-nvidia-gpu += "${PN}-nvidia-license" RDEPENDS_${PN}-nvidia-tegra += "${PN}-nvidia-license" RDEPENDS_${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license" +# For RSI RS911x WiFi +LICENSE_${PN}-rs9113 = "WHENCE" +LICENSE_${PN}-rs9116 = "WHENCE" + +FILES_${PN}-rs9113 = " ${nonarch_base_libdir}/firmware/rsi/rs9113*.rps " +FILES_${PN}-rs9116 = " ${nonarch_base_libdir}/firmware/rsi/rs9116*.rps " + +RDEPENDS_${PN}-rs9113 += "${PN}-whence-license" +RDEPENDS_${PN}-rs9116 += "${PN}-whence-license" + # For rtl LICENSE_${PN}-rtl8188 = "Firmware-rtlwifi_firmware" LICENSE_${PN}-rtl8192cu = "Firmware-rtlwifi_firmware" @@ -645,8 +656,8 @@ FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio. " FILES_${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin" FILES_${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin" -FILES_${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.bin \ - ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.bin \ +FILES_${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.* \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.* \ " FILES_${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin" FILES_${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin \ diff --git a/poky/meta/recipes-kernel/linux/kernel-devsrc.bb b/poky/meta/recipes-kernel/linux/kernel-devsrc.bb index 455c83652..84e99233e 100644 --- a/poky/meta/recipes-kernel/linux/kernel-devsrc.bb +++ b/poky/meta/recipes-kernel/linux/kernel-devsrc.bb @@ -272,6 +272,8 @@ do_install() { sed -i 's/ifneq "$(CC)" ".*-linux-.*gcc.*$/ifneq "$(CC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd" sed -i 's/ifneq "$(LD)" ".*-linux-.*ld.bfd.*$/ifneq "$(LD)" "ld"/' "$kerneldir/build/include/config/auto.conf.cmd" sed -i 's/ifneq "$(AR)" ".*-linux-.*ar.*$/ifneq "$(AR)" "ar"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(OBJCOPY)" ".*-linux-.*objcopy.*$/ifneq "$(OBJCOPY)" "objcopy"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(NM)" ".*-linux-.*nm.*$/ifneq "$(NM)" "nm"/' "$kerneldir/build/include/config/auto.conf.cmd" sed -i 's/ifneq "$(HOSTCXX)" ".*$/ifneq "$(HOSTCXX)" "g++"/' "$kerneldir/build/include/config/auto.conf.cmd" sed -i 's/ifneq "$(HOSTCC)" ".*$/ifneq "$(HOSTCC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd" sed -i 's/ifneq "$(CC_VERSION_TEXT)".*\(gcc.*\)"/ifneq "$(CC_VERSION_TEXT)" "\1"/' "$kerneldir/build/include/config/auto.conf.cmd" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb index 8725473d1..f40788231 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb @@ -30,7 +30,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name SRCREV_machine ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}' SRCREV_meta ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}' -LINUX_VERSION ?= "5.12+" +LINUX_VERSION ?= "5.13+" LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}" PV = "${LINUX_VERSION}+git${SRCPV}" @@ -50,5 +50,7 @@ KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" +KERNEL_FEATURES_append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" +KERNEL_FEATURES_append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}" KERNEL_VERSION_SANITY_SKIP = "1" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb index cb34887cd..877e8d294 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb @@ -11,13 +11,13 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "be2935bce35f9adb6d0e735d42651e81a5094adf" -SRCREV_meta ?= "031f6c76e488a3563f35258c72ff1de3e25a512e" +SRCREV_machine ?= "6186341e981ad4fd3941c7c9af509923bbe2a2a5" +SRCREV_meta ?= "67dad5ca86bd47dbbaa2194b9854c228055dfd37" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" -LINUX_VERSION ?= "5.10.25" +LINUX_VERSION ?= "5.10.43" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb index 2ffc8ed54..432289292 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb @@ -11,13 +11,13 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "65bbe689d98a007848008be2c8edeb5fa8066829" -SRCREV_meta ?= "19738ca97b999a3b150e2d34232bb44b6537348f" +SRCREV_machine ?= "08b154b1c1f1c85db88295a4169dff6826c2e383" +SRCREV_meta ?= "656383210d369bbd49a7a278c6c7c7313f0df825" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA}" -LINUX_VERSION ?= "5.4.107" +LINUX_VERSION ?= "5.4.125" LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb index 83e59b0eb..b44deb6f3 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb @@ -6,7 +6,7 @@ KCONFIG_MODE = "--allnoconfig" require recipes-kernel/linux/linux-yocto.inc -LINUX_VERSION ?= "5.10.25" +LINUX_VERSION ?= "5.10.43" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" @@ -15,9 +15,9 @@ DEPENDS += "openssl-native util-linux-native" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "2" -SRCREV_machine_qemuarm ?= "0f87ec9fea7a5695cd063d9d11d89751efa53ddd" -SRCREV_machine ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_meta ?= "031f6c76e488a3563f35258c72ff1de3e25a512e" +SRCREV_machine_qemuarm ?= "9c63dda7dd5834bf731747d6ae03ae13d48e20e3" +SRCREV_machine ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_meta ?= "67dad5ca86bd47dbbaa2194b9854c228055dfd37" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb index 2b6e35a69..6c93e2b16 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb @@ -6,7 +6,7 @@ KCONFIG_MODE = "--allnoconfig" require recipes-kernel/linux/linux-yocto.inc -LINUX_VERSION ?= "5.4.107" +LINUX_VERSION ?= "5.4.125" LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" @@ -15,9 +15,9 @@ DEPENDS += "openssl-native util-linux-native" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "2" -SRCREV_machine_qemuarm ?= "ac3cbab1d6692d4a032dfffe0a604f39a634d18a" -SRCREV_machine ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72" -SRCREV_meta ?= "19738ca97b999a3b150e2d34232bb44b6537348f" +SRCREV_machine_qemuarm ?= "35f9751972b9fba920b1666228a35e5ce0b04440" +SRCREV_machine ?= "bcd119e358de95fb4b8ff6d560e5dab8b8a5ecee" +SRCREV_meta ?= "656383210d369bbd49a7a278c6c7c7313f0df825" PV = "${LINUX_VERSION}+git${SRCPV}" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb index 026e69511..f99782c1b 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb @@ -13,17 +13,17 @@ KBRANCH_qemux86 ?= "v5.10/standard/base" KBRANCH_qemux86-64 ?= "v5.10/standard/base" KBRANCH_qemumips64 ?= "v5.10/standard/mti-malta64" -SRCREV_machine_qemuarm ?= "d8551cae1ccdbe062a5c6068ce39ea8f4e1c72db" -SRCREV_machine_qemuarm64 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_machine_qemumips ?= "7f1f1ad2f2d90b1b070c6b0a82f0add9aa492e37" -SRCREV_machine_qemuppc ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_machine_qemuriscv64 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_machine_qemuriscv32 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_machine_qemux86 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_machine_qemux86-64 ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_machine_qemumips64 ?= "fd5ac097b891642eea13659bea536f3ec5910d6d" -SRCREV_machine ?= "cf5b0320cf4544d3db9ce3ddd6ddb7553a610651" -SRCREV_meta ?= "031f6c76e488a3563f35258c72ff1de3e25a512e" +SRCREV_machine_qemuarm ?= "2fc3409cf8c2a6d684929576fd409949060a0bd9" +SRCREV_machine_qemuarm64 ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_qemumips ?= "5cec6d1ab35feb99f023b233871cafa29e3c3682" +SRCREV_machine_qemuppc ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_qemuriscv64 ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_qemuriscv32 ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_qemux86 ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_qemux86-64 ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_machine_qemumips64 ?= "769a7118662a2256e20df60be9c9727f9c5878b0" +SRCREV_machine ?= "ab49d2db98bdee2c8c6e17fb59ded9e5292b0f41" +SRCREV_meta ?= "67dad5ca86bd47dbbaa2194b9854c228055dfd37" # remap qemuarm to qemuarma15 for the 5.8 kernel # KMACHINE_qemuarm ?= "qemuarma15" @@ -32,7 +32,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -LINUX_VERSION ?= "5.10.25" +LINUX_VERSION ?= "5.10.43" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" DEPENDS += "openssl-native util-linux-native" diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb index 245c3d574..7edab4931 100644 --- a/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb +++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.4.bb @@ -12,16 +12,16 @@ KBRANCH_qemux86 ?= "v5.4/standard/base" KBRANCH_qemux86-64 ?= "v5.4/standard/base" KBRANCH_qemumips64 ?= "v5.4/standard/mti-malta64" -SRCREV_machine_qemuarm ?= "ea4097dbff5a148265018e1a998e02b5a05e3d27" -SRCREV_machine_qemuarm64 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72" -SRCREV_machine_qemumips ?= "230ca33504faef6f40c5d3b24901aaacb901c9a6" -SRCREV_machine_qemuppc ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72" -SRCREV_machine_qemuriscv64 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72" -SRCREV_machine_qemux86 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72" -SRCREV_machine_qemux86-64 ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72" -SRCREV_machine_qemumips64 ?= "84e071a893ef9cea8a8ffbcd233b47a2bc9056b5" -SRCREV_machine ?= "cf76c5c0dc0edd51ae4a75a1f8701a2675e87c72" -SRCREV_meta ?= "19738ca97b999a3b150e2d34232bb44b6537348f" +SRCREV_machine_qemuarm ?= "b523a950c926e2d7475768b504e46fa618a3b891" +SRCREV_machine_qemuarm64 ?= "bcd119e358de95fb4b8ff6d560e5dab8b8a5ecee" +SRCREV_machine_qemumips ?= "bff59892e827bc85e85fef518305007a787812aa" +SRCREV_machine_qemuppc ?= "bcd119e358de95fb4b8ff6d560e5dab8b8a5ecee" +SRCREV_machine_qemuriscv64 ?= "bcd119e358de95fb4b8ff6d560e5dab8b8a5ecee" +SRCREV_machine_qemux86 ?= "bcd119e358de95fb4b8ff6d560e5dab8b8a5ecee" +SRCREV_machine_qemux86-64 ?= "bcd119e358de95fb4b8ff6d560e5dab8b8a5ecee" +SRCREV_machine_qemumips64 ?= "e25b97140f5d46ac437cd8a1d9ecc235cbf462b5" +SRCREV_machine ?= "bcd119e358de95fb4b8ff6d560e5dab8b8a5ecee" +SRCREV_meta ?= "656383210d369bbd49a7a278c6c7c7313f0df825" # remap qemuarm to qemuarma15 for the 5.4 kernel # KMACHINE_qemuarm ?= "qemuarma15" @@ -30,7 +30,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA}" LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" -LINUX_VERSION ?= "5.4.107" +LINUX_VERSION ?= "5.4.125" DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" DEPENDS += "openssl-native util-linux-native" diff --git a/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb b/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb index 32ba75bf3..7fb524eeb 100644 --- a/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb +++ b/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb @@ -12,7 +12,7 @@ SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0 \ file://0001-tests-do-not-run-test-applications-from-.libs.patch \ file://0001-Make-manpages-multilib-identical.patch \ " -SRCREV = "91d154476e66735d705adda9ca5cbf5b5eea5940" +SRCREV = "23e8cf4e6fdc1d0b230e964dafac08a57e6228e6" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-memory-leaks-on-event-destroy.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-memory-leaks-on-event-destroy.patch deleted file mode 100644 index 21da932a7..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-memory-leaks-on-event-destroy.patch +++ /dev/null @@ -1,58 +0,0 @@ -From b3fdf78b15beb940918da1e41eb68e24ba31bb87 Mon Sep 17 00:00:00 2001 -From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Date: Wed, 3 Mar 2021 10:10:16 -0500 -Subject: [PATCH 1/4] Fix: memory leaks on event destroy - -Both filter runtime and event enabler ref objects are owned by the -event, but are not freed upon destruction of the event object, thus -leaking memory. - -Upstream-status: backport - -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Change-Id: Ice9b1c18b47584838aea2b965494d3c8391f4c84 ---- - lttng-events.c | 7 +++++++ - lttng-events.h | 1 + - 2 files changed, 8 insertions(+) - -diff --git a/lttng-events.c b/lttng-events.c -index f3398adc..984bd341 100644 ---- a/lttng-events.c -+++ b/lttng-events.c -@@ -919,6 +919,8 @@ int _lttng_event_unregister(struct lttng_event *event) - static - void _lttng_event_destroy(struct lttng_event *event) - { -+ struct lttng_enabler_ref *enabler_ref, *tmp_enabler_ref; -+ - switch (event->instrumentation) { - case LTTNG_KERNEL_TRACEPOINT: - lttng_event_put(event->desc); -@@ -944,6 +946,11 @@ void _lttng_event_destroy(struct lttng_event *event) - } - list_del(&event->list); - lttng_destroy_context(event->ctx); -+ lttng_free_event_filter_runtime(event); -+ /* Free event enabler refs */ -+ list_for_each_entry_safe(enabler_ref, tmp_enabler_ref, -+ &event->enablers_ref_head, node) -+ kfree(enabler_ref); - kmem_cache_free(event_cache, event); - } - -diff --git a/lttng-events.h b/lttng-events.h -index 1b9ab167..13b6abf5 100644 ---- a/lttng-events.h -+++ b/lttng-events.h -@@ -716,6 +716,7 @@ int lttng_enabler_attach_bytecode(struct lttng_enabler *enabler, - struct lttng_kernel_filter_bytecode __user *bytecode); - void lttng_enabler_event_link_bytecode(struct lttng_event *event, - struct lttng_enabler *enabler); -+void lttng_free_event_filter_runtime(struct lttng_event *event); - - int lttng_probes_init(void); - --- -2.19.1 - diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch new file mode 100644 index 000000000..6d81c81ef --- /dev/null +++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch @@ -0,0 +1,37 @@ +From 0287f5c32b9fd99078e71c22ca679343d18f1513 Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@gmail.com> +Date: Sat, 15 May 2021 10:26:38 -0400 +Subject: [PATCH] src/Kbuild: change missing CONFIG_TRACEPOINTS to warning + +Taken from a previous patch to the main lttng-modules Makefile, by +Otavio Salvador: + + The lttng-modules are being pulled by the tools-profile image feature, + however, not every kernel has the CONFIG_TRACEPOINTS feature enabled. + + This change makes the build do not fail when CONFIG_TRACEPOINTS is not + available, allowing it to be kept being pulled by default. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> +--- + src/Kbuild | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Kbuild b/src/Kbuild +index 7137874f..18a43b50 100644 +--- a/src/Kbuild ++++ b/src/Kbuild +@@ -2,7 +2,7 @@ + + ifdef CONFIG_LOCALVERSION # Check if dot-config is included. + ifeq ($(CONFIG_TRACEPOINTS),) +- $(error The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration) ++ $(warning The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration) + endif # CONFIG_TRACEPOINTS + endif # ifdef CONFIG_LOCALVERSION + +-- +2.19.1 + diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch deleted file mode 100644 index 609690f05..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch +++ /dev/null @@ -1,159 +0,0 @@ -From 23a2f61ffc6a656f136fa2044c0c3b8f79766779 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Galarneau?= - <jeremie.galarneau@efficios.com> -Date: Wed, 3 Mar 2021 18:52:19 -0500 -Subject: [PATCH 2/4] Fix: filter interpreter early-exits on uninitialized - value -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -I observed that syscall filtering on string arguments wouldn't work on -my development machines, both running 5.11.2-arch1-1 (Arch Linux). - -For instance, enabling the tracing of the `openat()` syscall with the -'filename == "/proc/cpuinfo"' filter would not produce events even -though matching events were present in another session that had no -filtering active. The same problem occurred with `execve()`. - -I tried a couple of kernel versions before (5.11.1 and 5.10.13, if -memory serves me well) and I had the same problem. Meanwhile, I couldn't -reproduce the problem on various Debian machines (the LTTng CI) nor on a -fresh Ubuntu 20.04 with both the stock kernel and with an updated 5.11.2 -kernel. - -I built the lttng-modules with the interpreter debugging printout and -saw the following warning: - LTTng: [debug bytecode in /home/jgalar/EfficiOS/src/lttng-modules/src/lttng-bytecode-interpreter.c:bytecode_interpret@1508] Bytecode warning: loading a NULL string. - -After a shedload (yes, a _shed_load) of digging, I figured that the -problem was hidden in plain sight near that logging statement. - -In the `BYTECODE_OP_LOAD_FIELD_REF_USER_STRING` operation, the 'ax' -register's 'user_str' is initialized with the stack value (the user -space string's address in our case). However, a NULL check is performed -against the register's 'str' member. - -I initialy suspected that both members would be part of the same union -and alias each-other, but they are actually contiguous in a structure. - -On the unaffected machines, I could confirm that the `str` member was -uninitialized to a non-zero value causing the condition to evaluate to -false. - -Francis Deslauriers reproduced the problem by initializing the -interpreter stack to zero. - -I am unsure of the exact kernel configuration option that reveals this -issue on Arch Linux, but my kernel has the following option enabled: - -CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL: - Zero-initialize any stack variables that may be passed by reference - and had not already been explicitly initialized. This is intended to - eliminate all classes of uninitialized stack variable exploits and - information exposures. - -I have not tried to build without this enabled as, anyhow, this seems -to be a legitimate issue. - -I have spotted what appears to be an identical problem in -`BYTECODE_OP_LOAD_FIELD_REF_USER_SEQUENCE` and corrected it. However, -I have not exercised that code path. - -The commit that introduced this problem is 5b4ad89. - -The debug print-out of the `BYTECODE_OP_LOAD_FIELD_REF_USER_STRING` -operation is modified to print the user string (truncated to 31 chars). - -Upstream-status: backport - -Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Change-Id: I2da3c31b9e3ce0e1b164cf3d2711c0893cbec273 ---- - lttng-filter-interpreter.c | 41 ++++++++++++++++++++++++++++++++++---- - 1 file changed, 37 insertions(+), 4 deletions(-) - -diff --git a/lttng-filter-interpreter.c b/lttng-filter-interpreter.c -index 5d572437..6e5a5139 100644 ---- a/lttng-filter-interpreter.c -+++ b/lttng-filter-interpreter.c -@@ -22,7 +22,7 @@ LTTNG_STACK_FRAME_NON_STANDARD(lttng_filter_interpret_bytecode); - * to handle user-space read. - */ - static --char get_char(struct estack_entry *reg, size_t offset) -+char get_char(const struct estack_entry *reg, size_t offset) - { - if (unlikely(offset >= reg->u.s.seq_len)) - return '\0'; -@@ -593,6 +593,39 @@ end: - return ret; - } - -+#ifdef DEBUG -+ -+#define DBG_USER_STR_CUTOFF 32 -+ -+/* -+ * In debug mode, print user string (truncated, if necessary). -+ */ -+static inline -+void dbg_load_ref_user_str_printk(const struct estack_entry *user_str_reg) -+{ -+ size_t pos = 0; -+ char last_char; -+ char user_str[DBG_USER_STR_CUTOFF]; -+ -+ pagefault_disable(); -+ do { -+ last_char = get_char(user_str_reg, pos); -+ user_str[pos] = last_char; -+ pos++; -+ } while (last_char != '\0' && pos < sizeof(user_str)); -+ pagefault_enable(); -+ -+ user_str[sizeof(user_str) - 1] = '\0'; -+ dbg_printk("load field ref user string: '%s%s'\n", user_str, -+ last_char != '\0' ? "[...]" : ""); -+} -+#else -+static inline -+void dbg_load_ref_user_str_printk(const struct estack_entry *user_str_reg) -+{ -+} -+#endif -+ - /* - * Return 0 (discard), or raise the 0x1 flag (log event). - * Currently, other flags are kept for future extensions and have no -@@ -1313,7 +1346,7 @@ uint64_t lttng_filter_interpret_bytecode(void *filter_data, - estack_push(stack, top, ax, bx); - estack_ax(stack, top)->u.s.user_str = - *(const char * const *) &filter_stack_data[ref->offset]; -- if (unlikely(!estack_ax(stack, top)->u.s.str)) { -+ if (unlikely(!estack_ax(stack, top)->u.s.user_str)) { - dbg_printk("Filter warning: loading a NULL string.\n"); - ret = -EINVAL; - goto end; -@@ -1322,7 +1355,7 @@ uint64_t lttng_filter_interpret_bytecode(void *filter_data, - estack_ax(stack, top)->u.s.literal_type = - ESTACK_STRING_LITERAL_TYPE_NONE; - estack_ax(stack, top)->u.s.user = 1; -- dbg_printk("ref load string %s\n", estack_ax(stack, top)->u.s.str); -+ dbg_load_ref_user_str_printk(estack_ax(stack, top)); - next_pc += sizeof(struct load_op) + sizeof(struct field_ref); - PO; - } -@@ -1340,7 +1373,7 @@ uint64_t lttng_filter_interpret_bytecode(void *filter_data, - estack_ax(stack, top)->u.s.user_str = - *(const char **) (&filter_stack_data[ref->offset - + sizeof(unsigned long)]); -- if (unlikely(!estack_ax(stack, top)->u.s.str)) { -+ if (unlikely(!estack_ax(stack, top)->u.s.user_str)) { - dbg_printk("Filter warning: loading a NULL sequence.\n"); - ret = -EINVAL; - goto end; --- -2.19.1 - diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch deleted file mode 100644 index 71f99b80a..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 49c603ef2dc6969f4454f0d849af00ee24bb7f04 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Thu, 4 Mar 2021 16:50:12 -0500 -Subject: [PATCH 3/4] fix: mm, tracing: record slab name for kmem_cache_free() - (v5.12) - -See upstream commit: - - commit 3544de8ee6e4817278b15fe08658de49abf58954 - Author: Jacob Wen <jian.w.wen@oracle.com> - Date: Wed Feb 24 12:00:55 2021 -0800 - - mm, tracing: record slab name for kmem_cache_free() - - Currently, a trace record generated by the RCU core is as below. - - ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=00000000f3b49a66 - - It doesn't tell us what the RCU core has freed. - - This patch adds the slab name to trace_kmem_cache_free(). - The new format is as follows. - - ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=0000000037f79c8d name=dentry - ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=00000000f78cb7b5 name=sock_inode_cache - ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=0000000018768985 name=pool_workqueue - ... kmem_cache_free: call_site=rcu_core+0x1fd/0x610 ptr=000000006a6cb484 name=radix_tree_node - - We can use it to understand what the RCU core is going to free. For - example, some users maybe interested in when the RCU core starts - freeing reclaimable slabs like dentry to reduce memory pressure. - - Link: https://lkml.kernel.org/r/20201216072804.8838-1-jian.w.wen@oracle.com - -Upstream-status: backport - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Change-Id: I1ee2fc476614cadcc8d3ac5d8feddc7910e1aa3a ---- - instrumentation/events/lttng-module/kmem.h | 27 ++++++++++++++++++++++ - 1 file changed, 27 insertions(+) - -diff --git a/instrumentation/events/lttng-module/kmem.h b/instrumentation/events/lttng-module/kmem.h -index b134620a..d787ea54 100644 ---- a/instrumentation/events/lttng-module/kmem.h -+++ b/instrumentation/events/lttng-module/kmem.h -@@ -87,6 +87,32 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node, - TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node) - ) - -+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0)) -+LTTNG_TRACEPOINT_EVENT(kfree, -+ -+ TP_PROTO(unsigned long call_site, const void *ptr), -+ -+ TP_ARGS(call_site, ptr), -+ -+ TP_FIELDS( -+ ctf_integer_hex(unsigned long, call_site, call_site) -+ ctf_integer_hex(const void *, ptr, ptr) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT(kmem_cache_free, -+ -+ TP_PROTO(unsigned long call_site, const void *ptr, const char *name), -+ -+ TP_ARGS(call_site, ptr, name), -+ -+ TP_FIELDS( -+ ctf_integer_hex(unsigned long, call_site, call_site) -+ ctf_integer_hex(const void *, ptr, ptr) -+ ctf_string(name, name) -+ ) -+) -+#else - LTTNG_TRACEPOINT_EVENT_CLASS(kmem_free, - - TP_PROTO(unsigned long call_site, const void *ptr), -@@ -114,6 +140,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_free, kmem_cache_free, - - TP_ARGS(call_site, ptr) - ) -+#endif - - #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,3,0)) - LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free, kmem_mm_page_free, --- -2.19.1 - diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch deleted file mode 100644 index 8a839c2b4..000000000 --- a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 92cc3e7f76a545a2cd4828576971f1eea83f4e68 Mon Sep 17 00:00:00 2001 -From: Francis Deslauriers <francis.deslauriers@efficios.com> -Date: Wed, 17 Mar 2021 10:40:56 -0400 -Subject: [PATCH 4/4] Fix: kretprobe: null ptr deref on session destroy - -The `filter_bytecode_runtime_head` list is currently not initialized for -the return event of the kretprobe. This caused a kernel null ptr -dereference when destroying a session. It can reproduced with the -following commands: - - lttng create - lttng enable-event -k --function=lttng_test_filter_event_write my_event - lttng start - lttng stop - lttng destroy - -Upstream-status: backport - -Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Change-Id: I1162ce8b10dd7237a26331531f048346b984eee7 ---- - lttng-events.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lttng-events.c b/lttng-events.c -index 984bd341..3450fa40 100644 ---- a/lttng-events.c -+++ b/lttng-events.c -@@ -704,6 +704,8 @@ struct lttng_event *_lttng_event_create(struct lttng_channel *chan, - event_return->enabled = 0; - event_return->registered = 1; - event_return->instrumentation = itype; -+ INIT_LIST_HEAD(&event_return->bytecode_runtime_head); -+ INIT_LIST_HEAD(&event_return->enablers_ref_head); - /* - * Populate lttng_event structure before kretprobe registration. - */ --- -2.19.1 - diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.5.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.6.bb index 5b05c644a..94e849de5 100644 --- a/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.5.bb +++ b/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.6.bb @@ -11,13 +11,9 @@ include lttng-platforms.inc SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \ - file://0001-Fix-memory-leaks-on-event-destroy.patch \ - file://0002-Fix-filter-interpreter-early-exits-on-uninitialized-.patch \ - file://0003-fix-mm-tracing-record-slab-name-for-kmem_cache_free-.patch \ - file://0004-Fix-kretprobe-null-ptr-deref-on-session-destroy.patch \ " -SRC_URI[sha256sum] = "c4d1a1b42c728e37b6b7947ae16563a011c4b297311aa04d56f9a1791fb5a30a" +SRC_URI[sha256sum] = "95ac2a2cf92d85d23ffbdaca6a1ec0d7c167211d1e0fb850ab90004a3f475eaa" export INSTALL_MOD_DIR="kernel/lttng-modules" @@ -34,13 +30,13 @@ python do_package_prepend() { } BBCLASSEXTEND = "devupstream:target" -LIC_FILES_CHKSUM_class-devupstream = "file://LICENSE;md5=3f882d431dc0f32f1f44c0707aa41128" +LIC_FILES_CHKSUM_class-devupstream = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4" DEFAULT_PREFERENCE_class-devupstream = "-1" -SRC_URI_class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.12 \ - file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \ +SRC_URI_class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13 \ + file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch \ " -SRCREV_class-devupstream = "92cc3e7f76a545a2cd4828576971f1eea83f4e68" -PV_class-devupstream = "2.12.5+git${SRCPV}" +SRCREV_class-devupstream = "f982b51a98a29cb4aaf607cb9bbf2b509d8e6933" +PV_class-devupstream = "2.13.0-rc2+git${SRCPV}" S_class-devupstream = "${WORKDIR}/git" SRCREV_FORMAT ?= "lttng_git" diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.3.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.4.bb index 7074096ee..133d7561b 100644 --- a/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.3.bb +++ b/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.4.bb @@ -15,7 +15,7 @@ include lttng-platforms.inc DEPENDS = "liburcu popt libxml2 util-linux" RDEPENDS_${PN} = "libgcc" RRECOMMENDS_${PN} += "${LTTNGMODULES}" -RDEPENDS_${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core" +RDEPENDS_${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep" RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils" # babelstats.pl wants getopt-long @@ -39,7 +39,7 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \ file://determinism.patch \ " -SRC_URI[sha256sum] = "2890da230edd523fcf497e9eb28133b7606d64fa01bcbffadbfcba42104db153" +SRC_URI[sha256sum] = "d729f8c2373a41194f171aeb0da0a9bb35ac181f31afa7e260786d19a500dea1" inherit autotools ptest pkgconfig useradd python3-dir manpages systemd @@ -69,7 +69,10 @@ do_install_append () { } do_install_ptest () { - for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/load-42*.lttng tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh; do + for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/*.lttng \ + tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh \ + tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh \ + tests/regression/tools/base-path/*.lttng; do install -D "${B}/$f" "${D}${PTEST_PATH}/$f" done @@ -155,7 +158,7 @@ do_install_ptest () { -i ${D}${PTEST_PATH}/tests/unit/Makefile # Fix hardcoded build path - sed -e 's#TESTAPP_PATH=.*/tests/regression/#TESTAPP_PATH=${PTEST_PATH}/tests/regression/#' \ + sed -e 's#TESTAPP_PATH=.*/tests/regression/#TESTAPP_PATH="${PTEST_PATH}/tests/regression/#' \ -i ${D}${PTEST_PATH}/tests/regression/ust/python-logging/test_python_logging # Substitute links to installed binaries. diff --git a/poky/meta/recipes-kernel/lttng/lttng-ust_2.12.1.bb b/poky/meta/recipes-kernel/lttng/lttng-ust_2.12.2.bb index 67b53cbbb..e340ff346 100644 --- a/poky/meta/recipes-kernel/lttng/lttng-ust_2.12.1.bb +++ b/poky/meta/recipes-kernel/lttng/lttng-ust_2.12.2.bb @@ -33,8 +33,7 @@ SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \ file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \ " -SRC_URI[md5sum] = "11787d1df69b04dd7431614ab43b2e12" -SRC_URI[sha256sum] = "48a3948b168195123a749d22818809bd25127bb5f1a66458c3c012b210d2a051" +SRC_URI[sha256sum] = "bcd0f064b6ca88c72d84e760eac3472ae5c828411c634435922bee9fce359fc7" CVE_PRODUCT = "ust" diff --git a/poky/meta/recipes-kernel/modutils-initscripts/files/modutils.sh b/poky/meta/recipes-kernel/modutils-initscripts/files/modutils.sh index 28fe6f92d..67e1dcd99 100755 --- a/poky/meta/recipes-kernel/modutils-initscripts/files/modutils.sh +++ b/poky/meta/recipes-kernel/modutils-initscripts/files/modutils.sh @@ -13,6 +13,7 @@ LOAD_MODULE=modprobe [ -f /proc/modules ] || exit 0 +[ -d /lib/modules/`uname -r` ] || exit 0 # Test if modules.dep exists and has a size greater than zero if [ ! -s /lib/modules/`uname -r`/modules.dep ]; then diff --git a/poky/meta/recipes-kernel/perf/perf.bb b/poky/meta/recipes-kernel/perf/perf.bb index b4683720a..99808d636 100644 --- a/poky/meta/recipes-kernel/perf/perf.bb +++ b/poky/meta/recipes-kernel/perf/perf.bb @@ -48,7 +48,7 @@ PROVIDES = "virtual/perf" inherit linux-kernel-base kernel-arch manpages # needed for building the tools/perf Python bindings -inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'python3native', '', d)} +inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'python3targetconfig', '', d)} inherit python3-dir export PYTHON_SITEPACKAGES_DIR @@ -169,7 +169,7 @@ python copy_perf_source_from_kernel() { do_configure_prepend () { # If building a multlib based perf, the incorrect library path will be # detected by perf, since it triggers via: ifeq ($(ARCH),x86_64). In a 32 bit - # build, with a 64 bit multilib, the arch won't match and the detection of a + # build, with a 64 bit multilib, the arch won't match and the detection of a # 64 bit build (and library) are not exected. To ensure that libraries are # installed to the correct location, we can use the weak assignment in the # config/Makefile. @@ -322,7 +322,7 @@ PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python" RDEPENDS_${PN} += "elfutils bash" RDEPENDS_${PN}-archive =+ "bash" -RDEPENDS_${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python3', '', d)}" +RDEPENDS_${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}" RDEPENDS_${PN}-perl =+ "bash perl perl-modules" RDEPENDS_${PN}-tests =+ "python3 bash" diff --git a/poky/meta/recipes-kernel/powertop/powertop_2.13.bb b/poky/meta/recipes-kernel/powertop/powertop_2.14.bb index 8c7e78fd9..cb7f3c4dc 100644 --- a/poky/meta/recipes-kernel/powertop/powertop_2.13.bb +++ b/poky/meta/recipes-kernel/powertop/powertop_2.14.bb @@ -9,21 +9,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e" SRC_URI = "git://github.com/fenrus75/powertop;protocol=https \ file://0001-wakeup_xxx.h-include-limits.h.patch \ " -SRCREV = "184cee06b2d64679bae5f806fe0a218827fdde99" +SRCREV = "52f022f9bbe6e060fba11701d657a8d9762702ba" S = "${WORKDIR}/git" -inherit autotools gettext pkgconfig bash-completion +LDFLAGS_append = " -pthread" -# we do not want libncursesw if we can -do_configure_prepend() { - # configure.ac checks for delwin() in "ncursesw ncurses" so let's drop first one - sed -i -e "s/ncursesw//g" ${S}/configure.ac - mkdir -p ${B}/src/tuning/ - echo "${PV}" > ${S}/version-long - echo "${PV}" > ${S}/version-short - cp ${STAGING_DATADIR}/aclocal/ax_require_defined.m4 ${S}/m4/ -} +inherit autotools gettext pkgconfig bash-completion inherit update-alternatives ALTERNATIVE_${PN} = "powertop" diff --git a/poky/meta/recipes-kernel/systemtap/systemtap/0001-transport-protect-include-and-callsite-with-same-con.patch b/poky/meta/recipes-kernel/systemtap/systemtap/0001-transport-protect-include-and-callsite-with-same-con.patch deleted file mode 100644 index efc79f6c0..000000000 --- a/poky/meta/recipes-kernel/systemtap/systemtap/0001-transport-protect-include-and-callsite-with-same-con.patch +++ /dev/null @@ -1,44 +0,0 @@ -From cbf27cd54071f788231e69d96dbaad563f1010d4 Mon Sep 17 00:00:00 2001 -From: Bruce Ashfield <bruce.ashfield@gmail.com> -Date: Fri, 18 Dec 2020 13:15:08 -0500 -Subject: [PATCH] transport: protect include and callsite with same conditional - -transport.c has the following code block: - - if (!debugfs_p && security_locked_down (LOCKDOWN_DEBUGFS)) - -Which is protected by the conditional STAPCONF_LOCKDOWN_DEBUGFS. - -linux/security.h provides the definition of LOCKDOWN_DEBUGFS, and -must be included or we have a compilation issue. - -The include of security.h is protected by #ifdef CONFIG_SECURITY_LOCKDOWN_LSM, -which means that in some configurations we can get out of sync with -the include and the callsite. - -If we protect the include and the callsite with the same #ifdef, we can -be sure that they will be consistent. - -Upstream-status: Inappropriate (kernel-devsrc specific) - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - runtime/transport/transport.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c -index bb4a98bd3..88e20ea28 100644 ---- a/runtime/transport/transport.c -+++ b/runtime/transport/transport.c -@@ -21,7 +21,7 @@ - #include <linux/namei.h> - #include <linux/delay.h> - #include <linux/mutex.h> --#ifdef CONFIG_SECURITY_LOCKDOWN_LSM -+#ifdef STAPCONF_LOCKDOWN_DEBUGFS - #include <linux/security.h> - #endif - #include "../uidgid_compatibility.h" --- -2.19.1 - diff --git a/poky/meta/recipes-kernel/systemtap/systemtap_git.inc b/poky/meta/recipes-kernel/systemtap/systemtap_git.inc index 016b42384..23ecc6198 100644 --- a/poky/meta/recipes-kernel/systemtap/systemtap_git.inc +++ b/poky/meta/recipes-kernel/systemtap/systemtap_git.inc @@ -1,13 +1,12 @@ LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -SRCREV = "988f439af39a359b4387963ca4633649866d8275" -PV = "4.4" +SRCREV = "0eba8a46bc99c66e5dd274a9a4d661fe08ac4b8a" +PV = "4.5" SRC_URI = "git://sourceware.org/git/systemtap.git \ file://0001-Do-not-let-configure-write-a-python-location-into-th.patch \ file://0001-Install-python-modules-to-correct-library-dir.patch \ file://0001-staprun-stapbpf-don-t-support-installing-a-non-root.patch \ - file://0001-transport-protect-include-and-callsite-with-same-con.patch \ " COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips).*-linux' diff --git a/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2020.11.20.bb b/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.04.21.bb index b3567bca9..f79c0b29e 100644 --- a/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2020.11.20.bb +++ b/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.04.21.bb @@ -5,7 +5,7 @@ LICENSE = "ISC" LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c" SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz" -SRC_URI[sha256sum] = "b4164490d82ff7b0086e812ac42ab27baf57be24324d4c0ee1c5dd6ba27f2a52" +SRC_URI[sha256sum] = "9e4c02b2a9710df4dbdb327c39612e8cbbae6495987afeddaebab28c1ea3d8fa" inherit bin_package allarch diff --git a/poky/meta/recipes-multimedia/alsa/alsa-lib/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch b/poky/meta/recipes-multimedia/alsa/alsa-lib/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch deleted file mode 100644 index 98e2988dd..000000000 --- a/poky/meta/recipes-multimedia/alsa/alsa-lib/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch +++ /dev/null @@ -1,31 +0,0 @@ -From ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela <perex@perex.cz> -Date: Thu, 22 Oct 2020 20:57:32 +0200 -Subject: [PATCH] dlmisc: the snd_plugin_dir_set / snd_plugin_dir must be - declared even for \!DL_ORIGIN_AVAILABLE - -Fixes: 8580c081c2 ("dlsym: add support for ALSA_PLUGIN_DIR environment variable") -BugLink: https://github.com/alsa-project/alsa-lib/issues/91 -Signed-off-by: Jaroslav Kysela <perex@perex.cz> -Upstream-Status: Backport -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - src/dlmisc.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/src/dlmisc.c b/src/dlmisc.c -index c9517c55..f20eb593 100644 ---- a/src/dlmisc.c -+++ b/src/dlmisc.c -@@ -42,11 +42,9 @@ - #ifndef PIC - struct snd_dlsym_link *snd_dlsym_start = NULL; - #endif --#ifdef DL_ORIGIN_AVAILABLE - static int snd_plugin_dir_set = 0; - static char *snd_plugin_dir = NULL; - #endif --#endif - - #if defined(DL_ORIGIN_AVAILABLE) && defined(HAVE_LIBPTHREAD) - static pthread_mutex_t snd_dlpath_mutex = PTHREAD_MUTEX_INITIALIZER; diff --git a/poky/meta/recipes-multimedia/alsa/alsa-lib_1.2.4.bb b/poky/meta/recipes-multimedia/alsa/alsa-lib_1.2.5.1.bb index c49cc2a9b..151d63c0e 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-lib_1.2.4.bb +++ b/poky/meta/recipes-multimedia/alsa/alsa-lib_1.2.5.1.bb @@ -9,9 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \ file://src/socket.c;md5=285675b45e83f571c6a957fe4ab79c93;beginline=9;endline=24 \ " -SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2 \ - file://ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch" -SRC_URI[sha256sum] = "f7554be1a56cdff468b58fc1c29b95b64864c590038dd309c7a978c7116908f7" +SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2" +SRC_URI[sha256sum] = "628421d950cecaf234de3f899d520c0a6923313c964ad751ffac081df331438e" inherit autotools pkgconfig diff --git a/poky/meta/recipes-multimedia/alsa/alsa-plugins_1.2.2.bb b/poky/meta/recipes-multimedia/alsa/alsa-plugins_1.2.5.bb index 1381896f3..f940a4bd3 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-plugins_1.2.2.bb +++ b/poky/meta/recipes-multimedia/alsa/alsa-plugins_1.2.5.bb @@ -23,8 +23,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \ " SRC_URI = "https://www.alsa-project.org/files/pub/plugins/${BP}.tar.bz2" -SRC_URI[md5sum] = "8455e3c6fbc47f62f070afabc14ba575" -SRC_URI[sha256sum] = "1c0f06450c928d711719686c9dbece2d480184f36fab11b8f0534cb7b41e337d" +SRC_URI[sha256sum] = "42eef98433d2c8d11f1deeeb459643619215a75aa5a5bbdd06a794e4c413df20" DEPENDS += "alsa-lib" diff --git a/poky/meta/recipes-multimedia/alsa/alsa-tools_1.2.2.bb b/poky/meta/recipes-multimedia/alsa/alsa-tools_1.2.5.bb index 0a25d809b..8f9c77e4f 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-tools_1.2.2.bb +++ b/poky/meta/recipes-multimedia/alsa/alsa-tools_1.2.5.bb @@ -14,8 +14,7 @@ LIC_FILES_CHKSUM = "file://hdsploader/COPYING;md5=59530bdf33659b29e73d4adb9f9f65 SRC_URI = "https://www.alsa-project.org/files/pub/tools/${BP}.tar.bz2" -SRC_URI[md5sum] = "4e6187d2c3a8c73a9d75d66a72faed27" -SRC_URI[sha256sum] = "bfd3c7aae1289269605d3da02279159b10e3dabdd31e658cbceaa30170957349" +SRC_URI[sha256sum] = "35a71027a01f4d7de4722e223520e940de68b3c570b6c671691567ae28f9893e" inherit autotools-brokensep pkgconfig # brokensep as as10k1 (and probably more) fail out of tree diff --git a/poky/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.4.bb b/poky/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.5.1.bb index 26542fbbb..c96826c4b 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.4.bb +++ b/poky/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.5.1.bb @@ -8,7 +8,8 @@ LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=20d74d74db9741697903372ad001d3b4" SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2" -SRC_URI[sha256sum] = "55e0e6e42eca4cc7656c257af2440cdc65b83689dca49fc60ca0194db079ed07" +SRC_URI[sha256sum] = "f7c5bae1545abcd73824bc97f4e72c340e11abea188ba0f1c06f5e0ad776b179" +# Something went wrong at upstream tarballing inherit allarch diff --git a/poky/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.4.bb b/poky/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.5.1.bb index 32cf41c8f..4d5f3742f 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.4.bb +++ b/poky/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.5.1.bb @@ -8,7 +8,8 @@ LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=20d74d74db9741697903372ad001d3b4" SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2" -SRC_URI[sha256sum] = "2c3b535c77dcb9aaf62a61f4f8324f1ab184162f105f7ec9ed1e37c742fcd340" +SRC_URI[sha256sum] = "5841a444166dcbf479db751303dbc3556f685085ac7e00f0c9e7755676195d97" +# Something went wrong at upstream tarballing inherit allarch diff --git a/poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.4.bb b/poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.5.1.bb index 048fef68a..048fef68a 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.4.bb +++ b/poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.5.1.bb diff --git a/poky/meta/recipes-multimedia/alsa/alsa-utils.inc b/poky/meta/recipes-multimedia/alsa/alsa-utils.inc index f2e8133d2..733bb2456 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-utils.inc +++ b/poky/meta/recipes-multimedia/alsa/alsa-utils.inc @@ -24,7 +24,7 @@ PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook # alsa-utils specified in SRC_URI due to alsa-utils-scripts recipe SRC_URI = "https://www.alsa-project.org/files/pub/utils/alsa-utils-${PV}.tar.bz2" -SRC_URI[sha256sum] = "98ffc2d599de0577d423a48fa5f20a992ca0b82d812ed1f2e58ade49ac6da426" +SRC_URI[sha256sum] = "9c169ae37a49295f9b97b92ace772803daf6b6510a19574e0b78f87e562118d0" # On build machines with python-docutils (not python3-docutils !!) installed # rst2man (not rst2man.py) is detected and compile fails with diff --git a/poky/meta/recipes-multimedia/alsa/alsa-utils_1.2.4.bb b/poky/meta/recipes-multimedia/alsa/alsa-utils_1.2.5.1.bb index 3430288da..3430288da 100644 --- a/poky/meta/recipes-multimedia/alsa/alsa-utils_1.2.4.bb +++ b/poky/meta/recipes-multimedia/alsa/alsa-utils_1.2.5.1.bb diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch deleted file mode 100644 index 69429af8f..000000000 --- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch +++ /dev/null @@ -1,32 +0,0 @@ -It will add -mips64r6 and -mips64r2 to cmdline which will -cause conflicts - -in OE we user mips32r2 and mips64r2 for mips arch versions -so there is no benefit of detecting it automatically by -poking at tools especially in cross env - -Fixes errors like - -linking -mnan=2008 module with previous -mnan=legacy modules -failed to merge target specific data of file - --Khem -Upstream-Status: Inappropriate [OE-Specific] - -Index: ffmpeg-3.1.1/configure -=================================================================== ---- ffmpeg-3.1.1.orig/configure -+++ ffmpeg-3.1.1/configure -@@ -5220,12 +5220,9 @@ elif enabled mips; then - - # Enable minimum ISA based on selected options - if enabled mips64; then -- enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6' - enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2' - disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64' - else -- enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6' -- enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5' - enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2' - disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32' - fi diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.2.bb b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.bb index 08be38ca5..3ed009bbb 100644 --- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.2.bb +++ b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.bb @@ -24,10 +24,9 @@ LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02" SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \ - file://mips64_cpu_detection.patch \ file://0001-libavutil-include-assembly-with-full-path-from-sourc.patch \ " -SRC_URI[sha256sum] = "46e4e64f1dd0233cbc0934b9f1c0da676008cad34725113fb7f802cfa84ccddb" +SRC_URI[sha256sum] = "06b10a183ce5371f915c6bb15b7b1fffbe046e8275099c96affc29e17645d909" # Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717 ARM_INSTRUCTION_SET_armv4 = "arm" @@ -65,6 +64,7 @@ PACKAGECONFIG[fdk-aac] = "--enable-libfdk-aac --enable-nonfree,--disable-libfdk- PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl" PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm" PACKAGECONFIG[jack] = "--enable-indev=jack,--disable-indev=jack,jack" +PACKAGECONFIG[libopus] = "--enable-libopus,--disable-libopus,libopus" PACKAGECONFIG[libvorbis] = "--enable-libvorbis,--disable-libvorbis,libvorbis" PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz" PACKAGECONFIG[mfx] = "--enable-libmfx,--disable-libmfx,intel-mediasdk" @@ -104,15 +104,15 @@ EXTRA_OECONF = " \ \ --cross-prefix=${TARGET_PREFIX} \ \ - --ld="${CCLD}" \ - --cc="${CC}" \ - --cxx="${CXX}" \ + --ld='${CCLD}' \ + --cc='${CC}' \ + --cxx='${CXX}' \ --arch=${TARGET_ARCH} \ - --target-os="linux" \ + --target-os='linux' \ --enable-cross-compile \ - --extra-cflags="${CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" \ - --extra-ldflags="${LDFLAGS}" \ - --sysroot="${STAGING_DIR_TARGET}" \ + --extra-cflags='${CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}' \ + --extra-ldflags='${LDFLAGS}' \ + --sysroot='${STAGING_DIR_TARGET}' \ ${EXTRA_FFCONF} \ --libdir=${libdir} \ --shlibdir=${libdir} \ @@ -122,6 +122,15 @@ EXTRA_OECONF = " \ " EXTRA_OECONF_append_linux-gnux32 = " --disable-asm" + +EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', '--disable-mips64r2 --disable-mips32r2', '', d)}" +EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r2', '--disable-mips64r6 --disable-mips32r6', '', d)}" +EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mips32r2', '--disable-mips64r6 --disable-mips32r6', '', d)}" +EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mips32r6', '--disable-mips64r2 --disable-mips32r2', '', d)}" +EXTRA_OECONF_append_mips = " --extra-libs=-latomic --disable-mips32r5 --disable-mipsdsp --disable-mipsdspr2 \ + --disable-loongson2 --disable-loongson3 --disable-mmi --disable-msa --disable-msa2" +EXTRA_OECONF_append_riscv32 = " --extra-libs=-latomic" + # gold crashes on x86, another solution is to --disable-asm but thats more hacky # ld.gold: internal error in relocate_section, at ../../gold/i386.cc:3684 diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb index ce2082ee3..96f01391b 100644 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb @@ -28,8 +28,8 @@ PACKAGECONFIG ??= " \ ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \ - bz2 closedcaption curl dash dtls hls rsvg sbc smoothstreaming sndfile \ - ttml uvch264 webp \ + bz2 closedcaption curl dash dtls hls openssl rsvg sbc smoothstreaming \ + sndfile ttml uvch264 webp \ " PACKAGECONFIG[aom] = "-Daom=enabled,-Daom=disabled,aom" @@ -45,7 +45,11 @@ PACKAGECONFIG[dtls] = "-Ddtls=enabled,-Ddtls=disabled,openssl" PACKAGECONFIG[faac] = "-Dfaac=enabled,-Dfaac=disabled,faac" PACKAGECONFIG[faad] = "-Dfaad=enabled,-Dfaad=disabled,faad2" PACKAGECONFIG[fluidsynth] = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth" -PACKAGECONFIG[hls] = "-Dhls=enabled -Dhls-crypto=nettle,-Dhls=disabled,nettle" +PACKAGECONFIG[hls] = "-Dhls=enabled,-Dhls=disabled," +# Pick atleast one crypto backend below when enabling hls +PACKAGECONFIG[nettle] = "-Dhls-crypto=nettle,,nettle" +PACKAGECONFIG[openssl] = "-Dhls-crypto=openssl,,openssl" +PACKAGECONFIG[gcrypt] = "-Dhls-crypto=libgcrypt,,libgcrypt" # the gl packageconfig enables OpenGL elements that haven't been ported # to -base yet. They depend on the gstgl library in -base, so we do # not add GL dependencies here, since these are taken care of in -base. @@ -148,4 +152,3 @@ FILES_${PN}-freeverb += "${datadir}/gstreamer-1.0/presets/GstFreeverb.prs" FILES_${PN}-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*" FILES_${PN}-transcode += "${datadir}/gstreamer-1.0/encoding-profiles" FILES_${PN}-voamrwbenc += "${datadir}/gstreamer-1.0/presets/GstVoAmrwbEnc.prs" - diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/4ef5c91697a141fea7317aff7f0f28e5a861db99.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/4ef5c91697a141fea7317aff7f0f28e5a861db99.patch new file mode 100644 index 000000000..a2f5dff5e --- /dev/null +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/4ef5c91697a141fea7317aff7f0f28e5a861db99.patch @@ -0,0 +1,50 @@ +From 4ef5c91697a141fea7317aff7f0f28e5a861db99 Mon Sep 17 00:00:00 2001 +From: Xavier Claessens <xavier.claessens@collabora.com> +Date: Mon, 26 Apr 2021 14:25:03 -0400 +Subject: [PATCH] gstgl: Fix build when Meson >= 0.58.0rc1 + +"implicit_include_directories: false" now also means that current build +directory is not added to include paths by default any more. We have to +add it manually because we have some custom_target() that generate +headers in current build directory. + +See https://github.com/mesonbuild/meson/issues/8700. + +Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1125> +Upstream-Status: Backport +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + gst-libs/gst/gl/meson.build | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/gst-libs/gst/gl/meson.build b/gst-libs/gst/gl/meson.build +index 66668644e..53891625a 100644 +--- a/gst-libs/gst/gl/meson.build ++++ b/gst-libs/gst/gl/meson.build +@@ -1004,11 +1004,20 @@ if build_gstgl + command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) + gen_sources = [gl_enumtypes_h] + ++ common_args = gst_plugins_base_args + gl_cpp_args + ['-DBUILDING_GST_GL'] ++ ++ # We have custom_target() that generate headers in the current build dir, ++ # but with implicit_include_directories: false, meson >= 0.58.0 won't include ++ # it by default. We cannot use include_directories('.') here because it would ++ # also include current source dir which is what we want to avoid because ++ # case-insensitive FS would include gst-libs/gl/egl/egl.h as EGL/egl.h. ++ common_args += '-I@0@'.format(meson.current_build_dir()) ++ + gstgl = library('gstgl-' + api_version, + gl_sources, gl_egl_sources, gl_x11_sources, gl_wayland_sources, gl_priv_sources, gl_enumtypes_c, gl_enumtypes_h, +- c_args : gst_plugins_base_args + gl_cpp_args + ['-DBUILDING_GST_GL'], +- cpp_args : gst_plugins_base_args + gl_cpp_args + ['-DBUILDING_GST_GL'], +- objc_args : gst_plugins_base_args + gl_cpp_args + gl_objc_args + ['-DBUILDING_GST_GL'], ++ c_args : common_args, ++ cpp_args : common_args, ++ objc_args : common_args + gl_objc_args, + include_directories : [configinc, libsinc, gl_includes], + version : libversion, + soversion : soversion, +-- +GitLab + diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb index 728a99e08..73b433ab9 100644 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb @@ -11,6 +11,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-ba file://0003-viv-fb-Make-sure-config.h-is-included.patch \ file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ file://0004-glimagesink-Downrank-to-marginal.patch \ + file://4ef5c91697a141fea7317aff7f0f28e5a861db99.patch \ " SRC_URI[sha256sum] = "29e53229a84d01d722f6f6db13087231cdf6113dd85c25746b9b58c3d68e8323" @@ -65,12 +66,9 @@ PACKAGECONFIG[egl] = ",,virtual/egl" PACKAGECONFIG[gbm] = ",,virtual/libgbm libgudev libdrm" PACKAGECONFIG[wayland] = ",,wayland-native wayland wayland-protocols libdrm" PACKAGECONFIG[dispmanx] = ",,virtual/libomxil" +PACKAGECONFIG[viv-fb] = ",,virtual/libgles2 virtual/libg2d" -OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'x11', ' x11', '', d)}" -OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'gbm', ' gbm', '', d)}" -OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'wayland', ' wayland', '', d)}" -OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'dispmanx', ' dispmanx', '', d)}" -OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'egl', ' egl', '', d)}" +OPENGL_WINSYS = "${@bb.utils.filter('PACKAGECONFIG', 'x11 gbm wayland dispmanx egl viv-fb', d)}" EXTRA_OEMESON += " \ -Ddoc=disabled \ diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch new file mode 100644 index 000000000..87223826c --- /dev/null +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch @@ -0,0 +1,100 @@ +From 07572920319ea86cebb6dd073ab65915ec207eed Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com> +Date: Sat, 8 May 2021 14:08:41 +0200 +Subject: [PATCH] Remove volatile from static vars to fix build with gcc11 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Stolen from [1] + +[1] https://src.fedoraproject.org/rpms/gstreamer1-plugins-good/blob/rawhide/f/gstreamer1-plugins-good-gcc11.patch + +Upstream-Status: Pending + +Signed-off-by: Andreas Müller <schnitzeltony@gmail.com> +--- + ext/qt/gstqsgtexture.cc | 2 +- + ext/qt/gstqtglutility.cc | 2 +- + ext/qt/qtglrenderer.cc | 2 +- + ext/qt/qtitem.cc | 2 +- + ext/qt/qtwindow.cc | 4 ++-- + 5 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc +index 4cc9fc6..50c8d7f 100644 +--- a/ext/qt/gstqsgtexture.cc ++++ b/ext/qt/gstqsgtexture.cc +@@ -35,7 +35,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); + + GstQSGTexture::GstQSGTexture () + { +- static volatile gsize _debug; ++ static gsize _debug; + + initializeOpenGLFunctions(); + +diff --git a/ext/qt/gstqtglutility.cc b/ext/qt/gstqtglutility.cc +index acb89b6..d2c0922 100644 +--- a/ext/qt/gstqtglutility.cc ++++ b/ext/qt/gstqtglutility.cc +@@ -66,7 +66,7 @@ gst_qt_get_gl_display () + { + GstGLDisplay *display = NULL; + QGuiApplication *app = static_cast<QGuiApplication *> (QCoreApplication::instance ()); +- static volatile gsize _debug; ++ static gsize _debug; + + g_assert (app != NULL); + +diff --git a/ext/qt/qtglrenderer.cc b/ext/qt/qtglrenderer.cc +index 2ad5601..bffba8f 100644 +--- a/ext/qt/qtglrenderer.cc ++++ b/ext/qt/qtglrenderer.cc +@@ -22,7 +22,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); + static void + init_debug (void) + { +- static volatile gsize _debug; ++ static gsize _debug; + + if (g_once_init_enter (&_debug)) { + GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglrenderer", 0, +diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc +index 7659800..bc99639 100644 +--- a/ext/qt/qtitem.cc ++++ b/ext/qt/qtitem.cc +@@ -104,7 +104,7 @@ void InitializeSceneGraph::run() + + QtGLVideoItem::QtGLVideoItem() + { +- static volatile gsize _debug; ++ static gsize _debug; + + if (g_once_init_enter (&_debug)) { + GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwidget", 0, "Qt GL Widget"); +diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc +index 0dfd3f1..f1bd4ae 100644 +--- a/ext/qt/qtwindow.cc ++++ b/ext/qt/qtwindow.cc +@@ -103,7 +103,7 @@ QtGLWindow::QtGLWindow ( QWindow * parent, QQuickWindow *src ) : + QQuickWindow( parent ), source (src) + { + QGuiApplication *app = static_cast<QGuiApplication *> (QCoreApplication::instance ()); +- static volatile gsize _debug; ++ static gsize _debug; + + g_assert (app != NULL); + +@@ -152,7 +152,7 @@ QtGLWindow::beforeRendering() + + g_mutex_lock (&this->priv->lock); + +- static volatile gsize once = 0; ++ static gsize once = 0; + if (g_once_init_enter(&once)) { + this->priv->start = QDateTime::currentDateTime().toMSecsSinceEpoch(); + g_once_init_leave(&once,1); +-- +2.30.2 + diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb index 07cacdc68..c7d31d206 100644 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb @@ -7,6 +7,7 @@ BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \ file://0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch \ + file://0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch \ " SRC_URI[sha256sum] = "b6e50e3a9bbcd56ee6ec71c33aa8332cc9c926b0c1fae995aac8b3040ebe39b0" diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc deleted file mode 100644 index b69806704..000000000 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc +++ /dev/null @@ -1,23 +0,0 @@ -inherit ptest-gnome - -TEST_FILES_PATH = "${datadir}/installed-tests/gstreamer-1.0/test-files" -RUN_PTEST_FILE = "${D}${PTEST_PATH}/run-ptest" - -EXTRA_OEMESON += "-Dtest-files-path=${TEST_FILES_PATH}" - -GST_TEST_SUITE_NAME ?= "gstreamer-1.0" - -# Using do_install_ptest_base instead of do_install_ptest, since -# the default do_install_ptest_base is hardcoded to expect Makefiles. -do_install_ptest_base() { - # Generate run-ptest file - echo "#!/usr/bin/env sh" > "${RUN_PTEST_FILE}" - echo "gnome-desktop-testing-runner ${GST_TEST_SUITE_NAME}" >> "${RUN_PTEST_FILE}" - chmod 0755 "${RUN_PTEST_FILE}" - - # Install additional files required by tests - if [ -d "${S}/tests/files" ] ; then - install -d "${D}/${TEST_FILES_PATH}" - install -m 0644 "${S}/tests/files"/* "${D}/${TEST_FILES_PATH}" - fi -} diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch index fe58e718a..23ebd5c60 100644 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch @@ -12,7 +12,10 @@ environemnts, regardless of whether one pointed to by the env var succeeded or f taken from: http://cgit.openembedded.org/openembedded-core/commit/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch?id=0db7ba34ca41b107042306d13a6f0162885c123b -Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/669] +Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/669> + +Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/9f958058697e6fbf5bde325228034572331d1a3a] + Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> --- gst/gstpluginloader.c | 15 +++++++-------- diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch deleted file mode 100644 index bf5e57249..000000000 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch +++ /dev/null @@ -1,257 +0,0 @@ -From cf8077a7e3ab0ae236ebde79b7fc0b02eac658de Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani <crg7475@mailbox.org> -Date: Fri, 25 Oct 2019 00:06:26 +0200 -Subject: [PATCH 3/3] meson: Add option for installed tests - -This adds an option for producing installed versions of the unit tests. -These versions don't need meson to run (only a small shell script). This -makes it easier to run cross compiled tests on a target machine. - -Upstream-Status: Pending - -Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> ---- - build-aux/gen-installed-test-desc.py | 18 ++++++ - build-aux/gen-installed-test-shscript.py | 25 ++++++++ - meson_options.txt | 2 + - tests/check/meson.build | 46 +++++++++++++- - tests/files/testfile | 80 ++++++++++++++++++++++++ - 5 files changed, 170 insertions(+), 1 deletion(-) - create mode 100644 build-aux/gen-installed-test-desc.py - create mode 100644 build-aux/gen-installed-test-shscript.py - create mode 100644 tests/files/testfile - -diff --git a/build-aux/gen-installed-test-desc.py b/build-aux/gen-installed-test-desc.py -new file mode 100644 -index 000000000..69e8a0faf ---- /dev/null -+++ b/build-aux/gen-installed-test-desc.py -@@ -0,0 +1,18 @@ -+import sys -+import os -+import argparse -+ -+def write_template(filename, data): -+ with open(filename, 'w') as f: -+ f.write(data) -+ -+def build_template(testdir, testname): -+ return "[Test]\nType=session\nExec={}\n".format(os.path.join(testdir, testname)) -+ -+argparser = argparse.ArgumentParser(description='Generate installed-test data.') -+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory') -+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name') -+argparser.add_argument('--output', metavar='file', required=True, help='Output file') -+args = argparser.parse_args() -+ -+write_template(args.output, build_template(args.test_execdir, args.testname)) -diff --git a/build-aux/gen-installed-test-shscript.py b/build-aux/gen-installed-test-shscript.py -new file mode 100644 -index 000000000..5da86fb37 ---- /dev/null -+++ b/build-aux/gen-installed-test-shscript.py -@@ -0,0 +1,25 @@ -+import sys -+import os -+import argparse -+ -+def write_template(filename, data): -+ with open(filename, 'w') as f: -+ f.write(data) -+ -+def build_template(testdir, testname): -+ return ''.join([ -+ "#!/usr/bin/env sh\n", -+ "export GST_STATE_IGNORE_ELEMENTS=''\n", -+ "export CK_DEFAULT_TIMEOUT=20\n", -+ "export GST_PLUGIN_LOADING_WHITELIST='gstreamer'\n", -+ "{}\n".format(os.path.join(testdir, testname)), -+ ]) -+ -+argparser = argparse.ArgumentParser(description='Generate installed-test data.') -+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory') -+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name') -+argparser.add_argument('--output', metavar='file', required=True, help='Output file') -+args = argparser.parse_args() -+ -+write_template(args.output, build_template(args.test_execdir, args.testname)) -+os.chmod(args.output, 0o755) -diff --git a/meson_options.txt b/meson_options.txt -index 72c3997e2..346c423d4 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -15,6 +15,8 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso - option('memory-alignment', type: 'combo', - choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'], - value: 'malloc') -+option('installed-tests', type : 'boolean', value : false, description : 'enable installed tests') -+option('test-files-path', type : 'string', description : 'Path where to find test files') - - # Feature options - option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries') -diff --git a/tests/check/meson.build b/tests/check/meson.build -index a617cf159..e629131c5 100644 ---- a/tests/check/meson.build -+++ b/tests/check/meson.build -@@ -120,11 +120,17 @@ if add_languages('cpp', native: false, required: false) - ] - endif - -+test_files_path = get_option('test-files-path') -+if test_files_path == '' -+ test_files_path = meson.current_source_dir() + '/../files' -+endif -+message('Using path "@0@" as the path to read test files from'.format(test_files_path)) -+ - test_defines = [ - '-UG_DISABLE_ASSERT', - '-UG_DISABLE_CAST_CHECKS', - '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"', -- '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"', -+ '-DTESTFILE="@0@"'.format(test_files_path + '/testfile'), - '-DGST_DISABLE_DEPRECATED', - ] - -@@ -138,6 +144,14 @@ endif - glib_deps = [gio_dep, gobject_dep, gmodule_dep, glib_dep] - gst_deps = [gst_dep, gst_base_dep, gst_check_dep, gst_net_dep, gst_controller_dep] - -+installed_tests_datadir = join_paths(prefix, get_option('datadir'), 'installed-tests', 'gstreamer-1.0') -+installed_tests_execdir = join_paths(prefix, libexecdir, 'installed-tests', 'gstreamer-1.0') -+installed_tests_enabled = get_option('installed-tests') -+ -+python = import('python').find_installation() -+gen_installed_test_desc = files('../../build-aux/gen-installed-test-desc.py') -+gen_installed_test_shscript = files('../../build-aux/gen-installed-test-shscript.py') -+ - foreach t : core_tests - fname = t[0] - test_name = fname.split('.')[0].underscorify() -@@ -151,8 +165,38 @@ foreach t : core_tests - include_directories : [configinc], - link_with : link_with_libs, - dependencies : test_deps + glib_deps + gst_deps, -+ install_dir: installed_tests_execdir, -+ install: installed_tests_enabled - ) - -+ if installed_tests_enabled -+ installed_test_shscript = test_name + '.sh' -+ shscript = custom_target (test_name + '_shscript', -+ output: installed_test_shscript, -+ command: [ -+ python, -+ gen_installed_test_shscript, -+ '--test-execdir=@0@'.format(installed_tests_execdir), -+ '--testname=@0@'.format(test_name), -+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_shscript)), -+ ], -+ install: true, -+ install_dir: installed_tests_execdir) -+ -+ installed_test_desc = test_name + '.test' -+ data = custom_target(test_name + '_desc', -+ output: installed_test_desc, -+ command: [ -+ python, -+ gen_installed_test_desc, -+ '--test-execdir=@0@'.format(installed_tests_execdir), -+ '--testname=@0@'.format(installed_test_shscript), -+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_desc)), -+ ], -+ install: true, -+ install_dir: installed_tests_datadir) -+ endif -+ - env = environment() - env.set('GST_PLUGIN_PATH_1_0', meson.build_root()) - env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '') -diff --git a/tests/files/testfile b/tests/files/testfile -new file mode 100644 -index 000000000..89954e0e2 ---- /dev/null -+++ b/tests/files/testfile -@@ -0,0 +1,80 @@ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ --- -2.29.2 - diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch index e0e64e2c7..e0e64e2c7 100644 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-respect-the-idententaion-used-in-meson.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-respect-the-idententaion-used-in-meson.patch new file mode 100644 index 000000000..6f571a12d --- /dev/null +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-respect-the-idententaion-used-in-meson.patch @@ -0,0 +1,36 @@ +From 122e5ac3dd16a461b6ae595605490c8f5d1c3a9d Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sun, 11 Apr 2021 19:48:13 +0100 +Subject: [PATCH 1/4] tests: respect the idententaion used in meson + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + tests/check/meson.build | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/tests/check/meson.build b/tests/check/meson.build +index a617cf159..b2636714b 100644 +--- a/tests/check/meson.build ++++ b/tests/check/meson.build +@@ -146,11 +146,11 @@ foreach t : core_tests + + if not skip_test + exe = executable(test_name, fname, +- c_args : gst_c_args + test_defines, +- cpp_args : gst_c_args + test_defines, +- include_directories : [configinc], +- link_with : link_with_libs, +- dependencies : test_deps + glib_deps + gst_deps, ++ c_args : gst_c_args + test_defines, ++ cpp_args : gst_c_args + test_defines, ++ include_directories : [configinc], ++ link_with : link_with_libs, ++ dependencies : test_deps + glib_deps + gst_deps, + ) + + env = environment() +-- +2.31.1 + diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-add-support-for-install-the-tests.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-add-support-for-install-the-tests.patch new file mode 100644 index 000000000..b77fb5797 --- /dev/null +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-add-support-for-install-the-tests.patch @@ -0,0 +1,110 @@ +From c9e93c7a3e4d2773abef4f5e1464af24f36700b3 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sun, 11 Apr 2021 19:48:13 +0100 +Subject: [PATCH 2/4] tests: add support for install the tests + +This will provide to run the tests using the gnome-desktop-testing [1] + +[1] https://wiki.gnome.org/Initiatives/GnomeGoals/InstalledTests + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + meson.build | 5 +++++ + meson_options.txt | 1 + + template.test.in | 3 +++ + tests/check/meson.build | 22 +++++++++++++++++++++- + 4 files changed, 30 insertions(+), 1 deletion(-) + create mode 100644 template.test.in + +diff --git a/meson.build b/meson.build +index c4e8774f5..1abf4eb26 100644 +--- a/meson.build ++++ b/meson.build +@@ -562,6 +562,11 @@ if bashcomp_dep.found() + endif + endif + ++installed_tests_metadir = join_paths(datadir, 'installed-tests', meson.project_name()) ++installed_tests_execdir = join_paths(libexecdir, 'installed-tests', meson.project_name()) ++installed_tests_enabled = get_option('installed-tests') ++installed_tests_template = files('template.test.in') ++ + plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0') + + pkgconfig = import('pkgconfig') +diff --git a/meson_options.txt b/meson_options.txt +index c8cee3762..b5da40eaa 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -15,6 +15,7 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso + option('memory-alignment', type: 'combo', + choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'], + value: 'malloc') ++option('installed-tests', type : 'boolean', value : false, description : 'Enable installed tests') + + # Feature options + option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries') +diff --git a/template.test.in b/template.test.in +new file mode 100644 +index 000000000..f701627f8 +--- /dev/null ++++ b/template.test.in +@@ -0,0 +1,3 @@ ++[Test] ++Type=session ++Exec=@installed_tests_dir@/@program@ +diff --git a/tests/check/meson.build b/tests/check/meson.build +index b2636714b..a697a7b06 100644 +--- a/tests/check/meson.build ++++ b/tests/check/meson.build +@@ -124,10 +124,16 @@ test_defines = [ + '-UG_DISABLE_ASSERT', + '-UG_DISABLE_CAST_CHECKS', + '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"', +- '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"', + '-DGST_DISABLE_DEPRECATED', + ] + ++testfile = meson.current_source_dir() + '/meson.build' ++if installed_tests_enabled ++ install_data(testfile, install_dir : installed_tests_metadir, rename : 'testfile') ++ testfile = installed_tests_metadir + '/testfile' ++endif ++test_defines += '-DTESTFILE="@0@"'.format(testfile) ++ + # sanity checking + if get_option('check').disabled() + if get_option('tests').enabled() +@@ -151,6 +157,8 @@ foreach t : core_tests + include_directories : [configinc], + link_with : link_with_libs, + dependencies : test_deps + glib_deps + gst_deps, ++ install_dir: installed_tests_execdir, ++ install: installed_tests_enabled, + ) + + env = environment() +@@ -162,6 +170,18 @@ foreach t : core_tests + env.set('GST_PLUGIN_SCANNER_1_0', gst_scanner_dir + '/gst-plugin-scanner') + env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer') + ++ if installed_tests_enabled ++ test_conf = configuration_data() ++ test_conf.set('installed_tests_dir', join_paths(prefix, installed_tests_execdir)) ++ test_conf.set('program', test_name) ++ configure_file( ++ input: installed_tests_template, ++ output: test_name + '.test', ++ install_dir: installed_tests_metadir, ++ configuration: test_conf ++ ) ++ endif ++ + test(test_name, exe, env: env, timeout : 3 * 60) + endif + endforeach +-- +2.31.1 + diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0006-tests-use-a-dictionaries-for-environment.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0006-tests-use-a-dictionaries-for-environment.patch new file mode 100644 index 000000000..46813cec3 --- /dev/null +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0006-tests-use-a-dictionaries-for-environment.patch @@ -0,0 +1,48 @@ +From e82dedec1803922656e92285fc1bb75b2cdc0aad Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sat, 24 Apr 2021 10:34:47 +0100 +Subject: [PATCH 3/4] tests: use a dictionaries for environment + +meson environment() can't be passed to configure_file and it is needed for installed_tests, +use a dictionary as this is simplest solution to install the environment. + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + tests/check/meson.build | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +diff --git a/tests/check/meson.build b/tests/check/meson.build +index a697a7b06..f64524904 100644 +--- a/tests/check/meson.build ++++ b/tests/check/meson.build +@@ -161,14 +161,17 @@ foreach t : core_tests + install: installed_tests_enabled, + ) + +- env = environment() +- env.set('GST_PLUGIN_PATH_1_0', meson.build_root()) +- env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '') +- env.set('GST_STATE_IGNORE_ELEMENTS', '') +- env.set('CK_DEFAULT_TIMEOUT', '20') +- env.set('GST_REGISTRY', '@0@/@1@.registry'.format(meson.current_build_dir(), test_name)) +- env.set('GST_PLUGIN_SCANNER_1_0', gst_scanner_dir + '/gst-plugin-scanner') +- env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer') ++ # environment() can't be passed to configure_file and it is needed for installed_tests ++ # use a dictionary as this is simplest solution to install the environment ++ env = { ++ 'GST_PLUGIN_PATH_1_0': meson.build_root(), ++ 'GST_PLUGIN_SYSTEM_PATH_1_0': '', ++ 'GST_STATE_IGNORE_ELEMENTS': '', ++ 'CK_DEFAULT_TIMEOUT': '20', ++ 'GST_REGISTRY': '@0@/@1@.registry'.format(meson.current_build_dir(), test_name), ++ 'GST_PLUGIN_SCANNER_1_0': gst_scanner_dir + '/gst-plugin-scanner', ++ 'GST_PLUGIN_LOADING_WHITELIST': 'gstreamer', ++ } + + if installed_tests_enabled + test_conf = configuration_data() +-- +2.31.1 + diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0007-tests-install-the-environment-for-installed_tests.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0007-tests-install-the-environment-for-installed_tests.patch new file mode 100644 index 000000000..eabe7bcbe --- /dev/null +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0007-tests-install-the-environment-for-installed_tests.patch @@ -0,0 +1,58 @@ +From 57d2965e979f886e03eecd7e351bf01812053971 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sun, 2 May 2021 01:58:01 +0100 +Subject: [PATCH 4/4] tests: install the environment for installed_tests + +- adapt the test environment for installed_tests +- install the test environment for installed_tests +- run the tests using the installed environment + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + template.test.in | 2 +- + tests/check/meson.build | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+), 1 deletion(-) + +diff --git a/template.test.in b/template.test.in +index f701627f8..9a3fbdd09 100644 +--- a/template.test.in ++++ b/template.test.in +@@ -1,3 +1,3 @@ + [Test] + Type=session +-Exec=@installed_tests_dir@/@program@ ++Exec=sh -c 'set -aex && source @installed_tests_dir@/@program@.env && exec @installed_tests_dir@/@program@' +diff --git a/tests/check/meson.build b/tests/check/meson.build +index f64524904..a67e0f8dd 100644 +--- a/tests/check/meson.build ++++ b/tests/check/meson.build +@@ -183,6 +183,24 @@ foreach t : core_tests + install_dir: installed_tests_metadir, + configuration: test_conf + ) ++ ++ env += {'GST_REGISTRY': '~/.cache/gstreamer-1.0/@0@.registry'.format(test_name)} ++ configure_file( ++ output: test_name + '.env', ++ install_dir: installed_tests_execdir, ++ configuration : env, ++ ) ++ # helper to convert a meson environment dictionay object exported with configure_file ++ # this also remove not needed variables for the installed tests ++ meson.add_postconf_script('sed', '-i', ++ '-e', '/^#define/!d', ++ '-e', 's/^#define //g', ++ '-e', '/^GST_PLUGIN_PATH_1_0/d', ++ '-e', '/^GST_PLUGIN_SYSTEM_PATH_1_0/d', ++ '-e', '/^GST_PLUGIN_SCANNER_1_0/d', ++ '-e', 's/ /=/', ++ join_paths(meson.current_build_dir(), test_name + '.env') ++ ) + endif + + test(test_name, exe, env: env, timeout : 3 * 60) +-- +2.31.1 + diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest new file mode 100755 index 000000000..0cfa955f0 --- /dev/null +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest @@ -0,0 +1,2 @@ +#!/usr/bin/env sh +gnome-desktop-testing-runner gstreamer diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb index 856207096..8f135b383 100644 --- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb +++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb @@ -8,7 +8,7 @@ LICENSE = "LGPLv2+" DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native" -inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection +inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection ptest-gnome LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d" @@ -16,10 +16,14 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ S = "${WORKDIR}/gstreamer-${PV}" SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \ + file://run-ptest \ file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \ file://0002-Remove-unused-valgrind-detection.patch \ - file://0003-meson-Add-option-for-installed-tests.patch \ - file://0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \ + file://0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \ + file://0004-tests-respect-the-idententaion-used-in-meson.patch \ + file://0005-tests-add-support-for-install-the-tests.patch \ + file://0006-tests-use-a-dictionaries-for-environment.patch \ + file://0007-tests-install-the-environment-for-installed_tests.patch \ " SRC_URI[sha256sum] = "9aeec99b38e310817012aa2d1d76573b787af47f8a725a65b833880a094dfbc5" @@ -68,4 +72,4 @@ FILES_${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb" CVE_PRODUCT = "gstreamer" -require gstreamer1.0-ptest.inc +PTEST_BUILD_HOST_FILES = "" diff --git a/poky/meta/recipes-multimedia/libid3tag/libid3tag/cflags_filter.patch b/poky/meta/recipes-multimedia/libid3tag/libid3tag/cflags_filter.patch index 0d1d0dc38..1895748d1 100644 --- a/poky/meta/recipes-multimedia/libid3tag/libid3tag/cflags_filter.patch +++ b/poky/meta/recipes-multimedia/libid3tag/libid3tag/cflags_filter.patch @@ -4,15 +4,13 @@ flags. We need those to generate reproducible binaries. Allow them through. Upstream-Status: Pending Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> -Index: libid3tag-0.15.1b/configure.ac -=================================================================== ---- libid3tag-0.15.1b.orig/configure.ac -+++ libid3tag-0.15.1b/configure.ac +--- a/configure.ac ++++ b/configure.ac @@ -99,6 +99,10 @@ do -mno-cygwin) shift ;; -+ -fmacro-prefix-map*|-fdebug-prefix-map*) ++ -fmacro-prefix-map*|-fdebug-prefix-map*|-ffile-prefix-map*) + CFLAGS="$CFLAGS $1" + shift + ;; diff --git a/poky/meta/recipes-multimedia/libogg/libogg_1.3.4.bb b/poky/meta/recipes-multimedia/libogg/libogg_1.3.5.bb index c4004619b..b4f02e404 100644 --- a/poky/meta/recipes-multimedia/libogg/libogg_1.3.4.bb +++ b/poky/meta/recipes-multimedia/libogg/libogg_1.3.5.bb @@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \ SRC_URI = "http://downloads.xiph.org/releases/ogg/${BP}.tar.xz" -SRC_URI[md5sum] = "eadef24aad6e3e8379ba0d14971fd64a" -SRC_URI[sha256sum] = "c163bc12bc300c401b6aa35907ac682671ea376f13ae0969a220f7ddf71893fe" +SRC_URI[md5sum] = "3178c98341559657a15b185bf5d700a5" +SRC_URI[sha256sum] = "c4d91be36fc8e54deae7575241e03f4211eb102afb3fc0775fbbc1b740016705" inherit autotools pkgconfig diff --git a/poky/meta/recipes-multimedia/libtiff/tiff_4.2.0.bb b/poky/meta/recipes-multimedia/libtiff/tiff_4.3.0.bb index ea8580a25..8f929ffb5 100644 --- a/poky/meta/recipes-multimedia/libtiff/tiff_4.2.0.bb +++ b/poky/meta/recipes-multimedia/libtiff/tiff_4.3.0.bb @@ -10,11 +10,15 @@ CVE_PRODUCT = "libtiff" SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \ " -SRC_URI[sha256sum] = "eb0484e568ead8fa23b513e9b0041df7e327f4ee2d22db5a533929dfc19633cb" +SRC_URI[sha256sum] = "0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8" # exclude betas UPSTREAM_CHECK_REGEX = "tiff-(?P<pver>\d+(\.\d+)+).tar" +# Tested with check from https://security-tracker.debian.org/tracker/CVE-2015-7313 +# and 4.3.0 doesn't have the issue +CVE_CHECK_WHITELIST += "CVE-2015-7313" + inherit autotools multilib_header CACHED_CONFIGUREVARS = "ax_cv_check_gl_libgl=no" diff --git a/poky/meta/recipes-multimedia/mpg123/mpg123_1.26.4.bb b/poky/meta/recipes-multimedia/mpg123/mpg123_1.28.0.bb index 35cad6ffc..143a59ba6 100644 --- a/poky/meta/recipes-multimedia/mpg123/mpg123_1.26.4.bb +++ b/poky/meta/recipes-multimedia/mpg123/mpg123_1.28.0.bb @@ -10,7 +10,7 @@ LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=e7b9c15fcfb986abb4cc5e8400a24169" SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2" -SRC_URI[sha256sum] = "081991540df7a666b29049ad870f293cfa28863b36488ab4d58ceaa7b5846454" +SRC_URI[sha256sum] = "e49466853685026da5d113dc7ff026b1b2ad0b57d78df693a446add9db88a7d5" UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch new file mode 100644 index 000000000..b1a43bd7f --- /dev/null +++ b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch @@ -0,0 +1,26 @@ +From 4ee244d0824e772ab35abb0f9df5e8088e16fc5d Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 26 Apr 2021 19:30:40 +0200 +Subject: [PATCH] doxygen/meson.build: remove dependency on doxygen binary + +New meson refuses to complete confuguration if doxygen is absent +even if this target is never actually run. As we never run it, +let's remove it, until upstream and/or meson figure out that it's +optional and should be treated as such. + +Upstream-Status: Inappropriate [needs proper upstream fix] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + doxygen/meson.build | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/doxygen/meson.build b/doxygen/meson.build +index afc0e49..df55c83 100644 +--- a/doxygen/meson.build ++++ b/doxygen/meson.build +@@ -6,5 +6,3 @@ doxygen_conf = configure_file( + configuration : cdata, + ) + +-run_target('doxygen', +- command : ['doxygen', doxygen_conf]) diff --git a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_14.2.bb b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_14.2.bb index 03b99306b..9b8338a66 100644 --- a/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_14.2.bb +++ b/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_14.2.bb @@ -6,6 +6,7 @@ SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \ file://0001-build-sys-Add-an-option-for-enabling-disabling-Valgr.patch \ file://0001-meson-Check-for-__get_cpuid.patch \ file://volatiles.04_pulse \ + file://0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch \ " SRC_URI[md5sum] = "1efc916251910f1e9d4df7810e3e69f8" SRC_URI[sha256sum] = "75d3f7742c1ae449049a4c88900e454b8b350ecaa8c544f3488a2562a9ff66f1" diff --git a/poky/meta/recipes-multimedia/x264/x264_git.bb b/poky/meta/recipes-multimedia/x264/x264_git.bb index f95fb0c41..81354a8fd 100644 --- a/poky/meta/recipes-multimedia/x264/x264_git.bb +++ b/poky/meta/recipes-multimedia/x264/x264_git.bb @@ -14,7 +14,7 @@ SRC_URI = "git://github.com/mirror/x264;branch=stable \ " UPSTREAM_CHECK_COMMITS = "1" -SRCREV = "544c61f082194728d0391fb280a6e138ba320a96" +SRCREV = "55d517bc4569272a2c9a367a4106c234aba2ffbc" PV = "r3039+git${SRCPV}" diff --git a/poky/meta/recipes-rt/rt-tests/rt-tests.inc b/poky/meta/recipes-rt/rt-tests/rt-tests.inc index 9358f13d0..e97140add 100644 --- a/poky/meta/recipes-rt/rt-tests/rt-tests.inc +++ b/poky/meta/recipes-rt/rt-tests/rt-tests.inc @@ -1,5 +1,5 @@ -# Version 1.8 -SRCREV = "32819581cc0509c9d58c33c3061f57abe0c40c88" +SRCREV = "c9051a36d934503b4673ca5615f631bae36dead0" +PV = "1.10+git${SRCPV}" PE = "1" SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git;branch=unstable/devel/latest" diff --git a/poky/meta/recipes-sato/puzzles/files/0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch b/poky/meta/recipes-sato/puzzles/files/0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch deleted file mode 100644 index d40a3b1ef..000000000 --- a/poky/meta/recipes-sato/puzzles/files/0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 337799e40350b3db2441cc98f65ec36a74dfb356 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 21 Apr 2017 12:18:08 -0700 -Subject: [PATCH] Use -Wno-error=format-overflow= if the compiler supports it - -we need this warning to be suppressed with gcc7+ -however older compilers dont support it so we need -a way to disble it only if compiler supports it - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 3a38c95..bb9035e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -42,7 +42,7 @@ fi - if test "x$GCC" = "xyes"; then - AC_MSG_CHECKING([for usable gcc warning flags]) - gccwarningflags= -- for flag in -Wall -Werror -std=c89 -pedantic; do -+ for flag in -Wall -Werror -std=c89 -pedantic -Wno-error=format-overflow=; do - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS$gccwarningflags $flag $GTK_CFLAGS" --- -2.12.2 - diff --git a/poky/meta/recipes-sato/puzzles/puzzles_git.bb b/poky/meta/recipes-sato/puzzles/puzzles_git.bb index 16a08585c..44fa59700 100644 --- a/poky/meta/recipes-sato/puzzles/puzzles_git.bb +++ b/poky/meta/recipes-sato/puzzles/puzzles_git.bb @@ -2,17 +2,14 @@ SUMMARY = "Simon Tatham's Portable Puzzle Collection" DESCRIPTION = "Collection of small computer programs which implement one-player puzzle games." HOMEPAGE = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENCE;md5=6099f4981f9461d7f411091e69a7f07a" +LIC_FILES_CHKSUM = "file://LICENCE;md5=6e7d24cf1c949887ee9447a1e2a4a24c" -DEPENDS = "libxt" - -# The libxt requires x11 in DISTRO_FEATURES +# gtk support includes a bunch of x11 headers REQUIRED_DISTRO_FEATURES = "x11" -SRC_URI = "git://git.tartarus.org/simon/puzzles.git \ +SRC_URI = "git://git.tartarus.org/simon/puzzles.git;branch=main \ file://fix-compiling-failure-with-option-g-O.patch \ file://0001-palisade-Fix-warnings-with-clang-on-arm.patch \ - file://0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch \ file://0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch \ file://fix-ki-uninitialized.patch \ file://0001-malloc-Check-for-excessive-values-to-malloc.patch \ @@ -20,27 +17,15 @@ SRC_URI = "git://git.tartarus.org/simon/puzzles.git \ " UPSTREAM_CHECK_COMMITS = "1" -SRCREV = "84cb4c6701e027090ff3fd955ce08065e20121b2" +SRCREV = "8f3413c31ffd43c4ebde40894ac1b2f7cdf222c3" PE = "2" PV = "0.0+git${SRCPV}" S = "${WORKDIR}/git" -inherit autotools features_check pkgconfig - -PACKAGECONFIG ??= "gtk3" -PACKAGECONFIG[gtk2] = "--with-gtk=2,,gtk+," -PACKAGECONFIG[gtk3] = "--with-gtk=3,,gtk+3," - -CFLAGS_append = " -Wno-deprecated-declarations" - -ASNEEDED = "" +inherit cmake features_check pkgconfig -do_configure_prepend () { - cd ${S} - ./mkfiles.pl - cd ${B} -} +DEPENDS += "gtk+3" do_install_append () { # net conflicts with Samba, so rename it @@ -68,16 +53,3 @@ STOP done } -PACKAGES += "${PN}-extra" - -FILES_${PN} = "" -FILES_${PN}-extra = "${prefix}/bin ${datadir}/applications" - -python __anonymous () { - var = d.expand("FILES_${PN}") - data = d.getVar(var, False) - for name in ("bridges", "fifteen", "inertia", "map", "samegame", "slant"): - data = data + " ${bindir}/%s" % name - data = data + " ${datadir}/applications/%s.desktop" % name - d.setVar(var, data) -} diff --git a/poky/meta/recipes-sato/rxvt-unicode/rxvt-unicode/0001-libev-remove-deprecated-throw-specification.patch b/poky/meta/recipes-sato/rxvt-unicode/rxvt-unicode/0001-libev-remove-deprecated-throw-specification.patch deleted file mode 100644 index f10dca09d..000000000 --- a/poky/meta/recipes-sato/rxvt-unicode/rxvt-unicode/0001-libev-remove-deprecated-throw-specification.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 9a8f1d73e7b7e183768a8379ef32429a84f0e5c2 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 26 Feb 2021 18:11:56 -0800 -Subject: [PATCH] libev: remove deprecated throw specification - -removes the throw specifications that are deprecated since C++11: -warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated] - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - libev/ev++.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libev/ev++.h b/libev/ev++.h -index 4f0a36a..85ddf44 100644 ---- a/libev/ev++.h -+++ b/libev/ev++.h -@@ -376,7 +376,7 @@ namespace ev { - - struct default_loop : loop_ref - { -- default_loop (unsigned int flags = AUTO) throw (bad_loop) -+ default_loop (unsigned int flags = AUTO) - #if EV_MULTIPLICITY - : loop_ref (ev_default_loop (flags)) - #endif --- -2.30.1 - diff --git a/poky/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.22.bb b/poky/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.26.bb index 283e8d775..3fe69a543 100644 --- a/poky/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.22.bb +++ b/poky/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.26.bb @@ -4,7 +4,5 @@ LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ file://src/main.C;beginline=1;endline=31;md5=d3600d7ee1062667fcd1193fbe6485f6" -SRC_URI += "file://0001-libev-remove-deprecated-throw-specification.patch" - -SRC_URI[sha256sum] = "e94628e9bcfa0adb1115d83649f898d6edb4baced44f5d5b769c2eeb8b95addd" +SRC_URI[sha256sum] = "643116b9a25d29ad29f4890131796d42e6d2d21312282a613ef66c80c5b8c98b" diff --git a/poky/meta/recipes-sato/webkit/libwpe_1.8.0.bb b/poky/meta/recipes-sato/webkit/libwpe_1.10.1.bb index 164831be3..4680c1e95 100644 --- a/poky/meta/recipes-sato/webkit/libwpe_1.8.0.bb +++ b/poky/meta/recipes-sato/webkit/libwpe_1.10.1.bb @@ -14,7 +14,7 @@ inherit cmake features_check REQUIRED_DISTRO_FEATURES = "opengl" SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "a6f00a7d091cbd4db57fe7ee3b4c12c6350921d654ed79812800a26c888481d2" +SRC_URI[sha256sum] = "a327b3ffcf2356dbe8148c1db4bbdc5359d7e7163d177f67551a8393b144adf0" # This is a tweak of upstream-version-is-even needed because # ipstream directory contains tarballs for other components as well. diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch index ca7b1bca4..efe286ed6 100644 --- a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch +++ b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch @@ -1,4 +1,4 @@ -From b145ab4273c59f4f908cdaff9e267241bd970e93 Mon Sep 17 00:00:00 2001 +From af90ae1f128626e8d57a8bcbc432596bfc2987af Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 3 Feb 2020 17:06:27 -0800 Subject: [PATCH] Enable THREADS_PREFER_PTHREAD_FLAG @@ -20,19 +20,19 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> 2 files changed, 2 insertions(+) diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index 8732e935..9b4fbae7 100644 +index af6c0fac..f393d741 100644 --- a/Source/cmake/OptionsGTK.cmake +++ b/Source/cmake/OptionsGTK.cmake -@@ -32,6 +32,7 @@ set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") - if (USER_AGENT_BRANDING) - add_definitions(-DUSER_AGENT_BRANDING="${USER_AGENT_BRANDING}") - endif () +@@ -6,6 +6,7 @@ WEBKIT_OPTION_BEGIN() + SET_PROJECT_VERSION(2 32 1) + + set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") +set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Cairo 1.14.0 REQUIRED) find_package(Fontconfig 2.8.0 REQUIRED) diff --git a/Source/cmake/OptionsJSCOnly.cmake b/Source/cmake/OptionsJSCOnly.cmake -index 316c6240..2f712602 100644 +index 10664400..d9aca95a 100644 --- a/Source/cmake/OptionsJSCOnly.cmake +++ b/Source/cmake/OptionsJSCOnly.cmake @@ -1,3 +1,4 @@ diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch deleted file mode 100644 index 93bda4d75..000000000 --- a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 40520b0de69d8ca8e659248f5ffe641f33cc6dee Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Tue, 9 Mar 2021 14:16:58 -0800 -Subject: [PATCH] Extend atomics check to include 1-byte CAS test - -Rename ATOMIC_INT64_REQUIRES_LIBATOMIC to ATOMICS_REQUIRE_LIBATOMIC so -it can reflect broader range which is now checked - -Rename ATOMIC_INT64_IS_BUILTIN to ATOMICS_ARE_BUILTIN - -Upstream-Status: Submitted [https://bugs.webkit.org/attachment.cgi?bugid=222959] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - Source/JavaScriptCore/CMakeLists.txt | 2 +- - Source/WebKit/CMakeLists.txt | 2 +- - Source/cmake/WebKitCompilerFlags.cmake | 15 ++++++++++----- - 3 files changed, 12 insertions(+), 7 deletions(-) - ---- a/Source/JavaScriptCore/CMakeLists.txt -+++ b/Source/JavaScriptCore/CMakeLists.txt -@@ -129,7 +129,7 @@ if (USE_CAPSTONE) - list(APPEND JavaScriptCore_LIBRARIES capstone) - endif () - --if (ATOMIC_INT64_REQUIRES_LIBATOMIC) -+if (ATOMICS_REQUIRE_LIBATOMIC) - list(APPEND JavaScriptCore_LIBRARIES atomic) - endif () - ---- a/Source/WebKit/CMakeLists.txt -+++ b/Source/WebKit/CMakeLists.txt -@@ -337,7 +337,7 @@ if (USE_LIBWEBRTC) - list(APPEND WebKit_LIBRARIES webrtc) - endif () - --if (ATOMIC_INT64_REQUIRES_LIBATOMIC) -+if (ATOMICS_REQUIRE_LIBATOMIC) - list(APPEND WebKit_PRIVATE_LIBRARIES atomic) - endif () - ---- a/Source/cmake/WebKitCompilerFlags.cmake -+++ b/Source/cmake/WebKitCompilerFlags.cmake -@@ -280,12 +280,17 @@ endif () - if (COMPILER_IS_GCC_OR_CLANG) - set(ATOMIC_TEST_SOURCE " - #include <atomic> -- int main() { std::atomic<int64_t> i(0); i++; return 0; } -+ int main() { -+ std::atomic<int64_t> i(0); -+ std::atomic<int8_t> j(0); -+ i++; j++; -+ return 0; -+ } - ") -- check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMIC_INT64_IS_BUILTIN) -- if (NOT ATOMIC_INT64_IS_BUILTIN) -+ check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMICS_ARE_BUILTIN) -+ if (NOT ATOMICS_ARE_BUILTIN) - set(CMAKE_REQUIRED_LIBRARIES atomic) -- check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMIC_INT64_REQUIRES_LIBATOMIC) -+ check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMICS_REQUIRE_LIBATOMIC) - unset(CMAKE_REQUIRED_LIBRARIES) - endif () - endif () ---- a/Source/WTF/wtf/CMakeLists.txt -+++ b/Source/WTF/wtf/CMakeLists.txt -@@ -529,6 +529,10 @@ list(APPEND WTF_LIBRARIES - ICU::uc - ) - -+if (ATOMICS_REQUIRE_LIBATOMIC) -+ list(APPEND WTF_LIBRARIES atomic) -+endif () -+ - set(WTF_INTERFACE_LIBRARIES WTF) - set(WTF_INTERFACE_INCLUDE_DIRECTORIES ${WTF_FRAMEWORK_HEADERS_DIR}) - set(WTF_INTERFACE_DEPENDENCIES WTF_CopyHeaders) diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch deleted file mode 100644 index a13b394fd..000000000 --- a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 828a500d5be62ba6fc94bd4fac3fe4bf1b1d4f6d Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 6 Oct 2017 17:00:08 +0300 -Subject: [PATCH] Fix build with musl - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - Source/JavaScriptCore/runtime/MachineContext.h | 10 +++++----- - Source/WTF/wtf/PlatformHave.h | 2 +- - 2 files changed, 6 insertions(+), 6 deletions(-) - ---- a/Source/JavaScriptCore/runtime/MachineContext.h -+++ b/Source/JavaScriptCore/runtime/MachineContext.h -@@ -196,7 +196,7 @@ static inline void*& stackPointerImpl(mc - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) -+#elif defined(__linux__) - - #if CPU(X86) - return reinterpret_cast<void*&>((uintptr_t&) machineContext.gregs[REG_ESP]); -@@ -347,7 +347,7 @@ static inline void*& framePointerImpl(mc - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) -+#elif defined(__linux__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86) -@@ -498,7 +498,7 @@ static inline void*& instructionPointerI - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) -+#elif defined(__linux__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86) -@@ -656,7 +656,7 @@ inline void*& argumentPointer<1>(mcontex - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) -+#elif defined(__linux__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86) -@@ -773,7 +773,7 @@ inline void*& llintInstructionPointer(mc - #error Unknown Architecture - #endif - --#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) -+#elif defined(__linux__) - - // The following sequence depends on glibc's sys/ucontext.h. - #if CPU(X86) ---- a/Source/WTF/wtf/PlatformHave.h -+++ b/Source/WTF/wtf/PlatformHave.h -@@ -202,7 +202,7 @@ - #define HAVE_HOSTED_CORE_ANIMATION 1 - #endif - --#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS))) -+#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__linux__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS))) - #define HAVE_MACHINE_CONTEXT 1 - #endif - ---- a/Source/WebCore/xml/XPathGrammar.cpp -+++ b/Source/WebCore/xml/XPathGrammar.cpp -@@ -966,7 +966,7 @@ int yydebug; - #if YYERROR_VERBOSE - - # ifndef yystrlen --# if defined __GLIBC__ && defined _STRING_H -+# if defined __linux__ && defined _STRING_H - # define yystrlen strlen - # else - /* Return the length of YYSTR. */ -@@ -989,7 +989,7 @@ yystrlen (yystr) - # endif - - # ifndef yystpcpy --# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -+# if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE - # define yystpcpy stpcpy - # else - /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-MiniBrowser-Fix-reproduciblity.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-MiniBrowser-Fix-reproduciblity.patch new file mode 100644 index 000000000..98d2d1ded --- /dev/null +++ b/poky/meta/recipes-sato/webkit/webkitgtk/0001-MiniBrowser-Fix-reproduciblity.patch @@ -0,0 +1,31 @@ +From dcf9ae0dc0b4510eddbeeea09e11edfb123f95af Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 2 May 2021 13:10:49 -0700 +Subject: [PATCH] MiniBrowser: Fix reproduciblity + +Do not emit references to source dir in generated sourcecode + +Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=225283] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + Tools/MiniBrowser/gtk/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Tools/MiniBrowser/gtk/CMakeLists.txt b/Tools/MiniBrowser/gtk/CMakeLists.txt +index 93b62521..482d3b00 100644 +--- a/Tools/MiniBrowser/gtk/CMakeLists.txt ++++ b/Tools/MiniBrowser/gtk/CMakeLists.txt +@@ -51,8 +51,8 @@ add_custom_command( + OUTPUT ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.c + ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.h + MAIN_DEPENDENCY ${MiniBrowser_DIR}/browser-marshal.list +- COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --body > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.c +- COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --header > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.h ++ COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --body --skip-source > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.c ++ COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --header --skip-source > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.h + VERBATIM) + + if (USE_GTK4) +-- +2.31.1 + diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Properly-use-CompletionHandler-when-USE_OPENGL_OR_ES.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Properly-use-CompletionHandler-when-USE_OPENGL_OR_ES.patch new file mode 100644 index 000000000..b5367022d --- /dev/null +++ b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Properly-use-CompletionHandler-when-USE_OPENGL_OR_ES.patch @@ -0,0 +1,37 @@ +From 834f335bb3e63e0bf78eed0520df33d5c55e5e8a Mon Sep 17 00:00:00 2001 +From: "commit-queue@webkit.org" + <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc> +Date: Sat, 10 Apr 2021 22:02:50 +0000 +Subject: [PATCH] Properly use CompletionHandler when USE_OPENGL_OR_ES is set + to OFF https://bugs.webkit.org/show_bug.cgi?id=224149 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Patch by Charlène Wendling <julianaito@posteo.jp> on 2021-04-10 +Reviewed by Fujii Hironori. + +* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: +(WebKit::LayerTreeHost::forceRepaintAsync): + +git-svn-id: http://svn.webkit.org/repository/webkit/trunk@275802 268f45cc-cd09-0410-ab3c-d52691b4dbfc + +Upstream-Status: Backport +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + .../WebPage/CoordinatedGraphics/LayerTreeHost.h | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h +index 6727d16c8c0b..db65f813267d 100644 +--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h ++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h +@@ -213,7 +213,7 @@ inline void LayerTreeHost::setRootCompositingLayer(WebCore::GraphicsLayer*) { } + inline void LayerTreeHost::setViewOverlayRootLayer(WebCore::GraphicsLayer*) { } + inline void LayerTreeHost::scrollNonCompositedContents(const WebCore::IntRect&) { } + inline void LayerTreeHost::forceRepaint() { } +-inline bool LayerTreeHost::forceRepaintAsync(CompletionHandler<void()>&) { return false; } ++inline void LayerTreeHost::forceRepaintAsync(CompletionHandler<void()>&&) { } + inline void LayerTreeHost::sizeDidChange(const WebCore::IntSize&) { } + inline void LayerTreeHost::pauseRendering() { } + inline void LayerTreeHost::resumeRendering() { } diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch b/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch index f770b381c..ffe1b74be 100644 --- a/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch +++ b/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch @@ -1,3 +1,8 @@ +From d95f46e149226f634830e76cc1f4f8e3ee04ff5a Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Fri, 6 Nov 2020 04:38:13 +0100 +Subject: [PATCH] webkitgtk: fix build with x11 enabled + Since https://github.com/WebKit/webkit/commit/acd3f32cd43c363be032f93ede3aa10c4ee97fa4 it uses XVisualInfo which is defined in Xutil.h @@ -11,9 +16,14 @@ webkitgtk-2.30.2/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp:132 Upstream-Status: Pending Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> -diff -uNr webkitgtk-2.30.2.orig/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp webkitgtk-2.30.2/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp ---- webkitgtk-2.30.2.orig/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp 2020-08-12 09:17:55.000000000 +0000 -+++ webkitgtk-2.30.2/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp 2020-11-06 03:11:40.379913528 +0000 +--- + Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp b/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp +index 2d66b9cd..424fb5a1 100644 +--- a/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp ++++ b/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp @@ -30,6 +30,7 @@ #if PLATFORM(X11) @@ -21,4 +31,4 @@ diff -uNr webkitgtk-2.30.2.orig/Source/WebCore/platform/graphics/x11/PlatformDis +#include <X11/Xutil.h> #include <X11/extensions/Xcomposite.h> #if PLATFORM(GTK) - #include <X11/extensions/Xdamage.h> + #include <X11/Xutil.h> diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch b/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch index dc3a71d93..f71f8452f 100644 --- a/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch +++ b/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch @@ -1,4 +1,7 @@ -reduce thread stack and heap usage for javascriptcore on musl +From 04e4999c6fa2e9810634745a07f1e380f27b8e61 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 17 Mar 2021 13:24:57 -0700 +Subject: [PATCH] reduce thread stack and heap usage for javascriptcore on musl default sizes for musl are smaller compared to glibc, this matches to musl defaults, avoid stack overflow crashes in jscore @@ -13,12 +16,19 @@ setting DEFAULT_THREAD_STACK_SIZE_IN_KB alone is not enough either This patch only changes behavior when using musl, the defaults for glibc in OE remains same -Upstream-Status: Pending +Upstream-Status: Accepted Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + Source/JavaScriptCore/runtime/OptionsList.h | 18 +++++++++++++++--- + Source/WTF/wtf/Threading.h | 4 ++++ + 2 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/Source/JavaScriptCore/runtime/OptionsList.h b/Source/JavaScriptCore/runtime/OptionsList.h +index bb6d2f1d..a6209742 100644 --- a/Source/JavaScriptCore/runtime/OptionsList.h +++ b/Source/JavaScriptCore/runtime/OptionsList.h -@@ -75,6 +75,18 @@ constexpr bool enableWebAssemblyStreamin +@@ -71,6 +71,18 @@ JS_EXPORT_PRIVATE bool canUseJITCage(); // On instantiation of the first VM instance, the Options will be write protected // and cannot be modified thereafter. @@ -37,7 +47,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> #define FOR_EACH_JSC_OPTION(v) \ v(Bool, useKernTCSM, defaultTCSMValue(), Normal, "Note: this needs to go before other options since they depend on this value.") \ v(Bool, validateOptions, false, Normal, "crashes if mis-typed JSC options were passed to the VM") \ -@@ -90,9 +102,9 @@ constexpr bool enableWebAssemblyStreamin +@@ -86,9 +98,9 @@ JS_EXPORT_PRIVATE bool canUseJITCage(); \ v(Bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \ \ @@ -50,19 +60,12 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> \ v(Bool, crashOnDisallowedVMEntry, ASSERT_ENABLED, Normal, "Forces a crash if we attempt to enter the VM when disallowed") \ v(Bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \ -@@ -601,7 +613,7 @@ public: - bool init(const char*); - bool isInRange(unsigned); - const char* rangeString() const { return (m_state > InitError) ? m_rangeString : s_nullRangeStr; } -- -+ - void dump(PrintStream& out) const; - - private: +diff --git a/Source/WTF/wtf/Threading.h b/Source/WTF/wtf/Threading.h +index 9495d6c1..190b3811 100644 --- a/Source/WTF/wtf/Threading.h +++ b/Source/WTF/wtf/Threading.h -@@ -56,6 +56,10 @@ - #include <array> +@@ -60,6 +60,10 @@ + #include <dispatch/dispatch.h> #endif +#if OS(LINUX) && !defined(__GLIBC__) diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch b/poky/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch index 0493150a9..aa11c131d 100644 --- a/poky/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch +++ b/poky/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch @@ -1,22 +1,28 @@ +From ec6045fcf5a46123b54029a675d08d89a5e30f21 Mon Sep 17 00:00:00 2001 From: Alberto Garcia <berto@igalia.com> -Subject: Reduce memory usage when not using the Gold linker -Bug-Debian: https://bugs.debian.org/949621 -Forwarded: no +Date: Sun, 25 Apr 2021 18:45:13 +0000 +Subject: [PATCH] Reduce memory usage when not using the Gold linker Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + Source/cmake/OptionsCommon.cmake | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Source/cmake/OptionsCommon.cmake b/Source/cmake/OptionsCommon.cmake +index dd4da682..71ad6106 100644 --- a/Source/cmake/OptionsCommon.cmake +++ b/Source/cmake/OptionsCommon.cmake -@@ -95,6 +95,12 @@ option(GCC_OFFLINEASM_SOURCE_MAP - "Produce debug line information for offlineasm-generated code" +@@ -101,6 +101,11 @@ option(GCC_OFFLINEASM_SOURCE_MAP ${GCC_OFFLINEASM_SOURCE_MAP_DEFAULT}) + option(USE_APPLE_ICU "Use Apple's internal ICU" ${APPLE}) +# Pass --reduce-memory-overheads to the bfd linker in order to save memory +if (NOT USE_LD_GOLD) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--reduce-memory-overheads") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--reduce-memory-overheads") +endif () -+ + # Enable the usage of OpenMP. # - At this moment, OpenMP is only used as an alternative implementation - # to native threads for the parallelization of the SVG filters. diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.30.5.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.32.1.bb index cdc3f9b58..7abf96c25 100644 --- a/poky/meta/recipes-sato/webkit/webkitgtk_2.30.5.bb +++ b/poky/meta/recipes-sato/webkit/webkitgtk_2.32.1.bb @@ -15,14 +15,14 @@ SRC_URI = "https://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \ file://0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch \ file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \ file://0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch \ - file://0001-Fix-build-with-musl.patch \ file://include_xutil.patch \ file://reduce-memory-overheads.patch \ - file://0001-Extend-atomics-check-to-include-1-byte-CAS-test.patch \ file://musl-lower-stack-usage.patch \ + file://0001-MiniBrowser-Fix-reproduciblity.patch \ + file://0001-Properly-use-CompletionHandler-when-USE_OPENGL_OR_ES.patch \ " -SRC_URI[sha256sum] = "7d0dab08e3c5ae07bec80b2822ef42e952765d5724cac86eb23999bfed5a7f1f" +SRC_URI[sha256sum] = "136117317f70f66486f71b8edf5e46f8776403c5d8a296e914b11a36ef836917" inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc @@ -75,6 +75,7 @@ EXTRA_OECMAKE = " \ -DENABLE_MINIBROWSER=ON \ -DPYTHON_EXECUTABLE=`which python3` \ -DENABLE_BUBBLEWRAP_SANDBOX=OFF \ + -DENABLE_GAMEPAD=OFF \ " # Javascript JIT is not supported on ARC diff --git a/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.8.0.bb b/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.10.0.bb index 344aa9717..38a32dad1 100644 --- a/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.8.0.bb +++ b/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.10.0.bb @@ -13,7 +13,7 @@ inherit meson features_check REQUIRED_DISTRO_FEATURES = "opengl" SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "9652a99c75fe1c6eab0585b6395f4e104b2427e4d1f42969f1f77df29920d253" +SRC_URI[sha256sum] = "b89dfd3500a4dec711132cd7bff72599e67d56a419d000730e14bb99547509cc" # This is a tweak of upstream-version-is-even needed because # ipstream directory contains tarballs for other components as well. diff --git a/poky/meta/recipes-support/atk/at-spi2-core_2.38.0.bb b/poky/meta/recipes-support/atk/at-spi2-core_2.40.2.bb index a74e4cd5c..ebd3ed49c 100644 --- a/poky/meta/recipes-support/atk/at-spi2-core_2.38.0.bb +++ b/poky/meta/recipes-support/atk/at-spi2-core_2.40.2.bb @@ -11,7 +11,7 @@ MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}" SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "84e36c3fe66862133f5fe229772b76aa2526e10de5014a3778f2fa46ce550da5" +SRC_URI[sha256sum] = "44dc17af943b0fd196c61c1e03b6c166960385cae96ccb5e95bdefffb6849f98" X11DEPENDS = "virtual/libx11 libxi libxtst" diff --git a/poky/meta/recipes-support/attr/acl_2.2.53.bb b/poky/meta/recipes-support/attr/acl_2.3.1.bb index 7cee45948..7f6cbf5c4 100644 --- a/poky/meta/recipes-support/attr/acl_2.2.53.bb +++ b/poky/meta/recipes-support/attr/acl_2.3.1.bb @@ -21,8 +21,7 @@ SRC_URI = "${SAVANNAH_GNU_MIRROR}/acl/${BP}.tar.gz \ file://0001-test-patch-out-failing-bits.patch \ " -SRC_URI[md5sum] = "007aabf1dbb550bcddde52a244cd1070" -SRC_URI[sha256sum] = "06be9865c6f418d851ff4494e12406568353b891ffe1f596b34693c387af26c7" +SRC_URI[sha256sum] = "760c61c68901b37fdd5eefeeaf4c0c7a26bdfdd8ac747a1edff1ce0e243c11af" inherit autotools gettext ptest diff --git a/poky/meta/recipes-support/boost/boost-1.75.0.inc b/poky/meta/recipes-support/boost/boost-1.76.0.inc index e5a8488c5..c02f38b04 100644 --- a/poky/meta/recipes-support/boost/boost-1.75.0.inc +++ b/poky/meta/recipes-support/boost/boost-1.76.0.inc @@ -11,10 +11,10 @@ BOOST_VER = "${@"_".join(d.getVar("PV").split("."))}" BOOST_MAJ = "${@"_".join(d.getVar("PV").split(".")[0:2])}" BOOST_P = "boost_${BOOST_VER}" -SRC_URI = "https://dl.bintray.com/boostorg/release/${PV}/source/${BOOST_P}.tar.bz2" -SRC_URI[sha256sum] = "953db31e016db7bb207f11432bef7df100516eeb746843fa0486a222e3fd49cb" +SRC_URI = "https://boostorg.jfrog.io/artifactory/main/release/${PV}/source/${BOOST_P}.tar.bz2" +SRC_URI[sha256sum] = "f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41" UPSTREAM_CHECK_URI = "http://www.boost.org/users/download/" -UPSTREAM_CHECK_REGEX = "boostorg/release/(?P<pver>.*)/source/" +UPSTREAM_CHECK_REGEX = "release/(?P<pver>.*)/source/" S = "${WORKDIR}/${BOOST_P}" diff --git a/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb b/poky/meta/recipes-support/boost/boost-build-native_4.4.1.bb index 19e991e65..ad675ce73 100644 --- a/poky/meta/recipes-support/boost/boost-build-native_4.3.0.bb +++ b/poky/meta/recipes-support/boost/boost-build-native_4.4.1.bb @@ -7,7 +7,7 @@ LICENSE = "BSL-1.0" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c" SRC_URI = "git://github.com/boostorg/build;protocol=https" -SRCREV = "632ea768f3eb225b4472c5ed6d20afee708724ad" +SRCREV = "76da80f33187a3d9e5336157cdfae12ce82e37eb" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+){2,}))" diff --git a/poky/meta/recipes-support/boost/boost/0001-Fixes-wrong-type-for-mutex-in-regex-v5.patch b/poky/meta/recipes-support/boost/boost/0001-Fixes-wrong-type-for-mutex-in-regex-v5.patch new file mode 100644 index 000000000..a8305ff2e --- /dev/null +++ b/poky/meta/recipes-support/boost/boost/0001-Fixes-wrong-type-for-mutex-in-regex-v5.patch @@ -0,0 +1,54 @@ +From 6064875bff2e52ba63f01911eb4deb79259c5e3b Mon Sep 17 00:00:00 2001 +From: Carlos Miguel Ferreira <carlosmf.pt@gmail.com> +Date: Thu, 3 Jun 2021 23:10:37 +0100 +Subject: [PATCH] Fixes wrong type for mutex in regex v5 + +With the Boost.Regex to ehader-only library, the declaration +of a mutex that should have been changed from boost::static_mutex +to std::mutex was left behind. This was preventing regex from +being built for older arm platforms [1] + +[1]: https://github.com/openwrt/packages/issues/15725 + +Upstream-Status: Submitted [https://github.com/boostorg/regex/pull/132] + +Signed-off-by: Carlos Miguel Ferreira <carlosmf.pt@gmail.com> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com> +--- + boost/regex/v5/mem_block_cache.hpp | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +diff --git a/boost/regex/v5/mem_block_cache.hpp b/boost/regex/v5/mem_block_cache.hpp +index 0af4eae1..eb3ec776 100644 +--- a/boost/regex/v5/mem_block_cache.hpp ++++ b/boost/regex/v5/mem_block_cache.hpp +@@ -85,10 +85,10 @@ struct mem_block_node + struct mem_block_cache + { + // this member has to be statically initialsed: +- mem_block_node* next; +- unsigned cached_blocks; ++ mem_block_node* next { nullptr }; ++ unsigned cached_blocks { 0 }; + #ifdef BOOST_HAS_THREADS +- boost::static_mutex mut; ++ std::mutex mut; + #endif + + ~mem_block_cache() +@@ -133,11 +133,7 @@ struct mem_block_cache + } + static mem_block_cache& instance() + { +-#ifdef BOOST_HAS_THREADS +- static mem_block_cache block_cache = { 0, 0, BOOST_STATIC_MUTEX_INIT, }; +-#else +- static mem_block_cache block_cache = { 0, 0, }; +-#endif ++ static mem_block_cache block_cache; + return block_cache; + } + }; +-- +2.29.2 + diff --git a/poky/meta/recipes-support/boost/boost_1.75.0.bb b/poky/meta/recipes-support/boost/boost_1.76.0.bb index 23b0ffc67..ae91b1c87 100644 --- a/poky/meta/recipes-support/boost/boost_1.75.0.bb +++ b/poky/meta/recipes-support/boost/boost_1.76.0.bb @@ -7,4 +7,5 @@ SRC_URI += " \ file://0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch \ file://0001-dont-setup-compiler-flags-m32-m64.patch \ file://0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch \ + file://0001-Fixes-wrong-type-for-mutex-in-regex-v5.patch \ " diff --git a/poky/meta/recipes-support/ca-certificates/ca-certificates_20210119.bb b/poky/meta/recipes-support/ca-certificates/ca-certificates_20210119.bb index 888a235c1..7dcc86fdc 100644 --- a/poky/meta/recipes-support/ca-certificates/ca-certificates_20210119.bb +++ b/poky/meta/recipes-support/ca-certificates/ca-certificates_20210119.bb @@ -83,8 +83,8 @@ do_install_append_class-native () { SYSROOT="${D}${base_prefix}" ${D}${sbindir}/update-ca-certificates } -RDEPENDS_${PN}_class-target = "openssl-bin" -RDEPENDS_${PN}_class-native = "openssl-native" -RDEPENDS_${PN}_class-nativesdk = "nativesdk-openssl-bin" +RDEPENDS_${PN}_append_class-target = " openssl-bin openssl" +RDEPENDS_${PN}_append_class-native = " openssl-native" +RDEPENDS_${PN}_append_class-nativesdk = " nativesdk-openssl-bin nativesdk-openssl" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-support/curl/curl_7.75.0.bb b/poky/meta/recipes-support/curl/curl_7.77.0.bb index 7666c7b60..ee1aa89f2 100644 --- a/poky/meta/recipes-support/curl/curl_7.75.0.bb +++ b/poky/meta/recipes-support/curl/curl_7.77.0.bb @@ -13,14 +13,14 @@ SRC_URI = "https://curl.haxx.se/download/curl-${PV}.tar.bz2 \ file://0001-replace-krb5-config-with-pkg-config.patch \ " -SRC_URI[sha256sum] = "50552d4501c178e4cc68baaecc487f466a3d6d19bbf4e50a01869effb316d026" +SRC_URI[sha256sum] = "6c0c28868cb82593859fc43b9c8fdb769314c855c05cf1b56b023acf855df8ea" # Curl has used many names over the years... CVE_PRODUCT = "haxx:curl haxx:libcurl curl:curl curl:libcurl libcurl:libcurl daniel_stenberg:curl" inherit autotools pkgconfig binconfig multilib_header -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} gnutls libidn proxy threaded-resolver verbose zlib" +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} ssl libidn proxy threaded-resolver verbose zlib" PACKAGECONFIG_class-native = "ipv6 proxy ssl threaded-resolver verbose zlib" PACKAGECONFIG_class-nativesdk = "ipv6 proxy ssl threaded-resolver verbose zlib" @@ -36,6 +36,7 @@ PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5" PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap," PACKAGECONFIG[ldaps] = "--enable-ldaps,--disable-ldaps," +PACKAGECONFIG[libgsasl] = "--with-libgsasl,--without-libgsasl,libgsasl" PACKAGECONFIG[libidn] = "--with-libidn2,--without-libidn2,libidn2" PACKAGECONFIG[libssh2] = "--with-libssh2,--without-libssh2,libssh2" PACKAGECONFIG[mbedtls] = "--with-mbedtls=${STAGING_DIR_TARGET},--without-mbedtls,mbedtls" diff --git a/poky/meta/recipes-support/db/db_5.3.28.bb b/poky/meta/recipes-support/db/db_5.3.28.bb index 9cb57e6a5..b2ae98f05 100644 --- a/poky/meta/recipes-support/db/db_5.3.28.bb +++ b/poky/meta/recipes-support/db/db_5.3.28.bb @@ -15,7 +15,7 @@ HOMEPAGE = "https://www.oracle.com/database/technologies/related/berkeleydb.html LICENSE = "Sleepycat" RCONFLICTS_${PN} = "db3" -CVE_PRODUCT = "oracle_berkeley_db" +CVE_PRODUCT = "oracle_berkeley_db berkeley_db" CVE_VERSION = "11.2.${PV}" PR = "r1" diff --git a/poky/meta/recipes-support/diffoscope/diffoscope_172.bb b/poky/meta/recipes-support/diffoscope/diffoscope_177.bb index bf4726e77..0d9061dda 100644 --- a/poky/meta/recipes-support/diffoscope/diffoscope_172.bb +++ b/poky/meta/recipes-support/diffoscope/diffoscope_177.bb @@ -12,7 +12,7 @@ PYPI_PACKAGE = "diffoscope" inherit pypi setuptools3 -SRC_URI[sha256sum] = "5ffe7f38555c6409bc7e7edc277ed77dd78641fe1306fc38d153dbbe445ddea4" +SRC_URI[sha256sum] = "8ac0cad150914bab2a53caa3f21876a78b092f3d2a36b9134874cd5c04a26b2e" RDEPENDS_${PN} += "binutils vim squashfs-tools python3-libarchive-c python3-magic python3-rpm" @@ -23,6 +23,7 @@ do_install_append_class-native() { create_wrapper ${D}${bindir}/diffoscope \ MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \ RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \ + LD_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE} \ RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE} } diff --git a/poky/meta/recipes-support/enchant/enchant2_2.2.15.bb b/poky/meta/recipes-support/enchant/enchant2_2.3.0.bb index ed87f11a8..5d0f10d0b 100644 --- a/poky/meta/recipes-support/enchant/enchant2_2.2.15.bb +++ b/poky/meta/recipes-support/enchant/enchant2_2.3.0.bb @@ -12,7 +12,7 @@ DEPENDS = "glib-2.0" inherit autotools pkgconfig SRC_URI = "https://github.com/AbiWord/enchant/releases/download/v${PV}/enchant-${PV}.tar.gz" -SRC_URI[sha256sum] = "3b0f2215578115f28e2a6aa549b35128600394304bd79d6f28b0d3b3d6f46c03" +SRC_URI[sha256sum] = "df68063b6c13b245fa7246b0e098a03e74f7a91c6d8947bc5c4f42ce55e2e41d" UPSTREAM_CHECK_URI = "https://github.com/AbiWord/enchant/releases" diff --git a/poky/meta/recipes-support/gnupg/gnupg/0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch b/poky/meta/recipes-support/gnupg/gnupg/0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch deleted file mode 100644 index 5c9c02222..000000000 --- a/poky/meta/recipes-support/gnupg/gnupg/0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 59a3c76d4016ffc615f1c45184f4c6820061d69c Mon Sep 17 00:00:00 2001 -From: Richard Purdie <richard.purdie@linuxfoundation.org> -Date: Wed, 16 Aug 2017 11:14:12 +0800 -Subject: [PATCH 1/4] Use pkg-config to find pth instead of pth-config. - -Upstream-Status: Denied -[not submitted but they've been clear they don't want a pkg-config -dependency] - -RP 2014/5/22 - -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> - -Rebase to 2.1.23 -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> ---- - m4/gnupg-pth.m4 | 53 ++++++++--------------------------------------------- - 1 file changed, 8 insertions(+), 45 deletions(-) - -diff --git a/m4/gnupg-pth.m4 b/m4/gnupg-pth.m4 -index 6dc9e0e..5892531 100644 ---- a/m4/gnupg-pth.m4 -+++ b/m4/gnupg-pth.m4 -@@ -17,33 +17,9 @@ dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - # Taken and modified from the m4 macros which come with Pth. - AC_DEFUN([GNUPG_PTH_VERSION_CHECK], - [ -- _pth_version=`$PTH_CONFIG --version | awk 'NR==1 {print [$]3}'` - _req_version="ifelse([$1],,1.2.0,$1)" -+ PKG_CHECK_MODULES(PTH, [pth >= $_req_version], [have_pth=yes], [have_pth=no]) - -- AC_MSG_CHECKING(for PTH - version >= $_req_version) -- for _var in _pth_version _req_version; do -- eval "_val=\"\$${_var}\"" -- _major=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\1/'` -- _minor=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\2/'` -- _rtype=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\3/'` -- _micro=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\4/'` -- case $_rtype in -- "a" ) _rtype=0 ;; -- "b" ) _rtype=1 ;; -- "." ) _rtype=2 ;; -- esac -- _hex=`echo dummy | awk '{ printf("%d%02d%1d%02d", major, minor, rtype, micro); }' \ -- "major=$_major" "minor=$_minor" "rtype=$_rtype" "micro=$_micro"` -- eval "${_var}_hex=\"\$_hex\"" -- done -- have_pth=no -- if test ".$_pth_version_hex" != .; then -- if test ".$_req_version_hex" != .; then -- if test $_pth_version_hex -ge $_req_version_hex; then -- have_pth=yes -- fi -- fi -- fi - if test $have_pth = yes; then - AC_MSG_RESULT(yes) - AC_MSG_CHECKING([whether PTH installation is sane]) -@@ -51,9 +27,9 @@ AC_DEFUN([GNUPG_PTH_VERSION_CHECK], - _gnupg_pth_save_cflags=$CFLAGS - _gnupg_pth_save_ldflags=$LDFLAGS - _gnupg_pth_save_libs=$LIBS -- CFLAGS="$CFLAGS `$PTH_CONFIG --cflags`" -- LDFLAGS="$LDFLAGS `$PTH_CONFIG --ldflags`" -- LIBS="$LIBS `$PTH_CONFIG --libs --all`" -+ CFLAGS="$CFLAGS $PTH_CFLAGS" -+ LDFLAGS="$LDFLAGS $PTH_LDFLAGS" -+ LIBS="$LIBS $PTH_LIBS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pth.h> - ], - [[ pth_init ();]])], -@@ -80,26 +56,13 @@ AC_DEFUN([GNUPG_PTH_VERSION_CHECK], - # PTH_CLFAGS and PTH_LIBS are AS_SUBST. - # - AC_DEFUN([GNUPG_PATH_PTH], --[ AC_ARG_WITH(pth-prefix, -- AC_HELP_STRING([--with-pth-prefix=PFX], -- [prefix where GNU Pth is installed (optional)]), -- pth_config_prefix="$withval", pth_config_prefix="") -- if test x$pth_config_prefix != x ; then -- PTH_CONFIG="$pth_config_prefix/bin/pth-config" -- fi -- AC_PATH_PROG(PTH_CONFIG, pth-config, no) -+[ - tmp=ifelse([$1], ,1.3.7,$1) -- if test "$PTH_CONFIG" != "no"; then -- GNUPG_PTH_VERSION_CHECK($tmp) -- if test $have_pth = yes; then -- PTH_CFLAGS=`$PTH_CONFIG --cflags` -- PTH_LIBS=`$PTH_CONFIG --ldflags` -- PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs --all`" -- AC_DEFINE(HAVE_PTH, 1, -+ GNUPG_PTH_VERSION_CHECK($tmp) -+ if test $have_pth = yes; then -+ AC_DEFINE(HAVE_PTH, 1, - [Defined if the GNU Pth is available]) -- fi - fi - AC_SUBST(PTH_CFLAGS) - AC_SUBST(PTH_LIBS) - ]) -- --- -1.8.3.1 - diff --git a/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch b/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch index a0af2d48d..ecd626362 100644 --- a/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch +++ b/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch @@ -1,4 +1,4 @@ -From abc5c396aaddaef2e6811362e3e0cc0da28c2b34 Mon Sep 17 00:00:00 2001 +From 52ba9d34cd9317145ee8a93afd5d73dd0cbf3182 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Mon, 22 Jan 2018 18:00:21 +0200 Subject: [PATCH] configure.ac: use a custom value for the location of @@ -14,10 +14,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index 64cb8c6..3fe9027 100644 +index 7a2d410..14a7203 100644 --- a/configure.ac +++ b/configure.ac -@@ -1824,7 +1824,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf", +@@ -1841,7 +1841,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf", AC_DEFINE_UNQUOTED(GPGTAR_NAME, "gpgtar", [The name of the gpgtar tool]) diff --git a/poky/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch b/poky/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch index 6d86e5c99..d3790ac78 100644 --- a/poky/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch +++ b/poky/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch @@ -1,7 +1,7 @@ -From 53c2aec2e13f4e2d09be7148869c862f07dfdd4d Mon Sep 17 00:00:00 2001 +From 15668161c351aee5f29152db2972b1648da11210 Mon Sep 17 00:00:00 2001 From: Saul Wold <sgw@linux.intel.com> Date: Wed, 16 Aug 2017 11:16:30 +0800 -Subject: [PATCH 2/4] use pkgconfig instead of npth config +Subject: [PATCH] use pkgconfig instead of npth config Upstream-Status: Inappropriate [openembedded specific] @@ -9,29 +9,45 @@ Signed-off-by: Saul Wold <sgw@linux.intel.com> Rebase to 2.1.23 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> + --- - m4/npth.m4 | 34 ++++++++-------------------------- - 1 file changed, 8 insertions(+), 26 deletions(-) + m4/npth.m4 | 53 ++++++++--------------------------------------------- + 1 file changed, 8 insertions(+), 45 deletions(-) diff --git a/m4/npth.m4 b/m4/npth.m4 -index 17c2644..15a931b 100644 +index 06cdaee..4adda01 100644 --- a/m4/npth.m4 +++ b/m4/npth.m4 -@@ -17,10 +17,10 @@ AC_DEFUN([_AM_PATH_NPTH_CONFIG], +@@ -19,25 +19,10 @@ AC_DEFUN([_AM_PATH_NPTH_CONFIG], if test "x$npth_config_prefix" != x ; then NPTH_CONFIG="$npth_config_prefix/bin/npth-config" fi -- AC_PATH_PROG(NPTH_CONFIG, npth-config, no) + AC_PATH_PROG(PKGCONFIG, pkg-config, no) +- use_gpgrt_config="" +- if test x"$NPTH_CONFIG" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then +- if $GPGRT_CONFIG npth --exists; then +- NPTH_CONFIG="$GPGRT_CONFIG npth" +- AC_MSG_NOTICE([Use gpgrt-config as npth-config]) +- use_gpgrt_config=yes +- fi +- fi +- if test -z "$use_gpgrt_config"; then +- AC_PATH_PROG(NPTH_CONFIG, npth-config, no) +- fi +- - if test "$NPTH_CONFIG" != "no" ; then -- npth_version=`$NPTH_CONFIG --version` +- if test -z "$use_gpgrt_config"; then +- npth_version=`$NPTH_CONFIG --version` +- else +- npth_version=`$NPTH_CONFIG --modversion` +- fi + if test "$PKGCONFIG" != "no" ; then + npth_version=`$PKGCONFIG --modversion npth` fi npth_version_major=`echo $npth_version | \ sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` -@@ -45,7 +45,7 @@ AC_DEFUN([AM_PATH_NPTH], +@@ -62,7 +47,7 @@ AC_DEFUN([AM_PATH_NPTH], AC_MSG_CHECKING(for NPTH - version >= $min_npth_version) ok=no @@ -40,7 +56,7 @@ index 17c2644..15a931b 100644 req_major=`echo $min_npth_version | \ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'` req_minor=`echo $min_npth_version | \ -@@ -66,28 +66,9 @@ AC_DEFUN([AM_PATH_NPTH], +@@ -83,32 +68,9 @@ AC_DEFUN([AM_PATH_NPTH], fi if test $ok = yes; then AC_MSG_RESULT([yes ($npth_version)]) @@ -48,20 +64,24 @@ index 17c2644..15a931b 100644 - AC_MSG_RESULT(no) - fi - if test $ok = yes; then -- # If we have a recent NPTH, we should also check that the -- # API is compatible. -- if test "$req_npth_api" -gt 0 ; then +- # If we have a recent NPTH, we should also check that the +- # API is compatible. +- if test "$req_npth_api" -gt 0 ; then +- if test -z "$use_gpgrt_config"; then - tmp=`$NPTH_CONFIG --api-version 2>/dev/null || echo 0` -- if test "$tmp" -gt 0 ; then -- AC_MSG_CHECKING([NPTH API version]) -- if test "$req_npth_api" -eq "$tmp" ; then -- AC_MSG_RESULT([okay]) -- else -- ok=no -- AC_MSG_RESULT([does not match. want=$req_npth_api got=$tmp]) -- fi +- else +- tmp=`$NPTH_CONFIG --variable=api_version 2>/dev/null || echo 0` +- fi +- if test "$tmp" -gt 0 ; then +- AC_MSG_CHECKING([NPTH API version]) +- if test "$req_npth_api" -eq "$tmp" ; then +- AC_MSG_RESULT([okay]) +- else +- ok=no +- AC_MSG_RESULT([does not match. want=$req_npth_api got=$tmp]) - fi -- fi +- fi +- fi - fi - if test $ok = yes; then - NPTH_CFLAGS=`$NPTH_CONFIG --cflags` @@ -70,9 +90,9 @@ index 17c2644..15a931b 100644 + NPTH_LIBS=`$PKGCONFIG --libs npth` + AC_MSG_WARN([[GOT HERE - $NPTH_LIBS ]]) ifelse([$2], , :, [$2]) - npth_config_host=`$NPTH_CONFIG --host 2>/dev/null || echo none` - if test x"$npth_config_host" != xnone ; then -@@ -103,6 +84,7 @@ AC_DEFUN([AM_PATH_NPTH], + if test -z "$use_gpgrt_config"; then + npth_config_host=`$NPTH_CONFIG --host 2>/dev/null || echo none` +@@ -128,6 +90,7 @@ AC_DEFUN([AM_PATH_NPTH], fi fi else @@ -80,6 +100,3 @@ index 17c2644..15a931b 100644 NPTH_CFLAGS="" NPTH_LIBS="" ifelse([$3], , :, [$3]) --- -1.8.3.1 - diff --git a/poky/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch b/poky/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch index a13b4d5fb..b4106d362 100644 --- a/poky/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch +++ b/poky/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch @@ -1,4 +1,4 @@ -From 6c75656b68cb6e38b039ae532bd39437cd6daec5 Mon Sep 17 00:00:00 2001 +From 9ace8f1b68ab708c44dce4c0152b975fbceb0398 Mon Sep 17 00:00:00 2001 From: Saul Wold <sgw@linux.intel.com> Date: Wed, 16 Aug 2017 11:18:01 +0800 Subject: [PATCH] dirmngr uses libgpg error @@ -11,18 +11,19 @@ Rebase to 2.1.23 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> --- - dirmngr/Makefile.am | 1 + - 1 file changed, 1 insertion(+) + dirmngr/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dirmngr/Makefile.am b/dirmngr/Makefile.am -index 00d3c42..450d873 100644 +index 77ca3f5..1446775 100644 --- a/dirmngr/Makefile.am +++ b/dirmngr/Makefile.am -@@ -101,6 +101,7 @@ dirmngr_LDADD = $(libcommonpth) \ +@@ -86,7 +86,7 @@ endif + dirmngr_LDADD = $(libcommonpth) \ $(DNSLIBS) $(LIBASSUAN_LIBS) \ $(LIBGCRYPT_LIBS) $(KSBA_LIBS) $(NPTH_LIBS) \ - $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS) \ -+ $(GPG_ERROR_LIBS) \ - $(dirmngr_robj) +- $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS) ++ $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS) $(GPG_ERROR_LIBS) if USE_LDAP dirmngr_LDADD += $(ldaplibs) + endif diff --git a/poky/meta/recipes-support/gnupg/gnupg/relocate.patch b/poky/meta/recipes-support/gnupg/gnupg/relocate.patch index 7f7812cd4..9b0f0a8ce 100644 --- a/poky/meta/recipes-support/gnupg/gnupg/relocate.patch +++ b/poky/meta/recipes-support/gnupg/gnupg/relocate.patch @@ -1,4 +1,4 @@ -From bd66af2ac7bb6d9294ac8055a55462ba7c4f9c9b Mon Sep 17 00:00:00 2001 +From d6992692d1c36983b709fe1ff049cc91ef2c408a Mon Sep 17 00:00:00 2001 From: Ross Burton <ross.burton@intel.com> Date: Wed, 19 Sep 2018 14:44:40 +0100 Subject: [PATCH] Allow the environment to override where gnupg looks for its @@ -12,10 +12,10 @@ Signed-off-by: Ross Burton <ross.burton@intel.com> 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/common/homedir.c b/common/homedir.c -index 4b6e46e..58989b4 100644 +index 85e09c4..e1410e2 100644 --- a/common/homedir.c +++ b/common/homedir.c -@@ -763,7 +763,7 @@ gnupg_socketdir (void) +@@ -788,7 +788,7 @@ gnupg_socketdir (void) if (!name) { unsigned int dummy; @@ -24,7 +24,7 @@ index 4b6e46e..58989b4 100644 } return name; -@@ -789,7 +789,7 @@ gnupg_sysconfdir (void) +@@ -814,7 +814,7 @@ gnupg_sysconfdir (void) } return name; #else /*!HAVE_W32_SYSTEM*/ @@ -33,7 +33,7 @@ index 4b6e46e..58989b4 100644 #endif /*!HAVE_W32_SYSTEM*/ } -@@ -818,7 +818,7 @@ gnupg_bindir (void) +@@ -843,7 +843,7 @@ gnupg_bindir (void) else return rdir; #else /*!HAVE_W32_SYSTEM*/ @@ -42,7 +42,7 @@ index 4b6e46e..58989b4 100644 #endif /*!HAVE_W32_SYSTEM*/ } -@@ -831,7 +831,7 @@ gnupg_libexecdir (void) +@@ -856,7 +856,7 @@ gnupg_libexecdir (void) #ifdef HAVE_W32_SYSTEM return gnupg_bindir (); #else /*!HAVE_W32_SYSTEM*/ @@ -51,7 +51,7 @@ index 4b6e46e..58989b4 100644 #endif /*!HAVE_W32_SYSTEM*/ } -@@ -845,7 +845,7 @@ gnupg_libdir (void) +@@ -870,7 +870,7 @@ gnupg_libdir (void) name = xstrconcat (w32_rootdir (), DIRSEP_S "lib" DIRSEP_S "gnupg", NULL); return name; #else /*!HAVE_W32_SYSTEM*/ @@ -60,7 +60,7 @@ index 4b6e46e..58989b4 100644 #endif /*!HAVE_W32_SYSTEM*/ } -@@ -859,7 +859,7 @@ gnupg_datadir (void) +@@ -884,7 +884,7 @@ gnupg_datadir (void) name = xstrconcat (w32_rootdir (), DIRSEP_S "share" DIRSEP_S "gnupg", NULL); return name; #else /*!HAVE_W32_SYSTEM*/ @@ -69,7 +69,7 @@ index 4b6e46e..58989b4 100644 #endif /*!HAVE_W32_SYSTEM*/ } -@@ -875,7 +875,7 @@ gnupg_localedir (void) +@@ -900,7 +900,7 @@ gnupg_localedir (void) NULL); return name; #else /*!HAVE_W32_SYSTEM*/ @@ -78,7 +78,7 @@ index 4b6e46e..58989b4 100644 #endif /*!HAVE_W32_SYSTEM*/ } -@@ -943,7 +943,7 @@ gnupg_cachedir (void) +@@ -971,7 +971,7 @@ gnupg_cachedir (void) } return dir; #else /*!HAVE_W32_SYSTEM*/ diff --git a/poky/meta/recipes-support/gnupg/gnupg_2.2.27.bb b/poky/meta/recipes-support/gnupg/gnupg_2.3.1.bb index 1181c8341..77331efc0 100644 --- a/poky/meta/recipes-support/gnupg/gnupg_2.2.27.bb +++ b/poky/meta/recipes-support/gnupg/gnupg_2.3.1.bb @@ -15,7 +15,6 @@ inherit autotools gettext texinfo pkgconfig UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch \ file://0002-use-pkgconfig-instead-of-npth-config.patch \ file://0003-dirmngr-uses-libgpg-error.patch \ file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \ @@ -25,7 +24,7 @@ SRC_URI_append_class-native = " file://0001-configure.ac-use-a-custom-value-for- file://relocate.patch" SRC_URI_append_class-nativesdk = " file://relocate.patch" -SRC_URI[sha256sum] = "34e60009014ea16402069136e0a5f63d9b65f90096244975db5cea74b3d02399" +SRC_URI[sha256sum] = "c498db346a9b9a4b399e514c8f56dfc0a888ce8f327f10376ff984452cd154ec" EXTRA_OECONF = "--disable-ldap \ --disable-ccid-driver \ diff --git a/poky/meta/recipes-support/gnutls/gnutls_3.7.1.bb b/poky/meta/recipes-support/gnutls/gnutls_3.7.2.bb index 51d472c82..430d1f2d7 100644 --- a/poky/meta/recipes-support/gnutls/gnutls_3.7.1.bb +++ b/poky/meta/recipes-support/gnutls/gnutls_3.7.2.bb @@ -23,15 +23,15 @@ SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar file://arm_eabi.patch \ " -SRC_URI[sha256sum] = "3777d7963eca5e06eb315686163b7b3f5045e2baac5e54e038ace9835e5cac6f" +SRC_URI[sha256sum] = "646e6c5a9a185faa4cea796d378a1ba8e1148dbb197ca6605f95986a25af2752" inherit autotools texinfo pkgconfig gettext lib_package gtk-doc -PACKAGECONFIG ??= "libidn" +PACKAGECONFIG ??= "libidn ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)}" # You must also have CONFIG_SECCOMP enabled in the kernel for # seccomp to work. -PACKAGECONFIG[seccomp] = "ac_cv_libseccomp=yes,ac_cv_libseccomp=no,libseccomp" +PACKAGECONFIG[seccomp] = "--with-libseccomp-prefix=${STAGING_EXECPREFIXDIR},ac_cv_libseccomp=no,libseccomp" PACKAGECONFIG[libidn] = "--with-idn,--without-idn,libidn2" PACKAGECONFIG[libtasn1] = "--with-included-libtasn1=no,--with-included-libtasn1,libtasn1" PACKAGECONFIG[p11-kit] = "--with-p11-kit,--without-p11-kit,p11-kit" diff --git a/poky/meta/recipes-support/gnutls/libtasn1_4.16.0.bb b/poky/meta/recipes-support/gnutls/libtasn1_4.17.0.bb index 21ef5c3de..64e798b18 100644 --- a/poky/meta/recipes-support/gnutls/libtasn1_4.16.0.bb +++ b/poky/meta/recipes-support/gnutls/libtasn1_4.17.0.bb @@ -8,7 +8,7 @@ LICENSE_${PN}-bin = "GPLv3+" LICENSE_${PN} = "LGPLv2.1+" LIC_FILES_CHKSUM = "file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \ file://doc/COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \ - file://LICENSE;md5=75ac100ec923f959898182307970c360" + file://COPYING;md5=75ac100ec923f959898182307970c360" SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \ file://dont-depend-on-help2man.patch \ @@ -16,8 +16,8 @@ SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \ DEPENDS = "bison-native" -SRC_URI[md5sum] = "531208de3729d42e2af0a32890f08736" -SRC_URI[sha256sum] = "0e0fb0903839117cb6e3b56e68222771bebf22ad7fc2295a0ed7d576e8d4329d" +SRC_URI[md5sum] = "c46f6eb3bd1287031ae5d36465094402" +SRC_URI[sha256sum] = "ece7551cea7922b8e10d7ebc70bc2248d1fdd73351646a2d6a8d68a9421c45a5" inherit autotools texinfo lib_package gtk-doc diff --git a/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch b/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch index 145efc0e0..c5dc0611c 100644 --- a/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch +++ b/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch @@ -13,7 +13,7 @@ Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/double-conversion-utils.h b/i18n/double-conversion-utils.h -index 8c6a0e1..cf89907 100644 +index c937463..feaad0f 100644 --- a/i18n/double-conversion-utils.h +++ b/i18n/double-conversion-utils.h @@ -115,7 +115,7 @@ int main(int argc, char** argv) { @@ -24,7 +24,7 @@ index 8c6a0e1..cf89907 100644 + defined(__arm__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ defined(__hppa__) || defined(__ia64__) || \ defined(__mips__) || \ - defined(__nios2__) || \ + defined(__nios2__) || defined(__ghs) || \ -- -2.7.4 +2.25.1 diff --git a/poky/meta/recipes-support/icu/icu_68.2.bb b/poky/meta/recipes-support/icu/icu_69.1.bb index 1ca87feee..bfeea8d2f 100644 --- a/poky/meta/recipes-support/icu/icu_68.2.bb +++ b/poky/meta/recipes-support/icu/icu_69.1.bb @@ -112,8 +112,8 @@ SRC_URI = "${BASE_SRC_URI};name=code \ SRC_URI_append_class-target = "\ file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \ " -SRC_URI[code.sha256sum] = "c79193dee3907a2199b8296a93b52c5cb74332c26f3d167269487680d479d625" -SRC_URI[data.sha256sum] = "2989b466fa010edc41297e12fdd5ae47c2610ad68b63af1a0bd2a1acfaf497f3" +SRC_URI[code.sha256sum] = "4cba7b7acd1d3c42c44bb0c14be6637098c7faf2b330ce876bc5f3b915d09745" +SRC_URI[data.sha256sum] = "4fc2d8cfc3343673123586fca3967404abd4e346fba5515829204533b3bae4bf" UPSTREAM_CHECK_REGEX = "icu4c-(?P<pver>\d+(_\d+)+)-src" UPSTREAM_CHECK_URI = "https://github.com/unicode-org/icu/releases" diff --git a/poky/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch b/poky/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch index 0e81454c6..fe811254d 100644 --- a/poky/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch +++ b/poky/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch @@ -8,17 +8,20 @@ Signed-off-by: Constantin Musca <constantinx.musca@intel.com> forward ported to 2.4.4 Signed-off-by: Armin Kuster <akuster@mvista.com> +--- + src/libassuan.m4 | 81 ++---------------------------------------------- + 1 file changed, 3 insertions(+), 78 deletions(-) -Index: libassuan-2.5.2/src/libassuan.m4 -=================================================================== ---- libassuan-2.5.2.orig/src/libassuan.m4 -+++ libassuan-2.5.2/src/libassuan.m4 -@@ -16,27 +16,6 @@ dnl Returns ok set to yes or no. +diff --git a/src/libassuan.m4 b/src/libassuan.m4 +index df50484..380a48a 100644 +--- a/src/libassuan.m4 ++++ b/src/libassuan.m4 +@@ -17,27 +17,6 @@ dnl Returns ok set to yes or no. dnl AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON], [ AC_REQUIRE([AC_CANONICAL_HOST]) - AC_ARG_WITH(libassuan-prefix, -- AC_HELP_STRING([--with-libassuan-prefix=PFX], +- AS_HELP_STRING([--with-libassuan-prefix=PFX], - [prefix where LIBASSUAN is installed (optional)]), - libassuan_config_prefix="$withval", libassuan_config_prefix="") - if test x$libassuan_config_prefix != x ; then @@ -41,10 +44,11 @@ Index: libassuan-2.5.2/src/libassuan.m4 tmp=ifelse([$1], ,1:0.9.2,$1) if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then -@@ -47,58 +26,11 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON], +@@ -47,59 +26,11 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON], + req_libassuan_api=0 min_libassuan_version="$tmp" fi - +- - AC_MSG_CHECKING(for LIBASSUAN - version >= $min_libassuan_version) - ok=no - if test "$LIBASSUAN_CONFIG" != "no"; then @@ -102,7 +106,7 @@ Index: libassuan-2.5.2/src/libassuan.m4 if test "$tmp" -gt 0 ; then AC_MSG_CHECKING([LIBASSUAN API version]) if test "$req_libassuan_api" -eq "$tmp" ; then -@@ -114,9 +46,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON], +@@ -115,9 +46,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON], if test $ok = yes; then if test x"$host" != x ; then if test -z "$use_gpgrt_config"; then @@ -113,7 +117,7 @@ Index: libassuan-2.5.2/src/libassuan.m4 fi if test x"$libassuan_config_host" != xnone ; then if test x"$libassuan_config_host" != x"$host" ; then -@@ -158,12 +88,8 @@ dnl +@@ -159,12 +88,8 @@ dnl AC_DEFUN([AM_PATH_LIBASSUAN], [ _AM_PATH_LIBASSUAN_COMMON($1) if test $ok = yes; then @@ -126,3 +130,6 @@ Index: libassuan-2.5.2/src/libassuan.m4 ifelse([$3], , :, [$3]) fi AC_SUBST(LIBASSUAN_CFLAGS) +-- +2.25.1 + diff --git a/poky/meta/recipes-support/libassuan/libassuan_2.5.4.bb b/poky/meta/recipes-support/libassuan/libassuan_2.5.5.bb index d44b95aa0..3d12ea09e 100644 --- a/poky/meta/recipes-support/libassuan/libassuan_2.5.4.bb +++ b/poky/meta/recipes-support/libassuan/libassuan_2.5.5.bb @@ -20,7 +20,7 @@ SRC_URI = "${GNUPG_MIRROR}/libassuan/libassuan-${PV}.tar.bz2 \ file://libassuan-add-pkgconfig-support.patch \ " -SRC_URI[sha256sum] = "c080ee96b3bd519edd696cfcebdecf19a3952189178db9887be713ccbcb5fbf0" +SRC_URI[sha256sum] = "8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4" BINCONFIG = "${bindir}/libassuan-config" diff --git a/poky/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch b/poky/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch index d2653afb7..414e45a6f 100644 --- a/poky/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch +++ b/poky/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch @@ -1,4 +1,4 @@ -From 6aa15fe548e5b1d6ca3b373779beb7521ea95ba9 Mon Sep 17 00:00:00 2001 +From 897900f3f9084c5542097851323bba3f2691df20 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Wed, 15 Jan 2020 17:16:28 +0100 Subject: [PATCH] tests: do not statically link a test @@ -7,26 +7,27 @@ This fails on e.g. centos 7 Upstream-Status: Inappropriate [oe-core specific] Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + --- progs/Makefile | 2 +- tests/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/progs/Makefile b/progs/Makefile -index 1d7fc7a..37db8f7 100644 +index 289186e..071a285 100644 --- a/progs/Makefile +++ b/progs/Makefile -@@ -42,7 +42,7 @@ endif - test: $(PROGS) +@@ -49,7 +49,7 @@ capsh: capsh.c capshdoc.h.cf $(DEPS) + $(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDFLAGS) - tcapsh-static: capsh.c $(DEPS) + tcapsh-static: capsh.c capshdoc.h.cf $(DEPS) - $(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDFLAGS) --static + $(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDFLAGS) sudotest: test tcapsh-static sudo $(LDPATH) ./quicktest.sh diff --git a/tests/Makefile b/tests/Makefile -index 01f7589..094ec57 100644 +index 4a5f2f9..4266d86 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -22,7 +22,7 @@ ifeq ($(PTHREADS),yes) @@ -38,7 +39,7 @@ index 01f7589..094ec57 100644 DEPS=../libcap/libcap.a ifeq ($(PTHREADS),yes) DEPS += ../libcap/libpsx.a -@@ -106,7 +106,7 @@ noexploit: exploit.o $(DEPS) +@@ -113,7 +113,7 @@ noexploit: exploit.o $(DEPS) # This one runs in a chroot with no shared library files. noop: noop.c @@ -46,7 +47,4 @@ index 01f7589..094ec57 100644 + $(CC) $(CFLAGS) $< -o $@ clean: - rm -f psx_test libcap_psx_test libcap_launch_test *~ --- -2.17.1 - + rm -f psx_test libcap_psx_test libcap_launch_test uns_test *~ diff --git a/poky/meta/recipes-support/libcap/libcap_2.48.bb b/poky/meta/recipes-support/libcap/libcap_2.50.bb index a12738d63..15137f0ac 100644 --- a/poky/meta/recipes-support/libcap/libcap_2.48.bb +++ b/poky/meta/recipes-support/libcap/libcap_2.50.bb @@ -5,7 +5,7 @@ users, without giving them full root permissions." HOMEPAGE = "http://sites.google.com/site/fullycapable/" # no specific GPL version required LICENSE = "BSD | GPLv2" -LIC_FILES_CHKSUM = "file://License;md5=3f84fd6f29d453a56514cb7e4ead25f1" +LIC_FILES_CHKSUM = "file://License;md5=e2370ba375efe9e1a095c26d37e483b8" DEPENDS = "hostperl-runtime-native gperf-native" @@ -14,21 +14,12 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${ file://0002-tests-do-not-run-target-executables.patch \ file://0001-tests-do-not-statically-link-a-test.patch \ " -SRC_URI[sha256sum] = "4de9590ee09a87c282d558737ffb5b6175ccbfd26d580add10df44d0f047f6c2" +SRC_URI[sha256sum] = "47a57b8bd238b84c93c921a9b4ff82337551dbcb0cca071316aadf3e23b19261" UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/linux/libs/security/linux-privs/${BPN}2/" inherit lib_package -# do NOT pass target cflags to host compilations -# -do_configure() { - # libcap uses := for compilers, fortunately, it gives us a hint - # on what should be replaced with ?= - sed -e 's,:=,?=,g' -i Make.Rules - sed -e 's,^BUILD_CFLAGS ?= ,BUILD_CFLAGS := $(BUILD_CFLAGS) ,' -i Make.Rules -} - PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" PACKAGECONFIG_class-native ??= "" @@ -44,11 +35,15 @@ EXTRA_OEMAKE = " \ EXTRA_OEMAKE_append_class-target = " SYSTEM_HEADERS=${STAGING_INCDIR}" -# these are present in the libcap defaults, so include in our CFLAGS too -CFLAGS += "-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" - do_compile() { - oe_runmake ${PACKAGECONFIG_CONFARGS} + unset CFLAGS BUILD_CFLAGS + oe_runmake \ + ${PACKAGECONFIG_CONFARGS} \ + AR="${AR}" \ + CC="${CC}" \ + RANLIB="${RANLIB}" \ + COPTS="${CFLAGS}" \ + BUILD_COPTS="${BUILD_CFLAGS}" } do_install() { diff --git a/poky/meta/recipes-support/libevent/libevent/0002-test-regress.h-Increase-default-timeval-tolerance-50.patch b/poky/meta/recipes-support/libevent/libevent/0002-test-regress.h-Increase-default-timeval-tolerance-50.patch new file mode 100644 index 000000000..0b20eda3c --- /dev/null +++ b/poky/meta/recipes-support/libevent/libevent/0002-test-regress.h-Increase-default-timeval-tolerance-50.patch @@ -0,0 +1,33 @@ +From dff8fd27edb23bc1486809186c6a4fe1f75f2179 Mon Sep 17 00:00:00 2001 +From: Yi Fan Yu <yifan.yu@windriver.com> +Date: Thu, 22 Apr 2021 22:35:59 -0400 +Subject: [PATCH] test/regress.h: Increase default timeval tolerance 50 ms -> + 100 ms + +The default timeout tolerance is 50 ms, +which causes intermittent failure in many the +related tests in arm64 QEMU. + +See: https://bugzilla.yoctoproject.org/show_bug.cgi?id=14163 +(The root cause seems to be a heavy load) + +Upstream-Status: Submitted [https://github.com/libevent/libevent/pull/1157] + +Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> +--- + test/regress.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/regress.h b/test/regress.h +index f06a7669..829af4a7 100644 +--- a/test/regress.h ++++ b/test/regress.h +@@ -127,7 +127,7 @@ int test_ai_eq_(const struct evutil_addrinfo *ai, const char *sockaddr_port, + tt_int_op(labs(timeval_msec_diff((tv1), (tv2)) - diff), <=, tolerance) + + #define test_timeval_diff_eq(tv1, tv2, diff) \ +- test_timeval_diff_leq((tv1), (tv2), (diff), 50) ++ test_timeval_diff_leq((tv1), (tv2), (diff), 100) + + long timeval_msec_diff(const struct timeval *start, const struct timeval *end); + diff --git a/poky/meta/recipes-support/libevent/libevent_2.1.12.bb b/poky/meta/recipes-support/libevent/libevent_2.1.12.bb index dd4533cce..6d53fea5a 100644 --- a/poky/meta/recipes-support/libevent/libevent_2.1.12.bb +++ b/poky/meta/recipes-support/libevent/libevent_2.1.12.bb @@ -15,6 +15,7 @@ SRC_URI = "https://github.com/libevent/libevent/releases/download/release-${PV}- file://Makefile-missing-test-dir.patch \ file://run-ptest \ file://0001-test-regress_dns.c-patch-out-tests-that-require-a-wo.patch \ + file://0002-test-regress.h-Increase-default-timeval-tolerance-50.patch \ " SRC_URI[sha256sum] = "92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb" diff --git a/poky/meta/recipes-support/libfm/libfm_1.3.1.bb b/poky/meta/recipes-support/libfm/libfm_1.3.2.bb index b6f9df0c5..eb0949ae7 100644 --- a/poky/meta/recipes-support/libfm/libfm_1.3.1.bb +++ b/poky/meta/recipes-support/libfm/libfm_1.3.2.bb @@ -18,8 +18,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz \ file://0001-Do-not-add-library-path-to-avoid-host-contamination.patch \ " -SRC_URI[md5sum] = "c15ecd2c9317e2c385cd3f046d0b61ba" -SRC_URI[sha256sum] = "96b1244bde41ca0eef0332cfb5c67bb16725dfd102128f3e6f74fadc13a1cfe4" +SRC_URI[sha256sum] = "a5042630304cf8e5d8cff9d565c6bd546f228b48c960153ed366a34e87cad1e5" inherit autotools pkgconfig gtk-doc gettext features_check mime mime-xdg ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" diff --git a/poky/meta/recipes-support/libgcrypt/libgcrypt_1.9.2.bb b/poky/meta/recipes-support/libgcrypt/libgcrypt_1.9.3.bb index 34735ea5d..fd3d8e09f 100644 --- a/poky/meta/recipes-support/libgcrypt/libgcrypt_1.9.2.bb +++ b/poky/meta/recipes-support/libgcrypt/libgcrypt_1.9.3.bb @@ -14,7 +14,7 @@ LICENSE_dumpsexp-dev = "GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff \ - file://LICENSES;md5=2dae15d91a37cfde72fe9eae75f8ea14 \ + file://LICENSES;md5=42fa35a25e138166cc40588387f9159d \ " DEPENDS = "libgpg-error" @@ -27,7 +27,7 @@ SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \ file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \ file://0001-Makefile.am-add-a-missing-space.patch \ " -SRC_URI[sha256sum] = "b2c10d091513b271e47177274607b1ffba3d95b188bbfa8797f948aec9053c5a" +SRC_URI[sha256sum] = "97ebe4f94e2f7e35b752194ce15a0f3c66324e0ff6af26659bbfb5ff2ec328fd" # Below whitelisted CVEs are disputed and not affecting crypto libraries for any distro. CVE_CHECK_WHITELIST += "CVE-2018-12433 CVE-2018-12438" diff --git a/poky/meta/recipes-support/libgpg-error/libgpg-error/0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch b/poky/meta/recipes-support/libgpg-error/libgpg-error/0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch new file mode 100644 index 000000000..0f6e30939 --- /dev/null +++ b/poky/meta/recipes-support/libgpg-error/libgpg-error/0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch @@ -0,0 +1,27 @@ +From 7437acb228678ea5d8288b930b4f5b72c3d449ed Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 24 May 2021 11:03:42 +0200 +Subject: [PATCH] configure.ac: do not hardcode gnu libc when generating + lock-obj + +This erroneously excluded e.g. musl libc. + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index c0aab53..6d46d13 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -603,7 +603,7 @@ if test x"$gl_use_threads" = xno; then + AC_MSG_NOTICE([generated src/lock-obj-pub.native.h for $host]) + elif test x$cross_compiling = xyes; then + case $host in +- *-*-linux-gnu*) ++ *-*-linux-*) + AC_CHECK_TOOL(OBJDUMP, [objdump]) + if test -n "$OBJDUMP"; then + lock_obj_h_generated=yes diff --git a/poky/meta/recipes-support/libgpg-error/libgpg-error/fix-cross.patch b/poky/meta/recipes-support/libgpg-error/libgpg-error/fix-cross.patch new file mode 100644 index 000000000..ae424cdb9 --- /dev/null +++ b/poky/meta/recipes-support/libgpg-error/libgpg-error/fix-cross.patch @@ -0,0 +1,28 @@ +From: David Michael <fedora.dm0@gmail.com> +Date: Fri, 26 Mar 2021 07:06:50 +0000 (+0900) +Subject: build: Fix generation of lock-obj-pub.native.h for cross build. +X-Git-Url: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=commitdiff_plain;h=33593864cd54143db594c4237bba41e14179061c + +build: Fix generation of lock-obj-pub.native.h for cross build. + +* src/gen-lock-obj.sh: Capture echo output with quotes. + +Fixes-commit: 99ae862a96a569724f49a604ebb7d3f6d2c2d374 +Signed-off-by: David Michael <fedora.dm0@gmail.com> +Upstream-Status: Backport +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + +diff --git a/src/gen-lock-obj.sh b/src/gen-lock-obj.sh +index a710f0c..258eec6 100755 +--- a/src/gen-lock-obj.sh ++++ b/src/gen-lock-obj.sh +@@ -38,7 +38,7 @@ + # AWK=gawk ./gen-lock-obj.sh + # + +-if test -n `echo -n`; then ++if test -n "`echo -n`"; then + ECHO_C='\c' + ECHO_N='' + else diff --git a/poky/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch b/poky/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch index 83054a9c4..aea8eba5f 100644 --- a/poky/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch +++ b/poky/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch @@ -1,4 +1,4 @@ -From ec309e20b5a27d42a5fb915c328d61e924ab5f19 Mon Sep 17 00:00:00 2001 +From 62651c5c7b4a391f16dbe1b09c6e220efe5c8a35 Mon Sep 17 00:00:00 2001 From: Hongxu Jia <hongxu.jia@windriver.com> Date: Thu, 29 Mar 2018 15:12:17 +0800 Subject: [PATCH] support pkgconfig @@ -12,15 +12,16 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Refactored for 1.33 Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com> + --- - src/gpg-error.m4 | 142 +---------------------------------------------- - 1 file changed, 3 insertions(+), 139 deletions(-) + src/gpg-error.m4 | 159 +---------------------------------------------- + 1 file changed, 3 insertions(+), 156 deletions(-) diff --git a/src/gpg-error.m4 b/src/gpg-error.m4 -index c9b235f..176bd6a 100644 +index d910754..76f045c 100644 --- a/src/gpg-error.m4 +++ b/src/gpg-error.m4 -@@ -26,139 +26,12 @@ dnl is added to the gpg_config_script_warn variable. +@@ -27,156 +27,12 @@ dnl is added to the gpg_config_script_warn variable. dnl AC_DEFUN([AM_PATH_GPG_ERROR], [ AC_REQUIRE([AC_CANONICAL_HOST]) @@ -62,45 +63,78 @@ index c9b235f..176bd6a 100644 - min_gpg_error_version=ifelse([$1], ,1.33,$1) - ok=no - -- if test "$prefix" = NONE ; then -- prefix_option_expanded=/usr/local -- else -- prefix_option_expanded="$prefix" -- fi -- if test "$exec_prefix" = NONE ; then -- exec_prefix_option_expanded=$prefix_option_expanded -- else -- exec_prefix_option_expanded=$(prefix=$prefix_option_expanded eval echo $exec_prefix) -- fi -- libdir_option_expanded=$(prefix=$prefix_option_expanded exec_prefix=$exec_prefix_option_expanded eval echo $libdir) +- AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no) +- if test "$GPGRT_CONFIG" != "no"; then +- # Determine gpgrt_libdir +- # +- # Get the prefix of gpgrt-config assuming it's something like: +- # <PREFIX>/bin/gpgrt-config +- gpgrt_prefix=${GPGRT_CONFIG%/*/*} +- possible_libdir1=${gpgrt_prefix}/lib +- # Determine by using system libdir-format with CC, it's like: +- # Normal style: /usr/lib +- # GNU cross style: /usr/<triplet>/lib +- # Debian style: /usr/lib/<multiarch-name> +- # Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64 +- # It is assumed that CC is specified to the one of host on cross build. +- if libdir_candidates=$(${CC:-cc} -print-search-dirs | \ +- sed -n -e "/^libraries/{s/libraries: =//;s/:/\n/gp}"); then +- # From the output of -print-search-dirs, select valid pkgconfig dirs. +- libdir_candidates=$(for dir in $libdir_candidates; do +- if p=$(cd $dir 2>/dev/null && pwd); then +- test -d "$p/pkgconfig" && echo $p; +- fi +- done) - -- if test -f $libdir_option_expanded/pkgconfig/gpg-error.pc; then -- gpgrt_libdir=$libdir_option_expanded -- else -- if crt1_path=$(${CC:-cc} -print-file-name=crt1.o 2>/dev/null); then -- if possible_libdir=$(cd ${crt1_path%/*} && pwd 2>/dev/null); then -- if test -f $possible_libdir/pkgconfig/gpg-error.pc; then -- gpgrt_libdir=$possible_libdir +- for possible_libdir0 in $libdir_candidates; do +- # possible_libdir0: +- # Fallback candidate, the one of system-installed (by $CC) +- # (/usr/<triplet>/lib, /usr/lib/<multiarch-name> or /usr/lib32) +- # possible_libdir1: +- # Another candidate, user-locally-installed +- # (<gpgrt_prefix>/lib) +- # possible_libdir2 +- # Most preferred +- # (<gpgrt_prefix>/<triplet>/lib, +- # <gpgrt_prefix>/lib/<multiarch-name> or <gpgrt_prefix>/lib32) +- if test "${possible_libdir0##*/}" = "lib"; then +- possible_prefix0=${possible_libdir0%/lib} +- possible_prefix0_triplet=${possible_prefix0##*/} +- if test -z "$possible_prefix0_triplet"; then +- continue +- fi +- possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib +- else +- possible_prefix0=${possible_libdir0%%/lib*} +- possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0} +- fi +- if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then +- gpgrt_libdir=${possible_libdir2} +- elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then +- gpgrt_libdir=${possible_libdir1} +- elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then +- gpgrt_libdir=${possible_libdir0} - fi -- fi +- if test -n "$gpgrt_libdir"; then break; fi +- done +- else +- # When we cannot determine system libdir-format, use this: +- gpgrt_libdir=${possible_libdir1} - fi +- else +- unset GPGRT_CONFIG - fi - -- if test "$GPG_ERROR_CONFIG" = "no" -a -n "$gpgrt_libdir"; then -- AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no) -- if test "$GPGRT_CONFIG" = "no"; then -- unset GPGRT_CONFIG +- if test -n "$gpgrt_libdir"; then +- GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir" +- if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then +- GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error" +- AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config]) +- gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion` - else -- GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir" -- if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then -- GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error" -- AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config]) -- gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion` -- else -- unset GPGRT_CONFIG -- fi +- unset GPGRT_CONFIG - fi -- else +- elif test "$GPG_ERROR_CONFIG" != "no"; then - gpg_error_config_version=`$GPG_ERROR_CONFIG --version` - fi - if test "$GPG_ERROR_CONFIG" != "no"; then @@ -121,22 +155,6 @@ index c9b235f..176bd6a 100644 - fi - fi - fi -- if test -z "$GPGRT_CONFIG" -a -n "$gpgrt_libdir"; then -- if test "$major" -gt 1 -o "$major" -eq 1 -a "$minor" -ge 33; then -- AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no) -- if test "$GPGRT_CONFIG" = "no"; then -- unset GPGRT_CONFIG -- else -- GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir" -- if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then -- GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error" -- AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config]) -- else -- unset GPGRT_CONFIG -- fi -- fi -- fi -- fi - fi - AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version) + min_gpg_error_version=ifelse([$1], ,0.0,$1) @@ -163,7 +181,7 @@ index c9b235f..176bd6a 100644 fi if test x"$gpg_error_config_host" != xnone ; then if test x"$gpg_error_config_host" != x"$host" ; then -@@ -174,15 +47,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR], +@@ -192,15 +48,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR], fi fi else @@ -179,6 +197,3 @@ index c9b235f..176bd6a 100644 - AC_SUBST(GPG_ERROR_MT_CFLAGS) - AC_SUBST(GPG_ERROR_MT_LIBS) ]) --- -2.25.1 - diff --git a/poky/meta/recipes-support/libgpg-error/libgpg-error_1.41.bb b/poky/meta/recipes-support/libgpg-error/libgpg-error_1.42.bb index a0119729d..c972d9a95 100644 --- a/poky/meta/recipes-support/libgpg-error/libgpg-error_1.41.bb +++ b/poky/meta/recipes-support/libgpg-error/libgpg-error_1.42.bb @@ -17,9 +17,11 @@ UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" SRC_URI = "${GNUPG_MIRROR}/libgpg-error/libgpg-error-${PV}.tar.bz2 \ file://pkgconfig.patch \ file://0001-Do-not-fail-when-testing-config-scripts.patch \ + file://fix-cross.patch \ + file://0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch \ " -SRC_URI[sha256sum] = "64b078b45ac3c3003d7e352a5e05318880a5778c42331ce1ef33d1a0d9922742" +SRC_URI[sha256sum] = "fc07e70f6c615f8c4f590a8e37a9b8dd2e2ca1e9408f8e60459c67452b925e23" BINCONFIG = "${bindir}/gpg-error-config" diff --git a/poky/meta/recipes-support/libical/libical_3.0.9.bb b/poky/meta/recipes-support/libical/libical_3.0.10.bb index 4c7027d14..30d6bbfd0 100644 --- a/poky/meta/recipes-support/libical/libical_3.0.9.bb +++ b/poky/meta/recipes-support/libical/libical_3.0.10.bb @@ -14,7 +14,7 @@ SECTION = "libs" SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \ " -SRC_URI[sha256sum] = "bd26d98b7fcb2eb0cd5461747bbb02024ebe38e293ca53a7dfdcb2505265a728" +SRC_URI[sha256sum] = "f933b3e6cf9d56a35bb5625e8e4a9c3a50239a85aea05ed842932c1a1dc336b4" UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases" inherit cmake pkgconfig diff --git a/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.0.1.bb b/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.0.2.bb index 197bb787a..8e39974ef 100644 --- a/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.0.1.bb +++ b/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.0.2.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c69090e97c8fd6372d03099c0a5bc382 \ file://COPYING.bsd;md5=66a5cedaf62c4b2637025f049f9b826f \ " SRC_URI = "git://github.com/smuellerDD/jitterentropy-library.git" -SRCREV = "747bf030b0ea9c44548b4e29bcfab7ae416675fc" +SRCREV = "a0c51e21c2d4322681a320a22de5e2ef13c08196" S = "${WORKDIR}/git" do_configure[noexec] = "1" diff --git a/poky/meta/recipes-support/libksba/libksba_1.5.0.bb b/poky/meta/recipes-support/libksba/libksba_1.6.0.bb index 8d7043fc0..552007d6c 100644 --- a/poky/meta/recipes-support/libksba/libksba_1.5.0.bb +++ b/poky/meta/recipes-support/libksba/libksba_1.6.0.bb @@ -24,7 +24,7 @@ UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ file://ksba-add-pkgconfig-support.patch" -SRC_URI[sha256sum] = "ae4af129216b2d7fdea0b5bf2a788cd458a79c983bb09a43f4d525cc87aba0ba" +SRC_URI[sha256sum] = "dad683e6f2d915d880aa4bed5cea9a115690b8935b78a1bbe01669189307a48b" do_configure_prepend () { # Else these could be used in preference to those in aclocal-copy diff --git a/poky/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.73.bb b/poky/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.73.bb new file mode 100644 index 000000000..219f0c44d --- /dev/null +++ b/poky/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.73.bb @@ -0,0 +1,31 @@ +DESCRIPTION = "A small C library that is supposed to make it easy to run an HTTP server as part of another application" +HOMEPAGE = "http://www.gnu.org/software/libmicrohttpd/" +LICENSE = "LGPL-2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=57d09285feac8a64efa878e692b14f36" +SECTION = "net" + +DEPENDS = "file" + +SRC_URI = "${GNU_MIRROR}/libmicrohttpd/${BPN}-${PV}.tar.gz" +SRC_URI[md5sum] = "2b15949b1633e4fa487e08cdcc97f0e3" +SRC_URI[sha256sum] = "a37b2f1b88fd1bfe74109586be463a434d34e773530fc2a74364cfcf734c032e" + +inherit autotools lib_package pkgconfig gettext + +CFLAGS += "-pthread -D_REENTRANT" + +EXTRA_OECONF += "--disable-static --with-gnutls=${STAGING_LIBDIR}/../" + +PACKAGECONFIG ?= "curl https" +PACKAGECONFIG_append_class-target = "\ + ${@bb.utils.filter('DISTRO_FEATURES', 'largefile', d)} \ +" +PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,," +PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl," +PACKAGECONFIG[https] = "--enable-https,--disable-https,libgcrypt gnutls," + +do_compile_append() { + sed -i s:-L${STAGING_LIBDIR}::g libmicrohttpd.pc +} + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-support/libpcre/libpcre2_10.36.bb b/poky/meta/recipes-support/libpcre/libpcre2_10.37.bb index d8077a122..b596fbe87 100644 --- a/poky/meta/recipes-support/libpcre/libpcre2_10.36.bb +++ b/poky/meta/recipes-support/libpcre/libpcre2_10.37.bb @@ -8,11 +8,11 @@ SUMMARY = "Perl Compatible Regular Expressions version 2" HOMEPAGE = "http://www.pcre.org" SECTION = "devel" LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENCE;md5=60c08fab1357bfe9084b333bc33362d6" +LIC_FILES_CHKSUM = "file://LICENCE;md5=6b3022283c9a79238d521848ea9dcb4d" SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre2-${PV}.tar.bz2" -SRC_URI[sha256sum] = "a9ef39278113542968c7c73a31cfcb81aca1faa64690f400b907e8ab6b4a665c" +SRC_URI[sha256sum] = "4d95a96e8b80529893b4562be12648d798b957b1ba1aae39606bbc2ab956d270" CVE_PRODUCT = "pcre2" diff --git a/poky/meta/recipes-support/libpsl/libpsl_0.21.1.bb b/poky/meta/recipes-support/libpsl/libpsl_0.21.1.bb index db4b3a599..4fc0ad8ac 100644 --- a/poky/meta/recipes-support/libpsl/libpsl_0.21.1.bb +++ b/poky/meta/recipes-support/libpsl/libpsl_0.21.1.bb @@ -16,11 +16,10 @@ SRC_URI[sha256sum] = "ac6ce1e1fbd4d0254c4ddb9d37f1fa99dec83619c1253328155206b896 UPSTREAM_CHECK_URI = "https://github.com/rockdaboot/libpsl/releases" -DEPENDS = "libidn2" - inherit autotools gettext gtk-doc manpages pkgconfig lib_package -PACKAGECONFIG ??= "" +PACKAGECONFIG ?= "icu" PACKAGECONFIG[manpages] = "--enable-man,--disable-man,libxslt-native" - +PACKAGECONFIG[icu] = "--enable-runtime=libicu --enable-builtin=libicu,,icu" +PACKAGECONFIG[idn2] = "--enable-runtime=libidn2 --enable-builtin=libidn2,,libidn2 libunistring" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-support/libseccomp/files/run-ptest b/poky/meta/recipes-support/libseccomp/files/run-ptest new file mode 100644 index 000000000..54b4a63cd --- /dev/null +++ b/poky/meta/recipes-support/libseccomp/files/run-ptest @@ -0,0 +1,4 @@ +#!/bin/sh + +cd tests +./regression -a diff --git a/poky/meta/recipes-support/libseccomp/libseccomp_2.5.1.bb b/poky/meta/recipes-support/libseccomp/libseccomp_2.5.1.bb new file mode 100644 index 000000000..8fe102390 --- /dev/null +++ b/poky/meta/recipes-support/libseccomp/libseccomp_2.5.1.bb @@ -0,0 +1,54 @@ +SUMMARY = "interface to seccomp filtering mechanism" +DESCRIPTION = "The libseccomp library provides and easy to use, platform independent,interface to the Linux Kernel's syscall filtering mechanism: seccomp." +HOMEPAGE = "https://github.com/seccomp/libseccomp" +SECTION = "security" +LICENSE = "LGPL-2.1" +LIC_FILES_CHKSUM = "file://LICENSE;beginline=0;endline=1;md5=8eac08d22113880357ceb8e7c37f989f" + +DEPENDS += "gperf-native" + +SRCREV = "4bf70431a339a2886ab8c82e9a45378f30c6e6c7" + +SRC_URI = "git://github.com/seccomp/libseccomp.git;branch=release-2.5 \ + file://run-ptest \ + " + +COMPATIBLE_HOST_riscv32 = "null" + +S = "${WORKDIR}/git" + +inherit autotools-brokensep pkgconfig ptest features_check + +REQUIRED_DISTRO_FEATURES = "seccomp" + +PACKAGECONFIG ??= "" +PACKAGECONFIG[python] = "--enable-python, --disable-python, python3" + +DISABLE_STATIC = "" + +do_compile_ptest() { + oe_runmake -C tests check-build +} + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + install -d ${D}${PTEST_PATH}/tools + for file in $(find tests/* -executable -type f); do + install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests + done + for file in $(find tests/*.tests -type f); do + install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests + done + for file in $(find tools/* -executable -type f); do + install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools + done + # Overwrite libtool wrappers with real executables + for file in $(find tools/.libs/* -executable -type f); do + install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools + done +} + +FILES_${PN} = "${bindir} ${libdir}/${BPN}.so*" +FILES_${PN}-dbg += "${libdir}/${PN}/tests/.debug/* ${libdir}/${PN}/tools/.debug" + +RDEPENDS_${PN}-ptest = "coreutils bash" diff --git a/poky/meta/recipes-support/libssh2/files/0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch b/poky/meta/recipes-support/libssh2/files/0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch new file mode 100644 index 000000000..b331c1bf8 --- /dev/null +++ b/poky/meta/recipes-support/libssh2/files/0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch @@ -0,0 +1,112 @@ +From 1f76151c92e1b52e9c24ebf06adc77fbd6c062bc Mon Sep 17 00:00:00 2001 +From: Will Cosgrove <will@panic.com> +Date: Tue, 26 Jan 2021 11:41:21 -0800 +Subject: [PATCH] kex.c: move EC macro outside of if check #549 (#550) + +File: kex.c + +Notes: +Moved the macro LIBSSH2_KEX_METHOD_EC_SHA_HASH_CREATE_VERIFY outside of the LIBSSH2_ECDSA since it's also now used by the ED25519 code. + +Sha 256, 384 and 512 need to be defined for all backends now even if they aren't used directly. I believe this is already the case, but just a heads up. + +Credit: +Stefan-Ghinea + +Upstream-Status: Backport + +Reference to upstream patch: +https://github.com/libssh2/libssh2/commit/1f76151c92e1b52e9c24ebf06adc77fbd6c062bc + +Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com> +--- + src/kex.c | 66 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 33 insertions(+), 33 deletions(-) + +diff --git a/src/kex.c b/src/kex.c +index cb16639..19ab6ec 100644 +--- a/src/kex.c ++++ b/src/kex.c +@@ -1885,39 +1885,6 @@ kex_method_diffie_hellman_group_exchange_sha256_key_exchange + } + + +-#if LIBSSH2_ECDSA +- +-/* kex_session_ecdh_curve_type +- * returns the EC curve type by name used in key exchange +- */ +- +-static int +-kex_session_ecdh_curve_type(const char *name, libssh2_curve_type *out_type) +-{ +- int ret = 0; +- libssh2_curve_type type; +- +- if(name == NULL) +- return -1; +- +- if(strcmp(name, "ecdh-sha2-nistp256") == 0) +- type = LIBSSH2_EC_CURVE_NISTP256; +- else if(strcmp(name, "ecdh-sha2-nistp384") == 0) +- type = LIBSSH2_EC_CURVE_NISTP384; +- else if(strcmp(name, "ecdh-sha2-nistp521") == 0) +- type = LIBSSH2_EC_CURVE_NISTP521; +- else { +- ret = -1; +- } +- +- if(ret == 0 && out_type) { +- *out_type = type; +- } +- +- return ret; +-} +- +- + /* LIBSSH2_KEX_METHOD_EC_SHA_HASH_CREATE_VERIFY + * + * Macro that create and verifies EC SHA hash with a given digest bytes +@@ -2027,6 +1994,39 @@ kex_session_ecdh_curve_type(const char *name, libssh2_curve_type *out_type) + } \ + + ++#if LIBSSH2_ECDSA ++ ++/* kex_session_ecdh_curve_type ++ * returns the EC curve type by name used in key exchange ++ */ ++ ++static int ++kex_session_ecdh_curve_type(const char *name, libssh2_curve_type *out_type) ++{ ++ int ret = 0; ++ libssh2_curve_type type; ++ ++ if(name == NULL) ++ return -1; ++ ++ if(strcmp(name, "ecdh-sha2-nistp256") == 0) ++ type = LIBSSH2_EC_CURVE_NISTP256; ++ else if(strcmp(name, "ecdh-sha2-nistp384") == 0) ++ type = LIBSSH2_EC_CURVE_NISTP384; ++ else if(strcmp(name, "ecdh-sha2-nistp521") == 0) ++ type = LIBSSH2_EC_CURVE_NISTP521; ++ else { ++ ret = -1; ++ } ++ ++ if(ret == 0 && out_type) { ++ *out_type = type; ++ } ++ ++ return ret; ++} ++ ++ + /* ecdh_sha2_nistp + * Elliptic Curve Diffie Hellman Key Exchange + */ +-- +2.17.1 + diff --git a/poky/meta/recipes-support/libssh2/libssh2_1.9.0.bb b/poky/meta/recipes-support/libssh2/libssh2_1.9.0.bb index 0b8ccbd21..f290bf326 100644 --- a/poky/meta/recipes-support/libssh2/libssh2_1.9.0.bb +++ b/poky/meta/recipes-support/libssh2/libssh2_1.9.0.bb @@ -11,6 +11,7 @@ SRC_URI = "http://www.libssh2.org/download/${BP}.tar.gz \ file://CVE-2019-17498.patch \ file://0001-configure-Conditionally-undefine-backend-m4-macro.patch \ file://run-ptest \ + file://0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch \ " SRC_URI_append_ptest = " file://0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch" @@ -33,7 +34,7 @@ PACKAGECONFIG[gcrypt] = "--with-crypto=libgcrypt --with-libgcrypt-prefix=${STAGI BBCLASSEXTEND = "native nativesdk" # required for ptest on documentation -RDEPENDS_${PN}-ptest = "man-db openssh" +RDEPENDS_${PN}-ptest = "man-db openssh util-linux-col" RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-en-us" do_compile_ptest() { diff --git a/poky/meta/recipes-support/liburcu/liburcu_0.12.2.bb b/poky/meta/recipes-support/liburcu/liburcu_0.13.0.bb index b493e939c..c9fef8978 100644 --- a/poky/meta/recipes-support/liburcu/liburcu_0.12.2.bb +++ b/poky/meta/recipes-support/liburcu/liburcu_0.13.0.bb @@ -12,8 +12,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e548d28737289d75a8f1e01ba2fd7825 \ SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2" -SRC_URI[md5sum] = "d94347df78e3f1aa744745eb85787df5" -SRC_URI[sha256sum] = "4eefc11e4f6c212fc7d84d871e1cc139da0669a46ff3fda557a6fdd4d74ca67b" +SRC_URI[md5sum] = "8cb75dbb05774c03e66c63cb3186dd59" +SRC_URI[sha256sum] = "cbb20dbe1a892c2a4d8898bac4316176e585392693d498766ccbbc68cf20ba20" S = "${WORKDIR}/userspace-rcu-${PV}" inherit autotools multilib_header diff --git a/poky/meta/recipes-support/lz4/lz4_1.9.3.bb b/poky/meta/recipes-support/lz4/lz4_1.9.3.bb index effc530b9..3905ef7db 100644 --- a/poky/meta/recipes-support/lz4/lz4_1.9.3.bb +++ b/poky/meta/recipes-support/lz4/lz4_1.9.3.bb @@ -22,7 +22,7 @@ S = "${WORKDIR}/git" # Fixed in r118, which is larger than the current version. CVE_CHECK_WHITELIST += "CVE-2014-4715" -EXTRA_OEMAKE = "PREFIX=${prefix} CC='${CC}' DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir} BUILD_STATIC=no" +EXTRA_OEMAKE = "PREFIX=${prefix} CC='${CC}' CFLAGS='${CFLAGS}' DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir} BUILD_STATIC=no" do_install() { oe_runmake install diff --git a/poky/meta/recipes-support/nettle/nettle_3.7.1.bb b/poky/meta/recipes-support/nettle/nettle_3.7.3.bb index 3bbcf17c7..031500d74 100644 --- a/poky/meta/recipes-support/nettle/nettle_3.7.1.bb +++ b/poky/meta/recipes-support/nettle/nettle_3.7.3.bb @@ -24,7 +24,7 @@ SRC_URI_append_class-target = "\ file://dlopen-test.patch \ " -SRC_URI[sha256sum] = "156621427c7b00a75ff9b34b770b95d34f80ef7a55c3407de94b16cbf436c42e" +SRC_URI[sha256sum] = "661f5eb03f048a3b924c3a8ad2515d4068e40f67e774e8a26827658007e3bcf0" UPSTREAM_CHECK_REGEX = "nettle-(?P<pver>\d+(\.\d+)+)\.tar" diff --git a/poky/meta/recipes-support/npth/npth/0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch b/poky/meta/recipes-support/npth/npth/0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch new file mode 100644 index 000000000..47c426b4a --- /dev/null +++ b/poky/meta/recipes-support/npth/npth/0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch @@ -0,0 +1,43 @@ +From e43524868bb4901703d63876f9d49f73ca75b3ab Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 12 May 2021 20:27:52 -0700 +Subject: [PATCH] Revert "Fix problem with regression tests on recent glibc." + +This reverts commit 3a9d32eb59194b989656548755066ccd9feb36ac. + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + configure.ac | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 8a9373c..8cda28d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -284,11 +284,9 @@ AC_TYPE_SSIZE_T + # + # Checks for libraries and functions. + # +-# We test for pthread_detach because glibc 2.22 includes +-# pthread_create but not pthread_detach. + if test "$have_w32_system" = no; then +- AC_SEARCH_LIBS([pthread_detach],[pthread]) +- case "x$ac_cv_search_pthread_detach" in ++ AC_SEARCH_LIBS([pthread_create],[pthread]) ++ case "x$ac_cv_search_pthread_create" in + xno) + have_pthread=no + ;; +@@ -297,7 +295,7 @@ if test "$have_w32_system" = no; then + ;; + *) + have_pthread=yes +- config_libs="$config_libs $ac_cv_search_pthread_detach" ++ config_libs="$config_libs $ac_cv_search_pthread_create" + ;; + esac + if test "$have_pthread" != no; then +-- +2.31.1 + diff --git a/poky/meta/recipes-support/npth/npth_1.6.bb b/poky/meta/recipes-support/npth/npth_1.6.bb index 94a3f00ea..d5a149e04 100644 --- a/poky/meta/recipes-support/npth/npth_1.6.bb +++ b/poky/meta/recipes-support/npth/npth_1.6.bb @@ -9,6 +9,7 @@ LIC_FILES_CHKSUM = "\ UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" SRC_URI = "${GNUPG_MIRROR}/npth/npth-${PV}.tar.bz2 \ file://pkgconfig.patch \ + file://0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch \ " SRC_URI[md5sum] = "375d1a15ad969f32d25f1a7630929854" diff --git a/poky/meta/recipes-support/p11-kit/p11-kit_0.23.22.bb b/poky/meta/recipes-support/p11-kit/p11-kit_0.24.0.bb index 623afccb5..6759168b3 100644 --- a/poky/meta/recipes-support/p11-kit/p11-kit_0.23.22.bb +++ b/poky/meta/recipes-support/p11-kit/p11-kit_0.24.0.bb @@ -10,8 +10,8 @@ DEPENDS = "libtasn1 libtasn1-native libffi" DEPENDS_append = "${@' glib-2.0' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}" -SRC_URI = "git://github.com/p11-glue/p11-kit;branch=0.23" -SRCREV = "bd97afbfe28d5fbbde95ce36ff7a8834fc0291ee" +SRC_URI = "git://github.com/p11-glue/p11-kit" +SRCREV = "34826623f58399b24c21f1788e2cdaea34521b7b" S = "${WORKDIR}/git" PACKAGECONFIG ??= "" diff --git a/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.1.bb b/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.1.bb index 57a3ae005..6bd10d2fe 100644 --- a/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.1.bb +++ b/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.1.bb @@ -26,3 +26,5 @@ do_compile () { do_install () { install -D -m 0755 ${S}/ptest-runner ${D}${bindir}/ptest-runner } + +RDEPENDS_${PN}_append_libc-glibc = " libgcc" diff --git a/poky/meta/recipes-support/re2c/re2c_2.0.3.bb b/poky/meta/recipes-support/re2c/re2c_2.1.1.bb index ce04fd39e..1da944e90 100644 --- a/poky/meta/recipes-support/re2c/re2c_2.0.3.bb +++ b/poky/meta/recipes-support/re2c/re2c_2.1.1.bb @@ -8,7 +8,7 @@ LICENSE = "PD" LIC_FILES_CHKSUM = "file://LICENSE;md5=64eca4d8a3b67f9dc7656094731a2c8d" SRC_URI = "https://github.com/skvadrik/re2c/releases/download/${PV}/${BPN}-${PV}.tar.xz" -SRC_URI[sha256sum] = "b2bc1eb8aaaa21ff2fcd26507b7e6e72c5e3d887e58aa515c2155fb17d744278" +SRC_URI[sha256sum] = "036ee264fafd5423141ebd628890775aa9447a4c4068a6307385d7366fe711f8" UPSTREAM_CHECK_URI = "https://github.com/skvadrik/re2c/releases" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-support/rng-tools/rng-tools_6.11.bb b/poky/meta/recipes-support/rng-tools/rng-tools_6.13.bb index 61a0cef2e..fb2fd63c5 100644 --- a/poky/meta/recipes-support/rng-tools/rng-tools_6.11.bb +++ b/poky/meta/recipes-support/rng-tools/rng-tools_6.13.bb @@ -14,7 +14,7 @@ SRC_URI = "\ file://default \ file://rngd.service \ " -SRCREV = "2ea13473fd5bfea3c861dc0e23bd65e2afe8007b" +SRCREV = "d8dac0e8bede73e42b3d59f3b48c662ad0032e8c" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-support/sqlite/sqlite3_3.35.0.bb b/poky/meta/recipes-support/sqlite/sqlite3_3.35.5.bb index 127065bbc..d74a6210d 100644 --- a/poky/meta/recipes-support/sqlite/sqlite3_3.35.0.bb +++ b/poky/meta/recipes-support/sqlite/sqlite3_3.35.5.bb @@ -4,7 +4,7 @@ LICENSE = "PD" LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66" SRC_URI = "http://www.sqlite.org/2021/sqlite-autoconf-${SQLITE_PV}.tar.gz" -SRC_URI[sha256sum] = "3dfb3f143c83695a555c7dd9e06ed924f9d273c287989874e102656724baf2d0" +SRC_URI[sha256sum] = "f52b72a5c319c3e516ed7a92e123139a6e87af08a2dc43d7757724f6132e6db0" # -19242 is only an issue in specific development branch commits CVE_CHECK_WHITELIST += "CVE-2019-19242" diff --git a/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch b/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch index a1d2e7ff2..b4100fc38 100644 --- a/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch +++ b/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch @@ -17,20 +17,19 @@ Signed-off-by: Andreas Müller <schnitzeltony@gmail.com> src/widget.cc | 1 + 2 files changed, 5 insertions(+) -diff --git a/src/missing.hh b/src/missing.hh -index 0742270..30ede62 100644 --- a/src/missing.hh +++ b/src/missing.hh -@@ -33,3 +33,7 @@ int fdwalk(int (*cb)(void* data, int fd), - char* strchrnul(char const* s, - int c); +@@ -24,6 +24,10 @@ + #define NSIG (8 * sizeof(sigset_t)) #endif -+ + +#ifndef W_EXITCODE +#define W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) +#endif -diff --git a/src/widget.cc b/src/widget.cc -index 44a2271..0668735 100644 ++ + #ifndef HAVE_FDWALK + int fdwalk(int (*cb)(void* data, int fd), + void* data); --- a/src/widget.cc +++ b/src/widget.cc @@ -21,6 +21,7 @@ diff --git a/poky/meta/recipes-support/vte/vte_0.62.2.bb b/poky/meta/recipes-support/vte/vte_0.64.1.bb index a2164f43d..0401eaa04 100644 --- a/poky/meta/recipes-support/vte/vte_0.62.2.bb +++ b/poky/meta/recipes-support/vte/vte_0.64.1.bb @@ -2,13 +2,13 @@ SUMMARY = "Virtual terminal emulator GTK+ widget library" DESCRIPTION = "VTE provides a virtual terminal widget for GTK applications." HOMEPAGE = "https://wiki.gnome.org/Apps/Terminal/VTE" BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte" -LICENSE = "GPLv3 & LGPLv3+ & LGPLv2.1+" +LICENSE = "GPLv3 & LGPLv3+ & MIT-X" LICENSE_libvte = "LGPLv3+" LIC_FILES_CHKSUM = " \ - file://COPYING.GPL3;md5=2f31b266d3440dd7ee50f92cf67d8e6c \ - file://COPYING.LGPL2;md5=4fbd65380cdd255951079008b364516c \ + file://COPYING.GPL3;md5=cc702cf3444d1f19680c794cc61948f9 \ file://COPYING.LGPL3;md5=b52f2d57d10c4f7ee67a7eb9615d5d24 \ + file://COPYING.XTERM;md5=d7fc3a23c16c039afafe2e042030f057 \ " DEPENDS = "glib-2.0 gtk+3 libpcre2 libxml2-native gperf-native icu" @@ -20,7 +20,7 @@ inherit gnomebase gtk-doc features_check upstream-version-is-even gobject-intros # vapigen.m4 is required when vala is not present (but the one from vala should be used normally) SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch" -SRC_URI[archive.sha256sum] = "b0300bbcf0c02df5812a10a3cb8e4fff723bab92c08c97a0a90c167cf543aff0" +SRC_URI[archive.sha256sum] = "12fb41a9ff8e03c5f1711b46560910a4b9b3102aec3e9e7609ceef4dfa98aa2a" ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" @@ -56,4 +56,6 @@ FILES_${PN}-prompt = " \ ${libexecdir}/vte-urlencode-cwd \ " +FILES_${PN}-dev += "${datadir}/glade/" + BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-support/xxhash/files/0001-Makefile-escape-special-regex-characters-in-paths.patch b/poky/meta/recipes-support/xxhash/files/0001-Makefile-escape-special-regex-characters-in-paths.patch new file mode 100644 index 000000000..6d3da147f --- /dev/null +++ b/poky/meta/recipes-support/xxhash/files/0001-Makefile-escape-special-regex-characters-in-paths.patch @@ -0,0 +1,55 @@ +From 9ab56f841b1986cd5cdff66cb5ef222794b9ed39 Mon Sep 17 00:00:00 2001 +From: Dmitry Kalinkin <dmitry.kalinkin@gmail.com> +Date: Mon, 22 Feb 2021 14:07:58 -0500 +Subject: [PATCH] Makefile: escape special regex characters in paths + +Fixes a problem with certain valid install paths: + +make prefix=/tmp/a+b/ +Makefile:434: *** configured libdir (/tmp/a+b//lib) is outside of exec_prefix (/tmp/a+b/), can't generate pkg-config file. Stop. + +Upstream-Status: Backport [f79cd22a806993b4a62d8a4f1ba529a29a9d9ff5] + +Signed-off-by: Chen Qi <Qi.Chen@windriver.com> +--- + Makefile | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index ef24e94..baa1533 100644 +--- a/Makefile ++++ b/Makefile +@@ -411,14 +411,18 @@ INSTALL_PROGRAM ?= $(INSTALL) + INSTALL_DATA ?= $(INSTALL) -m 644 + + +-PCLIBDIR ?= $(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(EXEC_PREFIX)(/|$$)@@p") +-PCINCDIR ?= $(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(PREFIX)(/|$$)@@p") ++# Escape special symbols by putting each character into its separate class ++EXEC_PREFIX_REGEX ?= $(shell echo "$(EXEC_PREFIX)" | $(SED) $(SED_ERE_OPT) -e "s/([^^])/[\1]/g" -e "s/\\^/\\\\^/g") ++PREFIX_REGEX ?= $(shell echo "$(PREFIX)" | $(SED) $(SED_ERE_OPT) -e "s/([^^])/[\1]/g" -e "s/\\^/\\\\^/g") ++ ++PCLIBDIR ?= $(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(EXEC_PREFIX_REGEX)(/|$$)@@p") ++PCINCDIR ?= $(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "s@^$(PREFIX_REGEX)(/|$$)@@p") + PCEXECDIR?= $(if $(filter $(PREFIX),$(EXEC_PREFIX)),$$\{prefix\},$(EXEC_PREFIX)) + + ifeq (,$(PCLIBDIR)) + # Additional prefix check is required, since the empty string is technically a + # valid PCLIBDIR +-ifeq (,$(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(EXEC_PREFIX)(/|$$)@ p")) ++ifeq (,$(shell echo "$(LIBDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(EXEC_PREFIX_REGEX)(/|$$)@ p")) + $(error configured libdir ($(LIBDIR)) is outside of exec_prefix ($(EXEC_PREFIX)), can't generate pkg-config file) + endif + endif +@@ -426,7 +430,7 @@ endif + ifeq (,$(PCINCDIR)) + # Additional prefix check is required, since the empty string is technically a + # valid PCINCDIR +-ifeq (,$(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(PREFIX)(/|$$)@ p")) ++ifeq (,$(shell echo "$(INCLUDEDIR)" | $(SED) -n $(SED_ERE_OPT) -e "\\@^$(PREFIX_REGEX)(/|$$)@ p")) + $(error configured includedir ($(INCLUDEDIR)) is outside of prefix ($(PREFIX)), can't generate pkg-config file) + endif + endif +-- +2.17.1 + diff --git a/poky/meta/recipes-support/xxhash/xxhash_0.8.0.bb b/poky/meta/recipes-support/xxhash/xxhash_0.8.0.bb index 9e3887236..4e48365a7 100644 --- a/poky/meta/recipes-support/xxhash/xxhash_0.8.0.bb +++ b/poky/meta/recipes-support/xxhash/xxhash_0.8.0.bb @@ -5,7 +5,9 @@ HOMEPAGE = "http://www.xxhash.com/" LICENSE = "BSD-2-Clause & GPL-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=b335320506abb0505437e39295e799cb" -SRC_URI = "git://github.com/Cyan4973/xxHash.git;branch=release;protocol=git" +SRC_URI = "git://github.com/Cyan4973/xxHash.git;branch=release;protocol=git \ + file://0001-Makefile-escape-special-regex-characters-in-paths.patch \ + " UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" SRCREV = "94e5f23e736f2bb67ebdf90727353e65344f9fc0" diff --git a/poky/scripts/combo-layer b/poky/scripts/combo-layer index a634dd69d..045de6564 100755 --- a/poky/scripts/combo-layer +++ b/poky/scripts/combo-layer @@ -508,7 +508,7 @@ def check_patch(patchfile): f.close() if of: of.close() - os.rename(patchfile + '.tmp', patchfile) + bb.utils.rename(patchfile + '.tmp', patchfile) def drop_to_shell(workdir=None): if not sys.stdin.isatty(): diff --git a/poky/scripts/contrib/image-manifest b/poky/scripts/contrib/image-manifest new file mode 100755 index 000000000..3c07a73a4 --- /dev/null +++ b/poky/scripts/contrib/image-manifest @@ -0,0 +1,523 @@ +#!/usr/bin/env python3 + +# Script to extract information from image manifests +# +# Copyright (C) 2018 Intel Corporation +# Copyright (C) 2021 Wind River Systems, Inc. +# +# SPDX-License-Identifier: GPL-2.0-only +# + +import sys +import os +import argparse +import logging +import json +import shutil +import tempfile +import tarfile +from collections import OrderedDict + +scripts_path = os.path.dirname(__file__) +lib_path = scripts_path + '/../lib' +sys.path = sys.path + [lib_path] + +import scriptutils +logger = scriptutils.logger_create(os.path.basename(__file__)) + +import argparse_oe +import scriptpath +bitbakepath = scriptpath.add_bitbake_lib_path() +if not bitbakepath: + logger.error("Unable to find bitbake by searching parent directory of this script or PATH") + sys.exit(1) +logger.debug('Using standard bitbake path %s' % bitbakepath) +scriptpath.add_oe_lib_path() + +import bb.tinfoil +import bb.utils +import oe.utils +import oe.recipeutils + +def get_pkg_list(manifest): + pkglist = [] + with open(manifest, 'r') as f: + for line in f: + linesplit = line.split() + if len(linesplit) == 3: + # manifest file + pkglist.append(linesplit[0]) + elif len(linesplit) == 1: + # build dependency file + pkglist.append(linesplit[0]) + return sorted(pkglist) + +def list_packages(args): + pkglist = get_pkg_list(args.manifest) + for pkg in pkglist: + print('%s' % pkg) + +def pkg2recipe(tinfoil, pkg): + if "-native" in pkg: + logger.info('skipping %s' % pkg) + return None + + pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR') + pkgdatafile = os.path.join(pkgdata_dir, 'runtime-reverse', pkg) + logger.debug('pkgdatafile %s' % pkgdatafile) + try: + f = open(pkgdatafile, 'r') + for line in f: + if line.startswith('PN:'): + recipe = line.split(':', 1)[1].strip() + return recipe + except Exception: + logger.warning('%s is missing' % pkgdatafile) + return None + +def get_recipe_list(manifest, tinfoil): + pkglist = get_pkg_list(manifest) + recipelist = [] + for pkg in pkglist: + recipe = pkg2recipe(tinfoil,pkg) + if recipe: + if not recipe in recipelist: + recipelist.append(recipe) + + return sorted(recipelist) + +def list_recipes(args): + import bb.tinfoil + with bb.tinfoil.Tinfoil() as tinfoil: + tinfoil.logger.setLevel(logger.getEffectiveLevel()) + tinfoil.prepare(config_only=True) + recipelist = get_recipe_list(args.manifest, tinfoil) + for recipe in sorted(recipelist): + print('%s' % recipe) + +def list_layers(args): + + def find_git_repo(pth): + checkpth = pth + while checkpth != os.sep: + if os.path.exists(os.path.join(checkpth, '.git')): + return checkpth + checkpth = os.path.dirname(checkpth) + return None + + def get_git_remote_branch(repodir): + try: + stdout, _ = bb.process.run(['git', 'rev-parse', '--abbrev-ref', '--symbolic-full-name', '@{u}'], cwd=repodir) + except bb.process.ExecutionError as e: + stdout = None + if stdout: + return stdout.strip() + else: + return None + + def get_git_head_commit(repodir): + try: + stdout, _ = bb.process.run(['git', 'rev-parse', 'HEAD'], cwd=repodir) + except bb.process.ExecutionError as e: + stdout = None + if stdout: + return stdout.strip() + else: + return None + + def get_git_repo_url(repodir, remote='origin'): + import bb.process + # Try to get upstream repo location from origin remote + try: + stdout, _ = bb.process.run(['git', 'remote', '-v'], cwd=repodir) + except bb.process.ExecutionError as e: + stdout = None + if stdout: + for line in stdout.splitlines(): + splitline = line.split() + if len(splitline) > 1: + if splitline[0] == remote and scriptutils.is_src_url(splitline[1]): + return splitline[1] + return None + + with bb.tinfoil.Tinfoil() as tinfoil: + tinfoil.logger.setLevel(logger.getEffectiveLevel()) + tinfoil.prepare(config_only=False) + layers = OrderedDict() + for layerdir in tinfoil.config_data.getVar('BBLAYERS').split(): + layerdata = OrderedDict() + layername = os.path.basename(layerdir) + logger.debug('layername %s, layerdir %s' % (layername, layerdir)) + if layername in layers: + logger.warning('layername %s is not unique in configuration' % layername) + layername = os.path.basename(os.path.dirname(layerdir)) + '_' + os.path.basename(layerdir) + logger.debug('trying layername %s' % layername) + if layername in layers: + logger.error('Layer name %s is not unique in configuration' % layername) + sys.exit(2) + repodir = find_git_repo(layerdir) + if repodir: + remotebranch = get_git_remote_branch(repodir) + remote = 'origin' + if remotebranch and '/' in remotebranch: + rbsplit = remotebranch.split('/', 1) + layerdata['actual_branch'] = rbsplit[1] + remote = rbsplit[0] + layerdata['vcs_url'] = get_git_repo_url(repodir, remote) + if os.path.abspath(repodir) != os.path.abspath(layerdir): + layerdata['vcs_subdir'] = os.path.relpath(layerdir, repodir) + commit = get_git_head_commit(repodir) + if commit: + layerdata['vcs_commit'] = commit + layers[layername] = layerdata + + json.dump(layers, args.output, indent=2) + +def get_recipe(args): + with bb.tinfoil.Tinfoil() as tinfoil: + tinfoil.logger.setLevel(logger.getEffectiveLevel()) + tinfoil.prepare(config_only=True) + + recipe = pkg2recipe(tinfoil, args.package) + print(' %s package provided by %s' % (args.package, recipe)) + +def pkg_dependencies(args): + def get_recipe_info(tinfoil, recipe): + try: + info = tinfoil.get_recipe_info(recipe) + except Exception: + logger.error('Failed to get recipe info for: %s' % recipe) + sys.exit(1) + if not info: + logger.warning('No recipe info found for: %s' % recipe) + sys.exit(1) + append_files = tinfoil.get_file_appends(info.fn) + appends = True + data = tinfoil.parse_recipe_file(info.fn, appends, append_files) + data.pn = info.pn + data.pv = info.pv + return data + + def find_dependencies(tinfoil, assume_provided, recipe_info, packages, rn, order): + spaces = ' ' * order + data = recipe_info[rn] + if args.native: + logger.debug('%s- %s' % (spaces, data.pn)) + elif "-native" not in data.pn: + if "cross" not in data.pn: + logger.debug('%s- %s' % (spaces, data.pn)) + + depends = [] + for dep in data.depends: + if dep not in assume_provided: + depends.append(dep) + + # First find all dependencies not in package list. + for dep in depends: + if dep not in packages: + packages.append(dep) + dep_data = get_recipe_info(tinfoil, dep) + # Do this once now to reduce the number of bitbake calls. + dep_data.depends = dep_data.getVar('DEPENDS').split() + recipe_info[dep] = dep_data + + # Then recursively analyze all of the dependencies for the current recipe. + for dep in depends: + find_dependencies(tinfoil, assume_provided, recipe_info, packages, dep, order + 1) + + with bb.tinfoil.Tinfoil() as tinfoil: + tinfoil.logger.setLevel(logger.getEffectiveLevel()) + tinfoil.prepare() + + assume_provided = tinfoil.config_data.getVar('ASSUME_PROVIDED').split() + logger.debug('assumed provided:') + for ap in sorted(assume_provided): + logger.debug(' - %s' % ap) + + recipe = pkg2recipe(tinfoil, args.package) + data = get_recipe_info(tinfoil, recipe) + data.depends = [] + depends = data.getVar('DEPENDS').split() + for dep in depends: + if dep not in assume_provided: + data.depends.append(dep) + + recipe_info = dict([(recipe, data)]) + packages = [] + find_dependencies(tinfoil, assume_provided, recipe_info, packages, recipe, order=1) + + print('\nThe following packages are required to build %s' % recipe) + for p in sorted(packages): + data = recipe_info[p] + if "-native" not in data.pn: + if "cross" not in data.pn: + print(" %s (%s)" % (data.pn,p)) + + if args.native: + print('\nThe following native packages are required to build %s' % recipe) + for p in sorted(packages): + data = recipe_info[p] + if "-native" in data.pn: + print(" %s(%s)" % (data.pn,p)) + if "cross" in data.pn: + print(" %s(%s)" % (data.pn,p)) + +def default_config(): + vlist = OrderedDict() + vlist['PV'] = 'yes' + vlist['SUMMARY'] = 'no' + vlist['DESCRIPTION'] = 'no' + vlist['SECTION'] = 'no' + vlist['LICENSE'] = 'yes' + vlist['HOMEPAGE'] = 'no' + vlist['BUGTRACKER'] = 'no' + vlist['PROVIDES'] = 'no' + vlist['BBCLASSEXTEND'] = 'no' + vlist['DEPENDS'] = 'no' + vlist['PACKAGECONFIG'] = 'no' + vlist['SRC_URI'] = 'yes' + vlist['SRCREV'] = 'yes' + vlist['EXTRA_OECONF'] = 'no' + vlist['EXTRA_OESCONS'] = 'no' + vlist['EXTRA_OECMAKE'] = 'no' + vlist['EXTRA_OEMESON'] = 'no' + + clist = OrderedDict() + clist['variables'] = vlist + clist['filepath'] = 'no' + clist['sha256sum'] = 'no' + clist['layerdir'] = 'no' + clist['layer'] = 'no' + clist['inherits'] = 'no' + clist['source_urls'] = 'no' + clist['packageconfig_opts'] = 'no' + clist['patches'] = 'no' + clist['packagedir'] = 'no' + return clist + +def dump_config(args): + config = default_config() + f = open('default_config.json', 'w') + json.dump(config, f, indent=2) + logger.info('Default config list dumped to default_config.json') + +def export_manifest_info(args): + + def handle_value(value): + if value: + return oe.utils.squashspaces(value) + else: + return value + + if args.config: + logger.debug('config: %s' % args.config) + f = open(args.config, 'r') + config = json.load(f, object_pairs_hook=OrderedDict) + else: + config = default_config() + if logger.isEnabledFor(logging.DEBUG): + print('Configuration:') + json.dump(config, sys.stdout, indent=2) + print('') + + tmpoutdir = tempfile.mkdtemp(prefix=os.path.basename(__file__)+'-') + logger.debug('tmp dir: %s' % tmpoutdir) + + # export manifest + shutil.copy2(args.manifest,os.path.join(tmpoutdir, "manifest")) + + with bb.tinfoil.Tinfoil(tracking=True) as tinfoil: + tinfoil.logger.setLevel(logger.getEffectiveLevel()) + tinfoil.prepare(config_only=False) + + pkglist = get_pkg_list(args.manifest) + # export pkg list + f = open(os.path.join(tmpoutdir, "pkgs"), 'w') + for pkg in pkglist: + f.write('%s\n' % pkg) + f.close() + + recipelist = [] + for pkg in pkglist: + recipe = pkg2recipe(tinfoil,pkg) + if recipe: + if not recipe in recipelist: + recipelist.append(recipe) + recipelist.sort() + # export recipe list + f = open(os.path.join(tmpoutdir, "recipes"), 'w') + for recipe in recipelist: + f.write('%s\n' % recipe) + f.close() + + try: + rvalues = OrderedDict() + for pn in sorted(recipelist): + logger.debug('Package: %s' % pn) + rd = tinfoil.parse_recipe(pn) + + rvalues[pn] = OrderedDict() + + for varname in config['variables']: + if config['variables'][varname] == 'yes': + rvalues[pn][varname] = handle_value(rd.getVar(varname)) + + fpth = rd.getVar('FILE') + layerdir = oe.recipeutils.find_layerdir(fpth) + if config['filepath'] == 'yes': + rvalues[pn]['filepath'] = os.path.relpath(fpth, layerdir) + if config['sha256sum'] == 'yes': + rvalues[pn]['sha256sum'] = bb.utils.sha256_file(fpth) + + if config['layerdir'] == 'yes': + rvalues[pn]['layerdir'] = layerdir + + if config['layer'] == 'yes': + rvalues[pn]['layer'] = os.path.basename(layerdir) + + if config['inherits'] == 'yes': + gr = set(tinfoil.config_data.getVar("__inherit_cache") or []) + lr = set(rd.getVar("__inherit_cache") or []) + rvalues[pn]['inherits'] = sorted({os.path.splitext(os.path.basename(r))[0] for r in lr if r not in gr}) + + if config['source_urls'] == 'yes': + rvalues[pn]['source_urls'] = [] + for url in (rd.getVar('SRC_URI') or '').split(): + if not url.startswith('file://'): + url = url.split(';')[0] + rvalues[pn]['source_urls'].append(url) + + if config['packageconfig_opts'] == 'yes': + rvalues[pn]['packageconfig_opts'] = OrderedDict() + for key in rd.getVarFlags('PACKAGECONFIG').keys(): + if key == 'doc': + continue + rvalues[pn]['packageconfig_opts'][key] = rd.getVarFlag('PACKAGECONFIG', key, True) + + if config['patches'] == 'yes': + patches = oe.recipeutils.get_recipe_patches(rd) + rvalues[pn]['patches'] = [] + if patches: + recipeoutdir = os.path.join(tmpoutdir, pn, 'patches') + bb.utils.mkdirhier(recipeoutdir) + for patch in patches: + # Patches may be in other layers too + patchlayerdir = oe.recipeutils.find_layerdir(patch) + # patchlayerdir will be None for remote patches, which we ignore + # (since currently they are considered as part of sources) + if patchlayerdir: + rvalues[pn]['patches'].append((os.path.basename(patchlayerdir), os.path.relpath(patch, patchlayerdir))) + shutil.copy(patch, recipeoutdir) + + if config['packagedir'] == 'yes': + pn_dir = os.path.join(tmpoutdir, pn) + bb.utils.mkdirhier(pn_dir) + f = open(os.path.join(pn_dir, 'recipe.json'), 'w') + json.dump(rvalues[pn], f, indent=2) + f.close() + + with open(os.path.join(tmpoutdir, 'recipes.json'), 'w') as f: + json.dump(rvalues, f, indent=2) + + if args.output: + outname = os.path.basename(args.output) + else: + outname = os.path.splitext(os.path.basename(args.manifest))[0] + if outname.endswith('.tar.gz'): + outname = outname[:-7] + elif outname.endswith('.tgz'): + outname = outname[:-4] + + tarfn = outname + if tarfn.endswith(os.sep): + tarfn = tarfn[:-1] + if not tarfn.endswith(('.tar.gz', '.tgz')): + tarfn += '.tar.gz' + with open(tarfn, 'wb') as f: + with tarfile.open(None, "w:gz", f) as tar: + tar.add(tmpoutdir, outname) + finally: + shutil.rmtree(tmpoutdir) + + +def main(): + parser = argparse_oe.ArgumentParser(description="Image manifest utility", + epilog="Use %(prog)s <subcommand> --help to get help on a specific command") + parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true') + parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true') + subparsers = parser.add_subparsers(dest="subparser_name", title='subcommands', metavar='<subcommand>') + subparsers.required = True + + # get recipe info + parser_get_recipes = subparsers.add_parser('recipe-info', + help='Get recipe info', + description='Get recipe information for a package') + parser_get_recipes.add_argument('package', help='Package name') + parser_get_recipes.set_defaults(func=get_recipe) + + # list runtime dependencies + parser_pkg_dep = subparsers.add_parser('list-depends', + help='List dependencies', + description='List dependencies required to build the package') + parser_pkg_dep.add_argument('--native', help='also print native and cross packages', action='store_true') + parser_pkg_dep.add_argument('package', help='Package name') + parser_pkg_dep.set_defaults(func=pkg_dependencies) + + # list recipes + parser_recipes = subparsers.add_parser('list-recipes', + help='List recipes producing packages within an image', + description='Lists recipes producing the packages that went into an image, using the manifest and pkgdata') + parser_recipes.add_argument('manifest', help='Manifest file') + parser_recipes.set_defaults(func=list_recipes) + + # list packages + parser_packages = subparsers.add_parser('list-packages', + help='List packages within an image', + description='Lists packages that went into an image, using the manifest') + parser_packages.add_argument('manifest', help='Manifest file') + parser_packages.set_defaults(func=list_packages) + + # list layers + parser_layers = subparsers.add_parser('list-layers', + help='List included layers', + description='Lists included layers') + parser_layers.add_argument('-o', '--output', help='Output file - defaults to stdout if not specified', + default=sys.stdout, type=argparse.FileType('w')) + parser_layers.set_defaults(func=list_layers) + + # dump default configuration file + parser_dconfig = subparsers.add_parser('dump-config', + help='Dump default config', + description='Dump default config to default_config.json') + parser_dconfig.set_defaults(func=dump_config) + + # export recipe info for packages in manifest + parser_export = subparsers.add_parser('manifest-info', + help='Export recipe info for a manifest', + description='Export recipe information using the manifest') + parser_export.add_argument('-c', '--config', help='load config from json file') + parser_export.add_argument('-o', '--output', help='Output file (tarball) - defaults to manifest name if not specified') + parser_export.add_argument('manifest', help='Manifest file') + parser_export.set_defaults(func=export_manifest_info) + + args = parser.parse_args() + + if args.debug: + logger.setLevel(logging.DEBUG) + logger.debug("Debug Enabled") + elif args.quiet: + logger.setLevel(logging.ERROR) + + ret = args.func(args) + + return ret + + +if __name__ == "__main__": + try: + ret = main() + except Exception: + ret = 1 + import traceback + traceback.print_exc() + sys.exit(ret) diff --git a/poky/scripts/lib/devtool/standard.py b/poky/scripts/lib/devtool/standard.py index f364a4528..5eba2191d 100644 --- a/poky/scripts/lib/devtool/standard.py +++ b/poky/scripts/lib/devtool/standard.py @@ -746,7 +746,7 @@ def _check_preserve(config, recipename): os.remove(removefile) else: tf.write(line) - os.rename(newfile, origfile) + bb.utils.rename(newfile, origfile) def get_staging_kver(srcdir): # Kernel version from work-shared @@ -1094,10 +1094,10 @@ def rename(args, config, basepath, workspace): # Rename bbappend logger.info('Renaming %s to %s' % (append, newappend)) - os.rename(append, newappend) + bb.utils.rename(append, newappend) # Rename recipe file logger.info('Renaming %s to %s' % (recipefile, newfile)) - os.rename(recipefile, newfile) + bb.utils.rename(recipefile, newfile) # Rename source tree if it's the default path appendmd5 = None @@ -1333,7 +1333,7 @@ def _export_patches(srctree, rd, start_rev, destdir, changed_revs=None): if match_name: # Rename patch files if new_patch != match_name: - os.rename(os.path.join(destdir, new_patch), + bb.utils.rename(os.path.join(destdir, new_patch), os.path.join(destdir, match_name)) # Need to pop it off the list now before checking changed_revs oldpath = existing_patches.pop(old_patch) diff --git a/poky/scripts/lib/devtool/upgrade.py b/poky/scripts/lib/devtool/upgrade.py index 5a057e95f..24e3700ec 100644 --- a/poky/scripts/lib/devtool/upgrade.py +++ b/poky/scripts/lib/devtool/upgrade.py @@ -71,7 +71,8 @@ def _rename_recipe_dirs(oldpv, newpv, path): if oldfile.find(oldpv) != -1: newfile = oldfile.replace(oldpv, newpv) if oldfile != newfile: - os.rename(os.path.join(path, oldfile), os.path.join(path, newfile)) + bb.utils.rename(os.path.join(path, oldfile), + os.path.join(path, newfile)) def _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path): oldrecipe = os.path.basename(oldrecipe) diff --git a/poky/scripts/lib/wic/help.py b/poky/scripts/lib/wic/help.py index bd3a2b97d..991e5094b 100644 --- a/poky/scripts/lib/wic/help.py +++ b/poky/scripts/lib/wic/help.py @@ -930,6 +930,7 @@ DESCRIPTION ext4 btrfs squashfs + erofs swap --fsoptions: Specifies a free-form string of options to be diff --git a/poky/scripts/lib/wic/ksparser.py b/poky/scripts/lib/wic/ksparser.py index 3eb669da3..7a4cc83af 100644 --- a/poky/scripts/lib/wic/ksparser.py +++ b/poky/scripts/lib/wic/ksparser.py @@ -157,7 +157,8 @@ class KickStart(): part.add_argument('--fsoptions', dest='fsopts') part.add_argument('--fstype', default='vfat', choices=('ext2', 'ext3', 'ext4', 'btrfs', - 'squashfs', 'vfat', 'msdos', 'swap')) + 'squashfs', 'vfat', 'msdos', 'erofs', + 'swap')) part.add_argument('--mkfs-extraopts', default='') part.add_argument('--label') part.add_argument('--use-label', action='store_true') @@ -229,6 +230,10 @@ class KickStart(): err = "%s:%d: SquashFS does not support LABEL" \ % (confpath, lineno) raise KickStartError(err) + # erofs does not support filesystem labels + if parsed.fstype == 'erofs' and parsed.label: + err = "%s:%d: erofs does not support LABEL" % (confpath, lineno) + raise KickStartError(err) if parsed.fstype == 'msdos' or parsed.fstype == 'vfat': if parsed.fsuuid: if parsed.fsuuid.upper().startswith('0X'): diff --git a/poky/scripts/lib/wic/partition.py b/poky/scripts/lib/wic/partition.py index 76d144d12..e0b2c5bdf 100644 --- a/poky/scripts/lib/wic/partition.py +++ b/poky/scripts/lib/wic/partition.py @@ -141,9 +141,9 @@ class Partition(): native_sysroot) self.source_file = "%s/fs.%s" % (cr_workdir, self.fstype) else: - if self.fstype == 'squashfs': - raise WicError("It's not possible to create empty squashfs " - "partition '%s'" % (self.mountpoint)) + if self.fstype in ('squashfs', 'erofs'): + raise WicError("It's not possible to create empty %s " + "partition '%s'" % (self.fstype, self.mountpoint)) rootfs = "%s/fs_%s.%s.%s" % (cr_workdir, self.label, self.lineno, self.fstype) @@ -369,6 +369,16 @@ class Partition(): (rootfs_dir, rootfs, extraopts) exec_native_cmd(squashfs_cmd, native_sysroot, pseudo=pseudo) + def prepare_rootfs_erofs(self, rootfs, cr_workdir, oe_builddir, rootfs_dir, + native_sysroot, pseudo): + """ + Prepare content for a erofs rootfs partition. + """ + extraopts = self.mkfs_extraopts or '' + erofs_cmd = "mkfs.erofs %s -U %s %s %s" % \ + (extraopts, self.fsuuid, rootfs, rootfs_dir) + exec_native_cmd(erofs_cmd, native_sysroot, pseudo=pseudo) + def prepare_empty_partition_ext(self, rootfs, oe_builddir, native_sysroot): """ diff --git a/poky/scripts/lib/wic/plugins/imager/direct.py b/poky/scripts/lib/wic/plugins/imager/direct.py index ea709e8c5..96168aadb 100644 --- a/poky/scripts/lib/wic/plugins/imager/direct.py +++ b/poky/scripts/lib/wic/plugins/imager/direct.py @@ -616,5 +616,5 @@ class PartitionedImage(): part.start + part.size_sec - 1, part.size_sec) partimage = self.path + '.p%d' % part.num - os.rename(source, partimage) + bb.utils.rename(source, partimage) self.partimages.append(partimage) diff --git a/poky/scripts/lib/wic/plugins/source/rawcopy.py b/poky/scripts/lib/wic/plugins/source/rawcopy.py index 3c4997d8b..fa7b1eb8a 100644 --- a/poky/scripts/lib/wic/plugins/source/rawcopy.py +++ b/poky/scripts/lib/wic/plugins/source/rawcopy.py @@ -29,9 +29,9 @@ class RawCopyPlugin(SourcePlugin): cmd = 'btrfs filesystem label %s %s' % (dst, label) elif fstype == 'swap': cmd = 'mkswap -L %s %s' % (label, dst) - elif fstype == 'squashfs': - raise WicError("It's not possible to update a squashfs " - "filesystem label '%s'" % (label)) + elif fstype in ('squashfs', 'erofs'): + raise WicError("It's not possible to update a %s " + "filesystem label '%s'" % (fstype, label)) else: raise WicError("Cannot update filesystem label: " "Unknown fstype: '%s'" % (fstype)) diff --git a/poky/scripts/oe-buildenv-internal b/poky/scripts/oe-buildenv-internal index ba0a9b44d..e0d920f2f 100755 --- a/poky/scripts/oe-buildenv-internal +++ b/poky/scripts/oe-buildenv-internal @@ -88,6 +88,10 @@ if [ ! -d "$BITBAKEDIR" ]; then return 1 fi +# Add BitBake's library to PYTHONPATH +PYTHONPATH=$BITBAKEDIR/lib:$PYTHONPATH +export PYTHONPATH + # Make sure our paths are at the beginning of $PATH for newpath in "$BITBAKEDIR/bin" "$OEROOT/scripts"; do # Remove any existences of $newpath from $PATH diff --git a/poky/scripts/oe-debuginfod b/poky/scripts/oe-debuginfod index 967dd5807..556076988 100755 --- a/poky/scripts/oe-debuginfod +++ b/poky/scripts/oe-debuginfod @@ -20,12 +20,7 @@ if __name__ == "__main__": package_classes_var = "DEPLOY_DIR_" + tinfoil.config_data.getVar("PACKAGE_CLASSES").split()[0].replace("package_", "").upper() feed_dir = tinfoil.config_data.getVar(package_classes_var, expand=True) - try: - if package_classes_var == "DEPLOY_DIR_RPM": - subprocess.check_output(subprocess.run(['oe-run-native', 'elfutils-native', 'debuginfod', '--verbose', '-R', feed_dir])) - else: - subprocess.check_output(subprocess.run(['oe-run-native', 'elfutils-native', 'debuginfod', '--verbose', '-U', feed_dir])) - except subprocess.CalledProcessError: - print("\nTo use the debuginfod server Please ensure that this variable PACKAGECONFIG_pn-elfutils-native = \"debuginfod libdebuginfod\" is set in the local.conf") - except KeyboardInterrupt: - sys.exit(1) + subprocess.call(['bitbake', '-c', 'addto_recipe_sysroot', 'elfutils-native']) + + subprocess.call(['oe-run-native', 'elfutils-native', 'debuginfod', '--verbose', '-R', '-U', feed_dir]) + print("\nTo use the debuginfod server please ensure that this variable PACKAGECONFIG_pn-elfutils-native = \"debuginfod libdebuginfod\" is set in the local.conf") diff --git a/poky/scripts/oe-time-dd-test.sh b/poky/scripts/oe-time-dd-test.sh index 970a86dff..ccdd55e66 100644..100755 --- a/poky/scripts/oe-time-dd-test.sh +++ b/poky/scripts/oe-time-dd-test.sh @@ -13,11 +13,24 @@ usage() { echo "Usage: $0 <count>" } +TIMEOUT=15 + if [ $# -ne 1 ]; then usage exit 1 fi uptime -/usr/bin/time -f "%e" dd if=/dev/zero of=foo bs=1024 count=$1 conv=fsync -top -b -n 1 | grep -v "0 0 0" | grep -E ' [RSD] ' | cut -c 46-47 | sort | uniq -c +timeout ${TIMEOUT} dd if=/dev/zero of=oe-time-dd-test.dat bs=1024 count=$1 conv=fsync +if [ $? -ne 0 ]; then + echo "Timeout used: ${TIMEOUT}" + echo "start: top output" + top -c -b -n1 -w 512 + echo "end: top output" + echo "start: iostat" + iostat -y -z -x 5 1 + echo "end: iostat" + echo "start: cooker log" + tail -30 tmp*/log/cooker/*/console-latest.log + echo "end: cooker log" +fi diff --git a/poky/scripts/pybootchartgui/pybootchartgui/draw.py b/poky/scripts/pybootchartgui/pybootchartgui/draw.py index 53324b9f8..29eb7505b 100644 --- a/poky/scripts/pybootchartgui/pybootchartgui/draw.py +++ b/poky/scripts/pybootchartgui/pybootchartgui/draw.py @@ -271,7 +271,7 @@ def draw_chart(ctx, color, fill, chart_bounds, data, proc_tree, data_range): # If data_range is given, scale the chart so that the value range in # data_range matches the chart bounds exactly. # Otherwise, scale so that the actual data matches the chart bounds. - if data_range: + if data_range and (data_range[1] - data_range[0]): yscale = float(chart_bounds[3]) / (data_range[1] - data_range[0]) ybase = data_range[0] else: diff --git a/poky/scripts/runqemu b/poky/scripts/runqemu index ba0b701af..1f332ef52 100755 --- a/poky/scripts/runqemu +++ b/poky/scripts/runqemu @@ -18,6 +18,7 @@ import shutil import glob import configparser import signal +import time class RunQemuError(Exception): """Custom exception to raise on known errors.""" @@ -145,7 +146,6 @@ class BaseConfig(object): self.qemu_opt = '' self.qemu_opt_script = '' self.qemuparams = '' - self.clean_nfs_dir = False self.nfs_server = '' self.rootfs = '' # File name(s) of a OVMF firmware file or variable store, @@ -210,6 +210,8 @@ class BaseConfig(object): self.qemupid = None # avoid cleanup twice self.cleaned = False + # Files to cleanup after run + self.cleanup_files = [] def acquire_taplock(self, error=True): logger.debug("Acquiring lockfile %s..." % self.taplock) @@ -539,13 +541,13 @@ class BaseConfig(object): def check_kvm(self): """Check kvm and kvm-host""" if not (self.kvm_enabled or self.vhost_enabled): - self.qemu_opt_script += ' %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU')) + self.qemu_opt_script += ' %s %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU'), self.get('QB_SMP')) return if not self.get('QB_CPU_KVM'): raise RunQemuError("QB_CPU_KVM is NULL, this board doesn't support kvm") - self.qemu_opt_script += ' %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU_KVM')) + self.qemu_opt_script += ' %s %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU_KVM'), self.get('QB_SMP')) yocto_kvm_wiki = "https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu" yocto_paravirt_kvm_wiki = "https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM" dev_kvm = '/dev/kvm' @@ -1020,8 +1022,9 @@ class BaseConfig(object): logger.info('Running %s...' % str(cmd)) if subprocess.call(cmd) != 0: raise RunQemuError('Failed to run %s' % cmd) - self.clean_nfs_dir = True self.rootfs = dest + self.cleanup_files.append(self.rootfs) + self.cleanup_files.append('%s.pseudo_state' % self.rootfs) # Start the userspace NFS server cmd = ('runqemu-export-rootfs', 'start', self.rootfs) @@ -1199,11 +1202,14 @@ class BaseConfig(object): tmpfsdir = os.environ.get("RUNQEMU_TMPFS_DIR", None) if self.snapshot and tmpfsdir: newrootfs = os.path.join(tmpfsdir, os.path.basename(self.rootfs)) + "." + str(os.getpid()) + logger.info("Copying rootfs to %s" % newrootfs) + copy_start = time.time() shutil.copyfile(self.rootfs, newrootfs) - #print("Copying rootfs to tmpfs: %s" % newrootfs) + logger.info("Copy done in %s seconds" % (time.time() - copy_start)) self.rootfs = newrootfs # Don't need a second copy now! self.snapshot = False + self.cleanup_files.append(newrootfs) qb_rootfs_opt = self.get('QB_ROOTFS_OPT') if qb_rootfs_opt: @@ -1476,10 +1482,13 @@ class BaseConfig(object): if self.saved_stty: subprocess.check_call(("stty", self.saved_stty)) - if self.clean_nfs_dir: - logger.info('Removing %s' % self.rootfs) - shutil.rmtree(self.rootfs) - shutil.rmtree('%s.pseudo_state' % self.rootfs) + if self.cleanup_files: + for ent in self.cleanup_files: + logger.info('Removing %s' % ent) + if os.path.isfile(ent): + os.remove(ent) + else: + shutil.rmtree(ent) self.cleaned = True diff --git a/poky/scripts/yocto-check-layer b/poky/scripts/yocto-check-layer index b7c83c8b5..44e77b73d 100755 --- a/poky/scripts/yocto-check-layer +++ b/poky/scripts/yocto-check-layer @@ -112,7 +112,7 @@ def main(): % layer['name']) layers.remove(layer) elif layer['type'] == LayerType.ERROR_NO_LAYER_CONF: - logger.error("%s: Don't have conf/layer.conf file."\ + logger.info("%s: Doesn't have conf/layer.conf file, so ignoring"\ % layer['name']) layers.remove(layer) else: @@ -138,6 +138,9 @@ def main(): layer['type'] == LayerType.ERROR_BSP_DISTRO: continue + # Reset to a clean backup copy for each run + shutil.copyfile(bblayersconf + '.backup', bblayersconf) + if check_bblayers(bblayersconf, layer['path'], logger): logger.info("%s already in %s. To capture initial signatures, layer under test should not present " "in BBLAYERS. Please remove %s from BBLAYERS." % (layer['name'], bblayersconf, layer['name'])) |