Compare commits

..

338 Commits

Author SHA1 Message Date
Steve Sakoman
d3b27346c3 build-appliance-image: Update to nanbield head revision
(From OE-Core rev: 0584d01f623e1f9b0fef4dfa95dd66de6cbfb7b3)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-08 04:22:37 -10:00
Steve Sakoman
17635c5e4d poky.conf: bump version for 4.3.3 release
(From meta-yocto rev: 65524b4d23cba2d57e7146942fa23ff74d9c7738)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-08 03:47:53 -10:00
Michael Opdenacker
12bfafb9e7 release-notes-4.3: fix spacing
This fixes an ugly formatting issue in the HTML output

(From yocto-docs rev: dde4b815db82196af086847f68ee27d7902b4ffa)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-08 03:47:53 -10:00
Baruch Siach
167d294de3 contributor-guide: fix lore URL
Cc: Michael Opdenacker <michael.opdenacker@bootlin.com>
(From yocto-docs rev: d044e01369666d3d48250661afc6b825b513d99e)

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-08 03:47:53 -10:00
Simone Weiß
6c40f9c1ef dev-manual: gen-tapdevs need iptables installed
Add the hint to the test setup that runqemu-gen-tapdevs will need the
iptables package installed.

(From yocto-docs rev: 368bacc10a18100ef721c477b5d0abc5184eef91)

Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-08 03:47:53 -10:00
Khem Raj
6d6ccbca0c tcl: Fix prepending to run-ptest script
This ensures that string is prepended properly and eclosed in ''
Fixes the ptest runs on musl

(From OE-Core rev: 5f49d4c3f528c1e9a2884cc9cc8026b5d43517f9)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7bb45591f9caa7ff6b065220927a26e8261e2866)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Yang Xu
9724d9822c rootfs.py: check depmodwrapper execution result
The execution result of depmodwrapper is not checked which makes depmod
generation failed sliently and hard to detect.

So check exection result and stop building if depmodwrapper failed.

(From OE-Core rev: 2d8e913e2bfbb4ccbdf3eb747aab46fc38cf23e7)

Signed-off-by: Yang Xu <yang.xu@mediatek.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 2f88e7d331390c6aaecc4522253e24791aec299e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Rodrigo M. Duarte
2d7fe81f8e linux-firmware: Fix the linux-firmware-bcm4373 FILES variable
This commit includes the 'cyfmac4373-sdio.clm_blob' file in
the list of files for the linux-firmware-bcm4373 package.
Without this file, the linux-firmware package adds all
firmware packages to the image.

(From OE-Core rev: 205b3990fe23dc05689ef619a4607e8903ebbec6)

Signed-off-by: Rodrigo M. Duarte <rodrigo.duarte@ossystems.com.br>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 7886d3b77200e4488393fa11c8198658fcf386cd)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Alexander Kanavin
90600c8168 icon-naming-utils: take tarball from debian
Upstream website has disappeared; the tarball can still be downloaded
but this is probably not for long.

(From OE-Core rev: 12cb5cce1cad02125fbf695e0d94010535cf228a)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit af59c518467d1174d1d63594fdd3279a2fdbd8f8)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Ming Liu
d94ab548b0 qemu.bbclass: fix a python TypeError
QEMU_OPTIONS can be empty which will trigger a exception TypeError:
| can only concatenate str (not "NoneType") to str. Fix it by setting a
empty string.

ALso removed two useless blanks.

(From OE-Core rev: 3ccc642bb36373e81d80d41b4f213328c7bfb9cb)

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit b619197bd52a4a99a9989e7ea6fb7032415b1e42)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
William Lyu
801c3f25cc elfutils: Update license information
Update license information for overall package, package libraries, and
package utilities in the recipe to match the license information as
described on the upstream website [1]:

"License. The libraries and backends are dual GPLv2+/LGPLv3+. The
utilities are GPLv3+."

[1] https://sourceware.org/elfutils

(From OE-Core rev: d0e082b8303ad9591983c95d19a199c8d22942da)

Signed-off-by: William Lyu <William.Lyu@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit c0728805f24cbd6a788871ae54af4ec8307e40d4)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Ming Liu
67c359b259 grub: fs/fat: Don't error when mtime is 0
A issue was found when I run "runqemu genericx86-64 ovmf", grub failed
to boot, it's a known issue has been fixed in grub upstream, backport
the fix.

(From OE-Core rev: 10f783721decaec06e87dd7a140ea16f12b97539)

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 51eab4bb0cae46c9c32d28986eb97badf47594b7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Alexander Kanavin
e513d20afd glibc-y2038-tests: do not run tests using 32 bit time APIs
I'm not sure why this was included and enabled to begin with: the tests
predictably mass-fail if system time is set to after y2038.

(From OE-Core rev: 3d04849c741baeddd0677a18a468603b7112139d)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit c9c7ebd6e447bce19803253afd881854f686b5f6)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Trevor Gamblin
89b80f507f scripts/runqemu: fix regex escape sequences
When invoking runqemu with Python 3.12, the following warning is
encountered:

|SyntaxWarning: invalid escape sequence '\.'

This is because the interpreter scans the string before it is processed
by the regex module, and it interprets the backslash as part of an
escape sequence, but not a standard one. This will be registered as an
error rather than a warning in future Python versions. To avoid the it,
simply add an extra backslash so that Python doesn't misinterpret the
string, while the regex parser still sees an escaped '.' character.

(From OE-Core rev: 145672043d6d75a9e5a03afb4c205e8008218a3b)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 0e8a4142bb90a92d175df6b2537d24a372356f98)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Richard Purdie
84d3e21ba8 curl: Disable test 1091 due to intermittent failures
Disable another test that intermittently fails on the autobuilder.

(From OE-Core rev: 7c183e7470565db3085b4f18044567fc51c842ab)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8d169e13f7e2eb6511f0ac98da63b060c6c0d53a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Peter Marko
51e2259697 sqlite: drop obsolete CVE ignore
CVE-2023-36191 is now rejected in NVD DB so it won't shoup up in
cve-check report anymore.

(From OE-Core rev: 362a77ea331124ae4c84553c0dceb06b05150804)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Peter Marko
8c33b62fa8 sqlite3: upgrade 3.43.1 -> 3.43.2
This fixes CVE-2024-0232

(From OE-Core rev: 748c18468cc7de0173ab4796805704b9376cd391)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Wang Mingyu
138f0acae3 aspell: upgrade 0.60.8 -> 0.60.8.1
CVE-2019-25051.patch
removed since it's included in 0.60.8.1

Changelog:
============
-Fix memory leak in suggestion code introduced in 0.60.8.
-Various documentation fixes.
-Fix various warnings when compiling with -Wall.
-Fix two buffer overflows found by Google's OSS-Fuzz.
-Other minor updates.

(From OE-Core rev: 1d7ab8b0bc129efadd9144b87fa5208b4a8fcd6c)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ec3c8642f71b470936b6dd29331afa467ab865c7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Wang Mingyu
c84022a1ad gstreamer1.0: upgrade 1.22.7 -> 1.22.8
From release notes:

1.22 bug-fix release (1.22.8) was released on 18 December 2023.

This release only contains bugfixes and security fixes and it should be safe to update from 1.22.x.

(From OE-Core rev: 7d43da3f6f83d9a58a3bc54e55fefd591274afca)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 132d8b7e0188aae8849ae43cfffabce4389a55df)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Simone Weiß
6981794ff8 glibc: Set status for CVE-2023-5156 & CVE-2023-0687
Set `CVE_STATUS`for those CVEs, they have already been fixed with the latest
pull for stable branch fixes done in rev
e444d2bed0. Hence the issues are fixed
already.

(From OE-Core rev: a7b92c9c675c2c111e0b41121c1232b2e79de4ea)

Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 6e6fe23c95f1d0a8a0503cb71557cf3272bf9945)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Alassane Yattara
94b73c33d5 bitbake: toaster/toastergui: Bug-fix verify given layer path only if import/add local layer
(Bitbake rev: 380a9ac97de5774378ded5e37d40b79b96761a0c)

Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-02-07 04:00:02 -10:00
Lee Chee Yang
cf9b37dfd0 migration-guide: add release notes for 4.0.16
(From yocto-docs rev: 81b75961edeb120345c5176dd97e2c9dabe6e4ed)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Saul Wold
17b8581413 package.py: OEHasPackage: Add MLPREFIX to packagename
FIXES [YOCTO #12342]

When testing a Multilib image, the package manifest list contains
the fully qualified package name which includes the Multilib Prefix.
This patch adds the MLPREFIX to the package names that are passed
into the @OEHasPackage() decorator to ensure the set isdisjoint()
matches correctly.

(From OE-Core rev: a27983e0b6bde730fe501c9931119bf18b2c376b)

Signed-off-by: Saul Wold <sgw@bigsur.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit ab87e4f92305b2a664cc473869e1615cf56e0936)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Richard Purdie
11fbbbf59a oeqa/selftest/prservice: Improve test robustness
The tests were not cleaning up after themselves and making assumptions about
memory resident bitbake being stopped by the scripts.

Add cleanup logic to ensure the tests don't break other things and
clean up created files.

(From OE-Core rev: 81d7011a793de2548c573ebb84f60fb80a357bed)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 692dd762a0c817797c28381c6169205fbaeb2705)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Richard Purdie
f890240f06 lib/prservice: Improve lock handling robustness
It is possible we could crash holding a lock whilst parsing in this code.
Switch to use utils.fileslocked() in the with expression to avoid this.

This may be causing some of our strange intermittent failures in PRServ
tests.

(From OE-Core rev: 4e3c9526c2389fd08d86d986014313e1d404f1fb)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 4e59db15e5df2cc3d0ae042454812a2d54cef77b)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Joshua Watt
8de5dd79c0 classes-global/sstate: Fix variable typo
The vardepsexclude was subtly wrong in that it referenced STATE_MANMACH
when the actual variable name is SSTATE_MANMACH.

(From OE-Core rev: a681f90caec27d4076bdae3b5b19df2d7f5978cd)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ec5054396f7fafea2a071d2695ae111fc585d6e6)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Robert Berger
1a44cbee81 uninative-tarball.xz - reproducibility fix
added --clamp-mtime --mtime to the tar command

see:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=15148

(From OE-Core rev: 3dabf663a772b49e2f324ce5e875d6e633384559)

Signed-off-by: Robert Berger <Robert.Berger@ReliableEmbeddedSystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2ef7c63871ab4fb62a9cea45a23a78bf9d541e4a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Soumya Sambu
5afcce0022 ncurses: Fix - tty is hung after reset
Serial tty is hung after reset command -
$echo "test " >> /dev/ttyS0
test
$stty -a < /dev/ttyS0
speed 115200 baud; rows 34; columns 153; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
$reset
$echo "test " >> /dev/ttyS0
^C
$stty -a < /dev/ttyS0
^C

Updating reset_tty_settings API with latest code which fixes tty hung issue

(From OE-Core rev: 53939c1f4bcf8c32ed648ddf5150aee11ca3215b)

Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2419afd8024f903efff862f3f7f7772aedea7613)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Clay Chang
090c0e8445 devtool: deploy: provide max_process to strip_execs
Use oe.utils.get_bb_number_threads to get max_process

(From OE-Core rev: 162607e3f7fd490c4b01775a9516a1bcf643eae6)

Signed-off-by: Clay Chang <clayc@hpe.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f0056dca0a44c374f1f0c5fccbf66ae88e0b1850)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Richard Purdie
c6def80c31 curl: Disable two intermittently failing tests
These two tests seem to fail semi-regularly so just stop running them.

(From OE-Core rev: aa52e8fe6f53c5e3e5466385b683ea209d833845)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 1bfa564f1aa8b865f6c3ae3501e6d5f6cc0542eb)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Peter Marko
01017ff17d dtc: preserve version also from shallow git clones
Since switch from Makefile to meson based build,
the version is no longer hardcoded but queried from git tag.

This works only if git history is available.
When shallow tarballs are used, tag is not available.

Example error for trusted-firmware-a from meta-arm:
dtc version too old (039a994), you need at least version 1.4.4

Backport also patch to fix version in meson file.

(From OE-Core rev: a77defdac80d4cc660d6b6677bc166a1d1d338b5)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 319f5d8a32d1f4a71ac997ce4522249b08f84945)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Mingli Yu
ba6a6eb13e python3-license-expression: Fix the ptest failure
Fix the below ptest failure:
 self = <test_skeleton_codestyle.BaseTests testMethod=test_skeleton_codestyle>
 def test_skeleton_codestyle(self):
 """
 This test shouldn't run in proliferated repositories.
 """
 setup_cfg = configparser.ConfigParser()
 setup_cfg.read("setup.cfg")
 > if setup_cfg["metadata"]["name"] != "skeleton":
 tests/test_skeleton_codestyle.py:22:
 self = <configparser.ConfigParser object at 0x7fd87cf55110>, key = 'metadata'
 def _getitem_(self, key):
 if key != self.default_section and not self.has_section(key):
 > raise KeyError(key)
 E KeyError: 'metadata'

After the patch:
 # ./run-ptest
 [snip]
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_bad_syntax
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_as_regular_key
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_with_choice
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception_strict_false
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_key
 PASS: tests/test_license_expression.py::UtilTest::test_build_licensing
 PASS: tests/test_license_expression.py::UtilTest::test_build_spdx_licensing
 PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info
 PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info_vendored
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_duplicated_elements
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_empty_input
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_or_relationship
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_regular
 PASS: tests/test_skeleton_codestyle.py::BaseTests::test_skeleton_codestyle
============================================================================
Testsuite summary
 # TOTAL: 175
 # PASS: 175
 # SKIP: 0
 # XFAIL: 0
 # FAIL: 0
 # XPASS: 0

(From OE-Core rev: f69530a3b86b512c5c60da4da34fc287ff0d1366)

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>

Changed in v4:
Add python3-license-expression to PTESTS_FAST

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 6b06ad7a9f1dd5900483102f5723a6821f961dab)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Robert Yang
60f7c83994 nfs-utils: Update Upstream-Status
Update Upstream-Status for 0001-reexport.h-Include-unistd.h-to-compile-with-musl.patch.

(From OE-Core rev: 2323086931f2abd9b85fc1ec94b6b0d3efd6364a)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7189d1ea5c066b9ffc52103160bb34945fd779d7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
96ceab7e0c linux-yocto/6.1: update CVE exclusions
Data pulled from: https://github.com/nluedtke/linux_kernel_cves

    1/1 [
        Author: Nicholas Luedtke
        Email: nicholas.luedtke@uwalumni.com
        Subject: Update 15Jan24
        Date: Mon, 15 Jan 2024 12:48:45 -0500

    ]

(From OE-Core rev: dfd3c5c6fbe2cd3b0723879bd2b6574eb59a5860)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 74bf102eb4ae7377527a146e3db1d9ee1da1f2da)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
252dd4cf25 linux-yocto/6.1: update to v6.1.73
Updating linux-yocto/6.1 to the latest korg -stable release that comprises
the following commits:

    fec3b1451d5f Linux 6.1.73
    f9ee31dc7fcd cifs: fix flushing folio regression for 6.1 backport
    0f22c8a6efe6 ipv6: remove max_size check inline with ipv4
    b2c545c39877 Revert "nfsd: separate nfsd_last_thread() from nfsd_put()"
    db5f2f4db8b7 Revert "nfsd: call nfsd_last_thread() before final nfsd_put()"

(From OE-Core rev: 84a86b91de33a048b8a4aafacb051c9dbc3abbca)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 27004956fb5ce3d4c2a48e64681b743763641f04)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
38da774fe8 linux-yocto/6.1: security/cfg: add configs to harden protection
Integrating the following commit(s) to linux-yocto/.:

1/1 [
    Author: Xiangyu Chen
    Email: xiangyu.chen@windriver.com
    Subject: feature/security: add configs to harden protection
    Date: Tue, 16 Jan 2024 18:22:31 +0800

    Add some configs to harden protection:
      CONFIG_HW_RANDOM_TPM=y Exposing the TPM's Random Number Generator as a hwrng device.
      CONFIG_DEBUG_WX=y Warn on W+X mappings at boot.
      CONFIG_SECURITY_DMESG_RESTRICT=y Restrict unprivileged access to the kernel syslog.
      CONFIG_LDISC_AUTOLOAD=n Disable automatically load TTY Line Disciplines.

    Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: 6ee7b17677a39302bd14acbc2a4bfe5cb247f32e)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 33d3dd8f5469cb0b2999d7f935378899d447b3ce)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
3f65155a06 linux-yocto/6.1: update CVE exclusions
Data pulled from: https://github.com/nluedtke/linux_kernel_cves

    1/1 [
        Author: Nicholas Luedtke
        Email: nicholas.luedtke@uwalumni.com
        Subject: Update 27Dec23
        Date: Wed, 27 Dec 2023 19:47:13 -0500

    ]

(From OE-Core rev: 8960ae115972015de0176ceb202c4996f5a03c75)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit c16ed90dae1f1954b582c4fb6783fca7e3171af3)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
434ebe75c3 linux-yocto/6.1: update to v6.1.72
Updating linux-yocto/6.1 to the latest korg -stable release that comprises
the following commits:

    7c58bfa711cb Linux 6.1.72
    2dbe25ae06e6 Revert "interconnect: qcom: sm8250: Enable sync_state"
    f73a374c1969 smb3: Replace smb2pdu 1-element arrays with flex-arrays
    ec162546a733 media: qcom: camss: Comment CSID dt_id field
    a5c3f2b4cee7 bpf: syzkaller found null ptr deref in unix_bpf proto add
    15db682980fc bpf: Fix a verifier bug due to incorrect branch offset comparison with cpu=v4
    7cbdf36eabf3 net/sched: act_ct: Always fill offloading tuple iifidx
    2be4e8ac2d16 net/sched: act_ct: additional checks for outdated flows
    87318b7e374c f2fs: compress: fix to assign compress_level for lz4 correctly
    397f719037c2 genirq/affinity: Only build SMP-only helper functions on SMP kernels
    28c9222e29e5 mmc: sdhci-sprd: Fix eMMC init failure after hw reset
    2813a434d461 mmc: core: Cancel delayed work before releasing host
    575e127041f2 mmc: rpmb: fixes pause retune on all RPMB partitions.
    9c5efaa09b31 mmc: meson-mx-sdhc: Fix initialization frozen issue
    48e1d426f452 drm/amd/display: add nv12 bounding box
    11c3510d1d4d drm/amdgpu: skip gpu_info fw loading on navi12
    dafdeb7b91f1 mm: fix unmap_mapping_range high bits shift bug
    08038069c237 i2c: core: Fix atomic xfer check for non-preempt config
    53b42cb33fb1 x86/kprobes: fix incorrect return address calculation in kprobe_emulate_call_indirect
    d1db1ef5e633 firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards
    09a44d994bfe ring-buffer: Fix 32-bit rb_time_read() race with rb_time_cmpxchg()
    820a7802f25a btrfs: mark the len field in struct btrfs_ordered_sum as unsigned
    ab220f4f5c70 btrfs: fix qgroup_free_reserved_data int overflow
    0f74dde5be2c octeontx2-af: Support variable number of lmacs
    7d3912613d5b octeontx2-af: Fix pause frame configuration
    a29b15cc68a6 net/sched: act_ct: Take per-cb reference to tcf_ct_flow_table
    2bb4ecb3349c netfilter: flowtable: GC pushes back packets to classic path
    df01de08b411 net/sched: act_ct: Fix promotion of offloaded unreplied tuple
    87466a374571 net/sched: act_ct: offload UDP NEW connections
    8b160f2fba77 netfilter: flowtable: cache info of last offload
    c29a7656f8a2 netfilter: flowtable: allow unidirectional rules
    e681f711e9e8 net: sched: call tcf_ct_params_free to free params in tcf_ct_init
    d49bf9c1ceb3 mm/memory_hotplug: fix error handling in add_memory_resource()
    4666f003afff mm/memory_hotplug: add missing mem_hotplug_lock
    a576780a2a66 lib/group_cpus.c: avoid acquiring cpu hotplug lock in group_cpus_evenly
    f33b27f5c3de genirq/affinity: Move group_cpus_evenly() into lib/
    617ba3735d3b genirq/affinity: Rename irq_build_affinity_masks as group_cpus_evenly
    aeeb4e4e49f8 genirq/affinity: Don't pass irq_affinity_desc array to irq_build_affinity_masks
    9e84d7bb1505 genirq/affinity: Pass affinity managed mask array to irq_build_affinity_masks
    a1dcd1794730 genirq/affinity: Remove the 'firstvec' parameter from irq_build_affinity_masks
    f4fe76467e7b ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7
    aee609302d65 firmware: arm_scmi: Fix frequency truncation by promoting multiplier type
    90d1f74c3cf6 bpf, sockmap: af_unix stream sockets need to hold ref for pair sock
    5ff1682fec18 ethtool: don't propagate EOPNOTSUPP from dumps
    e570b1508753 dpaa2-eth: recycle the RX buffer only after all processing done
    5b8938fc7d00 net: dpaa2-eth: rearrange variable in dpaa2_eth_get_ethtool_stats
    e88275ce7e7b smb: client: fix missing mode bits for SMB symlinks
    bf223fd4d914 block: update the stable_writes flag in bdev_add
    a8e4300ae58d filemap: add a per-mapping stable writes flag
    d0eafc763135 mm, netfs, fscache: stop read optimisation when folio removed from pagecache
    bceff380f361 mm: merge folio_has_private()/filemap_release_folio() call pairs
    8b6b3ecf0c13 memory-failure: convert truncate_error_page() to use folio
    a6f440f3b956 khugepage: replace try_to_release_page() with filemap_release_folio()
    4c78612e5fbc ext4: convert move_extent_per_page() to use folios
    b92a8f591ca8 media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3
    710f70555d5b media: camss: sm8250: Virtual channels for CSID
    c96a4f936008 selftests: mptcp: set FAILING_LINKS in run_tests
    4b85e920afc8 selftests: mptcp: fix fastclose with csum failure
    336d1ee07efb f2fs: set the default compress_level on ioctl
    1ff3f5ef284b f2fs: assign default compression level
    55d3f41e5583 f2fs: convert to use bitmap API
    84a8d913fb53 f2fs: clean up i_compress_flag and i_compress_level usage
    2c14f4991610 s390/cpumf: support user space events for counting
    a1a1e5ce88a7 s390/mm: add missing arch_set_page_dat() call to vmem_crst_alloc()
    31051f722db2 net/mlx5: Increase size of irq name buffer
    b5c8e0ff76d1 blk-mq: make sure active queue usage is held for bio_integrity_prep()
    803fb6109fcf bpf: fix precision backtracking instruction iteration
    b08acd5c4602 bpf: handle ldimm64 properly in check_cfg()
    2c795ce09042 bpf: Support new 32bit offset jmp instruction
    b1c780ed3c22 bpf: clean up visit_insn()'s instruction processing
    97bb6dab0172 bpf: Remove unused insn_cnt argument from visit_[func_call_]insn()
    8266c47d04b2 bpf: remove unnecessary prune and jump points
    743f3548d301 bpf: decouple prune and jump points
    eb4f2e17886a fbdev: imsttfb: fix double free in probe()
    f2a79f3651a5 fbdev: imsttfb: Release framebuffer and dealloc cmap on error path
    51a1b943022f arm64: dts: qcom: sdm845: Fix PSCI power domain names
    5db8b93cbe2d arm64: dts: qcom: sdm845: align RPMh regulator nodes with bindings
    343bb27e3152 wifi: iwlwifi: yoyo: swap cdb and jacket bits values
    158b71f3a9fa udp: annotate data-races around udp->encap_type
    8d929b6c1114 udp: lockless UDP_ENCAP_L2TPINUDP / UDP_GRO
    b680a907d17c udp: move udp->accept_udp_{l4|fraglist} to udp->udp_flags
    753886c0b994 udp: move udp->gro_enabled to udp->udp_flags
    a01cff15ccdc udp: move udp->no_check6_rx to udp->udp_flags
    50e41aa9ea0d udp: move udp->no_check6_tx to udp->udp_flags
    e2a4392b61f6 udp: introduce udp->udp_flags
    2489502fb1f5 ipv4, ipv6: Use splice_eof() to flush
    4713b7c7568b splice, net: Add a splice_eof op to file-ops and socket-ops
    ac8c69e448f7 udp: Convert udp_sendpage() to use MSG_SPLICE_PAGES
    6bcc79a4e760 net: Declare MSG_SPLICE_PAGES internal sendmsg() flag
    89b51e70e5e3 bpf, x86: save/restore regs with BPF_DW size
    4ee461c5dc99 bpf, x86: Simplify the parsing logic of structure parameters
    605c8d8f9966 bpf, x64: Fix tailcall infinite loop
    5573fdbc3423 srcu: Fix callbacks acceleration mishandling
    abc3e3fb71a5 cpu/SMT: Make SMT control more robust against enumeration failures
    482fa21635c8 cpu/SMT: Create topology_smt_thread_allowed()
    a364c18553d0 selftests: secretmem: floor the memory size to the multiple of page_size
    c38c5cfd3ed7 net: Implement missing SO_TIMESTAMPING_NEW cmsg support
    14937f47a48f bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters()
    55fbcd83aaca net: ravb: Wait for operating mode to be applied
    8a09b0f01c40 asix: Add check for usbnet_get_endpoints
    db9c4a1f37ee octeontx2-af: Re-enable MAC TX in otx2_stop processing
    b67e7d78e48a octeontx2-af: Always configure NIX TX link credits based on max frame size
    84c3833a93bb net/smc: fix invalid link access in dumping SMC-R connections
    0af75845ff5e net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues
    9b0504292237 igc: Fix hicredit calculation
    7663226274af i40e: Restore VF MSI-X state during PCI reset
    5735f529e318 ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux
    8719838c126a ASoC: meson: g12a-toacodec: Fix event generation
    5de3c8496e77 ASoC: meson: g12a-tohdmitx: Validate written enum values
    95b4d4093ac0 ASoC: meson: g12a-toacodec: Validate written enum values
    2f3b6e8600c9 i40e: fix use-after-free in i40e_aqc_add_filters()
    72fa66177859 net: Save and restore msg_namelen in sock_sendmsg
    81f8a995ebc8 netfilter: nft_immediate: drop chain reference counter on error
    bb1bf97fa187 net: bcmgenet: Fix FCS generation for fragmented skbuffs
    e75715e1c2e5 sfc: fix a double-free bug in efx_probe_filters
    725d44e49fb5 ARM: sun9i: smp: Fix array-index-out-of-bounds read in sunxi_mc_smp_init
    85f6fae44bba selftests: bonding: do not set port down when adding to bond
    3edd66bd4e42 net: Implement missing getsockopt(SO_TIMESTAMPING_NEW)
    ac5fde92b510 net: annotate data-races around sk->sk_bind_phc
    c48fcb4f4906 net: annotate data-races around sk->sk_tsflags
    5d586f7ca0fc net-timestamp: extend SOF_TIMESTAMPING_OPT_ID to HW timestamps
    b2130366a952 can: raw: add support for SO_MARK
    633a49e34b32 r8169: Fix PCI error on system resume
    565460e180d9 net: sched: em_text: fix possible memory leak in em_text_destroy()
    ac5cbe931c43 mlxbf_gige: fix receive packet race condition
    6d7f45492706 ASoC: mediatek: mt8186: fix AUD_PAD_TOP register and offset
    811604fb02c4 ASoC: fsl_rpmsg: Fix error handler with pm_runtime_enable
    c3a37dc15685 igc: Check VLAN EtherType mask
    6edff0b8381c igc: Check VLAN TCI mask
    d27b98f4aeae igc: Report VLAN EtherType matching back to user
    e76d1913f6a8 i40e: Fix filter input checks to prevent config with invalid values
    188c9970d05e ice: Shut down VSI with "link-down-on-close" enabled
    83b80170b7fa ice: Fix link_down_on_close message
    f3f6a23e054c drm/i915/dp: Fix passing the correct DPCD_REV for drm_dp_set_phy_test_pattern
    6cf7235bc1fb octeontx2-af: Fix marking couple of structure as __packed
    a4b0a9b80a96 nfc: llcp_core: Hold a ref to llcp_local->dev when holding a ref to llcp_local
    282e3fb61285 netfilter: nf_tables: set transport offset from mac header for netdev/egress
    9487cc4c90fb netfilter: use skb_ip_totlen and iph_totlen
    5f523f1beb46 drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer
    3da4868907da wifi: iwlwifi: pcie: don't synchronize IRQs from IRQ
    493d556278a3 KVM: x86/pmu: fix masking logic for MSR_CORE_PERF_GLOBAL_CTRL
    3152a7d361c6 cifs: do not depend on release_iface for maintaining iface_list
    5982a625fc0d cifs: cifs_chan_is_iface_active should be called with chan_lock held
    4afcb82518b9 drm/mgag200: Fix gamma lut not initialized for G200ER, G200EV, G200SE
    b9c370b61d73 Revert "PCI/ASPM: Remove pcie_aspm_pm_state_change()"
    af9a5307656d mptcp: prevent tcp diag from closing listener subflows
    105063f7f441 ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP ProBook 440 G6
    0fa3cf2d151e ALSA: hda/realtek: fix mute/micmute LEDs for a HP ZBook
    beda900d3aaf ALSA: hda/realtek: enable SND_PCI_QUIRK for hp pavilion 14-ec1xxx series
    9539e3b56e0d block: Don't invalidate pagecache for invalid falloc modes
    079eefaecfd7 keys, dns: Fix missing size check of V1 server-list header
    38fb82ecd144 Linux 6.1.71
    74c4c7d57cf2 Revert "platform/x86: p2sb: Allow p2sb_bar() calls during PCI device probe"
    7709b16bdbd5 tracing/kprobes: Fix symbol counting logic by looking at modules as well
    9dd295341dc1 kallsyms: Make module_kallsyms_on_each_symbol generally available
    29cb16577189 device property: Allow const parameter to dev_fwnode()
    e7b04372179e spi: Constify spi parameters of chip select APIs
    f9a01938e079 NFSD: fix possible oops when nfsd/pool_stats is closed.
    899ac41804d8 ring-buffer: Fix slowpath of interrupted event
    0105571f80ed netfilter: nf_tables: skip set commit for deleted/destroyed sets
    4768430d5a69 ring-buffer: Remove useless update to write_stamp in rb_try_to_discard()
    f33c4e4cabce tracing: Fix blocked reader of snapshot buffer
    09640899e6b7 ring-buffer: Fix wake ups when buffer_percent is set to 100
    4ee9d9291b95 mm/memory-failure: check the mapcount of the precise page
    fb21c9780a31 mm/memory-failure: cast index to loff_t before shifting it
    be72d197b228 mm: migrate high-order folios in swap cache correctly
    a8df791470fb mm/filemap: avoid buffered read/write race to read inconsistent data
    b954b92ef08f platform/x86: p2sb: Allow p2sb_bar() calls during PCI device probe
    7a3bbbadac4b ksmbd: fix slab-out-of-bounds in smb_strndup_from_utf16()
    b9c5f0fd5cd5 block: renumber QUEUE_FLAG_HW_WC
    e21b5fc5b887 spi: atmel: Fix clock issue when using devices with different polarities
    025cf65f68d4 spi: Add APIs in spi core to set/get spi->chip_select and spi->cs_gpiod
    64a4eb2982db spi: Reintroduce spi_set_cs_timing()
    95e21657ffe9 linux/export: Ensure natural alignment of kcrctab array
    bb4f791cb2de nfsd: call nfsd_last_thread() before final nfsd_put()
    03d68ffc48b9 nfsd: separate nfsd_last_thread() from nfsd_put()
    481561a431ff iio: imu: adis16475: add spi_device_id table
    027eaeaf3294 spi: Introduce spi_get_device_match_data() helper
    457a219c8453 usb: fotg210-hcd: delete an incorrect bounds test
    119127273b5d ARM: dts: Fix occasional boot hang for am3 usb
    98235bc13aa8 ksmbd: fix wrong allocation size update in smb2_open()
    04b8e04f8f89 ksmbd: avoid duplicate opinfo_put() call on error of smb21_lease_break_ack()
    34f7d5b5c972 ksmbd: lazy v2 lease break on smb2_write()
    500c7a5e9af8 ksmbd: send v2 lease break notification for directory
    1993959460c0 ksmbd: downgrade RWH lease caching state to RH for directory
    2fcb46df3460 ksmbd: set v2 lease capability
    3eddc811a7c8 ksmbd: set epoch in create context v2 lease
    52a32eafd0a5 ksmbd: don't update ->op_state as OPLOCK_STATE_NONE on error
    0bc46c2370ee ksmbd: move setting SMB2_FLAGS_ASYNC_COMMAND and AsyncId
    d9aa5c19084e ksmbd: release interim response after sending status pending response
    013bf453af0d ksmbd: move oplock handling after unlock parent dir
    20dd92c23756 ksmbd: separately allocate ci per dentry
    d5651972e5c5 ksmbd: fix possible deadlock in smb2_open
    aabc944ebf08 ksmbd: prevent memory leak on error return
    b4a269bb89dd ksmbd: fix kernel-doc comment of ksmbd_vfs_kern_path_locked()
    699ad8d03cc5 ksmbd: no need to wait for binded connection termination at logoff
    3cf44550814c ksmbd: add support for surrogate pair conversion
    d26e024a5ead ksmbd: fix missing RDMA-capable flag for IPoIB device in ksmbd_rdma_capable_netdev()
    5113f7222554 ksmbd: fix recursive locking in vfs helpers
    42e56982bed1 ksmbd: fix kernel-doc comment of ksmbd_vfs_setxattr()
    533e6dc4469f ksmbd: reorganize ksmbd_iov_pin_rsp()
    1d95c5a54184 ksmbd: Remove unused field in ksmbd_user struct
    5929e98f3bb7 ksmbd: fix potential double free on smb2_read_pipe() error path
    a7aae713eaf2 ksmbd: fix Null pointer dereferences in ksmbd_update_fstate()
    943cebf9ea34 ksmbd: fix wrong error response status by using set_smb2_rsp_status()
    7b58ee8d0b91 ksmbd: fix race condition between tree conn lookup and disconnect
    0090f0bfc225 ksmbd: fix race condition from parallel smb2 lock requests
    6584ca894f30 ksmbd: fix race condition from parallel smb2 logoff requests
    b3a843caed29 ksmbd: fix race condition with fp
    7345f5dbf66d ksmbd: check iov vector index in ksmbd_conn_write()
    8beae8a0a065 ksmbd: return invalid parameter error response if smb2 request is invalid
    e523a26c0567 ksmbd: fix passing freed memory 'aux_payload_buf'
    b4b3fd1a95b4 ksmbd: remove unneeded mark_inode_dirty in set_info_sec()
    1ee419e08fa1 ksmbd: remove experimental warning
    83b01f7330d7 ksmbd: add missing calling smb2_set_err_rsp() on error
    422c0cd01693 ksmbd: Fix one kernel-doc comment
    c20105a8975c ksmbd: fix `force create mode' and `force directory mode'
    f8cf1ebb7de6 ksmbd: fix wrong interim response on compound
    9f297df20d93 ksmbd: add support for read compound
    673e60c69124 ksmbd: switch to use kmemdup_nul() helper
    0a9b91f45e88 ksmbd: check if a mount point is crossed during path lookup
    d782f42eed93 ksmbd: Fix unsigned expression compared with zero
    48cc49384048 ksmbd: Replace one-element array with flexible-array member
    63fbfd212c82 ksmbd: Use struct_size() helper in ksmbd_negotiate_smb_dialect()
    e7ab53bd81b0 ksmbd: Replace the ternary conditional operator with min()
    143da652cee8 ksmbd: use kvzalloc instead of kvmalloc
    de43cdaa88c2 ksmbd: Change the return value of ksmbd_vfs_query_maximal_access to void
    deb79f20be21 ksmbd: return a literal instead of 'err' in ksmbd_vfs_kern_path_locked()
    fe7977b872a6 ksmbd: use kzalloc() instead of __GFP_ZERO
    294a275f374b ksmbd: remove unused ksmbd_tree_conn_share function
    b069977b2b47 ksmbd: add mnt_want_write to ksmbd vfs functions
    13a5045011ec ksmbd: fix posix_acls and acls dereferencing possible ERR_PTR()
    1524884c3efb ksmbd: call putname after using the last component
    30a1344198aa ksmbd: fix uninitialized pointer read in smb2_create_link()
    6d4e21e369f3 ksmbd: fix uninitialized pointer read in ksmbd_vfs_rename()
    6927ffe7479c ksmbd: fix racy issue from using ->d_parent and ->d_name
    6e99fbb4296a fs: introduce lock_rename_child() helper
    965eb8650737 ksmbd: remove unused compression negotiate ctx packing
    49d9f6ad1ee0 ksmbd: avoid duplicate negotiate ctx offset increments
    2182d96ec0b7 ksmbd: set NegotiateContextCount once instead of every inc
    8d271ef5e5ca ksmbd: delete asynchronous work from list
    4ef3fd2f85bb ksmbd: remove unused is_char_allowed function
    226aaaa59365 ksmbd: Fix parameter name and comment mismatch
    e8c49f9364c5 ksmbd: Fix spelling mistake "excceed" -> "exceeded"
    ada8bcc48acd ksmbd: update Kconfig to note Kerberos support and fix indentation
    5c0306b0abcd ksmbd: Remove duplicated codes
    b6502c34cf30 ksmbd: fix typo, syncronous->synchronous
    052b41ef2abe ksmbd: Implements sess->rpc_handle_list as xarray
    264547e13f80 ksmbd: Convert to use sysfs_emit()/sysfs_emit_at() APIs
    87ffbb9e24ba ksmbd: Fix resource leak in smb2_lock()
    d847b7588341 ksmbd: use F_SETLK when unlocking a file
    343d667deee1 ksmbd: set SMB2_SESSION_FLAG_ENCRYPT_DATA when enforcing data encryption for this share
    ab69d3e8f7a0 ksmbd: replace one-element arrays with flexible-array members

(From OE-Core rev: 127092cdb8818bfa454d85e95fc91d3f5a58351e)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit b5a2a428407e7f94ef9207dbac9f24dad14c7202)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
63520bce8f linux-yocto/6.1: update CVE exclusions
Data pulled from: https://github.com/nluedtke/linux_kernel_cves

    1/1 [
        Author: Nicholas Luedtke
        Email: nicholas.luedtke@uwalumni.com
        Subject: Update 27Dec23
        Date: Wed, 27 Dec 2023 19:47:13 -0500

    ]

(From OE-Core rev: 31dc2d2952a15df902cef3755f9db4d5f2bd9944)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
(cherry picked from commit b303a7dd260ad3f6a9e6f1b8099b86efcc8373a9)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
e091288ef9 linux-yocto/6.1: update to v6.1.70
Updating linux-yocto/6.1 to the latest korg -stable release that comprises
the following commits:

    a507f147e6f0 Linux 6.1.70
    a413b88cdb69 loop: deprecate autoloading callback loop_probe()
    75c27bdb2144 wifi: nl80211: fix deadlock in nl80211_set_cqm_rssi (6.6.x)
    15577a98ef29 wifi: cfg80211: fix CQM for non-range use
    706448f716c1 fuse: share lookup state between submount and its parent
    ec7b81b0abcd mm/damon/core: make damon_start() waits until kdamond_fn() starts
    41f4ff9fe22c x86/alternatives: Sync core before enabling interrupts
    425379154b7f KVM: arm64: vgic: Force vcpu vgic teardown on vcpu destroy
    5dfacfd0fcd6 KVM: arm64: vgic: Add a non-locking primitive for kvm_vgic_vcpu_destroy()
    3a0fd93cd9f7 KVM: arm64: vgic: Simplify kvm_vgic_destroy()
    3339028dd082 thunderbolt: Fix memory leak in margining_port_remove()
    69b6596c6e4a lib/vsprintf: Fix %pfwf when current node refcount == 0
    2dd6f2286047 gpio: dwapb: mask/unmask IRQ when disable/enale it
    ab1c3f91d174 bus: ti-sysc: Flush posted write only after srst_udelay
    cd9f9ef59d85 pinctrl: starfive: jh7100: ignore disabled device tree nodes
    7f7efa30fa87 dm-integrity: don't modify bio's immutable bio_vec in integrity_metadata()
    33b976a0f2ae tracing / synthetic: Disable events after testing in synth_event_gen_test_init()
    d2b549d3107b scsi: core: Always send batch on reset or error handling command
    72e472a91c0d Revert "scsi: aacraid: Reply queue mapping to CPUs based on IRQ affinity"
    4258274bacfb selftests: mptcp: join: fix subflow_send_ack lookup
    a8555c86f508 ublk: move ublk_cancel_dev() out of ub->mutex
    1c250f2c5fa5 ubifs: fix possible dereference after free
    3c42cc437d7e btrfs: zoned: no longer count fresh BG region as zone unusable
    b09a67617621 Revert "drm/amd/display: Do not set DRR on pipe commit"
    93da3d8af9ee dm thin metadata: Fix ABBA deadlock by resetting dm_bufio_client
    e9779fac685e loop: do not enforce max_loop hard limit by (new) default
    600043e1856c RISC-V: Fix do_notify_resume / do_work_pending prototype
    764c6790dd71 9p: prevent read overrun in protocol dump tracepoint
    7d09c84df5ab drm/i915: Reject async flips with bigjoiner
    c60e10d1549f smb: client: fix OOB in smbCalcSize()
    bef4315f19ba smb: client: fix OOB in SMB2_query_info_init()
    71fe685b6a47 smb: client: fix potential OOB in cifs_dump_detail()
    277832a306f9 smb: client: fix OOB in cifsd when receiving compounded resps
    3f6da210470c dt-bindings: nvmem: mxs-ocotp: Document fsl,ocotp
    1092525155ea net: ks8851: Fix TX stall caused by TX buffer overrun
    e9df9f089128 net: rfkill: gpio: set GPIO direction
    805611157d68 net: 9p: avoid freeing uninit memory in p9pdu_vreadf
    4c775b4cd8dd Input: soc_button_array - add mapping for airplane mode button
    5df2b49e7e78 net: usb: ax88179_178a: avoid failed operations when device is disconnected
    0f7bffd40a51 Bluetooth: Add more enc key size check
    39347d645081 Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE
    e14a7ebafe4e Bluetooth: L2CAP: Send reject on command corrupted request
    37f71e2c9f51 Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg
    470896ecbc92 Bluetooth: hci_event: Fix not checking if HCI_OP_INQUIRY has been sent
    d36d945f94c3 ALSA: hda/realtek: Add quirk for ASUS ROG GV302XA
    9599a5e34ca9 USB: serial: option: add Quectel RM500Q R13 firmware support
    a91fb450df5d USB: serial: option: add Foxconn T99W265 with new baseline
    73b6b6ab03ae USB: serial: option: add Quectel EG912Y module support
    9b968a708678 USB: serial: ftdi_sio: update Actisense PIDs constant names
    db57ef0dd4c2 wifi: cfg80211: fix certs build to not depend on file order
    ec350809cd98 wifi: cfg80211: Add my certificate
    228d9960ae81 usb-storage: Add quirk for incorrect WP on Kingston DT Ultimate 3.0 G3
    82f913724bc9 ALSA: usb-audio: Increase delay in MOTU M quirk
    01bc94b58192 iio: triggered-buffer: prevent possible freeing of wrong buffer
    c508a99fbc21 iio: adc: ti_am335x_adc: Fix return value check of tiadc_request_dma()
    1b670b0eeefa iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table
    1fe4c93fc77b scsi: bnx2fc: Fix skb double free in bnx2fc_rcv()
    66ccf5f7437a Input: ipaq-micro-keys - add error handling for devm_kmemdup
    3637f6bdfe2c interconnect: qcom: sm8250: Enable sync_state
    90aa62722d3e iio: imu: inv_mpu6050: fix an error code problem in inv_mpu6050_read_raw
    50d60bfc9681 interconnect: Treat xlate() returning NULL node as an error
    900c1b3c62f9 drm/i915: Fix ADL+ tiled plane stride when the POT stride is smaller than the original
    de4349bdf9f3 drm/i915/mtl: Add MTL for remapping CCS FBs
    52c1a67dd303 drm/i915/dpt: Only do the POT stride remap when using DPT
    7afe8109456d drm/i915: Fix intel_atomic_setup_scalers() plane_state handling
    b097184f8026 drm/i915: Relocate intel_atomic_setup_scalers()
    99767368b7fa drm/i915/mtl: limit second scaler vertical scaling in ver >= 14
    387e8077593e nvme-pci: fix sleeping function called from interrupt context
    b506833ee887 gpiolib: cdev: add gpio_device locking wrapper around gpio_ioctl()
    6eb51df9e739 pinctrl: at91-pio4: use dedicated lock class for IRQ
    903bb0c7b81f x86/xen: add CPU dependencies for 32-bit build
    2550d96aa248 i2c: aspeed: Handle the coalesced stop conditions with the start conditions.
    5c11f637999c ASoC: fsl_sai: Fix channel swap issue on i.MX8MP
    264d8c9b7f7f ASoC: hdmi-codec: fix missing report for jack initial status
    9b4c95a63e2d afs: Fix use-after-free due to get/remove race in volume tree
    17605162e26b afs: Fix overwriting of result of DNS query
    791d5409cdb9 keys, dns: Allow key types (eg. DNS) to be reclaimed immediately on expiry
    3e617c7e39eb net: check dev->gso_max_size in gso_features_check()
    087b96adc694 afs: Fix dynamic root lookup DNS check
    9c6ea7abe3ed afs: Fix the dynamic root's d_delete to always delete unused dentries
    a70c2dd74198 net: check vlan filter feature in vlan_vids_add_by_dev() and vlan_vids_del_by_dev()
    ea03196ebc47 net: mana: select PAGE_POOL
    a1986c429c68 Bluetooth: hci_event: shut up a false-positive warning
    fc6471510582 Bluetooth: Fix deadlock in vhci_send_frame
    3e0d1585799d net/rose: fix races in rose_kill_by_device()
    51e28c37d960 ethernet: atheros: fix a memleak in atl1e_setup_ring_resources
    6707baabe432 net: sched: ife: fix potential use-after-free
    31edab12229c net: Return error from sk_stream_wait_connect() if sk_wait_event() fails
    9d00421e1430 octeontx2-pf: Fix graceful exit during PFC configuration failure
    b0cee294022f net: mscc: ocelot: fix eMAC TX RMON stats for bucket 256-511 and above
    72b8de75b394 net/mlx5e: Correct snprintf truncation handling for fw_version buffer used by representors
    18b4a5e0c3f5 net/mlx5e: Correct snprintf truncation handling for fw_version buffer
    94c8485b449e net/mlx5: Fix fw tracer first block check
    1750f55d855a net/mlx5e: fix a potential double-free in fs_udp_create_groups
    01877daaeff0 net/mlx5e: Fix a race in command alloc flow
    f3739647a737 net/mlx5: Re-organize mlx5_cmd struct
    148ec770c63e net/mlx5: Prevent high-rate FW commands from populating all slots
    bd6e09162910 net/mlx5: Introduce and use opcode getter in command interface
    0f5de95fa266 net/mlx5e: Fix slab-out-of-bounds in mlx5_query_nic_vport_mac_list()
    31037cfceff8 Revert "net/mlx5e: fix double free of encap_header"
    8a84413505a6 Revert "net/mlx5e: fix double free of encap_header in update funcs"
    2f635af7d6b4 wifi: mac80211: mesh_plink: fix matches_local logic
    7a07af00aa88 wifi: mac80211: mesh: check element parsing succeeded
    40ba7f9ab82a wifi: mac80211: check if the existing link config remains unchanged
    e90da1c7c6e7 wifi: iwlwifi: pcie: add another missing bh-disable for rxq->lock
    912652366f9e s390/vx: fix save/restore of fpu kernel context
    0a6e700c3d7b reset: Fix crash when freeing non-existent optional resets
    930a61fd795d ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_init
    228a00a77d50 ARM: dts: dra7: Fix DRA7 L3 NoC node register size
    913463f8e6cd drm/amd/display: fix hw rotated modes when PSR-SU is enabled
    a4f48f77bbe7 HID: i2c-hid: Add IDEA5002 to i2c_hid_acpi_blacklist[]
    413bef367ba6 HID: i2c-hid: acpi: Unify ACPI ID tables format
    57a6b0a464eb bpf: Fix prog_array_map_poke_run map poke update
    4768f82272a7 kasan: disable kasan_non_canonical_hook() for HW tags

(From OE-Core rev: ef32e8e1aae94b75247cd94f837fb34fff029a03)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
(cherry picked from commit a0bfc167a283372297881baa696bc91bcea7787a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Bruce Ashfield
d5357b5be6 linux-yocto/6.1: update to v6.1.69
Updating  to the latest korg -stable release that comprises
the following commits:

    4aa6747d9352 Linux 6.1.69
    325556d46bfd r8152: fix the autosuspend doesn't work
    4c2ad8e39c62 r8152: remove rtl_vendor_mode function
    1d82735f4bae r8152: avoid to change cfg for all devices
    9b3d3a7f3c4d net: tls, update curr on splice as well
    869aee35cf61 ring-buffer: Have rb_time_cmpxchg() set the msb counter too
    c425a772fc58 ring-buffer: Do not try to put back write_stamp
    b15cf1486999 ring-buffer: Fix a race in rb_time_cmpxchg() for 32 bit archs
    edbc03d671f7 ring-buffer: Fix writing to the buffer with max_data_size
    6d98d594a5b6 ring-buffer: Have saved event hold the entire event
    7888b607a981 ring-buffer: Do not update before stamp when switching sub-buffers
    7043c4610ca7 tracing: Update snapshot buffer on resize if it is allocated
    31785cf8171e ring-buffer: Fix memory leak of free page
    8c3b77ad4e91 smb: client: fix OOB in smb2_query_reparse_point()
    d8541c50c671 smb: client: fix NULL deref in asn1_ber_decoder()
    9f528a8e6832 smb: client: fix OOB in receive_encrypted_standard()
    7b0faa541f15 drm/i915: Fix remapped stride with CCS on ADL+
    20907717918f drm/amd/display: Disable PSR-SU on Parade 0803 TCON again
    a9e2de19433f drm/amdgpu: fix tear down order in amdgpu_vm_pt_free
    730b3322b8c3 btrfs: don't clear qgroup reserved bit in release_folio
    9b670e1b644c btrfs: free qgroup reserve when ORDERED_IOERR is set
    da9b7c651c65 mm/shmem: fix race in shmem_undo_range w/THP
    8ec07b0620ac mm/mglru: fix underprotected page cache
    40f3ad769ec8 dmaengine: stm32-dma: avoid bitfield overflow assertion
    78b2ba39beef drm/amdgpu/sdma5.2: add begin/end_use ring callbacks
    6a1472d9be02 team: Fix use-after-free when an option instance allocation fails
    b01af9281851 arm64: mm: Always make sw-dirty PTEs hw-dirty in pte_modify
    0b071a3266a8 ext4: prevent the normalized size from exceeding EXT_MAX_BLOCKS
    f2955dd3e933 soundwire: stream: fix NULL pointer dereference for multi_link
    56f762659a5e btrfs: do not allow non subvolume root targets for snapshot
    557f7ad06460 perf: Fix perf_event_validate_size() lockdep splat
    a684235d3035 HID: hid-asus: add const to read-only outgoing usb buffer
    2b9e16bc1ce5 arm64: add dependency between vmlinuz.efi and Image
    6cb0c71c6e7c net: usb: qmi_wwan: claim interface 4 for ZTE MF290
    f7ce765744a3 asm-generic: qspinlock: fix queued_spin_value_unlocked() implementation
    fba6e958caa1 HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad
    8f0c8585856c HID: hid-asus: reset the backlight brightness level on resume
    de78e4bdcb5e nbd: pass nbd_sock to nbd_read_reply() instead of index
    d482bb566344 HID: add ALWAYS_POLL quirk for Apple kb
    541b183be92f HID: glorious: fix Glorious Model I HID report
    42b4ab97bee5 platform/x86: intel_telemetry: Fix kernel doc descriptions
    355170a7ecac LoongArch: Implement constant timer shutdown interface
    adb6a907540c LoongArch: Add dependency between vmlinuz.efi and vmlinux.efi
    943cde1f3daa selftests/bpf: fix bpf_loop_bench for new callback verification scheme
    1b40f23e702e nvme: catch errors from nvme_configure_metadata()
    6cb3741c4582 nvme-auth: set explanation code for failure2 msgs
    83bb13bf6c23 nbd: fold nbd config initialization into nbd_alloc_config()
    02a4b14d17ab bcache: avoid NULL checking to c->root in run_cache_set()
    3d3f72efc77d bcache: add code comments for bch_btree_node_get() and __bch_btree_node_alloc()
    bc17ec4215e2 bcache: remove redundant assignment to variable cur_idx
    be0e2a28e06a bcache: avoid oversize memory allocation by small stripe_size
    94070fd6689e blk-cgroup: bypass blkcg_deactivate_policy after destroying
    e52d0eb48efd blk-throttle: fix lockdep warning of "cgroup_mutex or RCU read lock required!"
    5fb6772cb573 stmmac: dwmac-loongson: Add architecture dependency
    82c386d73689 usb: aqc111: check packet for fixup for true limit
    d6c02295c824 x86/hyperv: Fix the detection of E820_TYPE_PRAM in a Gen2 VM
    ae818b2a2e78 drm/mediatek: Add spinlock for setting vblank event in atomic_begin
    73c240e1ec73 ksmbd: fix wrong name of SMB2_CREATE_ALLOCATION_SIZE
    0c196180b588 PCI: loongson: Limit MRRS to 256
    56d1891594d6 Revert "PCI: acpiphp: Reassign resources on bridge if necessary"
    1ec80b9d4310 ALSA: hda/realtek: Apply mute LED quirk for HP15-db
    eeeb91216a1b ALSA: hda/hdmi: add force-connect quirks for ASUSTeK Z170 variants
    82413e9e4255 ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB
    0dc6a06c4843 fuse: dax: set fc->dax to NULL in fuse_dax_conn_free()
    36e2497ac7ad cred: switch to using atomic_long_t
    a51f71cd4f56 net: atlantic: fix double free in ring reinit logic
    1646b2929d5e appletalk: Fix Use-After-Free in atalk_ioctl
    d835299dde3e net: stmmac: Handle disabled MDIO busses from devicetree
    9aac81639e52 dpaa2-switch: do not ask for MDB, VLAN and FDB replay
    a81c7069af05 dpaa2-switch: fix size of the dma_unmap
    9a23be1e5806 vsock/virtio: Fix unsigned integer wrap around in virtio_transport_has_space()
    2027dd67c3cf sign-file: Fix incorrect return values check
    918991db7de0 stmmac: dwmac-loongson: Make sure MDIO is initialized before use
    63387fe87fc5 net: ena: Fix XDP redirection error
    2664b56420b3 net: ena: Fix xdp drops handling due to multibuf packets
    e312eed27aba net: ena: Destroy correct number of xdp queues upon failure
    55a43bae0886 net: Remove acked SYN flag from packet in the transmit queue correctly
    9bb392ee53af qed: Fix a potential use-after-free in qed_cxt_tables_alloc
    112792ad36c4 iavf: Handle ntuple on/off based on new state machines for flow director
    11c314a5a44a iavf: Introduce new state machines for flow director
    01540ee2366a net/rose: Fix Use-After-Free in rose_ioctl
    2de2a6cbe14f atm: Fix Use-After-Free in do_vcc_ioctl
    3a76dcab2e3a octeontx2-af: Update RSS algorithm index
    d0f0786f8c5a octeontx2-pf: Fix promisc mcam entry action
    34b630626a97 octeontx2-af: fix a use-after-free in rvu_nix_register_reporters
    e4ce3dc7a0ed net: fec: correct queue selection
    a00dbc6dec4b net: vlan: introduce skb_vlan_eth_hdr()
    7cfbb8bea36a atm: solos-pci: Fix potential deadlock on &tx_queue_lock
    35c63d366fff atm: solos-pci: Fix potential deadlock on &cli_queue_lock
    525904a15791 bnxt_en: Fix HWTSTAMP_FILTER_ALL packet timestamp logic
    ac6125174190 bnxt_en: Fix wrong return value check in bnxt_close_nic()
    8217f9362c79 bnxt_en: Save ring error counters across reset
    53cacb8cdc7e bnxt_en: Clear resource reservation during resume
    ab410db6e9aa qca_spi: Fix reset behavior
    7e177e5a40d0 qca_debug: Fix ethtool -G iface tx behavior
    2127142c179c qca_debug: Prevent crash on TX ring changes
    0da41ddfb291 net: ipv6: support reporting otherwise unknown prefix flags in RTM_NEWPREFIX
    514232495aa5 net/mlx5e: Fix possible deadlock on mlx5e_tx_timeout_work
    1e8396aab21d HID: lenovo: Restrict detection of patched firmware only to USB cptkbd
    e0cda159c865 afs: Fix refcount underflow from error handling race
    a7e6477cc3af ksmbd: fix memory leak in smb2_lock()
    8925ab33b391 ext4: fix warning in ext4_dio_write_end_io()
    1c077acf246c powerpc/ftrace: Fix stack teardown in ftrace_no_trace
    34ae53cccf53 r8152: add vendor/device ID pair for ASUS USB-C2500
    cac1218b32d7 r8152: add vendor/device ID pair for D-Link DUB-E250
    893597cbabfb r8152: add USB device driver for config selection
    b80d0c6e5bae perf/x86/uncore: Don't WARN_ON_ONCE() for a broken discovery table

(From OE-Core rev: 15017ac95f0702a162caed2b022709504bd751d4)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7a4364e4733c8b8757927596dcbf7d6230f1da96)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Wang Mingyu
88e9607d71 kea: upgrade 2.4.0 -> 2.4.1
Changelog:
=========
-The library version numbers have been bumped up for the Kea 2.4.1 stable release.
-Fixed interface redetection which had stopped working since Kea 2.3.6.
-Fixed a race condition in free lease queue allocator

fix-multilib-conflict.patch
fix_pid_keactrl.patch
refreshed for 2.4.

(From OE-Core rev: fcf269bd8fc607882960cebc2c6e2e557517647d)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7afab39fd1c3239df3bb2fa49b79a5efaaaf9db6)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Markus Volk
d18ebf9271 libadwaita: update 1.4.0 -> 1.4.2
=============
Version 1.4.2
=============

- Really fix build with libappstream 1.0

=============
Version 1.4.1
=============

- Fix build with MSVC
- Fix build with libappstream 1.0
- AdwCarousel
  - Fix carousel scroll behavior with page reordering
- AdwComboRow
  - Fix focus when opening the popover
  - Set the correct state on the selected checkmark
- AdwNavigationView
  - Fix a warning message
- AdwTabOverview
  - Allow child focus on out animations
- AdwTabView
  - Keep view alive during ::page-detached
  - Fix crashes when using :pages
- Docs
  - Fix erroneous <child> use in breakpoints migration guide
- Translation updates
  - Russian
  - Serbian

(From OE-Core rev: 45e035fd044491fbd88aedf6b99ae6eddf1611f5)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7c02a1169197fd5452d5b323dd523f6712245cb6)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Wang Mingyu
18995b95be libva-utils: upgrade 2.20.0 -> 2.20.1
Changelog:
============
-Fix some coverity issues exposed in encode
-Fixed VPP coverity issues

(From OE-Core rev: 3ff4aee01896dc301250d38acf0a67629d317db8)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2bd1443d047ba56196b2eaa7d59b3c39c9c0f49b)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Wang Mingyu
1655d39bed libatomic-ops: upgrade 7.8.0 -> 7.8.2
Changelog:
=========
* Eliminate 'atomic_thread_fence is unsupported with tsan' gcc-11 warning
* Eliminate 'comparing signed/unsigned values' lcc warning in add_chunk_as
* Fix 'undefined reference to AO_pt_lock' if configure is using clang-16
* Fix 'undefined reference to __atomic_load/store/cas_16' Mingw64-gcc error
* Fix 'undefined reference' linker errors if shared build on OpenBSD (CMake)
* Fix get_chunk for case of mmap area is located before AO_initial_heap
* Fix typo in AO_HAVE_compare_and_swap_double name in atomic_ops_stack.h
* Fix typo in comment of run_one_test of test_stack
* Fix typos in comments of atomic_ops_malloc.c and atomic_ops_stack.c/h
* Update cmake minimum required version to 3.5

(From OE-Core rev: cae10312a45a686b118596e0e07000d3fae55f7a)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 1dea52da8cd00e6619890b8c4dcece8b5ff83f74)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-31 04:10:24 -10:00
Lee Chee Yang
8b279cacc2 migration-guide: add release notes for 4.3.2
(From yocto-docs rev: b1fd42b9cf0fbdf5792d4ae7eae3a9214302d562)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:48 -10:00
Jörg Sommer
11ee0c1e4e documentation: Add UBOOT_BINARY, extend UBOOT_CONFIG
UBOOT_CONFIG accepts a third parameter for the UBOOT_BINARY that isn't
documented. To show its usage another example from the meta-freescale layer
was picked.

(From yocto-docs rev: f315078495003bdaff111a70908d7a698b2065eb)

Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:48 -10:00
Enguerrand de Ribaucourt
5c09156703 manuals: document VSCode extension
The VSCode extension is now officially maintained and published by the
Yocto Project so it should be referenced in the manuals to help users
discover it.

I located the most relevant places to reference the extension by looking
at how the old Eclipse plugin was documented in the 2.6 manuals as well
as the current Toaster references.

(From yocto-docs rev: 6294cbeda2809a61b7689dec25d11e99f6f5016b)

Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:48 -10:00
Maxin B. John
049aadc73d ref-manual: classes: remove insserv bbclass
insserv.bbclass was removed from oe-core:

commit e6bb5dbb62
Author: Richard Purdie <richard.purdie@linuxfoundation.org>
Date:   Sun May 10 12:30:49 2015 +0100

insserv: Remove

(From yocto-docs rev: d6da5784877a2c777461263d5a93d703fc0f94d9)

Signed-off-by: Maxin John <maxin.john@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:48 -10:00
Ilya A. Kriveshko
f5f8ec78d4 dev-manual: update license manifest path
After changes in openembedded-core@1a4ab9f, image licenses moved one
directory down into ${SSTATE_PKGARCH} subdir.

(From yocto-docs rev: 244481a93a67c781ae846ef3b8bd8f8f30906a86)

Signed-off-by: Ilya A. Kriveshko <iillyyaa@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:48 -10:00
Michael Opdenacker
1e3f7444ba contributor-guide: use "apt" instead of "aptitude"
As used in the rest of the manual.

(From yocto-docs rev: dc4a34572bc92b1b69c024c8bdf8816cff6f8db7)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:48 -10:00
Simone Weiß
87f57b7ee0 dev-manual: start.rst: Update use of Download page
The yocto website has changed its structure. Update the section for
Accessing the Downloads page to match the new structure.

(From yocto-docs rev: 3e535a08d50fc2f5c3d1a56a0435545eeaf17091)

Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Joshua Watt
1bcde5b6a4 rpcbind: Specify state directory under /run
The state directory must be correctly specified as under /run because
RequiresMountsFor doesn't follow symbolic links which means the unit may
run before /run is mounted if the default of /var/run/rpcbind is kept

(From OE-Core rev: 3d5a85f173dffa14a6829edb9e6adbd5a3946d9c)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 561e853e97e2cfa325ed310233577a5e124d9049)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Jeremy A. Puhlman
a63b21a693 create-spdx-2.2: combine spdx can try to write before dir creation
On occasion a file is attmpeded to be opened prior to the
creation of the spdx_workdir. Create the directory before
the open, just in case.

File: '/build/layers/poky/meta/classes/create-spdx-2.2.bbclass', lineno: 1081, function: combine_spdx
     1077:        )
     1078:
     1079:    image_spdx_path = spdx_workdir / (rootfs_name + ".spdx.json")
     1080:
 *** 1081:    with image_spdx_path.open("wb") as f:
     1082:        doc.to_json(f, sort_keys=True, indent=get_json_indent(d))

(From OE-Core rev: 1b90a9c9c8180c080f780c8dd428fad3f55e879d)

Signed-off-by: Jeremy A. Puhlman <jpuhlman@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit bb9f2a9c0ff5dcdeaf1a0beb6a614d0d022a2481)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Peter Kjellerstedt
5d5c77bc4c devtool: modify: Handle recipes with a menuconfig task correctly
This avoids the following error when running `devtool modify` on a
recipe that has a menuconfig task, but does not have
KCONFIG_CONFIG_ENABLE_MENUCONFIG set.

  .../temp/run.do_configure.4163366: line 152:
  ${@ oe.types.boolean('${KCONFIG_CONFIG_ENABLE_MENUCONFIG}') }: bad substitution
  WARNING: .../temp/run.do_configure.4163366:152 exit 1 from
  '[ ${@ oe.types.boolean('${KCONFIG_CONFIG_ENABLE_MENUCONFIG}') } = True ]'

(From OE-Core rev: 91192e861f0f764799f0ae9943cf387b18c70820)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e87e6fa84a0c4b5ac8e736dc62f6e08390ba2436)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Richard Purdie
edc3370b86 sstate: Fix dir ownership issues in SSTATE_DIR
We currently use mkdir -p to create missing parent directories within SSTATE_DIR.
Reading the man page for mkdir mentions that parent directories are created with
the current umask, *not* the mode passed upon the commandline.

We could fix this by setting and resetting the umask but since we already have
decent python code able to do this, move to using that injecting a python function
into the chain of functions already present.

This should help fix the occasional sstate directory creation with the wrong
permissions.

[YOCTO #14385]

(From OE-Core rev: 90d1e97b7c8bce0fb49714923989c63d243eb2da)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ae642a4b038c6946e6c8aa9778bf09099d938a31)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Chen Qi
229061248d sudo: upgrade from 1.9.15p2 to 1.9.15p5
(cherry picked from OE-Core rev 4b2eccc0ee3f2906f9b04de194b9df6e24c2cdf4)

(From OE-Core rev: e2cb6c1b5e90822bf9e73f43f8bb30259d2b75f6)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Xiangyu Chen
5a4036003c sudo: upgrade 1.9.14p3 -> 1.9.15p2
Changelog:
===========
1.9.15p2:
- Fixed a bug on BSD systems where sudo would not restore the
terminal settings on exit if the terminal had parity enabled.

1.9.15p1:
- Fixed a bug introduced in sudo 1.9.15 that prevented LDAP-based
sudoers from being able to read the ldap.conf file.

1.9.15:
- Fixed an undefined symbol problem on older versions of macOS
when "intercept" or "log_subcmds" are enabled in sudoers.
- Fixed "make check" failure related to getpwent(3) wrapping
on NetBSD.
- Fixed the warning message for "sudo -l command" when the command
is not permitted.  There was a missing space between "list" and
the actual command due to changes in sudo 1.9.14.
- Fixed a bug where output could go to the wrong terminal if
"use_pty" is enabled (the default) and the standard input, output
or error is redirected to a different terminal.  Bug #1056.
- The visudo utility will no longer create an empty file when the
specified sudoers file does not exist and the user exits the
editor without making any changes.  GitHub issue #294.
- The AIX and Solaris sudo packages on www.sudo.ws now support
"log_subcmds" and "intercept" with both 32-bit and 64-bit
binaries.  Previously, they only worked when running binaries
with the same word size as the sudo binary.  GitHub issue #289.
- The sudoers source is now logged in the JSON event log.  This
makes it possible to tell which rule resulted in a match.
Running "sudo -ll command" now produces verbose output that
includes matching rule as well as the path to the sudoers file
the matching rule came from.  For LDAP sudoers, the name of the
matching sudoRole is printed instead.
- The embedded copy of zlib has been updated to version 1.3.
- The sudoers plugin has been modified to make it more resilient
to ROWHAMMER attacks on authentication and policy matching.
This addresses CVE-2023-42465.
- The sudoers plugin now constructs the user time stamp file path
name using the user-ID instead of the user name.  This avoids a
potential problem with user names that contain a path separator
('/') being interpreted as part of the path name.  A similar
issue in sudo-rs has been assigned CVE-2023-42456.
- A path separator ('/') in a user, group or host name is now
replaced with an underbar character ('_') when expanding escapes
in @include and @includedir directives as well as the "iolog_file"
and "iolog_dir" sudoers Default settings.
- The "intercept_verify" sudoers option is now only applied when
the "intercept" option is set in sudoers.  Previously, it was
also applied when "log_subcmds" was enabled.  Sudo 1.9.14
contained an incorrect fix for this.  Bug #1058.
- Changes to terminal settings are now performed atomically, where
possible.  If the command is being run in a pseudo-terminal and
the user's terminal is already in raw mode, sudo will not change
the user's terminal settings.  This prevents concurrent sudo
processes from restoring the terminal settings to the wrong values.
GitHub issue #312.
- Reverted a change from sudo 1.9.4 that resulted in PAM session
modules being called with the environment of the command to be
run instead of the environment of the invoking user.
GitHub issue #318.
- New Indonesian translation from translationproject.org.
- The sudo_logsrvd server will now raise its open file descriptor
limit to the maximum allowed value when it starts up.  Each
connection can require up to nine open file descriptors so the
default soft limit may be too low.
- Better log message when rejecting a command if the "intercept"
option is enabled and the "intercept_allow_setid" option is
disabled.  Previously, "command not allowed" would be logged and
the user had no way of knowing what the actual problem was.
- Sudo will now log the invoking user's environment as "submitenv"
in the JSON logs.  The command's environment ("runenv") is no
longer logged for commands rejected by the sudoers file or an
approval plugin.

(cherry picked from OE-Core rev 5ea298680a8f17d3b808a2c43b0182e9c391f663)

(From OE-Core rev: 105ecb87e78b9133e4188a8b5c604ea0e9a47910)

Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Lee Chee Yang
ddeefb3df3 qemu: 8.1.2 -> 8.1.4
update include fix for CVE-2023-3019.
CVE-2023-3019 : 88e79a2dfd

(From OE-Core rev: 2a2f2b5be2070544f0ab98144e4c31c749b7d504)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Anuj Mittal
ca5733a6dd glib-2.0: upgrade 2.78.1 -> 2.78.3
(From OE-Core rev: 71696c0b89751c1a975025086da0c6f52de00cd8)

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 419503d3d3402b683979696f248cd42f05c282b7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Anuj Mittal
8451fb79f5 base-passwd: upgrade 3.6.2 -> 3.6.3
(From OE-Core rev: a13fd3a4182a97ee0c8a2b49519e897b92f3a987)

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 74d165f5baacd0cd94eb90396b0a3119281df91d)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Wang Mingyu
7337063d04 xwayland: upgrade 23.2.2 -> 23.2.3
upgrade include fix for CVE-2023-6377 CVE-2023-6478

(Cherry-pick from OE-Core rev: bf0bb7b94ed4930145af5f1fb3836157daceb6bb)

(From OE-Core rev: 3882f403a756563a90c9e517211adebabfb0499d)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Robert Yang
7faa0d9b75 nfs-utils: Upgrade 2.6.3 -> 2.6.4
* Remove backported patch 0001-configure.ac-libevent-and-libsqlite3-checked-when-nf.patch.
* Add 0001-reexport.h-Include-unistd.h-to-compile-with-musl.patch to fix build with musl

(From OE-Core rev: fcd5623dbeb302b3f2e9043fd66cc000f81d206b)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit ff416e9fd6a1a65cf59ecd662613581b6190e05e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Lee Chee Yang
1d282ef078 curl: Fix CVE-2023-46219
Upstream docs for CVE-2023-46219:
https://curl.se/docs/CVE-2023-46219.html

(From OE-Core rev: ef3ade93a0cc249046503920c97813df95d53b3c)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-27 08:09:47 -10:00
Simone Weiß
dbc8727bea dev-manual: start.rst: Update use of Download page
The yocto website has changed its structure. Update the section for
Accessing the Downloads page to match the new structure.

(From yocto-docs rev: fda5e5a915d3441252eaf0c7a9ede8d13fb4539e)

Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Richard Purdie
a48d081bd9 pseudo: Update to pull in syncfs probe fix
Pulls in the changes:

Eilís 'pidge' Ní Fhlannagáin (1):
      subports: Add _GNU_SOURCE for syncfs probe

Richard Purdie (1):
      SECURITY.md: Add file

Wu Zhenyu (1):
      pseudo.1: Fix a typo

(From OE-Core rev: ff0dc585479136e3d031da08ef15e8e5c6e92c8d)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 9aab5be508c0dd88a4d9767f65ba5b6fcd5fb9dd)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Massimiliano Minella
e9623c9751 zstd: fix LICENSE statement
zstd is dual-licensed under BSD _OR_ GPLv2. License wording in the
README for v1.5.5 is misleading, but license headers in the code clearly
state that there is a choice between the two licenses.

(From OE-Core rev: 6c9a5fefeaa9225c193a0445bae869e6844bf34d)

Signed-off-by: Massimiliano Minella <massimiliano.minella@se.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 40f85de590c188c9c3985e64a83efaf06b0b4fbc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Ross Burton
68ad4cd71a avahi: update URL for new project location
Avahi has moved to a new parent organisation on GitHub, so update the
URLs to match.

(From OE-Core rev: b541fbeb99df15a1548f93ddbd654fb629ebc2ce)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 02caef1567186f250e64ae3ef84fcff33d7323e4)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Zahir Hussain
da81312c3d cmake: Unset CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES
As discussion in [YOCTO #14717] cmake contains a OEToolchainConfig.cmake
file to configure the toolchain correctly in cross-compile build for recipes
using cmake.

The variable CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES value updates incorrectly
during do_compile the code. Due to this getting sporadic error like below,

fatal error: stdlib.h: No such file or directory
|    75 | #include_next <stdlib.h>
|       |               ^~~~~~~~~~
| compilation terminated.
| ninja: build stopped: subcommand failed.
| WARNING: exit code 1 from a shell command.

As cmake already correctly initializes the variable from environment,
So we have to unset it in the toolchain file to avoid overwriting the
variable definition again.

(From OE-Core rev: 5599eaefee3818c865d71f5b7c3cc04fc01de848)

Signed-off-by: aszh07 <mail2szahir@gmail.com>
Signed-off-by: Zahir Hussain <zahir.basha@kpit.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 5aeada5793af53e8c93940952d4f314474dca4c2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Joao Marcos Costa
bce087b5e8 documentation.conf: fix do_menuconfig description
The current description is only pertinent to the kernel, even though
do_menuconfig task is used by other projects, such as Busybox and
U-Boot.

Replace "for the kernel" by an agnostic alternative (i.e., "in the
compilation directory").

(From OE-Core rev: adf91e340d5d8121c87585fd7340f947b21396b1)

Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 52e053bce5e359995ebdaa21d6899f04ad2306a0)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Jason Andryuk
6ed9c8671e linux-firmware: Create bnx2x subpackage
bnx2x is another broadcom ethernet adapter with its own firmware.  Place
it into its own subpackage.

(From OE-Core rev: bb9eeafb13a69fe71919832b89a01ef8b561f7d7)

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 414f71bb692da7ca1899b07ebb689edeb53f8e0d)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Jason Andryuk
95bc902c13 linux-firmware: Change bnx2 packaging
The bnx2 module uses both the mips and rv2p files, so package them all
together.  Remove -mips from the package name, but add an RPROVIDES for
compatibility.

(From OE-Core rev: 49ca6eb5ef93bf90c682ea06c83db147aed250fa)

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 46f2b7b3bebc7efdb4199cdfe386dc16c049d8d7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Jason Andryuk
b3aeebb469 linux-firmware: Package iwlwifi .pnvm files
The iwlwifi uses the .pnvm files for newer AX210+ cards, so package them
into the iwlwifi-misc subpackage.

(From OE-Core rev: d4f7a9f4715ba2eda753ff6bac07f6905233c3d7)

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 056c4de1422ff06745c5669f871a1bb6f5390d01)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Jose Quaresma
0eb72668a8 go: update 1.20.11 -> 1.20.12
Upgrade to latest 1.20.x release [1]:

$ git log --oneline go1.20.11..go1.20.12
97c8ff8d53 (tag: go1.20.12, origin/release-branch.go1.20) [release-branch.go1.20] go1.20.12
6446af942e [release-branch.go1.20] net/http: limit chunked data overhead
77397ffcb2 [release-branch.go1.20] crypto/rand,runtime: revert "switch RtlGenRandom for ProcessPrng"
d77307f855 [release-branch.go1.20] cmd/compile: fix findIndVar so it does not match disjointed loop headers
1bd76576fe [release-branch.go1.20] crypto/rand,runtime: switch RtlGenRandom for ProcessPrng
1b59b017db [release-branch.go1.20] path/filepath: consider \\?\c: as a volume on Windows
46bc33819a [release-branch.go1.20] cmd/go/internal/vcs: error out if the requested repo does not support a secure protocol
e1dc209be8 [release-branch.go1.20] cmd/go/internal/modfetch/codehost: set core.longpaths in Git repos on Windows

[1] https://github.com/golang/go/compare/go1.20.11...go1.20.12

(From OE-Core rev: 3e7981c7e575b0e16a7b7aba47993e9c58a719c5)

Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8515842b5c503b9a8840675d9cbcfe147d25c1d4)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Jose Quaresma
df1decb1e1 go: update 1.20.10 -> 1.20.11
Upgrade to latest 1.20.x release [1]:

$ git log --oneline go1.20.10..go1.20.11
1d0d4b149c (tag: go1.20.11) [release-branch.go1.20] go1.20.11
46fb781685 [release-branch.go1.20] path/filepath: fix various issues in parsing Windows paths
998fdce3ae [release-branch.go1.20] net/http: pull http2 underflow fix from x/net/http2
d48639094b [release-branch.go1.20] cmd/link: split text sections for arm 32-bit
c8fdffb790 [release-branch.go1.20] all: tidy dependency versioning after release

[1] https://github.com/golang/go/compare/go1.20.10...go1.20.11

(From OE-Core rev: 0ff60c9bf0332a9b6305e082a6ecae7c963d367e)

Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 09fb378fb9c60c383f0ac068bbe3692f047aa617)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Khem Raj
550894f62b tiff: Backport fixes for CVE-2023-6277
(From OE-Core rev: a2d0f36a89ba7414cb5aade202c0367097f6308b)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d115e17ad7775cf5bbfd402e98e61f362ac96efa)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:08 -10:00
Xiangyu Chen
d8929a6e1a shadow: Fix for CVE-2023-4641
shadow-utils: possible password leak during passwd(1) change

CVE: CVE-2023-4641

Upstream-Status: Backport
[65c88a43a2]

(From OE-Core rev: d6ca15b3df54e2973a8e21814a73016255a1cb9b)

Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7942df17d9dfcf690106b8b86506d496e6251327)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-16 07:54:07 -10:00
Michael Opdenacker
61a59d00a0 ref-manual: update tested and supported distros
According to currently active workers
https://autobuilder.yoctoproject.org/typhoon/#/workers
and to the "workers_prev_releases" definition
in https://git.yoctoproject.org/yocto-autobuilder2/tree/config.py

Also correct the text saying that SANITY_TESTED_DISTROS
lists currently tested distros.

Also replace AlmaLinux 8.8 and 9.2 by just AlmaLinux 8 and 9,
as we update our workers anyway.

(From yocto-docs rev: f169122a4594d7733ebc478d34aaf269801fc068)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-10 05:02:09 -10:00
Joshua Watt
afe1706a77 bitbake: asyncrpc: Add context manager API
Adds context manager API for the asyncrcp client class which allow
writing code that will automatically close the connection like so:

    with hashserv.create_client(address) as client:
       ...

Rework the bitbake-hashclient tool and PR server to use this new API to
fix warnings about unclosed event loops when exiting

(Bitbake rev: 52226a7244968c8dad6f4ee9ccec57ac1979217a)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d01d684a0f6398270fe35ed59b7d28f3fd9b7e41)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-10 05:02:09 -10:00
Steve Sakoman
f768ffb891 build-appliance-image: Update to nanbield head revision
(From OE-Core rev: ff595b937d37d2315386aebf315cea719e2362ea)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:16:19 -10:00
Steve Sakoman
59e8c565ef poky.conf: bump version for 4.3.2 release
(From meta-yocto rev: 762f8be72809f8f3e49561cab74e79efc50a91ca)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:12:49 -10:00
Shubham Kulkarni
4e1fa148f4 tzdata: Upgrade to 2023d
(From OE-Core rev: 928194f041041ed3e7d985ef94ea32928c013498)

Signed-off-by: Shubham Kulkarni <skulkarni@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2956b1aa22129951b8c08ac06ff1ffd66811a26c)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Ross Burton
64ba80468a tcl: skip async and event tests in run-ptest
These test suites are full of timing-sensitive test cases, so skip
them too.

[ YOCTO #15321 ]

(From OE-Core rev: e6a2793afdf4d48479e5f369a0446db51a681117)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit dd06c3668dbe9ec1cf9a0a84d7a6bc9851f9c662)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Ross Burton
34a0aa10a5 tcl: skip timing-dependent tests in run-ptest
There are several tests in the test suite which are very dependent on
timing and fail on a loaded host system, so skip them.

[ YOCTO #14825 #14882 #15081 ]

(From OE-Core rev: bd9070fbf4942d412099b4a0a8d199f9d63e33e3)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 68beb4f4b5a0bea5d431decddf7656f18ac7a04a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Richard Purdie
0fdd315174 testimage: Drop target_dumper and most of monitor_dumper
The target_dumper code is basically broken. It has been reading binary files
over the text base serial communication and runs at every command failure which
makes no sense. Each run might overwrite files from the previous run and the
output appears corrupted due to confusion from the binary data.

For now, remove the commands and the target dumper code as the command
and execution point are problematic. Also remove the same pieces of the monitor
code but leave the command list since in theory this can be moved to a more
useful place in the code.

(From OE-Core rev: 4c7aa982a996b23a4c5100c5a5a9390e26e5fe46)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a24d787987dccc95fdd95b7e85bf525a1c55b285)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Trevor Gamblin
99f26364ce patchtest: shorten patch signed-off-by test output
The patch Signed-off-by test's output line is excessively long, and can
trigger a failsafe in the patchtest automated service's email content
generation. Shorten the output by reducing redundant phrasing and using
os.path.basename to get only the failing patch's name, not the entire
path, as the submitter should have a good idea of where it is located
regardless.

(From OE-Core rev: f6a6af896dd1968eded614b0c519dc375eff407a)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit cc7546ded87dd44a988d7a23f1d7645094b5cdd4)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Viswanath Kraleti
782b0e62ef systemd-boot: Fix build issues on armv7a-linux
Backport a fix to address the build failure on armv7a introduced
in systemd v254-rc1.

see
https://github.com/systemd/systemd/issues/29381

(From OE-Core rev: 9fbb9b974cc8a92eb77a080c89410fb2c8b311c1)

Signed-off-by: Viswanath Kraleti <quic_vkraleti@quicinc.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 782790dc6423fe3ae1ce4cd674ab492bfc881230)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Marco Felsch
087dad780c json-c: fix icecc compilation
Skip -Werror to make it possible to compile this recipe with ICECC else
all fallthrough comments will be removed since we pre-process the files
on the host before sending them to the compile nodes which then cause
errors because of default -Werror switch.

Fixes: caf64f85b5c5 ("json-c: update 0.13.1 - > 0.14")
(From OE-Core rev: edda50f28826fd84f83ccecaffbc7705204bccd6)

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 915f8307b063e17ddadd5dface83578b8ad254e2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Markus Volk
0a9f2a1c17 cups: Add root,sys,wheel to system groups
The Cups documentation states:
The default contains "admin", "lpadmin", "root", "sys" and/or "system".
https://www.cups.org/doc/man-cups-files.conf.html#:~:text=SystemGroup

Add root and sys accordingly
Also add wheel group. This is required for systems with polkit support in order to
control the printer settings with cups-pk-helper.
Not only for gnome-control-center, but also when using plain system-config-printer on
a system with running polkit, cups-pk-helper would be a required rdepend.

(From OE-Core rev: 1cca30bb163fbc3f6b79fe3cff6d6b405830a63a)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 572fed0ac6dbcf5749e19c7b624826fc30cf301e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Markus Volk
f5a0b25876 bluez5: fix connection for ps5/dualshock controllers
Bluez 5.69 added a regression. Bluetooth connection for playstation controllers
stopped working. This adds a backport patch for the issue

(From OE-Core rev: a4ba3de4248ee05119ae944a972f88517e4e087b)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit be05a177f943e9c8ce6c0fdbd157ee6f9103eef9)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Julien Stephan
d8a257d2c1 devtool: finish/update-recipe: restrict mode srcrev to recipes fetched from SCM
When specifying --mode / -m srcrev with devtool finish/update-recipe on
recipes that are not fetched from a SCM repository we get the following
error:

  Traceback (most recent call last):
  [..]
    File "<...>/poky/meta/lib/oe/patch.py", line 49, in runcmd
    raise CmdError(cmd, exitstatus >> 8, "stdout: %s\nstderr: %s" % (stdout, stderr))
oe.patch.CmdError: Command Error: 'sh -c 'git format-patch --no-signature --no-numbered INVALID -o /tmp/oepatchbj7pfmzj -- .'' exited with 0  Output:
stdout:
stderr: fatal: bad revision 'INVALID'

Fix this by adding a check and abort with a proper error message.

(From OE-Core rev: 9254b08fbfba3734d5bc717a382d909595833db1)

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 5b77f60e85d07921ae5e808daa1fd7d8c3dc40ea)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Trevor Gamblin
97bdfea698 python3-ptest: skip test_storlines
[YOCTO #14933]

test_storlines is yet another Python ptest that fails intermittently on
the Yocto AB, so disable it during ptests for now.

(From OE-Core rev: 11eab2b5d14efa75fcb0686a9f835f9675883113)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit d7b9f8157e6214a83b5495e8a32e11540ae65ff8)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Julien Stephan
4e65f8e2ef devtool: fix update-recipe dry-run mode
When running devtool update-recipe with --mode=srcrev AND --append switch
in dry-run, we get the following error:

  Traceback (most recent call last):
  [...]
  Exception: destpath should be set here

Fix this by removing a misplaced else statement in _update_recipe_srcrev

(From OE-Core rev: edfa2aac5c39e12e1149134a6241ad4e5b2ebc46)

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 85ba125703d5b442133fd7c470b915460ee68ac9)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:44 -10:00
Michael Opdenacker
792649dee0 systemd-compat-units.bb: fix postinstall script
This fixes an issue running "opkg upgrade" on a system with systemd
(and when there is an update to "systemd-compat-units",
for example between yocto 4.2.2 and 4.2.3):

//var/lib/opkg/info/systemd-compat-units.postinst: cd: line 3: can't cd to /etc/init.d: No such file or directory

The existence of /etc/init.d is now tested
without causing an error if doesn't exist.

Fixes [YOCTO #15292]

(From OE-Core rev: d114814fa2628cfea2769d65a26514b76e61a0fa)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 0330331a1386fd2a34b410a7f62b29bfc8dc23c4)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Richard Purdie
4558219ec8 package_ipk: Fix Source: field variable dependency
The Source: variable is generated from FILE but this is excluded from checksums
normally which results in a reproduciubility issue when the filename changes.

Add in a dependency by reworking the code a little to avoid this.

(From OE-Core rev: 431e6ad7c5b0af3909f5a43599764c529146e6d6)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3ea7da76c6930031a0071069027b1d71f737fbc9)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Javier Tia
d5d85421f2 kernel-arch: use ccache only for compiler
Attempting to use it with other tools is not beneficial, only with the
compiler. Confirmation from ccache's maintainer [1].

[1] https://github.com/ccache/ccache/discussions/1346#discussioncomment-7616180

(From OE-Core rev: 4fe3ec1b7e1d034b236816166d58801a4b0e8d70)

Signed-off-by: Javier Tia <javier.tia@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 47fa8d81083f1ef594f8fe6fcab3e227e9607b3f)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Ross Burton
911935d7bd lib/oe/patch: ensure os.chdir restoring always happens
If we chdir(), do the chdir back to the original directory in a finally
block so they always run.

(From OE-Core rev: 1680d1766445b21e35c6b874c4767b385862017f)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit cdc40292818683b6df1c814498c7589450a163fa)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Adam Johnston
dc33087410 useradd_base: Fix sed command line for passwd-expire
A previous commit tried to add the --follow-symlinks option to
the perform_passwd_expire function in useradd_base.bbclass, however it used
a single -.

This is interpreted as --file=ollow-symlinks which results in...

sed: couldn't open file ollow-symlinks: No such file or directory

and...

ERROR: <image name>: passwd --expire operation did not succeed.

Fix by adding the missing -

(From OE-Core rev: 67721b71bf677097645b9150a31ac833125c0c23)

Signed-off-by:  Adam Johnston <adam.johnston@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3c0deafcfcea3f610c7dd9a2d2884a16fbfe0497)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Markus Volk
713b5d5803 gtk: Add rdepend on printbackend for cups
install the required printbackends

(From OE-Core rev: a241b3f3466d50c73dfbd8001a027e6b8ba67aea)

Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 0a97892920db46043102d54ef1623669241e9780)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Joakim Tjernlund
d2d9fd7063 sed -i destroys symlinks
If /etc/passwd is a symlink, sed -i on same file will replace the
symlink with a new file. Prevent that by adding --follow-symlinks
option to sed

(From OE-Core rev: 7b4343a30a02d8f8664ac4c4bc09e5acfb4fa60e)

Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 6ec004b2e7b4342465af8e5e6cc66041834821a0)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Massimiliano Minella
40a11d6e2a systemd: update LICENSE statement
As stated in the LICENSES/README.md "Unless otherwise noted, the systemd
project sources are licensed under the terms and conditions of the GNU
Lesser General Public License v2.1 or later", so replace LGPL-2.1-only
with LGPL-2.1-or-later.

With the exception of some udev sources that are licensed under
GPL-2.0-or-later (but are packaged separately), the project is licensed
under LGPL, and all the components are LGPL or under LGPL compatible
licenses. The package libsystemd is currently under the main package
license, which can cause problems when scanning for GPL software linked
to CLOSED one.  Add more granularity by setting a license for libsystemd
to LGPL-2.1-or-later.

(From OE-Core rev: 2c65ec32ce3c4a74b7117588151a94a4c6e506a6)

Signed-off-by: Massimiliano Minella <massimiliano.minella@se.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 54975f4b2184fe12c4995c289eba8358958e6c21)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Alexander Kanavin
16fdf54a60 cmake: upgrade 3.27.5 -> 3.27.7
Changes made since CMake 3.27.6:

Brad King (6):
  Android: Require Clang 18 for -std=c++23
  Tests: Clarify RunCMake.CTestTimeout case name
  ctest: Restore support for --timeout values higher than default test timeout
  Help: Document CMP0124 behavior on already-set variables
  FindPostgreSQL: Add support for version 16
  CMake 3.27.7

Orkun Tokdemir (1):
  Linting: Fix empty evaluated genex

(From OE-Core rev: 3f3f3118dd6976259e8d971ebf76f2eeaf96f930)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 0faec0c8606b31216702252d0db7aa88388df231)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Wang Mingyu
5adf1eaeac log4cplus: upgrade 2.1.0 -> 2.1.1
Changelog:
===========
-Add missing source files to MSVC project files.
-Resolve environment variables in include directive in configuration file.

(From OE-Core rev: 067023cd723a9056c5c15a37d20e3b12d4b2cf02)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 33d49b14609d9b92a7c23d79f1bdfca79a5d8197)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Wang Mingyu
6ac257ef3a libxslt: upgrade 1.1.38 -> 1.1.39
Changelog:
===========
- extensions: Don't search imports for extension prefixes
- transform: Check maximum depth when processing default templates
- build: Add more missing includes
- python: Don't set deprecated global
- build: Add missing includes
- imports: Limit nesting depth
- extensions: Report top-level elements in xsltDebugDumpExtensions
- Add extern "C" { } block to xsltlocale.h
- python: Make it compatible with python3.12
- date: Fix check for localtime_s
- date: Fix check for gmtime_s
- pkg-config files include cflags for static builds
- Handle NOCONFIG case when setting locations from CMake target properties
- autotools: Make xslt-config executable
- tests: Structured error handler now passes a const xmlError
- python: Fix tests on MinGW
- fuzz: Fix xmlFuzzEntityLoader after recent libxml2 changes

(From OE-Core rev: 7828e780813857a6667cb07472a0371823781e9b)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 48b353f3fb8e5ab1853cba7faa3065d2fe6f36b4)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Wang Mingyu
26fe89c158 libgcrypt: upgrade 1.10.2 -> 1.10.3
Changelog:
==========
- Fix public key computation for other EdDSA curves.
- Remove out of core handler diagnostic in FIPS mode.
- Check that the digest size is not zero in gcry_pk_sign_md and
  gcry_pk_verify_md.
- Make store an s-exp with \0 is considered to be binary.
- Various constant-time improvements.
- Use getrandom call only when supported by the platform.
- Change the default for --with-libtool-modification to never.

(From OE-Core rev: 451480be9e8693d026fb408f5bfd1c6c77ad7182)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit e21583896116cf37bf6b95aea466854e4fd5e54b)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Wang Mingyu
306ebfd2c7 ell: upgrade 0.59 -> 0.60
Changelog:
==========
-Fix issue with missing NETLINK_EXT_ACK definition.
-Fix issue with incorrect derivation of ECC compressed points.
-Add support for ECC usage from SPAKE2+ key exchange protocol.

(From OE-Core rev: 2b799f27bb005a314ac87117ab2e9fc34be90fa3)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 9b13c1ffadda0893561e804d2ab789bf1c401d3a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Wang Mingyu
128ab2a47f bind: upgrade 9.18.19 -> 9.18.20
Changelog:
============
-Fix missing newlines in the output of "rndc nta -dump".
-Take into account local authoritative zones when falling back to serve-stale.
-Fix assertion failure when using lock-file configuration option together -X
 argument to named.
-The 'lock-file' file was being removed when it shouldn't have been making it
 ineffective if named was started 3 or more times.
-Fix a shutdown race in dns__catz_update_cb().
-B.ROOT-SERVERS.NET addresses are now 170.247.170.2 and 2801:1b8:10::b.
-The timeouts for resending zone refresh queries over UDP were lowered to enable
 named to more quickly determine that a primary is down.
-Don't schedule resign operations on the raw version of an inline-signing zone.
-Fix a possible assertion failure on an error path in resolver.c:fctx_query(),
 when using an uninitialized link.
-Add semantic patch to do an explicit cast from char to unsigned char in ctype.h
 class of functions.
-Python system tests have to be executed by invoking pytest directly. Executing
 them with the legacy test runner is no longer supported.
-The wrong covered value was being set by dns_ncache_current for RRSIG records
 in the returned rdataset structure. This resulted in TYPE0 being reported as
 the covered value of the RRSIG when dumping the cache contents.

(From OE-Core rev: 6103a28c3b3df76a679acae577140d4ad2346894)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 9b34124561d926d9273c52163853161515e5666a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Anuj Mittal
cb4f20f7e8 gstreamer1.0: upgrade 1.22.6 -> 1.22.7
This release only contains bugfixes and security fixes.  For details:

https://gstreamer.freedesktop.org/releases/1.22/#1.22.8

(From OE-Core rev: 1d4df263a62de1d860731bace77c69e56987fa6e)

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit f6be55ef1e862d93d8275fb5792e6c66b0a0beee)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Wang Mingyu
ae24fd63aa libsolv: upgrade 0.7.25 -> 0.7.26
Version 0.7.26
- selected bug fixes:
  * fix evr roundtrip in testcases
  * do not use deprecated headerUnload with newer rpm versions

(From OE-Core rev: a749063e3f978a429d192445dcb5d636de668b82)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit abd47f16a4ef8a50af4287795969832d1391d8d2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Bruce Ashfield
21ba5094ce linux-yocto/6.5: fix AB-INT: QEMU kernel panic: No irq handler for vector
Integrating the following commit(s) to linux-yocto/6.5:

1/2 [
    Author: Thomas Gleixner
    Email: tglx@linutronix.de
    Subject: x86/alternatives: Sync core before enabling interrupts
    Date: Thu, 7 Dec 2023 20:49:24 +0100

    text_poke_early() does:

       local_irq_save(flags);
       memcpy(addr, opcode, len);
       local_irq_restore(flags);
       sync_core();

    That's not really correct because the synchronization should happen before
    interrupts are reenabled to ensure that a pending interrupt observes the
    complete update of the opcodes.

    It's not entirely clear whether the interrupt entry provides enough
    serialization already, but moving the sync_core() invocation into interrupt
    disabled region does no harm and is obviously correct.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

2/2 [
    Author: Thomas Gleixner
    Email: tglx@linutronix.de
    Subject: x86/alternatives: Disable interrupts and sync when optimizing NOPs in place
    Date: Thu, 7 Dec 2023 20:49:26 +0100

    apply_alternatives() treats alternatives with the ALT_FLAG_NOT flag set
    special as it optimizes the existing NOPs in place.

    Unfortunately this happens with interrupts enabled and does not provide any
    form of core synchronization.

    So an interrupt hitting in the middle of the update and using the affected
    code path will observe a half updated NOP and crash and burn. The following
    3 NOP sequence was observed to expose this crash halfways reliably under
    QEMU 32bit:

       0x90 0x90 0x90

    which is replaced by the optimized 3 byte NOP:

       0x8d 0x76 0x00

    So an interrupt can observe:

       1) 0x90 0x90 0x90		nop nop nop
       2) 0x8d 0x90 0x90		undefined
       3) 0x8d 0x76 0x90		lea    -0x70(%esi),%esi
       4) 0x8d 0x76 0x00		lea     0x0(%esi),%esi

    Where only #1 and #4 are true NOPs. The same problem exists for 64bit obviously.

    Disable interrupts around this NOP optimization and invoke sync_core()
    before reenabling them.

    Fixes: 270a69c4485d ("x86/alternative: Support relocations in alternatives")
    Reported-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: eaa14acddf8259bef87143956766e7d3cf01d6ff)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 1c8d29ab6b02c5b783429db3b67583deb1637142)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Bruce Ashfield
9e123cdcbf linux-yocto/6.5: drop removed IMA option
Integrating the following commit(s) to linux-yocto/.:

1/1 [
    Author: Paul Gortmaker
    Email: paul.gortmaker@windriver.com
    Subject: features/ima: drop now retired IMA_TRUSTED_KEYRING option
    Date: Wed, 6 Dec 2023 09:15:38 -0500

    Unfortunately linux-stable backported this:

      Subject: ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig

      From: Nayna Jain <nayna@linux.ibm.com>

      [ Upstream commit 5087fd9e80e539d2163accd045b73da64de7de95 ]

      Time to remove "IMA_TRUSTED_KEYRING".

    ...to all releases still being maintained.

    stable-queue$git grep -l 5087fd9e80e539
    releases/5.10.195/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/5.15.132/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/5.4.257/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/6.1.53/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/6.4.16/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/6.5.3/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch

    So now when someone uses the feature, it triggers a do_kernel_configcheck
    warning when the audit runs.

    We added this file way back in 2019 so this fix will be needed on all
    active branches that are using an LTS linux-stable kernel listed above.

    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: 0f8eaea3a46c9f6e3c99fb59e689e2a3843979d0)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d575b2822c1779077177deb177bafa94ab975bfc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Richard Purdie
0414806a80 linux/cve-exclusion6.1: Update to latest kernel point release
(From OE-Core rev: ec48d71311808126ce22b0ea771e37750ac98304)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit c4ffd18d3e71b935acc050b106267db544d86df7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Bruce Ashfield
69475a1e73 linux-yocto/6.1: update to v6.1.68
Updating  to the latest korg -stable release that comprises
the following commits:

    ba6f5fb46511 Linux 6.1.68
    f38b4e99e24c drm/i915: Skip some timing checks on BXT/GLK DSI transcoders
    d9ef7b05ccd7 drm/i915/sdvo: stop caching has_hdmi_monitor in struct intel_sdvo
    cf70d62ace90 drm/i915/lvds: Use REG_BIT() & co.
    e6d55cf49399 drm/i915/display: Drop check for doublescan mode in modevalid
    9c322aaf28e8 riscv: Kconfig: Add select ARM_AMBA to SOC_STARFIVE
    189c2a82933c netfilter: nft_set_pipapo: skip inactive elements during set walk
    b4e440cf600e MIPS: Loongson64: Enable DMA noncoherent support
    d52a5178cbdc MIPS: Loongson64: Handle more memory types passed from firmware
    8d18a0158546 MIPS: Loongson64: Reserve vgabios memory on boot
    2b9b2d28a92a KVM: SVM: Update EFER software model on CR0 trap for SEV-ES
    6d6314c3dbac KVM: s390/mm: Properly reset no-dat
    be297475cabc MIPS: kernel: Clear FPU states when setting up kernel threads
    358bd5f436d8 cifs: Fix flushing, invalidation and file size with FICLONE
    18b02e4343e8 cifs: Fix flushing, invalidation and file size with copy_file_range()
    69540c108d72 USB: gadget: core: adjust uevent timing on gadget unbind
    2467f4f8cb7c x86/CPU/AMD: Check vendor in the AMD microcode callback
    0553d5290879 devcoredump: Send uevent once devcd is ready
    74799b43d856 serial: 8250_omap: Add earlycon support for the AM654 UART controller
    d59dafa9eb12 serial: 8250: 8250_omap: Do not start RX DMA on THRI interrupt
    638a6cbacefd serial: 8250: 8250_omap: Clear UART_HAS_RHR_IT_DIS bit
    f434703fb893 serial: sc16is7xx: address RX timeout interrupt errata
    a8027753ab65 ARM: PL011: Fix DMA support
    c909ce57d055 usb: typec: class: fix typec_altmode_put_partner to put plugs
    b12ccef70545 smb: client: fix potential NULL deref in parse_dfs_referrals()
    f48430635b5e Revert "xhci: Loosen RPM as default policy to cover for AMD xHC 1.1"
    9ce109b74875 cifs: Fix non-availability of dedup breaking generic/304
    8e25331ea560 parport: Add support for Brainboxes IX/UC/PX parallel cards
    bee9affd37b9 serial: 8250_dw: Add ACPI ID for Granite Rapids-D UART
    16da1f84f5ef usb: gadget: f_hid: fix report descriptor allocation
    c8bf22e0d049 drm/amdgpu: Update EEPROM I2C address for smu v13_0_0
    87509778718c drm/amdgpu: Add I2C EEPROM support on smu v13_0_6
    4ccb34d4313b drm/amdgpu: simplify amdgpu_ras_eeprom.c
    af6b1f1156fc drm/amdgpu: Return from switch early for EEPROM I2C address
    a3049c9a3013 drm/amdgpu: Remove second moot switch to set EEPROM I2C address
    30289057ef8f drm/amdgpu: Add support for RAS table at 0x40000
    c67c553b4dd9 drm/amdgpu: Decouple RAS EEPROM addresses from chips
    ee9efcdc76af drm/amdgpu: Remove redundant I2C EEPROM address
    a945568638ac drm/amdgpu: Add EEPROM I2C address support for ip discovery
    f549f837b9ac drm/amdgpu: Update ras eeprom support for smu v13_0_0 and v13_0_10
    458affed0619 drm/amdgpu: correct the amdgpu runtime dereference usage count
    41c5dd545e76 drm/amd/amdgpu: Fix warnings in amdgpu/amdgpu_display.c
    613eaee4459d drm/amdgpu: fix memory overflow in the IB test
    1705927a1073 gpiolib: sysfs: Fix error handling on failed export
    4b716fcacd2a x86/sev: Fix kernel crash due to late update to read-only ghcb_version
    06dec254c59a perf: Fix perf_event_validate_size()
    b0c195a825d4 arm64: dts: mt8183: kukui: Fix underscores in node names
    8a3d746c7ec5 arm64: dts: mediatek: add missing space before {
    5656634ce01e parisc: Fix asm operand number out of range build error in bug table
    f9e9e156dbbb parisc: Reduce size of the bug_table on 64-bit kernel by half
    8479f5ca8b6c tracing: Stop current tracer when resizing buffer
    df4aa7e84d00 tracing: Set actual size after ring buffer resize
    07ad456e1c02 ring-buffer: Force absolute timestamp on discard of event
    40421e0cf34e LoongArch: BPF: Don't sign extend function return value
    ebb09d58dfe7 LoongArch: BPF: Don't sign extend memory load operand
    066dcd87b94c misc: mei: client.c: fix problem of return '-EOVERFLOW' in mei_cl_write
    d78789ba2195 misc: mei: client.c: return negative error code in mei_cl_write
    672976c28e1b hwtracing: hisi_ptt: Add dummy callback pmu::read()
    0b80e6af0d90 coresight: etm4x: Remove bogous __exit annotation for some functions
    766b29f6141a coresight: etm4x: Make etm4_remove_dev() return void
    920f84a6e8e9 binder: fix memory leaks of spam and pending work
    18847b6bba36 arm64: dts: mediatek: mt8183-evb: Fix unit_address_vs_reg warning on ntc
    c428285eab3c arm64: dts: mediatek: mt8183: Move thermal-zones to the root node
    bdd7508661fc arm64: dts: mediatek: mt8183: Fix unit address for scp reserved memory
    66398d18565d arm64: dts: mediatek: mt8195: Fix PM suspend/resume with venc clocks
    e1d4f02a68d3 arm64: dts: mediatek: mt8173-evb: Fix regulator-fixed node names
    ff566a8d765f arm64: dts: mediatek: cherry: Fix interrupt cells for MT6360 on I2C7
    6d50aa965650 arm64: dts: mediatek: mt8183-kukui-jacuzzi: fix dsi unnecessary cells properties
    c2adea319187 arm64: dts: mediatek: mt7622: fix memory node warning check
    515d971cd26a md/raid6: use valid sector values to determine if an I/O should wait on the reshape
    4132cc3a3aa9 powercap: DTPM: Fix missing cpufreq_cpu_put() calls
    686cc4de099f mm: fix oops when filemap_map_pmd() without prealloc_pte
    574a6db80f3e hugetlb: fix null-ptr-deref in hugetlb_vma_lock_write
    f5e6958919e0 platform/surface: aggregator: fix recv_buf() return value
    bcd50a3bd637 regmap: fix bogus error on regcache_sync success
    1c1c6d5c7e14 r8169: fix rtl8125b PAUSE frames blasting when suspended
    6a71d7785643 packet: Move reference count in packet_sock to atomic_long_t
    15c251f81442 tracing: Fix a possible race when disabling buffered events
    b00b50091693 tracing: Fix incomplete locking when disabling buffered events
    6e0d6c685b1b tracing: Disable snapshot buffer when stopping instance tracers
    20fd56ca2e6d tracing: Always update snapshot buffer size
    f33d663db004 checkstack: fix printed address
    4c00f01832f2 cgroup_freezer: cgroup_freezing: Check if not frozen
    3907e9cc85ff nilfs2: prevent WARNING in nilfs_sufile_set_segment_usage()
    c344e99dd812 nilfs2: fix missing error check for sb_set_blocksize call
    d2558e726e76 ring-buffer: Test last update in 32bit version of __rb_time_read()
    c4dcc915ea22 ALSA: hda/realtek: Add Framework laptop 16 to quirks
    0675fe3b3234 ALSA: hda/realtek: add new Framework laptop to quirks
    8b23707c8a1e ALSA: hda/realtek: Enable headset on Lenovo M90 Gen5
    dc1141ae5ca2 ALSA: pcm: fix out-of-bounds in snd_pcm_state_names
    bb43c57c3d0b ALSA: usb-audio: Add Pioneer DJM-450 mixer controls
    bfe5a5e2f9e9 io_uring: fix mutex_unlock with unreferenced ctx
    8bba38f7a0d4 nvme-pci: Add sleep quirk for Kingston drives
    f2f57f51b53b io_uring/af_unix: disable sending io_uring over sockets
    515c25be77ba ASoC: amd: yc: Fix non-functional mic on ASUS E1504FA
    0fcfc90c8664 kprobes: consistent rcu api usage for kretprobe holder
    a5325a055f0f rethook: Use __rcu pointer for rethook::handler
    68bc7b200305 iommu: Avoid more races around device probe
    3c796895b4e2 md: don't leave 'MD_RECOVERY_FROZEN' in error path of md_set_readonly()
    5255ded03422 md: introduce md_ro_state
    a38c1e766f4f riscv: fix misaligned access handling of C.SWSP and C.SDSP
    8b41bdcc22da ARM: dts: imx28-xea: Pass the 'model' property
    282b5acd586e ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt
    12ac3b0ab837 ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init
    4d8cc87d1845 scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle()
    bc5b79df6d54 tracing: Fix a warning when allocating buffered events fails
    fc2d811d3101 ARM: dts: imx6ul-pico: Describe the Ethernet PHY clock
    22143a0e5ac2 arm64: dts: imx8mp: imx8mq: Add parkmode-disable-ss-quirk on DWC3
    8dd0e20b41b1 arm64: dts: imx8mq: drop usb3-resume-missing-cas from usb
    188de9839ff2 drm/bridge: tc358768: select CONFIG_VIDEOMODE_HELPERS
    1ff56298ab32 RDMA/irdma: Avoid free the non-cqp_request scratch
    0a929e837527 RDMA/core: Fix umem iterator when PAGE_SIZE is greater then HCA pgsz
    ebcb4e19d3ef ASoC: wm_adsp: fix memleak in wm_adsp_buffer_populate
    2358e53208c0 hwmon: (nzxt-kraken2) Fix error handling path in kraken2_probe()
    3baaba79088b ASoC: codecs: lpass-tx-macro: set active_decimator correct default value
    c11b7e26d2f0 hwmon: (acpi_power_meter) Fix 4.29 MW bug
    19269741c3e2 RDMA/irdma: Fix UAF in irdma_sc_ccq_get_cqe_info()
    439857e2fe4e RDMA/irdma: Refactor error handling in create CQP
    59a022a869b1 RDMA/bnxt_re: Correct module description string
    7ed498095c6d RDMA/rtrs-clt: Remove the warnings for req in_use check
    03095a6440db RDMA/rtrs-clt: Fix the max_send_wr setting
    233c32bcf069 RDMA/rtrs-srv: Destroy path files after making sure no IOs in-flight
    7be574c34dc7 RDMA/rtrs-srv: Free srv_mr iu only when always_invalidate is true
    9dd976c435be RDMA/rtrs-srv: Check return values while processing info request
    3910ccbf25a7 RDMA/rtrs-clt: Start hb after path_up
    1e46485045cd RDMA/rtrs-srv: Do not unconditionally enable irq
    4a8774a63303 ASoC: fsl_sai: Fix no frame sync clock issue on i.MX8MP
    3166c76d1deb arm64: dts: rockchip: Expand reg size of vdec node for RK3399
    aa9ae3dffc34 arm64: dts: rockchip: Expand reg size of vdec node for RK3328
    945bfe4e0b09 RDMA/irdma: Add wait for suspend on SQD
    0b0afd4e1477 RDMA/irdma: Do not modify to SQD on error
    9d005ea01ed0 RDMA/hns: Fix unnecessary err return when using invalid congest control algorithm
    1c9561b438cb tee: optee: Fix supplicant based device enumeration
    5fd29433b29d mm/damon/sysfs: eliminate potential uninitialized variable warning
    b5ca945612b4 drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group
    07c8229c022b psample: Require 'CAP_NET_ADMIN' when joining "packets" group
    af39b80173e4 bpf: sockmap, updating the sg structure should also update curr
    008b807fe487 tcp: do not accept ACK of bytes we never sent
    7a63521ed041 netfilter: xt_owner: Fix for unsafe access of sk->sk_socket
    3176160c22d9 netfilter: nf_tables: validate family when identifying table via handle
    96f8654b701f netfilter: nf_tables: bail out on mismatching dynset and set expressions
    c9704c26193c netfilter: nf_tables: fix 'exist' matching on bigendian arches
    0bfbfd9423f3 netfilter: nft_exthdr: add boolean DCCP option matching
    9225a4566bc1 dt-bindings: interrupt-controller: Allow #power-domain-cells
    6b9e78d6c6b9 octeontx2-af: Update Tx link register range
    9be8f66ea857 octeontx2-af: Add missing mcs flr handler call
    d54470adfcc7 octeontx2-af: Fix mcs stats register address
    90773de07391 octeontx2-af: Fix mcs sa cam entries size
    0c8baa37bfa5 octeontx2-af: Adjust Tx credits when MCS external bypass is disabled
    d2689aea4f2e net: hns: fix fake link up on xge port
    217cc7f6a6ac net: hns: fix wrong head when modify the tx feature when sending packets
    87559196c316 net: atlantic: Fix NULL dereference of skb pointer in
    64c78c57e307 ipv4: ip_gre: Avoid skb_pull() failure in ipgre_xmit()
    ce3c5acb594e ionic: Fix dim work handling in split interrupt mode
    a92719900fc6 ionic: fix snprintf format length warning
    c91685ac1bce tcp: fix mid stream window clamp.
    9fc81912fcdb net: bnxt: fix a potential use-after-free in bnxt_init_tc
    0d33871b66f9 iavf: validate tx_coalesce_usecs even if rx_coalesce_usecs is zero
    75fd86e54119 i40e: Fix unexpected MFS warning message
    ba6eb3a77a56 octeontx2-af: fix a use-after-free in rvu_npa_register_reporters
    2c0cbb97b118 xsk: Skip polling event check for unbound socket
    ed7e211b6786 net: stmmac: fix FPE events losing
    1a41ffc4dc6a octeontx2-pf: consider both Rx and Tx packet stats for adaptive interrupt coalescing
    8d034da82563 arcnet: restoring support for multiple Sohard Arcnet cards
    3c323796951a platform/mellanox: Check devm_hwmon_device_register_with_groups() return value
    29d82b366a22 platform/mellanox: Add null pointer checks for devm_kasprintf()
    646f1e9c1978 mlxbf-bootctl: correctly identify secure boot with development keys
    ef91309a570a r8152: Add RTL8152_INACCESSIBLE to r8153_aldps_en()
    d11ef4d3dd37 r8152: Add RTL8152_INACCESSIBLE to r8153_pre_firmware_1()
    284cd311bb48 r8152: Add RTL8152_INACCESSIBLE to r8156b_wait_loading_flash()
    0823990da76f r8152: Add RTL8152_INACCESSIBLE checks to more loops
    3759e735562a r8152: Rename RTL8152_UNPLUG to RTL8152_INACCESSIBLE
    ecb5068f55a8 hv_netvsc: rndis_filter needs to select NLS
    80de965ca52c octeontx2-af: Check return value of nix_get_nixlf before using nixlf
    f565044d1d84 octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam
    a3f5de10b5cf ipv6: fix potential NULL deref in fib6_add()
    e2b202821dd8 platform/x86: wmi: Skip blocks with zero instances
    b536601d0520 of: dynamic: Fix of_reconfig_get_state_change() return value documentation
    76b9ea6f54ed platform/x86: asus-wmi: Move i8042 filter install to shared asus-wmi code
    3453531284cb dt: dt-extract-compatibles: Don't follow symlinks when walking tree
    8a124b9e784b dt: dt-extract-compatibles: Handle cfile arguments in generator function
    cde700ceb0ea x86/tdx: Allow 32-bit emulation by default
    e09d243a518b x86/entry: Do not allow external 0x80 interrupts
    d5f999317e83 x86/entry: Convert INT 0x80 emulation to IDTENTRY
    b8ec27ae221e x86/coco: Disable 32-bit emulation by default on TDX and SEV
    0870f19b54de x86: Introduce ia32_enabled()
    9046665befd6 drm/amdgpu: correct chunk_ptr to a pointer to chunk.
    18209382db64 kconfig: fix memory leak from range properties
    bcc2abaa4095 tg3: Increment tx_dropped in tg3_tso_bug()
    9bbc655e1849 tg3: Move the [rt]x_dropped counters to tg3_napi
    62c6d82bac2b zstd: Fix array-index-out-of-bounds UBSAN warning
    875ee3a09e27 netfilter: ipset: fix race condition between swap/destroy and kernel side add/del/test
    6025052bbf3d i2c: designware: Fix corrupted memory seen in the ISR
    75b5016ce325 hrtimers: Push pending hrtimers away from outgoing CPU earlier
    8ea2b4ba9ba2 vdpa/mlx5: preserve CVQ vringh index

(From OE-Core rev: 3f28f1247ee313d558909286af7e77a0572cc4b4)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 98dd7225341e4a8c46e9db17728cd162a0d12216)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Bruce Ashfield
24072981e4 linux-yocto/6.1: update to v6.1.67
Updating  to the latest korg -stable release that comprises
the following commits:

    e7cddbb41b63 Linux 6.1.67
    db46c77f3d51 Revert "wifi: cfg80211: fix CQM for non-range use"

(From OE-Core rev: c1411f50533512973e16e1e4b3a6e950c9bb9a77)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a80b32127dccd35ed7ed129e28231229afdaa53b)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Bruce Ashfield
8764ca54e3 linux-yocto/6.1: update to v6.1.66
Updating  to the latest korg -stable release that comprises
the following commits:

    6c6a6c7e211c Linux 6.1.66
    ea574927fc0b iomap: update ki_pos a little later in iomap_dio_complete
    adf0ecebf00a x86/apic/msi: Fix misconfigured non-maskable MSI quirk
    b3b839fb636b x86/xen: fix percpu vcpu_info allocation
    00bc8b2cf44c xen: simplify evtchn_do_upcall() call maze
    9311a0ff388a xen: Allow platform PCI interrupt to be shared
    402b8323461c r8169: fix deadlock on RTL8125 in jumbo mtu mode
    22ee0ddb2af7 r8169: disable ASPM in case of tx timeout
    10ce6301009f drm/amd/display: Fix MPCC 1DLUT programming
    8332cb6c6339 drm/amd/display: Fix the delta clamping for shaper LUT
    442a4d4d0157 drm/amd/display: clean code-style issues in dcn30_set_mpc_shaper_3dlut
    6cd736272165 drm/amd/display: Expand kernel doc for DC
    8b01195be4a9 mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled
    38d3216032c9 mmc: core: add helpers mmc_regulator_enable/disable_vqmmc
    0e0a95166882 drm/amd/pm: fix a memleak in aldebaran_tables_init
    59862b869275 iommu/vt-d: Make context clearing consistent with context mapping
    ee2c2247690c iommu/vt-d: Disable PCI ATS in legacy passthrough mode
    8f39d297a26a iommu/vt-d: Add device_block_translation() helper
    3787b3168b6c iommu/vt-d: Allocate pasid table in device probe path
    681aeeda413d iommu/vt-d: Omit devTLB invalidation requests when TES=0
    8aaed5b81d26 cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily
    d3788f6e9d5a cpufreq: imx6q: don't warn for disabling a non-existing frequency
    195514bda626 drm/amd/display: Guard against invalid RPTR/WPTR being set
    395a63ca1ad2 drm/amd/display: Restore rptr/wptr for DMCUB as workaround
    4ec4508db975 spi: Fix null dereference on suspend
    b57eebfb80e8 fbdev: stifb: Make the STI next font pointer a 32-bit signed offset
    5bc8d96fedce PCI: qcom-ep: Add dedicated callback for writing to DBI2 registers
    10c3d86fea04 octeontx2-af: Initialize 'cntr_val' to fix uninitialized symbol error
    1c8f75ee9233 PCI: Lengthen reset delay for VideoPropulsion Torrent QN16e card
    7545ddda9c98 KVM: x86: Fix lapic timer interrupt lost after loading a snapshot.
    21feaf558f93 net: ravb: Keep reverse order of operations in ravb_remove()
    8d04278ff48b net: ravb: Stop DMA in case of failures on ravb_open()
    52b751686cbf net: ravb: Start TX queues after HW initialization succeeded
    e2db25d16cdd net: ravb: Make write access to CXR35 first before accessing other EMAC registers
    f5c649ce7975 net: ravb: Use pm_runtime_resume_and_get()
    149b2fe12aca net: ravb: Check return value of reset_control_deassert()
    7ed2e4c2d016 ravb: Fix races between ravb_tx_timeout_work() and net related ops
    8b1d088be5f1 r8169: prevent potential deadlock in rtl8169_close
    9c4ac2d98a48 octeontx2-pf: Restore TC ingress police rules when interface is up
    aef2d5b3e56e octeontx2-af: Install TC filter rules in hardware based on priority
    662b88708408 octeontx2-pf: Fix adding mbox work queue entry when num_vfs > 64
    5d5bcfb1ca8d net: stmmac: xgmac: Disable FPE MMC interrupts
    334e6378c28c octeontx2-af: Fix possible buffer overflow
    c3e974e9c4bb selftests/net: mptcp: fix uninitialized variable warnings
    12dd4c1bf3bd selftests/net: unix: fix unused variable compiler warning
    4e999af7cf8a selftests/net: fix a char signedness issue
    249ceee95caf selftests/net: ipsec: fix constant out of range
    e01249a83939 uapi: propagate __struct_group() attributes to the container union
    fd91b48f108d dpaa2-eth: increase the needed headroom to account for alignment
    94445d958307 ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet
    f89fef7710b2 usb: config: fix iteration issue in 'usb_get_bos_descriptor()'
    9aff7c51b440 USB: core: Change configuration warnings to notices
    c89b34eef336 USB: xhci-plat: fix legacy PHY double init
    307a6525c82a wifi: cfg80211: fix CQM for non-range use
    e8c1105c0ccc serial: sc16is7xx: add missing support for rs485 devicetree properties
    55061c323075 serial: sc16is7xx: Put IOControl register into regmap_volatile
    a491c7be35ed auxdisplay: hd44780: move cursor home after clear display command
    7f2116777541 Input: xpad - add HyperX Clutch Gladiate Support
    7a105de27538 btrfs: fix 64bit compat send ioctl arguments not initializing version member
    32912ee86931 btrfs: make error messages more clear when getting a chunk map
    4fc9c61c02c0 btrfs: send: ensure send_fd is writable
    86742a963fe6 btrfs: fix off-by-one when checking chunk map includes logical address
    9fe447c485ed btrfs: ref-verify: fix memory leaks in btrfs_ref_tree_mod()
    3f26d9b257ad btrfs: add dmesg output for first mount and last unmount of a filesystem
    0ad7d59e7901 parisc: Mark altinstructions read-only and 32-bit aligned
    cf2ae6494d1f parisc: Ensure 32-bit alignment on parisc unwind section
    2acfff573042 parisc: Mark jump_table naturally aligned
    3793cd2ded7c parisc: Drop the HP-UX ENOSYM and EREMOTERELEASE error codes
    79a1fdf4c212 parisc: Mark lock_aligned variables 16-byte aligned on SMP
    41d7852a0a39 parisc: Use natural CPU alignment for bug_table
    c7c78a4aa60a parisc: Mark ex_table entries 32-bit aligned in uaccess.h
    645e4b693b5e parisc: Mark ex_table entries 32-bit aligned in assembly.h
    c23b9eaca80c powerpc: Don't clobber f0/vs0 during fp|altivec register save
    e6bc42fae6b8 KVM: PPC: Book3S HV: Fix KVM_RUN clobbering FP/VEC user registers
    59419ebcc0a6 iommu/vt-d: Add MTL to quirk list to skip TE disabling
    0b48970ce102 bcache: revert replacing IS_ERR_OR_NULL with IS_ERR
    fc98ea2699c0 dma-buf: fix check in dma_resv_add_fence
    4da1556996fa cpufreq/amd-pstate: Fix the return value of amd_pstate_fast_switch()
    9d4c721c1866 powercap: DTPM: Fix unneeded conversions to micro-Watts
    a62ca58bb3cc nvme: check for valid nvme_identify_ns() before using it
    82b5e603edd4 dm verity: don't perform FEC for failed readahead IO
    6f5a9fc94bfc dm verity: initialize fec io before freeing it
    7cfc3884a8bb drm/amd/display: fix ABM disablement
    859a3a9f1e6b drm/amd/display: Update min Z8 residency time to 2100 for DCN314
    6ef7f13c72df drm/amd/display: Use DRAM speed from validation for dummy p-state
    a67c18704706 drm/amd/display: Remove min_dst_y_next_start check for Z8
    33ed892f0cde drm/amd/display: Include udelay when waiting for INBOX0 ACK
    c5cf436c8969 drm/amdgpu: Force order between a read and write to the same address
    c60884296300 drm/amd: Enable PCIe PME from D3
    cebccbe80165 scsi: sd: Fix system start for ATA devices
    181fd67dc5b9 scsi: Change SCSI device boolean fields to single bit flags
    7d2faae81b57 dm-verity: align struct dm_verity_fec_io properly
    da9f55393f69 ALSA: hda/realtek: Add supported ALC257 for ChromeOS
    f4b130213497 ALSA: hda/realtek: Headset Mic VREF to 100%
    65654af4c8a6 ALSA: hda: Disable power-save on KONTRON SinglePC
    ba911edc6c0c mmc: block: Be sure to wait while busy in CQE error recovery
    eab9ec644637 mmc: block: Do not lose cache flush during CQE error recovery
    e121f6d73d2e mmc: block: Retry commands in CQE error recovery
    3a9a9c256f02 mmc: cqhci: Fix task clearing in CQE error recovery
    def67fd8efde mmc: cqhci: Warn of halt or task clear failure
    2ebc8b758c7d mmc: cqhci: Increase recovery halt timeout
    d2fc10e262b5 mmc: sdhci-pci-gli: Disable LPM during initialization
    87ceaa8521fc firewire: core: fix possible memory leak in create_units()
    db0b69e46da6 pinctrl: avoid reload of p state in list iteration
    74820f7406a1 smb: client: report correct st_size for SMB and NFS symlinks
    60fed17ca5b8 cifs: Fix FALLOC_FL_INSERT_RANGE by setting i_size after EOF moved
    6406cce4b22d cifs: Fix FALLOC_FL_ZERO_RANGE by setting i_size if EOF moved

(From OE-Core rev: 70e1c509c81c5bc9b270076169b836562829ef51)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 83c13368918a69ad63ee957f3d03362e366afe42)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Bruce Ashfield
2b50e63a96 linux-yocto-rt/6.1: update to -rt18
Integrating the following commit(s) to linux-yocto-rt/6.1:

1/17 [
    Author: Tvrtko Ursulin
    Email: tvrtko.ursulin@intel.com
    Subject: drm/i915: Do not disable preemption for resets
    Date: Fri, 18 Aug 2023 22:45:25 -0400

    [commit 40cd2835ced288789a685aa4aa7bc04b492dcd45 in linux-rt-devel]

    Commit ade8a0f59844 ("drm/i915: Make all GPU resets atomic") added a
    preempt disable section over the hardware reset callback to prepare the
    driver for being able to reset from atomic contexts.

    In retrospect I can see that the work item at a time was about removing
    the struct mutex from the reset path. Code base also briefly entertained
    the idea of doing the reset under stop_machine in order to serialize
    userspace mmap and temporary glitch in the fence registers (see
    eb8d0f5af4ec ("drm/i915: Remove GPU reset dependence on struct_mutex"),
    but that never materialized and was soon removed in 2caffbf11762
    ("drm/i915: Revoke mmaps and prevent access to fence registers across
    reset") and replaced with a SRCU based solution.

    As such, as far as I can see, today we still have a requirement that
    resets must not sleep (invoked from submission tasklets), but no need to
    support invoking them from a truly atomic context.

    Given that the preemption section is problematic on RT kernels, since the
    uncore lock becomes a sleeping lock and so is invalid in such section,
    lets try and remove it. Potential downside is that our short waits on GPU
    to complete the reset may get extended if CPU scheduling interferes, but
    in practice that probably isn't a deal breaker.

    In terms of mechanics, since the preemption disabled block is being
    removed we just need to replace a few of the wait_for_atomic macros into
    busy looping versions which will work (and not complain) when called from
    non-atomic sections.

    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Chris Wilson <chris.p.wilson@intel.com>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/20230705093025.3689748-1-tvrtko.ursulin@linux.intel.com
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    [PG: backport from v6.4-rt ; minor context fixup caused by b7d70b8b06ed]
    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: Clark Williams <williams@redhat.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

2/17 [
    Author: Clark Williams
    Email: clrkwllms@kernel.org
    Subject: 'Linux 6.1.33-rt11'
    Date: Mon, 12 Jun 2023 10:40:02 -0500

    Signed-off-by: Clark Williams <clrkwllms@kernel.org>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

5/17 [
    Author: Sebastian Andrzej Siewior
    Email: bigeasy@linutronix.de
    Subject: io-mapping: don't disable preempt on RT in io_mapping_map_atomic_wc().
    Date: Fri, 10 Mar 2023 17:29:05 +0100

    io_mapping_map_atomic_wc() disables preemption and pagefaults for
    historical reasons.  The conversion to io_mapping_map_local_wc(), which
    only disables migration, cannot be done wholesale because quite some call
    sites need to be updated to accommodate with the changed semantics.

    On PREEMPT_RT enabled kernels the io_mapping_map_atomic_wc() semantics are
    problematic due to the implicit disabling of preemption which makes it
    impossible to acquire 'sleeping' spinlocks within the mapped atomic
    sections.

    PREEMPT_RT replaces the preempt_disable() with a migrate_disable() for
    more than a decade.  It could be argued that this is a justification to do
    this unconditionally, but PREEMPT_RT covers only a limited number of
    architectures and it disables some functionality which limits the coverage
    further.

    Limit the replacement to PREEMPT_RT for now.  This is also done
    kmap_atomic().

    Link: https://lkml.kernel.org/r/20230310162905.O57Pj7hh@linutronix.de
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reported-by: Richard Weinberger <richard.weinberger@gmail.com>
      Link: https://lore.kernel.org/CAFLxGvw0WMxaMqYqJ5WgvVSbKHq2D2xcXTOgMCpgq9nDC-MWTQ@mail.gmail.com
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    (cherry picked from commit 7eb16f23b9a415f062db22739e59bb144e0b24ab)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

6/17 [
    Author: Sebastian Andrzej Siewior
    Email: bigeasy@linutronix.de
    Subject: locking/rwbase: Mitigate indefinite writer starvation
    Date: Tue, 21 Mar 2023 17:11:40 +0100

    On PREEMPT_RT, rw_semaphore and rwlock_t locks are unfair to writers.
    Readers can indefinitely acquire the lock unless the writer fully acquired
    the lock, which might never happen if there is always a reader in the
    critical section owning the lock.

    Mel Gorman reported that since LTP-20220121 the dio_truncate test case
    went from having 1 reader to having 16 readers and that number of readers
    is sufficient to prevent the down_write ever succeeding while readers
    exist. Eventually the test is killed after 30 minutes as a failure.

    Mel proposed a timeout to limit how long a writer can be blocked until
    the reader is forced into the slowpath.

    Thomas argued that there is no added value by providing this timeout.  From
    a PREEMPT_RT point of view, there are no critical rw_semaphore or rwlock_t
    locks left where the reader must be preferred.

    Mitigate indefinite writer starvation by forcing the READER into the
    slowpath once the WRITER attempts to acquire the lock.

    Reported-by: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Mel Gorman <mgorman@techsingularity.net>
    Link: https://lore.kernel.org/877cwbq4cq.ffs@tglx
    Link: https://lore.kernel.org/r/20230321161140.HMcQEhHb@linutronix.de
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    (cherry picked from commit 286deb7ec03d941664ac3ffaff58814b454adf65)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

7/17 [
    Author: Paolo Abeni
    Email: pabeni@redhat.com
    Subject: revert: "softirq: Let ksoftirqd do its job"
    Date: Mon, 8 May 2023 08:17:44 +0200

    Due to the mentioned commit, when the ksoftirqd processes take charge
    of softirq processing, the system can experience high latencies.

    In the past a few workarounds have been implemented for specific
    side-effects of the above:

    commit 1ff688209e2e ("watchdog: core: make sure the watchdog_worker is not deferred")
    commit 8d5755b3f77b ("watchdog: softdog: fire watchdog even if softirqs do not get to run")
    commit 217f69743681 ("net: busy-poll: allow preemption in sk_busy_loop()")
    commit 3c53776e29f8 ("Mark HI and TASKLET softirq synchronous")

    but the latency problem still exists in real-life workloads, see the
    link below.

    The reverted commit intended to solve a live-lock scenario that can now
    be addressed with the NAPI threaded mode, introduced with commit
    29863d41bb6e ("net: implement threaded-able napi poll loop support"),
    and nowadays in a pretty stable status.

    While a complete solution to put softirq processing under nice resource
    control would be preferable, that has proven to be a very hard task. In
    the short term, remove the main pain point, and also simplify a bit the
    current softirq implementation.

    Note that this change also reverts commit 3c53776e29f8 ("Mark HI and
    TASKLET softirq synchronous") and commit 1342d8080f61 ("softirq: Don't
    skip softirq execution when softirq thread is parking"), which are
    direct follow-ups of the feature commit. A single change is preferred to
    avoid known bad intermediate states introduced by a patch series
    reverting them individually.

    Link: https://lore.kernel.org/netdev/305d7742212cbe98621b16be782b0562f1012cb6.camel@redhat.com/
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Tested-by: Jason Xing <kerneljasonxing@gmail.com>
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/57e66b364f1b6f09c9bc0316742c3b14f4ce83bd.1683526542.git.pabeni@redhat.com
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    (cherry picked from commit b8a04a538ed4755dc97c403ee3b8dd882955c98c)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

8/17 [
    Author: Peter Zijlstra
    Email: peterz@infradead.org
    Subject: debugobjects,locking: Annotate debug_object_fill_pool() wait type violation
    Date: Tue, 25 Apr 2023 17:03:13 +0200

    There is an explicit wait-type violation in debug_object_fill_pool()
    for PREEMPT_RT=n kernels which allows them to more easily fill the
    object pool and reduce the chance of allocation failures.

    Lockdep's wait-type checks are designed to check the PREEMPT_RT
    locking rules even for PREEMPT_RT=n kernels and object to this, so
    create a lockdep annotation to allow this to stand.

    Specifically, create a 'lock' type that overrides the inner wait-type
    while it is held -- allowing one to temporarily raise it, such that
    the violation is hidden.

    Reported-by: Vlastimil Babka <vbabka@suse.cz>
    Reported-by: Qi Zheng <zhengqi.arch@bytedance.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Qi Zheng <zhengqi.arch@bytedance.com>
    Link: https://lkml.kernel.org/r/20230429100614.GA1489784@hirez.programming.kicks-ass.net
    (cherry picked from commit 0cce06ba859a515bd06224085d3addb870608b6d)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

9/17 [
    Author: Wander Lairson Costa
    Email: wander@redhat.com
    Subject: sched: avoid false lockdep splat in put_task_struct()
    Date: Wed, 14 Jun 2023 09:23:22 -0300

    In put_task_struct(), a spin_lock is indirectly acquired under the kernel
    stock. When running the kernel in real-time (RT) configuration, the
    operation is dispatched to a preemptible context call to ensure
    guaranteed preemption. However, if PROVE_RAW_LOCK_NESTING is enabled
    and __put_task_struct() is called while holding a raw_spinlock, lockdep
    incorrectly reports an "Invalid lock context" in the stock kernel.

    This false splat occurs because lockdep is unaware of the different
    route taken under RT. To address this issue, override the inner wait
    type to prevent the false lockdep splat.

    Signed-off-by: Wander Lairson Costa <wander@redhat.com>
    Suggested-by: Oleg Nesterov <oleg@redhat.com>
    Suggested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Luis Goncalves <lgoncalv@redhat.com>
    Link: https://lore.kernel.org/r/20230614122323.37957-3-wander@redhat.com
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    (cherry picked from commit a5e446e728e89d5f5c5e427cc919bc7813c64c28)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

10/17 [
    Author: Sebastian Andrzej Siewior
    Email: bigeasy@linutronix.de
    Subject: mm/page_alloc: Use write_seqlock_irqsave() instead write_seqlock() + local_irq_save().
    Date: Fri, 23 Jun 2023 22:15:17 +0200

    __build_all_zonelists() acquires zonelist_update_seq by first disabling
    interrupts via local_irq_save() and then acquiring the seqlock with
    write_seqlock(). This is troublesome and leads to problems on
    PREEMPT_RT. The problem is that the inner spinlock_t becomes a sleeping
    lock on PREEMPT_RT and must not be acquired with disabled interrupts.

    The API provides write_seqlock_irqsave() which does the right thing in
    one step.
    printk_deferred_enter() has to be invoked in non-migrate-able context to
    ensure that deferred printing is enabled and disabled on the same CPU.
    This is the case after zonelist_update_seq has been acquired.

    There was discussion on the first submission that the order should be:
    	local_irq_disable();
    	printk_deferred_enter();
    	write_seqlock();

    to avoid pitfalls like having an unaccounted printk() coming from
    write_seqlock_irqsave() before printk_deferred_enter() is invoked. The
    only origin of such a printk() can be a lockdep splat because the
    lockdep annotation happens after the sequence count is incremented.
    This is exceptional and subject to change.

    It was also pointed that PREEMPT_RT can be affected by the printk
    problem since its write_seqlock_irqsave() does not really disable
    interrupts. This isn't the case because PREEMPT_RT's printk
    implementation differs from the mainline implementation in two important
    aspects:
    - Printing happens in a dedicated threads and not at during the
      invocation of printk().
    - In emergency cases where synchronous printing is used, a different
      driver is used which does not use tty_port::lock.

    Acquire zonelist_update_seq with write_seqlock_irqsave() and then defer
    printk output.

    Fixes: 1007843a91909 ("mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock")
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20230623201517.yw286Knb@linutronix.de
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    (cherry picked from commit 4d1139baae8bc4fff3728d1d204bdb04c13dbe10)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

11/17 [
    Author: Sebastian Andrzej Siewior
    Email: bigeasy@linutronix.de
    Subject: bpf: Remove in_atomic() from bpf_link_put().
    Date: Wed, 14 Jun 2023 10:34:30 +0200

    bpf_free_inode() is invoked as a RCU callback. Usually RCU callbacks are
    invoked within softirq context. By setting rcutree.use_softirq=0 boot
    option the RCU callbacks will be invoked in a per-CPU kthread with
    bottom halves disabled which implies a RCU read section.

    On PREEMPT_RT the context remains fully preemptible. The RCU read
    section however does not allow schedule() invocation. The latter happens
    in mutex_lock() performed by bpf_trampoline_unlink_prog() originated
    from bpf_link_put().

    It was pointed out that the bpf_link_put() invocation should not be
    delayed if originated from close(). It was also pointed out that other
    invocations from within a syscall should also avoid the workqueue.
    Everyone else should use workqueue by default to remain safe in the
    future (while auditing the code, every caller was preemptible except for
    the RCU case).

    Let bpf_link_put() use the worker unconditionally. Add
    bpf_link_put_direct() which will directly free the resources and is used
    by close() and from within __sys_bpf().

    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20230614083430.oENawF8f@linutronix.de
    (cherry picked from commit ab5d47bd41b1db82c295b0e751e2b822b43a4b5a)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

12/17 [
    Author: Thomas Gleixner
    Email: tglx@linutronix.de
    Subject: posix-timers: Ensure timer ID search-loop limit is valid
    Date: Thu, 1 Jun 2023 20:58:47 +0200

    posix_timer_add() tries to allocate a posix timer ID by starting from the
    cached ID which was stored by the last successful allocation.

    This is done in a loop searching the ID space for a free slot one by
    one. The loop has to terminate when the search wrapped around to the
    starting point.

    But that's racy vs. establishing the starting point. That is read out
    lockless, which leads to the following problem:

    CPU0	  	      	     	   CPU1
    posix_timer_add()
      start = sig->posix_timer_id;
      lock(hash_lock);
      ...				   posix_timer_add()
      if (++sig->posix_timer_id < 0)
          			             start = sig->posix_timer_id;
         sig->posix_timer_id = 0;

    So CPU1 can observe a negative start value, i.e. -1, and the loop break
    never happens because the condition can never be true:

      if (sig->posix_timer_id == start)
         break;

    While this is unlikely to ever turn into an endless loop as the ID space is
    huge (INT_MAX), the racy read of the start value caught the attention of
    KCSAN and Dmitry unearthed that incorrectness.

    Rewrite it so that all id operations are under the hash lock.

    Reported-by: syzbot+5c54bd3eb218bb595aa9@syzkaller.appspotmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
    Link: https://lore.kernel.org/r/87bkhzdn6g.ffs@tglx

    (cherry picked from commit 8ce8849dd1e78dadcee0ec9acbd259d239b7069f)
    Signed-off-by: Clark Williams <clark.williams@gmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: 3ada2757f8c8987af988dc8cd7525f755571c31f)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 53e612c42ce438b100505c93d8bb65e59f49895d)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Bruce Ashfield
908122a77d linux-yocto/6.1: drop removed IMA option
Integrating the following commit(s) to linux-yocto/.:

1/1 [
    Author: Paul Gortmaker
    Email: paul.gortmaker@windriver.com
    Subject: features/ima: drop now retired IMA_TRUSTED_KEYRING option
    Date: Wed, 6 Dec 2023 09:15:38 -0500

    Unfortunately linux-stable backported this:

      Subject: ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig

      From: Nayna Jain <nayna@linux.ibm.com>

      [ Upstream commit 5087fd9e80e539d2163accd045b73da64de7de95 ]

      Time to remove "IMA_TRUSTED_KEYRING".

    ...to all releases still being maintained.

    stable-queue$git grep -l 5087fd9e80e539
    releases/5.10.195/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/5.15.132/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/5.4.257/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/6.1.53/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/6.4.16/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch
    releases/6.5.3/ima-remove-deprecated-ima_trusted_keyring-kconfig.patch

    So now when someone uses the feature, it triggers a do_kernel_configcheck
    warning when the audit runs.

    We added this file way back in 2019 so this fix will be needed on all
    active branches that are using an LTS linux-stable kernel listed above.

    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: 72adeea0757a7de664092cfac6139c28c7f6e999)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit db11dfcd8304ded18fd21d7c4c2db50331402666)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Ross Burton
3c4801b91a linux-yocto: update CVE exclusions
(From OE-Core rev: d705c4071d0f829ad3348af9899e6a3a4ea3fa48)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 4cfc4187ac90a4504b93a01ff6333d14928728a8)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Deepthi Hemraj
4f9e22bd67 rust: Fix CVE-2023-40030
CVE:CVE-2023-40030

This converts the feature name validation check from a warning to an error

Upstream-Status: Backport from 9835622853

Reference: https://nvd.nist.gov/vuln/detail/CVE-2023-40030

(From OE-Core rev: c55e8f8b1971cc9f311b6a18a34c4c34f732177a)

Signed-off-by: Deepthi Hemraj <Deepthi.Hemraj@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Dhairya Nagodra
086f6f55c9 cve-update-nvd2-native: increase the delay between subsequent request failures
Sometimes NVD servers are unstable and return too many errors.
There is an option to have higher fetch attempts to increase the chances
of successfully fetching the CVE data.

Additionally, it also makes sense to progressively increase the delay
after a failed request to an already unstable or busy server.
The increase in delay is reset after every successful request and
the maximum delay is limited to 30 seconds.

Also, the logs are improved to give more clarity.

(From OE-Core rev: d24b1ce8485615b9359c0d319c64eb7756492cf8)

Signed-off-by: Dhairya Nagodra <dnagodra@cisco.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 7101d654635b707e56b0dbae8c2146b312d211ea)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Dhairya Nagodra
a8768bdaf8 cve-update-nvd2-native: faster requests with API keys
As per NVD, the public rate limit is 5 requests in 30s (6s delay).
Using an API key increases the limit to 50 requests in 30s (0.6s delay).
However, NVD still recommends sleeping for several seconds so that the
other legitimate requests are serviced without denial or interruption.
Keeping the default sleep at 6 seconds and 2 seconds with an API key.

For failures, the wait time is unchanged (6 seconds).

Reference: https://nvd.nist.gov/developers/start-here#RateLimits

(From OE-Core rev: 6998b433a0b0609bbcfb99e7c8e96e5d6b534921)

Signed-off-by: Dhairya Nagodra <dnagodra@cisco.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 5c32e2941d1dc3d04a799a1b7cbd275c1ccc9e79)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Peter Marko
dc31801ddb cve-update-nvd2-native: make number of fetch attemtps configurable
Sometimes NVD servers are unstable and return too many errors.

Last time we increased number of attempts from 3 to 5, but
further increasing is not reasonable as in normal case
too many retries is just abusive.

Keep retries low as default and allow to increase as needed.

(From OE-Core rev: 3573b0ab09359f7eca37fd86400dc3945f5fa7c1)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 6b6fd8043d83b99000054ab6ad2c745d07c6bcc1)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Peter Marko
29dd0df225 cve-update-nvd2-native: remove unused variable CVE_SOCKET_TIMEOUT
This variable is not referenced in oe-core anymore.

(From OE-Core rev: 5e545e1226dbec48e7c60735ec5969ec0e356f21)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 905b45a814cb33327503b793741c19b44c8550b3)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Richard Purdie
0b4769de4a bitbake: lib/bb: Add workaround for libgcc issues with python 3.8 and 3.9
With python 3.8 and 3.9, we see intermittent errors of:

libgcc_s.so.1 must be installed for pthread_cancel to work
Aborted (core dumped)

which seem related to:

https://stackoverflow.com/questions/64797838/libgcc-s-so-1-must-be-installed-for-pthread-cancel-to-work
https://bugs.ams1.psf.io/issue42888

These tend to occur on debian 11 and ubuntu 20.04.

Workaround this by ensuring libgcc is preloaded in all cases.

(Bitbake rev: 72bf75f0b2e7f36930185e18a1de8277ce7045d8)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2024-01-04 04:09:43 -10:00
Richard Purdie
958a1ab3d0 testimage: Exclude wtmp from target-dumper commands
wtmp is filled with binary data which the run_serial command can't cope with.
Catting this results in confusion of the serial interface and potentially large
backlogs of data in the buffers which can hang qemu.

Exclude the problematic files from the command.

(From OE-Core rev: 1a14503ff5b4bc8192ae1b0d22622b8aefb718be)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 599ac08a6f6fb3f6a89a897c8e06367c63c2f979)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Rasmus Villemoes
c2bf788604 perf: lift TARGET_CC_ARCH modification out of security_flags.inc
Building perf without security_flags.inc being included in one's
distro results in the buildpaths warning

WARNING: perf-1.0-r9 do_package_qa: QA Issue: File /usr/bin/trace in
package perf contains reference to TMPDIR

because the ${DEBUG_PREFIX_MAP} does not get used. Most recipes get
that from CFLAGS, but the perf recipe explicitly unsets that.

Now ${SELECTED_OPTIMIZATION} of course contains more than just
${DEBUG_FLAGS}/${DEBUG_PREFIX_MAP}. For most TUs, perf's build system
adds its own optimization flags (-O6 for odd reasons), so for those
including the -O2 or -Og doesn't change anything. But looking at the
.o.cmd files show that there are some TUs which currently get built
without any -O flag. So for those adding the distro's
SELECTED_OPTIMIZATION seem to be the right thing to do.

(cherry-picked from Oe-Core rev: aa01c9122ef4a2159df503ef6ed25e802277f13a)

(From OE-Core rev: 34f2f67055a9a29765629abef28ffa6b66c8ed41)

Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Sundeep KOKKONDA
e0aac6bc37 binutils: stable 2.41 branch updates
Below commits on binutils-2.41 stable branch are updated.
eb49941e7e1 Gold/MIPS: Add targ_extra_size=64 for mips32 triples
c27eff41737 Gold/MIPS: Use EM_MIPS instead of EM_MIPS_RS3_LE for little endian
7fe76f02413 x86-64: fix suffix-less PUSH of symbol address

(From OE-Core rev: 8408a44331a0c9e5ea86d822cebec06dcf495694)

Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Sundeep KOKKONDA
4941042518 glibc: stable 2.38 branch updates
Below commits on glibc-2.38 stable branch are updated.
44f757a636 LoongArch: Delete excessively allocated memory.
bf5aa419cb elf: Fix wrong break removal from 8ee878592c
63dbbc5c52 sysdeps: sem_open: Clear O_CREAT when semaphore file is expected to exist [BZ #30789]
1e04dcec49 Revert "elf: Move l_init_called_next to old place of l_text_end in link map"
719866ab2f Revert "elf: Always call destructors in reverse constructor order (bug 30785)"
e0b6c9706c Revert "elf: Remove unused l_text_end field from struct link_map"

(From OE-Core rev: 88e95c24c4b7b440e4ab4653fb93bddcb7524a58)

Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Wang Mingyu
55e874099a ghostscript: upgrade 10.02.0 -> 10.02.1
upgrade include CVE-2023-46751.

(cherry pick from Oe-Core rev: 9492c2d51a08fbd4c107540a5a833b1a3fb70504 )

(From OE-Core rev: a26c9acc8a853bfa13f08916c596a52da26088e4)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Lee Chee Yang
2ce6765f8b perl: 5.38.0 -> 5.38.2
update include fix for CVE-2023-47100.

(From OE-Core rev: d429d25beb8d4afba106b6dec957269356cb57ef)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Lee Chee Yang
e2d2043246 perlcross: update to 1.5.2
remove upstreamed 0001-cnf-configure_pfmt.sh-add-32-bit-integer-format-defi.patch

(From OE-Core rev: 70b521284f8dbe3b38a2be9b312c632b3a51ef73)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Lee Chee Yang
664c3401c5 curl: fix CVE-2023-46218
(From OE-Core rev: 000b2a380021f2c7fd102b6523a986c2e7ad20ae)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Lee Chee Yang
91bd70dbea grub: fix CVE-2023-4692 CVE-2023-4693
checkout CVE-2023-4692.patch from OE-Core rev:
c89835b37366dde6c74f8221fd5a295ecabf8225

checkout CVE-2023-4693.patch from OE-Core rev:
1bbbba098dba85ec1b875512d75f7eca9026e781

(From OE-Core rev: 915208a01ce3a5fc6a0c636225e96d385709986b)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:26 -10:00
Lee Chee Yang
84dac0e607 avahi: add CVE-2023-38473.patch to SRC_URL
patch file added since Oe-Core rev a9203c46cd64c3ec5e5b00e381bbac85733f85df but not part of SRC_URI.

(From OE-Core rev: c9abf1f8395692080576d0fe9b2f28ea2240741b)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-22 05:23:25 -10:00
Marta Rybczynska
53387c5ca3 bitbake: toastergui: verify that an existing layer path is given
Verify that an existing layer path was given when adding a new
layer.

Manually using the shell for globbing is unnecessary, use the glob
function instead for cleaner code.

(Bitbake rev: f02c3ccc46bfc78ff3ec577b84247a37cbb1a58c)

Signed-off-by: Marta Rybczynska <marta.rybczynska@syslinbit.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:27:18 -10:00
Peter Kjellerstedt
59c56c080d bitbake: command: Make parseRecipeFile() handle virtual recipes correctly
Running `devtool search gcc` would result in errors like this for
virtual recipes:

  ERROR: When reparsing
  .../meta/recipes-devtools/gcc/libgcc-initial_13.2.bb:do_populate_sysroot,
  the basehash value changed from
  b1cd809ed98cef9db0fb1b17d34c4083e739c336f9d5619b89715b0294d81af5 to
  44c2f92781dc4a20e98b7bb4724e204e64b101905fa75e71241a574b725997dc. The
  metadata is not deterministic and this needs to be fixed.
  ERROR: The following commands may help:
  ERROR: $ bitbake libgcc-initial -cdo_populate_sysroot -Snone
  ERROR: Then:
  ERROR: $ bitbake libgcc-initial -cdo_populate_sysroot -Sprintdiff

The reason was the newly introduced :layer-<layername> override, which
is used, e.g., in meta/classes-global/insane.bbclass to add the
patch-status QA test only for the meta layer:

  ERROR_QA:append:layer-core = " patch-status"

When tinfoil parsed the recipes using the parseRecipeFile() function, it
failed to properly identify the layername for virtual recipes, which
resulted in the error above.

The correct thing to do is to make parseRecipeFile() call
bb.cache.virtualfn2realfn() to convert the virtual filename into a real
filename and virtual class.

(Bitbake rev: 4684d8886834595c3b81d97befecad69ac73545f)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:27:18 -10:00
Michael Opdenacker
1a66f16c14 test-manual: use working example
(From yocto-docs rev: fac88b9e80646a68b31975c915a718a9b6b2b439)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Lee Chee Yang
0152e49589 migration-guides: add release notes for 4.0.15
(From yocto-docs rev: 971a428a14adc7f438489670eb7cf8a4fc13568f)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
a41c9ae7aa dev-manual: runtime-testing: fix test module name
(From yocto-docs rev: d2d114ea2ba1994d244ce4af92119158ac1954bf)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Simone Weiß
815ef8ecb3 manuals: brief-yoctoprojectqs: align variable order with default local.conf
Align the order from `BB_SIGNATURE_HANDLER` to `SSTATE_MIRRORS` in Quick Build
with the order in the default local conf. While trivial it is easier to find,
if the order matches.

(From yocto-docs rev: 80af32ab4d5ff4e7ee834477da748f2ba5bdb6de)

Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Lee Chee Yang
ad02f70585 migration-guides: reword fix in release-notes-4.3.1
Reword a fix to align with the final release notes.

(From yocto-docs rev: 290063679c2f67b022a19255031b8d3293508935)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
e19a175f46 test-manual: add or improve hyperlinks
(From yocto-docs rev: 134fe8fe8ce7e310d65a1e9d8ec8a9e16d87704c)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
e5082d1c19 test-manual: explicit or fix file paths
(From yocto-docs rev: 090276305a23acb8548c74cc2eeb0a23970d7b42)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
5a7d733984 test-manual: add links to python unittest
Better than using "python unittest" without any
special formatting.

(From yocto-docs rev: b8771fb08b5efc7e6f2b4dbb5bd4df2bb1942ecf)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
f04a8b052f test-manual: resource updates
(From yocto-docs rev: deb482a93932b163e82f0c78025a8504d360692d)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
12bb768b27 test-manual: text and formatting fixes
(From yocto-docs rev: b3ac0e3657d97c0d437f87ee7ce620b507a88f56)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Peter Kjellerstedt
5165ecaa14 dev-manual: Discourage the use of SRC_URI[md5sum]
SRC_URI[md5sum] has been deprecated for a long time. Discourage its use
by removing it from examples and note that it should be replaced by
SRC_URI[sha256sum] when updating recipes.

Also mention that bitbake supports other checksums, though they are not
commonly used.

(From yocto-docs rev: 99d176aa9bd88750eab9314b9d8c941abeff6726)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Paul Barker
6f8cbeed02 ref-manual: Fix reference to MIRRORS/PREMIRRORS defaults
After the following meta-yocto commits, MIRRORS & PREMIRRORS are no
longer set in the poky distro config file:

  67b79df4fbff ("poky.conf: remove redundant MIRRORS")
  1b71a3b9418f ("poky: Drop PREMIRRORS entries for scms")

(From yocto-docs rev: 6e9b733ff83533da6b59af5073cc7efa93406ac9)

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Lee Chee Yang
a6340ebd3c migration-guide: add release notes for 4.0.14
(From yocto-docs rev: bd6837e48e473d2e3ead75991c9465a201619bd2)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
9fe70d68fc manuals: fix URL
[YOCTO #15279]

(From yocto-docs rev: 4c280217729cd7543c0fc4b4a5299db2e95d8cda)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reported-by:  Steve Landherr <steve-yocto@chiquapin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
97c06bd351 ref-manual: releases.svg: update nanbield release status
- nanbield is now released
- update the start and end dates

(From yocto-docs rev: 2fa71834987a5954ccef8bd2747431022c96533e)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Lee Chee Yang
e20b20060a migration-guide: add release notes for 4.2.4
release notes based on 4.2.4 rc3.

(From yocto-docs rev: 9f4d336196380201d567d8b9a66f109d82ce3e67)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
5f937d6bc1 dev-manual: layers: update link to YP Compatible form
(From yocto-docs rev: 4f97b922b360931b6b3f3da8659d7bad5b470c80)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reported-by: Megan Knight <megankn@amazon.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Justin Bronder
6891ec882c contributor-guide: add License-Update tag
Porting from the old wiki
https://www.openembedded.org/index.php?title=Commit_Patch_Message_Guidelines&oldid=10935#Describing_license_changes

(From yocto-docs rev: 42bfd6eba02d90493a3d10f053e1862b6467b23a)

Signed-off-by: Justin Bronder <jsbronder@cold-front.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
26124fcc41 contributor-guide: fix command option
"--subject-prefix" applies to "git format-patch", not "git send-email"

(From yocto-docs rev: 870935bb94f40adbd61220bdb4b6f1eeaaea1ece)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Michael Opdenacker
7862143282 migration-guides: release 3.5 is actually 4.0
(From yocto-docs rev: 2a38e48f774204cd444738050d8fa8c8df86839b)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-21 06:18:23 -10:00
Richard Purdie
046b70083f sstate: Ensure sstate searches update file mtime
Commands like "bitbake XXX -S printdiff" search for sstate files but don't download
them. This means that local files aren't touched as the download code would do, meaning
the sstate cleanup scripts can delete them. This can then lead to obtuse build failures.

Have the search code touch local files in the same way as the main code paths would to
avoid these files disappearing.

Move the function to a common touch() function in lib/oe instead of duplicating code.

(From OE-Core rev: 427c43d8e3315fa6872feaa71d135de60c810de7)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a27fc0bd5706ab5b9c68a0271fcf57377a678cdf)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Dmitry Baryshkov
825972095a meson: use correct targets for rust binaries
Follow the example of rust and cargo classes and pass RUST_HOST_SYS and
RUST_BUILD_SYS to rustc's --target argument instead of bare HOST_SYS and
BUILD_SYS.

(From OE-Core rev: ea5e46a627dc7385c4d7732299618b6392b7a407)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 1471c6c076f544ccd6f0722c82878311199881a7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Peter Kjellerstedt
1a47e21fff oeqa/selftest/tinfoil: Add tests that parse virtual recipes
Running `devtool search gcc` would result in errors for virtual recipes.
The reason was the newly introduced :layer-<layername> override.

When tinfoil parsed the recipes using the parseRecipeFile() function, it
failed to properly identify the layername for virtual recipes, which
resulted in the errors.

Add tests that exercise these code paths through parseRecipeFile().

(From OE-Core rev: f415c97ad538ce046c87af3fc9eeec6599313764)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Zoltán Böszörményi
88430ae8b7 update_gtk_icon_cache: Fix for GTK4-only builds
Try to execute both gtk-update-icon-cache and
gtk4-update-icon-cache after checking whether the
commands are available.

This attempts to match what gtk-icon-cache.bbclass is doing.

This fixes running update_gtk_icon_cache during do_rootfs
for an image that contains only GTK4 related packages.

(From OE-Core rev: 9de44606319c1bcf5a0a80399073e391954dfdbe)

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Ross Burton
4a256d442c linux-yocto: update CVE exclusions
(From OE-Core rev: c8b93b08f663384f358fed72b9d3d86172fae8b7)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 34835847442c15ebe12970bc31b6a949e66da48e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
d7de2161d2 linux-yocto/6.5: update to v6.5.13
Updating  to the latest korg -stable release that comprises
the following commits:

    4631960b4700 Linux 6.5.13
    a9d6c0c5a6bd net/mlx5e: Track xmit submission to PTP WQ after populating metadata map
    c712654d6f36 net/mlx5e: Avoid referencing skb after free-ing in drop path of mlx5e_sq_xmit_wqe
    2c9de867ca28 tracing: Have trace_event_file have ref counters
    1f59a2a92855 powerpc/powernv: Fix fortify source warnings in opal-prd.c
    7aded92aeb75 drm/amd/display: Change the DMCUB mailbox memory location from FB to inbox
    353bc3849241 drm/amd/display: Enable fast plane updates on DCN3.2 and above
    5b14cf37b9f0 drm/amd/display: fix a NULL pointer dereference in amdgpu_dm_i2c_xfer()
    562176ea823a drm/amd/display: Fix DSC not Enabled on Direct MST Sink
    5b37ee61b89d drm/amd/display: Guard against invalid RPTR/WPTR being set
    f3385c9b8ed4 drm/amdgpu: Fix possible null pointer dereference
    ed8fc80b1950 drm/amdgpu: lower CS errors to debug severity
    b827ed7014a0 drm/amdgpu: fix error handling in amdgpu_bo_list_get()
    7c6574dd032c drm/amdgpu: fix error handling in amdgpu_vm_init
    8c3b198fac82 drm/amdgpu: don't use ATRM for external devices
    6f6177558004 drm/amdgpu: add a retry for IP discovery init
    a5bd0c0d3189 drm/amdgpu: fix GRBM read timeout when do mes_self_test
    045d5eec88d2 drm/amdgpu: don't use pci_is_thunderbolt_attached()
    02eb46bb2150 drm/amdgpu/smu13: drop compute workload workaround
    5392874af8ab drm/amd/pm: Fix error of MACO flag setting code
    5d614170fa1f drm/i915: Flush WC GGTT only on required platforms
    1e019d6bcb44 drm/i915: Fix potential spectre vulnerability
    0990bd1ff1bf drm/i915: Bump GLK CDCLK frequency when driving multiple pipes
    9dfc6bc4a6a2 drm/i915/mtl: Support HBR3 rate with C10 phy and eDP in MTL
    59d2eee68804 drm: bridge: it66121: ->get_edid callback must not return err pointers
    f0a11733bd03 drm/amd/pm: Handle non-terminated overdrive commands.
    e3b83d87c93e ext4: fix racy may inline data check in dio write
    8b7e09f9b955 ext4: properly sync file size update after O_SYNC direct IO
    13859f9e6493 ext4: add missed brelse in update_backups
    edfb7b8d36ab ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks
    079d796c58f2 ext4: correct the start block of counting reserved clusters
    8547701c3b0a ext4: correct return value of ext4_convert_meta_bg
    ec51fb39b173 ext4: mark buffer new if it is unwritten to avoid stale data exposure
    a9ceb3e26c7c ext4: correct offset of gdb backup in non meta_bg group to update_backups
    aaa3bd727255 ext4: apply umask if ACL support is disabled
    d1769a4c92b3 ext4: make sure allocate pending entry not fail
    a937cf1c90d1 ext4: fix race between writepages and remount
    cdbfce536cfa Revert "net: r8169: Disable multicast filter for RTL8168H and RTL8107E"
    e33abcd82f9c media: qcom: camss: Fix csid-gen2 for test pattern generator
    51792b41ee52 media: qcom: camss: Fix invalid clock enable bit disjunction
    4122d47ad139 media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3
    c25c6d618eda media: qcom: camss: Fix missing vfe_lite clocks check
    d8cd7a8645c2 media: qcom: camss: Fix VFE-480 vfe_disable_output()
    e428d0f3e42f media: qcom: camss: Fix VFE-17x vfe_disable_output()
    820b967c0384 media: qcom: camss: Fix vfe_get() error jump
    2dbb91675d6b media: qcom: camss: Fix pm_domain_on sequence in probe
    967a522b5123 mmc: sdhci-pci-gli: GL9750: Mask the replay timer timeout of AER
    ddb96a13b277 r8169: add handling DASH when DASH is disabled
    89a0fc500471 r8169: fix network lost after resume on DASH systems
    533108f04a57 selftests: mptcp: fix fastclose with csum failure
    c8e74731fff0 mptcp: fix setsockopt(IP_TOS) subflow locking
    e729027888e9 mptcp: add validity check for sending RM_ADDR
    342b528c0e84 mptcp: deal with large GSO size
    9a7982259028 mm: kmem: drop __GFP_NOFAIL when allocating objcg vectors
    77227943445e mm: fix for negative counter: nr_file_hugepages
    641061405579 mmc: sdhci-pci-gli: A workaround to allow GL9750 to enter ASPM L1.2
    5fb6a480a0fa riscv: kprobes: allow writing to x0
    c93d4b75f58e riscv: correct pt_level name via pgtable_l5/4_enabled
    85efe51890ef riscv: mm: Update the comment of CONFIG_PAGE_OFFSET
    05b2911ac941 riscv: put interrupt entries into .irqentry.text
    8d497507ce26 riscv: Using TOOLCHAIN_HAS_ZIHINTPAUSE marco replace zihintpause
    9c3115d8549a LoongArch: Mark __percpu functions as always inline
    4ce011ebb640 NFSD: Update nfsd_cache_append() to use xdr_stream
    90ceb1e85869 nfsd: fix file memleak on client_opens_release
    3cdc6b90ef59 dm-verity: don't use blocking calls from tasklets
    f6af719e355d dm-bufio: fix no-sleep mode
    02d2f24aaeee drm/mediatek/dp: fix memory leak on ->get_edid callback error path
    d82dbbb169f2 drm/mediatek/dp: fix memory leak on ->get_edid callback audio detection
    f310c613afdf media: ccs: Correctly initialise try compose rectangle
    da2617b32b4d media: venus: hfi: add checks to handle capabilities from firmware
    bc3ade714672 media: venus: hfi: fix the check to handle session buffer requirement
    8da410e429d2 media: venus: hfi_parser: Add check to keep the number of codecs within range
    c7f45dd39318 media: sharp: fix sharp encoding
    3163d9bf64e5 media: lirc: drop trailing space from scancode transmit
    9de787139b02 f2fs: split initial and dynamic conditions for extent_cache
    6fca08fd3085 f2fs: avoid format-overflow warning
    ea8df211997b f2fs: set the default compress_level on ioctl
    e08a8d94f982 f2fs: do not return EFSCORRUPTED, but try to run online repair
    3ec63129137e i2c: i801: fix potential race in i801_block_transaction_byte_by_byte
    1c5ffd27c542 gfs2: don't withdraw if init_threads() got interrupted
    e92237ba0704 net: phylink: initialize carrier state at creation
    55c7b046cd1f net: dsa: lan9303: consequently nested-lock physical MDIO
    82c9a9456b82 net: ethtool: Fix documentation of ethtool_sprintf()
    d67fce6b1368 s390/ap: fix AP bus crash on early config change callback invocation
    bc73f5ef079c i2c: designware: Disable TX_EMPTY irq while waiting for block length byte
    0e094322aad6 sbsa_gwdt: Calculate timeout with 64-bit math
    3a0a398bedeb lsm: fix default return value for inode_getsecctx
    b564c10d4e95 lsm: fix default return value for vm_enough_memory
    695a358a3905 Revert "i2c: pxa: move to generic GPIO recovery"
    db205ac66fda Revert ncsi: Propagate carrier gain/loss events to the NCSI controller
    30fb55283841 ALSA: hda/realtek: Add quirks for HP Laptops
    d9d0d1c1d880 ALSA: hda/realtek: Enable Mute LED on HP 255 G10
    1bc8a597307c ALSA: hda/realtek - Enable internal speaker of ASUS K6500ZC
    966b51c45080 ALSA: hda/realtek - Add Dell ALC295 to pin fall back table
    96865995ccd2 ALSA: hda/realtek: Enable Mute LED on HP 255 G8
    746820e6963a ALSA: info: Fix potential deadlock at disconnection
    0b214ccbc778 btrfs: zoned: wait for data BG to be finished on direct IO allocation
    f13f25184a9f xfs: recovery should not clear di_flushiter unconditionally
    64af62c8977a cifs: Fix encryption of cleared, but unset rq_iter data buffers
    50f4b57fc561 cifs: do not reset chan_max if multichannel is not supported at mount
    48a8c1891851 cifs: force interface update before a fresh session setup
    9bf434f12957 cifs: reconnect helper should set reconnect for the right channel
    b9bb9607b1fc smb: client: fix potential deadlock when releasing mids
    6db94d08359c smb: client: fix use-after-free in smb2_query_info_compound()
    89929ea46f9c smb: client: fix use-after-free bug in cifs_debug_data_proc_show()
    ef97cb5e93f7 smb3: fix caching of ctime on setxattr
    2d29a938bf62 smb3: allow dumping session and tcon id to improve stats analysis and debugging
    e0748969c6d7 smb3: fix touch -h of symlink
    34e11da3eb40 smb3: fix creating FIFOs when mounting with "sfu" mount option
    e28562567c72 fs: add ctime accessors infrastructure
    45fa91b09bdb xhci: Enable RPM on controllers that support low-power states
    b57e254d5ef4 parisc/power: Fix power soft-off when running on qemu
    339ac29c6811 parisc/pgtable: Do not drop upper 5 address bits of physical address
    c1b8ef9d7b8f parisc: Prevent booting 64-bit kernels on PA1.x machines
    6fc3231df968 mm/hugetlb: use nth_page() in place of direct struct page manipulation
    45b910169533 mm/hugetlb: prepare hugetlb_follow_page_mask() for FOLL_PIN
    a231a59ec94c rcutorture: Fix stuttering races and other issues
    c85633590547 torture: Make torture_hrtimeout_ns() take an hrtimer mode parameter
    05eb10004221 torture: Move stutter_wait() timeouts to hrtimers
    3bdabd7be640 torture: Make torture_hrtimeout_*() use TASK_IDLE
    aac54ca1a64c torture: Add lock_torture writer_fifo module parameter
    525bcb9c290c torture: Add a kthread-creation callback to _torture_create_kthread()
    ecc89436729b PCI: Lengthen reset delay for VideoPropulsion Torrent QN16e card
    776edaebd616 PCI: qcom-ep: Add dedicated callback for writing to DBI2 registers
    b5b24f7693fe pmdomain: imx: Make imx pgc power domain also set the fwnode
    d2cc57f71327 pmdomain: amlogic: Fix mask for the second NNA mem PD domain
    47ceb5151c49 pmdomain: bcm: bcm2835-power: check if the ASB register is equal to enable
    37179fcc916b cxl/port: Fix delete_endpoint() vs parent unregistration race
    92ce68f7db0a cxl/region: Fix x1 root-decoder granularity calculations
    276c11fba093 i3c: master: svc: fix random hot join failure since timeout error
    d85cce9a5cbc i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen
    ccf8c93a3cdb i3c: master: svc: fix check wrong status register in irq handler
    de3f849e2fb9 i3c: master: svc: fix ibi may not return mandatory data byte
    f448576547a1 i3c: master: svc: fix wrong data return when IBI happen during start frame
    3cce94303f3d i3c: master: svc: fix race condition in ibi work thread
    7dc6161114a3 i3c: master: cdns: Fix reading status register
    9090c5537c93 cxl/region: Do not try to cleanup after cxl_region_setup_targets() fails
    3c6facb35781 mtd: cfi_cmdset_0001: Byte swap OTP info
    b3759b87052f mm: make PR_MDWE_REFUSE_EXEC_GAIN an unsigned long
    cabf0ae76cc5 mm/memory_hotplug: use pfn math in place of direct struct page manipulation
    bec1ed638f26 mm/cma: use nth_page() in place of direct struct page manipulation
    569955a7bfa9 s390/cmma: fix detection of DAT pages
    61c903a28d73 s390/mm: add missing arch_set_page_dat() call to vmem_crst_alloc()
    6c4a91f9bb4a dmaengine: stm32-mdma: correct desc prep when channel running
    5f74466e7a1e mcb: fix error handling for different scenarios when parsing
    b2f00346f57b driver core: Release all resources during unbind before updating device links
    6d6b2578403a tracing: Have the user copy of synthetic event address use correct context
    1d221014dba1 selftests/clone3: Fix broken test under !CONFIG_TIME_NS
    8c3fa52a46ff i2c: core: Run atomic i2c xfer when !preemptible
    f81088082b15 kernel/reboot: emergency_restart: Set correct system_state
    21468aca2b52 quota: explicitly forbid quota files from being encrypted
    3925c0fb5932 jbd2: fix potential data lost in recovering journal raced with synchronizing fs bdev
    e0fe12248779 ASoC: codecs: wsa-macro: fix uninitialized stack variables with name prefix
    19ed109e1aba hid: lenovo: Resend all settings on reset_resume for compact keyboards
    496c5ca14f39 selftests/resctrl: Reduce failures due to outliers in MBA/MBM tests
    49ff765672bb selftests/resctrl: Move _GNU_SOURCE define into Makefile
    a91a4e52bfe7 selftests/resctrl: Remove duplicate feature check from CMT test
    23e60a15bbd0 selftests/resctrl: Fix uninitialized .sa_flags
    6f33bfaa762b ASoC: codecs: wsa883x: make use of new mute_unmute_on_trigger flag
    94da565664b0 ASoC: soc-dai: add flag to mute and unmute stream during trigger
    e31eb7d9b7e4 netfilter: nf_tables: split async and sync catchall in two functions
    e3e68e617bfa netfilter: nf_tables: remove catchall element in GC sync path
    0d29174959bc ima: detect changes to the backing overlay file
    f2f0144e826b ima: annotate iint mutex to avoid lockdep false positive warnings
    4ce77b023d42 mfd: qcom-spmi-pmic: Fix revid implementation
    5487d746f77c mfd: qcom-spmi-pmic: Fix reference leaks in revid helper
    db76d11bdad1 leds: trigger: netdev: Move size check in set_device_name
    c8a439e96aaa arm64: dts: qcom: ipq6018: Fix tcsr_mutex register size
    0361d86f8a06 arm64: dts: qcom: ipq9574: Fix hwlock index for SMEM
    a7c6fa8ecdd3 ACPI: FPDT: properly handle invalid FPDT subtables
    8398f2209474 firmware: qcom_scm: use 64-bit calling convention only when client is 64-bit
    68d8d8c659ac arm64: dts: qcom: ipq8074: Fix hwlock index for SMEM
    1fe0d9fa75ce arm64: dts: qcom: ipq5332: Fix hwlock index for SMEM
    6a3866dbdcf3 thermal: intel: powerclamp: fix mismatch in get function for max_idle
    5b2ed3c04a06 btrfs: don't arbitrarily slow down delalloc if we're committing
    94fda7ef2f1c rcu: kmemleak: Ignore kmemleak false positives when RCU-freeing objects
    ca6769551657 PM: hibernate: Clean up sync_read handling in snapshot_write_next()
    54a964575b7a PM: hibernate: Use __get_safe_page() rather than touching the list
    3480c1cd3bcf dt-bindings: timer: renesas,rz-mtu3: Fix overflow/underflow interrupt names
    59fef3cc602a arm64: dts: qcom: ipq6018: Fix hwlock index for SMEM
    11b83785f525 rcu/tree: Defer setting of jiffies during stall reset
    1dc5f364e065 svcrdma: Drop connection after an RDMA Read error
    6aaf7cd8bdfe wifi: wilc1000: use vmm_table as array in wilc struct
    6a1cbc40579e PCI: exynos: Don't discard .remove() callback
    34198b3c544e PCI: kirin: Don't discard .remove() callback
    560ba0deb73e PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common()
    d7769b51d85e mmc: Add quirk MMC_QUIRK_BROKEN_CACHE_FLUSH for Micron eMMC Q2J54A
    65204e28a0d0 mmc: sdhci_am654: fix start loop index for TAP value parsing
    c1008f77e6c9 mmc: vub300: fix an error code
    09d9d8b40a33 ksmbd: fix slab out of bounds write in smb_inherit_dacl()
    8434e0237913 ksmbd: handle malformed smb1 message
    b464f6c8df07 ksmbd: fix recursive locking in vfs helpers
    94e6378e1a70 clk: qcom: ipq6018: drop the CLK_SET_RATE_PARENT flag from PLL clocks
    499ebc29b6d6 clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks
    75f9b1a3ec29 clk: visconti: Fix undefined behavior bug in struct visconti_pll_provider
    2718027d6bca clk: socfpga: Fix undefined behavior bug in struct stratix10_clock_data
    ea131894f000 powercap: intel_rapl: Downgrade BIOS locked limits pr_warn() to pr_debug()
    d3f1a2c43827 cpufreq: stats: Fix buffer overflow detection in trans_stats()
    7a238a80e03d parisc/power: Add power soft-off when running on qemu
    423d3944a2ae parisc/pdc: Add width field to struct pdc_model
    4fb88c548be1 parisc/agp: Use 64-bit LE values in SBA IOMMU PDIR table
    74d2059dc4dd arm64: module: Fix PLT counting when CONFIG_RANDOMIZE_BASE=n
    bd31e534721a arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer
    d193f28146cf PCI: keystone: Don't discard .probe() callback
    01359f23420e PCI: keystone: Don't discard .remove() callback
    e0cecc2aa28d KEYS: trusted: Rollback init_trusted() consistently
    4745bd98ad9e KEYS: trusted: tee: Refactor register SHM usage
    ebd1f4898c3b sched/core: Fix RQCF_ACT_SKIP leak
    c62bad84b73d genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware
    611dda46d77d mmc: meson-gx: Remove setting of CMD_CFG_ERROR
    774de37c147f wifi: ath12k: fix dfs-radar and temperature event locking
    d908ca431e20 wifi: ath12k: fix htt mlo-offset event locking
    cf9c7d783a2b wifi: ath11k: fix gtk offload status event locking
    423762f02182 wifi: ath11k: fix htt pktlog locking
    1fd878e17501 wifi: ath11k: fix dfs radar event locking
    a9ad6fa9e582 wifi: ath11k: fix temperature event locking
    117ccba0288b regmap: Ensure range selector registers are updated after cache sync
    3055b7335604 ACPI: resource: Do IRQ override on TongFang GMxXGxx
    c85312edf701 parisc: Add nop instructions after TLB inserts
    d8cd49ff1fa3 mm/damon/sysfs: check error from damon_sysfs_update_target()
    2e4dec8e1ba6 mm/damon/sysfs-schemes: handle tried regions sysfs directory allocation failure
    fadc9f448f56 mm/damon/sysfs-schemes: handle tried region directory allocation failure
    47b6fa90875d mm/damon/core: avoid divide-by-zero during monitoring results update
    d44b509ba8af mm/damon: implement a function for max nr_accesses safe calculation
    dff884772b03 mm/damon/ops-common: avoid divide-by-zero during region hotness calculation
    771f3a57fdd1 mm/damon/lru_sort: avoid divide-by-zero in hot threshold calculation
    e93ac6410de3 dm crypt: account large pages in cc->n_allocated_pages
    369f7c467211 fbdev: stifb: Make the STI next font pointer a 32-bit signed offset
    836db2e7e456 iommufd: Fix missing update of domains_itree after splitting iopt_area
    38fae890594a watchdog: move softlockup_panic back to early_param
    81c5d125ff14 mm/damon/sysfs: update monitoring target regions for online input commit
    239a5a730e2a mm/damon/sysfs: remove requested targets when online-commit inputs
    93a063073cc4 PCI/sysfs: Protect driver's D3cold preference from user space
    5d93cb1ff604 hvc/xen: fix event channel handling for secondary consoles
    f17cba693e8a hvc/xen: fix error path in xen_hvc_init() to always register frontend driver
    b0ba80e8a6fe hvc/xen: fix console unplug
    fa71a72cd641 tty: serial: meson: fix hard LOCKUP on crtscts mode
    82ed32865a03 tty/sysrq: replace smp_processor_id() with get_cpu()
    9e4b54247cfd proc: sysctl: prevent aliased sysctls from getting passed to init
    0e8e06574ca4 audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare()
    6ccef3ff7e79 audit: don't take task_lock() in audit_exe_compare() code path
    3eacee28b152 sched: psi: fix unprivileged polling against cgroups
    c242318d0b92 mmc: sdhci-pci-gli: GL9755: Mask the replay timer timeout of AER
    b1f329180409 KVM: x86: Fix lapic timer interrupt lost after loading a snapshot.
    d09a0eaf01b2 KVM: x86: Clear bit12 of ICR after APIC-write VM-exit
    080e6d79066f KVM: x86: Ignore MSR_AMD64_TW_CFG access
    144b8472b699 KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space
    e22352ec91e2 x86/cpu/hygon: Fix the CPU topology evaluation for real
    2d0463ee5add x86/apic/msi: Fix misconfigured non-maskable MSI quirk
    4a142ea152ba x86/PCI: Avoid PME from D3hot/D3cold for AMD Rembrandt and Phoenix USB4
    72a40e561f3d crypto: x86/sha - load modules based on CPU features
    8f15a7e3c054 scsi: ufs: core: Fix racing issue between ufshcd_mcq_abort() and ISR
    07bc6e424419 scsi: qla2xxx: Fix system crash due to bad pointer access
    32e63c396f78 scsi: ufs: qcom: Update PHY settings only when scaling to higher gears
    09bcc704da4b scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for selected registers
    fc3166ddfbe8 scsi: mpt3sas: Fix loop logic
    69327243558f bpf: Fix precision tracking for BPF_ALU | BPF_TO_BE | BPF_END
    a101d1262799 bpf: Fix check_stack_write_fixed_off() to correctly spill imm
    a32e62eb903a randstruct: Fix gcc-plugin performance mode to stay in group
    6cfee0c86eee powerpc/perf: Fix disabling BHRB and instruction sampling
    6066567c5bd2 perf intel-pt: Fix async branch flags
    4edc7e66c014 media: venus: hfi: add checks to perform sanity on queue pointers
    2c86b24095fc drivers: perf: Check find_first_bit() return value
    8d60852e8cc9 perf: arm_cspmu: Reject events meant for other PMUs
    bf8e10503008 i915/perf: Fix NULL deref bugs with drm_dbg() calls
    c8ace8d25274 perf/core: Fix cpuctx refcounting
    109b452cc842 cifs: fix check of rc in function generate_smb3signingkey
    eeba3f02bb99 cifs: spnego: add ';' in HOST_KEY_LEN
    95cd9b8efb1c scsi: ufs: core: Expand MCQ queue slot to DeviceQueueDepth + 1
    8c7037da3d0e tools/power/turbostat: Enable the C-state Pre-wake printing
    b309f567636a tools/power/turbostat: Fix a knl bug
    9b2e63f1bea6 macvlan: Don't propagate promisc change to lower dev in passthru
    b4c2de028ea4 net: sched: do not offload flows with a helper in act_ct
    ba8d40609562 net/mlx5e: Check return value of snprintf writing to fw_version buffer for representors
    5f36c6760cc9 net/mlx5e: Check return value of snprintf writing to fw_version buffer
    3d764c41725c net/mlx5e: Reduce the size of icosq_str
    aee07f286930 net/mlx5: Increase size of irq name buffer
    42b11d1293e5 net/mlx5e: Update doorbell for port timestamping CQ before the software counter
    647eb36aaeca net/mlx5e: Add recovery flow for tx devlink health reporter for unhealthy PTP SQ
    e729382c297e net/mlx5e: Make tx_port_ts logic resilient to out-of-order CQEs
    11bffa0c4ef2 net/mlx5: Consolidate devlink documentation in devlink/mlx5.rst
    57fb34e36fad net/mlx5e: Fix pedit endianness
    3585f0b2afda net/mlx5e: fix double free of encap_header in update funcs
    ac2dd6c892e4 net/mlx5e: fix double free of encap_header
    8b9491d50ca4 net/mlx5: Decouple PHC .adjtime and .adjphase implementations
    e87fa62ebc59 io_uring/fdinfo: remove need for sqpoll lock for thread/pid retrieval
    a533c9763c3f gve: Fixes for napi_poll when budget is 0
    cb9e4507cca7 pds_core: fix up some format-truncation complaints
    9c9d97c88536 pds_core: use correct index to mask irq
    b435b4573240 net: stmmac: avoid rx queue overrun
    c40a19f57010 net: stmmac: fix rx budget limit check
    72caa17c14b4 netfilter: nf_tables: bogus ENOENT when destroying element which does not exist
    1a605657adc5 netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval()
    cbb43d024952 netfilter: nf_conntrack_bridge: initialize err to 0
    eae0b295ce16 af_unix: fix use-after-free in unix_stream_read_actor()
    b971f116733c net: ethernet: cortina: Fix MTU max setting
    458cc008c723 net: ethernet: cortina: Handle large frames
    fbe560020a5f net: ethernet: cortina: Fix max RX frame define
    87c49806a37f bonding: stop the device in bond_setup_by_slave()
    fa9dac68ce73 ptp: annotate data-race around q->head and q->tail
    e9c309ded295 blk-mq: make sure active queue usage is held for bio_integrity_prep()
    36fcea86f71d xen/events: fix delayed eoi list handling
    ebbb5baa134a ppp: limit MRU to 64K
    230dc06e2495 net: mvneta: fix calls to page_pool_get_stats
    b70f095b30ee tipc: Fix kernel-infoleak due to uninitialized TLV value
    e4514960282d net: hns3: fix VF wrong speed and duplex issue
    96f9229c8459 net: hns3: fix VF reset fail issue
    cdae6292604c net: hns3: fix variable may not initialized problem in hns3_init_mac_addr()
    be1f703f39ef net: hns3: fix out-of-bounds access may occur when coalesce info is read via debugfs
    3a948d0aed3d net: hns3: fix incorrect capability bit display for copper port
    3d7e5e30124b net: hns3: add barrier in vf mailbox reply process
    53ba90be73c1 net: hns3: fix add VLAN fail issue
    0ad883132835 xen/events: avoid using info_for_irq() in xen_send_IPI_one()
    fdd76a1e9353 tty: Fix uninit-value access in ppp_sync_receive()
    8872dc638c24 ipvlan: add ipvlan_route_v6_outbound() helper
    d239d81b660b net: set SOCK_RCU_FREE before inserting socket into hashtable
    d31958f65e48 bpf: fix precision backtracking instruction iteration
    732b237269e0 bpf: handle ldimm64 properly in check_cfg()
    9aea191c29e1 gcc-plugins: randstruct: Only warn about true flexible arrays
    ae8ea4e20067 vhost-vdpa: fix use after free in vhost_vdpa_probe()
    ba9626b4c2bb vdpa_sim_blk: allocate the buffer zeroed
    50aa75671d30 drm/i915/tc: Fix -Wformat-truncation in intel_tc_port_init
    5e43db2d8c1d gfs2: Silence "suspicious RCU usage in gfs2_permission" warning
    a00a7a028bcd riscv: provide riscv-specific is_trap_insn()
    377befc2e809 RISC-V: hwprobe: Fix vDSO SIGSEGV
    1cdb52ffd660 SUNRPC: Fix RPC client cleaned up the freed pipefs dentries
    b8919192ab62 NFSv4.1: fix SP4_MACH_CRED protection for pnfs IO
    5d215bd58b1e SUNRPC: Add an IS_ERR() check back to where it was
    3c51fac1ae19 NFSv4.1: fix handling NFS4ERR_DELAY when testing for session trunking
    37c6ca6a1931 drm/i915/mtl: avoid stringop-overflow warning
    8250fdd1daa3 mtd: rawnand: meson: check return value of devm_kasprintf()
    6fc0bc01eef1 mtd: rawnand: intel: check return value of devm_kasprintf()
    0b8fb1758ef6 SUNRPC: ECONNRESET might require a rebind
    cc0ccee308e8 dt-bindings: serial: fix regex pattern for matching serial node children
    61576b7a0f28 samples/bpf: syscall_tp_user: Fix array out-of-bound access
    923697c686e7 samples/bpf: syscall_tp_user: Rename num_progs into nr_tests
    64cdff87126d sched/core: Optimize in_task() and in_interrupt() a bit
    de9b4f65e9e2 wifi: iwlwifi: Use FW rate for non-data frames
    e651a075d817 mtd: rawnand: tegra: add missing check for platform_get_irq()
    c19a8794bf4f pwm: Fix double shift bug
    81663506ed83 drm/amdgpu: fix software pci_unplug on some chips
    5764e6c861f2 ALSA: hda/realtek: Add quirk for ASUS UX7602ZM
    1acf0293d713 drm/qxl: prevent memory leak
    4e35ae99f85d ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings
    fe4eb2157d8c i2c: dev: copy userspace array safely
    1493baaf09e3 riscv: VMAP_STACK overflow detection thread-safe
    c99fff688529 kgdb: Flush console before entering kgdb on panic
    6d8653b1a7a8 drm/amd/display: Avoid NULL dereference of timing generator
    10ec5a97f8f5 media: imon: fix access to invalid resource for the second interface
    163c0a38dfaf media: ccs: Fix driver quirk struct documentation
    359f6509b342 media: cobalt: Use FIELD_GET() to extract Link Width
    ba5c85a4f30c gfs2: fix an oops in gfs2_permission
    212f112fe5e9 gfs2: ignore negated quota changes
    6928a428218e media: ipu-bridge: increase sensor_name size
    be36843c9691 media: vivid: avoid integer overflow
    93bddd6529f1 media: gspca: cpia1: shift-out-of-bounds in set_flicker
    3cb79a365e7c i3c: master: mipi-i3c-hci: Fix a kernel panic for accessing DAT_data.
    017278f14114 virtio-blk: fix implicit overflow on virtio_max_dma_size
    ef0de19402e5 i2c: sun6i-p2wi: Prevent potential division by zero
    43306cc76119 i2c: fix memleak in i2c_new_client_device()
    f10b93471818 i2c: i801: Add support for Intel Birch Stream SoC
    7c2b91b30d74 i3c: mipi-i3c-hci: Fix out of bounds access in hci_dma_irq_handler
    454a176943a2 9p: v9fs_listxattr: fix %s null argument warning
    e0f8790383ef 9p/trans_fd: Annotate data-racy writes to file::f_flags
    a65245d663ee usb: gadget: f_ncm: Always set current gadget in ncm_bind()
    95d3f58e1d4e usb: host: xhci: Avoid XHCI resume delay if SSUSB device is not present
    ecf58b678d4b f2fs: fix error handling of __get_node_page
    184b4e42d929 f2fs: fix error path of __f2fs_build_free_nids
    38f43d43f20a soundwire: dmi-quirks: update HP Omen match
    5b13bb603d05 usb: ucsi: glink: use the connector orientation GPIO to provide switch events
    5a6afa6a8427 usb: dwc3: core: configure TX/RX threshold for DWC3_IP
    11fbc8357820 phy: qualcomm: phy-qcom-eusb2-repeater: Zero out untouched tuning regs
    d86b03dc9041 phy: qualcomm: phy-qcom-eusb2-repeater: Use regmap_fields
    5fe0d30ecdc4 dt-bindings: phy: qcom,snps-eusb2-repeater: Add magic tuning overrides
    4a24a3182624 tty: vcc: Add check for kstrdup() in vcc_probe()
    5440e83534ee thunderbolt: Apply USB 3.x bandwidth quirk only in software connection manager
    b028f89c56e9 iio: adc: stm32-adc: harden against NULL pointer deref in stm32_adc_probe()
    d6703d4a0686 mfd: intel-lpss: Add Intel Lunar Lake-M PCI IDs
    807ee5504236 exfat: support handle zero-size directory
    e9cf5b36ef98 HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W
    5b6af0a7196a crypto: hisilicon/qm - prevent soft lockup in receive loop
    9e7c0059fbe1 ASoC: Intel: soc-acpi-cht: Add Lenovo Yoga Tab 3 Pro YT3-X90 quirk
    4113955cb689 PCI: Use FIELD_GET() in Sapphire RX 5600 XT Pulse quirk
    4c525492f1c5 misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller
    1567af9a411c PCI: dwc: Add missing PCI_EXP_LNKCAP_MLW handling
    89973bbce2c8 PCI: dwc: Add dw_pcie_link_set_max_link_width()
    27622f8b50ba PCI: Disable ATS for specific Intel IPU E2000 devices
    0ac15627471b PCI: Extract ATS disabling to a helper function
    5bb6d731d45e PCI: Use FIELD_GET() to extract Link Width
    f6fe7261b92b scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup()
    668b8ec30762 PCI: Do error check on own line to split long "if" conditions
    db8e4d8567a7 atm: iphase: Do PCI error checks on own line
    4faeebe638ca PCI: mvebu: Use FIELD_PREP() with Link Width
    7f7d54926b39 PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields
    def5e864ca2d gpiolib: of: Add quirk for mt2701-cs42448 ASoC sound
    fe7c1a0c2b25 ALSA: hda: Fix possible null-ptr-deref when assigning a stream
    c23ff8ea21bd ARM: 9320/1: fix stack depot IRQ stack filter
    9de5ae56f4f3 HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround
    665b44e55c27 jfs: fix array-index-out-of-bounds in diAlloc
    88b7894a8f87 jfs: fix array-index-out-of-bounds in dbFindLeaf
    dca403bb035a fs/jfs: Add validity check for db_maxag and db_agpref
    491085258185 fs/jfs: Add check for negative db_l2nbperpage
    d2af4ef80601 scsi: ibmvfc: Remove BUG_ON in the case of an empty event pool
    75a2656260fe scsi: hisi_sas: Set debugfs_dir pointer to NULL after removing debugfs
    b3e52db0e9d1 RDMA/hfi1: Use FIELD_GET() to extract Link Width
    f5437f4a3ec9 ASoC: SOF: ipc4: handle EXCEPTION_CAUGHT notification from firmware
    e134f3aba98e crypto: pcrypt - Fix hungtask for PADATA_RESET
    355946538c39 ASoC: SOF: Pass PCI SSID to machine driver
    e670059e8c20 ASoC: soc-card: Add storage for PCI SSID
    0adc6613c263 ASoC: mediatek: mt8188-mt6359: support dynamic pinctrl
    9da3382085dc selftests/efivarfs: create-read: fix a resource leak
    a7e2f27557df arm64: dts: ls208xa: use a pseudo-bus to constrain usb dma size
    5b4574b663d0 drm/amd: check num of link levels when update pcie param
    3b0135937936 drm/amd/display: fix num_ways overflow error
    1f20cb1da4dd drm/amd: Disable PP_PCIE_DPM_MASK when dynamic speed switching not supported
    820daf9ffe2b drm/amdgpu: Fix a null pointer access when the smc_rreg pointer is NULL
    d33a35b13cbf drm/amdkfd: Fix shift out-of-bounds issue
    16f77d4264c4 drm/panel: st7703: Pick different reset sequence
    8c6c85a07376 drm/amdgpu/vkms: fix a possible null pointer dereference
    22d7ec972cd9 drm/radeon: fix a possible null pointer dereference
    9268bfd76beb drm/panel/panel-tpo-tpg110: fix a possible null pointer dereference
    4fa930ba046d drm/panel: fix a possible null pointer dereference
    b0702ee4d811 drm/amdgpu: Fix potential null pointer derefernce
    7c68283f3166 drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and Tonga
    6dffdddfca81 drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7
    dec5469ce9f5 drm/msm/dp: skip validity check for DP CTS EDID checksum
    1eacb4c96e73 drm: vmwgfx_surface.c: copy user-array safely
    301e597e7b81 drm_lease.c: copy user-array safely
    c7acf02df167 kernel: watch_queue: copy user-array safely
    b0ed017a2b97 kernel: kexec: copy user-array safely
    5562f0a42844 string.h: add array-wrappers for (v)memdup_user()
    811539a2ec93 drm/amd/display: use full update for clip size increase of large plane source
    e9b638de04b0 drm/amd: Update `update_pcie_parameters` functions to use uint8_t arguments
    c772eacbd6d0 drm/amdkfd: Fix a race condition of vram buffer unref in svm code
    3ec74308f17a drm/amdgpu: not to save bo in the case of RAS err_event_athub
    77eee682f437 md: don't rely on 'mddev->pers' to be set in mddev_suspend()
    c2a7847c0d4b drm/edid: Fixup h/vsync_end instead of h/vtotal
    de7550fe430f drm/amd/display: add seamless pipe topology transition check
    356dee34f5db drm/amd/display: Don't lock phantom pipe on disabling
    f1035d36fd45 drm/amd/display: Blank phantom OTG before enabling
    11c3ebd1d2b7 drm/komeda: drop all currently held locks if deadlock happens
    c7f81cd3e9c9 drm/amdkfd: ratelimited SQ interrupt messages
    d6f17735d8da drm/gma500: Fix call trace when psb_gem_mm_init() fails
    54d7dd51345a platform/x86: thinkpad_acpi: Add battery quirk for Thinkpad X120e
    99171d81c5bc of: address: Fix address translation when address-size is greater than 2
    3df4c7945390 platform/chrome: kunit: initialize lock for fake ec_dev
    ad1b721c9d16 gpiolib: acpi: Add a ignore interrupt quirk for Peaq C1010
    6165ae149eaa tsnep: Fix tsnep_request_irq() format-overflow warning
    6a2c311fd0dc ACPI: EC: Add quirk for HP 250 G7 Notebook PC
    fc666d1b4751 Bluetooth: Fix double free in hci_conn_cleanup
    0048ddf045bd Bluetooth: btusb: Add date->evt_skb is NULL check
    dd860dff8058 wifi: iwlwifi: mvm: fix size check for fw_link_id
    cc8de9383c72 bpf: Ensure proper register state printing for cond jumps
    cb2cfbec0982 vsock: read from socket's error queue
    104922ba6602 net: sfp: add quirk for FS's 2.5G copper SFP
    aa47f6382bd1 wifi: ath10k: Don't touch the CE interrupt registers after power up
    b2e99ba69ce6 wifi: ath12k: mhi: fix potential memory leak in ath12k_mhi_register()
    fb3a71a8383f net: annotate data-races around sk->sk_dst_pending_confirm
    37e1a89a8728 net: annotate data-races around sk->sk_tx_queue_mapping
    437538c00f19 wifi: mt76: mt7921e: Support MT7992 IP in Xiaomi Redmibook 15 Pro (2023)
    cde2a1d8c9da net: sfp: add quirk for Fiberstone GPON-ONU-34-20BI
    8d95caf80366 ACPI: APEI: Fix AER info corruption when error status data has multiple sections
    dfe13eaab043 wifi: ath12k: fix possible out-of-bound write in ath12k_wmi_ext_hal_reg_caps()
    0b8e7c1169a6 wifi: ath10k: fix clang-specific fortify warning
    79527c21a3ce wifi: ath12k: fix possible out-of-bound read in ath12k_htt_pull_ppdu_stats()
    c4992b79fadc wifi: ath9k: fix clang-specific fortify warnings
    327b92e8cb52 bpf: Detect IP == ksym.end as part of BPF program
    54a6152da499 atl1c: Work around the DMA RX overflow issue
    adc2474d823f wifi: mac80211: don't return unset power in ieee80211_get_tx_power()
    6100f6013af0 wifi: mac80211_hwsim: fix clang-specific fortify warning
    b8966720c3a0 wifi: ath12k: Ignore fragments from uninitialized peer in dp
    ed0ac28cbc2a wifi: plfxlc: fix clang-specific fortify warning
    66e460eeaa70 x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size
    d112c682c47f workqueue: Provide one lock class key per work_on_cpu() callsite
    335a47ed71e3 cpu/hotplug: Don't offline the last non-isolated CPU
    2ca04946b4ea smp,csd: Throw an error if a CSD lock is stuck for too long
    d4d2297d04bf srcu: Only accelerate on enqueue time
    c05cbfcb6eee clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware
    8ea7a452dc7d clocksource/drivers/timer-imx-gpt: Fix potential memory leak
    161a323c60d0 selftests/lkdtm: Disable CONFIG_UBSAN_TRAP in test config
    8c3b1175d152 srcu: Fix srcu_struct node grpmask overflow on 64-bit systems
    2424410f94a9 perf/core: Bail out early if the request AUX area is out of bound
    c485c94c0b8b x86/retpoline: Make sure there are no unconverted return thunks due to KCSAN
    ec298b958cb0 lib/generic-radix-tree.c: Don't overflow in peek()
    96612b6f99d5 btrfs: abort transaction on generation mismatch when marking eb as dirty
    e36407713163 locking/ww_mutex/test: Fix potential workqueue corruption

(From OE-Core rev: 68d222aca43bfa31ac425da1084f33470864ff19)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e28367970d90ffdd501c1876a950e645486bdaf1)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
1a6c6b4bcc linux-yocto/6.5: update to v6.5.12
Updating  to the latest korg -stable release that comprises
the following commits:

    fa1be4637aad Linux 6.5.12
    39ee8317876f btrfs: make found_logical_ret parameter mandatory for function queue_scrub_stripe()
    1c44debc30d2 perf parse-events: Fix driver config term
    9a955334c112 bpf, x86: initialize the variable "first_off" in save_args()
    3dccc81f9ea9 btrfs: use u64 for buffer sizes in the tree search ioctls
    7fbd30155906 Revert "mmc: core: Capture correct oemid-bits for eMMC cards"
    2ee1f00866ac Revert "PCI/ASPM: Disable only ASPM_STATE_L1 when driver, disables L1"
    b592cec2a478 x86/amd_nb: Use Family 19h Models 60h-7Fh Function 4 IDs
    9e1c7fe85391 io_uring/net: ensure socket is marked connected on connect retry
    c0ba439a4333 selftests: mptcp: fix wait_rm_addr/sf parameters
    8a0ba7e4b2e8 Revert "drm/ast: report connection status on Display Port."
    718dfd5b1646 tracing/kprobes: Fix the order of argument descriptions
    afc10d0ca630 fbdev: fsl-diu-fb: mark wr_reg_wa() static
    6e6676c34078 ALSA: hda/realtek: Add support dual speaker for Dell
    18d26f9baca7 fbdev: imsttfb: fix a resource leak in probe
    32310dbf0aa9 fbdev: imsttfb: fix double free in probe()
    7446c44198a5 arm64/arm: arm_pmuv3: perf: Don't truncate 64-bit registers
    68b1ad75906b spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies
    033ade77d851 ASoC: dapm: fix clock get name
    18795fc33915 ASoC: hdmi-codec: register hpd callback on component probe
    a3ef9afd315a ASoC: mediatek: mt8186_mt6366_rt1019_rt5682s: trivial: fix error messages
    2f769f4c557b drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE
    fe131f6d71c5 drm/vc4: tests: Fix UAF in the mock helpers
    b2628d195a02 module/decompress: use kvmalloc() consistently
    990345880a1c RISC-V: Don't fail in riscv_of_parent_hartid() for disabled HARTs
    c59f92817719 net/sched: act_ct: Always fill offloading tuple iifidx
    61fd0c64e3bf netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses
    a95ea2622afb netfilter: xt_recent: fix (increase) ipv6 literal buffer length
    52f7f210bd3d i2c: iproc: handle invalid slave state
    f706e2c9adf2 net: enetc: shorten enetc_setup_xdp_prog() error message to fit NETLINK_MAX_FMTMSG_LEN
    93e7f8feacb1 r8169: respect userspace disabling IFF_MULTICAST
    dbe7967095a5 vsock/virtio: remove socket from connected/bound list on shutdown
    0828d76ba2f9 blk-core: use pr_warn_ratelimited() in bio_check_ro()
    879947f4180b nbd: fix uaf in nbd_open
    d5d744277c03 tg3: power down device only on SYSTEM_POWER_OFF
    57efa187cda5 riscv: boot: Fix creation of loader.bin
    209a13dc04d0 nvme: fix error-handling for io_uring nvme-passthrough
    bf6571bb260b net/smc: put sk reference if close work was canceled
    8d6a49fc39ed net/smc: allow cdc msg send rather than drop it with NULL sndbuf_desc
    6904598dd970 net/smc: fix dangling sock under state SMC_APPFINCLOSEWAIT
    a63ff94ae244 octeontx2-pf: Free pending and dropped SQEs
    d888fcdaa87d selftests: pmtu.sh: fix result checking
    5917a439643b net: stmmac: xgmac: Enable support for multiple Flexible PPS outputs
    aeb378667a00 Fix termination state for idr_for_each_entry_ul()
    28220ff13ac3 net: r8169: Disable multicast filter for RTL8168H and RTL8107E
    0577f93e8481 dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses.
    9e5386d494fd dccp: Call security_inet_conn_request() after setting IPv4 addresses.
    59f1841a9b14 net: page_pool: add missing free_percpu when page_pool_init fail
    c84f297964fe octeontx2-pf: Fix holes in error code
    b3e4e1162368 octeontx2-pf: Fix error codes
    688f277d0592 inet: shrink struct flowi_common
    d5574d0ad4c4 bpf: Check map->usercnt after timer->timer is assigned
    fe4d6a419062 rxrpc: Fix two connection reaping bugs
    abc1582119e8 tipc: Change nla_policy for bearer-related names to NLA_NUL_STRING
    1787b9f0729d hsr: Prevent use after free in prp_create_tagged_frame()
    0a720d0259ad llc: verify mac len before reading mac header
    f1fd72c06d8e watchdog: ixp4xx: Make sure restart always works
    cc56c4d17721 Input: synaptics-rmi4 - fix use after free in rmi_unregister_function()
    3448b7ba8c56 pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume
    98965075e630 pwm: sti: Reduce number of allocations and drop usage of chip_data
    da97367c938d drm/amdgpu: don't put MQDs in VRAM on ARM | ARM64
    5bb28ff319bf drm/amdgpu/gfx10,11: use memcpy_to/fromio for MQDs
    f6ac81f82692 regmap: prevent noinc writes from clobbering cache
    f232770077e8 cpupower: fix reference to nonexistent document
    531129a7e935 media: cec: meson: always include meson sub-directory in Makefile
    d4076de583f3 media: platform: mtk-mdp3: fix uninitialized variable in mdp_path_config()
    af9c02dd5962 media: imx-jpeg: notify source chagne event when the first picture parsed
    963ac643508a media: verisilicon: Fixes clock list for rk3588 av1 decoder
    1180f59a5b3c media: dvb-usb-v2: af9035: fix missing unlock
    a7ee4299b025 media: cadence: csi2rx: Unregister v4l2 async notifier
    b9be6d023c3e media: cedrus: Fix clock/reset sequence
    cb1300141199 media: vidtv: mux: Add check and kfree for kstrdup
    5cfcc8de7d73 media: vidtv: psi: Add check for kstrdup
    88bdfe1a2439 media: s3c-camif: Avoid inappropriate kfree()
    f589aad0768a media: mtk-jpegenc: Fix bug in JPEG encode quality selection
    1ef450564770 media: amphion: handle firmware debug message
    1871014d6ef4 media: bttv: fix use after free error due to btv->timeout timer
    b43848690b3f media: ov5640: Fix a memory leak when ov5640_probe fails
    220f763dcad3 media: i2c: max9286: Fix some redundant of_node_put() calls
    c4c8324eb142 media: ov5640: fix vblank unchange issue when work at dvp mode
    e028c9573dde media: verisilicon: Do not enable G2 postproc downscale if source is narrower than destination
    66b4c5f980d7 media: hantro: Check whether reset op is defined before use
    a2e2190d994a media: imx-jpeg: initiate a drain of the capture queue in dynamic resolution change
    7ef4cebe945e pcmcia: ds: fix possible name leak in error path in pcmcia_device_add()
    65559a64c276 pcmcia: ds: fix refcount leak in pcmcia_device_add()
    7b3607be4576 pcmcia: cs: fix possible hung task and memory leak pccardd()
    d98f43ab71e5 cxl/hdm: Remove broken error path
    ce82bfafd6f9 cxl/port: Fix @host confusion in cxl_dport_setup_regs()
    f2783b8a218a cxl/core/regs: Rename @dev to @host in struct cxl_register_map
    fb2306ec5099 cxl/region: Fix cxl_region_rwsem lock held when returning to user space
    7ca00fb8c99d cxl/region: Use cxl_calc_interleave_pos() for auto-discovery
    043facdd8d5d cxl/region: Calculate a target position in a region interleave
    5d86b34317d5 cxl/region: Prepare the decoder match range helper for reuse
    c2723a64b63b rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call
    5e9051bf642e rtc: pcf85363: Allow to wake up system without IRQ
    a8a063f2c5ec virt: sevguest: Fix passing a stack buffer as a scatterlist target
    cad22a757029 cxl/mem: Fix shutdown order
    516fba3bd586 cxl/memdev: Fix sanitize vs decoder setup locking
    8e09215aadde cxl/pci: Fix sanitize notifier setup
    d50d70827e2a cxl/pci: Clarify devm host for memdev relative setup
    ba524b221cb4 cxl/pci: Remove inconsistent usage of dev_err_probe()
    a1124adef547 cxl/pci: Cleanup 'sanitize' to always poll
    7be8c47426cf cxl/pci: Remove unnecessary device reference management in sanitize work
    e7afa8a065a0 rtc: brcmstb-waketimer: support level alarm_irq
    b24cf43d9bab i3c: Fix potential refcount leak in i3c_master_register_new_i3c_devs
    bcf5e18c0beb rtla: Fix uninitialized variable found
    48b318939955 9p/net: fix possible memory leak in p9_check_errors()
    9a4cc8e1ad73 perf vendor events intel: Add broadwellde two metrics
    e5270cbe0252 perf vendor events intel: Fix broadwellde tma_info_system_dram_bw_use metric
    ccbe6d8c6b4a perf hist: Add missing puts to hist__account_cycles
    57c01bae6c24 libperf rc_check: Make implicit enabling work for GCC
    64fe182e0b20 perf machine: Avoid out of bounds LBR memory read
    a43bdc6ba342 usb: host: xhci-plat: fix possible kernel oops while resuming
    7b8ae3c24efd xhci: Loosen RPM as default policy to cover for AMD xHC 1.1
    056a83850468 perf vendor events: Update PMC used in PM_RUN_INST_CMPL event for power10 platform
    ed905e38c0f2 powerpc/pseries: fix potential memory leak in init_cpu_associativity()
    104f083c5df3 powerpc/imc-pmu: Use the correct spinlock initializer.
    c3f620809a61 powerpc/vas: Limit open window failure messages in log bufffer
    d9d00713b8f7 perf trace: Use the right bpf_probe_read(_str) variant for reading user data
    3af067e50b0e powerpc: Hide empty pt_regs at base of the stack
    fc7957384d7e powerpc/xive: Fix endian conversion size
    1fe1c98a72d2 powerpc/40x: Remove stale PTE_ATOMIC_UPDATES macro
    ea654911b8ee perf tools: Do not ignore the default vmlinux.h
    35278545af13 modpost: fix ishtp MODULE_DEVICE_TABLE built on big-endian host
    db40f538c825 modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host
    6fbbf9f14a53 s390/ap: re-init AP queues on config on
    e94732825a5a perf mem-events: Avoid uninitialized read
    34ca27039e1f perf pmu: Remove logic for PMU name being NULL
    4890aaf24b0c perf parse-events: Fix for term values that are raw events
    63e14dbe45f8 perf build: Add missing comment about NO_LIBTRACEEVENT=1
    49dc517a904e interconnect: fix error handling in qnoc_probe()
    4eb6e78b3f81 powerpc: Only define __parse_fpscr() when required
    7e324e99321c interconnect: qcom: sm8350: Set ACV enable_mask
    ed261c06fcf9 interconnect: qcom: sm8350: Retire DEFINE_QBCM
    6bbf49794fb4 interconnect: qcom: sm8150: Set ACV enable_mask
    389fd2613208 interconnect: qcom: sm8150: Retire DEFINE_QBCM
    57ba6e84bc32 interconnect: qcom: sm6350: Set ACV enable_mask
    ff36f2775bea interconnect: qcom: sm6350: Retire DEFINE_QBCM
    885139b6a071 interconnect: qcom: sdm845: Set ACV enable_mask
    1940f9a3f735 interconnect: qcom: sdm845: Retire DEFINE_QBCM
    f82f1ddb7ec5 interconnect: qcom: sdm670: Set ACV enable_mask
    e8720308de88 interconnect: qcom: sdm670: Retire DEFINE_QBCM
    b7d939c28f80 interconnect: qcom: sc8280xp: Set ACV enable_mask
    9640f78cdc0e interconnect: qcom: sc8180x: Set ACV enable_mask
    0f1b8085a42f interconnect: qcom: sc7280: Set ACV enable_mask
    b5db623daed9 interconnect: qcom: sc7180: Set ACV enable_mask
    4ca7387d611b interconnect: qcom: sc7180: Retire DEFINE_QBCM
    899b86659064 interconnect: qcom: qdu1000: Set ACV enable_mask
    00ca5edeaed1 f2fs: fix to initialize map.m_pblk in f2fs_precache_extents()
    c8fff2c9225f dmaengine: pxa_dma: Remove an erroneous BUG_ON() in pxad_free_desc()
    9a8656a5300c USB: usbip: fix stub_dev hub disconnect
    356a5f8bdb6d tools: iio: iio_generic_buffer ensure alignment
    4428cd427855 misc: st_core: Do not call kfree_skb() under spin_lock_irqsave()
    9bbdea45ea79 tools/perf: Update call stack check in builtin-lock.c
    21e32bf0bb27 dmaengine: ti: edma: handle irq_of_parse_and_map() errors
    5356ca664710 usb: chipidea: Simplify Tegra DMA alignment code
    ac69dc32af3b usb: chipidea: Fix DMA overwrite for Tegra
    3e851a77a13c usb: dwc2: fix possible NULL pointer dereference caused by driver concurrency
    50daad99bd7a dmaengine: idxd: Register dsa_bus_type before registering idxd sub-drivers
    faa48ed2647c perf record: Fix BTF type checks in the off-cpu profiling
    25a88c08352d pinctrl: renesas: rzg2l: Make reverse order of enable() for disable()
    432909464fd9 livepatch: Fix missing newline character in klp_resolve_symbols()
    ad3fa6cc3e23 perf parse-events: Fix tracepoint name memory leak
    bd64a16ba2c5 perf tools: Revert enable indices setting syntax for BPF map
    acd50fcdd4e4 perf parse-events: Remove ABORT_ON
    ee4558a6e062 perf parse-events: Remove unused PE_KERNEL_PMU_EVENT token
    84d2e3f3e74c perf parse-events: Remove unused PE_PMU_EVENT_FAKE token
    49a22ed339a5 tty: tty_jobctrl: fix pid memleak in disassociate_ctty()
    eb42e1862aa7 f2fs: fix to drop meta_inode's page cache in f2fs_put_super()
    d759d1d271f6 f2fs: compress: fix to avoid redundant compress extension
    932ddb5c29e8 f2fs: compress: fix to avoid use-after-free on dic
    f783e3507b09 f2fs: compress: fix deadloop in f2fs_write_cache_pages()
    03832670f99e perf kwork: Set ordered_events to true in 'struct perf_tool'
    7990bb48feea perf kwork: Add the supported subcommands to the document
    83237a95d315 perf kwork: Fix incorrect and missing free atom in work_push_atom()
    0c0044a01cb7 iio: frequency: adf4350: Use device managed functions and fix power down issue.
    89ad251b6f99 perf stat: Fix aggr mode initialization
    f997e1b08f88 apparmor: fix invalid reference on profile->disconnected
    74e5ce33ed3b scripts/gdb: fix usage of MOD_TEXT not defined when CONFIG_MODULES=n
    b76057527912 leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu'
    dd88eb7b0c60 leds: pwm: Don't disable the PWM when the LED should be off
    5a237df850f0 leds: turris-omnia: Do not use SMBUS calls
    48c32d8df085 leds: turris-omnia: Drop unnecessary mutex locking
    e84a57ce0435 mfd: arizona-spi: Set pdata.hpdet_channel for ACPI enumerated devs
    49797594d234 dt-bindings: mfd: mt6397: Split out compatible for MediaTek MT6366 PMIC
    e97de887bd28 mfd: dln2: Fix double put in dln2_probe
    b8af0a637afc mfd: core: Ensure disabled devices are skipped without aborting
    b666088a7df2 mfd: core: Un-constify mfd_cell.of_reg
    4f4a7a7d1404 IB/mlx5: Fix init stage error handling to avoid double free of same QP and UAF
    531a6b22b5af erofs: fix erofs_insert_workgroup() lockref usage
    300041583ea5 ASoC: ams-delta.c: use component after check
    837afdc92f69 crypto: qat - fix deadlock in backlog processing
    e7c29266f520 certs: Break circular dependency when selftest is modular
    1e901bcb8af1 padata: Fix refcnt handling in padata_free_shell()
    65f881a0a90d PCI: endpoint: Fix double free in __pci_epc_create()
    f013769f70d3 ASoC: Intel: Skylake: Fix mem leak when parsing UUIDs fails
    cfe88cf748cc HID: logitech-hidpp: Move get_wireless_feature_index() check to hidpp_connect_event()
    c8836943bd4e HID: logitech-hidpp: Revert "Don't restart communication if not necessary"
    aedb6041da69 HID: logitech-hidpp: Don't restart IO, instead defer hid_connect() only
    b4f35870a9b9 sh: bios: Revive earlyprintk support
    08420113b468 HID: uclogic: Fix a work->entry not empty bug in __queue_work()
    64da1f6147da HID: uclogic: Fix user-memory-access bug in uclogic_params_ugee_v2_init_event_hooks()
    f06c2b93502f hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip
    8ef4b7548dcb HID: cp2112: Make irq_chip immutable
    abc6ac81a306 RDMA/hfi1: Workaround truncation compilation error
    8a517831ca9f scsi: ufs: core: Leave space for '\0' in utf8 desc string
    e1fc0752d5e8 ASoC: fsl: Fix PM disable depth imbalance in fsl_easrc_probe
    cd666d29c1ad ASoC: SOF: core: Ensure sof_ops_free() is still called when probe never ran.
    87820275278d RDMA/hns: The UD mode can only be configured with DCQCN
    aaf04e12b60a RDMA/hns: Add check for SL
    37d9b4a8842f RDMA/hns: Fix signed-unsigned mixed comparisons
    3e7665413c0d RDMA/hns: Fix uninitialized ucmd in hns_roce_create_qp_common()
    035a843df60a RDMA/hns: Fix printing level of asynchronous events
    767e4c76e0da IB/mlx5: Fix rdma counter binding for RAW QP
    13ee0d9bae3b dlm: fix no ack after final message
    f67500a59f82 ASoC: fsl-asoc-card: Add comment for mclk in the codec_priv
    b66d7d971467 ASoC: Intel: sof_sdw_rt_sdca_jack_common: add rt713 support
    afdf67c1a521 backlight: pwm_bl: Disable PWM on shutdown, suspend and remove
    f9501d0c1015 ASoC: fsl: mpc5200_dma.c: Fix warning of Function parameter or member not described
    73be585b2912 kselftest: vm: fix mdwe's mmap_FIXED test case
    8575339a5f7c ext4: move 'ix' sanity check to corrent position
    3456dad3d723 ARM: 9323/1: mm: Fix ARCH_LOW_ADDRESS_LIMIT when CONFIG_ZONE_DMA
    1d09354dca6e ARM: 9321/1: memset: cast the constant byte to unsigned char
    11eb0faaae67 crypto: hisilicon/qm - fix PF queue parameter issue
    fb5718bc6733 hid: cp2112: Fix duplicate workqueue initialization
    2f0367ea3a9e PCI: vmd: Correct PCI Header Type Register's multi-function check
    531f107ee700 ASoC: SOF: ipc4-topology: Use size_add() in call to struct_size()
    461b4df72256 crypto: qat - increase size of buffers
    60f93c3b75ff crypto: caam/jr - fix Chacha20 + Poly1305 self test failure
    886e2995b42b crypto: caam/qi2 - fix Chacha20 + Poly1305 self test failure
    b27751fb1f27 nd_btt: Make BTT lanes preemptible
    4f08f132c996 libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return value
    4778c1dd656e ASoC: soc-pcm.c: Make sure DAI parameters cleared if the DAI becomes inactive
    ffce1dc8457e scsi: ibmvfc: Fix erroneous use of rtas_busy_delay with hcall return code
    f666c814dc5b crypto: qat - fix unregistration of compression algorithms
    adeee72f0e3b crypto: qat - fix unregistration of crypto algorithms
    99fe5f7b6c99 crypto: qat - ignore subsequent state up commands
    36f45cb3d919 crypto: qat - fix state machines cleanup paths
    8946a17a70c5 RDMA/core: Use size_{add,sub,mul}() in calls to struct_size()
    64254a5b9427 hwrng: geode - fix accessing registers
    b9f8f249a551 hwrng: bcm2835 - Fix hwrng throughput regression
    bc49891f9871 crypto: hisilicon/hpre - Fix a erroneous check after snprintf()
    fce1075147a5 KEYS: Include linux/errno.h in linux/verification.h
    cb759656ffb0 ALSA: hda: cs35l41: Undo runtime PM changes at driver exit time
    bcb94863b056 ALSA: hda: cs35l41: Fix unbalanced pm_runtime_get()
    8cd0ae3660b1 ASoC: cs35l41: Undo runtime PM changes at driver exit time
    22f034db12a2 ASoC: cs35l41: Verify PM runtime resume errors in IRQ handler
    809ec9f7d474 ASoC: cs35l41: Initialize completion object before requesting IRQ
    30a7908fdc18 ASoC: cs35l41: Handle mdsync_down reg write errors
    065d45141019 module/decompress: use vmalloc() for gzip decompression workspace
    1475a083ccee iommufd: Add iopt_area_alloc()
    0a54ac6ff6cc ARM: dts: BCM5301X: Explicitly disable unused switch CPU ports
    bd3cab2d710e soc: qcom: pmic_glink: fix connector type to be DisplayPort
    59a31165fe6d selftests/resctrl: Ensure the benchmark commands fits to its array
    ab13ca1ef2dd selftests/pidfd: Fix ksft print formats
    87483b30fad2 arm64: tegra: Use correct interrupts for Tegra234 TKE
    8e3f93cd849f memory: tegra: Set BPMP msg flags to reset IPC channels
    e3e711ef8a10 firmware: tegra: Add suspend hook and reset BPMP IPC early on resume
    ef3a7c256462 arm64: tegra: Fix P3767 QSPI speed
    d2ab1d75e486 arm64: tegra: Fix P3767 card detect polarity
    0a6baa9b5b64 arm64: dts: imx8mn: Add sound-dai-cells to micfil node
    a1a4d82e99b7 arm64: dts: imx8mm: Add sound-dai-cells to micfil node
    2e79e826233a arm64: dts: imx8mp-debix-model-a: Remove USB hub reset-gpios
    117a07e2e9e2 arm64: dts: imx8qm-ss-img: Fix jpegenc compatible entry
    b0a20843664e clk: scmi: Free scmi_clk allocated when the clocks with invalid info are skipped
    50fc96f3616b ARM: dts: am3517-evm: Fix LED3/4 pinmux
    507d5ffd1af9 firmware: arm_ffa: Allow the FF-A drivers to use 32bit mode of messaging
    90776e2a2f8d firmware: arm_ffa: Assign the missing IDR allocation ID to the FFA device
    128e4aff2c13 arm64: dts: ti: k3-am62a7-sk: Drop i2c-1 to 100Khz
    e1c755a2d0da arm64: dts: ti: k3-am625-beagleplay: Fix typo in ramoops reg
    99639d09f491 firmware: ti_sci: Mark driver as non removable
    2ff42f2d6450 kunit: Fix missed memory release in kunit_free_suite_set()
    3565684309e5 soc: qcom: llcc: Handle a second device without data corruption
    9f388768d380 ARM: dts: qcom: mdm9615: populate vsdcc fixed regulator
    cad2fdf734bc ARM: dts: qcom: apq8026-samsung-matisse-wifi: Fix inverted hall sensor
    895faac163db arm64: dts: qcom: apq8016-sbc: Add missing ADV7533 regulators
    769c5e9d15f6 riscv: dts: allwinner: remove address-cells from intc node
    04be6547e407 arm64: dts: qcom: msm8939: Fix iommu local address range
    f4b77d63a52c arm64: dts: qcom: msm8976: Fix ipc bit shifts
    d71128a962ed ARM64: dts: marvell: cn9310: Use appropriate label for spi1 pins
    19af445c6e45 arm64: dts: qcom: sdm845-mtp: fix WiFi configuration
    a96940caa86a arm64: dts: qcom: sm8350: fix pinctrl for UART18
    27ce256c1f08 arm64: dts: qcom: sm8150: add ref clock to PCIe PHYs
    d1423675ae95 arm64: dts: qcom: sc7280: drop incorrect EUD port on SoC side
    320f5ecb4528 arm64: dts: qcom: qrb2210-rb1: Swap UART index
    732a7b414f99 arm64: dts: qcom: sc7280: Add missing LMH interrupts
    845966edbf49 arm64: dts: qcom: sm6125: Pad APPS IOMMU address to 8 characters
    f9670c979946 arm64: dts: qcom: msm8992-libra: drop duplicated reserved memory
    5a360ea043ec arm64: dts: qcom: msm8916: Fix iommu local address range
    0d28ee4d3034 arm64: dts: qcom: sc7280: link usb3_phy_wrapper_gcc_usb30_pipe_clk
    ad523cd4258b arm64: dts: qcom: sdm845: cheza doesn't support LMh node
    e3d5e71ab28a arm64: dts: qcom: sdm845: Fix PSCI power domain names
    f3531725a243 ARM: dts: renesas: blanche: Fix typo in GP_11_2 pin name
    3405f364f82d perf: hisi: Fix use-after-free when register pmu fails
    3d92672e71d9 drivers/perf: hisi_pcie: Check the type first in pmu::event_init()
    b4a182cd0336 perf/arm-cmn: Fix DTC domain detection
    f0c771695a3f drm/amd/pm: Fix a memory leak on an error path
    3f5827371763 drivers/perf: hisi: use cpuhp_state_remove_instance_nocalls() for hisi_hns3_pmu uninit process
    98812fb0df70 drm: mediatek: mtk_dsi: Fix NO_EOT_PACKET settings/handling
    211267cc420b clocksource/drivers/arm_arch_timer: limit XGene-1 workaround
    57a90fb6ab11 drm/msm/dsi: free TX buffer in unbind
    a4522c7612f3 drm/msm/dsi: use msm_gem_kernel_put to free TX buffer
    2a57291a1131 xen-pciback: Consider INTx disabled when MSI/MSI-X is enabled
    ce60d6cc40fd xenbus: fix error exit in xenbus_init()
    bc27e08ecb09 drm/rockchip: Fix type promotion bug in rockchip_gem_iommu_map()
    1556f041b844 arm64/arm: xen: enlighten: Fix KPTI checks
    0a3d2b736bb9 drm/bridge: lt9611uxc: fix the race in the error path
    4ed0b4b2e49f gpu: host1x: Correct allocated size for contexts
    e30054a351ab drm/rockchip: cdn-dp: Fix some error handling paths in cdn_dp_probe()
    b720a10346a4 accel/habanalabs/gaudi2: Fix incorrect string length computation in gaudi2_psoc_razwi_get_engines()
    5190f8b3cf22 drm/mediatek: Fix iommu fault during crtc enabling
    c34934d7c2e0 drm/mediatek: Fix iommu fault by swapping FBs after updating plane state
    e5c2edb09edd drm/mediatek: Add mmsys_dev_num to mt8188 vdosys0 driver data
    cafff2cfb710 io_uring/kbuf: Allow the full buffer id space for provided buffers
    aabcc4c49967 io_uring/kbuf: Fix check of BID wrapping in provided buffers
    8c18de99dfcc drm/amd/display: Bail from dm_check_crtc_cursor if no relevant change
    7e4702c7b668 drm/amd/display: Refactor dm_get_plane_scale helper
    37289873d183 drm/amd/display: Check all enabled planes in dm_check_crtc_cursor
    97ef07182ac4 drm/amd/display: Fix null pointer dereference in error message
    35a00ee37ab4 drm/amdkfd: Handle errors from svm validate and map
    75800841b2e8 drm/amdkfd: Remove svm range validated_once flag
    96dc6e62eb99 drm/amdkfd: retry after EBUSY is returned from hmm_ranges_get_pages
    68ccd61c8d01 drm/amdkfd: fix some race conditions in vram buffer alloc/free of svm code
    1406172d5b11 drm/amdgpu: Increase IH soft ring size for GFX v9.4.3 dGPU
    84021fa4cf19 drm: Call drm_atomic_helper_shutdown() at shutdown/remove time for misc drivers
    2e6f00e063aa drm/tve200: Convert to platform remove callback returning void
    68da712aa242 drm/stm: Convert to platform remove callback returning void
    813ef38bb98b drm/aspeed: Convert to platform remove callback returning void
    b53575a965c9 drm/bridge: tc358768: Fix tc358768_ns_to_cnt()
    da8168f111ea drm/bridge: tc358768: Clean up clock period code
    194a13ed464a drm/bridge: tc358768: Rename dsibclk to hsbyteclk
    9b7cf64ec8c4 drm/bridge: tc358768: Use dev for dbg prints, not priv->dev
    9ddf3ac09716 drm/bridge: tc358768: Print logical values, not raw register values
    e56561d0354e drm/bridge: tc358768: Use struct videomode
    b85fb1a0721f drm/bridge: tc358768: Fix bit updates
    2ef9177fb721 drm/bridge: tc358768: Fix use of uninitialized variable
    2191950d35d8 x86/tdx: Zero out the missing RSI in TDX_HYPERCALL macro
    0d8a1df39d3f drm/mediatek: Fix coverity issue with unintentional integer overflow
    66e2bbbacaf8 drm/bridge: lt8912b: Add missing drm_bridge_attach call
    07a28632f744 drm/bridge: lt8912b: Manually disable HPD only if it was enabled
    fcd9895e3654 drm/bridge: lt8912b: Fix crash on bridge detach
    dd57f6864a59 drm/bridge: lt8912b: Fix bridge_detach
    1669d7b21a66 drm: bridge: it66121: Fix invalid connector dereference
    d9b4fa249dea drm/radeon: possible buffer overflow
    06a7c295473b drm/rockchip: vop2: Add missing call to crtc reset helper
    dbb193beab88 drm/rockchip: vop2: Don't crash for invalid duplicate_state
    ef76ecd31a81 drm/rockchip: vop: Fix call to crtc reset helper
    bf50a93fdca8 drm/rockchip: vop: Fix reset of state in duplicate state crtc funcs
    8b27fbec3dec drm: bridge: samsung-dsim: Fix waiting for empty cmd transfer FIFO on older Exynos
    7da5a7173ddc drm: bridge: for GENERIC_PHY_MIPI_DPHY also select GENERIC_PHY
    1d714586b36d drm: bridge: samsung-dsim: Initialize ULPS EXIT for i.MX8M DSIM
    97c8e2a7bc1f spi: omap2-mcspi: Fix hardcoded reference clock
    9f236f9f4d0d spi: omap2-mcspi: switch to use modern name
    3c266e619ac8 spi: omap2-mcspi: remove redundant dev_err_probe()
    332973079a2f platform/chrome: cros_ec_lpc: Separate host command and irq disable
    19e557524ded hte: tegra: Fix missing error code in tegra_hte_test_probe()
    2c7c5602622e hwmon: (sch5627) Disallow write access if virtual registers are locked
    0a31b778eed7 hwmon: (sch5627) Use bit macros when accessing the control register
    3c3c2d34a4d5 Revert "hwmon: (sch56xx-common) Add automatic module loading on supported devices"
    e323a3990f65 Revert "hwmon: (sch56xx-common) Add DMI override table"
    4833a85169a6 hwmon: (coretemp) Fix potentially truncated sysfs attribute name
    f62b89698478 hwmon: (axi-fan-control) Fix possible NULL pointer dereference
    6d9ce15c5fa1 regulator: qcom-rpmh: Fix smps4 regulator for pm8550ve
    36d85fa7ae0d platform/x86: wmi: Fix opening of char device
    7298b80337aa platform/x86: wmi: Fix probe failure when failing to register WMI devices
    e6fed83e33af clk: mediatek: fix double free in mtk_clk_register_pllfh()
    63d552f9dae8 clk: qcom: ipq5332: drop the CLK_SET_RATE_PARENT flag from GPLL clocks
    6f6ea5133aba clk: qcom: ipq9574: drop the CLK_SET_RATE_PARENT flag from GPLL clocks
    3731eb54fbef clk: qcom: apss-ipq-pll: Fix 'l' value for ipq5332_pll_config
    5b6384ed71dc clk: qcom: apss-ipq-pll: Use stromer plus ops for stromer plus pll
    3015361a505d clk: qcom: clk-alpha-pll: introduce stromer plus ops
    ddaada8cc4d2 clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM
    e61934720af4 clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data
    1d89430fc315 clk: mediatek: clk-mt7629: Add check for mtk_alloc_clk_data
    b20cfe007a46 clk: mediatek: clk-mt7629-eth: Add check for mtk_alloc_clk_data
    be3f12f16038 clk: mediatek: clk-mt6797: Add check for mtk_alloc_clk_data
    a90239551abc clk: mediatek: clk-mt6779: Add check for mtk_alloc_clk_data
    10cc81124407 clk: mediatek: clk-mt6765: Add check for mtk_alloc_clk_data
    a9e4a47f89d9 clk: npcm7xx: Fix incorrect kfree
    ba88f032ff9f clk: ti: fix double free in of_ti_divider_clk_setup()
    67ee360e138c clk: keystone: pll: fix a couple NULL vs IS_ERR() checks
    2e4db0148cb2 clk: ralink: mtmips: quiet unused variable warning
    99bb148bd565 spi: nxp-fspi: use the correct ioremap function
    da164c3c4a2f clk: linux/clk-provider.h: fix kernel-doc warnings and typos
    55de4ff94fb4 clk: renesas: rzg2l: Fix computation formula
    7fdb4ef9812a clk: renesas: rzg2l: Use FIELD_GET() for PLL register fields
    4be4c8e224f9 clk: renesas: rzg2l: Trust value returned by hardware
    5cb18d032293 clk: renesas: rzg2l: Lock around writes to mux register
    8afb9e94e3a9 clk: renesas: rzg2l: Wait for status bit of SD mux before continuing
    40d3370bf2c0 clk: renesas: rcar-gen3: Extend SDnH divider table
    cebb0fe4aa9a clk: imx: imx8qxp: Fix elcdif_pll clock
    b2931c28e1f5 clk: imx: imx8mq: correct error handling path
    fbbcc60999c0 clk: imx: Select MXC_CLK for CLK_IMX8QXP
    3d0eb456567e regulator: mt6358: Fail probe on unknown chip ID
    a3c73486e80e clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src
    efa39c1e151e clk: qcom: mmcc-msm8998: Fix the SMMU GDSC
    08f003231c36 clk: qcom: mmcc-msm8998: Don't check halt bit on some branch clks
    22de7cb08bc6 clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies
    db96de8d8d4a clk: qcom: gcc-msm8996: Remove RPM bus clocks
    577165aa4989 clk: qcom: ipq5332: Drop set rate parent from gpll0 dependent clocks
    4eb8065494ca spi: tegra: Fix missing IRQ check in tegra_slink_probe()
    80a5d81d4cd2 regmap: debugfs: Fix a erroneous check after snprintf()
    a043d6210114 ipvlan: properly track tx_errors
    1589a9ab2566 net: add DEV_STATS_READ() helper
    d2683d7e949b virtio_net: use u64_stats_t infra to avoid data-races
    1c3b6106b64f ipv6: avoid atomic fragment on GSO packets
    cd524da2cb0a mptcp: properly account fastopen data
    729c4521d976 ACPI: sysfs: Fix create_pnp_modalias() and create_of_modalias()
    978f0f776d68 bpf: Fix unnecessary -EBUSY from htab_lock_bucket
    49e30526fa4d Bluetooth: hci_sync: Fix Opcode prints in bt_dev_dbg/err
    e9f708beada5 Bluetooth: Make handle of hci_conn be unique
    cfe86064f3b2 Bluetooth: ISO: Pass BIG encryption info through QoS
    c03a10bd5b6c Bluetooth: ISO: Use defer setup to separate PA sync and BIG sync
    2dae48035862 wifi: iwlwifi: empty overflow queue during flush
    23afa6598cf9 wifi: iwlwifi: mvm: update IGTK in mvmvif upon D3 resume
    e8e2baaee4cb wifi: iwlwifi: pcie: synchronize IRQs before NAPI
    3cccddd70eb0 wifi: iwlwifi: mvm: fix netif csum flags
    e03348361533 wifi: iwlwifi: increase number of RX buffers for EHT devices
    b78cbb0236cf wifi: iwlwifi: mvm: remove TDLS stations from FW
    9c3bd60f393b wifi: iwlwifi: mvm: fix iwl_mvm_mac_flush_sta()
    dbe89643a5cf wifi: iwlwifi: mvm: change iwl_mvm_flush_sta() API
    8ddf2212cfa5 wifi: iwlwifi: mvm: Don't always bind/link the P2P Device interface
    6ff7022af4f9 wifi: iwlwifi: mvm: Fix key flags for IGTK on AP interface
    67abefa1b6a2 wifi: iwlwifi: mvm: Correctly set link configuration
    85998fb855d5 wifi: iwlwifi: yoyo: swap cdb and jacket bits values
    a989fe88b4da wifi: mac80211: Fix setting vif links
    fb506ef6073c wifi: mac80211: don't recreate driver link debugfs in reconfig
    8bb8769a5be4 wifi: iwlwifi: mvm: use correct sta ID for IGTK/BIGTK
    02b4f94db6a9 wifi: iwlwifi: mvm: fix removing pasn station for responder
    eec6e3a038f2 wifi: iwlwifi: mvm: update station's MFP flag after association
    a37178ca64e5 tcp: fix cookie_init_timestamp() overflows
    5a8444edba46 chtls: fix tp->rcv_tstamp initialization
    3ea25904699d thermal: core: Don't update trip points inside the hysteresis range
    25fb2d77d864 net: skb_find_text: Ignore patterns extending past 'to'
    ddd13ab729e8 selftests: netfilter: test for sctp collision processing in nf_conntrack
    36b6a910966a bpf: Fix missed rcu read lock in bpf_task_under_cgroup()
    0e26bd87a123 thermal/drivers/mediatek: Fix probe for THERMAL_V2
    8c38926925e6 r8169: fix rare issue with broken rx after link-down on RTL8125
    0f6b3be28c4d thermal: core: prevent potential string overflow
    1a33a7eed322 wifi: rtw88: Remove duplicate NULL check before calling usb_kill/free_urb()
    6809ededee0c netfilter: nf_tables: Drop pointless memset when dumping rules
    564f5b55c491 wifi: wfx: fix case where rates are out of order
    adf59b43d1c1 PM / devfreq: rockchip-dfi: Make pmu regmap mandatory
    53c468008a7c can: dev: can_put_echo_skb(): don't crash kernel if can_priv::echo_skb is accessed out of bounds
    b20ffe03852c can: dev: can_restart(): fix race condition between controller restart and netif_carrier_on()
    e999bb83bc24 can: dev: can_restart(): don't crash kernel if carrier is OK
    aecdee9ea305 wifi: ath11k: fix Tx power value during active CAC
    6c8a21833542 can: etas_es58x: add missing a blank line after declaration
    a7c770dad30d can: etas_es58x: rework the version check logic to silence -Wformat-truncation
    6fefd3a91f9d ACPI: video: Add acpi_backlight=vendor quirk for Toshiba Portégé R100
    3c243765ecff ACPI: property: Allow _DSD buffer data only for byte accessors
    dc40d464a6e2 wifi: rtlwifi: fix EDCA limit set by BT coexistence
    033ea0297afa tcp_metrics: do not create an entry from tcp_init_metrics()
    9b248b297c5d tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()
    f49ce3b36f19 tcp_metrics: add missing barriers on delete
    1946b7ee4639 wifi: ath: dfs_pattern_detector: Fix a memory initialization issue
    0137d53ad903 wifi: mt76: mt7915: fix beamforming availability check
    c8cbbafb9257 wifi: mt76: fix per-band IEEE80211_CONF_MONITOR flag comparison
    a3974410431a wifi: mt76: get rid of false alamrs of tx emission issues
    53680becbf98 wifi: mt76: fix potential memory leak of beacon commands
    0e39acefbd81 wifi: mt76: update beacon size limitation
    9876a27f8bab wifi: mt76: mt7996: fix TWT command format
    03b551ea5793 wifi: mt76: mt7996: fix rx rate report for CBW320-2
    919eb49073ad wifi: mt76: mt7996: fix wmm queue mapping
    85670c859798 wifi: mt76: mt7996: fix beamformee ss subfield in EHT PHY cap
    c3bcca36485f wifi: mt76: mt7996: fix beamform mcu cmd configuration
    0f646b7673c5 wifi: mt76: mt7996: set correct wcid in txp
    c2deba4c5d44 wifi: mt76: remove unused error path in mt76_connac_tx_complete_skb
    d8633bde468c wifi: mt76: connac: move connac3 definitions in mt76_connac3_mac.h
    c67c80221728 wifi: mt76: mt7603: improve stuck beacon handling
    f65f47ebd64a wifi: mt76: mt7603: improve watchdog reset reliablity
    33f73d154e4e wifi: mt76: mt7603: rework/fix rx pse hang check
    9c6b20fd5e8d cpufreq: tegra194: fix warning due to missing opp_put
    e6db756dea7e PM: sleep: Fix symbol export for _SIMPLE_ variants of _PM_OPS()
    57ec37162d91 wifi: mac80211: fix check for unusable RX result
    5a9f55efa933 wifi: ath11k: fix boot failure with one MSI vector
    c58a1ed71752 wifi: ath12k: fix DMA unmap warning on NULL DMA address
    002835b8594c wifi: rtw88: debug: Fix the NULL vs IS_ERR() bug for debugfs_create_file()
    c4d57007947b net: ethernet: mtk_wed: fix EXT_INT_STATUS_RX_FBUF definitions for MT7986 SoC
    2996a509c0c9 net: spider_net: Use size_add() in call to struct_size()
    26ff419dfd91 tipc: Use size_add() in calls to struct_size()
    7c13d9cce81b tls: Use size_add() in call to struct_size()
    d648260e44a2 mlxsw: Use size_mul() in call to struct_size()
    3f7955a902d8 gve: Use size_add() in call to struct_size()
    1e5788c94e97 bpf: Fix kfunc callback register type handling
    71b468c11ac2 tcp: call tcp_try_undo_recovery when an RTOd TFO SYNACK is ACKed
    861279e5fce0 selftests/bpf: Skip module_fentry_shadow test when bpf_testmod is not available
    91df7ecb5e7d udplite: fix various data-races
    ab764daadadd udplite: remove UDPLITE_BIT
    645d838018f7 udp: annotate data-races around udp->encap_type
    b92fd3e60d7d udp: lockless UDP_ENCAP_L2TPINUDP / UDP_GRO
    f3c11d077a5f udp: move udp->accept_udp_{l4|fraglist} to udp->udp_flags
    f835f0c6252c udp: add missing WRITE_ONCE() around up->encap_rcv
    71e5417cee0f udp: move udp->gro_enabled to udp->udp_flags
    d18aa214b26a udp: move udp->no_check6_rx to udp->udp_flags
    06073e04aeec udp: move udp->no_check6_tx to udp->udp_flags
    f0fe1abb2826 udp: introduce udp->udp_flags
    c7072b00bd09 wifi: cfg80211: fix kernel-doc for wiphy_delayed_work_flush()
    028480eaf2a1 bpf, x64: Fix tailcall infinite loop
    8d650d035ac7 bpf, x86: allow function arguments up to 12 for TRACING
    3953ef4ca975 bpf, x86: save/restore regs with BPF_DW size
    dbb56575b86f selftests/bpf: Correct map_fd to data_fd in tailcalls
    dadda161609c iavf: Fix promiscuous mode configuration flow messages
    e381bf9edc9b i40e: fix potential memory leaks in i40e_remove()
    446d03186fe9 wifi: iwlwifi: don't use an uninitialized variable
    6313926b3e32 wifi: iwlwifi: honor the enable_ini value
    ebda7f6fe90a wifi: mac80211: fix # of MSDU in A-MSDU calculation
    fc658d36928d wifi: cfg80211: fix off-by-one in element defrag
    13455e5b9864 wifi: mac80211: fix RCU usage warning in mesh fast-xmit
    0d7d812fcfde wifi: mac80211: move sched-scan stop work to wiphy work
    f293f4ebcbdc wifi: mac80211: move offchannel works to wiphy work
    63aa1a0fa677 wifi: mac80211: move scan work to wiphy work
    8eb0012a0936 wifi: mac80211: move radar detect work to wiphy work
    a591a106f36c wifi: cfg80211: add flush functions for wiphy work
    364816d0c5d2 wifi: ath12k: fix undefined behavior with __fls in dp
    982ea0aa2bc5 irqchip/sifive-plic: Fix syscore registration for multi-socket systems
    a979a1cc9aea genirq/matrix: Exclude managed interrupts in irq_matrix_allocated()
    4410c1bc4868 string: Adjust strtomem() logic to allow for smaller sources
    728835dc03a3 PCI/MSI: Provide stubs for IMS functions
    9e1d81681317 selftests/x86/lam: Zero out buffer for readlink()
    414d48289cd0 perf: Optimize perf_cgroup_switch()
    1c426da79f9f pstore/platform: Add check for kstrdup
    d15950c49046 x86/nmi: Fix out-of-order NMI nesting checks & false positive warning
    d3dd62fcfa6b drivers/clocksource/timer-ti-dm: Don't call clk_get_rate() in stop function
    8152efcae888 srcu: Fix callbacks acceleration mishandling
    b427ae0ccf13 x86/apic: Fake primary thread mask for XEN/PV
    efd6e0851071 cpu/SMT: Make SMT control more robust against enumeration failures
    15141adf85b1 cpu/SMT: Create topology_smt_thread_allowed()
    2909a6404460 cpu/hotplug: Remove dependancy against cpu_primary_thread_mask
    147a1ba15c5f x86/boot: Fix incorrect startup_gdt_descr.size
    c87f1c452ca1 x86/sev-es: Allow copy_from_kernel_nofault() in earlier boot
    b776e9161ab6 ACPI/NUMA: Apply SRAT proximity domain to entire CFMWS window
    9011702db2c7 x86/numa: Introduce numa_fill_memblks()
    5c758ec2f5b1 futex: Don't include process MM in futex key on no-MMU
    9c39fa2992c3 x86/srso: Fix unret validation dependencies
    e310a2eb785f x86/srso: Fix vulnerability reporting for missing microcode
    1f7f6ef03896 x86/srso: Print mitigation for retbleed IBPB case
    68f9ff154168 x86/srso: Fix SBPB enablement for (possible) future fixed HW
    6ef3d8bed0cb writeback, cgroup: switch inodes with dirty timestamps to release dying cgwbs
    e1d6675d4baf vfs: fix readahead(2) on block devices
    3aa811a186df nfsd: Handle EOPENSTALE correctly in the filecache
    ef90e6ef5cb4 sched: Fix stop_one_cpu_nowait() vs hotplug
    761c20be2c45 objtool: Propagate early errors
    311485482fa4 sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0
    f4988493495f sched/uclamp: Set max_spare_cap_cpu even if max_spare_cap is 0
    126e7873d4e7 iov_iter, x86: Be consistent about the __user tag on copy_mc_to_user()
    1ba876f33d96 sched/fair: Fix cfs_rq_is_decayed() on !SMP
    107688f52ae3 sched/topology: Fix sched_numa_find_nth_cpu() in non-NUMA case
    e213ce7956cd sched/topology: Fix sched_numa_find_nth_cpu() in CPU-less case
    5efa13258d8f numa: Generalize numa_map_to_online_node()
    ef041fcee0bf hwmon: (nct6775) Fix incorrect variable reuse in fan_div calculation

(From OE-Core rev: 33a9b4a6d292a92443046fec141cb8a6ab2c6084)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d4fc2c7ff53db1b914b9830a71f8fab5e2a27254)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
1b4fc88a69 linux-yocto/6.5: update to v6.5.11
Updating  to the latest korg -stable release that comprises
the following commits:

    799441832db1 Linux 6.5.11
    dd1756d79179 ASoC: SOF: sof-pci-dev: Fix community key quirk detection
    aab16960e6e7 ALSA: hda: intel-dsp-config: Fix JSL Chromebook quirk detection
    575d3966a7da serial: core: Fix runtime PM handling for pending tx
    9f625a9ec6ad misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support
    fe3545fb7c39 dt-bindings: serial: rs485: Add rs485-rts-active-high
    71a913eb5331 tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks
    7ffbf5db6963 tty: 8250: Add support for Intashield IX cards
    8435b1f55760 tty: 8250: Add support for additional Brainboxes PX cards
    21b8147a36f8 tty: 8250: Fix up PX-803/PX-857
    98f984ff81de tty: 8250: Fix port count of PX-257
    256a534427e9 tty: 8250: Add support for Intashield IS-100
    933dde5b2082 tty: 8250: Add support for Brainboxes UP cards
    a4a09f0ed3cd tty: 8250: Add support for additional Brainboxes UC cards
    ca7f138b2c52 tty: 8250: Remove UC-257 and UC-431
    19d34b73234a tty: n_gsm: fix race condition in status line change on dead connections
    fd277724946d Bluetooth: hci_bcm4377: Mark bcm4378/bcm4387 as BROKEN_LE_CODED
    885108988763 usb: raw-gadget: properly handle interrupted requests
    9ee038590d80 usb: typec: tcpm: Fix NULL pointer dereference in tcpm_pd_svdm()
    de5ac4d46304 usb: typec: tcpm: Add additional checks for contaminant
    80105fc04b44 usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" compatibility
    c99f302ea679 PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device
    52d89332fbc6 ALSA: usb-audio: add quirk flag to enable native DSD for McIntosh devices
    c75a5e421b07 mmap: fix error paths with dup_anon_vma()
    578c20ab383f mmap: fix vma_iterator in error path of vma_merge()
    cd91606eff46 perf evlist: Avoid frequency mode for the dummy event
    65d457433a08 power: supply: core: Use blocking_notifier_call_chain to avoid RCU complaint
    a58f5fabcab0 rust: types: make `Opaque` be `!Unpin`
    7fba72536eb5 rust: make `UnsafeCell` the outer type in `Opaque`
    07256dc046b1 drm/amd/display: Don't use fsleep for PSR exit waits
    4ec5def87694 ceph_wait_on_conflict_unlink(): grab reference before dropping ->d_lock
    fd652af1e1f9 io_uring: kiocb_done() should *not* trust ->ki_pos if ->{read,write}_iter() failed
    fd318cc5b221 powerpc/mm: Fix boot crash with FLATMEM
    c1d14ab7d666 r8152: Check for unplug in r8153b_ups_en() / r8153c_ups_en()
    b233d39f7e15 r8152: Check for unplug in rtl_phy_patch_request()
    19471af243b2 net: chelsio: cxgb4: add an error code check in t4_load_phy_fw
    17002b8f2606 riscv: dts: thead: set dma-noncoherent to soc bus
    9f0400d31e56 drm/amdgpu: Reserve fences for VM update
    6ca3c25f5472 platform/mellanox: mlxbf-tmfifo: Fix a warning message
    6cca6f997088 netfilter: nf_tables: audit log object reset once per table
    99d311781fe5 LoongArch: Disable WUC for pgprot_writecombine() like ioremap_wc()
    6b43fea5f245 LoongArch: Replace kmap_atomic() with kmap_local_page() in copy_user_highpage()
    c86a4fbc2d5a LoongArch: Export symbol invalid_pud_table for modules building
    74f9c03ecf79 LoongArch: Use SYM_CODE_* to annotate exception handlers
    19fe554e5fcf gpu/drm: Eliminate DRM_SCHED_PRIORITY_UNSET
    4ca54e8b459d drm/amdgpu: Unset context priority is now invalid
    4debab37b1bc ASoC: da7219: Correct the process of setting up Gnd switch in AAD
    22da32b45717 scsi: mpt3sas: Fix in error path
    8377f82beacf fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit()
    0a997e6eeee8 fbdev: omapfb: fix some error codes
    93ff3297b04a drm/ttm: Reorder sys manager cleanup step
    0074d0980bf8 s390/kasan: handle DCSS mapping in memory holes
    652d60ecb7a5 ASoC: codecs: tas2780: Fix log of failed reset via I2C.
    4dd62532e05c ASoC: rt5650: fix the wrong result of key button
    ce5329ee79e5 efi: fix memory leak in krealloc failure handling
    c76be4af694e x86/efistub: Don't try to print after ExitBootService()
    5c4e4f31643d net/mlx5: Bridge, fix peer entry ageing in LAG mode
    ead8d9a6b6ff netfilter: nfnetlink_log: silence bogus compiler warning
    988ed1c96c42 ASoC: soc-dapm: Add helper for comparing widget name
    c68a8c5b50b9 spi: npcm-fiu: Fix UMA reads when dummy.nbytes == 0
    6777f23bca89 fs/ntfs3: Avoid possible memory leak
    b9ec0e799a2d fs/ntfs3: Fix directory element type detection
    0030ccd87a87 fs/ntfs3: Fix NULL pointer dereference on error in attr_allocate_frame()
    3228a2e0e5a7 fs/ntfs3: Fix possible NULL-ptr-deref in ni_readpage_cmpr()
    d408008a881a fs/ntfs3: Do not allow to change label if volume is read-only
    da05aa786c20 fs/ntfs3: Add more info into /proc/fs/ntfs3/<dev>/volinfo
    31baaf864b39 fs/ntfs3: Fix alternative boot searching
    1d7dd485108d fs/ntfs3: Add more attributes checks in mi_enum_attr()
    36ffca949ab2 fs/ntfs3: Use kvmalloc instead of kmalloc(... __GFP_NOWARN)
    28ece3bd8596 fs/ntfs3: Write immediately updated ntfs state
    8d3d7dbdbddd fs/ntfs3: Add ckeck in ni_update_parent()
    78b4576f0e38 fbdev: atyfb: only use ioremap_uc() on i386 and ia64
    83a28f46ed3c Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport
    a18a7cc55c5b media: i2c: ov8858: Don't set fwnode in the driver
    d4c3cb925e65 powerpc/85xx: Fix math emulation exception
    0cae483a9c8e ata: pata_parport: fit3: implement IDE command set registers
    e2fa6f732a73 ata: pata_parport: add custom version of wait_after_reset
    142ac0fda553 dmaengine: ste_dma40: Fix PM disable depth imbalance in d40_probe
    5976e4ed1405 irqchip/stm32-exti: add missing DT IRQ flag translation
    b65f1eec2d8e irqchip/riscv-intc: Mark all INTC nodes as initialized
    4b0dfa2fc745 can: flexcan: remove the auto stop mode for IMX93
    4bd493ce8d74 arm64: dts: imx93: add the Flex-CAN stop mode by GPR
    92705546718b net: sched: cls_u32: Fix allocation size in u32_init()
    6f9195596a6f ASoC: tlv320adc3xxx: BUG: Correct micbias setting
    31af9e3be3cd ASoC: core: Do not call link_exit() on uninitialized rtd objects
    0716f52fa334 ASoC: fsl-asoc-card: use integer type for fll_id and pll_id
    ac947c0992ef coresight: tmc-etr: Disable warnings for allocation failures
    4dfa1e33d481 ASoC: simple-card: fixup asoc_simple_probe() error handling
    8555438a0d87 ASoC: Intel: sof_sdw: add support for SKU 0B14

(From OE-Core rev: fb7733d173258bb951aa924946266bab309362b1)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 0f56f12e7353f97855befb765ca8c0117736cb96)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
a62bcec004 linux-yocto/6.5: cfg: split runtime and symbol debug
Integrating the following commit(s) to linux-yocto/.:

1/1 [
    Author: Bruce Ashfield
    Email: bruce.ashfield@gmail.com
    Subject: debug: move PREEMPT_DEBUG to a runtime debug fragment
    Date: Thu, 9 Nov 2023 12:08:31 -0500

    For tools like spdx and debuggers to work with the kernel, we
    require extra information. That is provided by the DEBUG_INFO
    flags.

    In that same fragment, some runtime debugging is being enabled
    and that adds signficant overhead to the kernel.

    Let's start a new runtime debug fragment with DEBUG_PREEMPT
    and locking. We can add more to this in the future.

    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: 0bbd2a89f971efe2ef2d59e7f8919da2e52a7f2d)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8cd829de8e8770aa4a46e984f6ef2cab3194fd29)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
960bed420b linux-yocto/6.5: update to v6.5.10
Updating  to the latest korg -stable release that comprises
the following commits:

    43a868577dfc Linux 6.5.10
    062c1ba88b4f accel/ivpu/37xx: Fix missing VPUIP interrupts
    cdb4daffc2d4 mm/damon/sysfs: check DAMOS regions update progress from before_terminate()
    a5c9f6289625 platform/x86: Add s2idle quirk for more Lenovo laptops
    adebf494e425 clk: stm32: Fix a signedness issue in clk_stm32_composite_determine_rate()
    302479e2d4c4 clk: socfpga: gate: Account for the divider in determine_rate
    5193aec42c45 clk: Sanitize possible_parent_show to Handle Return Value of of_clk_get_parent_name
    d1e039180f81 sparc32: fix a braino in fault handling in csum_and_copy_..._user()
    516177805997 perf/core: Fix potential NULL deref
    25de47d0d6e7 x86/cpu: Add model number for Intel Arrow Lake mobile processor
    3256ad9bb4ce x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility
    7f864ab94da3 x86/tsc: Defer marking TSC unstable to a worker
    cfa5aa4a5ea2 nvmem: imx: correct nregs for i.MX6UL
    4f6c3da9a978 nvmem: imx: correct nregs for i.MX6SLL
    3e325ac1eec9 nvmem: imx: correct nregs for i.MX6ULL
    bc0991e8e1fb misc: fastrpc: Unmap only if buffer is unmapped from DSP
    8e4afa8598d9 misc: fastrpc: Clean buffers on remote invocation failures
    c2400bfd8ce4 misc: fastrpc: Free DMA handles for RPC calls with no arguments
    0351f86266f6 misc: fastrpc: Reset metadata buffer to avoid incorrect free
    96790d33261c tracing/kprobes: Fix the description of variable length arguments
    63de22fdf851 tracing/kprobes: Fix symbol counting logic by looking at modules as well
    001b2dc822d3 i2c: aspeed: Fix i2c bus hang in slave read
    20062e7a248f i2c: stm32f7: Fix PEC handling in case of SMBUS transfers
    e505ca5d9ac0 i2c: muxes: i2c-demux-pinctrl: Use of_get_i2c_adapter_by_node()
    135e2858ab78 i2c: muxes: i2c-mux-gpmux: Use of_get_i2c_adapter_by_node()
    2f7671a14960 i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node()
    5f6dc4a12d79 iio: adc: xilinx-xadc: Correct temperature offset/scale for UltraScale
    f763aa29992d iio: adc: xilinx-xadc: Don't clobber preset voltage/temperature thresholds
    f2bd3c005aba iio: exynos-adc: request second interupt only when touchscreen mode is used
    0a9bb3fa6870 iio: afe: rescale: Accept only offset channels
    56e08ccc9697 io_uring/fdinfo: lock SQ thread while retrieving thread cpu/pid
    1c43576ac2d1 kasan: print the original fault addr when access invalid shadow
    6cf937305199 blk-throttle: check for overflow in calculate_bytes_allowed
    c031d9a8383d scsi: sd: Introduce manage_shutdown device flag
    927c770488fe iavf: in iavf_down, disable queues when removing the driver
    de306715bc3f drm/i915/mcr: Hold GT forcewake during steering operations
    a90e92e77bb6 drm/logicvc: Kconfig: select REGMAP and REGMAP_MMIO
    180069f6b8e8 net/sched: act_ct: additional checks for outdated flows
    533c24b368d7 netfilter: flowtable: GC pushes back packets to classic path
    36cf7d1d79ec i40e: Fix wrong check for I40E_TXR_FLAGS_WB_ON_ITR
    4c898bdfc6a1 drm/i915/perf: Determine context valid in OA reports
    9ba154363a09 gtp: fix fragmentation needed check with gso
    62376a558db3 gtp: uapi: fix GTPA_MAX
    450d6bf74c28 net/handshake: fix file ref count in handshake_nl_accept_doit()
    8279cd3af8bf wifi: mac80211: don't drop all unprotected public action frames
    943431ee2a17 wifi: cfg80211: fix assoc response warning on failed links
    989ac939b1a5 wifi: cfg80211: pass correct pointer to rdev_inform_bss()
    9617c77f0c0e tcp: fix wrong RTO timeout when received SACK reneging
    a22e19386109 r8152: Release firmware if we have an error in probe
    0fd9553632fd r8152: Cancel hw_phy_work if we have an error in probe
    56e8946e1a25 r8152: Run the unload routine if we have errors during probe
    90b49a273de0 r8152: Increase USB control msg timeout to 5000ms as per spec
    c11f5c496f65 net: usb: smsc95xx: Fix uninit-value access in smsc95xx_read_reg
    0d3295a43c63 net: ieee802154: adf7242: Fix some potential buffer overflow in adf7242_stats_show()
    8e0e94bf5b4a net: ethernet: adi: adin1110: Fix uninitialized variable
    fdba00877119 igc: Fix ambiguity in the ethtool advertising
    cf6fd6e0a831 neighbour: fix various data-races
    5f9d1995d040 net: do not leave an empty skb in write queue
    7462118b2083 igb: Fix potential memory leak in igb_add_ethtool_nfc_entry
    fd9d5ad3c865 treewide: Spelling fix in comment
    7e5beb46db3a i40e: Fix I40E_FLAG_VF_VLAN_PRUNING value
    f927602db213 iavf: initialize waitqueues before starting watchdog_task
    bcbf3f442903 r8169: fix the KCSAN reported data race in rtl_rx while reading desc->opts1
    03599d8d353a r8169: fix the KCSAN reported data-race in rtl_tx while reading TxDescArray[entry].opts1
    23473ffd3aec r8169: fix the KCSAN reported data-race in rtl_tx() while reading tp->cur_tx
    3dacf771d6e4 clk: ti: Fix missing omap5 mcbsp functional clock and aliases
    202f0a4266ca clk: ti: Fix missing omap4 mcbsp functional clock and aliases
    7e6cde9455e1 firmware/imx-dsp: Fix use_after_free in imx_dsp_setup_channels()
    ec4a1eed8259 ARM: OMAP: timer32K: fix all kernel-doc warnings
    0bc72b967d82 btrfs: fix unwritten extent buffer after snapshotting a new subvolume
    ca9cd8fb3454 btrfs: remove v0 extent handling
    1df7ca358099 drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper()
    ed93977857fd drm/amd: Disable ASPM for VI w/ all Intel systems
    5692e4e09f0a drm/i915/pmu: Check if pmu is closed before stopping event
    7c05a73c3893 accel/ivpu: Don't enter d0i3 during FLR
    4bb5ed32bf06 ARM: dts: rockchip: Fix timer clocks for RK3128
    6d6e82fb8a94 ARM: dts: rockchip: Add missing quirk for RK3128's dma engine
    835fdd9a36cc ARM: dts: rockchip: Add missing arm timer interrupt for RK3128
    568192da05cb ARM: dts: rockchip: Fix i2c0 register address for RK3128
    f4b8ef292ec6 ARM: OMAP1: ams-delta: Fix MODEM initialization failure
    0a411c59897e vdpa/mlx5: Fix double release of debugfs entry
    37509b77aeeb vdpa_sim_blk: Fix the potential leak of mgmt_dev
    a3e7e0de21cf nfsd: lock_rename() needs both directories to live on the same fs
    11bc9f5c70bb maple_tree: add GFP_KERNEL to allocations in mas_expected_entries()
    257931b5d8b1 hugetlbfs: extend hugetlb_vma_lock to private VMAs
    a6d2f04abe6a mm/mempolicy: fix set_mempolicy_home_node() previous VMA pointer
    c0ade01d5369 selftests/mm: include mman header to access MREMAP_DONTUNMAP identifier
    941f6af9946e mm/migrate: fix do_pages_move for compat pointers
    5d6ea592222a mm/page_alloc: correct start page when guard page debug is enabled
    92c5ddea6a6c hugetlbfs: clear resv_map pointer if mmap fails
    e3f64e0bb2fa mm: fix vm_brk_flags() to not bail out while holding lock
    5ee66af50c41 i40e: sync next_to_clean and next_to_process for programming status desc
    6ba04d5dfd00 arm64: dts: rockchip: Fix i2s0 pin conflict on ROCK Pi 4 boards
    7bc99864cb91 arm64: dts: rockchip: Add i2s0-2ch-bus-bclk-off pins to RK3399
    7c5934f90db6 arm64: dts: qcom: sa8775p: correct PMIC GPIO label in gpio-ranges
    7f5d458012fa arm64: dts: rockchip: set codec system-clock-fixed on px30-ringneck-haikou
    51b3ef53fa5d arm64: dts: rockchip: use codec as clock master on px30-ringneck-haikou
    aa7df1844910 arm64: dts: qcom: msm8996-xiaomi: fix missing clock populate
    d8b34f309f36 arm64: dts: qcom: apq8096-db820c: fix missing clock populate
    368b3c788e99 vhost: Allow null msg.size on VHOST_IOTLB_INVALIDATE
    e83bce65ae80 vsock/virtio: initialize the_virtio_vsock before using VQs
    7efb5418f8cb virtio_pci: fix the common cfg map size
    91dacc7d5dbd virtio-crypto: handle config changed by work queue
    5f8c38e9538f virtio-mmio: fix memory leak of vm_dev
    84a50412e433 virtio_balloon: Fix endless deflation and inflation on arm64
    436be190fbf8 smb: client: prevent new fids from being removed by laundromat
    f806b7e98cb9 smb: client: make laundromat a delayed worker
    b8c0ab226fee smb: client: do not start laundromat thread on nohandlecache
    b483b64677a1 smb3: do not start laundromat thread when dir leases disabled
    3027d3064c71 smb3: allow controlling maximum number of cached directories
    9cb2ea5d7d2a smb3: allow controlling length of time directory entries are cached with dir leases
    c3b054a86347 vdpa/mlx5: Fix firmware error on creation of 1k VQs

(From OE-Core rev: 77e9d783948949a6e7d19f750c07a8162d720223)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ddbba0d5a997d428a3c63580f845c0d581cac460)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
6d7d4ccc05 linux-yocto/6.5: cfg: restore CONFIG_DEVMEM
Integrating the following commit(s) to linux-yocto/.:

1/1 [
    Author: C. Andy Martin
    Email: cam@myfastmail.com
    Subject: security.cfg: restore strict-only /dev/mem access
    Date: Fri, 27 Oct 2023 11:22:06 -0400

    CONFIG_DEVMEM was mistakenly not enabled, which defeats
    CONFIG_STRICT_DEVMEM and friends, as it completely removes all
    /dev/mem support.

    Signed-off-by: C. Andy Martin <cam@myfastmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: 98d448d05a3f4166569159756f8bfaac4ce358ab)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit c459be32000d703aad179a4bf5ef2479813f0404)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
44d37517ed linux-yocto/6.1: update to v6.1.65
Updating  to the latest korg -stable release that comprises
the following commits:

    c6114c845984 Linux 6.1.65
    66ecd1cd8b0c io_uring: fix off-by one bvec index
    812171018e47 USB: dwc3: qcom: fix wakeup after probe deferral
    72ef87bb8e5d USB: dwc3: qcom: fix software node leak on probe errors
    fc7b2fe26769 usb: dwc3: set the dma max_seg_size
    92b9eca53de8 usb: dwc3: Fix default mode initialization
    451c5a61722d USB: dwc2: write HCINT with INTMASK applied
    d9be7a129778 usb: typec: tcpm: Skip hard reset when in error recovery
    c15cb712da41 USB: serial: option: don't claim interface 4 for ZTE MF290
    5a657b34fe83 USB: serial: option: fix FM101R-GL defines
    4fccb016ffcd USB: serial: option: add Fibocom L7xx modules
    f70b0b6fd8c6 usb: cdnsp: Fix deadlock issue during using NCM gadget
    f9ba5dd0d9c9 bcache: fixup lock c->root error
    c736af32a82b bcache: fixup init dirty data errors
    c37aca3dd513 bcache: prevent potential division by zero error
    366f3648f10e bcache: check return value from btree_node_alloc_replacement()
    4241b51f3ef8 dm-delay: fix a race between delay_presuspend and delay_bio
    c4d395751079 hv_netvsc: Mark VF as slave before exposing it to user-mode
    5dd83db613be hv_netvsc: Fix race of register_netdevice_notifier and VF register
    e8ef65c17460 hv_netvsc: fix race of netvsc and VF register_netdevice
    043c8e0306e2 USB: serial: option: add Luat Air72*U series products
    dc96fde8fcb2 s390/dasd: protect device queue against concurrent access
    b964a0a3910b io_uring/fs: consider link->flags when getting path for LINKAT
    12f497158900 bcache: fixup multi-threaded bch_sectors_dirty_init() wake-up race
    fa9bacc1d5d6 md: fix bi_status reporting in md_end_clone_io
    415f644b1f59 bcache: replace a mistaken IS_ERR() by IS_ERR_OR_NULL() in btree_gc_coalesce()
    354d162ba527 swiotlb-xen: provide the "max_mapping_size" method
    05591c0d1761 ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CVA
    1ed904f424d4 arm64: dts: imx8mn-var-som: add 20ms delay to ethernet regulator enable
    5d9ddbf4b5e7 NFSD: Fix checksum mismatches in the duplicate reply cache
    b597f3c85d2e NFSD: Fix "start of NFS reply" pointer passed to nfsd_cache_update()
    d7eb37615b93 ext4: make sure allocate pending entry not fail
    8384d8c5cc39 ext4: fix slab-use-after-free in ext4_es_insert_extent()
    9164978bce49 ext4: using nofail preallocation in ext4_es_insert_extent()
    614b383d0158 ext4: using nofail preallocation in ext4_es_insert_delayed_block()
    51cef2a5c6f9 ext4: using nofail preallocation in ext4_es_remove_extent()
    f1c236936674 ext4: use pre-allocated es in __es_remove_extent()
    ce581f8631a4 ext4: use pre-allocated es in __es_insert_extent()
    594a5f00e50c ext4: factor out __es_alloc_extent() and __es_free_extent()
    9381ff651224 ext4: add a new helper to check if es must be kept
    3a14f4fd7bda media: qcom: camss: Fix genpd cleanup
    df5bb7b408cc media: qcom: camss: Fix V4L2 async notifier error path
    fdfcdf969719 media: qcom: Initialise V4L2 async notifier later
    153a4396c304 media: camss: Convert to platform remove callback returning void
    4ae3c85e7369 media: camss: Split power domain management
    8bdcaa7c03f6 MIPS: KVM: Fix a build warning about variable set but not used
    e9c3d6b09c21 cifs: fix leak of iface for primary channel
    b24d42b52bd1 cifs: account for primary channel in the interface list
    548893404c44 cifs: distribute channels across interfaces based on speed
    5607a415d49c cifs: print last update time for interface list
    f4dff371119b smb3: allow dumping session and tcon id to improve stats analysis and debugging
    fbc666a9ac5a cifs: minor cleanup of some headers
    c2d336140a10 lockdep: Fix block chain corruption
    e9611e840431 USB: dwc3: qcom: fix ACPI platform device leak
    eaa315288b32 USB: dwc3: qcom: fix resource leaks on probe deferral
    0e485f12ebb7 nvmet: nul-terminate the NQNs passed in the connect command
    573fa2b70808 i40e: Fix adding unsupported cloud filters
    f7f3e69cedb9 i40e: use ERR_PTR error print in i40e messages
    27f5dd22af56 arm64: mm: Fix "rodata=on" when CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
    558b8ee45f7f mm,kfence: decouple kfence from page granularity mapping judgement
    48b3ee0134db afs: Fix file locking on R/O volumes to operate in local mode
    f9cf17836ec3 afs: Return ENOENT if no cell DNS record can be found
    8025fd0706c8 net: axienet: Fix check for partial TX checksum
    3481ff38118c amd-xgbe: propagate the correct speed and duplex status
    73d114dd5703 amd-xgbe: handle the corner-case during tx completion
    4bcc07bb360e amd-xgbe: handle corner-case during sfp hotplug
    76b088b63958 octeontx2-pf: Fix ntuple rule creation to direct packet to VF with higher Rx queue than its PF
    97703eb199a3 arm/xen: fix xen_vcpu_info allocation alignment
    94a0ae698b4d net/smc: avoid data corruption caused by decline
    a573b334be26 net: usb: ax88179_178a: fix failed operations during ax88179_reset
    e784313dd00a ipv4: Correct/silence an endian warning in __ip_do_redirect
    377c4c7e97c6 HID: fix HID device resource race between HID core and debugging support
    8e9a64996528 drm/rockchip: vop: Fix color for RGB888/BGR888 format on VOP full
    84a6e475451d drm/i915: do not clean GT table on error path
    84c9d30dbc0e ata: pata_isapnp: Add missing error check for devm_ioport_map()
    cfbdb367277e octeontx2-pf: Fix memory leak during interface down
    4206f46d3f04 wireguard: use DEV_STATS_INC()
    7dfa5147444f drm/panel: simple: Fix Innolux G101ICE-L01 timings
    7f5eae8585c8 drm/panel: simple: Fix Innolux G101ICE-L01 bus flags
    39f11604e55d drm/panel: auo,b101uan08.3: Fine tune the panel power sequence
    84b232a9c81b drm/panel: boe-tv101wum-nl6: Fine tune the panel power sequence
    d2b3bc8c7f63 afs: Make error on cell lookup failure consistent with OpenAFS
    790ea5bc4022 afs: Fix afs_server_list to be cleaned up with RCU
    6ac30d748bb0 Linux 6.1.64
    04ff8a5107a5 RISC-V: drop error print from riscv_hartid_to_cpuid()
    9e1e0887ea21 cxl/port: Fix NULL pointer access in devm_cxl_add_port()
    c88cfbb18a5e mmc: sdhci-pci-gli: GL9755: Mask the replay timer timeout of AER
    2132941b453f Input: xpad - add VID for Turtle Beach controllers
    2fa74d29fc18 tracing: Have trace_event_file have ref counters
    6460508dce00 powerpc/powernv: Fix fortify source warnings in opal-prd.c
    4c55be085534 drm/amd/display: Change the DMCUB mailbox memory location from FB to inbox
    68d774eb10e2 drm/amd/display: Enable fast plane updates on DCN3.2 and above
    fb5c134ca589 drm/amd/display: fix a NULL pointer dereference in amdgpu_dm_i2c_xfer()
    51ffa1a3792e drm/amdgpu: lower CS errors to debug severity
    c52aac5884bc drm/amdgpu: fix error handling in amdgpu_bo_list_get()
    2ab6c1237bd4 drm/amdgpu: don't use ATRM for external devices
    965dce07a4fc drm/amdgpu: don't use pci_is_thunderbolt_attached()
    8e54a91d3e66 drm/amdgpu/smu13: drop compute workload workaround
    454d0cdd7c12 drm/amd/pm: Fix error of MACO flag setting code
    07e94f204f38 drm/i915: Fix potential spectre vulnerability
    9457636a4926 drm/i915: Bump GLK CDCLK frequency when driving multiple pipes
    e973f40de161 drm/amd/pm: Handle non-terminated overdrive commands.
    dc4542861ec8 ext4: properly sync file size update after O_SYNC direct IO
    e1d0f68bc07f ext4: add missed brelse in update_backups
    1793dc461e5a ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks
    80ddcf21e7e0 ext4: correct the start block of counting reserved clusters
    ec4ba3d62f0f ext4: correct return value of ext4_convert_meta_bg
    32b9fb9a67ec ext4: mark buffer new if it is unwritten to avoid stale data exposure
    f0cc1368fafd ext4: correct offset of gdb backup in non meta_bg group to update_backups
    af075d06b34f ext4: apply umask if ACL support is disabled
    e795a56654fd Revert "net: r8169: Disable multicast filter for RTL8168H and RTL8107E"
    eb2f435be2c4 media: qcom: camss: Fix csid-gen2 for test pattern generator
    eeab07ddd020 media: qcom: camss: Fix invalid clock enable bit disjunction
    18a06f2eeb84 media: qcom: camss: Fix missing vfe_lite clocks check
    ddc424aedbd3 media: qcom: camss: Fix VFE-480 vfe_disable_output()
    0f3e5f93fe77 media: qcom: camss: Fix VFE-17x vfe_disable_output()
    04ef31a3e38a media: qcom: camss: Fix vfe_get() error jump
    3166c3af55fe media: qcom: camss: Fix pm_domain_on sequence in probe
    6dcb2605c284 mmc: sdhci-pci-gli: GL9750: Mask the replay timer timeout of AER
    f7164cb0371f r8169: add handling DASH when DASH is disabled
    862565f32494 r8169: fix network lost after resume on DASH systems
    9e9e2107ae36 mptcp: fix setsockopt(IP_TOS) subflow locking
    dba6f08cef19 mptcp: add validity check for sending RM_ADDR
    70ff9b65a728 mptcp: deal with large GSO size
    16fcda24b175 mm: kmem: drop __GFP_NOFAIL when allocating objcg vectors
    a7fd03355027 mm: fix for negative counter: nr_file_hugepages
    2594bdaa16b4 mmc: sdhci-pci-gli: A workaround to allow GL9750 to enter ASPM L1.2
    97fb6013f318 riscv: kprobes: allow writing to x0
    645257ad8d30 riscv: correct pt_level name via pgtable_l5/4_enabled
    fb1b16f04135 riscv: mm: Update the comment of CONFIG_PAGE_OFFSET
    9f74b261e4e2 LoongArch: Mark __percpu functions as always inline
    1bb61fb7908c nfsd: fix file memleak on client_opens_release
    a5d4be493afc dm-verity: don't use blocking calls from tasklets
    002d2473ddec drm/mediatek/dp: fix memory leak on ->get_edid callback error path
    5e9fcba176f9 drm/mediatek/dp: fix memory leak on ->get_edid callback audio detection
    e08232647386 media: ccs: Correctly initialise try compose rectangle
    424fc4638119 media: venus: hfi: add checks to handle capabilities from firmware
    9ebb3c14ec95 media: venus: hfi: fix the check to handle session buffer requirement
    a3e0b55deaf7 media: venus: hfi_parser: Add check to keep the number of codecs within range
    997639c100fa media: sharp: fix sharp encoding
    41c269083c4d media: lirc: drop trailing space from scancode transmit
    526dd7540a09 f2fs: avoid format-overflow warning
    6122b72ce54a f2fs: do not return EFSCORRUPTED, but try to run online repair
    e6fa9ac60fae i2c: i801: fix potential race in i801_block_transaction_byte_by_byte
    f5617a21c71c net: phylink: initialize carrier state at creation
    105d29fa8dba net: dsa: lan9303: consequently nested-lock physical MDIO
    eef592e71ae1 net: ethtool: Fix documentation of ethtool_sprintf()
    57e35d922996 s390/ap: fix AP bus crash on early config change callback invocation
    75d5c85cf402 i2c: designware: Disable TX_EMPTY irq while waiting for block length byte
    ba1a9eef3e53 sbsa_gwdt: Calculate timeout with 64-bit math
    cfcb1e7c17c3 lsm: fix default return value for inode_getsecctx
    7a048a90ac3e lsm: fix default return value for vm_enough_memory
    b3fd9db79e30 Revert "i2c: pxa: move to generic GPIO recovery"
    677fc3780fa4 Revert ncsi: Propagate carrier gain/loss events to the NCSI controller
    31f6ff62dfc0 cxl/region: Fix x1 root-decoder granularity calculations
    683b6a7324c6 tools/testing/cxl: Define a fixed volatile configuration to parse
    8cdc6b8b816d cxl/mem: Move devm_cxl_add_endpoint() from cxl_core to cxl_mem
    8fce427169ec cxl: Unify debug messages when calling devm_cxl_add_port()
    e841a59ac1d8 i3c: master: svc: fix random hot join failure since timeout error
    a807a44189d1 i3c: master: svc: add NACK check after start byte sent
    90db4c1d5eba cxl/region: Do not try to cleanup after cxl_region_setup_targets() fails
    c415f113d90e cxl/region: Move region-position validation to a helper
    008b08ab0773 cxl/region: Cleanup target list on attach error
    93d242f63ed3 cxl/region: Validate region mode vs decoder mode
    3b70d45c7ea8 drm/amd/display: enable dsc_clk even if dsc_pg disabled
    1d1cc275d1d7 Bluetooth: btusb: Add 0bda:b85b for Fn-Link RTL8852BE
    6c6a39080bd2 Bluetooth: btusb: Add RTW8852BE device 13d3:3570 to device tables
    ba9302fd936c bluetooth: Add device 13d3:3571 to device tables
    fc3423d55c86 bluetooth: Add device 0bda:887b to device tables
    f1c7f81e973f Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0cb8:0xc559
    1f026218f8a3 clk: visconti: Fix undefined behavior bug in struct visconti_pll_provider
    b2a28287209a clk: visconti: remove unused visconti_pll_provider::regmap
    e785584e0a0b cpufreq: stats: Fix buffer overflow detection in trans_stats()
    c2d14682b36d pmdomain: imx: Make imx pgc power domain also set the fwnode
    8bd370cc3cd6 pmdomain: bcm: bcm2835-power: check if the ASB register is equal to enable
    68620ef460df ALSA: hda/realtek: Add quirks for HP Laptops
    4d50004416df ALSA: hda/realtek: Enable Mute LED on HP 255 G10
    4645d3bcd5ff ALSA: hda/realtek - Enable internal speaker of ASUS K6500ZC
    eaa4e4ba7ace ALSA: hda/realtek - Add Dell ALC295 to pin fall back table
    0fcc2cf28f6c ALSA: hda/realtek: Enable Mute LED on HP 255 G8
    fa7c9cc3cb31 ALSA: info: Fix potential deadlock at disconnection
    a0d43e0f7ce4 btrfs: zoned: wait for data BG to be finished on direct IO allocation
    9ad4c7f065bf xfs: recovery should not clear di_flushiter unconditionally
    209379924a85 cifs: do not reset chan_max if multichannel is not supported at mount
    c9569bfd2868 cifs: force interface update before a fresh session setup
    5bdf34ca3242 cifs: reconnect helper should set reconnect for the right channel
    9eb44db68c5b smb: client: fix potential deadlock when releasing mids
    558817597d5f smb: client: fix use-after-free bug in cifs_debug_data_proc_show()
    49d0ff613f4d smb3: fix caching of ctime on setxattr
    34828baf81ef smb3: fix touch -h of symlink
    9d96ac07aee2 smb3: fix creating FIFOs when mounting with "sfu" mount option
    5691e1569569 fs: add ctime accessors infrastructure
    b50ca24c3ec1 xhci: Enable RPM on controllers that support low-power states
    72a90e7eb4a1 parisc/power: Fix power soft-off when running on qemu
    40b6914f4278 parisc/pgtable: Do not drop upper 5 address bits of physical address
    1651b334f1f6 parisc: Prevent booting 64-bit kernels on PA1.x machines
    3ddb2fa5ec1c i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen
    1ea1fb221662 i3c: master: svc: fix check wrong status register in irq handler
    65d9f61324fc i3c: master: svc: fix ibi may not return mandatory data byte
    e32e9cba564e i3c: master: svc: fix wrong data return when IBI happen during start frame
    3a8e03f133c0 i3c: master: svc: fix race condition in ibi work thread
    de6ca501addc i3c: master: cdns: Fix reading status register
    3b93096d29c5 mtd: cfi_cmdset_0001: Byte swap OTP info
    aee642ae995e mm/memory_hotplug: use pfn math in place of direct struct page manipulation
    5a2768b9de0c mm/cma: use nth_page() in place of direct struct page manipulation
    20412ca356e5 s390/cmma: fix detection of DAT pages
    7fc465d2653a dmaengine: stm32-mdma: correct desc prep when channel running
    55d699e2d2ef mcb: fix error handling for different scenarios when parsing
    afcde812ddf5 driver core: Release all resources during unbind before updating device links
    f7ab9dee2200 tracing: Have the user copy of synthetic event address use correct context
    185f3617adc8 i2c: core: Run atomic i2c xfer when !preemptible
    59cb785919fd kernel/reboot: emergency_restart: Set correct system_state
    4f3135e2dd5b quota: explicitly forbid quota files from being encrypted
    ed3cc4f3cac4 jbd2: fix potential data lost in recovering journal raced with synchronizing fs bdev
    e166cc2bf51f ASoC: codecs: wsa-macro: fix uninitialized stack variables with name prefix
    479a120a043f hid: lenovo: Resend all settings on reset_resume for compact keyboards
    9ea5df7290e5 selftests/resctrl: Reduce failures due to outliers in MBA/MBM tests
    72f5a918b450 selftests/resctrl: Move _GNU_SOURCE define into Makefile
    e6526e403aaf selftests/resctrl: Remove duplicate feature check from CMT test
    3f100cc63a0c netfilter: nf_tables: split async and sync catchall in two functions
    13e2d49647a7 netfilter: nf_tables: remove catchall element in GC sync path
    143f450c6cb2 ima: detect changes to the backing overlay file
    2c63b9d7f7c8 ima: annotate iint mutex to avoid lockdep false positive warnings
    db98de0809f1 mfd: qcom-spmi-pmic: Fix revid implementation
    5231eb119079 mfd: qcom-spmi-pmic: Fix reference leaks in revid helper
    4d259683bc1c arm64: dts: qcom: ipq6018: Fix tcsr_mutex register size
    c754a6f5c3c7 ACPI: FPDT: properly handle invalid FPDT subtables
    95e747c3c60d firmware: qcom_scm: use 64-bit calling convention only when client is 64-bit
    cd222fc61e12 arm64: dts: qcom: ipq8074: Fix hwlock index for SMEM
    e866ef947a65 btrfs: don't arbitrarily slow down delalloc if we're committing
    ddf42b7c8d81 rcu: kmemleak: Ignore kmemleak false positives when RCU-freeing objects
    d15029481813 PM: hibernate: Clean up sync_read handling in snapshot_write_next()
    567c6f64950e PM: hibernate: Use __get_safe_page() rather than touching the list
    2c9222b7dc58 arm64: dts: qcom: ipq6018: Fix hwlock index for SMEM
    8d837850d3ec rcu/tree: Defer setting of jiffies during stall reset
    6aa3cab6be11 svcrdma: Drop connection after an RDMA Read error
    4b0d6ddb6466 wifi: wilc1000: use vmm_table as array in wilc struct
    efd8e6d19c14 PCI: exynos: Don't discard .remove() callback
    75bf9a8b0e89 PCI: kirin: Don't discard .remove() callback
    e02b9c6a832e PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common()
    51dcd20a4a25 mmc: Add quirk MMC_QUIRK_BROKEN_CACHE_FLUSH for Micron eMMC Q2J54A
    07d425242e4f mmc: sdhci_am654: fix start loop index for TAP value parsing
    4542aa756914 mmc: vub300: fix an error code
    8387c94d73ec ksmbd: fix slab out of bounds write in smb_inherit_dacl()
    482aaa72f950 ksmbd: handle malformed smb1 message
    8e76941a1672 clk: qcom: ipq6018: drop the CLK_SET_RATE_PARENT flag from PLL clocks
    877080a34901 clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks
    3291d3ecf331 clk: socfpga: Fix undefined behavior bug in struct stratix10_clock_data
    ea2c6e85b6b0 parisc/power: Add power soft-off when running on qemu
    783645be98c8 parisc/pdc: Add width field to struct pdc_model
    ef0224ee5399 arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer
    938c4c731803 PCI: keystone: Don't discard .probe() callback
    b7d27cbfef5c PCI: keystone: Don't discard .remove() callback
    fe0b2a20f780 KEYS: trusted: Rollback init_trusted() consistently
    454ad98f31f0 KEYS: trusted: tee: Refactor register SHM usage
    3ef9944681eb genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware
    17381882fcce mmc: meson-gx: Remove setting of CMD_CFG_ERROR
    0cf7577b6b31 wifi: ath11k: fix gtk offload status event locking
    e3199b3fac65 wifi: ath11k: fix htt pktlog locking
    ca420ac4f945 wifi: ath11k: fix dfs radar event locking
    f0ea9e472611 wifi: ath11k: fix temperature event locking
    164fa9a0b1e9 regmap: Ensure range selector registers are updated after cache sync
    e10facbd25a6 ACPI: resource: Do IRQ override on TongFang GMxXGxx
    08a98c345f62 mm/damon/sysfs: check error from damon_sysfs_update_target()
    b0fc14428ca2 mm/damon: implement a function for max nr_accesses safe calculation
    834a800c58ea mm/damon/ops-common: avoid divide-by-zero during region hotness calculation
    2b38f0dbe8ba mm/damon/lru_sort: avoid divide-by-zero in hot threshold calculation
    cf2641099c02 watchdog: move softlockup_panic back to early_param
    f0f3328af912 mm/damon/sysfs: update monitoring target regions for online input commit
    9275f65d7729 mm/damon/sysfs: remove requested targets when online-commit inputs
    4e0fbf318803 PCI/sysfs: Protect driver's D3cold preference from user space
    1a2c7a2f3594 hvc/xen: fix event channel handling for secondary consoles
    b772e415e168 hvc/xen: fix error path in xen_hvc_init() to always register frontend driver
    74db59e63bd8 hvc/xen: fix console unplug
    e5b0e2308088 tty: serial: meson: fix hard LOCKUP on crtscts mode
    5e3b2141c759 tty/sysrq: replace smp_processor_id() with get_cpu()
    5b2352c64c48 proc: sysctl: prevent aliased sysctls from getting passed to init
    d91fd028c9f6 audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare()
    38968c63e98e audit: don't take task_lock() in audit_exe_compare() code path
    43cea54109e1 KVM: x86: Clear bit12 of ICR after APIC-write VM-exit
    27976fa91754 KVM: x86: Ignore MSR_AMD64_TW_CFG access
    7e218114a219 KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space
    41689ef19b7e x86/cpu/hygon: Fix the CPU topology evaluation for real
    f0732c646a8e crypto: x86/sha - load modules based on CPU features
    1fc94de1c1a8 scsi: qla2xxx: Fix system crash due to bad pointer access
    b16ea57d6c0f scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for selected registers
    bb5e307366ef scsi: mpt3sas: Fix loop logic
    dd56d432445e bpf: Fix precision tracking for BPF_ALU | BPF_TO_BE | BPF_END
    947635fa174b bpf: Fix check_stack_write_fixed_off() to correctly spill imm
    3bdbe399b82f randstruct: Fix gcc-plugin performance mode to stay in group
    bee4f891fe1f powerpc/perf: Fix disabling BHRB and instruction sampling
    4cb064f6174a perf intel-pt: Fix async branch flags
    a1d8f675ea58 media: venus: hfi: add checks to perform sanity on queue pointers
    55db76caa782 i915/perf: Fix NULL deref bugs with drm_dbg() calls
    d1a04a5219e8 cifs: fix check of rc in function generate_smb3signingkey
    17cfba4aeb2d cifs: spnego: add ';' in HOST_KEY_LEN
    4b91ba060f2e tools/power/turbostat: Enable the C-state Pre-wake printing
    c5fcba7ff98b tools/power/turbostat: Fix a knl bug
    ca56cdfab3a9 macvlan: Don't propagate promisc change to lower dev in passthru
    f9b592a9e606 net/mlx5e: Check return value of snprintf writing to fw_version buffer for representors
    0ab53cd69ffc net/mlx5e: Check return value of snprintf writing to fw_version buffer
    7f2feab70152 net/mlx5e: Reduce the size of icosq_str
    e2d93cfd1b4f net/mlx5e: Fix pedit endianness
    991ba648983b net/mlx5e: fix double free of encap_header in update funcs
    e8ae37f86368 net/mlx5e: fix double free of encap_header
    7414a28de1b3 net: stmmac: avoid rx queue overrun
    49fb68040326 net: stmmac: fix rx budget limit check
    18a169810cff netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval()
    6a15d971040e netfilter: nf_conntrack_bridge: initialize err to 0
    d179189eec42 af_unix: fix use-after-free in unix_stream_read_actor()
    14b11892a6da net: ethernet: cortina: Fix MTU max setting
    1a1efaed5fc2 net: ethernet: cortina: Handle large frames
    4794b6b16a90 net: ethernet: cortina: Fix max RX frame define
    19554aa901b5 bonding: stop the device in bond_setup_by_slave()
    f84846731b93 ptp: annotate data-race around q->head and q->tail
    ceae93d76a51 xen/events: fix delayed eoi list handling
    ab3e13b35c1a ppp: limit MRU to 64K
    00768b3e90e6 net: mvneta: fix calls to page_pool_get_stats
    1e83edbc422b tipc: Fix kernel-infoleak due to uninitialized TLV value
    a28ec8322dd3 net: hns3: fix VF wrong speed and duplex issue
    55d82e092c68 net: hns3: fix VF reset fail issue
    f47c6fba7293 net: hns3: fix variable may not initialized problem in hns3_init_mac_addr()
    07f5b8c47152 net: hns3: fix out-of-bounds access may occur when coalesce info is read via debugfs
    83a177b942fa net: hns3: fix incorrect capability bit display for copper port
    5dc440293db7 net: hns3: add barrier in vf mailbox reply process
    61c5ba5042b3 net: hns3: fix add VLAN fail issue
    76bd42849ce4 tty: Fix uninit-value access in ppp_sync_receive()
    732a67ca4368 ipvlan: add ipvlan_route_v6_outbound() helper
    12af02d24a49 net: set SOCK_RCU_FREE before inserting socket into hashtable
    c0f8b8fb7df9 vhost-vdpa: fix use after free in vhost_vdpa_probe()
    58278cc71d34 gfs2: Silence "suspicious RCU usage in gfs2_permission" warning
    7749fd2dbef7 SUNRPC: Fix RPC client cleaned up the freed pipefs dentries
    af0095a559f4 NFSv4.1: fix SP4_MACH_CRED protection for pnfs IO
    19d7dbf71ecc SUNRPC: Add an IS_ERR() check back to where it was
    c65b915641d8 NFSv4.1: fix handling NFS4ERR_DELAY when testing for session trunking
    5ee813da0c18 mtd: rawnand: meson: check return value of devm_kasprintf()
    b2a9ba69dfd5 mtd: rawnand: intel: check return value of devm_kasprintf()
    8d02b6fb3c67 SUNRPC: ECONNRESET might require a rebind
    11f6aadd1f59 sched/core: Optimize in_task() and in_interrupt() a bit
    3a6ad749e9ef wifi: iwlwifi: Use FW rate for non-data frames
    2fa178e2cd5f mtd: rawnand: tegra: add missing check for platform_get_irq()
    1fb3a9c59e7f pwm: Fix double shift bug
    6586b5f8e456 drm/amdgpu: fix software pci_unplug on some chips
    8a1552e908d6 ALSA: hda/realtek: Add quirk for ASUS UX7602ZM
    07ab6615a9d2 drm/qxl: prevent memory leak
    09297e3ffc1d ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings
    aff8be2cad74 i2c: dev: copy userspace array safely
    72d02adae320 kgdb: Flush console before entering kgdb on panic
    8a06894666e0 drm/amd/display: Avoid NULL dereference of timing generator
    b083aaf5db2e media: imon: fix access to invalid resource for the second interface
    65335aef1ab6 media: ccs: Fix driver quirk struct documentation
    b8dcbbd0c4bf media: cobalt: Use FIELD_GET() to extract Link Width
    e2ccedd4d182 gfs2: fix an oops in gfs2_permission
    53fc16c1ad84 gfs2: ignore negated quota changes
    329a8d1d60ba media: vivid: avoid integer overflow
    a647f27a7426 media: gspca: cpia1: shift-out-of-bounds in set_flicker
    e64d23dc6581 i3c: master: mipi-i3c-hci: Fix a kernel panic for accessing DAT_data.
    472bd4787406 virtio-blk: fix implicit overflow on virtio_max_dma_size
    32b17bc21f8e i2c: sun6i-p2wi: Prevent potential division by zero
    0b5e729d4e35 i2c: fix memleak in i2c_new_client_device()
    8be39f66915b i3c: mipi-i3c-hci: Fix out of bounds access in hci_dma_irq_handler
    07c11a5249cb 9p: v9fs_listxattr: fix %s null argument warning
    3851d844d790 9p/trans_fd: Annotate data-racy writes to file::f_flags
    c7b0ce54b11d usb: gadget: f_ncm: Always set current gadget in ncm_bind()
    ff9500758381 f2fs: fix error handling of __get_node_page
    a82bd79cbfe9 soundwire: dmi-quirks: update HP Omen match
    7932afa9bb61 usb: dwc3: core: configure TX/RX threshold for DWC3_IP
    7cebc86481bf tty: vcc: Add check for kstrdup() in vcc_probe()
    d6957635de8f thunderbolt: Apply USB 3.x bandwidth quirk only in software connection manager
    b80aaff5f781 iio: adc: stm32-adc: harden against NULL pointer deref in stm32_adc_probe()
    c92de3bf6ccf mfd: intel-lpss: Add Intel Lunar Lake-M PCI IDs
    b469227b1d1e exfat: support handle zero-size directory
    24e222a54e4c HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W
    4ee3b3a0ff02 crypto: hisilicon/qm - prevent soft lockup in receive loop
    a70cb0d59d91 ASoC: Intel: soc-acpi-cht: Add Lenovo Yoga Tab 3 Pro YT3-X90 quirk
    cbf304de78c0 PCI: Use FIELD_GET() in Sapphire RX 5600 XT Pulse quirk
    52cd51ba5769 misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller
    6f9557a5c971 PCI: Disable ATS for specific Intel IPU E2000 devices
    161767bb7c5d PCI: Extract ATS disabling to a helper function
    6b4608458205 PCI: Use FIELD_GET() to extract Link Width
    442fd24d7b6b scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup()
    dabc0ee84d0d PCI: Do error check on own line to split long "if" conditions
    146badf18e2c atm: iphase: Do PCI error checks on own line
    1a7c3d2e1dfa PCI: mvebu: Use FIELD_PREP() with Link Width
    aac90c719781 PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields
    43b91df291c8 ALSA: hda: Fix possible null-ptr-deref when assigning a stream
    fa7abd3c5cd4 ARM: 9320/1: fix stack depot IRQ stack filter
    6e2076cad887 HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround
    8c68af2af697 jfs: fix array-index-out-of-bounds in diAlloc
    a50b796d3671 jfs: fix array-index-out-of-bounds in dbFindLeaf
    5013f8269887 fs/jfs: Add validity check for db_maxag and db_agpref
    0cb567e72733 fs/jfs: Add check for negative db_l2nbperpage
    88984ec47927 scsi: ibmvfc: Remove BUG_ON in the case of an empty event pool
    33331b265aac scsi: hisi_sas: Set debugfs_dir pointer to NULL after removing debugfs
    f1521fe0b411 RDMA/hfi1: Use FIELD_GET() to extract Link Width
    af493dde68e8 ASoC: SOF: ipc4: handle EXCEPTION_CAUGHT notification from firmware
    c55fc098fd9d crypto: pcrypt - Fix hungtask for PADATA_RESET
    62c65e799fb4 ASoC: SOF: Pass PCI SSID to machine driver
    14107cbeb5f7 ASoC: soc-card: Add storage for PCI SSID
    0aaf8077564e selftests/efivarfs: create-read: fix a resource leak
    c68535657f3c arm64: dts: ls208xa: use a pseudo-bus to constrain usb dma size
    6c1b3d89a2dd drm/amdgpu: Fix a null pointer access when the smc_rreg pointer is NULL
    2806f8803792 drm/amdkfd: Fix shift out-of-bounds issue
    7017e835007c drm/panel: st7703: Pick different reset sequence
    33fb1a555354 drm/amdgpu/vkms: fix a possible null pointer dereference
    16fa59e273f8 drm/radeon: fix a possible null pointer dereference
    d0bc9ab0a161 drm/panel/panel-tpo-tpg110: fix a possible null pointer dereference
    79813cd59398 drm/panel: fix a possible null pointer dereference
    9b70fc7d70e8 drm/amdgpu: Fix potential null pointer derefernce
    d0725232da77 drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and Tonga
    fc9ac0e8e0bc drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7
    09b900fc2cb1 drm/msm/dp: skip validity check for DP CTS EDID checksum
    412ce8966934 drm: vmwgfx_surface.c: copy user-array safely
    0f5f56745188 drm_lease.c: copy user-array safely
    6995df256e4f kernel: watch_queue: copy user-array safely
    8332523b13db kernel: kexec: copy user-array safely
    2fabc3289ba1 string.h: add array-wrappers for (v)memdup_user()
    24faa2740b3f drm/amd/display: use full update for clip size increase of large plane source
    09d4f579d300 drm/amd: Update `update_pcie_parameters` functions to use uint8_t arguments
    50f35a907c4f drm/amdkfd: Fix a race condition of vram buffer unref in svm code
    5b978a8ce497 drm/amdgpu: not to save bo in the case of RAS err_event_athub
    0c8eda600ed8 drm/komeda: drop all currently held locks if deadlock happens
    4048cf4615b6 drm/gma500: Fix call trace when psb_gem_mm_init() fails
    a57a54a8bc21 platform/x86: thinkpad_acpi: Add battery quirk for Thinkpad X120e
    6edd5ea5040b platform/chrome: kunit: initialize lock for fake ec_dev
    c90c7bf7b1b3 tsnep: Fix tsnep_request_irq() format-overflow warning
    70997012d8dd ACPI: EC: Add quirk for HP 250 G7 Notebook PC
    87624b1f9b78 Bluetooth: Fix double free in hci_conn_cleanup
    a556f2ef556a Bluetooth: btusb: Add date->evt_skb is NULL check
    0a40c609e2a3 bpf: Ensure proper register state printing for cond jumps
    8093dd759ee2 vsock: read from socket's error queue
    459970363e7c wifi: ath10k: Don't touch the CE interrupt registers after power up
    1c6a6c926abf net: annotate data-races around sk->sk_dst_pending_confirm
    e7960d2a09d4 net: annotate data-races around sk->sk_tx_queue_mapping
    46537b45972e wifi: ath10k: fix clang-specific fortify warning
    de979982ebfb wifi: ath9k: fix clang-specific fortify warnings
    aa42a7cb9264 bpf: Detect IP == ksym.end as part of BPF program
    57e44ff9c2c9 atl1c: Work around the DMA RX overflow issue
    2be24c47ac19 wifi: mac80211: don't return unset power in ieee80211_get_tx_power()
    9c2e4a81d3e7 wifi: mac80211_hwsim: fix clang-specific fortify warning
    d0fc4cb9d23b wifi: plfxlc: fix clang-specific fortify warning
    b5046b253236 x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size
    2652d199dd72 workqueue: Provide one lock class key per work_on_cpu() callsite
    3410b7023547 cpu/hotplug: Don't offline the last non-isolated CPU
    b7441453ff96 smp,csd: Throw an error if a CSD lock is stuck for too long
    6680d55aba60 clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware
    ff8370a0d8cb clocksource/drivers/timer-imx-gpt: Fix potential memory leak
    9f4c391dc2bc selftests/lkdtm: Disable CONFIG_UBSAN_TRAP in test config
    e9a27fdce56b srcu: Fix srcu_struct node grpmask overflow on 64-bit systems
    9ce4e87a8efd perf/core: Bail out early if the request AUX area is out of bound
    784d01f9bbc2 lib/generic-radix-tree.c: Don't overflow in peek()
    c56df79d6867 locking/ww_mutex/test: Fix potential workqueue corruption
    69e434a1cb21 Linux 6.1.63
    830c11c9c085 virtio/vsock: fix header length on skb merging
    cd12535b97dd virtio/vsock: Fix uninit-value in virtio_transport_recv_pkt()
    a6650e78c428 virtio/vsock: fix leaks due to missing skb owner
    bb1c9a5907d2 vsock/loopback: use only sk_buff_head.lock to protect the packet queue
    1e5f00e9dbdb virtio/vsock: don't drop skbuff on copy failure
    883a3db2212c virtio/vsock: remove redundant 'skb_pull()' call
    5852a2b573f7 virtio/vsock: don't use skbuff state to account credit
    25bc87768cef wifi: cfg80211: fix kernel-doc for wiphy_delayed_work_flush()
    fc3a19543e32 btrfs: use u64 for buffer sizes in the tree search ioctls
    c606c43ab6a7 Revert "mmc: core: Capture correct oemid-bits for eMMC cards"
    acca43d813bb x86/amd_nb: Use Family 19h Models 60h-7Fh Function 4 IDs
    129debbb4178 io_uring/net: ensure socket is marked connected on connect retry
    b80b85f4945d tracing/kprobes: Fix the order of argument descriptions
    28e7153418b1 fbdev: fsl-diu-fb: mark wr_reg_wa() static
    7bc7b82fb219 fbdev: imsttfb: fix a resource leak in probe
    985845828220 fbdev: imsttfb: Fix error path of imsttfb_probe()
    6d53668c438b spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies
    b4843bf39d9f ASoC: dapm: fix clock get name
    f5350c6f7887 ASoC: hdmi-codec: register hpd callback on component probe
    acc36089bc36 ASoC: mediatek: mt8186_mt6366_rt1019_rt5682s: trivial: fix error messages
    3bbf06efb8ed drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE
    3df98bd31966 RISC-V: Don't fail in riscv_of_parent_hartid() for disabled HARTs
    587e6308d69b netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses
    8fa280d1a9f4 netfilter: nft_redir: use `struct nf_nat_range2` throughout and deduplicate eval call-backs
    d85670128f24 netfilter: xt_recent: fix (increase) ipv6 literal buffer length
    7ee2070589d2 i2c: iproc: handle invalid slave state
    b5974b0c893c r8169: respect userspace disabling IFF_MULTICAST
    1fecefb0920c vsock/virtio: remove socket from connected/bound list on shutdown
    baddcc2c7157 virtio/vsock: replace virtio_vsock_pkt with sk_buff
    46c541fa6680 blk-core: use pr_warn_ratelimited() in bio_check_ro()
    4e9b3ec84dc9 nbd: fix uaf in nbd_open
    b0310063d4b2 tg3: power down device only on SYSTEM_POWER_OFF
    2dbafb0081d7 nvme: fix error-handling for io_uring nvme-passthrough
    f4277cb5626b net/smc: put sk reference if close work was canceled
    2d563aa75226 net/smc: allow cdc msg send rather than drop it with NULL sndbuf_desc
    9d976cd3e320 net/smc: fix dangling sock under state SMC_APPFINCLOSEWAIT
    4a12fb7d1af6 octeontx2-pf: Free pending and dropped SQEs
    a1e8e68204c8 octeontx2-pf: qos send queues management
    479d344a929b octeontx2-pf: Rename tot_tx_queues to non_qos_queues
    f9c2807e2a7d selftests: pmtu.sh: fix result checking
    490dfbf65191 net: stmmac: xgmac: Enable support for multiple Flexible PPS outputs
    0b8ffe3cb0b7 Fix termination state for idr_for_each_entry_ul()
    7f4a2c296774 net: r8169: Disable multicast filter for RTL8168H and RTL8107E
    db68ac51fe86 dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses.
    414d36c1178e dccp: Call security_inet_conn_request() after setting IPv4 addresses.
    e129327d80a7 net: page_pool: add missing free_percpu when page_pool_init fail
    a95acc2099b6 octeontx2-pf: Fix holes in error code
    00376cc74347 octeontx2-pf: Fix error codes
    612c22e92848 inet: shrink struct flowi_common
    89d92e4fc5c6 bpf: Check map->usercnt after timer->timer is assigned
    4c731e98fe4d tipc: Change nla_policy for bearer-related names to NLA_NUL_STRING
    6086258bd5ea hsr: Prevent use after free in prp_create_tagged_frame()
    f980e9a57dfb llc: verify mac len before reading mac header
    8803da01fe1b watchdog: ixp4xx: Make sure restart always works
    7082b1fb5321 Input: synaptics-rmi4 - fix use after free in rmi_unregister_function()
    f8225c3c6555 pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume
    679d2ab67e09 pwm: sti: Reduce number of allocations and drop usage of chip_data
    713629765f25 regmap: prevent noinc writes from clobbering cache
    7ec7b7d3f2b8 media: cec: meson: always include meson sub-directory in Makefile
    103c66dcf54e media: dvb-usb-v2: af9035: fix missing unlock
    39c2ec94a829 media: cadence: csi2rx: Unregister v4l2 async notifier
    76d12296ee58 media: cedrus: Fix clock/reset sequence
    a254ee1ddc59 media: vidtv: mux: Add check and kfree for kstrdup
    5c26aae37239 media: vidtv: psi: Add check for kstrdup
    e7c96f4605d9 media: s3c-camif: Avoid inappropriate kfree()
    1620531a3dac media: mtk-jpegenc: Fix bug in JPEG encode quality selection
    b75fb8a2ee1e media: amphion: handle firmware debug message
    20568d06f606 media: bttv: fix use after free error due to btv->timeout timer
    825a7a6a3a5e media: ov5640: Fix a memory leak when ov5640_probe fails
    ba305517a1de media: i2c: max9286: Fix some redundant of_node_put() calls
    a7a8c49dc670 media: ov5640: fix vblank unchange issue when work at dvp mode
    9b1c0aca7fbf media: ov5640: Drop dead code using frame_interval
    6380621de364 media: verisilicon: Do not enable G2 postproc downscale if source is narrower than destination
    64f55cebb433 media: hantro: Check whether reset op is defined before use
    f258fd94abcd pcmcia: ds: fix possible name leak in error path in pcmcia_device_add()
    7c9947693b5e pcmcia: ds: fix refcount leak in pcmcia_device_add()
    fbdf451e7683 pcmcia: cs: fix possible hung task and memory leak pccardd()
    f9e17bce0aec rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call
    b4dda701d057 virt: sevguest: Fix passing a stack buffer as a scatterlist target
    d889b7bc12b5 x86/sev: Change snp_guest_issue_request()'s fw_err argument
    a5b03f56d38d crypto: ccp - Name -1 return value as SEV_RET_NO_FW_CALL
    7c7371b41a14 cxl/mem: Fix shutdown order
    174ae0a3b89e i3c: Fix potential refcount leak in i3c_master_register_new_i3c_devs
    b9793c9c0338 9p/net: fix possible memory leak in p9_check_errors()
    8b184ebff60b perf hist: Add missing puts to hist__account_cycles
    8e1f41a853d9 perf machine: Avoid out of bounds LBR memory read
    209f4a67d8b7 usb: host: xhci-plat: fix possible kernel oops while resuming
    071666451e59 xhci: Loosen RPM as default policy to cover for AMD xHC 1.1
    abdd1f47efae powerpc/pseries: fix potential memory leak in init_cpu_associativity()
    257517c00b57 powerpc/imc-pmu: Use the correct spinlock initializer.
    8409ee076d0a powerpc/vas: Limit open window failure messages in log bufffer
    0f8dabe79a98 powerpc/xive: Fix endian conversion size
    b4bc030af7d6 powerpc/40x: Remove stale PTE_ATOMIC_UPDATES macro
    a204f9f3cb66 modpost: fix ishtp MODULE_DEVICE_TABLE built on big-endian host
    339148f78641 modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host
    9d4f7441cddd powerpc: Only define __parse_fpscr() when required
    4a43be67d635 interconnect: qcom: sm8350: Set ACV enable_mask
    bfc019c7134a interconnect: qcom: sm8350: Retire DEFINE_QBCM
    ccbd1281a2d1 interconnect: qcom: sm8150: Set ACV enable_mask
    d7e501045ef4 interconnect: qcom: sm8150: Retire DEFINE_QBCM
    386a4d6f83fd interconnect: qcom: sm8150: Drop IP0 interconnects
    8979ed70da2f interconnect: move ignore_list out of of_count_icc_providers()
    bf7039825f04 interconnect: qcom: sm6350: Set ACV enable_mask
    d39e3249c04c interconnect: qcom: sm6350: Retire DEFINE_QBCM
    639ee7fbc095 interconnect: qcom: sdm845: Set ACV enable_mask
    808588804587 interconnect: qcom: sdm845: Retire DEFINE_QBCM
    e82d634fdb0d interconnect: qcom: sc8280xp: Set ACV enable_mask
    50e4e1ad3532 interconnect: qcom: sc8180x: Set ACV enable_mask
    673ced6e0178 interconnect: qcom: sc7280: Set ACV enable_mask
    8fe916ff8a84 interconnect: qcom: sc7180: Set ACV enable_mask
    3f884277f995 interconnect: qcom: sc7180: Retire DEFINE_QBCM
    695b3cfe1c28 f2fs: fix to initialize map.m_pblk in f2fs_precache_extents()
    7b863b8bcd67 dmaengine: pxa_dma: Remove an erroneous BUG_ON() in pxad_free_desc()
    2ed67a40ddb6 USB: usbip: fix stub_dev hub disconnect
    dae6fd974773 tools: iio: iio_generic_buffer ensure alignment
    06a1286345ac misc: st_core: Do not call kfree_skb() under spin_lock_irqsave()
    fc968818d547 dmaengine: ti: edma: handle irq_of_parse_and_map() errors
    03984e24db85 usb: chipidea: Simplify Tegra DMA alignment code
    c9095c743bf6 usb: chipidea: Fix DMA overwrite for Tegra
    6b21a2272885 usb: dwc2: fix possible NULL pointer dereference caused by driver concurrency
    0806a6afe155 dmaengine: idxd: Register dsa_bus_type before registering idxd sub-drivers
    1e03a2695995 perf record: Fix BTF type checks in the off-cpu profiling
    1c4eb1bc39d3 pinctrl: renesas: rzg2l: Make reverse order of enable() for disable()
    cd7d804f52c6 livepatch: Fix missing newline character in klp_resolve_symbols()
    f1cda3c5dd4d tty: tty_jobctrl: fix pid memleak in disassociate_ctty()
    fb4251dab3d1 f2fs: compress: fix to avoid redundant compress extension
    9375ea7f2690 f2fs: compress: fix to avoid use-after-free on dic
    071bbc5a669b f2fs: compress: fix deadloop in f2fs_write_cache_pages()
    ec67c83dd59b f2fs: convert f2fs_write_cache_pages() to use filemap_get_folios_tag()
    599befdd7996 filemap: add filemap_get_folios_tag()
    855516cb6e74 perf kwork: Set ordered_events to true in 'struct perf_tool'
    231665cc6ff7 perf kwork: Add the supported subcommands to the document
    16e02976cf37 perf kwork: Fix incorrect and missing free atom in work_push_atom()
    e27c2668ac8a iio: frequency: adf4350: Use device managed functions and fix power down issue.
    550711e007bb perf stat: Fix aggr mode initialization
    6cb0495d3623 apparmor: fix invalid reference on profile->disconnected
    cef064fddee8 apparmor: test: make static symbols visible during kunit testing
    cfce1e26b4c9 kunit: add macro to allow conditionally exposing static symbols to tests
    1d47d1abb4f3 leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu'
    4198a7a6efa0 leds: pwm: Don't disable the PWM when the LED should be off
    63cdeb20ee3b leds: turris-omnia: Do not use SMBUS calls
    7d0e60e4ff84 leds: turris-omnia: Drop unnecessary mutex locking
    ce58f479b531 mfd: arizona-spi: Set pdata.hpdet_channel for ACPI enumerated devs
    26b534a3f0f4 dt-bindings: mfd: mt6397: Split out compatible for MediaTek MT6366 PMIC
    90155dfd990d dt-bindings: mfd: mt6397: Add binding for MT6357
    9ac0c0536572 mfd: dln2: Fix double put in dln2_probe
    ee6b91411d3f mfd: core: Ensure disabled devices are skipped without aborting
    f1ed6c4e59f9 mfd: core: Un-constify mfd_cell.of_reg
    437f033e30c8 IB/mlx5: Fix init stage error handling to avoid double free of same QP and UAF
    ad52f21e3dec ASoC: ams-delta.c: use component after check
    3dd998f78cb5 crypto: qat - fix deadlock in backlog processing
    c7c26d0ef5d2 padata: Fix refcnt handling in padata_free_shell()
    980a7fd5e57e ASoC: Intel: Skylake: Fix mem leak when parsing UUIDs fails
    9ee89579e69d HID: logitech-hidpp: Move get_wireless_feature_index() check to hidpp_connect_event()
    cf47abd7d8a1 HID: logitech-hidpp: Revert "Don't restart communication if not necessary"
    8eb1f933ccde HID: logitech-hidpp: Don't restart IO, instead defer hid_connect() only
    7f2ed86dde19 HID: logitech-hidpp: Remove HIDPP_QUIRK_NO_HIDINPUT quirk
    b1736354a7b9 Revert "HID: logitech-hidpp: add a module parameter to keep firmware gestures"
    693baca82d20 sh: bios: Revive earlyprintk support
    35ac8075aea2 hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip
    8a716eb7f8f5 HID: cp2112: Make irq_chip immutable
    cce6785b8401 RDMA/hfi1: Workaround truncation compilation error
    7a22e6fa51c5 scsi: ufs: core: Leave space for '\0' in utf8 desc string
    f9f4a6bdf934 ASoC: fsl: Fix PM disable depth imbalance in fsl_easrc_probe
    002bd3c874da ASoC: SOF: core: Ensure sof_ops_free() is still called when probe never ran.
    fe6efb2d1864 RDMA/hns: The UD mode can only be configured with DCQCN
    1a6806f27e9e RDMA/hns: Add check for SL
    d3a8efb9de59 RDMA/hns: Fix signed-unsigned mixed comparisons
    1000adbac3b2 RDMA/hns: Fix uninitialized ucmd in hns_roce_create_qp_common()
    7c09504c371d RDMA/hns: Fix printing level of asynchronous events
    3d559a5d5db3 IB/mlx5: Fix rdma counter binding for RAW QP
    c0f4144d0dec ASoC: fsl: mpc5200_dma.c: Fix warning of Function parameter or member not described
    4f13eab0e8a1 ext4: move 'ix' sanity check to corrent position
    242ba2e20baf ARM: 9321/1: memset: cast the constant byte to unsigned char
    0a7f9238f3f8 crypto: hisilicon/qm - fix PF queue parameter issue
    07eb93dbe1a7 crypto: hisilicon/qm - split a debugfs.c from qm
    2cec6774fd1e crypto: hisilicon/qm - modify the process of regs dfx
    56785a3a08e5 crypto: hisilicon/qm - delete redundant null assignment operations
    bafb12b629b7 hid: cp2112: Fix duplicate workqueue initialization
    aa804deca1c3 PCI: vmd: Correct PCI Header Type Register's multi-function check
    ed7f07ef84c4 crypto: qat - increase size of buffers
    17c890a887c1 crypto: caam/jr - fix Chacha20 + Poly1305 self test failure
    9857f811e5cd crypto: caam/qi2 - fix Chacha20 + Poly1305 self test failure
    f23859748e3d nd_btt: Make BTT lanes preemptible
    93aa88170cf3 libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return value
    4795de8c046e scsi: ibmvfc: Fix erroneous use of rtas_busy_delay with hcall return code
    dc44e3fdb091 crypto: qat - fix unregistration of crypto algorithms
    5e989aeb4022 crypto: qat - extend buffer list interface
    443bde2a4ca6 crypto: qat - generalize crypto request buffers
    380f0a1de227 crypto: qat - change bufferlist logic interface
    2ad909a408d1 crypto: qat - rename bufferlist functions
    61c57bb98680 crypto: qat - relocate bufferlist logic
    e3294cccd818 crypto: qat - ignore subsequent state up commands
    bb55130d024a RDMA/core: Use size_{add,sub,mul}() in calls to struct_size()
    e39b84448ff9 hwrng: geode - fix accessing registers
    3c5c7f926a4b hwrng: bcm2835 - Fix hwrng throughput regression
    0c824b77ad48 crypto: hisilicon/hpre - Fix a erroneous check after snprintf()
    12d2087a7dd9 KEYS: Include linux/errno.h in linux/verification.h
    44dcf6d33e9e ALSA: hda: cs35l41: Undo runtime PM changes at driver exit time
    2d81896fe161 ALSA: hda: cs35l41: Fix unbalanced pm_runtime_get()
    06421269133f ASoC: cs35l41: Undo runtime PM changes at driver exit time
    ab3aa429c8df ASoC: cs35l41: Verify PM runtime resume errors in IRQ handler
    f20c4b0c015c module/decompress: use vmalloc() for gzip decompression workspace
    c8a235583304 selftests/resctrl: Ensure the benchmark commands fits to its array
    02c167c93fe2 selftests/pidfd: Fix ksft print formats
    6b7feafde79c arm64: tegra: Use correct interrupts for Tegra234 TKE
    87367bc3d9b0 arm64: dts: imx8mn: Add sound-dai-cells to micfil node
    fef0af22503f arm64: dts: imx8mm: Add sound-dai-cells to micfil node
    fafaf5a2f313 arm64: dts: imx8qm-ss-img: Fix jpegenc compatible entry
    37658e518958 clk: scmi: Free scmi_clk allocated when the clocks with invalid info are skipped
    db6db0af76f5 ARM: dts: am3517-evm: Fix LED3/4 pinmux
    d43c3e49744c firmware: arm_ffa: Allow the FF-A drivers to use 32bit mode of messaging
    5429ecbb1b8b firmware: arm_ffa: Assign the missing IDR allocation ID to the FFA device
    e0cf8e811f72 arm64: dts: ti: k3-am62a7-sk: Drop i2c-1 to 100Khz
    eccde2dbd93d firmware: ti_sci: Mark driver as non removable
    7efb91501ba2 kunit: Fix missed memory release in kunit_free_suite_set()
    f0ef883cae30 soc: qcom: llcc: Handle a second device without data corruption
    4653225f41ab ARM: dts: qcom: mdm9615: populate vsdcc fixed regulator
    d97268ce08c3 arm64: dts: qcom: apq8016-sbc: Add missing ADV7533 regulators
    7867e1d92622 ARM64: dts: marvell: cn9310: Use appropriate label for spi1 pins
    945f2e4f13f3 arm64: dts: qcom: sdm845-mtp: fix WiFi configuration
    89465723e0f6 arm64: dts: qcom: sm8350: fix pinctrl for UART18
    1a404795c401 arm64: dts: qcom: sm8150: add ref clock to PCIe PHYs
    cd952d43c00d arm64: dts: qcom: sc7280: Add missing LMH interrupts
    03a0a34f04a4 arm64: dts: qcom: msm8992-libra: drop duplicated reserved memory
    4109f7d1a852 arm64: dts: qcom: msm8916: Fix iommu local address range
    389a4aa5e327 arm64: dts: qcom: sc7280: link usb3_phy_wrapper_gcc_usb30_pipe_clk
    426d3c7c72a2 arm64: dts: qcom: sdm845: cheza doesn't support LMh node
    e65c1aa21ba1 ARM: dts: renesas: blanche: Fix typo in GP_11_2 pin name
    b660420f449d perf: hisi: Fix use-after-free when register pmu fails
    104fa6426a8f drivers/perf: hisi_pcie: Check the type first in pmu::event_init()
    c6e00bc30ea1 perf/arm-cmn: Fix DTC domain detection
    28fa550a49e8 perf/arm-cmn: Revamp model detection
    4589403a343b drivers/perf: hisi: use cpuhp_state_remove_instance_nocalls() for hisi_hns3_pmu uninit process
    1e88414e64a2 drm: mediatek: mtk_dsi: Fix NO_EOT_PACKET settings/handling
    025d2ac470a9 clocksource/drivers/arm_arch_timer: limit XGene-1 workaround
    96c3a1830434 drm/msm/dsi: free TX buffer in unbind
    8b072ab6c445 drm/msm/dsi: use msm_gem_kernel_put to free TX buffer
    5671bed3c0c8 xen-pciback: Consider INTx disabled when MSI/MSI-X is enabled
    934747e2f807 xenbus: fix error exit in xenbus_init()
    ace6403e7854 drm/rockchip: Fix type promotion bug in rockchip_gem_iommu_map()
    2836c72e8d60 arm64/arm: xen: enlighten: Fix KPTI checks
    008b2a93c5d7 drm/bridge: lt9611uxc: fix the race in the error path
    af19ebfc6a17 gpu: host1x: Correct allocated size for contexts
    9da019345405 drm/rockchip: cdn-dp: Fix some error handling paths in cdn_dp_probe()
    8045808be1c2 drm/mediatek: Fix iommu fault during crtc enabling
    5d30fedc20ad drm/mediatek: Fix iommu fault by swapping FBs after updating plane state
    32b15fef33e8 io_uring/kbuf: Allow the full buffer id space for provided buffers
    60db638be5f4 io_uring/kbuf: Fix check of BID wrapping in provided buffers
    03e334565d2d drm/amd/display: Bail from dm_check_crtc_cursor if no relevant change
    a99afba394a9 drm/amd/display: Refactor dm_get_plane_scale helper
    896066202757 drm/amd/display: Check all enabled planes in dm_check_crtc_cursor
    9eae81af9243 drm/amdkfd: fix some race conditions in vram buffer alloc/free of svm code
    78e998884d5d drm/bridge: tc358768: Fix tc358768_ns_to_cnt()
    9dbfdf5dcc38 drm/bridge: tc358768: Clean up clock period code
    3ed322a852ed drm/bridge: tc358768: Rename dsibclk to hsbyteclk
    14d546d067fb drm/bridge: tc358768: Use dev for dbg prints, not priv->dev
    4a1c4eff6545 drm/bridge: tc358768: Print logical values, not raw register values
    fb82b3b4acdd drm/bridge: tc358768: Use struct videomode
    e87a3c24ce5a drm/bridge: tc358768: remove unused variable
    1942dc48f482 drm/bridge: tc358768: Fix bit updates
    2fab90bcde42 drm/bridge: tc358768: Fix use of uninitialized variable
    3c0b681ba44b drm/bridge: lt8912b: Add missing drm_bridge_attach call
    5a521f6b68ec drm/bridge: lt8912b: Manually disable HPD only if it was enabled
    7bf0cb8f4028 drm/bridge: lt8912b: Fix crash on bridge detach
    2cfa9dc32c9e drm/bridge: lt8912b: Fix bridge_detach
    45350e5471dc drm/bridge: lt8912b: Add hot plug detection
    2c80c4f0d284 drm: bridge: it66121: Fix invalid connector dereference
    341e79f8aec6 drm/radeon: possible buffer overflow
    2d68194e1a01 drm/rockchip: vop2: Add missing call to crtc reset helper
    bc05621888d9 drm/rockchip: vop2: Don't crash for invalid duplicate_state
    b248ccaabfc1 drm/rockchip: vop: Fix call to crtc reset helper
    ffebe76e5049 drm/rockchip: vop: Fix reset of state in duplicate state crtc funcs
    4d37df40b103 hte: tegra: Fix missing error code in tegra_hte_test_probe()
    a671a41d60d3 hwmon: (sch5627) Disallow write access if virtual registers are locked
    4a3031298295 hwmon: (sch5627) Use bit macros when accessing the control register
    3385632de8ce Revert "hwmon: (sch56xx-common) Add automatic module loading on supported devices"
    581255403a64 Revert "hwmon: (sch56xx-common) Add DMI override table"
    dd06f92fd811 hwmon: (coretemp) Fix potentially truncated sysfs attribute name
    33de53a27060 hwmon: (axi-fan-control) Fix possible NULL pointer dereference
    44a96796d258 platform/x86: wmi: Fix opening of char device
    ae28868bbaec platform/x86: wmi: Fix probe failure when failing to register WMI devices
    7b8d88df171a clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM
    2a18dd653284 clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data
    a836efc21ef0 clk: mediatek: clk-mt7629: Add check for mtk_alloc_clk_data
    a540ca0aeae8 clk: mediatek: clk-mt7629-eth: Add check for mtk_alloc_clk_data
    357df1c2f6ac clk: mediatek: clk-mt6797: Add check for mtk_alloc_clk_data
    df1c4a9efa3f clk: mediatek: clk-mt6779: Add check for mtk_alloc_clk_data
    dd1f30d68fa9 clk: mediatek: clk-mt6765: Add check for mtk_alloc_clk_data
    7d022726e384 clk: npcm7xx: Fix incorrect kfree
    cc1c2772c1e1 clk: ti: fix double free in of_ti_divider_clk_setup()
    e4df931fb424 clk: ti: change ti_clk_register[_omap_hw]() API
    cb6c38995f9c clk: keystone: pll: fix a couple NULL vs IS_ERR() checks
    0a3761410965 spi: nxp-fspi: use the correct ioremap function
    cdaa544dc473 clk: linux/clk-provider.h: fix kernel-doc warnings and typos
    a0b3b2cc2d73 clk: renesas: rzg2l: Fix computation formula
    e1809bb19a67 clk: renesas: rzg2l: Use FIELD_GET() for PLL register fields
    e6070f0cdad6 clk: renesas: rzg2l: Trust value returned by hardware
    c823ffba5d00 clk: renesas: rzg2l: Lock around writes to mux register
    77e233880234 clk: renesas: rzg2l: Wait for status bit of SD mux before continuing
    f26a440d0ec1 clk: renesas: rcar-gen3: Extend SDnH divider table
    d72c586809e0 clk: imx: imx8qxp: Fix elcdif_pll clock
    2c2f1fb3f857 clk: imx: imx8mq: correct error handling path
    0e2b08824072 clk: imx: Select MXC_CLK for CLK_IMX8QXP
    5b8d3ea0939c regulator: mt6358: Fail probe on unknown chip ID
    8d20252d96bd clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src
    a588f440c47f clk: qcom: mmcc-msm8998: Fix the SMMU GDSC
    d2ffd85ee356 clk: qcom: mmcc-msm8998: Don't check halt bit on some branch clks
    06a7365e2bd8 clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies
    101c2d257c1f clk: qcom: gcc-msm8996: Remove RPM bus clocks
    5c25f89c00b9 spi: tegra: Fix missing IRQ check in tegra_slink_probe()
    51d4d3cd1836 regmap: debugfs: Fix a erroneous check after snprintf()
    30e77e3ee989 ipvlan: properly track tx_errors
    4836b94e5e38 net: add DEV_STATS_READ() helper
    fae5cc598ee6 ipv6: avoid atomic fragment on GSO packets
    35aff5362693 ACPI: sysfs: Fix create_pnp_modalias() and create_of_modalias()
    1ca7bc1b085f bpf: Fix unnecessary -EBUSY from htab_lock_bucket
    4bb26ec7ed76 Bluetooth: hci_sync: Fix Opcode prints in bt_dev_dbg/err
    6f505a013c85 wifi: iwlwifi: empty overflow queue during flush
    e2be4ab86a4a wifi: iwlwifi: pcie: synchronize IRQs before NAPI
    c56aed37b671 wifi: iwlwifi: call napi_synchronize() before freeing rx/tx queues
    6d88d4b1bb42 tcp: fix cookie_init_timestamp() overflows
    72c23b307173 chtls: fix tp->rcv_tstamp initialization
    2acedc5372ed net: skb_find_text: Ignore patterns extending past 'to'
    d860416236bd selftests: netfilter: test for sctp collision processing in nf_conntrack
    aa0a050c6569 r8169: fix rare issue with broken rx after link-down on RTL8125
    4789d93f94d9 r8169: use tp_to_dev instead of open code
    77ff34a56b69 thermal: core: prevent potential string overflow
    9709c6d7594d netfilter: nf_tables: Drop pointless memset when dumping rules
    100a75d56b0d wifi: wfx: fix case where rates are out of order
    f64a559f2d19 PM / devfreq: rockchip-dfi: Make pmu regmap mandatory
    0d30931f1fa0 can: dev: can_put_echo_skb(): don't crash kernel if can_priv::echo_skb is accessed out of bounds
    76378a8bae09 can: dev: can_restart(): fix race condition between controller restart and netif_carrier_on()
    614d615d495e can: dev: can_restart(): don't crash kernel if carrier is OK
    d5342dafca3c wifi: ath11k: fix Tx power value during active CAC
    8a777b28d7d0 ACPI: video: Add acpi_backlight=vendor quirk for Toshiba Portégé R100
    396ec51b138e ACPI: property: Allow _DSD buffer data only for byte accessors
    75de6a664183 wifi: rtlwifi: fix EDCA limit set by BT coexistence
    14a7e73b28eb tcp_metrics: do not create an entry from tcp_init_metrics()
    52ec0669f457 tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()
    e850efcf2bb0 tcp_metrics: add missing barriers on delete
    586ce1064f66 wifi: ath: dfs_pattern_detector: Fix a memory initialization issue
    ebca9ae926df wifi: mt76: mt7915: fix beamforming availability check
    2b12aebbd324 wifi: mt76: mt7603: improve stuck beacon handling
    c2fd48179cf2 wifi: mt76: mt7603: improve watchdog reset reliablity
    e3c46ce78ddf wifi: mt76: mt7603: rework/fix rx pse hang check
    e01b3400d641 wifi: ath11k: fix boot failure with one MSI vector
    26e301a70d93 wifi: rtw88: debug: Fix the NULL vs IS_ERR() bug for debugfs_create_file()
    365fe12f4529 net: ethernet: mtk_wed: fix EXT_INT_STATUS_RX_FBUF definitions for MT7986 SoC
    d97463c1f390 net: spider_net: Use size_add() in call to struct_size()
    254187a64a30 tipc: Use size_add() in calls to struct_size()
    065cb7ae3f15 tls: Use size_add() in call to struct_size()
    8ae187386420 tls: Only use data field in crypto completion function
    65e65a8b2de4 mlxsw: Use size_mul() in call to struct_size()
    a764c22bbc85 gve: Use size_add() in call to struct_size()
    5dd1344de3e6 tcp: call tcp_try_undo_recovery when an RTOd TFO SYNACK is ACKed
    a08ff0544b92 udp: add missing WRITE_ONCE() around up->encap_rcv
    ec18d7507f9d selftests/bpf: Correct map_fd to data_fd in tailcalls
    3e1d754b5ddf iavf: Fix promiscuous mode configuration flow messages
    42b452960a13 i40e: fix potential memory leaks in i40e_remove()
    36f0004fe5bd wifi: iwlwifi: honor the enable_ini value
    9c6269f5d11f wifi: mac80211: fix # of MSDU in A-MSDU calculation
    cee323e56c13 wifi: mac80211: move sched-scan stop work to wiphy work
    0568d1e8899e wifi: mac80211: move offchannel works to wiphy work
    ef413615197c wifi: mac80211: move scan work to wiphy work
    09915293c302 wifi: mac80211: move radar detect work to wiphy work
    697fb94e3e8d wifi: cfg80211: add flush functions for wiphy work
    36aa50d5782b genirq/matrix: Exclude managed interrupts in irq_matrix_allocated()
    4f834ad0341c string: Adjust strtomem() logic to allow for smaller sources
    63f637309baa pstore/platform: Add check for kstrdup
    0a1dab4a8e3d drivers/clocksource/timer-ti-dm: Don't call clk_get_rate() in stop function
    dbb558160323 x86/boot: Fix incorrect startup_gdt_descr.size
    21c5c3f95f25 x86/sev-es: Allow copy_from_kernel_nofault() in earlier boot
    7807c269cbf4 ACPI/NUMA: Apply SRAT proximity domain to entire CFMWS window
    bf178c8b9c8e x86/numa: Introduce numa_fill_memblks()
    dce53a017ca2 futex: Don't include process MM in futex key on no-MMU
    3c1a20c122bc x86/srso: Fix SBPB enablement for (possible) future fixed HW
    2351c03529b2 writeback, cgroup: switch inodes with dirty timestamps to release dying cgwbs
    bc8e02850a59 vfs: fix readahead(2) on block devices
    8620933c3c53 sched: Fix stop_one_cpu_nowait() vs hotplug
    21f99a5adbc5 objtool: Propagate early errors
    df870d47d2af sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0
    d77530a1d47f sched/uclamp: Set max_spare_cap_cpu even if max_spare_cap is 0
    b7839197719f iov_iter, x86: Be consistent about the __user tag on copy_mc_to_user()
    42bed989f0ef sched/fair: Fix cfs_rq_is_decayed() on !SMP
    71e3e7830b3e hwmon: (nct6775) Fix incorrect variable reuse in fan_div calculation

(From OE-Core rev: 53c369947d0354639cebccafb3b2ec42dadb70a7)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f9150ef12b283860e72fed59a1cc82721516c555)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
03ee5fe827 linux-yocto/6.1: update to v6.1.62
Updating  to the latest korg -stable release that comprises
the following commits:

    fb2635ac69ab Linux 6.1.62
    585da49ad62c ASoC: SOF: sof-pci-dev: Fix community key quirk detection
    c1c15b09f456 ALSA: hda: intel-dsp-config: Fix JSL Chromebook quirk detection
    5c59879031ea misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support
    6bebd303ad7e tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks
    3017a17ad6b9 tty: 8250: Add support for Intashield IX cards
    c3444894e855 tty: 8250: Add support for additional Brainboxes PX cards
    31ebf431ed02 tty: 8250: Fix up PX-803/PX-857
    bfe9bde05fcd tty: 8250: Fix port count of PX-257
    b75ee2d9d792 tty: 8250: Add support for Intashield IS-100
    cdd260b220d9 tty: 8250: Add support for Brainboxes UP cards
    8af676c69815 tty: 8250: Add support for additional Brainboxes UC cards
    abcb12f3192d tty: 8250: Remove UC-257 and UC-431
    df6cfab66ff2 tty: n_gsm: fix race condition in status line change on dead connections
    23107989be8e usb: raw-gadget: properly handle interrupted requests
    e7a802447c49 usb: typec: tcpm: Fix NULL pointer dereference in tcpm_pd_svdm()
    6f17be270003 usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" compatibility
    b25a2f247083 PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device
    977ae4dbe231 ALSA: usb-audio: add quirk flag to enable native DSD for McIntosh devices
    9411dbe2c66c mmap: fix error paths with dup_anon_vma()
    21ca008c53a5 mm/mempolicy: fix set_mempolicy_home_node() previous VMA pointer
    7ab62e3415fb x86: KVM: SVM: always update the x2avic msr interception
    e83359126567 perf evlist: Avoid frequency mode for the dummy event
    b3eed1111048 power: supply: core: Use blocking_notifier_call_chain to avoid RCU complaint
    803cc77a3acc ceph_wait_on_conflict_unlink(): grab reference before dropping ->d_lock
    9eab5008db6c io_uring: kiocb_done() should *not* trust ->ki_pos if ->{read,write}_iter() failed
    ed0ba37e7b9b powerpc/mm: Fix boot crash with FLATMEM
    31ae7876da36 r8152: Check for unplug in r8153b_ups_en() / r8153c_ups_en()
    f90656fbf618 r8152: Check for unplug in rtl_phy_patch_request()
    98567c9d849b net: chelsio: cxgb4: add an error code check in t4_load_phy_fw
    ff86d69b2e50 drm/amdgpu: Reserve fences for VM update
    8e4a77ba25ec platform/mellanox: mlxbf-tmfifo: Fix a warning message
    0f2840dabfea netfilter: nf_tables: audit log object reset once per table
    ec80ad4585d7 LoongArch: Replace kmap_atomic() with kmap_local_page() in copy_user_highpage()
    afe80b58eea3 LoongArch: Export symbol invalid_pud_table for modules building
    9f9b2ec53aca gpu/drm: Eliminate DRM_SCHED_PRIORITY_UNSET
    cafa191b27dd drm/amdgpu: Unset context priority is now invalid
    0eb733b53ebf scsi: mpt3sas: Fix in error path
    4e000daf394a fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit()
    50736464a75a fbdev: omapfb: fix some error codes
    6a87b333ba47 drm/ttm: Reorder sys manager cleanup step
    9951b2309ea7 ASoC: codecs: tas2780: Fix log of failed reset via I2C.
    b7ed4aa0c2e6 ASoC: rt5650: fix the wrong result of key button
    8e1a6594d782 efi: fix memory leak in krealloc failure handling
    678edd2dfd55 netfilter: nfnetlink_log: silence bogus compiler warning
    c6f6a505277f spi: npcm-fiu: Fix UMA reads when dummy.nbytes == 0
    6a7a2d5a0864 fs/ntfs3: Avoid possible memory leak
    84aabd18c8d7 fs/ntfs3: Fix directory element type detection
    3bff4bb7f9c7 fs/ntfs3: Fix NULL pointer dereference on error in attr_allocate_frame()
    c8cbae3cbbc4 fs/ntfs3: Fix possible NULL-ptr-deref in ni_readpage_cmpr()
    6fe32f79abea fs/ntfs3: Use kvmalloc instead of kmalloc(... __GFP_NOWARN)
    92f9c7c7ddbf fs/ntfs3: Write immediately updated ntfs state
    fc91bb3e1b2b fs/ntfs3: Add ckeck in ni_update_parent()
    768e857ac3e0 fbdev: atyfb: only use ioremap_uc() on i386 and ia64
    dd6d75eb00ee Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport
    c64c237275b4 powerpc/85xx: Fix math emulation exception
    96c7aac8d804 dmaengine: ste_dma40: Fix PM disable depth imbalance in d40_probe
    9ef4697548c2 irqchip/stm32-exti: add missing DT IRQ flag translation
    7378415da048 irqchip/riscv-intc: Mark all INTC nodes as initialized
    d3204c0fdd33 net: sched: cls_u32: Fix allocation size in u32_init()
    f15dbcda2ce8 ASoC: tlv320adc3xxx: BUG: Correct micbias setting
    30ed99860437 coresight: tmc-etr: Disable warnings for allocation failures
    6618e7a740de ASoC: simple-card: fixup asoc_simple_probe() error handling

(From OE-Core rev: b249fcda04a9f6ccf3d2f798c5a860ba024a9368)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 611da3dcd87a595be77f72bea3d2637d5d869ae5)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
f05236437b linux-yocto/6.1: update to v6.1.61
Updating  to the latest korg -stable release that comprises
the following commits:

    4a61839152cc Linux 6.1.61
    5926b0886d0c objtool/x86: add missing embedded_insn check
    2afa9f7eb15c ext4: avoid overlapping preallocations due to overflow
    fcefddf3a151 ext4: fix BUG in ext4_mb_new_inode_pa() due to overflow
    495c4c58d684 ext4: add two helper functions extent_logical_end() and pa_logical_end()
    d022e4ea9c2f platform/x86: Add s2idle quirk for more Lenovo laptops
    48ebeab0eda1 clk: Sanitize possible_parent_show to Handle Return Value of of_clk_get_parent_name
    65e5a9890e03 sparc32: fix a braino in fault handling in csum_and_copy_..._user()
    8b8cde8ebb87 perf/core: Fix potential NULL deref
    5e232f2205f2 x86/cpu: Add model number for Intel Arrow Lake mobile processor
    63cc3d5d343d x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility
    37495846b1ef nvmem: imx: correct nregs for i.MX6UL
    116671d25915 nvmem: imx: correct nregs for i.MX6SLL
    b90b8633ef62 nvmem: imx: correct nregs for i.MX6ULL
    cc87c73eac2d misc: fastrpc: Unmap only if buffer is unmapped from DSP
    38c5faf2a984 misc: fastrpc: Clean buffers on remote invocation failures
    7737e9384e2d misc: fastrpc: Free DMA handles for RPC calls with no arguments
    1e8851b51300 misc: fastrpc: Reset metadata buffer to avoid incorrect free
    5a35fc1c0091 tracing/kprobes: Fix the description of variable length arguments
    91b95e3b4ac8 i2c: aspeed: Fix i2c bus hang in slave read
    11602cadc9b4 i2c: stm32f7: Fix PEC handling in case of SMBUS transfers
    ff0312a156cf i2c: muxes: i2c-demux-pinctrl: Use of_get_i2c_adapter_by_node()
    f9a7b3b33c84 i2c: muxes: i2c-mux-gpmux: Use of_get_i2c_adapter_by_node()
    48a365ae4f31 i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node()
    6ec84059b5e1 iio: adc: xilinx-xadc: Correct temperature offset/scale for UltraScale
    e26fd381bf11 iio: adc: xilinx-xadc: Don't clobber preset voltage/temperature thresholds
    cb01837e0f7a iio: exynos-adc: request second interupt only when touchscreen mode is used
    7a641bc52f00 iio: afe: rescale: Accept only offset channels
    9236d2ea6465 io_uring/fdinfo: lock SQ thread while retrieving thread cpu/pid
    1684909df3f4 kasan: print the original fault addr when access invalid shadow
    6a5b845b57b1 blk-throttle: check for overflow in calculate_bytes_allowed
    bb20a245df9c scsi: sd: Introduce manage_shutdown device flag
    93fa5786f972 iavf: in iavf_down, disable queues when removing the driver
    f7f660df65a1 drm/logicvc: Kconfig: select REGMAP and REGMAP_MMIO
    cb115b6688b6 i40e: Fix wrong check for I40E_TXR_FLAGS_WB_ON_ITR
    144f93c62239 gtp: fix fragmentation needed check with gso
    039a050740fc gtp: uapi: fix GTPA_MAX
    664a358b7966 tcp: fix wrong RTO timeout when received SACK reneging
    5b100bb0449c r8152: Release firmware if we have an error in probe
    ecb51a434e3d r8152: Cancel hw_phy_work if we have an error in probe
    87376143df3f r8152: Run the unload routine if we have errors during probe
    ee73f937c5e9 r8152: Increase USB control msg timeout to 5000ms as per spec
    9eb275fec602 net: usb: smsc95xx: Fix uninit-value access in smsc95xx_read_reg
    7c799bc32232 net: ieee802154: adf7242: Fix some potential buffer overflow in adf7242_stats_show()
    55b01c5a847e net: ethernet: adi: adin1110: Fix uninitialized variable
    9d2b588fae86 igc: Fix ambiguity in the ethtool advertising
    fa28949c72db neighbour: fix various data-races
    c166dd51b628 igb: Fix potential memory leak in igb_add_ethtool_nfc_entry
    9a194064fab6 treewide: Spelling fix in comment
    b1ad0a147d08 i40e: Fix I40E_FLAG_VF_VLAN_PRUNING value
    d8ac13acfbf7 iavf: initialize waitqueues before starting watchdog_task
    66e879507b12 r8169: fix the KCSAN reported data race in rtl_rx while reading desc->opts1
    d10140916e6f r8169: fix the KCSAN reported data-race in rtl_tx while reading TxDescArray[entry].opts1
    4138a02c8953 r8169: fix the KCSAN reported data-race in rtl_tx() while reading tp->cur_tx
    29f365f4c3b8 clk: ti: Fix missing omap5 mcbsp functional clock and aliases
    2ba943c6d9eb clk: ti: Fix missing omap4 mcbsp functional clock and aliases
    8d8346ed3968 firmware/imx-dsp: Fix use_after_free in imx_dsp_setup_channels()
    df4169fc9b8a ARM: OMAP: timer32K: fix all kernel-doc warnings
    6c668e2f338b drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper()
    024251bab25d drm/amd: Disable ASPM for VI w/ all Intel systems
    eded5f5261b8 drm/i915/pmu: Check if pmu is closed before stopping event
    4f46c177c03d nfsd: lock_rename() needs both directories to live on the same fs
    3262ff5826e1 maple_tree: add GFP_KERNEL to allocations in mas_expected_entries()
    b1b2750de123 hugetlbfs: extend hugetlb_vma_lock to private VMAs
    c9b066f6920d mm/migrate: fix do_pages_move for compat pointers
    a6fbf025e3cf mm/page_alloc: correct start page when guard page debug is enabled
    0aa7b24c068c hugetlbfs: clear resv_map pointer if mmap fails
    38d0d1c44255 mm: fix vm_brk_flags() to not bail out while holding lock
    38930ec7670a arm64: dts: rockchip: Fix i2s0 pin conflict on ROCK Pi 4 boards
    9d72254c2b7a arm64: dts: rockchip: Add i2s0-2ch-bus-bclk-off pins to RK3399
    08e6b680f264 vhost: Allow null msg.size on VHOST_IOTLB_INVALIDATE
    1f14ded0f165 vsock/virtio: initialize the_virtio_vsock before using VQs
    534487cc3eb8 virtio_pci: fix the common cfg map size
    86f467d3582e virtio-crypto: handle config changed by work queue
    a9d4a1ea6709 virtio-mmio: fix memory leak of vm_dev
    19b30a879065 virtio_balloon: Fix endless deflation and inflation on arm64
    bede8b4b5175 mcb-lpc: Reallocate memory region to avoid memory overlapping
    c9efc3efe450 mcb: Return actual parsed size when reading chameleon table
    e58ab834e48f pinctrl: qcom: lpass-lpi: fix concurrent register updates
    018b11ecba76 ASoC: codecs: wcd938x: fix runtime PM imbalance on remove
    508c3353fed8 ASoC: codecs: wcd938x: fix regulator leaks on probe errors
    877fc75d2cf7 ASoC: codecs: wcd938x: Simplify with dev_err_probe
    629ba75200a1 ASoC: codecs: wcd938x: Convert to platform remove callback returning void
    1fae817d3ecb mmc: core: Fix error propagation for some ioctl commands
    719c01f28130 mmc: block: ioctl: do write error check for spi
    651e66d20b59 mmc: core: Align to common busy polling behaviour for mmc ioctls
    d3466ce4f42e KVM: x86/pmu: Truncate counter value to allowed width on write

(From OE-Core rev: 954ab141b047e532c01cfb18276602662b9ac6d3)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8b5ec2f683f71f3e708d1c6401ebe07eec1986c7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
07719f4afa linux-yocto/6.1: cfg: restore CONFIG_DEVMEM
Integrating the following commit(s) to linux-yocto/.:

1/1 [
    Author: C. Andy Martin
    Email: cam@myfastmail.com
    Subject: security.cfg: restore strict-only /dev/mem access
    Date: Fri, 27 Oct 2023 11:22:06 -0400

    CONFIG_DEVMEM was mistakenly not enabled, which defeats
    CONFIG_STRICT_DEVMEM and friends, as it completely removes all
    /dev/mem support.

    Signed-off-by: C. Andy Martin <cam@myfastmail.com>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
]

(From OE-Core rev: 5567b76143d5b6c49c97aa90e518a3c1129b2b5f)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit dfc0cc113eabb1160b6bfd630fa75c6a3cb9c7a5)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
e96278affc kernel-yocto: improve metadata patching
The ability to patch the kernel-yocto metadata was added to support
debug and easier test cycles on kernel-cache provided fragments. As
such, it was very simple and has limited functionality.

That being said, it is an available feature and can be improved to
handle patches that fail to apply.

The main kernel patching is already handled by the kern-tools, so
we extend the patching of the meta-data to same tools and inherit
more functinality from the scripts.

[YOCTO #15266]

(From OE-Core rev: 98d981ba1bf903da441df22f298633bedbd718da)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e867addd6c2f508f7a95e72222e750d37f3d19d8)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
306e77e3a9 kern-tools: update SRCREV to include SECURITY.md file
To be compliant with the recent security policy, bumping
the SRCREV to pickup the SECUIRTY.md of the kern-tools
repository. It's contents are repeated below:

   How to Report a Potential Vulnerability?
   ========================================

   If you would like to report a public issue (for example, one with a released
   CVE number), please report it using the [https://bugzilla.yoctoproject.org/enter_bug.cgi?product=Security
   Security Bugzilla].  If you have a patch ready, submit it following the same procedure as any
   other patch as described in README.md.

   If you are dealing with a not-yet released or urgent issue, please send a
   message to security AT yoctoproject DOT org, including as many details as
   possible: the layer or software module affected, the recipe and its version,
   and any example code, if available.

   Branches maintained with security fixes
   ---------------------------------------

   See [https://wiki.yoctoproject.org/wiki/Stable_Release_and_LTS Stable release and LTS]
   for detailed info regarding the policies and maintenance of Stable branches.

   The [https://wiki.yoctoproject.org/wiki/Releases Release page] contains a list of all
   releases of the Yocto Project. Versions in grey are no longer actively maintained with
   security patches, but well-tested patches may still be accepted for them for
   significant issues.

(From OE-Core rev: 2da5d792eefee1f32b0432ae429fc8e4c0d19956)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit fbdfc28b290ea3ed2dc3dbbaf461adc2839eb8f2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
a59dc45a40 kern-tools: bump SRCREV for queue processing changes
Bumping the SRCREV to pickup a new option to the patch and
merge queue handling scripts.

The new option '--prev' allows us to change the behaviour
of a subsequent runs to retry a failed patch, versus skipping
it.

(From OE-Core rev: 5a57d0e451dc24e7ec4effa41c32812f1c5edc89)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 231256485ae528773a4da9fad8bf4baff26fc0d2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
a36f2c0391 kern-tools: make lower context patches reproducible
It could be argued that it should be an error to have a
reduced context patch now that we've had many years to
ensure that our kernel path queues are clean.

But there are still some supported scenarios where a
patch is on multiple branches and reduced context makes
sense.

Applying the following patch to make sure these are
reproducible like the primary mode of application.

   kgit-s2q: use additional git-am options with reduced context as well

(From OE-Core rev: 7412f49779896cac68da25455c26c9e16c3460d2)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a76a31419e8f3c612699bc45dfc7637d6d542c08)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
5173c3d0aa linux-yocto/6.5: update to v6.5.9
Updating  to the latest korg -stable release that comprises
the following commits:

    d0e42510ae83 Linux 6.5.9
    f879295c92b1 selftests: mptcp: join: correctly check for no RST
    85577dd61990 mptcp: avoid sending RST when closing the initial subflow
    1978b69212ed Bluetooth: hci_sock: Correctly bounds check and pad HCI_MON_NEW_INDEX name
    2a3c9d689d6b kbuild: remove old Rust docs output path
    8436370b5a79 docs: rust: update Rust docs output path
    479935768842 net: rfkill: reduce data->mtx scope in rfkill_fop_open
    2ca5210807f1 Bluetooth: hci_sock: fix slab oob read in create_monitor_event
    5a7b9ca3ec2c net: move altnames together with the netdevice
    b583bfcc5a36 efi/unaccepted: Fix soft lockups caused by parallel memory acceptance
    1a19b7394a6c phy: qcom-qmp-combo: initialize PCS_USB registers
    5389ae6d399d phy: qcom-qmp-combo: Square out 8550 POWER_STATE_CONFIG1
    43196ab56d1a phy: qcom-qmp-usb: split PCS_USB init table for sc8280xp and sa8775p
    ddf000488df4 phy: qcom-qmp-usb: initialize PCS_USB registers
    2a90676f997a phy: mapphone-mdm6600: Fix pinctrl_pm handling for sleep pins
    da02a53bd04a phy: mapphone-mdm6600: Fix runtime PM for remove
    9f35d798d13d phy: mapphone-mdm6600: Fix runtime disable on probe
    69cd19101248 rust: docs: fix logo replacement
    43f4e8e32b97 docs: Move rustdoc output, cross-reference it
    362a407559f5 powerpc/qspinlock: Fix stale propagated yield_cpu
    164e66ef89d1 powerpc/mm: Allow ARCH_FORCE_MAX_ORDER up to 12
    fefac8c4686f drm/amdgpu: Fix possible null pointer dereference
    935df6cfa78a drm/i915/cx0: Only clear/set the Pipe Reset bit of the PHY Lanes Owned
    fa8361159a12 drm/bridge: ti-sn65dsi86: Associate DSI device lifetime with auxiliary device
    f5d03923f8bd ASoC: cs42l42: Fix missing include of gpio/consumer.h
    2756d8399ea4 ASoC: pxa: fix a memory leak in probe()
    8247e4d5cba5 ASoC: cs35l56: Fix illegal use of init_completion()
    9955bc6e6be9 gpio: vf610: mask the gpio irq in system suspend and support wakeup
    96964c192aa2 gpio: vf610: set value before the direction to avoid a glitch
    204c78f852e6 gpiolib: acpi: Add missing memset(0) to acpi_get_gpiod_from_data()
    0236504746dd rust: error: fix the description for `ECHILD`
    56d2f7796ab8 platform/x86: asus-wmi: Map 0x2a code, Ignore 0x2b and 0x2c events
    119a52c632d7 platform/x86: asus-wmi: Only map brightness codes when using asus-wmi backlight control
    7422c4a4cbd9 platform/x86: asus-wmi: Change ASUS_WMI_BRN_DOWN code from 0x20 to 0x2e
    a3939c1a96eb platform/x86: msi-ec: Fix the 3rd config
    61ab10af6843 platform/x86: intel-uncore-freq: Conditionally create attribute for read frequency
    18e77f174fc9 platform/surface: platform_profile: Propagate error if profile registration fails
    183aff269bfe s390/cio: fix a memleak in css_alloc_subchannel
    6ccb89a7010e apple-gmux: Hard Code max brightness for MMIO gmux
    efea19a2889c KEYS: asymmetric: Fix sign/verify on pkcs1pad without a hash
    3e25a4bc5023 selftests/ftrace: Add new test case which checks non unique symbol
    d78936d7da27 tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols
    9a7f36028015 s390/pci: fix iommu bitmap allocation
    20f925d38e1e perf: Disallow mis-matched inherited group reads
    12614cd08c2c thunderbolt: Call tb_switch_put() once DisplayPort bandwidth request is finished
    7cb7903eb22e USB: serial: option: add Fibocom to DELL custom modem FM101R-GL
    d617569fc517 USB: serial: option: add entry for Sierra EM9191 with new firmware
    0b53c322db2f USB: serial: option: add Telit LE910C4-WWX 0x1035 composition
    06a2165f1d36 nvme-rdma: do not try to stop unallocated queues
    7d3641c2ed7a nvmet-auth: complete a request only after freeing the dhchap pointers
    f660a391e54c nvme-auth: use chap->s2 to indicate bidirectional authentication
    38f5ff32ccda nvme-pci: add BOGUS_NID for Intel 0a54 device
    2194ee65b29d nvme: sanitize metadata bounce buffer for reads
    16b99c6d6f34 nfs42: client needs to strip file mode's suid/sgid bit after ALLOCATE op
    8183b745d8cd NFS: Fix potential oops in nfs_inode_remove_request()
    4538b3bdcdef fanotify: limit reporting of event with non-decodeable file handles
    62b7f49d3a78 Revert "accel/ivpu: Use cached buffers for FW loading"
    7d6179ce5b4a perf dlfilter: Fix use of addr_location__exit() in dlfilter__object_code()
    b2c39ae29f2b ACPI: bus: Move acpi_arm_init() to the place of after acpi_ghes_init()
    14189248711e ACPI: irq: Fix incorrect return value in acpi_register_gsi()
    dba32abd641d NFSv4.1: fixup use EXCHGID4_FLAG_USE_PNFS_DS for DS server
    2f1c0be27909 pNFS/flexfiles: Check the layout validity in ff_layout_mirror_prepare_stats
    0026f4f9657d pNFS: Fix a hang in nfs4_evict_inode()
    1e8fa3dd1ddb Revert "pinctrl: avoid unsafe code pattern in find_pinctrl()"
    914f9b0cbefa pinctrl: qcom: lpass-lpi: fix concurrent register updates
    1e3d8720507e mmc: core: Capture correct oemid-bits for eMMC cards
    67a5bfcf83dc mmc: core: sdio: hold retuning if sdio in 1-bit mode
    1226f14ae02c mmc: core: Fix error propagation for some ioctl commands
    3d83022bf9b9 mmc: mtk-sd: Use readl_poll_timeout_atomic in msdc_reset_hw
    14eb82d52117 mmc: sdhci-pci-gli: fix LPM negotiation so x86/S0ix SoCs can suspend
    b6aa73574dd4 dt-bindings: mmc: sdhci-msm: correct minimum number of clocks
    81f0c091c37a mtd: physmap-core: Restore map_rom fallback
    73df8fcfe785 mtd: spinand: micron: correct bitmask for ecc status
    13d605fb6b2b mtd: rawnand: Ensure the nand chip supports cached reads
    2cdca57606b1 mtd: rawnand: arasan: Ensure program page operations are successful
    d20ec8d2f31c mtd: rawnand: marvell: Ensure program page operations are successful
    6225891e7960 mtd: rawnand: pl353: Ensure program page operations are successful
    42a17fc11578 mtd: rawnand: qcom: Unmap the right resource upon probe failure
    6f3e86a85ab2 tcp_bpf: properly release resources on error paths
    057fabf0ba77 Bluetooth: hci_event: Fix using memcmp when comparing keys
    30fa7600e058 tcp: allow again tcp_disconnect() when threads are waiting
    3d45ae77292e net/tls: split tls_rx_reader_lock
    cb9a6db7a58f net/mlx5e: Fix VF representors reporting zero counters to "ip -s" command
    150de4a3f0c6 net/mlx5e: Don't offload internal port if filter device is out device
    8b7f7beba354 net/mlx5e: Take RTNL lock before triggering netdev notifiers
    f2997256d0d8 net/mlx5e: XDP, Fix XDP_REDIRECT mpwqe page fragment leaks on shutdown
    7bef60897d24 net/mlx5e: RX, Fix page_pool allocation failure recovery for legacy rq
    d630fe115ef9 net/mlx5e: RX, Fix page_pool allocation failure recovery for striding rq
    f0fbcbb70472 net/mlx5: Handle fw tracer change ownership event based on MTRC
    dc426bd9d813 net/mlx5: E-switch, register event handler before arming the event
    36eee433e85e Bluetooth: hci_sync: always check if connection is alive before deleting
    3b9e2e14ba36 Bluetooth: hci_sync: delete CIS in BT_OPEN/CONNECT/BOUND when aborting
    8f3a578a9fef Bluetooth: ISO: Fix invalid context error
    98c78aef17bc Bluetooth: hci_sync: Introduce PTR_UINT/UINT_PTR macros
    d924ba62fe86 Bluetooth: hci_sync: Fix not handling ISO_LINK in hci_abort_conn_sync
    054dfb821c6e io-wq: fully initialize wqe before calling cpuhp_state_add_instance_nocalls()
    c63d66006bdc cpufreq: schedutil: Update next_freq when cpufreq_limits change
    7bfc1d3e3d93 platform/x86: touchscreen_dmi: Add info for the Positivo C4128B
    ef8073649841 HID: Add quirk to ignore the touchscreen battery on HP ENVY 15-eu0556ng
    8db5b5641edb HID: nintendo: reinitialize USB Pro Controller after resuming from suspend
    37640aaacb3f HID: multitouch: Add required quirk for Synaptics 0xcd7e device
    ae02f63718e6 drm/amd/pm: add unique_id for gc 11.0.3
    ac0893f7a48a platform/x86: touchscreen_dmi: Add info for the BUSH Bush Windows tablet
    3149ea595239 btrfs: error out when reallocating block for defrag using a stale transaction
    71e385e8e042 btrfs: error when COWing block from a root that is being deleted
    55a0567f6461 btrfs: error out when COWing block using a stale transaction
    1472a1d9c294 btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c
    9c91266a003b drm: panel-orientation-quirks: Add quirk for One Mix 2S
    0fd1a377b08e ipv4/fib: send notify when delete source address routes
    7a0ed30fbb66 sky2: Make sure there is at least one frag_addr available
    c2d0245661f6 nfs: decrement nrequests counter before releasing the req
    a6e63b482084 SUNRPC/TLS: Lock the lower_xprt during the tls handshake
    e039d9b24920 SUNRPC: Fail quickly when server does not recognize TLS
    20eb79ccdaa3 regulator/core: Revert "fix kobject release warning and memory leak in regulator_register()"
    42dc95950d7d wifi: cfg80211: avoid leaking stack data into trace
    4d5ea9a1b21d wifi: mac80211: allow transmitting EAPOL frames with tainted key
    96b83be278ee wifi: mac80211: work around Cisco AP 9115 VHT MPDU length
    670894d8905a wifi: cfg80211: Fix 6GHz scan configuration
    5558f4312dca Bluetooth: hci_core: Fix build warnings
    c4ac1d80eaa6 Bluetooth: Avoid redundant authentication
    6dd41ebf7c9e Bluetooth: btusb: add shutdown function for QCA6174
    b095011d0dad HID: holtek: fix slab-out-of-bounds Write in holtek_kbd_input_event
    b404427a7be2 HID: logitech-hidpp: Add Bluetooth ID for the Logitech M720 Triathlon mouse
    47a066e866aa rfkill: sync before userspace visibility/changes
    f19e6337aa9b wifi: iwlwifi: Ensure ack flag is properly cleared.
    22d405f5c1e6 wifi: cfg80211: validate AP phy operation before starting it
    84a89ef8acf3 wifi: mwifiex: Sanity check tlv_len and tlv_bitmap_len
    26feeeb70477 tracing: relax trace_event_eval_update() execution with cond_resched()
    72ec64ea0e12 ata: libata-eh: Fix compilation warning in ata_eh_link_report()
    5bd7eba2174c ata: libata-core: Fix compilation warning in ata_dev_config_ncq()
    21a696f3a91d gpio: timberdale: Fix potential deadlock on &tgpio->lock
    6d3ab53ab7f9 accel/ivpu: Don't flood dmesg with VPU ready message
    90647d0da861 overlayfs: set ctime when setting mtime and atime
    2bc65f2ef8da i2c: mux: Avoid potential false error message in i2c_mux_add_adapter
    c3d5ec9fe0ee btrfs: initialize start_slot in btrfs_log_prealloc_extents
    43cd1b16afbe btrfs: return -EUCLEAN for delayed tree ref with a ref count not equals to 1
    417753a1af5b btrfs: prevent transaction block reserve underflow when starting transaction
    e2829b94c62f btrfs: fix race when refilling delayed refs block reserve
    982142576477 fs-writeback: do not requeue a clean inode having skipped pages
    98e737c3e86c arm64: dts: mediatek: Fix "mediatek,merge-mute" and "mediatek,merge-fifo-en" types
    245cade8fc9a ARM: dts: ti: omap: Fix noisy serial with overrun-throttle-ms for mapphone
    94de81b46a83 pwr-mlxbf: extend Kconfig to include gpio-mlxbf3 dependency
    6ebc25a77ed5 iio: light: vcnl4000: Don't power on/off chip in config
    f7a69786fe5e net: check for altname conflicts when changing netdev's netns
    95e76a1f9988 net: fix ifname in netlink ntf during netns move
    d1d14bcc14bc net: avoid UAF on deleted altname
    f3036796e67d net: mdio-mux: fix C45 access returning -EIO after API change
    f53e11725233 net: more strict VIRTIO_NET_HDR_GSO_UDP_L4 validation
    bd076ba9d762 net: pktgen: Fix interface flags printing
    34f15aeeec57 net: phy: bcm7xxx: Add missing 16nm EPHY statistics
    d8bc92ce877b selftests: openvswitch: Add version check for pyroute2
    eeaa4fcd1f72 netfilter: nf_tables: revert do not remove elements if set backend implements .abort
    2ec18541f390 netfilter: nf_tables: do not remove elements if set backend implements .abort
    d6ba6de49c2d nf_tables: fix NULL pointer dereference in nft_inner_init()
    8a544721329e nf_tables: fix NULL pointer dereference in nft_expr_inner_parse()
    60a203111170 netfilter: nf_tables: do not refresh timeout when resetting element
    bfc88a6ce66e netlink: Correct offload_xstats size
    0317bd5e189f netfilter: nft_set_rbtree: .deactivate fails if element has expired
    6d466bfe7bf3 selftests: netfilter: Run nft_audit.sh in its own netns
    79fbd1c110b3 selftests: openvswitch: Fix the ct_tuple for v4
    7b624e1f9d20 selftests: openvswitch: Catch cases where the tests are killed
    4efeda952519 neighbor: tracing: Move pin6 inside CONFIG_IPV6=y section
    a851f8c93533 net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve
    9e8ada3bf27e bonding: Return pointer to data after pull on skb
    b72539b62d24 net: dsa: bcm_sf2: Fix possible memory leak in bcm_sf2_mdio_register()
    bcfb10a8d722 i40e: prevent crash on probe if hw registers have invalid values
    3bbb112aa138 octeon_ep: update BQL sent bytes before ringing doorbell
    48984949e51d net: usb: smsc95xx: Fix an error code in smsc95xx_reset()
    394c8055fd0e ipv4: fib: annotate races around nh->nh_saddr_genid and nh->nh_saddr
    dd6a8651b98f gve: Do not fully free QPL pages on prefill errors
    e6386242b4cd tun: prevent negative ifindex
    50969e0e05d1 docs: fix info about representor identification
    5b62f58c8288 tcp: Fix listen() warning with v4-mapped-v6 address.
    5019131495d5 tcp: tsq: relax tcp_small_queue_check() when rtx queue contains a single skb
    f74b518c4bb7 tcp: fix excessive TLP and RACK timeouts from HZ rounding
    db4cf95a7636 net: rfkill: gpio: prevent value glitch during probe
    c5b46524c367 net: ipv6: fix return value check in esp_remove_trailer
    10b650138379 net: ipv4: fix return value check in esp_remove_trailer
    89ffd5e26ec3 wifi: cfg80211: use system_unbound_wq for wiphy work
    c91f8adb7414 fprobe: Fix to ensure the number of active retprobes is not zero
    e0cc481c1fa0 net: xfrm: skip policies marked as dead while reinserting policies
    071bba39638f xfrm: interface: use DEV_STATS_INC()
    abfe309fc6dc xfrm: fix a data-race in xfrm_gen_index()
    71998cd436fd xfrm6: fix inet6_dev refcount underflow problem
    de0bfd6026c8 xfrm: fix a data-race in xfrm_lookup_with_ifid()
    40aa935e9e6b qed: fix LL2 RX buffer allocation
    27e7ea6c3ad8 ASoC: codecs: wcd938x: fix runtime PM imbalance on remove
    f0c191c0977a ASoC: codecs: wcd938x: fix regulator leaks on probe errors
    3d4a0f272ff2 ASoC: codecs: wcd938x: fix resource leaks on bind errors
    6165999b6f65 ASoC: codecs: wcd938x: fix unbind tear down order
    2324407dbdfa ASoC: codecs: wcd938x: drop bogus bind error handling
    ea75399184ec ASoC: codecs: wcd938x-sdw: fix runtime PM imbalance on probe errors
    fe672874b968 ASoC: codecs: wcd938x-sdw: fix use after free on driver unbind
    15d4d00e27df ALSA: hda/relatek: Enable Mute LED on HP Laptop 15s-fq5xxx
    302a721307ad ALSA: hda/realtek: Add quirk for ASUS ROG GU603ZV
    56d5acef3b3c ALSA: hda/realtek - Fixed ASUS platform headset Mic issue
    ac1084e2b0b4 drm/edid: add 8 bpc quirk to the BenQ GW2765
    6eb4a83e612a drm/nouveau/disp: fix DP capable DSM connectors
    aa01884d6501 drm/mediatek: Correctly free sg_table in gem prime vmap
    2c9e90773fab drm/i915: Retry gtt fault when out of fence registers
    675f0e9bb716 nvmet-tcp: Fix a possible UAF in queue intialization setup
    7053f66e945d io_uring: fix crash with IORING_SETUP_NO_MMAP and invalid SQ ring address
    55b97a33e5aa netfilter: nft_payload: fix wrong mac header matching
    fd9c3d0fb488 Revert "net: wwan: iosm: enable runtime pm support for 7560"
    9312862d7d03 fs/ntfs3: fix deadlock in mark_as_free_ex
    93600a9e5d24 fs/ntfs3: Fix shift-out-of-bounds in ntfs_fill_super
    15db99c9c7c7 fs/ntfs3: fix panic about slab-out-of-bounds caused by ntfs_list_ea()
    ebcabbe6e00f fs/ntfs3: Fix possible null-pointer dereference in hdr_find_e()
    a1f9acb20402 fs/ntfs3: Fix OOB read in ntfs_init_from_boot
    40cadbcba00c mm: slab: Do not create kmalloc caches smaller than arch_slab_minalign()
    a9feea2fee9c selftests: mptcp: join: no RST when rm subflow/addr
    f080044ecc35 mptcp: more conservative check for zero probes
    b454bd5583a7 tcp: check mptcp-level constraints for backlog coalescing
    6952b951ac9b audit,io_uring: io_uring openat triggers audit reference count underflow
    a672863f5645 x86: KVM: SVM: refresh AVIC inhibition in svm_leave_nested()
    7996dc48ba78 x86: KVM: SVM: add support for Invalid IPI Vector interception
    94805f9d3a3f x86: KVM: SVM: always update the x2avic msr interception
    3365b42624bf KVM: x86: Constrain guest-supported xfeatures only at KVM_GET_XSAVE{2}
    3de2cf8d8287 KVM: x86/pmu: Truncate counter value to allowed width on write
    4d16224bcc3b x86/fpu: Allow caller to constrain xfeatures when copying to uabi buffer
    11b975cb82cc x86/sev: Check for user-space IOIO pointing to kernel space
    dcb55b683118 x86/sev: Check IOBM for IOIO exceptions from user-space
    f44a58134e6a x86/sev: Disable MMIO emulation from user mode
    ecaf25786553 KVM: x86: Mask LVTPC when handling a PMI
    9379a0ef1852 regmap: fix NULL deref on lookup
    bb6cacc439dd nfc: nci: fix possible NULL pointer dereference in send_acknowledge()
    e7acd6209f21 btrfs: fix stripe length calculation for non-zoned data chunk allocation
    c60f54a8868d net/smc: return the right falback reason when prefix checks fail
    74dcd829d94f ice: reset first in crash dump kernels
    9e1dd9401dff ice: Fix safe mode when DDP is missing
    df23c09a7441 ice: fix over-shifted variable
    06a5e7bf1cab Bluetooth: hci_conn: Fix modifying handle while aborting
    5b7a24872c2a Bluetooth: avoid memcmp() out of bounds warning
    75d889f69238 Bluetooth: hci_event: Fix coding style
    c4fb6456420a Bluetooth: vhci: Fix race when opening vhci device
    746dbb0fc639 Bluetooth: Fix a refcnt underflow problem for hci_conn
    2f6495fe89e8 Bluetooth: Reject connection with the device which has same BD_ADDR
    0d04728e2743 Bluetooth: hci_event: Ignore NULL link key

(From OE-Core rev: fecf482f619a4ae0aec37fb34000062d47cbb01e)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 6470f4c09ccc3e8a692cbaada0b60c0d61845ecc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
dc9e96a194 linux-yocto/6.5: update to v6.5.8
Updating  to the latest korg -stable release that comprises
the following commits:

    8bbe7c640d76 Linux 6.5.8
    46fd4e1547f9 ALSA: hda/realtek - Fixed two speaker platform
    ae0c44ce454d ovl: fix regression in showing lowerdir mount option
    a8187a9ca253 ovl: make use of ->layers safe in rcu pathwalk
    58240ade86f2 ovl: fix regression in parsing of mount options with escaped comma
    cd86498418ed fs: factor out vfs_parse_monolithic_sep() helper
    87be623442a8 fs: Fix kernel-doc warnings
    9baee1becd64 powerpc/64e: Fix wrong test in __ptep_test_and_clear_young()
    909c0bfa08d5 powerpc/8xx: Fix pte_access_permitted() for PAGE_NONE
    7b126f4402c2 dmaengine: mediatek: Fix deadlock caused by synchronize_irq()
    c6695a0ad6fb dmaengine: idxd: use spin_lock_irqsave before wait_event_lock_irq
    0c1773bf8f38 Revert "x86/smp: Put CPUs into INIT on shutdown if possible"
    a9b0e9e65106 usb: misc: onboard_hub: add support for Microchip USB2412 USB 2.0 hub
    91a9aaad5d8c usb: typec: qcom: Update the logic of regulator enable and disable
    f0c0314aac42 usb: cdnsp: Fixes issue with dequeuing not queued requests
    4bf1a9d20c65 usb: gadget: ncm: Handle decoding of multiple NTB's in unwrap call
    098bc0565250 usb: gadget: udc-xilinx: replace memcpy with memcpy_toio
    3039b7d5ebb7 usb: typec: ucsi: Clear EVENT_PENDING bit if ucsi_send_command fails
    522b7d736575 usb: typec: altmodes/displayport: Signal hpd low when exiting mode
    d386632939e0 usb: typec: ucsi: Fix missing link removal
    d68c74f3b2db RISC-V: Fix wrong use of CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK
    3431cfe773ac riscv: Remove duplicate objcopy flag
    fdd3ceb0001d coresight: Fix run time warnings while reusing ETR buffer
    8c4f6d1a8e4d counter: microchip-tcb-capture: Fix the use of internal GCLK logic
    837b24646cfd counter: chrdev: fix getting array extensions
    6a4a432e616f riscv: Only consider swbp/ss handlers for correct privileged mode
    27f69c85f445 scsi: ufs: core: Correct clear TM error log
    d2180b58a8a1 pinctrl: avoid unsafe code pattern in find_pinctrl()
    a473943294f1 dma-buf: add dma_fence_timestamp helper
    da9de0b714d5 cgroup: Remove duplicates in cgroup v1 tasks file
    c3239301ef7a usb: typec: ucsi: Use GET_CAPABILITY attributes data to set power supply scope
    92437349c0f0 power: supply: qcom_battmgr: fix enable request endianness
    fbda26ff92e0 power: supply: qcom_battmgr: fix battery_id type
    704e0e2a0c60 can: sja1000: Always restart the Tx queue after an overrun
    fc9ea80fa4e9 nfp: flower: avoid rmmod nfp crash issues
    f7c949fa298f block: Don't invalidate pagecache for invalid falloc modes
    2405f64a95a7 mctp: perform route lookups under a RCU read-side lock
    1c95574350cd tee: amdtee: fix use-after-free vulnerability in amdtee_close_session
    b8f18fa39cec Input: goodix - ensure int GPIO is in input for gpio_count == 1 && gpio_int_idx == 0 case
    eb2b6503a6ff Input: xpad - add HyperX Clutch Gladiate Support
    8a2c1970a178 Input: i8042 - add Fujitsu Lifebook E5411 to i8042 quirk table
    9832f2274abe Input: xpad - add PXN V900 support
    eb12a7d348ed Input: psmouse - fix fast_reconnect function for PS/2 mode
    e528b1b9d607 Input: powermate - fix use-after-free in powermate_config_complete
    093f82c2b56b ceph: fix type promotion bug on 32bit systems
    afe8dcef4b7a ceph: fix incorrect revoked caps assert in ceph_fill_file_size()
    707ee6525987 libceph: use kernel_connect()
    70f6756ad96d powerpc/47x: Fix 47x syscall return crash
    e28ca99f2f9c powerpc/pseries: Fix STK_PARAM access in the hcall tracing code
    b6ab7f19a44f thunderbolt: Restart XDomain discovery handshake after failure
    9828a7fa65a6 thunderbolt: Correct TMU mode initialization from hardware
    7525edf6aca5 thunderbolt: Check that lane 1 is in CL0 before enabling lane bonding
    5e9e8b6448f4 thunderbolt: Workaround an IOMMU fault on certain systems with Intel Maple Ridge
    3953f7ca6521 mcb: remove is_added flag from mcb_device struct
    cd287cc208df x86/alternatives: Disable KASAN in apply_alternatives()
    12f8e4d71d99 x86/cpu: Fix AMD erratum #1485 on Zen4-based CPUs
    f71edacbd4f9 perf/x86/lbr: Filter vsyscall addresses
    f40723f20839 ksmbd: not allow to open file if delelete on close bit is set
    77d616b2b4ed binder: fix memory leaks of spam and pending work
    8459746f889d serial: core: Fix checks for tx runtime PM state
    02c7efd75c61 serial: 8250_omap: Fix errors with no_console_suspend
    031ddb94d4ef serial: Reduce spinlocked portion of uart_rs485_config()
    a20d0faed2f4 ACPI: EC: Add quirk for the HP Pavilion Gaming 15-dk1xxx
    351a16dff55b ACPI: resource: Add TongFang GM6BGEQ, GM6BG5Q and GM6BG0Q to irq1_edge_low_force_override[]
    e7a8ce872214 ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CBA
    1474b39f9617 drm/vmwgfx: Keep a gem reference to user bos in surfaces
    65059dc00a79 drm/amd/display: Don't set dpms_off for seamless boot
    ea7596e54ba9 drm/amdgpu: add missing NULL check
    d8bb7861a764 drm/atomic-helper: relax unregistered connector check
    7e34cec74ee1 drm/tiny: correctly print `struct resource *` on error
    8abd2793db0f drm: Do not overrun array in drm_gem_get_pages()
    5ecce079d8ef arm64: dts: mediatek: mt8195-demo: update and reorder reserved memory regions
    b2b2706b149d arm64: dts: mediatek: mt8195-demo: fix the memory size to 8GB
    a4442f43569c media: subdev: Don't report V4L2_SUBDEV_CAP_STREAMS when the streams API is disabled
    bcf670d1f6b3 iio: addac: Kconfig: update ad74413r selections
    5ad7badddf52 iio: adc: ad7192: Correct reference voltage
    96e1752330df iio: pressure: ms5611: ms5611_prom_is_valid false negative bug
    a934a1a2b5ac iio: pressure: dps310: Adjust Timeout Settings
    727115b7c668 iio: admv1013: add mixer_vgate corner cases
    197f50f9699d iio: dac: ad3552r: Correct device IDs
    7488449fce1b iio: adc: imx8qxp: Fix address for command buffer registers
    833423930050 iio: cros_ec: fix an use-after-free in cros_ec_sensors_push_data()
    8a80ebbdc490 iio: imu: bno055: Fix missing Kconfig dependencies
    a130c5dacfe4 iio: pressure: bmp280: Fix NULL pointer exception
    4c7f9ce4e1ed usb: musb: Modify the "HWVers" register address
    9f13422e080b usb: musb: Get the musb_qh poniter after musb_giveback
    136f69a04e71 usb: hub: Guard against accesses to uninitialized BOS descriptors
    d33756339fe2 usb: cdns3: Modify the return value of cdns_set_active () to void when CONFIG_PM_SLEEP is disabled
    c39cb50e1b8a usb: dwc3: Soft reset phy on probe for host
    92d68868386d net: usb: dm9601: fix uninitialized variable use in dm9601_mdio_read
    41d00825cbff xhci: Preserve RsvdP bits in ERSTBA register correctly
    c247dfde7e40 xhci: Clear EHB bit only at end of interrupt handler
    c4ea3c85a64a xhci: track port suspend state correctly in unsuccessful resume cases
    acf5731ea0de usb: xhci: xhci-ring: Use sysdev for mapping bounce buffer
    86b3ba53b81d dmaengine: stm32-mdma: set in_flight_bytes in case CRQA flag is set
    70641b112b5b dmaengine: stm32-mdma: use Link Address Register to compute residue
    02544433d143 dmaengine: stm32-dma: fix residue in case of MDMA chaining
    fa03b3920caa dmaengine: stm32-dma: fix stm32_dma_prep_slave_sg in case of MDMA chaining
    f862dcfa849f dmaengine: stm32-mdma: abort resume if no ongoing transfer
    56f16bda27aa ovl: temporarily disable appending lowedirs
    8eaa7650056d riscv: signal: fix sigaltstack frame size checking
    c24f3b78692d workqueue: Override implicit ordered attribute in workqueue_apply_unbound_cpumask()
    63ca6c516fe6 rswitch: Fix imbalance phy_power_off() calling
    8911d3485cec rswitch: Fix renesas_eth_sw_remove() implementation
    7164d177bd16 octeontx2-pf: Fix page pool frag allocation warning
    6584eba7688d nfc: nci: assert requested protocol is valid
    843e69515b04 af_packet: Fix fortified memcpy() without flex array.
    84a6f89acb77 pinctrl: renesas: rzn1: Enable missing PINMUX
    e8dc72cb8312 net: tcp: fix crashes trying to free half-baked MTU probes
    806f8e051903 net/smc: Fix pos miscalculation in statistics
    d1af8a39cf83 net: nfc: fix races in nfc_llcp_sock_get() and nfc_llcp_sock_get_sn()
    cf5b41a81fee s390/bpf: Fix unwinding past the trampoline
    beb59c1a3296 s390/bpf: Fix clobbering the caller's backchain in the trampoline
    96217b5df8ae net/mlx5e: Again mutually exclude RX-FCS and RX-port-timestamp
    915a812423ed net/smc: Fix dependency of SMC on ISM
    9c22611716b1 ixgbe: fix crash with empty VF macvlan list
    78004df64a76 drm/panel: boe-tv101wum-nl6: Completely pull GPW to VGL before TP term
    946b595277a7 net/mlx5e: macsec: use update_pn flag instead of PN comparation
    5bf8bd49315a net: phy: mscc: macsec: reject PN update requests
    f74aa471ee76 net: macsec: indicate next pn update when offloading
    e0a9630ad1d5 octeontx2-pf: mcs: update PN only when update_pn is true
    90baaf9ced76 net: refine debug info in skb_checksum_help()
    7067ebaf98a2 bpf: Fix verifier log for async callback return values
    67394149d7c4 drm/vmwgfx: fix typo of sizeof argument
    50c28a3bfe6e xdp: Fix zero-size allocation warning in xskq_create()
    5b01f4c71a03 riscv, bpf: Track both a0 (RISC-V ABI) and a5 (BPF) return values
    7f6ef07f8ab5 riscv, bpf: Sign-extend return values
    82d52f300e48 xen-netback: use default TX queue size for vifs
    a0cde56933f2 mlxsw: fix mlxsw_sp2_nve_vxlan_learning_set() return type
    becf5c147198 ieee802154: ca8210: Fix a potential UAF in ca8210_probe
    105abd68ad8f ravb: Fix use-after-free issue in ravb_tx_timeout_work()
    b3b8f0ea74cf ravb: Fix up dma_free_coherent() call in ravb_remove()
    f776656844b1 devlink: Hold devlink lock on health reporter dump get
    6dd5b1a37a73 arm64: dts: mediatek: mt8195: Set DSU PMU status to fail
    340e23477773 arm64: dts: mediatek: fix t-phy unit name
    2463f7061ce6 can: sun4i_can: Only show Kconfig if ARCH_SUNXI is set
    ed545e8ccc85 can: isotp: isotp_sendmsg(): fix TX state detection and wait behavior
    96c8f1141055 net: dsa: qca8k: fix potential MDIO bus conflict when accessing internal PHYs via management frames
    9515695b6a9d net: dsa: qca8k: fix regmap bulk read/write methods on big endian systems
    c2d7c79898b4 phy: lynx-28g: serialize concurrent phy_set_mode_ext() calls to shared registers
    1c68986b6950 phy: lynx-28g: lock PHY while performing CDR lock workaround
    3dea2f73f171 phy: lynx-28g: cancel the CDR check work item on the remove path
    ca98df1efda0 drm/msm/dpu: fail dpu_plane_atomic_check() based on mdp clk limits
    91f31c14f299 drm/msm/dp: Add newlines to debug printks
    4c90ae0ef321 drm/msm/dpu: change _dpu_plane_calc_bw() to use u64 to avoid overflow
    06b722ee3141 drm/msm/dsi: fix irq_of_parse_and_map() error checking
    66b54db0e8a4 drm/msm/dsi: skip the wait for video mode done if not applicable
    b945326b569f drm/msm/dp: do not reinitialize phy unless retry during link training
    098c06b6903c pinctrl: starfive: jh7110: Fix failure to set irq after CONFIG_PM is enabled
    c9d7cac0fd27 pinctrl: nuvoton: wpcm450: fix out of bounds write
    44ec7bd0bd83 ALSA: hda/realtek - ALC287 merge RTK codec with CS CS35L41 AMP
    4654dd54a0fa ALSA: hda/realtek - ALC287 I2S speaker platform support
    92e54a0648dd ALSA: hda/realtek: Add quirk for mute LEDs on HP ENVY x360 15-eu0xxx
    b94e563ae542 ALSA: hda/realtek: Add quirk for HP Victus 16-d1xxx to enable mute LED
    8cdbfcefbb37 ASoC: Intel: soc-acpi: Add entry for sof_es8336 in MTL match table.
    a2511b24670a ASoC: Intel: sof_sdw: add support for SKU 0B14
    3aa5bd4b8a2e ASoC: fsl_sai: Don't disable bitclock for i.MX8MP
    0cee8c73ea35 ASoC: Intel: soc-acpi: Add entry for HDMI_In capture support in MTL match table
    934c889a945b ASoC: Intel: soc-acpi: fix Dell SKU 0B34
    838cf77c7449 ASoC: simple-card-utils: fixup simple_util_startup() error handling
    ba1e7575a0bb ASoC: SOF: amd: fix for firmware reload failure after playback
    8380e411ab73 ALSA: hda/realtek: Change model for Intel RVP board
    9da0985b9f57 ALSA: hda: cs35l41: Cleanup and fix double free in firmware request
    235805a7a788 ALSA: usb-audio: Fix microphone sound on Nexigo webcam.
    f64401dec39c ALSA: usb-audio: Fix microphone sound on Opencomm2 Headset
    8a8ca58b89d5 KEYS: trusted: Remove redundant static calls usage
    b50b1d7e76aa irqchip: renesas-rzg2l: Fix logic to clear TINT interrupt source
    380aa2dfb419 dt-bindings: interrupt-controller: renesas,rzg2l-irqc: Update description for '#interrupt-cells' property
    862e2b015bbd arm64: dts: qcom: sm8150: extend the size of the PDC resource
    2f89f1515e13 net: prevent address rewrite in kernel_bind()
    bbbf096ea227 ata: libata-scsi: Disable scsi device manage_system_start_stop
    567558b4350e ASoC: hdmi-codec: Fix broken channel map reporting
    a70aec77d89b ASoC: amd: yc: Fix non-functional mic on Lenovo 82YM
    59073dfbc666 dm crypt: Fix reqsize in crypt_iv_eboiv_gen
    2a1ddddba654 quota: Fix slow quotaoff
    f7b2c7d9831a HID: logitech-hidpp: Fix kernel crash on receiver USB disconnect
    705c1eb72b74 ata: pata_parport: implement set_devctl
    cbb170a68ca4 ata: pata_parport: fix pata_parport_devchk
    e958cc021262 scsi: Do not rescan devices with a suspended queue
    4e76d4585daf drm/amd/display: apply edge-case DISPCLK WDIVIDER changes to master OTG pipes only
    f4b4b7448ccc drm/amd/display: implement pipe type definition and adding accessors
    50f84c0b1e2c media: dt-bindings: imx7-csi: Make power-domains not required for imx8mq
    fe76d3e58a81 platform/x86: hp-wmi:: Mark driver struct with __refdata to prevent section mismatch warning
    c8647e25346e drm/amdgpu: Fix a memory leak
    fdae43a5b6ce cpuidle, ACPI: Evaluate LPI arch_flags for broadcast timer
    1d61ce0a321f drm/i915: Register engines early to avoid type confusion
    c6e3023579de platform/x86: think-lmi: Fix reference leak
    1cd61412f98d perf/arm-cmn: Fix the unhandled overflow status of counter 4 to 7
    7e879676635c RDMA/cxgb4: Check skb value for failure to allocate
    9dcc8f4dbe14 net: stmmac: remove unneeded stmmac_poll_controller

(From OE-Core rev: 3b37a26de851557db4e2705163f5316ed5a4ab36)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 76b9b8fde13c5345f0b4735c230f1f19133bf337)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
68cbaa6bbf linux-yocto/6.1: update to v6.1.60
Updating  to the latest korg -stable release that comprises
the following commits:

    32c9cdbe383c Linux 6.1.60
    7f5bb254be8d selftests: mptcp: join: no RST when rm subflow/addr
    0e0123e0e53d selftests: mptcp: join: correctly check for no RST
    300447c5722a mptcp: avoid sending RST when closing the initial subflow
    c04f416730ac Bluetooth: hci_sock: Correctly bounds check and pad HCI_MON_NEW_INDEX name
    a429d65428d5 Bluetooth: hci_sock: fix slab oob read in create_monitor_event
    46de539282f2 net: move altnames together with the netdevice
    c1d531aa095b phy: mapphone-mdm6600: Fix pinctrl_pm handling for sleep pins
    13a45130bb17 phy: mapphone-mdm6600: Fix runtime PM for remove
    7fcce3258b6e phy: mapphone-mdm6600: Fix runtime disable on probe
    4eac2cf444af gpio: vf610: mask the gpio irq in system suspend and support wakeup
    9b0f8a9dfdac gpio: vf610: make irq_chip immutable
    1f38ead73f25 tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols
    e9b4b7256736 kallsyms: Add helper kallsyms_on_each_match_symbol()
    da359f699f59 kallsyms: Reduce the memory occupied by kallsyms_seqs_of_names[]
    3918cada8f1b serial: 8250: omap: convert to modern PM ops
    70a841eb4f99 serial: 8250: omap: Move uart_write() inside PM section
    6df4c9dee011 drm/bridge: ti-sn65dsi86: Associate DSI device lifetime with auxiliary device
    3d57f6ac641c ASoC: pxa: fix a memory leak in probe()
    14a1a7beb3d3 gpio: vf610: set value before the direction to avoid a glitch
    7ec224d98070 platform/x86: asus-wmi: Map 0x2a code, Ignore 0x2b and 0x2c events
    baf191abecf7 platform/x86: asus-wmi: Only map brightness codes when using asus-wmi backlight control
    4186c79c130d platform/x86: asus-wmi: Change ASUS_WMI_BRN_DOWN code from 0x20 to 0x2e
    52d54f1d4e03 platform/x86: intel-uncore-freq: Conditionally create attribute for read frequency
    8a4b575d00ef platform/surface: platform_profile: Propagate error if profile registration fails
    fec769b9fd25 s390/cio: fix a memleak in css_alloc_subchannel
    7241c2627c14 selftests/ftrace: Add new test case which checks non unique symbol
    324c31b0e0d7 s390/pci: fix iommu bitmap allocation
    f6952655a612 perf: Disallow mis-matched inherited group reads
    908c62800584 USB: serial: option: add Fibocom to DELL custom modem FM101R-GL
    acced163ab6a USB: serial: option: add entry for Sierra EM9191 with new firmware
    1dce40c9e6d8 USB: serial: option: add Telit LE910C4-WWX 0x1035 composition
    59aa39697fc2 HID: input: map battery system charging
    ea0e0473093f KVM: x86/mmu: Stop zapping invalidated TDP MMU roots asynchronously
    3519cee444bc nvme-rdma: do not try to stop unallocated queues
    bec9cb90fee1 nvmet-auth: complete a request only after freeing the dhchap pointers
    0ec655ad659d nvme-pci: add BOGUS_NID for Intel 0a54 device
    2c0b40c310a5 nvme: sanitize metadata bounce buffer for reads
    a54974b0076f nfs42: client needs to strip file mode's suid/sgid bit after ALLOCATE op
    8d69b47443e8 ACPI: irq: Fix incorrect return value in acpi_register_gsi()
    c462bf4ef88a NFSv4.1: fixup use EXCHGID4_FLAG_USE_PNFS_DS for DS server
    ab65424d618b pNFS/flexfiles: Check the layout validity in ff_layout_mirror_prepare_stats
    730bbbbe16b7 pNFS: Fix a hang in nfs4_evict_inode()
    fbd8b28fe4a2 Revert "pinctrl: avoid unsafe code pattern in find_pinctrl()"
    c4b7b119c56c mmc: core: Capture correct oemid-bits for eMMC cards
    85664ad23f8b mmc: core: sdio: hold retuning if sdio in 1-bit mode
    aaa476a7ad50 mmc: mtk-sd: Use readl_poll_timeout_atomic in msdc_reset_hw
    43f588b82070 mmc: sdhci-pci-gli: fix LPM negotiation so x86/S0ix SoCs can suspend
    55c2428658ec dt-bindings: mmc: sdhci-msm: correct minimum number of clocks
    73915d26b474 mtd: physmap-core: Restore map_rom fallback
    578687563e71 mtd: spinand: micron: correct bitmask for ecc status
    8b2b755a1a52 mtd: rawnand: arasan: Ensure program page operations are successful
    58277212f576 mtd: rawnand: marvell: Ensure program page operations are successful
    250feed792f8 mtd: rawnand: pl353: Ensure program page operations are successful
    58454486132c mtd: rawnand: qcom: Unmap the right resource upon probe failure
    a7f5558ec2db net/smc: fix smc clc failed issue when netdevice not in init_net
    2efcdbef13c9 tcp_bpf: properly release resources on error paths
    c3e70048ac25 selftests: openvswitch: Add version check for pyroute2
    a1a9e57037e0 Bluetooth: hci_event: Fix using memcmp when comparing keys
    758610516f0b ice: Remove redundant pci_enable_pcie_error_reporting()
    ec9bc89a0188 tcp: allow again tcp_disconnect() when threads are waiting
    9dc02f41d54e net/tls: split tls_rx_reader_lock
    76f96854aa25 net/mlx5e: Don't offload internal port if filter device is out device
    107ff0034bbc net/mlx5: Handle fw tracer change ownership event based on MTRC
    0aa1e83a20f1 net/mlx5: E-switch, register event handler before arming the event
    c21bff1c99b6 xfrm6: fix inet6_dev refcount underflow problem
    d91723f6ca3c net: xfrm: skip policies marked as dead while reinserting policies
    df2cc87f2c38 fprobe: Fix to ensure the number of active retprobes is not zero
    f177a579d2e8 fprobe: Add nr_maxactive to specify rethook_node pool size
    0806cb1e6c63 fprobe: Pass entry_data to handlers
    bacf8c749add cpufreq: schedutil: Update next_freq when cpufreq_limits change
    62733bbae12c platform/x86: touchscreen_dmi: Add info for the Positivo C4128B
    60dc7e39dff8 HID: nintendo: reinitialize USB Pro Controller after resuming from suspend
    ef8cdee81ef5 HID: multitouch: Add required quirk for Synaptics 0xcd7e device
    2a2df4f74f37 drm/amd/pm: add unique_id for gc 11.0.3
    1869638a1444 btrfs: error out when reallocating block for defrag using a stale transaction
    f174c8d2c634 btrfs: error when COWing block from a root that is being deleted
    c833f1e28d13 btrfs: error out when COWing block using a stale transaction
    9d99acb6a162 btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c
    c3657e5fa7b6 drm: panel-orientation-quirks: Add quirk for One Mix 2S
    ffbb01fe9a15 ipv4/fib: send notify when delete source address routes
    52080d6edc9a sky2: Make sure there is at least one frag_addr available
    d63d39e7f95e regulator/core: Revert "fix kobject release warning and memory leak in regulator_register()"
    2353f6476233 wifi: cfg80211: avoid leaking stack data into trace
    2fd88f5632e1 wifi: mac80211: allow transmitting EAPOL frames with tainted key
    9285fea3a22e wifi: mac80211: work around Cisco AP 9115 VHT MPDU length
    dbbb6090c9b2 wifi: cfg80211: Fix 6GHz scan configuration
    a55d53ad5c86 Bluetooth: hci_core: Fix build warnings
    aad0760c2607 Bluetooth: Avoid redundant authentication
    7045675fc916 Bluetooth: btusb: add shutdown function for QCA6174
    7d823a1071c6 HID: holtek: fix slab-out-of-bounds Write in holtek_kbd_input_event
    f45752f1eb91 HID: logitech-hidpp: Add Bluetooth ID for the Logitech M720 Triathlon mouse
    e045b6a92129 wifi: iwlwifi: Ensure ack flag is properly cleared.
    eb7ae9ed63c6 wifi: mwifiex: Sanity check tlv_len and tlv_bitmap_len
    b812b3169628 tracing: relax trace_event_eval_update() execution with cond_resched()
    1c859abdd7de ata: libata-eh: Fix compilation warning in ata_eh_link_report()
    e4ce5ce29a1c ata: libata-core: Fix compilation warning in ata_dev_config_ncq()
    5075570a3ede gpio: timberdale: Fix potential deadlock on &tgpio->lock
    d0dab9dd327a overlayfs: set ctime when setting mtime and atime
    6133f63d4d87 i2c: mux: Avoid potential false error message in i2c_mux_add_adapter
    febcad3d32ab btrfs: initialize start_slot in btrfs_log_prealloc_extents
    563853bf3b84 btrfs: return -EUCLEAN for delayed tree ref with a ref count not equals to 1
    8a4e34fe1baa btrfs: prevent transaction block reserve underflow when starting transaction
    c194e184a899 fs-writeback: do not requeue a clean inode having skipped pages
    a7354d90642d ARM: dts: ti: omap: Fix noisy serial with overrun-throttle-ms for mapphone
    1c972cb674e3 pwr-mlxbf: extend Kconfig to include gpio-mlxbf3 dependency
    82a93c65a4e0 iio: adc: ad7192: Correct reference voltage
    ee1d783be55d iio: adc: ad7192: Simplify using devm_regulator_get_enable()
    3b02dbd1cd54 iio: cros_ec: fix an use-after-free in cros_ec_sensors_push_data()
    7bca0af538a4 iio: core: introduce iio_device_{claim|release}_buffer_mode() APIs
    681c8a2c238b serial: 8250_omap: Fix errors with no_console_suspend
    9424a0a45691 serial: 8250: omap: Fix imprecise external abort for omap_8250_pm()
    7067c3cf0823 serial: Reduce spinlocked portion of uart_rs485_config()
    147156b19cd0 serial: Rename uart_change_speed() to uart_change_line_settings()
    e4df8000bdd3 serial: Move uart_change_speed() earlier
    4d382ba65ddb usb: misc: onboard_hub: add support for Microchip USB2412 USB 2.0 hub
    8e939c21f60f usb: misc: onboard_usb_hub: add Genesys Logic GL3523 hub support
    a46907e1f6b6 usb: misc: onboard_usb_hub: add Genesys Logic GL852G hub support
    a2431e7e8bdd usb: misc: onboard_usb_hub: add Genesys Logic GL850G hub support
    5e7275e43292 selftests/mm: fix awk usage in charge_reserved_hugetlb.sh and hugetlb_reparenting_test.sh that may cause error
    673edcffa096 net: check for altname conflicts when changing netdev's netns
    9307f5f59a4a net: fix ifname in netlink ntf during netns move
    b92433493bcc net: avoid UAF on deleted altname
    1cf912054a08 net: pktgen: Fix interface flags printing
    2fb84f52142d net: phy: bcm7xxx: Add missing 16nm EPHY statistics
    e1512ff1ecb8 netfilter: nf_tables: revert do not remove elements if set backend implements .abort
    c2eaa8319f99 netfilter: nf_tables: do not remove elements if set backend implements .abort
    0e8cdddf010b netlink: Correct offload_xstats size
    0697918ec0c0 netfilter: nft_set_rbtree: .deactivate fails if element has expired
    d9d289b78c51 selftests: netfilter: Run nft_audit.sh in its own netns
    0bb15735121d selftests: openvswitch: Catch cases where the tests are killed
    e0914e5a05dd neighbor: tracing: Move pin6 inside CONFIG_IPV6=y section
    d80bc191420a net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve
    ec7393fe63cb bonding: Return pointer to data after pull on skb
    3065fabd17c5 net: dsa: bcm_sf2: Fix possible memory leak in bcm_sf2_mdio_register()
    9c3d276fa866 i40e: prevent crash on probe if hw registers have invalid values
    f0ab9b0922fc octeon_ep: update BQL sent bytes before ringing doorbell
    1a68d440112a net: usb: smsc95xx: Fix an error code in smsc95xx_reset()
    2c6451d665fb ipv4: fib: annotate races around nh->nh_saddr_genid and nh->nh_saddr
    9570bee67850 tun: prevent negative ifindex
    8b9c79c0ecd2 tcp: Fix listen() warning with v4-mapped-v6 address.
    f534a513e8c3 tcp: tsq: relax tcp_small_queue_check() when rtx queue contains a single skb
    4e1f3457e9af tcp: fix excessive TLP and RACK timeouts from HZ rounding
    df5ee37bf29d net: rfkill: gpio: prevent value glitch during probe
    2a6fc637c625 net: ipv6: fix return value check in esp_remove_trailer
    55d794cef353 net: ipv4: fix return value check in esp_remove_trailer
    49b9165ead33 wifi: cfg80211: use system_unbound_wq for wiphy work
    405dbaf04981 xfrm: interface: use DEV_STATS_INC()
    b372db2b8d18 xfrm: fix a data-race in xfrm_gen_index()
    3065fa2cdd7a xfrm: fix a data-race in xfrm_lookup_with_ifid()
    2c7ec9e9ea70 qed: fix LL2 RX buffer allocation
    cc87f4db1417 ASoC: codecs: wcd938x: fix resource leaks on bind errors
    8092aed62375 ASoC: codecs: wcd938x: fix unbind tear down order
    b2974b20e40d ASoC: codecs: wcd938x: drop bogus bind error handling
    569afdedde68 ASoC: codecs: wcd938x-sdw: fix runtime PM imbalance on probe errors
    0d912daab475 ASoC: codecs: wcd938x-sdw: fix use after free on driver unbind
    d496b6638c20 ALSA: hda/relatek: Enable Mute LED on HP Laptop 15s-fq5xxx
    086babbbf8e0 ALSA: hda/realtek: Add quirk for ASUS ROG GU603ZV
    bcf883e244dd ALSA: hda/realtek - Fixed ASUS platform headset Mic issue
    a9519099e323 drm/mediatek: Correctly free sg_table in gem prime vmap
    add2eeda1d6e drm/i915: Retry gtt fault when out of fence registers
    f691ec5a5482 nvmet-tcp: Fix a possible UAF in queue intialization setup
    02322c5177e8 netfilter: nft_payload: fix wrong mac header matching
    36a315c923e0 fs/ntfs3: fix deadlock in mark_as_free_ex
    c1f2638e315b fs/ntfs3: fix panic about slab-out-of-bounds caused by ntfs_list_ea()
    fb80a28fef2b fs/ntfs3: Fix possible null-pointer dereference in hdr_find_e()
    d4ae85b883f3 mptcp: more conservative check for zero probes
    80990979a946 tcp: check mptcp-level constraints for backlog coalescing
    f7e65c03d5bf audit,io_uring: io_uring openat triggers audit reference count underflow
    a556a0df8df0 x86: KVM: SVM: refresh AVIC inhibition in svm_leave_nested()
    54f030271d6b x86: KVM: SVM: add support for Invalid IPI Vector interception
    482565df3508 KVM: x86: Constrain guest-supported xfeatures only at KVM_GET_XSAVE{2}
    20695711e298 x86/fpu: Allow caller to constrain xfeatures when copying to uabi buffer
    57d0639f60f1 x86/sev: Check for user-space IOIO pointing to kernel space
    def94eb9a804 x86/sev: Check IOBM for IOIO exceptions from user-space
    95ff590b8027 x86/sev: Disable MMIO emulation from user mode
    19ffa9b2515a KVM: x86: Mask LVTPC when handling a PMI
    d11cfd1f30d6 regmap: fix NULL deref on lookup
    d7dbdbe3800a nfc: nci: fix possible NULL pointer dereference in send_acknowledge()
    fb8e1608b0e5 btrfs: fix stripe length calculation for non-zoned data chunk allocation
    753ef5ef4c3b net/smc: return the right falback reason when prefix checks fail
    d994502fdc66 ice: reset first in crash dump kernels
    0f8d381adaa9 ice: fix over-shifted variable
    bbc5c96f8214 Bluetooth: avoid memcmp() out of bounds warning
    feffabdd0ace Bluetooth: hci_event: Fix coding style
    99ccf8d79bdd Bluetooth: vhci: Fix race when opening vhci device
    25e5d2883002 Bluetooth: Fix a refcnt underflow problem for hci_conn
    faa6366605d6 Bluetooth: Reject connection with the device which has same BD_ADDR
    8d76a44d2615 Bluetooth: hci_event: Ignore NULL link key
    84523aeeeaf9 igc: Fix race condition in PTP tx code
    ff996d61ddde igc: Add condition for qbv_config_change_errors counter
    cd7b19dc5f3c igc: Add qbv_config_change_errors counter
    88421f474136 igc: Remove reset adapter task for i226 during disable tsn config
    3c3418a58655 igc: enable Qbv configuration for 2nd GCL
    8420fe4dd2d9 igc: remove I226 Qbv BaseTime restriction
    db4677b35047 lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default

(From OE-Core rev: 8c769074d7303d96fbba6f09e5e9da7d0678daed)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 4ed9491931f90072f054db59e77472c1bc6a8ff4)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Bruce Ashfield
2aee74f610 linux-yocto/6.1: update to v6.1.59
Updating  to the latest korg -stable release that comprises
the following commits:

    7d24402875c7 Linux 6.1.59
    eb26fa974c77 ALSA: hda/realtek - Fixed two speaker platform
    54357fcafa73 powerpc/64e: Fix wrong test in __ptep_test_and_clear_young()
    0afcc9d4a16d powerpc/8xx: Fix pte_access_permitted() for PAGE_NONE
    9a995e11b23f dmaengine: mediatek: Fix deadlock caused by synchronize_irq()
    01b19fc6621d dmaengine: idxd: use spin_lock_irqsave before wait_event_lock_irq
    5b784489c815 x86/alternatives: Disable KASAN in apply_alternatives()
    033c0d5101e5 usb: cdnsp: Fixes issue with dequeuing not queued requests
    49fbc18378ae usb: gadget: ncm: Handle decoding of multiple NTB's in unwrap call
    e5588fb39152 usb: gadget: udc-xilinx: replace memcpy with memcpy_toio
    71d323072af7 usb: typec: ucsi: Clear EVENT_PENDING bit if ucsi_send_command fails
    4d85f1ce6ca4 usb: typec: altmodes/displayport: Signal hpd low when exiting mode
    bc6725085925 counter: microchip-tcb-capture: Fix the use of internal GCLK logic
    0e3953b57735 counter: chrdev: fix getting array extensions
    9f6b391b0486 scsi: ufs: core: Correct clear TM error log
    97306abdeaca pinctrl: avoid unsafe code pattern in find_pinctrl()
    d67b5a2b97b6 dma-buf: add dma_fence_timestamp helper
    cb8f1dd1b73c cgroup: Remove duplicates in cgroup v1 tasks file
    57e7696b7852 usb: typec: ucsi: Use GET_CAPABILITY attributes data to set power supply scope
    062f16c4dd69 nfp: flower: avoid rmmod nfp crash issues
    1db0724a01b5 mctp: perform route lookups under a RCU read-side lock
    60c3e7a00db9 tee: amdtee: fix use-after-free vulnerability in amdtee_close_session
    862aa9818153 Input: goodix - ensure int GPIO is in input for gpio_count == 1 && gpio_int_idx == 0 case
    fbfb99ac5d4a Input: i8042 - add Fujitsu Lifebook E5411 to i8042 quirk table
    9c6a11a05bc7 Input: xpad - add PXN V900 support
    211f71c1c0a7 Input: psmouse - fix fast_reconnect function for PS/2 mode
    2efe67c581a2 Input: powermate - fix use-after-free in powermate_config_complete
    4d6c1845cba2 ceph: fix type promotion bug on 32bit systems
    9f43481c0d85 ceph: fix incorrect revoked caps assert in ceph_fill_file_size()
    086d885c200d libceph: use kernel_connect()
    8ac2689502f9 powerpc/47x: Fix 47x syscall return crash
    434e3522b9bd thunderbolt: Restart XDomain discovery handshake after failure
    5d206a77d48a thunderbolt: Check that lane 1 is in CL0 before enabling lane bonding
    0cf7ee2cc6e6 thunderbolt: Workaround an IOMMU fault on certain systems with Intel Maple Ridge
    23122e0c0e5d mcb: remove is_added flag from mcb_device struct
    125f495fa66a x86/cpu: Fix AMD erratum #1485 on Zen4-based CPUs
    386398949765 perf/x86/lbr: Filter vsyscall addresses
    55b51187d257 ksmbd: not allow to open file if delelete on close bit is set
    ac2d5e70fbb1 ACPI: EC: Add quirk for the HP Pavilion Gaming 15-dk1xxx
    7aac2f2c0036 ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CBA
    f0410917561c drm/amd/display: Don't set dpms_off for seamless boot
    a61d905a8687 drm/amdgpu: add missing NULL check
    0fb82afee55f drm/atomic-helper: relax unregistered connector check
    5bab10496324 arm64: dts: mediatek: mt8195-demo: update and reorder reserved memory regions
    f17e00fb0c9f arm64: dts: mediatek: mt8195-demo: fix the memory size to 8GB
    ff42d244b372 iio: addac: Kconfig: update ad74413r selections
    7d4ff34b6c33 iio: pressure: ms5611: ms5611_prom_is_valid false negative bug
    b166ce527540 iio: pressure: dps310: Adjust Timeout Settings
    e93a7677f0ba iio: admv1013: add mixer_vgate corner cases
    8ab33ae244a9 iio: dac: ad3552r: Correct device IDs
    a6bd5e165382 iio: adc: imx8qxp: Fix address for command buffer registers
    92426b1f5f89 iio: imu: bno055: Fix missing Kconfig dependencies
    187939163b97 iio: pressure: bmp280: Fix NULL pointer exception
    88a204cc0c3d usb: musb: Modify the "HWVers" register address
    fecb419c62c6 usb: musb: Get the musb_qh poniter after musb_giveback
    fb9895ab9533 usb: hub: Guard against accesses to uninitialized BOS descriptors
    1edbf4b2850e usb: cdns3: Modify the return value of cdns_set_active () to void when CONFIG_PM_SLEEP is disabled
    357191036889 usb: dwc3: Soft reset phy on probe for host
    ea9ae69b0e11 net: usb: dm9601: fix uninitialized variable use in dm9601_mdio_read
    c5bfe67d9fa1 usb: xhci: xhci-ring: Use sysdev for mapping bounce buffer
    f049b10affc5 dmaengine: stm32-mdma: set in_flight_bytes in case CRQA flag is set
    721dbbabf14b dmaengine: stm32-mdma: use Link Address Register to compute residue
    fe15819408bc dmaengine: stm32-dma: fix residue in case of MDMA chaining
    1e3b981a25db dmaengine: stm32-dma: fix stm32_dma_prep_slave_sg in case of MDMA chaining
    8e7dfe9c2ac8 dmaengine: stm32-mdma: abort resume if no ongoing transfer
    0796c534242d tcp: enforce receive buffer memory limits by allowing the tcp window to shrink
    55027c1d99db workqueue: Override implicit ordered attribute in workqueue_apply_unbound_cpumask()
    853dda54ba59 nfc: nci: assert requested protocol is valid
    684accd26dff pinctrl: renesas: rzn1: Enable missing PINMUX
    f05befe5c441 net/smc: Fix pos miscalculation in statistics
    e4f2611f07c8 net: nfc: fix races in nfc_llcp_sock_get() and nfc_llcp_sock_get_sn()
    ab8075d3a4a8 net/mlx5e: Again mutually exclude RX-FCS and RX-port-timestamp
    04753d5ae209 ixgbe: fix crash with empty VF macvlan list
    89be6ad344f7 net/mlx5e: macsec: use update_pn flag instead of PN comparation
    a698195f3a60 net: phy: mscc: macsec: reject PN update requests
    0d86ad068c3e net: macsec: indicate next pn update when offloading
    50bce6a051e8 net: refine debug info in skb_checksum_help()
    30ca523f287e bpf: Fix verifier log for async callback return values
    e1f1e3cc5b3c drm/vmwgfx: fix typo of sizeof argument
    5bfc5a28b53f riscv, bpf: Sign-extend return values
    72ae13954633 riscv, bpf: Factor out emit_call for kernel and bpf context
    30a835460293 xen-netback: use default TX queue size for vifs
    469bef81293f mlxsw: fix mlxsw_sp2_nve_vxlan_learning_set() return type
    217efe32a452 ieee802154: ca8210: Fix a potential UAF in ca8210_probe
    6f6fa8061f75 ravb: Fix use-after-free issue in ravb_tx_timeout_work()
    3f9295ad7f94 ravb: Fix up dma_free_coherent() call in ravb_remove()
    cfe535ee694d arm64: dts: mediatek: mt8195: Set DSU PMU status to fail
    53c6dc71bf35 can: sun4i_can: Only show Kconfig if ARCH_SUNXI is set
    789d125c0ebb can: isotp: isotp_sendmsg(): fix TX state detection and wait behavior
    881050b25b1d net: dsa: qca8k: fix potential MDIO bus conflict when accessing internal PHYs via management frames
    6f901f8448c6 phy: lynx-28g: serialize concurrent phy_set_mode_ext() calls to shared registers
    e173d9a2e548 phy: lynx-28g: lock PHY while performing CDR lock workaround
    e52c81a9e370 phy: lynx-28g: cancel the CDR check work item on the remove path
    5f9d0edff203 drm/msm/dp: Add newlines to debug printks
    61b595ede9e3 drm/msm/dpu: change _dpu_plane_calc_bw() to use u64 to avoid overflow
    3979a9e572a3 drm/msm/dsi: fix irq_of_parse_and_map() error checking
    3de09684defa drm/msm/dsi: skip the wait for video mode done if not applicable
    82cb81ea9688 drm/msm/dp: do not reinitialize phy unless retry during link training
    6c18c386fd13 pinctrl: nuvoton: wpcm450: fix out of bounds write
    37157830a97f ALSA: hda/realtek - ALC287 merge RTK codec with CS CS35L41 AMP
    171b791cc231 ALSA: hda/realtek - ALC287 I2S speaker platform support
    a8b85e47e311 ALSA: hda/realtek: Add quirk for mute LEDs on HP ENVY x360 15-eu0xxx
    e225f67d49ff ALSA: hda/realtek: Add quirk for HP Victus 16-d1xxx to enable mute LED
    8f7bb2b77bc4 ASoC: fsl_sai: Don't disable bitclock for i.MX8MP
    aacc508dd37d ASoC: fsl_sai: MCLK bind with TX/RX enable bit
    8276d65cf7ad ASoC: Use of_property_read_bool() for boolean properties
    8611606c765d ASoC: Intel: soc-acpi: Add entry for sof_es8336 in MTL match table.
    4a250b349287 ASoC: Intel: sof_sdw: add support for SKU 0B14
    307bbbbb940d ASoC: Intel: soc-acpi: Add entry for HDMI_In capture support in MTL match table
    988fba279db0 ASoC: simple-card-utils: fixup simple_util_startup() error handling
    e3353ad7db52 ASoC: SOF: amd: fix for firmware reload failure after playback
    2aa53213b661 ALSA: hda/realtek: Change model for Intel RVP board
    4cb0984557b9 ALSA: usb-audio: Fix microphone sound on Nexigo webcam.
    0f44423e355e ALSA: usb-audio: Fix microphone sound on Opencomm2 Headset
    3746b878efde KEYS: trusted: Remove redundant static calls usage
    b86ac71abbc0 irqchip: renesas-rzg2l: Fix logic to clear TINT interrupt source
    d6844187507a dt-bindings: interrupt-controller: renesas,rzg2l-irqc: Update description for '#interrupt-cells' property
    f4eaaa30d007 arm64: dts: qcom: sm8150: extend the size of the PDC resource
    020958c946c0 net: prevent address rewrite in kernel_bind()
    8fcdf7da9d4b ata: libata-scsi: Disable scsi device manage_system_start_stop
    abc918831a08 ASoC: amd: yc: Fix non-functional mic on Lenovo 82YM
    12a820a9923c quota: Fix slow quotaoff
    fd72ac9556a4 HID: logitech-hidpp: Fix kernel crash on receiver USB disconnect
    87aa3ca49746 scsi: Do not rescan devices with a suspended queue
    342f321af833 platform/x86: hp-wmi:: Mark driver struct with __refdata to prevent section mismatch warning
    af21c9119a37 platform/x86: think-lmi: Fix reference leak
    1c8f6c7b8375 perf/arm-cmn: Fix the unhandled overflow status of counter 4 to 7
    3aade96e0c93 RDMA/cxgb4: Check skb value for failure to allocate
    f175665385fe drm/i915: Don't set PIPE_CONTROL_FLUSH_L3 for aux inval
    f2060a3a5961 mptcp: fix delegated action races
    b67d7b1bfc46 net: mana: Fix TX CQE error handling
    adc4d740ad9e Linux 6.1.58
    38fd36728f40 lib/test_meminit: fix off-by-one error in test_pages()
    ff74bdc83847 Revert "NFS: Fix error handling for O_DIRECT write scheduling"
    b0cee281c433 Revert "NFS: Fix O_DIRECT locking issues"
    ebf5841ac1ed Revert "NFS: More O_DIRECT accounting fixes for error paths"
    506cf335d95a Revert "NFS: Use the correct commit info in nfs_join_page_group()"
    e8db8b55815d Revert "NFS: More fixes for nfs_direct_write_reschedule_io()"

(From OE-Core rev: 9bfdc8fdd0a2901e29eedc90b425a59794f9a7a4)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit dfe38212221373737ac8a8a243976bd627524eea)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Wang Mingyu
d34067581f xserver-xorg: upgrade 21.1.8 -> 21.1.9
Changelog:
===========
-present: Send a PresentConfigureNotify event for destroyed windows
-Switch to libbsd-overlay
-Xi/randr: fix handling of PropModeAppend/Prepend
-mi: reset the PointerWindows reference on screen switch

(From OE-Core rev: 84236ab1d21b4df62d8ba074fe9f4ac4719a7333)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 82e87caedf84dcf5a933dbfc92718ac1cdd29734)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Wang Mingyu
51a049a282 glib-2.0: upgrade 2.78.0 -> 2.78.1
Changelog:
=========
* Fix truncating files when "g_file_set_contents_full()" is called without
  "G_FILE_SET_CONTENTS_CONSISTENT"

* Fix "-Dlibelf=disabled" on Linux

* Bugs fixed:
  - #3105 NetworkManager 1.44.0 crashes repeatedly with glib 2.78.0
  - #3111 gsubprocess-testprog.c: build error with cygwin (sys/ptrace.h: No such
    file or directory)
  - #3116 gio clears modification time in microseconds when setting with
    "set_modification_date_time"
  - #3120 Build of glib 2.78.0 ignores -Dlibelf=disabled
  - #3128 glib-2.78.0 fails at gio/tests/gsubprocess.p/gsubprocess.c.o
  - #3130 Segfault when creating GIO GPropertyAction without properties
  - #3144 "g_file_set_contents_full()" doesn't truncate the file (without
    "G_FILE_SET_CONTENTS_CONSISTENT")
  - !3576 guniprop.c: Avoid creating (temporarily) out-of-bounds pointers
  - !3579 Fixes for integer cast warnings when targeting CHERI
  - !3580 Fix test_find_program on FreeBSD
  - !3589 gconstructor.h: Ensure [c|d]tor prototypes are present for MSVC
  - !3594 Fix gutils-user-database test on macOS
  - !3596 Add value annotation to G_TYPE_FUNDAMENTAL_MAX
  - !3601 meson: Fix Windows build with PCRE2 as sibling subproject
  - !3604 Backport !3589 "gconstructor.h: Ensure [c|d]tor prototypes are present
    for MSVC" to glib-2-78
  - !3608 Backport !3587 "glocalfileinfo: Preserve microseconds for
    access/modify times" to glib-2-78
  - !3609 Backport !3607 "Make sure the "GTask" is freed on a graceful
    disconnect" to glib-2-78
  - !3614 Backport !3582 "Buffer needs to be aligned correctly to receive
    linux_dirent64." to glib-2-78
  - !3616 Backport !3590 "gtestutils.h: Fix warning with -Wsign-conversion
    caused by g_assert_cmpint" to glib-2-78
  - !3619 Backport !3617 "tests: Drop unnecessary include from gsubprocess-
    testprog.c" to glib-2-78
  - !3622 Backport !3621 "wakeup: do single read when using eventfd()" to
    glib-2-78
  - !3625 Backport !3624 "wakeup: Fix g_wakeup_acknowledge if signal comes in"
    to glib-2-78
  - !3644 Backport !3633 "Use g_task_return in task threads" to glib-2-78
  - !3649 Backport !3648 "build: Fix -Dlibelf=disabled on Linux" to glib-2-78
  - !3659 Backport !3650 "gfileutils: Add a missing ftruncate() call when
    writing files" to glib-2-78

(From OE-Core rev: ca5ec3ed5c528f36204b0f6b95bef896f8858176)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 2a2df44ef1b413f1ae268a69e36ca796fc8c9d0b)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Wang Mingyu
b714245cc2 msmtp: upgrade 1.8.24 -> 1.8.25
This is a bug fix release:

Generation of Message-ID headers was improved to avoid problems with rspamd assigning SPAM points
Documentation of ignored options was fixed
The combination of envelope from addresses with wildcards and automatic account selection was fixed (thanks to Jonathan Wakely)
Translations were updated, including a new Romanian translation (thanks again to everyone at translationproject.org)

(From OE-Core rev: 8eeee56a576dffb7f9bac9131563b555d30ada42)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 58fe8184f7ea475ad1be754e0de9a76cd4cd7c2e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Wang Mingyu
99c43cf1a0 libnsl2: upgrade 2.0.0 -> 2.0.1
Changelog:
===========
* Remove unused internal symbols from libnsl.map
* Remove NIS+ from documentation

(From OE-Core rev: 32a6640fb99cdccb4a74e3ea8baa03272f827fb6)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 1c85811d3a31cd290c7cbc939663cd68d69d9146)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Wang Mingyu
a820a8a34a libnewt: upgrade 0.52.23 -> 0.52.24
Changelog:
===========
- add support for python3.13
- fix compiler warnings

(From OE-Core rev: da5850d11abe2e523b72500fbd304d5db041a9f1)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 3d97fe3848d68159c4b7119b0906c8388ce54a9a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Tim Orling
1dfa7cf067 vim: upgrade 9.0.2068 -> 9.0.2130
https://github.com/vim/vim/compare/v9.0.2068...v9.0.2130

CVE: CVE-2023-48231
CVE: CVE-2023-48232
CVE: CVE-2023-48233
CVE: CVE-2023-48234
CVE: CVE-2023-48235
CVE: CVE-2023-48236
CVE: CVE-2023-48237

(From OE-Core rev: 75b48593f8e1ad9efc14842bf29a68daa7b02472)

Signed-off-by: Tim Orling <tim.orling@konsulko.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 5978d565a9e700485fc563dfe2e3c0045dd74b59)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-15 03:54:00 -10:00
Lee Chee Yang
508acf3ab7 migration-guides: add release notes for 4.3.1
(From yocto-docs rev: 405b1e55eef16965c14ad0434b0e88ac165df0b3)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Vyacheslav Yurkov
bdfac04a9f lib/oe/path: Deploy files can start only with a dot
There might be only hidden files deployed. In that case we don't need a
generic wildcard present in copy command, otherwise it fails with:

Exception: subprocess.CalledProcessError: Command 'cp -afl --preserve=xattr ./.??* ./* <BUILDDIR>/tmp/deploy/images/qemux86-64' returned non-zero exit status 1.

Subprocess output:
cp: cannot stat './*': No such file or directory

(From OE-Core rev: c45f3e00189e034157996b88103a83efec3e0cf6)

Signed-off-by: Vyacheslav Yurkov <Vyacheslav.Yurkov@wika.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit f92c751281609ea6bd6b838307de4bc70bf26ab9)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Jermain Horsman
b680a95e6b lib/oe/buildcfg.py: Remove unused parameter
Several functions included the 'd' parameter but never used it,
additionally the value passed is always None.

(From OE-Core rev: ea871e7920726c7b2e57161092e21c62e6a5d91e)

Signed-off-by: Jermain Horsman <jermain.horsman@nedap.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 9e03ce0426576ebef3739dc1dfec4f7cd73ae094)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Jermain Horsman
38e5d2ac60 lib/oe/buildcfg.py: Include missing import
get_layer_revisions() uses the os.path module but it is not included
in the imports.

(From OE-Core rev: a888d56d46b01d6126179e3f38e3c1739c38d45c)

Signed-off-by: Jermain Horsman <jermain.horsman@nedap.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 4339ef5b46c39cce402d1cc3526b39702837b839)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Chen Qi
394a53b2a1 systemd: fix DynamicUser issue
The DynamicUser needs libnss-systemd to be installed to function
well. The tweaks to nsswitch.conf should be conditional on PACKAGECONFIG
values.

(From OE-Core rev: 5420215a3415f08c1d961fca2e3d8258f82fb7f1)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit ba3a78c08cb0ce08afde049610d3172b9e3b0695)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
William Lyu
cb7590123a openssl: improve handshake test error reporting
Fixes [YOCTO #15225]

Yocto Bug #15255 is not reproducible. To obtain more useful information
for debugging, the OpenSSL test code is improved so that more detailed
state information in the handshake loop is printed when an error occurs.

(From OE-Core rev: c176229ced6b710b6c44d1090e9e7347d98e4be4)

Signed-off-by: William Lyu <William.Lyu@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 5bf9a70f580357badd01f39822998985654b0bfc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Randy MacLeod
7ba45d212e strace: backport fix for so_peerpidfd-test
Backport the fix for the so_peerpidfd-test:
   44cf51a38 tests: fix so_peerpidfd test
and drop the patch that skipped that test.

(From OE-Core rev: 40127d0427d02d0c44d17b9959c5eae4d91d3f10)

Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 0a52da6530ebba08f9a3b30d5098b0c3ef1730d7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Tim Orling
16bb0a1ced lsb-release: use https for UPSTREAM_CHECK_URI
http:// results in 301 Moved Permanently and redirects to https://

Also drop SRC_URI[md5sum].

(From OE-Core rev: 2060e7ba146a1e87d402af9557cdd5ce959a7bf6)

Signed-off-by: Tim Orling <tim.orling@konsulko.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 4bb3e1dd642802a16ac9526df4098d6dcb97a795)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
e8810de8cb linux-firmware: package Robotics RB5 sensors DSP firmware
Add package with sensors DSP firmware for Qualcomm Robotics RB5
platform.

(From OE-Core rev: 3c33f44d7f4a13bb5ae734bc38de894f0acae783)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 195df10fcbfa1ef7e073d3332943458064519ae0)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
45a9376b9a linux-firmware: package Qualcomm Venus 6.0 firmware
Package firmware for the Qualcomm video encoder / decoder (venus) core,
version 6.0

(From OE-Core rev: 247d5b997b4d8a3c72f2004c1df069f7f88fed38)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 51a64bd01adf3a81086e6368af01abaf4081a515)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
f71917facf linux-firmware: package firmware for Qualcomm QCM2290 / QRB4210
Package firmware files for the Qualcomm QCM2290 and QRB4210 platforms.

(From OE-Core rev: 11d1f62d4ccf0239e62fb4f8e9a71ba442cf410d)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit bc4170ca691df3eefa39fffd31c280b3ead111a9)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
3252a1a24b linux-firmware: package firmware for Qualcomm Adreno a702
Separate firmware for the Quacomm Adreno A702 GPU, found on Qualcomm
QCM2290 / QRB2210 platforms.

(From OE-Core rev: a0569427f1c5d0e002d9659d5b102525247bf5e9)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit ad24c24dc534b2da7dbd858e1436f8c0d1e86809)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
155f74e0e3 linux-firmware: add audio topology symlink to the X13's audio package
Add new symlink required for the sound driver to find the audio topology
to the linux-firmware--qcom-sc8280xp-lenovo-x13s-audio package.

(From OE-Core rev: 49c756b5752d1e0c9957deb336c86a5fb8fc8abd)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 313135eaa236872e4aa5f698515a3363eb75601f)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
07bebb424a linux-firmware: add notice file to sdm845 modem firmware
Follow the upstream change (which moved wlanmdsp and notice files from
ath10k to sdm845 dir) and include notice file into the sdm845 modem
firmware package.

(From OE-Core rev: c7ece930e7232a4b76e793850ab7502020edc24b)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit e03d1b9cc06ae23a8abc8a30b1c09bd997465400)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
60e44e2786 linux-firmware: add missing depenencies on license packages
Several Adreno packages lack dependency on the package with the license
file. Add corresponding RDEPENDS.

Fixes: bf00a042d2fa ("linux-firmware: split platform-specific Adreno shaders to separate packages")
(From OE-Core rev: fe05fc9be2b8a58c721df2da602fa4465e07947d)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 9b9f7fef59cca72c3cd0aedd040a15e77ad5a2b2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Dmitry Baryshkov
2e9e5874c8 linux-firmware: upgrade 20230804 -> 20231030
License-Update: additional firmwares

(From OE-Core rev: 4027a2961d023c3788ec6d08b8f55b2b64bbc005)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 7c725d1f2ed9a271d39d899ac2534558c2d103fc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Bastian Krause
fa5c988242 linux-firmware: add new fw file to ${PN}-rtl8821
Extend the linux-firmware-rtl8821 package with rtw8821 firmware files for
Realtek RTL8821 variants.

(From OE-Core rev: 753a56079375b542e0e22a5bfb76804aa975eeb3)

Signed-off-by: Bastian Krause <bst@pengutronix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 23c945938f8d8bcf5fbd6d9b840ec319aaa40c62)
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Fahad Arslan
30775beff8 linux-firmware: create separate packages
This is in continuation of earlier commit:
3ddddfc14f
linux-firmware: create separate package for cirrus and cnm firmwares

And creates separate sub packages for firmwares corresponding to following list of
licenses:
LICENSE.amphion_vpu
LICENCE.cw1200
LICENSE.ice_enhanced
LICENCE.mediatek
LICENCE.microchip
LICENCE.moxa
LICENSE.nxp_mc_firmware
LICENCE.OLPC
LICENCE.phanfw
LICENCE.qla2xxx
LICENCE.ti-keystone
LICENCE.wl1251
LICENCE.xc4000
LICENCE.xc5000
LICENCE.xc5000c

(From OE-Core rev: ce54c12a7a098d91244a99949e0e0772641c99b7)

Signed-off-by: Fahad Arslan <fahad.arslan@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit c110e5708465a6becc611acf97f166302a17ebdf)
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Ross Burton
bbacbb58e6 xwayland: upgrade to 23.2.2
e4487cae1 Bump version to 23.2.2
1e8478455 Xi/randr: fix handling of PropModeAppend/Prepend (CVE-2023-5367)
829a99117 Switch to libbsd-overlay
4f8a851b6 xwayland: Cancel the EI disconnect timer when freed
cc79b2a83 glamor: xv: Fix invalid accessing of plane attributes for NV12
07c18c90e xwayland: Give up on EI on setup failure
10353a01a xwayland: Add an option to enable EI portal support
4f8e209d2 xwayland/glamor/gbm: Set GBM_BO_USE_LINEAR if only LINEAR modifier is supported
c9a842e60 xwayland/present: Handle NULL window_priv in xwl_present_cleanup
2bd43be92 glamor: fixes GL_INVALID_ENUM errors on ES if there is no quads

( cherry-pick from commit 7d0fc94d09db76d4c4d6ca9d2da1b30768f68c9e )

(From OE-Core rev: afaca63391f3d0318dd9ad79512d8a792e4052a6)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Richard Purdie
c3b03830ca qemu: Upgrade 8.1.0 -> 8.1.2
Drop three backport patches as they're applied upstream.

( cherry-pick from commit 7480ff9064a74858e83e0ae275dbdb78dd6fc2a4 )

(From OE-Core rev: 3ab0c546f656a86dfbf716bb8f4d1d8b27f16692)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Khem Raj
795f82f534 python3-urllib3: Upgrade to 2.0.7
Addresses CVE-2023-45803 [1]

[1] 4e98d57809

( cherry-pick from commit befec4d3591bb0dce0e256cf338eb541b2a56b98 )

(From OE-Core rev: 99885e0914365f9c4bbb5584e9ab3d244dc58499)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Wang Mingyu
28664b526d libjpeg-turbo: upgrade 3.0.0 -> 3.0.1
Changelog:
=============
1. The x86-64 SIMD functions now use a standard stack frame, prologue, and
epilogue so that debuggers and profilers can reliably capture backtraces from
within the functions.

2. Fixed two minor issues in the interblock smoothing algorithm that caused
mathematical (but not necessarily perceptible) edge block errors when
decompressing progressive JPEG images exactly two MCU blocks in width or that
use vertical chrominance subsampling.

3. Fixed a regression introduced by 3.0 beta2[6] that, in rare cases, caused
the C Huffman encoder (which is not used by default on x86 and Arm CPUs) to
generate incorrect results if the Neon SIMD extensions were explicitly disabled
at build time (by setting the 'WITH_SIMD' CMake variable to '0') in an AArch64
build of libjpeg-turbo.

(From OE-Core rev: c86d9c34aea1e735c9c828029ce0ae1501928e4c)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit f1d2ffb6c7282751919a7057ffc445db71866f96)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Wang Mingyu
8dedcabdb5 harfbuzz: upgrade 8.2.1 -> 8.2.2
Changelog:
===========
- Fix regression from 8.1.0 in shaping fonts with duplicate feature tags.
- Fix regression from 8.2.0 in parsing CSS-style feature strings.
- Variable fonts instanciation now handles more tables.
- Various CMake build improvements.
- various fixes to build without errors with gcc 4.9.2.

(From OE-Core rev: d33248db045b6959c641630dda1aa35aaf702648)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 7380afcb41db7b1a93c716af567d4a30a71dddcd)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Wang Mingyu
834f988885 enchant2: upgrade 2.6.1 -> 2.6.2
Changelog:
===========
Documents exclude files: each personal word list is paired with
an exclude file that contains words the user considers invalid.

(From OE-Core rev: 9da704f23bc9538c6fa6fb075fe2c28e7751c8a4)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit f0877cebd2c990d9d98fc348032742c2d9fb4254)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Wang Mingyu
14c2c0d84b base-passwd: upgrade 3.6.1 -> 3.6.2
base-passwd (3.6.2)

  [ Peter Kjellerstedt ]
  * Make it possible to configure whether to use SELinux or not.

  [ Gioele Barabucci ]
  * d/postinst: Remove code for upgrades from outdated version 3.2.2.
  * d/control: Remove unused w3m build dependency (closes: #1051810).
  * Support <nodoc> build profile (closes: #1051809).

  [ Colin Watson ]
  * Debconf translations:
    - Romanian (thanks, Remus-Gabriel Chelu; closes: #1031149).
    - Swedish (thanks, Peter Kvillegård; closes: #1050440).
  * Explicitly build-depend on docbook, since otherwise the build fails if
    docbook-xml happens to be installed before installing build-dependencies
    (closes: #1033422).

  [ Samuel Thibault ]
  * Fix non-Linux builds (closes: #1054098).

0006-Make-it-possible-to-configure-whether-to-use-SELinux.patch
removed since it's included in 3.6.2

(From OE-Core rev: 9dc8a4b219cd8763299ca465e82bd4a5b495ea14)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit f318a13e8b6ce3ded313fa17ab80b35b936205fb)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Vijay Anusuri
b5c29b2a94 avahi: backport Debian patches to fix multiple CVE's
import patches from ubuntu to fix
 CVE-2023-1981
 CVE-2023-38469
 CVE-2023-38470
 CVE-2023-38471
 CVE-2023-38472
 CVE-2023-38473

Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/avahi/tree/debian/patches?h=ubuntu/jammy-security
Upstream commit
a2696da2f2
&
a337a1ba7d
&
c6cab87df2
&
94cb648911
&
20dec84b24
&
894f085f40
&
b675f70739
&
b024ae5749
&
b448c9f771]

(From OE-Core rev: a9203c46cd64c3ec5e5b00e381bbac85733f85df)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-12-05 11:51:37 -10:00
Steve Sakoman
bf9f2f6f60 build-appliance-image: Update to nanbield head revision
(From OE-Core rev: cce77e8e79c860f4ef0ac4a86b9375bf87507360)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 08:31:43 -10:00
Steve Sakoman
3bcf525a68 poky.conf: bump version for 4.3.1 release
(From meta-yocto rev: 7324ba75c9ca2cb90704296e3882ad9f46497f61)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Lee Chee Yang
2b90e1725c release-notes-4.3: add Repositories / Downloads section
Add Repositories/Downloads Section for 4.3 release notes.

(From yocto-docs rev: 6b98a6164263298648e89b5a5ae1260a58f1bb35)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Michael Halstead
b23377f070 docs: add support for nanbield (4.3) release
This adds support for the Nanbield (4.3) release and update the
current dev branch to Scarthgap.

(From yocto-docs rev: b66ba1c2d117033493f3ec25ebcf121cde200286)

Signed-off-by: Michael Halstead <mhalstead@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Ross Burton
9c1fb1c9ef oeqa/selftest/debuginfod: improve selftest
This test was occasionally failing for no obvious reason, so refactor
and improve:

- While waiting for the daemon, check that it is still running and
  explicitly timeout after 10s when making the HTTP call.

- While waiting for the daemon to be ready, log the current state of the
  daemon so we can tell if we're timing out as it is still scanning.

- This was in fact the cause of the intermittant failures, because the
  TMPDIR is reused between tests and may contain a large number of
  packages. Do the tests in an isolated TMPDIR to hopefully mitigate this
  issue and increase the timeout to two minutes.

- Decorate the test using runqemu as such so that can be skipped in
  environments without runqemu

- Add a second test that doesn't use runqemu or images, which is faster
  but less realistic.

(From OE-Core rev: 99590fac1bfb5474f5bf0e02d3888b518af9fb3e)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 88b660aaae2527736b6eccec4c952eee969e20a2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Archana Polampalli
6a35bdf571 vim: Upgrade 9.0.2048 -> 9.0.2068
This includes CVE fix for CVE-2023-46246.
9198c1f2b (tag: v9.0.2068) patch 9.0.2068: [security] overflow in :history

References:
https://nvd.nist.gov/vuln/detail/CVE-2023-46246

(From OE-Core rev: 55dba750cb37fdf09b9b8b768c5ebea86c769248)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 63bc72ccb63d2f8eb591d7cc481657a538f0fd42)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Steve Sakoman
08bf0e6743 vim: use upstream generated .po files
A previous commit attempted to fix reproducibility errors by forcing
regeneration of .po files. Unfortunately this triggered a different
type of reproducibility issue.

Work around this by adjusting the timestamps of the troublesome .po
files so they are not regenerated and we use the shipped upstream
versions of the files.

The shipped version of ru.cp1251.po doesn't seem to have been created
with the vim tooling and specifies CP1251 instead of cp1251, fix that.

(From OE-Core rev: 14629902c9bb8ac155cf1077377589ab086c5020)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 13d9551ba626f001c71bf908df16caf1d739cf13)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Richard Purdie
899eeaf3fb vim: Improve locale handling
When making checkouts from git, the timestamps can vary and occasionally two files
can end up with the same stamp. This triggers make to regenerate ru.cp1251.po from
ru.po for example. If it isn't regenerated, the output isn't quite the same leading
to reproducibility issues (CP1251 vs cp1251).

Since we added all locales to buildtools tarball now, we can drop the locale
restrictions too. We need to generate a native binary for the sjis conversion
tool so also tweak that.

(From OE-Core rev: fdbdfd90f114ace6891f08625fd3fa8e66959ff7)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 042c1a501b1dae5ddb31307b461be02c3591c589)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
1ce41a86e3 patchtest: rework license checksum tests
Remove the pretest_lic_files_chksum_modified_not_mentioned test entirely
and use pyparsing in test_lic_files_chksum_modified_not_mentioned to
scan the patches for lines starting with either "+LIC_FILES_CHKSUM" or
"-LIC_FILES_CHKSUM".  If either is found but no "License-Update" tag is
present in the commit, fail the test.

(From OE-Core rev: d1871afcec769b6503852adf6217460897ecf301)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 8e1bda0eb225ada22fdf5990edfec512be1d6629)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
bee889b6a1 patchtest-send-results: fix sender parsing
Not all mbox 'from' fields will contain angle brackets, so the
re.findall invocation used for getting a reply_address may fail. Use a
simpler reference to the field to get the sender's email address.

(From OE-Core rev: 78e76e2e4f71485a632f1c1ae83032e0e9341a9e)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 86e9afe09a346586114133f5a7470304d2ed733f)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
d171bc2f28 patchtest: remove test for CVE tag in mbox
After patchtest went live it was determined that testing for a CVE tag
in the mbox commit message is unnecessary, since it will already be in
the shortlog and in any carried patches. Remove the test and the
associated selftest files so that its absence isn't flagged in future
test results.

(From OE-Core rev: bf9671896eb60880b5dad36c2706855932ce091f)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 54690f18f04a2ab993a85d551ce4f8d0fa56618a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
52e8e9e2b6 patchtest: make pylint tests compatible with 3.x
pylint 3.x has removed epylint, which is now a separate module. To avoid
adding another recipe or using outdated modules, modify the
test_python_pylint tests so that they use the standard pylint API.

(From OE-Core rev: 8b3c6837fe2367fa7aa20b2ee5be554be98f2acd)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 72be3d6a116febf46130cccbe12afe5ad93779b5)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
d1c1d93077 patchtest-send-results: add In-Reply-To
Rework the script for sending results to use send_raw_email and specify
the 'In-Reply-To' field so that patchtest replies to the emails, rather
than sending them standalone to the submitter and mailing list.

(From OE-Core rev: b15537e2e13fd932e16fef5f7a25a3ab2130a19e)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 0c45c92e7f26aea4edf2cfa577b7ba51384e59d3)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
44dd3383c7 patchtest-send-results: send results to submitter
Modify patchtest-send-results so that it extracts the submitter's email
address and responds to them with the patch testresults. Also make a
minor adjustment to the suggestions provided with each email and include
a link to the Patchtest wiki page for additional clarification on
specific failures.

(From OE-Core rev: fe9ec57a07f4e341505030fdf49a5827f01a626f)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 64ed88e32cf9e04772319ff6e66c602d1cff4fd7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
cce3cab334 patchtest: shorten test result outputs
Some test result lines in TestMbox and TestPatch are still too long to
avoid being flagged by the mailer script. Clean them up by removing
redundant information, so that they are all under the length limit of
220 characters.

(From OE-Core rev: c543469e2da32a474a60a497b5d51fd9fc43dbb4)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit c10d0bb542b23fbdc14d76dfa8e5885aa4d33083)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
9f4d69790c patchtest: reduce checksum test output length
The test_lic_files_chksum_modified_not_mentioned test in TestMetadata is
outputting very long lines that fail the maximum length check when
sending email results, preventing the actual errors from being
displayed. Reduce the length of the failure message by rewording and
removing redundant information.

(From OE-Core rev: e3c680bab99f7e5f0cb7874ada0297b5fac66702)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2e2625735181160e9760a6f3af4955bda2ea6d4d)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
f575a3bdd5 patchtest: simplify test directory structure
Consolidate the various mbox tests into a new TestMbox class, metadata
tests into TestMetadata, and patch tests into TestPatch. Also update the
selftest filenames to match the changes. The test contents are not
significantly changed (other than to reference the new class names).
While this doesn't improve overall readability, it does result in more
obvious categorization, and more importantly reduces the number of calls
to setup tinfoil in the tests, resulting in a roughly 25% reduction in
runtime.

Before:

[tgamblin@megalith poky]$ time ./meta/lib/patchtest/selftest/selftest
XPASS: PatchSignedOffBy.test_signed_off_by_presence (file: PatchSignedOffBy.test_signed_off_by_presence.pass)
XFAIL: Shortlog.test_shortlog_format (file: Shortlog.test_shortlog_format.fail)
XFAIL: MboxFormat.test_mbox_format (file: MboxFormat.test_mbox_format.1.fail)
XPASS: Shortlog.test_shortlog_length (file: Shortlog.test_shortlog_length.pass)
XFAIL: CommitMessage.test_commit_message_presence (file: CommitMessage.test_commit_message_presence.fail)
XFAIL: SrcUri.test_src_uri_left_files (file: SrcUri.test_src_uri_left_files.fail)
XPASS: Author.test_author_valid (file: Author.test_author_valid.1.pass)
XFAIL: LicFilesChkSum.test_lic_files_chksum_modified_not_mentioned (file: LicFilesChkSum.test_lic_files_chksum_modified_not_mentioned.fail)
XPASS: CVE.test_cve_tag_format (file: CVE.test_cve_tag_format.pass)
XPASS: CVE.test_cve_presence_in_commit_message (file: CVE.test_cve_presence_in_commit_message.pass)
XFAIL: CVE.test_cve_tag_format (file: CVE.test_cve_tag_format.fail)
XFAIL: Author.test_author_valid (file: Author.test_author_valid.1.fail)
XFAIL: LicFilesChkSum.test_lic_files_chksum_presence (file: LicFilesChkSum.test_lic_files_chksum_presence.fail)
XSKIP: Merge.test_series_merge_on_head (file: Merge.test_series_merge_on_head.2.skip)
XPASS: MboxFormat.test_mbox_format (file: MboxFormat.test_mbox_format.pass)
XFAIL: SignedOffBy.test_signed_off_by_presence (file: SignedOffBy.test_signed_off_by_presence.1.fail)
XPASS: Shortlog.test_shortlog_format (file: Shortlog.test_shortlog_format.pass)
XFAIL: SignedOffBy.test_signed_off_by_presence (file: SignedOffBy.test_signed_off_by_presence.2.fail)
XFAIL: MboxFormat.test_mbox_format (file: MboxFormat.test_mbox_format.2.fail)
XFAIL: Summary.test_summary_presence (file: Summary.test_summary_presence.fail)
XPASS: Author.test_author_valid (file: Author.test_author_valid.2.pass)
XSKIP: Merge.test_series_merge_on_head (file: Merge.test_series_merge_on_head.1.skip)
XPASS: Bugzilla.test_bugzilla_entry_format (file: Bugzilla.test_bugzilla_entry_format.pass)
XFAIL: CVE.test_cve_presence_in_commit_message (file: CVE.test_cve_presence_in_commit_message.fail)
XPASS: SignedOffBy.test_signed_off_by_presence (file: SignedOffBy.test_signed_off_by_presence.pass)
XPASS: LicFilesChkSum.test_lic_files_chksum_presence (file: LicFilesChkSum.test_lic_files_chksum_presence.pass)
XPASS: CommitMessage.test_commit_message_presence (file: CommitMessage.test_commit_message_presence.pass)
XPASS: Summary.test_summary_presence (file: Summary.test_summary_presence.pass)
XPASS: LicFilesChkSum.test_lic_files_chksum_modified_not_mentioned (file: LicFilesChkSum.test_lic_files_chksum_modified_not_mentioned.pass)
XFAIL: Shortlog.test_shortlog_length (file: Shortlog.test_shortlog_length.fail)
XFAIL: PatchSignedOffBy.test_signed_off_by_presence (file: PatchSignedOffBy.test_signed_off_by_presence.fail)
XFAIL: Bugzilla.test_bugzilla_entry_format (file: Bugzilla.test_bugzilla_entry_format.fail)
XPASS: SrcUri.test_src_uri_left_files (file: SrcUri.test_src_uri_left_files.pass)
XFAIL: Author.test_author_valid (file: Author.test_author_valid.2.fail)
============================================================================
Testsuite summary for patchtest
============================================================================
============================================================================

real    24m14.386s
user    1m13.599s
sys     0m21.477s

After:

[tgamblin@megalith poky]$ time ./meta/lib/patchtest/selftest/selftest
XFAIL: TestMbox.test_bugzilla_entry_format (file: TestMbox.test_bugzilla_entry_format.fail)
XPASS: TestMetadata.test_summary_presence (file: TestMetadata.test_summary_presence.pass)
XFAIL: TestMbox.test_mbox_format (file: TestMbox.test_mbox_format.1.fail)
XFAIL: TestMetadata.test_src_uri_left_files (file: TestMetadata.test_src_uri_left_files.fail)
XSKIP: TestMbox.test_series_merge_on_head (file: TestMbox.test_series_merge_on_head.2.skip)
XPASS: TestMbox.test_commit_message_presence (file: TestMbox.test_commit_message_presence.pass)
XFAIL: TestMbox.test_commit_message_presence (file: TestMbox.test_commit_message_presence.fail)
XPASS: TestMbox.test_signed_off_by_presence (file: TestMbox.test_signed_off_by_presence.pass)
XFAIL: TestPatch.test_cve_tag_format (file: TestPatch.test_cve_tag_format.fail)
XFAIL: TestMbox.test_author_valid (file: TestMbox.test_author_valid.1.fail)
XFAIL: TestMbox.test_shortlog_length (file: TestMbox.test_shortlog_length.fail)
XPASS: TestMbox.test_mbox_format (file: TestMbox.test_mbox_format.pass)
XFAIL: TestPatch.test_signed_off_by_presence (file: TestPatch.test_signed_off_by_presence.fail)
XFAIL: TestMbox.test_shortlog_format (file: TestMbox.test_shortlog_format.fail)
XFAIL: TestMbox.test_mbox_format (file: TestMbox.test_mbox_format.2.fail)
XPASS: TestPatch.test_cve_tag_format (file: TestPatch.test_cve_tag_format.pass)
XSKIP: TestMbox.test_series_merge_on_head (file: TestMbox.test_series_merge_on_head.1.skip)
XPASS: TestMbox.test_author_valid (file: TestMbox.test_author_valid.2.pass)
XPASS: TestMetadata.test_lic_files_chksum_modified_not_mentioned (file: TestMetadata.test_lic_files_chksum_modified_not_mentioned.pass)
XPASS: TestMbox.test_bugzilla_entry_format (file: TestMbox.test_bugzilla_entry_format.pass)
XPASS: TestMetadata.test_src_uri_left_files (file: TestMetadata.test_src_uri_left_files.pass)
XPASS: TestMetadata.test_lic_files_chksum_presence (file: TestMetadata.test_lic_files_chksum_presence.pass)
XPASS: TestMbox.test_cve_presence_in_commit_message (file: TestMbox.test_cve_presence_in_commit_message.pass)
XFAIL: TestMbox.test_signed_off_by_presence (file: TestMbox.test_signed_off_by_presence.2.fail)
XFAIL: TestMbox.test_author_valid (file: TestMbox.test_author_valid.2.fail)
XFAIL: TestMetadata.test_lic_files_chksum_presence (file: TestMetadata.test_lic_files_chksum_presence.fail)
XPASS: TestMbox.test_shortlog_format (file: TestMbox.test_shortlog_format.pass)
XPASS: TestMbox.test_author_valid (file: TestMbox.test_author_valid.1.pass)
XPASS: TestPatch.test_signed_off_by_presence (file: TestPatch.test_signed_off_by_presence.pass)
XFAIL: TestMetadata.test_lic_files_chksum_modified_not_mentioned (file: TestMetadata.test_lic_files_chksum_modified_not_mentioned.fail)
XPASS: TestMbox.test_shortlog_length (file: TestMbox.test_shortlog_length.pass)
XFAIL: TestMbox.test_signed_off_by_presence (file: TestMbox.test_signed_off_by_presence.1.fail)
XFAIL: TestMbox.test_cve_presence_in_commit_message (file: TestMbox.test_cve_presence_in_commit_message.fail)
XFAIL: TestMetadata.test_summary_presence (file: TestMetadata.test_summary_presence.fail)
============================================================================
Testsuite summary for patchtest
============================================================================
============================================================================
real    18m39.749s
user    0m41.857s
sys     0m14.708s

(From OE-Core rev: 497e128546b37d6cf5fb86188fff4c7a22526ec8)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f788592da2fd0e21638ce2c3326675a060ba51cf)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
5f1c17d70c patchtest/selftest: add XSKIP, update test files
Since we are skipping the merge test, two of the selftests now report
SKIP instead of XPASS/XFAIL as expected. Adjust the two files to have
the right endings for XSKIP, and add the category so that it can be used
for more extensive testing in the future.

(From OE-Core rev: a354265065516ec634042ea8210f97aaba7ff43c)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3331f53c0be2575784a042bb2401eeba4f2a5a3e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
3f4011aba4 patchtest-send-results: check max line length, simplify responses
Check that the maximum line length of the testresult file is less than
220 characters, to help guard against malicious changes being sent in
email responses. If any line exceeds this length, replace the normal
testresults used in the response with a line stating that tests failed,
but the results could not be processed. Also clean up the respone
substrings slightly to go along with the change.

(From OE-Core rev: 8e7e39134df926203b7bdfad22916e0d5da0589d)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit b0d53cf587dc9afb97f00c1089e45b758e96dd7c)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
48537fb77b patchtest: disable merge test
Disable the merge-on-head test until patchtest properly handles merging
of series subsets and accounts for patches that are rapidly merged (i.e.
before patchtest is run).

(From OE-Core rev: 97c1d8aa7318e36a037aa6c8b721fb75608a92a7)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e561c614dc72b7f8bf5e09a09bbe6ebc3cf500bb)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
174a642755 patchtest-send-results: improve subject line
Pull the actual email's subject line from the .mbox file and use that in
patchtest's test results response, so that it's clearer which patch it
is replying to.

(From OE-Core rev: 86d00a1b5233250fbea32113ad9c43bd78778406)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 98ca0b151517b3544454fd5c1656a2de631c4897)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
2a89e081ca patchtest: fix lic_files_chksum test regex
the test_lic_files_chksum_modified_not_mentioned test in patchtest
wasn't picking up on 'License-Update:' tags correctly. Use pyparsing's
AtLineStart class to simplify the regex setup and search.

(From OE-Core rev: 978c819c33c0552750f5383f0ed761d505b4bdf5)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit dc9126e45e74b915faaf296037e7ece41785bf4a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
7dd1867c77 patchtest: skip merge test if not targeting master
Avoid testing mergeability of a patch when not targeting master, so that
patches tested via other means (e.g. maintainer branches and AB runs)
don't get unnecessarily reviewed an extra time.

(From OE-Core rev: 127fa20bd1d628548f7f4ba087b3ca105e705098)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e6cf23e353f48c57249681bd0b12bd8494d4959a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Trevor Gamblin
5972abb328 patchtest: test regardless of mergeability
(From OE-Core rev: 06d2066a5061d23a316f65cfc731ce44b576b2bf)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit dc089073eb120de76c8907e476c341ed3e97c164)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Ross Burton
a7a7320737 patchtest: remove unused imports
(From OE-Core rev: 673d1b51b5183a81d1daaa7a48250aa938679883)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit be8429d986335aae65c2426862b97836ba46e42a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Alejandro Hernandez Samaniego
4f6d210ee0 baremetal-helloworld: Pull in fix for race condition on x86-64
It was previously discovered that there was a race condition during the Makefile
execution between the assemble and compile targets, the previous fix attempted
to serialize the build targets, but the fix was missing for x86-64.

Pull in latest commit from upstream to fix this issue on x86-64.

[YOCTO #15146]

(From OE-Core rev: 2b236342971cc7a349f6724874a02af8952d378a)

Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandro@enedino.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e7e1631a1efbcf421de801e94734f67f25668540)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Rouven Czerwinski
d5f021238c glib-2.0: Remove unnecessary assignement
FILES:${PN}-utils is += extended and than replaced completely later,
remove the first extension.

(From OE-Core rev: da90f904c47250fbb71f03a3ce961a23dba47a80)

Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d9d61c5217938749e3edc5f8a5c987f46bbab3d7)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Richard Purdie
2db7c24bd8 base: Ensure recipes using mercurial-native have certificates
If you try and fetch using mercurial-native, you see certificate errors since
it is configured to find ones in the sysroot, not the system. Add the missing
dependency so that mercurial recipes using the native tool work.

Found trying to make mirroring for old meta-oe stable branches work.

(From OE-Core rev: c48206dd82a2faab477002b1ac04d835920755d0)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit fc567e35b374f8b08975602609ee71e64357fb3d)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Xiangyu Chen
c7f18e6c43 linux-yocto: make sure the pahole-native available before do_kernel_configme
When using debug-btf.scc in a clean workspace, the CONFIG_MODULE_ALLOW_BTF_MISMATCH cannot
apply to kernel until clean the kernel code(bitbake linux-yocto -c cleanall) and rebuild.

After tracking the code, some options depend on CONFIG_PAHOLE_VERSION, it was generated by
scripts/pahole-version.sh in kernel, but during do_kernel_configme step, the pahole-native
is not available in sysroot-native, so need to wait pahole-native install to sysroot-native
before do_kernel_configme.

(From OE-Core rev: f9d434902df4ac0c17a94a977c045c4face65414)

Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 217a4db53edbd88001f6390bbff39e5dd3d137af)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Julien Stephan
83a2a6a65e oeqa/selftest/devtool: abort if a local workspace already exist
if user run devtool selftests with a local workspacelayer
the tests fail with various error such as:

- devtool.DevtoolAddTests.test_devtool_add just hangs
- devtool.DevtoolModifyTests.* fail with the following error:

 ERROR: Found duplicated BBFILE_COLLECTIONS 'workspacelayer', check bblayers.conf or layer.conf to fix it.
 Found duplicated BBFILE_COLLECTIONS 'workspacelayer', check bblayers.conf or layer.conf to fix it.

Check if a workspacelayer exists, warn the user and abort the tests

(From OE-Core rev: b8756f6e20d15f1cc724784d8ceb45a969ec7f81)

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a74962cfb0485f6f2b9e2b751c33c8eafca8705a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Dmitry Baryshkov
6d424e1d02 kernel-arch: drop CCACHE from KERNEL_STRIP definition
Building linux-yocto with ccache enabled results in the 'command not
found' error, because kernel-yocto.bbclass passes the KERNEL_STRIP
as a single value, whic is then interpreted as a command name.

ERROR: Fatal errors occurred in subprocesses:
[Errno 2] No such file or directory: 'ccache aarch64-linaro-linux-strip': Traceback (most recent call last):
  File "/home/lumag/Projects/RPB/build-rpb/conf/../../layers/openembedded-core/meta/lib/oe/utils.py", line 288, in run
    ret = self._target(*self._args, **self._kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Fixes: 03973c8c1c93 ("kernel: Add kernel specific STRIP variable")
(From OE-Core rev: 595b2a89d1af01645cea5d4163b100d59c951db6)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 41f019afc41f800b622c46a6d7cf1beffc97716a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Khem Raj
7e5b4743f4 kernel.bbclass: Use strip utility used for kernel build in do_package
os.environ does not pass this down to runstrip() function and in
strip_execs() its using STRIP bitbake variable to find the strip utility
to use. Since there might be a trailing whitespace in KERNEL_STRIP
remove that otherwise python is not able to launch it.
e.g.

FileNotFoundError: [Errno 2] No such file or directory: 'riscv64-yoe-linux-strip '

This is more evident when STRIP and KERNEL_STRIP are different utilities
e.g. when using clang as default toolchain but using gcc+binutils only for
kernel build.

(From OE-Core rev: e0bd7ce93a75c7ddb6b1c572453c37407e7e32da)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 77497dbdca92ab4d6386a071bc281c42a7e8a14b)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Peter Kjellerstedt
cae5e1ee3d bb-matrix-plot.sh: Show underscores correctly in labels
Underscores previously caused the next character in the label to be
printed using subscript due to the enhanced string support in gnuplot.

(From OE-Core rev: a8039d601187b28d9cec4402c9e0bd72b2805eb2)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 282b48f90f77e0766993018d22fe03dd303febdc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
luca fancellu
20a4de703c oeqa/ssh: Handle SSHCall timeout error code
The current code in ssh.py is terminating the ssh process that
does not finish its computation in a given timeout (when timeout
is passed), the SSHCall function is returning the process error
code.

The Openssl ssh before version 8.6_p1 is returning 0 when it is
terminated, from commit 8a9520836e71830f4fccca066dba73fea3d16bda
onwards (version >= 8.6_p1) ssh is returning 255 instead.

So for version of ssh older than 8.6_p1 when the SSHCall time out,
the return code will be 0, meaning success, which is wrong.

Fix this issue checking if the process has timeout (hence it's been
terminated) and checking if the returned code is 0, in that case
set it to 255 to advertise that an error occurred.

Add a test case excercising the timeout in the SSHTest, test_ssh
test function.

(From OE-Core rev: 82215c855ee39b4e39f24113241a7fb3f20f9531)

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 948fecca1db4c7a30fcca5fcf5eef95cd12efb00)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Max Krummenacher
2dec4dcecf Revert "bin_package.bbclass: Inhibit the default dependencies"
This reverts commit d1d09bd4d7be88f0e341d5fccbfbefeb98d4b727.

The commit not only removes the dependencies on the cross compiler
but also does not depend on e.g. virtual/${TARGET_PREFIX}compilerlibs
and virtual/libc which in turn makes the file-rdeps qa check fail
if installing binaries linked against e.g. libc or libstdc++.

(From OE-Core rev: 47b436c42ba1ef3b24e8fe48c7ea274b1a53a60e)

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ababf6ceebe360c5f59a57428566c27b7a97a9e6)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
William Lyu
423af114ee perl: fix intermittent test failure
Fixes [YOCTO #15136]

This fix addresses the intermittent failure of the Perl ptest
t/op/sigsystem.t.

(From OE-Core rev: a9c39c67e8421103f14302f6cf7aa2bf6a940cba)

Signed-off-by: William Lyu <William.Lyu@windriver.com>
Signed-off-by: Randy MacLeod <randy.macleod@windriver.com>
Reported-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
(cherry picked from commit 8c1ee92efa107ed055f1737640a027fa89077494)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Joshua Watt
45736b12e1 goarch: Move Go architecture mapping to a library
Other spaces uses the Go architecture definitions as their own (for
example, container arches are defined to be Go arches). To make it
easier for other places to use this mapping, move the code that does the
translation of OpenEmbedded arches to Go arches to a library.

(From OE-Core rev: 5e0267aeb7d9f575f270f6856a67ac62ce8a0f71)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3e86f72fc2e1cc2e5ea4b4499722d736941167ce)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Peter Marko
006a8f1891 openssl: Upgrade 3.1.3 -> 3.1.4
https://github.com/openssl/openssl/blob/openssl-3.1/NEWS.md#major-changes-between-openssl-313-and-openssl-314-24-oct-2023

Major changes between OpenSSL 3.1.3 and OpenSSL 3.1.4 [24 Oct 2023]
* Mitigate incorrect resize handling for symmetric cipher keys and IVs. (CVE-2023-5363)

(From OE-Core rev: de390034aecb23226a532dad56c821b4edee35bb)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 104ba16de434a08b0c8ba4208be187f0ad1a2cf8)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Khem Raj
051a926579 llvm: Upgrade to 17.0.3
Brings following fixes

* 888437e1b600 [asan] Ensure __asan_register_elf_globals is called in COMDAT asan.module_ctor (#67745)
* 2e00f4ca4e91 [clang-format][doc] Update the Linux kernel coding style URL
* aeb83c3783a6 [clang-format] Fix a serious bug in git-clang-format (#65723)
* 268faa377aee [LSan] Mark create_thread_leak.cpp as UNSUPPORTED: darwin.
* 491a91e8eea2 [PowerPC] Use zext instead of anyext in custom and combine (#68784)
* 8ce6b65c89ad [PowerPC] Add test for #68783 (NFC)
* 7a23a5d43c67 [clang-format] Fix a bug in RemoveParentheses: ReturnStatement (#67911)
* be4016e52779 [X86] Fix logic for optimizing movmsk(bitcast(shuffle(x))); PR67287
* 496b174053bd [X86] Add tests for incorrectly optimizing out shuffle used in `movmsk`; PR67287
* f50c6382c716 [clang] [MinGW] Explicitly always pass the -fno-use-init-array (#68571)
* d10b731adcc8 [LVI][CVP] Treat undef like a full range (#68190)
* 37b79e779f44 [X86] combineConcatVectorOps - only concatenate single-use subops
* 5a13ce2d6020 Bump version to 17.0.3
* e7b3b94cf500 [clang] Correct behavior of `LLVM_UNREACHABLE_OPTIMIZE=OFF` for `Release` builds (#68284)
* f0a687d821c1 [LLD] [COFF] Fix handling of comdat .drectve sections (#68116)
* 8a8ade49ff49 workflows/release-binaries: Use more cores to avoid the 6 hour timeout (#67874)
* 1090b91a2840 [AArch64] Disable loop alignment for Windows targets (#67894)
* 69c8c96691c7 [Sema] Use underlying type of scoped enum for -Wformat diagnostics (#67378)
* b2417f51dbbd (tag: llvmorg-17.0.2) Fix release/export.sh to export runtimes tarball, too (#67404)
* 23988a1d82d5 [libc++] Fix `std::pair`'s  pair-like constructor's incorrect assumption (#66585)
* 33e14ecd6aac [CodeGen] Don't treat thread local globals as large data (#67764)
* 03f797b51df6 [workflow] Fix abi checker in llvm-tests. Same fix as in 99fb0af80d16b0ff886f032441392219e1cac452 (#67957)
* f6cf58eed973 [clang] [MinGW] Tolerate mingw specific linker options during compilation (#67891)
* b338a2830a2c [LLD] [COFF] Restore the current dir as the first entry in the search path (#67857)
* 6a5be8e95b43 [LLD] [COFF] Clarify -print-search-path for the empty string element (#67856)
* 71be0aafe357 [NFC] clang-format lld/COFF/Driver.cpp and lld/Common/Filesystem.cpp
* 0a2d7dae6ef2 [compiler-rt] Reinstate removal of CRT choice flags from CMAKE_*_FLAGS* (#67935)
* 098e653a5bed [MemCpyOpt] Merge alias metadatas when replacing arguments (#67539)
* 78d201ebc3e2 [MemCpyOpt] Add test for #67539 (NFC)
* e718f3240a57 [DependencyScanningFilesystem] Make sure the local/shared cache filename lookups use only absolute paths (#66122)
* 45066b9fbc7b [Sema] Fix fixit cast printing inside macros (#66853)
* 87ec1f460d0e Work around two more instances of __noinline__ conflicts. (#66138)
* 9da5b7a93bca [lldb] Fix building LLDB standlone without framework
* c056d720b534 [lldb][NFCI] Change logic to find clang resource dir in standalone builds
* cb23434f9e63 [XCOFF] Do not generate the special .ref for zero-length sections (#66805)
* 1b55dc9d94c3 Fix buildbot failure caused by D157623
* 28d81a2bfa0a [lld][COFF] Remove incorrect flag from EHcont table
* b7eba056b93c workflows/release-tasks: Setup FileCheck and not for release-lit (#66799)
* 9678f11b057c [StackColoring] Handle fixed object index
* 49e9ee190080 [StackColoring] Handle SEH catch object stack slots conservatively
* 17123a60b87c [X86] Add test for #66984 (NFC)
* 2839aa915066 [SimpleLoopUnswitch] Fix exponential unswitch
* 773f136d6faa [SimpleLoopUnswitch] Fix reversed branch during condition injection
* 4362f3e4cf48 [clang] Include `expected-no-diagnostics` in newly-added test (NFC)
* 5f1fcc43e592 [clang] Bail out when handling union access with virtual inheritance
* 178cf5bc8732 [clang][Diagnostics] Fix wrong line number display (#65238)
* 25a150b830f6 Revert "[InlineCost] Check for conflicting target attributes early"

(From OE-Core rev: 2c161d842af31b4194d54409bba46cdcc33c1e16)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 8cfb833b66e514ea911aa4fbdc72592a06233f68)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Wang Mingyu
bb64157bff libsdl2: upgrade 2.28.3 -> 2.28.4
This is a stable bugfix release, with the following changes:

Enable clipping for zero sized rectangles in the SDL renderer
Notify X11 clipboard managers when the clipboard changes
Fixed sensor timestamps for third-party PS5 controllers
Added detection for Logitech and Simagic racing wheels

(From OE-Core rev: 3923426c799f8772fb84303000d04ac3d968e84f)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
(cherry picked from commit f47de111cd66c3f9a5a6d5589e1fd034027a0a75)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Wang Mingyu
7180db61b6 ell: upgrade 0.58 -> 0.59
Changelog:
 Fix issue with symbol visibility.

(From OE-Core rev: daebf66af566e56bb9f4cb6c0e23330221e3ebbc)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
(cherry picked from commit 14eba663b56f8f3b9c3aff5661cbe2aa7befe86e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Alex Stewart
5c3f9cf00e libsndfile1: fix CVE-2022-33065
(From OE-Core rev: 84ea91d63147c19ebf5909f7e9f377ddb1a52a7b)

Signed-off-by: Alex Stewart <alex.stewart@ni.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit f34991c7eeb91702a44ac8b4a190fcb45dac57cb)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2023-11-24 05:01:37 -10:00
Richard Purdie
2e9c2a2381 layer.conf: Switch layer to nanbield series only
(From OE-Core rev: 28e6fde4627ffd053dde8a8d44441a40dafd545c)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-09 17:09:49 +00:00
Michael Opdenacker
90e004cfe2 migration-guides: fix empty sections
(From yocto-docs rev: 897d5017eae6b3af2d5d489fc4e0915d9ce21458)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Michael Opdenacker
2ef3fd8c21 ref-manual: classes: explain cml1 class name
(From yocto-docs rev: 0ee4b7417087c105a4419b316c6b2c195c343f82)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
CC: Martin Jansa <martin.jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
a5a10bfec7 migration-4.3: additional migration items
Add the following:

* Removed recipes
* One removed class
* Output file name changes
* Versioning changes
* tunctl removal

(From yocto-docs rev: 72114088bc9be184aab7b55087ea97a32a65cd6d)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
8292c949a0 migration-4.3: adjustments to existing text
* Reword the layername side-effects commentary to be a bit more readable
* Extend edgerouter removal description
* Correct capitalisation of systemd
* For QEMU_USE_SLIRP, specify what to use instead, and adjust the
  following list item to use the same style
* Extend statement on -crossssdk / MLPREFIX change to indicate what
  needs to be done

(From yocto-docs rev: bfc49b59b6cd905cef0294792f05661b36181a6e)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
25716e9d99 migration-4.3: remove some unnecessary items
Remove some items from the 4.3 migration guide:

* The PERLVERSION and PERLARCH items are already mentioned under the
  removed variables section
* The jsDelivr item is interesting, but it isn't a backwards
  compatibility issue that the user would need to take action to
  resolve, and we already cover it in the release notes.

(From yocto-docs rev: c72d190cd8ccc471a0b93b90b272c95cd57ef3dc)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
44ff7e1340 release-notes-4.3: feature additions
Some additional feature items from combing through commits (not 100%
complete yet.)

(From yocto-docs rev: 05c13cf0964a892a38531e3cfac68687278ee601)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
fcbe7a5caa release-notes-4.3: move new classes to Rust section
These are both Rust-related, let's move them the Rust section since they
are more notable there.

(From yocto-docs rev: 0510136abf8868d510125bae7f4096342bb94ec0)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
f0d9d84a74 release-notes-4.3: remove the Distribution section
This section doesn't make a lot of sense to separate out. The SPDX
change is now no longer Poky-specific, and the poky-altcfg usrmerge
change is not really notable given that poky-altcfg is not widely used
outside of our testing and also itself selects systemd as INIT_MANAGER
and thus requires usrmerge anyway (as noted elsewhere).

(From yocto-docs rev: 234379c81db810c1fc3b860d51a59c200e97b2ca)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
1ae470c15a release-notes-4.3: add CVEs, recipe upgrades, license changes, contributors
Add the list of CVE fixes, recipe upgrades (from commits since layer
index version comparison not currently working), license changes and
contributor list.

(From yocto-docs rev: 32bc3d603894ddefb4766fdf4e10442f1aa75216)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
f662f8e57a release-notes-4.3: tweaks to existing text
A few grammar tweaks.

(From yocto-docs rev: a3e1258be27a08147b062603bd1b6526b26e9516)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
9536ba3c6c release-notes-4.3: fix some typos
(From yocto-docs rev: 3c98d2a1bc023aed75261ed7f4e18977b587d2f0)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
20b23e1fba ref-manual: remove semicolons from *PROCESS_COMMAND variables
In nanbield these are no longer needed - spaces are sufficient.
The code still handles any semicolons (replacing them with spaces before
interpreting the value), but let's avoid people adding them from now on
in case we decide to change that in future.

(From yocto-docs rev: 2947f6309f86cdf5322a39d4420e77431a8e3572)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
98ab1b436a ref-manual: update SDK_NAME variable documentation
Update for changes in nanbield. Note that I am documenting what is set
by poky.conf here (since this is Yocto Project documentation), which is
slightly different from what is done in meta/conf/bitbake.conf.

(From yocto-docs rev: 9764cb9e19788eb1caea0d2e95fbe7a5c19887d4)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Paul Eggleton
abc2b81652 Remove references to apm in MACHINE_FEATURES
apm is no longer supported in nanbield.

(From yocto-docs rev: fa07d34db3b5ba670ed2dc1228ffb3c0c09b3c08)

Signed-off-by: Paul Eggleton <bluelightning@bluelightning.org>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Michael Opdenacker
73d64902fd bsp-guide: bsp.rst: update beaglebone example
(From yocto-docs rev: 8fb31b507c37d2c11e9dc98559bd7d145e1dce04)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
BELHADJ SALEM Talel
c329d14347 overview-manual: concepts: Add Bitbake Tasks Map
Create a Map to detail how BitBake handles a recipe's tasks
and its compile/runtime dependencies along with detailed comments.

(From yocto-docs rev: 7f0ab56aa302babab6c9d600a8d8a91708cf75f7)

Signed-off-by: Talel BELHAJSALEM <bhstalel@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Marta Rybczynska
3151b63cb6 dev-manual: extend the description of CVE patch preparation
Extend the description on how to prepare a patch for a CVE issue.
Add a more illustrative and current example of how to modify
the patch file. Add an example of how to use CVE_STATUS.

(From yocto-docs rev: f982f6be6b52ba0915b2e6f712270dec5dde64fc)

Signed-off-by: Marta Rybczynska <marta.rybczynska@syslinbit.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
aebf95e7c7 migration-guides: git recipes reword
(From yocto-docs rev: 9ef7cfd47a53ed45f3d0db8534a42cefbfdf63b3)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
a24c6cad13 migration-guides: packaging changes
(From yocto-docs rev: 7558c99f50f4d96e12299a5b3c1059a71281a475)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
7116cd7350 migration-guides: add BitBake changes
(From yocto-docs rev: c719d78cc9d7fb5092d2f5d0285b3eea9ad8acfe)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
cf0b21e7de migration-guides: add utility notes
(From yocto-docs rev: ba0dcf57944058d9d5f2f791d463c72098c49561)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
ad3e54bd5f migration-guides: add testing notes
(From yocto-docs rev: cd71d0406c96b44cc872f9eb4c8604bcdd62fed6)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
ff26beb48f migration-guides: enabling SPDX only for Poky, not a global default
(From yocto-docs rev: fae0b4af717602d04e06d8619389d6b50e0e8e2d)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
7be7f0f852 migration-guides: remove SERIAL_CONSOLES_CHECK
(From yocto-docs rev: 364f8c17ba380107b2d837e17403307c3e04477c)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
52fa1a3c52 migration-guides: add kernel notes
(From yocto-docs rev: 45b67c5a37d560738037478b28cb7eb3d2f8e966)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
14d33f1d2e migration-guides: mention CDN
(From yocto-docs rev: b7efe7984f9bd62891dc72a6763a6a5935454fdf)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
45830dcc7f migration-guides: mention LLVM 17
(From yocto-docs rev: 64099ca9b89dd74df7b3a6a287b95a5a317cf916)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
dfb846621d migration-guides: remove non-notable change
(From yocto-docs rev: 7e6276993fa3ce9c87e4d7945f140f381a99a902)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
0ffe438e8f migration-guides: QEMU_USE_SLIRP variable removed
(From yocto-docs rev: f50e9fe501ccafd18ed2d8a9e505be503a721846)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
b14a3e31ee migration-guides: edgerouter machine removed
(From yocto-docs rev: e2f7b7feea061ee584c554b64efd583a70debcac)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
6010b8e8e8 migration-guides: add debian 12 to newly supported distros
(From yocto-docs rev: cccc13437d6172e6b0134288aa67972b001e8d28)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Michael Opdenacker
eeab4261db migration-guides: further updates for release 4.3
(From yocto-docs rev: fcd7490afba8e70740a2d4c17f759bf3e330e88a)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Michael Opdenacker
4eabedf187 ref-manual: variables: remove SERIAL_CONSOLES_CHECK
No longer in use in Poky (dropped in Nanbield through
multiple commits)

(From yocto-docs rev: e5d39e85a0db27bfc857fae9649f799179888eee)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Michael Opdenacker
a9003d3a83 ref-manual: variables: add RECIPE_MAINTAINER
(From yocto-docs rev: 30e41530402a4f9c37f77e89bae7469b68aad901)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Michael Opdenacker
0565bd0379 ref-manual: variables: mention new CDN for SSTATE_MIRRORS
(From yocto-docs rev: 4ef0c24b206d71c348ff657a2ab83ab857539fb6)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Michael Opdenacker
7b8ce9b979 ref-manual: document cargo_c class
(From yocto-docs rev: 74fc6a70d4636b37fe4eab290ea974e0f1531dbf)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
CC: Frederic Martinsons <frederic.martinsons@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-06 22:52:32 +00:00
Ross Burton
96290c8b1c cve-check: don't warn if a patch is remote
We don't make do_cve_check depend on do_unpack because that would be a
waste of time 99% of the time.  The compromise here is that we can't
scan remote patches for issues, but this isn't a problem so downgrade
the warning to a note.

Also move the check for CVEs in the filename before the local file check
so that even with remote patches, we still check for CVE references in
the name.

(From OE-Core rev: 201f0e1d55ca2fa6ab948a82d94e52c6a77ca7d2)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 13:49:23 +00:00
Ross Burton
5cdac8795d cve-check: slightly more verbose warning when adding the same package twice
Occasionally the cve-check tool will warn that it is adding the same
package twice.  Knowing what this package is might be the first step
towards understanding where this message comes from.

(From OE-Core rev: 699863be46fab91d5729fce1dc5b795761247f98)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 13:49:23 +00:00
Ross Burton
7b119ca128 cve-check: sort the package list in the JSON report
The JSON report generated by the cve-check class is basically a huge
list of packages.  This list of packages is, however, unsorted.

To make things easier for people comparing the JSON, or more
specifically for git when archiving the JSON over time in a git
repository, we can sort the list by package name.

(From OE-Core rev: f3d9dd947e678078b57b4b607e231b702c26dd4a)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 13:49:23 +00:00
Ross Burton
3892744324 pixman: ignore CVE-2023-37769
This issue relates to a floating point exception in stress-test, which
is an unlikely security exploit at the best of times, but the test is
not installed so isn't relevant.

(From OE-Core rev: a36d62a06be6cce1a438f8f2178eb60aad6b7267)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 13:49:23 +00:00
Ross Burton
1ab33843ef zlib: ignore CVE-2023-45853
This CVE relates to a bug in the minizip tool, but we don't build that.

(From OE-Core rev: 5b06913e5883c35390c87f6660a0578c73ff4ddd)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 13:49:23 +00:00
Ross Burton
0542c12e89 libxml2: ignore disputed CVE-2023-45322
This CVE is a use-after-free which theoretically can be an exploit
vector, but this UAF only occurs when malloc() fails.  As it's
unlikely that the user can orchestrate malloc() failures at just the
place to break on _this_ malloc and not others it is disputed that this
is actually a security issue.

The underlying bug has been fixed, and will be incorporated into the
next release.

(From OE-Core rev: 8c70e7cecb1beb30a5be4ea9bbc89c2f2e11853b)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 13:49:23 +00:00
Ross Burton
372c596db1 linux-yocto: update CVE exclusions
(From OE-Core rev: d401ed0666a3bcb10b013f38e1a528dca62a9c0d)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 13:49:23 +00:00
Lee Chee Yang
d3724f0d04 documentation.conf: drop SERIAL_CONSOLES_CHECK
remove obsolete SERIAL_CONSOLES_CHECK.

(From OE-Core rev: 5ec0371e2837428cb1596b5f40f5653de8b64526)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-03 09:35:39 +00:00
Lee Chee Yang
7888592393 machine: drop obsolete SERIAL_CONSOLES_CHECK
(From meta-yocto rev: 715de050774907dd5596d826929b6588593a91ae)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-11-02 11:20:25 +00:00
Michael Opdenacker
bc00caadc9 ref-manual: document MESON_TARGET
(From yocto-docs rev: 8109eeb5b7a4e5b2f50047e049ce0295bdc94856)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
CC: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
6fb4c79030 manuals: improve description of CVE_STATUS and CVE_STATUS_GROUPS
- Mention CVE_STATUS_GROUPS in the development manual
  (otherwise only present in the reference manual, but with
  no reference to it)

- In the reference manual description of CVE_STATUS,
  link back to the development manual, to provide context.

(From yocto-docs rev: cfef5fe41b6c819e783c88829448ae38141650a5)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
1e1d892699 migration-guides: further updates for 4.3
(From yocto-docs rev: 3a4d172f0d5668f3c6527bd80d1dad7831e72e89)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
b6948e5524 ref-manual: document KERNEL_STRIP
(From yocto-docs rev: 0e1861dcb8819b86aba6a3e024efb8bfe4c300ad)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
779e407a80 migration-guides: mention runqemu change in serial port management
Plus a minor whitespace fix change

(From yocto-docs rev: 6f7e1b935168464b4682a8687aa6d031a1a9fb73)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reported-by: Mark Hatle <mark.hatle@kernel.crashing.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
b910386c6a migration-guides: updates for 4.3
(From yocto-docs rev: a2d79ed745df6fe243e6c5e1001d406001c0d3a7)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
CC: Paul Eggleton <bluelightning@bluelightning.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
148c203bd1 ref-manual: variables: document OEQA_REPRODUCIBLE_TEST_PACKAGE
Introduced by
https://git.yoctoproject.org/poky/commit/?id=88abdec715ed0c1f613c9b5132cd45db741d5c65

(From yocto-docs rev: 2e64352653cd7e89a2b08d84d6f7a1e039d4346a)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
8a032f4dbd ref-manual: document KERNEL_LOCALVERSION
Introduced by
https://git.yoctoproject.org/poky/commit/?id=66ed174ccdf7a89cb998f503cc6b631e2d1adcc0

(From yocto-docs rev: 4bdd4976667b802895b13541b77191a65335a175)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
CC: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
724a10232c test-manual: reproducible-builds: stop mentioning LTO bug
Now that https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
is closed.

(From yocto-docs rev: de23d389f3fe7c2e18325cf29361d90b9bb19ead)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Marta Rybczynska
e7ab20fda4 dev-manual: add security team processes
Add the initial version of the section on vulnerability reports,
operations of the Security Team with a
transcription of https://wiki.yoctoproject.org/wiki/Security_private_reporting

(From yocto-docs rev: 2b86ac95c557f1e57176cceff428eb63e56c6328)

Signed-off-by: Marta Rybczynska <marta.rybczynska@syslinbit.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Eero Aaltonen
35394fc7e9 ref-manual: add systemd-resolved to distro features
systemd-resolved is a distro feature added in poky commit
6f30e3586e

(From yocto-docs rev: 2adb9c0a37f7bdbb293e78d71c872ca3bd9c06c4)

Signed-off-by: Eero Aaltonen <eero.aaltonen@vaisala.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Michael Opdenacker
2e0b3adf18 manuals: correct "yocto-linux" by "linux-yocto"
(From yocto-docs rev: 1fc5046100f27126711df0513d1ad87a9a54f55a)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-31 13:12:06 +00:00
Marta Rybczynska
fb6d870a75 bitbake: SECURITY.md: add file
Add a SECURITY.md file with hints for security researchers and other
parties who might report potential security vulnerabilities.

(Bitbake rev: 936fcec41efacc4ce988c81882a9ae6403702bea)

Signed-off-by: Marta Rybczynska <marta.rybczynska@syslinbit.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-24 12:52:39 +01:00
BELHADJ SALEM Talel
0ddd876f9f ref-manual: variables: add example for SYSROOT_DIRS variable
(From yocto-docs rev: 65b62118da6f355e56c489c6be08ba9ea94b9f04)

Signed-off-by: Talel BELHAJSALEM <bhstalel@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
BELHADJ SALEM Talel
cfa4458422 ref-manual: variables: add TOOLCHAIN_OPTIONS variable
(From yocto-docs rev: 6f7bd97a6d3d6d8cfd149a7e07df35da4141e650)

Signed-off-by: Talel BELHAJSALEM <bhstalel@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
BELHADJ SALEM Talel
f20b3d92eb ref-manual: variables: add RECIPE_SYSROOT and RECIPE_SYSROOT_NATIVE
(From yocto-docs rev: 8aa25e2a668d35bab2f79457248abcde92dc92aa)

Signed-off-by: Talel BELHAJSALEM <bhstalel@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Michael Opdenacker
d0d66f5337 dev-manual: start.rst: remove obsolete reference
Remove a reference to a web resource which is clearly marked as obsolete.
Replace the unnecessarily verbose note by just links to the mentioned tools.

[YOCTO #15233]

(From yocto-docs rev: 3f979f5d2446d57d75f0c4ad2199510d533880e8)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reported-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Michael Opdenacker
e704b9b4bc brief-yoctoprojectqs: use new CDN mirror for sstate
Recommended instead of the Yocto Project mirror, because expected
to be faster. Make sure you only set one such mirror.

(From yocto-docs rev: 5a2d09501ab807a0f61c10533f3bd81894f6f20e)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
CC: richard.purdie@linuxfoundation.org
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Jérémy Rosen
f35420ba71 ref-manual: Add documentation for the unimplemented-ptest QA warning
(From yocto-docs rev: d90106ff2d905e457659acdb65a91ce5dcfdd05e)

Signed-off-by: Jérémy Rosen <jeremy.rosen@smile.fr>
Reviewed-by: Yoann Congal <yoann.congal@smile.fr>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Trevor Gamblin
fc0e384d19 contributor-guide: clarify patchtest usage
- Make it clear that patchtest only supports openembedded-core for now
- Add a short list of instructions for installing Python module
  dependencies on the host
- Add a step to add meta-selftest with bitbake layers so that all tests
  can run

(From yocto-docs rev: bcd58d68e72226be1930593f5f7fb37de15b7913)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Trevor Gamblin
e3cfbe2d78 contributor-guide: add patchtest section
(From yocto-docs rev: 236cd04d62bdf653aae9b41d32d9f87848a34339)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
BELHADJ SALEM Talel
d9e40c6025 dev-manual: layers: Add notes about layer.conf
As discussed before with Richard Purdie, the code supports this but the documentation does not.
Developers in general will not notice this or focus on it because they do not mess with the
layer.conf template file, but in my opinion I think more details can help.

(From yocto-docs rev: 15fc103d4ddd14698c8e75cc654ac157ca1ad740)

Signed-off-by: Talel BELHAJSALEM <bhstalel@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Quentin Schulz
55d6a19062 ref-manual: variables: provide no-match example for COMPATIBLE_MACHINE
COMPATIBLE_MACHINE is used to forbid the use of a recipe or its packages
for a specific set of machines.

In some cases, it may make more sense to have the logic inverted and
have the recipe always forbidden except for hand-picked machines. Such
could be the case for pieces of software that only support some
architectures. In that scenario, it is sometimes a bit easier on the eye
and for maintenance to use the OVERRIDES mechanism but for that, a
default should be set.

COMPATIBLE_MACHINE:aarch64 = "^(aarch64)$"
COMPATIBLE_MACHINE:mips64 = "^(mips64)$"

wouldn't do much because if COMPATIBLE_MACHINE isn't set, the recipe is
assumed compatible and therefore, if no default is provided we enter
that case.

Hence, we need to add

COMPATIBLE_MACHINE = "^$"

as default so that it only matches the empty string, which isn't
possible for MACHINEOVERRIDES.

Cc: Quentin Schulz <foss+yocto@0leil.net>
(From yocto-docs rev: 52196d39bc85de267daffb0074eb59786751f57d)

Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Robert P. J. Day
f81ed4fd61 profile-manual: aesthetic cleanups
Various aesthetic cleanups of section 1 of that manual, including:

  * replace 'HOWTO' with manual
  * add more examples of sdk-related images
  * font fixes

(From yocto-docs rev: 608e93e13a8316a8d40e0675d4335084efa3736a)

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
BELHADJ SALEM Talel
273fbf4e76 ref-manual: Fix PACKAGECONFIG term and add an example
PACKAGECONFIG's first and second flag value will be added to PACKAGECONFIG_CONFARGS
and then it will be added to the appropriate variable (EXTRA_OECMAKE, or ...)
So we need to only mention PACKAGECONFIG_CONFARGS and it will lead to other variables.

I added a custom example that can help understanding very well PACKAGECONFIG.

(From yocto-docs rev: 7f26b0c0a08d6be9810128369265b0c494e7191b)

Signed-off-by: Talel BELHAJSALEM <bhstalel@gmail.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Robert P. J. Day
dde4dd6bc1 dev-manual: new-recipe.rst: add missing parenthesis to "Patching Code" section
Add missing parenthesis, and another example of a compressed patch filename.

(From yocto-docs rev: d44ccb5ed4292b0371651f38b9a0e3083f60ae87)

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Michael Opdenacker
7e2bedcc5a bsp-guide: bsp: skip Intel machines no longer supported in Poky
(From yocto-docs rev: 0f8fe127eb9ae2f56b280a7634ea7ab9a270f382)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reported-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Michael Opdenacker
0df0de095a manuals: update list of supported machines
The EdgeRouter machine is no longer supported.
https://git.yoctoproject.org/poky/commit/?id=0c64d0e4317e3749f7f7ed9ecd5d08bbb0cedc9e

(From yocto-docs rev: e600522f2d2514bdd888c91043b9c59563ee7a6d)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Michael Opdenacker
7eca8e35db sdk-manual: appendix-obtain: improve and update descriptions
- Improve text formatting
- Stop mentioning all possible values
- Update examples
- Correct descriptions

(From yocto-docs rev: f7437c2efa1014dc46481993b5e87d52dcf42b05)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Michael Opdenacker
115aa0a4fd dev-manual: wic: update "wic list images" output
(From yocto-docs rev: b9791285e5df4fa124230d2da4dcabb67088e23b)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Michael Opdenacker
b21d2b401e manuals: update linux-yocto append examples
(From yocto-docs rev: 0d195d66e434ddedd33bf8db89643fa5ab192e29)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Arne Schwerdt
9431c9292d ref-manual: Warn about COMPATIBLE_MACHINE skipping native recipes
(From yocto-docs rev: fcc9b54cc46a0831f79a96e041cbe8deed58cf66)

Signed-off-by: Arne Schwerdt <arne.schwerdt@elbbits.com>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20 15:07:07 +01:00
Richard Purdie
15b576c410 build-appliance-image: Update to nanbield head revision
(From OE-Core rev: 4c261f8cbdf0c7196a74daad041d04eb093015f3)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19 23:56:34 +01:00
Richard Purdie
631f5c6d4f build-appliance-image: Update to nanbield head revision
(From OE-Core rev: 6ecb3dac0b0033ae92a2727a0ae8803d52edaa64)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19 23:15:04 +01:00
Richard Purdie
37e997f797 build-appliance-image: Update to nanbield head revision
(From OE-Core rev: 12fa669ea2372e759139430b23edc041e86fb543)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19 17:01:41 +01:00
Bruce Ashfield
157e13d4a0 linux-yocto/6.5: serial: core: integrate upstream fixes
Integrating the following commit(s) to linux-yocto/6.5:

    14f83e409308 serial: core: test for -EINPROGRESS during tx power management validation
    1b5b735f311f serial: core: Fix checks for tx runtime PM state
    dee98a75d75c Revert "serial-core: disable power managment for serial tx"

(From OE-Core rev: 4c9a85ed1d69e55963cd77122e5c869b30f3dbe4)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19 17:01:04 +01:00
Bruce Ashfield
482c4d0a95 linux-yocto/6.5: config: remove VIDEO_STK1160_COMMON
Integrating the following commit(s) to linux-yocto/.:

    4531e74daf0 media/media-usb-tv.cfg: remove VIDEO_STK1160_COMMON

(From OE-Core rev: 40f2edd66afe5e5af607e110da78eb0a4a0b9cb9)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19 17:01:04 +01:00
Ross Burton
53c006ba1a patchtest: sort when reading patches from a directory
When reading patches from a directory it's important to sort the output
of os.listdir(), as that returns the files in an effectively random
order.  We can't test the patches apply if they're applied in the wrong
order, and typically patch filenames are prefixed with a counter to
ensure the order is correct.

(From OE-Core rev: b2bbd5b4071d913ed24a9ffe43d4a97b0db16c6c)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19 17:01:04 +01:00
Trevor Gamblin
a98b1229df patchtest: check for untracked changes
[YOCTO #15243]

Avoid overwriting local changes when running patchtest by checking for
anything unstaged or uncommitted in the target repo, and logging an
error if something is found. This will provide the user helpful feedback
if (for example) they forgot to commit a change for their patch under
test, and will leave the target repository in a reasonable state (rather
than a temporary branch created by patchtest).

(From OE-Core rev: 2d24ff9568d729b17cfc746d0948e63c78d9f3ae)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19 17:01:04 +01:00
5514 changed files with 677762 additions and 115 deletions

1
.gitignore vendored
View File

@@ -36,4 +36,3 @@ _toaster_clones/
downloads/
sstate-cache/
toaster.sqlite
.vscode/

2
.templateconf Normal file
View File

@@ -0,0 +1,2 @@
# Template settings
TEMPLATECONF=${TEMPLATECONF:-meta-poky/conf/templates/default}

20
LICENSE Normal file
View File

@@ -0,0 +1,20 @@
Different components of OpenEmbedded are under different licenses (a mix
of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
details of the individual licenses.
All metadata is MIT licensed unless otherwise stated. Source code
included in tree for individual recipes (e.g. patches) are under
the LICENSE stated in the associated recipe (.bb file) unless
otherwise stated.
License information for any other files is either explicitly stated
or defaults to GPL version 2 only.
Individual files contain the following style tags instead of the full license
text to identify their license:
SPDX-License-Identifier: GPL-2.0-only
SPDX-License-Identifier: MIT
This enables machine processing of license information based on the SPDX
License Identifiers that are here available: http://spdx.org/licenses/

288
LICENSE.GPL-2.0-only Normal file
View File

@@ -0,0 +1,288 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Note:
Individual files contain the following tag instead of the full license text.
SPDX-License-Identifier: GPL-2.0-only
This enables machine processing of license information based on the SPDX
License Identifiers that are here available: http://spdx.org/licenses/

25
LICENSE.MIT Normal file
View File

@@ -0,0 +1,25 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Note:
Individual files contain the following tag instead of the full license text.
SPDX-License-Identifier: MIT
This enables machine processing of license information based on the SPDX
License Identifiers that are here available: http://spdx.org/licenses/

71
MAINTAINERS.md Normal file
View File

@@ -0,0 +1,71 @@
OpenEmbedded-Core and Yocto Project Maintainer Information
==========================================================
OpenEmbedded and Yocto Project work jointly together to maintain the metadata,
layers, tools and sub-projects that make up their ecosystems.
The projects operate through collaborative development. This currently takes
place on mailing lists for many components as the "pull request on github"
workflow works well for single or small numbers of maintainers but we have
a large number, all with different specialisms and benefit from the mailing
list review process. Changes therefore undergo peer review through mailing
lists in many cases.
This file aims to acknowledge people with specific skills/knowledge/interest
both to recognise their contributions but also empower them to help lead and
curate those components. Where we have people with specialist knowledge in
particular areas, during review patches/feedback from these people in these
areas would generally carry weight.
This file is maintained in OE-Core but may refer to components that are separate
to it if that makes sense in the context of maintainership. The README of specific
layers and components should ultimately be definitive about the patch process and
maintainership for the component.
Recipe Maintainers
------------------
See meta/conf/distro/include/maintainers.inc
Component/Subsystem Maintainers
-------------------------------
* Kernel (inc. linux-yocto, perf): Bruce Ashfield
* Reproducible Builds: Joshua Watt
* Toaster: David Reyna
* Hash-Equivalence: Joshua Watt
* Recipe upgrade infrastructure: Alex Kanavin
* Toolchain: Khem Raj
* ptest-runner: Aníbal Limón
* opkg: Alex Stewart
* devtool: Saul Wold
* eSDK: Saul Wold
* overlayfs: Vyacheslav Yurkov
Maintainers needed
------------------
* Pseudo
* Layer Index
* recipetool
* QA framework/automated testing
* error reporting system/web UI
* wic
* Patchwork
* Patchtest
* Matchbox
* Sato
* Autobuilder
Layer Maintainers needed
------------------------
* meta-gplv2 (ideally new strategy but active maintainer welcome)
Shadow maintainers/development needed
--------------------------------------
* toaster
* bitbake

5
MEMORIAM Normal file
View File

@@ -0,0 +1,5 @@
Some project contributors who are sadly no longer with us:
Greg Gilbert (treke) - Ahead of his time with licensing
Thomas Wood (thos) - Creator of the original sato
Scott Rifenbark (scottrif) - Our long standing techwriter whose words live on

114
README
View File

@@ -1,114 +0,0 @@
The poky repository master branch is no longer being updated.
You can either:
a) switch to individual clones of bitbake, openembedded-core, meta-yocto and yocto-docs
https://docs.yoctoproject.org/dev/dev-manual/poky-manual-setup.html
b) use the new bitbake-setup
https://docs.yoctoproject.org/bitbake/dev/bitbake-user-manual/bitbake-user-manual-environment-setup.html
You can find more information in our documentation: https://docs.yoctoproject.org/
Note that "poky" the distro setting is still available in meta-yocto as
before and we continue to use and maintain that.
Long live Poky!
Some further information on the background of this change follows. The
details are taken from:
https://lists.openembedded.org/g/openembedded-architecture/message/2179
TLDR: People have complained about the combo-layer built poky
repository for years. It was meant to be a temporary thing, we now have
an alternative and I'm therefore doing what I promised I'd do. Change
is tough, things may break but this is the right point to at least try
it.
I'd like to note that:
* setting up builds with a separate oe-core and bitbake clone
works as it always has done
* you can change your CI just to use those two repos instead of poky
* bitbake-setup isn't mandatory, it will just be what the yocto-
docs presents to users
* we don't have to stop maintaining the poky repository
however nobody will test the new approach/code unless we do
* we are optionally exposing sstate mirrors in the new config
* we are also exposing config fragments to users
* poky as a DISTRO in meta-yocto remains
A bit more about the history and background for those who are
interested and then some FAQs:
Back around 2010 when we split up openembedded-classic and started
developing layers, we made the artificial "poky" repository construct
as a way to let people easily and quickly get started with the project.
without cloning and managing multiple repositories. Layers were a new
idea with lots of rough edges. kas didn't exist, I think repo was only
just created and it was a different world. For us, it meant hacking up
a quick tool, "combo-layer" and it was really a temporary solution to
fill a gap and it was at least as functional as repo of the era. It was
assumed we'd work it out properly in the future.
At developer meetings there are inevitable questions about why
poky/combo-layer exist and few seem to actually like/support it. There
are continual questions about why a tool doesn't exist or why we don't
adopt one too.
15 years later, a bit longer than we might have thought, we are finally
in a position where there may be a viable way forward to change.
It has taken us a bit of time to get to this point. I wrote the
original description of something like bitbake-setup about 7-8 years
ago. I shared it privately with a few people, the review feedback
stopped me pushing it further as I simply did not have the bandwidth.
We were fortunate to get funding from the Sovereign Tech Fund to start
the work and whilst I'd probably prefer to avoid the issue, the time
had come to start. Since then, Alexander Kanavin has put a lot of work
into getting it to the point where it would be possible to switch. A
huge thanks to him for getting this to the current point.
Why not use kas/submodules/repo?
This topic has been discussed in depth several times. Very roughly,
these are either difficult to focus on our use cases or have specific
designs and intent which we as a project would struggle to influence.
We are taking significant influence from some of them but also trying
to build something where we can benefit from tight direct integration
with bitbake and the metadata. For example fragment support is generic
and hopefully something other approaches can also benefit from. We want
to provide something we can switch the projects docs and autobuilder to
which we can control and develop as we need it to. We are not aiming to
force anyone to switch, you can use whichever tool you want.
Can we not keep poky [repository master branch] around?
If we do that, nobody will use the new tooling and it will be a
disaster as issues won't get resolved. We need our CI to use the same
thing we promote to our new and experienced users. We need this new
tooling to be usable by our experienced developers too. We have tried
for months to get people to try it and they simply don't. Making a
release with it won't change much either. It needs people using it and
for that, poky has to stop being updated.
What happens to poky [repository]?
The LTS branches continue their lifetime as planned. For master, I'll
probably put a final commit in changing to just a README which points
people at the bitbake-setup changes and explains what happened.
What are the timelines? Why now?
If we're going to make a change, we really want this in the next LTS
release, which is April 2026. We only have one release before that
which is now, October 2025. We therefore need to switch now, and then
give us time to update docs, fix issues that arise and so on and have
it in a release cycle. Whilst it means delaying the Oct 2025 release
slightly, that is the right thing to do in the context of the bigger
picture.

33
README.OE-Core.md Normal file
View File

@@ -0,0 +1,33 @@
OpenEmbedded-Core
=================
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:
https://www.openembedded.org/
The Yocto Project has extensive documentation about OE including a reference manual
which can be found at:
https://docs.yoctoproject.org/
Contributing
------------
Please refer to our contributor guide here: https://docs.yoctoproject.org/dev/contributor-guide/
for full details on how to submit changes.
As a quick guide, patches should be sent to openembedded-core@lists.openembedded.org
The git command to do that would be:
git send-email -M -1 --to openembedded-core@lists.openembedded.org
Mailing list:
https://lists.openembedded.org/g/openembedded-core
Source code:
https://git.openembedded.org/openembedded-core/

1
README.hardware.md Symbolic link
View File

@@ -0,0 +1 @@
meta-yocto-bsp/README.hardware.md

1
README.md Symbolic link
View File

@@ -0,0 +1 @@
README.poky.md

1
README.poky.md Symbolic link
View File

@@ -0,0 +1 @@
meta-poky/README.poky.md

15
README.qemu.md Normal file
View File

@@ -0,0 +1,15 @@
QEMU Emulation Targets
======================
To simplify development, the build system supports building images to
work with the QEMU emulator in system emulation mode. Several architectures
are currently supported in 32 and 64 bit variants:
* ARM (qemuarm + qemuarm64)
* x86 (qemux86 + qemux86-64)
* PowerPC (qemuppc only)
* MIPS (qemumips + qemumips64)
Use of the QEMU images is covered in the Yocto Project Reference Manual.
The appropriate MACHINE variable value corresponding to the target is given
in brackets.

22
SECURITY.md Normal file
View File

@@ -0,0 +1,22 @@
How to Report a Potential Vulnerability?
========================================
If you would like to report a public issue (for example, one with a released
CVE number), please report it using the
[https://bugzilla.yoctoproject.org/enter_bug.cgi?product=Security Security Bugzilla]
If you are dealing with a not-yet released or urgent issue, please send a
message to security AT yoctoproject DOT org, including as many details as
possible: the layer or software module affected, the recipe and its version,
and any example code, if available.
Branches maintained with security fixes
---------------------------------------
See [https://wiki.yoctoproject.org/wiki/Stable_Release_and_LTS Stable release and LTS]
for detailed info regarding the policies and maintenance of Stable branches.
The [https://wiki.yoctoproject.org/wiki/Releases Release page] contains a list of all
releases of the Yocto Project. Versions in grey are no longer actively maintained with
security patches, but well-tested patches may still be accepted for them for
significant issues.

2
bitbake/.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
*min.js binary
*min.css binary

10
bitbake/AUTHORS Normal file
View File

@@ -0,0 +1,10 @@
Tim Ansell <mithro@mithis.net>
Phil Blundell <pb@handhelds.org>
Seb Frankengul <seb@frankengul.org>
Holger Freyther <holger@moiji-mobile.com>
Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
Chris Larson <kergoth@handhelds.org>
Ulrich Luckas <luckas@musoft.de>
Mickey Lauer <mickey@Vanille.de>
Richard Purdie <rpurdie@rpsys.net>
Holger Schurig <holgerschurig@gmx.de>

317
bitbake/ChangeLog Normal file
View File

@@ -0,0 +1,317 @@
Changes in Bitbake 1.9.x:
- Add PE (Package Epoch) support from Philipp Zabel (pH5)
- Treat python functions the same as shell functions for logging
- Use TMPDIR/anonfunc as a __anonfunc temp directory (T)
- Catch truncated cache file errors
- Allow operations other than assignment on flag variables
- Add code to handle inter-task dependencies
- Fix cache errors when generation dotGraphs
- Make sure __inherit_cache is updated before calling include() (from Michael Krelin)
- Fix bug when target was in ASSUME_PROVIDED (#2236)
- Raise ParseError for filenames with multiple underscores instead of infinitely looping (#2062)
- Fix invalid regexp in BBMASK error handling (missing import) (#1124)
- Promote certain warnings from debug to note 2 level
- Update manual
- Correctly redirect stdin when forking
- If parsing errors are found, exit, too many users miss the errors
- Remove supriours PREFERRED_PROVIDER warnings
- svn fetcher: Add _buildsvncommand function
- Improve certain error messages
- Rewrite svn fetcher to make adding extra operations easier
as part of future SRCDATE="now" fixes
(requires new FETCHCMD_svn definition in bitbake.conf)
- Change SVNDIR layout to be more unique (fixes #2644 and #2624)
- Add ConfigParsed Event after configuration parsing is complete
- Add SRCREV support for svn fetcher
- data.emit_var() - only call getVar if we need the variable
- Stop generating the A variable (seems to be legacy code)
- Make sure intertask depends get processed correcting in recursive depends
- Add pn-PN to overrides when evaluating PREFERRED_VERSION
- Improve the progress indicator by skipping tasks that have
already run before starting the build rather than during it
- Add profiling option (-P)
- Add BB_SRCREV_POLICY variable (clear or cache) to control SRCREV cache
- Add SRCREV_FORMAT support
- Fix local fetcher's localpath return values
- Apply OVERRIDES before performing immediate expansions
- Allow the -b -e option combination to take regular expressions
- Fix handling of variables with expansion in the name using _append/_prepend
e.g. RRECOMMENDS_${PN}_append_xyz = "abc"
- Add plain message function to bb.msg
- Sort the list of providers before processing so dependency problems are
reproducible rather than effectively random
- Fix/improve bitbake -s output
- Add locking for fetchers so only one tries to fetch a given file at a given time
- Fix int(0)/None confusion in runqueue.py which causes random gaps in dependency chains
- Expand data in addtasks
- Print the list of missing DEPENDS,RDEPENDS for the "No buildable providers available for required...."
error message.
- Rework add_task to be more efficient (6% speedup, 7% number of function calls reduction)
- Sort digraph output to make builds more reproducible
- Split expandKeys into two for loops to benefit from the expand_cache (12% speedup)
- runqueue.py: Fix idepends handling to avoid dependency errors
- Clear the terminal TOSTOP flag if set (and warn the user)
- Fix regression from r653 and make SRCDATE/CVSDATE work for packages again
- Fix a bug in bb.decodeurl where http://some.where.com/somefile.tgz decoded to host="" (#1530)
- Warn about malformed PREFERRED_PROVIDERS (#1072)
- Add support for BB_NICE_LEVEL option (#1627)
- Psyco is used only on x86 as there is no support for other architectures.
- Sort initial providers list by default preference (#1145, #2024)
- Improve provider sorting so prefered versions have preference over latest versions (#768)
- Detect builds of tasks with overlapping providers and warn (will become a fatal error) (#1359)
- Add MULTI_PROVIDER_WHITELIST variable to allow known safe multiple providers to be listed
- Handle paths in svn fetcher module parameter
- Support the syntax "export VARIABLE"
- Add bzr fetcher
- Add support for cleaning directories before a task in the form:
do_taskname[cleandirs] = "dir"
- bzr fetcher tweaks from Robert Schuster (#2913)
- Add mercurial (hg) fetcher from Robert Schuster (#2913)
- Don't add duplicates to BBPATH
- Fix preferred_version return values (providers.py)
- Fix 'depends' flag splitting
- Fix unexport handling (#3135)
- Add bb.copyfile function similar to bb.movefile (and improve movefile error reporting)
- Allow multiple options for deptask flag
- Use git-fetch instead of git-pull removing any need for merges when
fetching (we don't care about the index). Fixes fetch errors.
- Add BB_GENERATE_MIRROR_TARBALLS option, set to 0 to make git fetches
faster at the expense of not creating mirror tarballs.
- SRCREV handling updates, improvements and fixes from Poky
- Add bb.utils.lockfile() and bb.utils.unlockfile() from Poky
- Add support for task selfstamp and lockfiles flags
- Disable task number acceleration since it can allow the tasks to run
out of sequence
- Improve runqueue code comments
- Add task scheduler abstraction and some example schedulers
- Improve circular dependency chain debugging code and user feedback
- Don't give a stacktrace for invalid tasks, have a user friendly message (#3431)
- Add support for "-e target" (#3432)
- Fix shell showdata command (#3259)
- Fix shell data updating problems (#1880)
- Properly raise errors for invalid source URI protocols
- Change the wget fetcher failure handling to avoid lockfile problems
- Add support for branches in git fetcher (Otavio Salvador, Michael Lauer)
- Make taskdata and runqueue errors more user friendly
- Add norecurse and fullpath options to cvs fetcher
- Fix exit code for build failures in --continue mode
- Fix git branch tags fetching
- Change parseConfigurationFile so it works on real data, not a copy
- Handle 'base' inherit and all other INHERITs from parseConfigurationFile
instead of BBHandler
- Fix getVarFlags bug in data_smart
- Optmise cache handling by more quickly detecting an invalid cache, only
saving the cache when its changed, moving the cache validity check into
the parsing loop and factoring some getVar calls outside a for loop
- Cooker: Remove a debug message from the parsing loop to lower overhead
- Convert build.py exec_task to use getVarFlags
- Update shell to use cooker.buildFile
- Add StampUpdate event
- Convert -b option to use taskdata/runqueue
- Remove digraph and switch to new stamp checking code. exec_task no longer
honours dependencies
- Make fetcher timestamp updating non-fatal when permissions don't allow
updates
- Add BB_SCHEDULER variable/option ("completion" or "speed") controlling
the way bitbake schedules tasks
- Add BB_STAMP_POLICY variable/option ("perfile" or "full") controlling
how extensively stamps are looked at for validity
- When handling build target failures make sure idepends are checked and
failed where needed. Fixes --continue mode crashes.
- Fix -f (force) in conjunction with -b
- Fix problems with recrdeptask handling where some idepends weren't handled
correctly.
- Handle exit codes correctly (from pH5)
- Work around refs/HEAD issues with git over http (#3410)
- Add proxy support to the CVS fetcher (from Cyril Chemparathy)
- Improve runfetchcmd so errors are seen and various GIT variables are exported
- Add ability to fetchers to check URL validity without downloading
- Improve runtime PREFERRED_PROVIDERS warning message
- Add BB_STAMP_WHITELIST option which contains a list of stamps to ignore when
checking stamp dependencies and using a BB_STAMP_POLICY of "whitelist"
- No longer weight providers on the basis of a package being "already staged". This
leads to builds being non-deterministic.
- Flush stdout/stderr before forking to fix duplicate console output
- Make sure recrdeps tasks include all inter-task dependencies of a given fn
- Add bb.runqueue.check_stamp_fn() for use by packaged-staging
- Add PERSISTENT_DIR to store the PersistData in a persistent
directory != the cache dir.
- Add md5 and sha256 checksum generation functions to utils.py
- Correctly handle '-' characters in class names (#2958)
- Make sure expandKeys has been called on the data dictionary before running tasks
- Correctly add a task override in the form task-TASKNAME.
- Revert the '-' character fix in class names since it breaks things
- When a regexp fails to compile for PACKAGES_DYNAMIC, print a more useful error (#4444)
- Allow to checkout CVS by Date and Time. Just add HHmm to the SRCDATE.
- Move prunedir function to utils.py and add explode_dep_versions function
- Raise an exception if SRCREV == 'INVALID'
- Fix hg fetcher username/password handling and fix crash
- Fix PACKAGES_DYNAMIC handling of packages with '++' in the name
- Rename __depends to __base_depends after configuration parsing so we don't
recheck the validity of the config files time after time
- Add better environmental variable handling. By default it will now only pass certain
whitelisted variables into the data store. If BB_PRESERVE_ENV is set bitbake will use
all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be
used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used
to extend the internal whitelist.
- Perforce fetcher fix to use commandline options instead of being overriden by the environment
- bb.utils.prunedir can cope with symlinks to directoriees without exceptions
- use @rev when doing a svn checkout
- Add osc fetcher (from Joshua Lock in Poky)
- When SRCREV autorevisioning for a recipe is in use, don't cache the recipe
- Add tryaltconfigs option to control whether bitbake trys using alternative providers
to fulfil failed dependencies. It defaults to off, changing the default since this
behaviour confuses many users and isn't often useful.
- Improve lock file function error handling
- Add username handling to the git fetcher (Robert Bragg)
- Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher
- Export more variables to the fetcher commands to allow ssh checkouts and checkouts through
proxies to work better. (from Poky)
- Also allow user and pswd options in SRC_URIs globally (from Poky)
- Improve proxy handling when using mirrors (from Poky)
- Add bb.utils.prune_suffix function
- Fix hg checkouts of specific revisions (from Poky)
- Fix wget fetching of urls with parameters specified (from Poky)
- Add username handling to git fetcher (from Poky)
- Set HOME environmental variable when running fetcher commands (from Poky)
- Make sure allowed variables inherited from the environment are exported again (from Poky)
- When running a stage task in bbshell, run populate_staging, not the stage task (from Poky)
- Fix + character escaping from PACKAGES_DYNAMIC (thanks Otavio Salvador)
- Addition of BBCLASSEXTEND support for allowing one recipe to provide multiple targets (from Poky)
Changes in Bitbake 1.8.0:
- Release 1.7.x as a stable series
Changes in BitBake 1.7.x:
- Major updates of the dependency handling and execution
of tasks. Code from bin/bitbake replaced with runqueue.py
and taskdata.py
- New task execution code supports multithreading with a simplistic
threading algorithm controlled by BB_NUMBER_THREADS
- Change of the SVN Fetcher to keep the checkout around
courtsey of Paul Sokolovsky (#1367)
- PATH fix to bbimage (#1108)
- Allow debug domains to be specified on the commandline (-l)
- Allow 'interactive' tasks
- Logging message improvements
- Drop now uneeded BUILD_ALL_DEPS variable
- Add support for wildcards to -b option
- Major overhaul of the fetchers making a large amount of code common
including mirroring code
- Fetchers now touch md5 stamps upon access (to show activity)
- Fix -f force option when used without -b (long standing bug)
- Add expand_cache to data_cache.py, caching expanded data (speedup)
- Allow version field in DEPENDS (ignored for now)
- Add abort flag support to the shell
- Make inherit fail if the class doesn't exist (#1478)
- Fix data.emit_env() to expand keynames as well as values
- Add ssh fetcher
- Add perforce fetcher
- Make PREFERRED_PROVIDER_foobar defaults to foobar if available
- Share the parser's mtime_cache, reducing the number of stat syscalls
- Compile all anonfuncs at once!
*** Anonfuncs must now use common spacing format ***
- Memorise the list of handlers in __BBHANDLERS and tasks in __BBTASKS
This removes 2 million function calls resulting in a 5-10% speedup
- Add manpage
- Update generateDotGraph to use taskData/runQueue improving accuracy
and also adding a task dependency graph
- Fix/standardise on GPLv2 licence
- Move most functionality from bin/bitbake to cooker.py and split into
separate funcitons
- CVS fetcher: Added support for non-default port
- Add BBINCLUDELOGS_LINES, the number of lines to read from any logfile
- Drop shebangs from lib/bb scripts
Changes in Bitbake 1.6.0:
- Better msg handling
- COW dict implementation from Tim Ansell (mithro) leading
to better performance
- Speed up of -s
Changes in Bitbake 1.4.4:
- SRCDATE now handling courtsey Justin Patrin
- #1017 fix to work with rm_work
Changes in BitBake 1.4.2:
- Send logs to oe.pastebin.com instead of pastebin.com
fixes #856
- Copy the internal bitbake data before building the
dependency graph. This fixes nano not having a
virtual/libc dependency
- Allow multiple TARBALL_STASH entries
- Cache, check if the directory exists before changing
into it
- git speedup cloning by not doing a checkout
- allow to have spaces in filenames (.conf, .bb, .bbclass)
Changes in BitBake 1.4.0:
- Fix to check both RDEPENDS and RDEPENDS_${PN}
- Fix a RDEPENDS parsing bug in utils:explode_deps()
- Update git fetcher behaviour to match git changes
- ASSUME_PROVIDED allowed to include runtime packages
- git fetcher cleanup and efficency improvements
- Change the format of the cache
- Update usermanual to document the Fetchers
- Major changes to caching with a new strategy
giving a major performance increase when reparsing
with few data changes
Changes in BitBake 1.3.3:
- Create a new Fetcher module to ease the
development of new Fetchers.
Issue #438 fixed by rpurdie@openedhand.com
- Make the Subversion fetcher honor the SRC Date
(CVSDATE).
Issue #555 fixed by chris@openedhand.com
- Expand PREFERRED_PROVIDER properly
Issue #436 fixed by rprudie@openedhand.com
- Typo fix for Issue #531 by Philipp Zabel for the
BitBake Shell
- Introduce a new special variable SRCDATE as
a generic naming to replace CVSDATE.
- Introduce a new keyword 'required'. In contrast
to 'include' parsing will fail if a to be included
file can not be found.
- Remove hardcoding of the STAMP directory. Patch
courtsey pHilipp Zabel
- Track the RDEPENDS of each package (rpurdie@openedhand.com)
- Introduce BUILD_ALL_DEPS to build all RDEPENDS. E.g
this is used by the OpenEmbedded Meta Packages.
(rpurdie@openedhand.com).
Changes in BitBake 1.3.2:
- reintegration of make.py into BitBake
- bbread is gone, use bitbake -e
- lots of shell updates and bugfixes
- Introduction of the .= and =. operator
- Sort variables, keys and groups in bitdoc
- Fix regression in the handling of BBCOLLECTIONS
- Update the bitbake usermanual
Changes in BitBake 1.3.0:
- add bitbake interactive shell (bitbake -i)
- refactor bitbake utility in OO style
- kill default arguments in methods in the bb.data module
- kill default arguments in methods in the bb.fetch module
- the http/https/ftp fetcher will fail if the to be
downloaded file was not found in DL_DIR (this is needed
to avoid unpacking the sourceforge mirror page)
- Switch to a cow like data instance for persistent and non
persisting mode (called data_smart.py)
- Changed the callback of bb.make.collect_bbfiles to carry
additional parameters
- Drastically reduced the amount of needed RAM by not holding
each data instance in memory when using a cache/persistent
storage
Changes in BitBake 1.2.1:
The 1.2.1 release is meant as a intermediate release to lay the
ground for more radical changes. The most notable changes are:
- Do not hardcode {}, use bb.data.init() instead if you want to
get a instance of a data class
- bb.data.init() is a factory and the old bb.data methods are delegates
- Do not use deepcopy use bb.data.createCopy() instead.
- Removed default arguments in bb.fetch

29
bitbake/LICENSE Normal file
View File

@@ -0,0 +1,29 @@
BitBake is licensed under the GNU General Public License version 2.0. See
LICENSE.GPL-2.0-only for further details.
Individual files contain the following style tags instead of the full license text:
SPDX-License-Identifier: GPL-2.0-only
This enables machine processing of license information based on the SPDX
License Identifiers that are here available: http://spdx.org/licenses/
The following external components are distributed with this software:
* The Toaster Simple UI application is based upon the Django project template, the files of which are covered by the BSD license and are copyright (c) Django Software
Foundation and individual contributors.
* Twitter Bootstrap (including Glyphicons), redistributed under the MIT license
* jQuery is redistributed under the MIT license.
* Twitter typeahead.js redistributed under the MIT license. Note that the JS source has one small modification, so the full unminified file is currently included to make it obvious where this is.
* jsrender is redistributed under the MIT license.
* QUnit is redistributed under the MIT license.
* Font Awesome fonts redistributed under the SIL Open Font License 1.1
* simplediff is distributed under the zlib license.

View File

@@ -0,0 +1,288 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Note:
Individual files contain the following tag instead of the full license text.
SPDX-License-Identifier: GPL-2.0-only
This enables machine processing of license information based on the SPDX
License Identifiers that are here available: http://spdx.org/licenses/

25
bitbake/LICENSE.MIT Normal file
View File

@@ -0,0 +1,25 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Note:
Individual files contain the following tag instead of the full license text.
SPDX-License-Identifier: MIT
This enables machine processing of license information based on the SPDX
License Identifiers that are here available: http://spdx.org/licenses/

63
bitbake/README Normal file
View File

@@ -0,0 +1,63 @@
Bitbake
=======
BitBake is a generic task execution engine that allows shell and Python tasks to be run
efficiently and in parallel while working within complex inter-task dependency constraints.
One of BitBake's main users, OpenEmbedded, takes this core and builds embedded Linux software
stacks using a task-oriented approach.
For information about Bitbake, see the OpenEmbedded website:
https://www.openembedded.org/
Bitbake plain documentation can be found under the doc directory or its integrated
html version at the Yocto Project website:
https://docs.yoctoproject.org
Bitbake requires Python version 3.8 or newer.
Contributing
------------
Please refer to our contributor guide here: https://docs.yoctoproject.org/dev/contributor-guide/
for full details on how to submit changes.
As a quick guide, patches should be sent to bitbake-devel@lists.openembedded.org
The git command to do that would be:
git send-email -M -1 --to bitbake-devel@lists.openembedded.org
If you're sending a patch related to the BitBake manual, make sure you copy
the Yocto Project documentation mailing list:
git send-email -M -1 --to bitbake-devel@lists.openembedded.org --cc docs@lists.yoctoproject.org
Mailing list:
https://lists.openembedded.org/g/bitbake-devel
Source code:
https://git.openembedded.org/bitbake/
Testing
-------
Bitbake has a testsuite located in lib/bb/tests/ whichs aim to try and prevent regressions.
You can run this with "bitbake-selftest". In particular the fetcher is well covered since
it has so many corner cases. The datastore has many tests too. Testing with the testsuite is
recommended before submitting patches, particularly to the fetcher and datastore. We also
appreciate new test cases and may require them for more obscure issues.
To run the tests "zstd" and "git" must be installed.
The assumption is made that this testsuite is run from an initialized OpenEmbedded build
environment (i.e. `source oe-init-build-env` is used). If this is not the case, run the
testsuite as follows:
export PATH=$(pwd)/bin:$PATH
bin/bitbake-selftest
The testsuite can alternatively be executed using pytest, e.g. obtained from PyPI (in this
case, the PATH is configured automatically):
pytest

24
bitbake/SECURITY.md Normal file
View File

@@ -0,0 +1,24 @@
How to Report a Potential Vulnerability?
========================================
If you would like to report a public issue (for example, one with a released
CVE number), please report it using the
[https://bugzilla.yoctoproject.org/enter_bug.cgi?product=Security Security Bugzilla].
If you have a patch ready, submit it following the same procedure as any other
patch as described in README.md.
If you are dealing with a not-yet released or urgent issue, please send a
message to security AT yoctoproject DOT org, including as many details as
possible: the layer or software module affected, the recipe and its version,
and any example code, if available.
Branches maintained with security fixes
---------------------------------------
See [https://wiki.yoctoproject.org/wiki/Stable_Release_and_LTS Stable release and LTS]
for detailed info regarding the policies and maintenance of Stable branches.
The [https://wiki.yoctoproject.org/wiki/Releases Release page] contains a list of all
releases of the Yocto Project. Versions in grey are no longer actively maintained with
security patches, but well-tested patches may still be accepted for them for
significant issues.

45
bitbake/bin/bitbake Executable file
View File

@@ -0,0 +1,45 @@
#!/usr/bin/env python3
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
import os
import sys
import warnings
warnings.simplefilter("default")
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
'lib'))
try:
import bb
except RuntimeError as exc:
sys.exit(str(exc))
from bb import cookerdata
from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
bb.utils.check_system_locale()
__version__ = "2.6.0"
if __name__ == "__main__":
if __version__ != bb.__version__:
sys.exit("Bitbake core version and program version mismatch!")
try:
sys.exit(bitbake_main(BitBakeConfigParameters(sys.argv),
cookerdata.CookerConfiguration()))
except BBMainException as err:
sys.exit(err)
except bb.BBHandledException:
sys.exit(1)
except Exception:
import traceback
traceback.print_exc()
sys.exit(1)

204
bitbake/bin/bitbake-diffsigs Executable file
View File

@@ -0,0 +1,204 @@
#!/usr/bin/env python3
# bitbake-diffsigs / bitbake-dumpsig
# BitBake task signature data dump and comparison utility
#
# Copyright (C) 2012-2013, 2017 Intel Corporation
#
# SPDX-License-Identifier: GPL-2.0-only
#
import os
import sys
import warnings
warnings.simplefilter("default")
import argparse
import logging
import pickle
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
import bb.tinfoil
import bb.siggen
import bb.msg
myname = os.path.basename(sys.argv[0])
logger = bb.msg.logger_create(myname)
is_dump = myname == 'bitbake-dumpsig'
def find_siginfo(tinfoil, pn, taskname, sigs=None):
result = None
tinfoil.set_event_mask(['bb.event.FindSigInfoResult',
'logging.LogRecord',
'bb.command.CommandCompleted',
'bb.command.CommandFailed'])
ret = tinfoil.run_command('findSigInfo', pn, taskname, sigs)
if ret:
while True:
event = tinfoil.wait_event(1)
if event:
if isinstance(event, bb.command.CommandCompleted):
break
elif isinstance(event, bb.command.CommandFailed):
logger.error(str(event))
sys.exit(2)
elif isinstance(event, bb.event.FindSigInfoResult):
result = event.result
elif isinstance(event, logging.LogRecord):
logger.handle(event)
else:
logger.error('No result returned from findSigInfo command')
sys.exit(2)
return result
def find_siginfo_task(bbhandler, pn, taskname, sig1=None, sig2=None):
""" Find the most recent signature files for the specified PN/task """
if not taskname.startswith('do_'):
taskname = 'do_%s' % taskname
if sig1 and sig2:
sigfiles = find_siginfo(bbhandler, pn, taskname, [sig1, sig2])
if not sigfiles:
logger.error('No sigdata files found matching %s %s matching either %s or %s' % (pn, taskname, sig1, sig2))
sys.exit(1)
elif sig1 not in sigfiles:
logger.error('No sigdata files found matching %s %s with signature %s' % (pn, taskname, sig1))
sys.exit(1)
elif sig2 not in sigfiles:
logger.error('No sigdata files found matching %s %s with signature %s' % (pn, taskname, sig2))
sys.exit(1)
latestfiles = [sigfiles[sig1], sigfiles[sig2]]
else:
filedates = find_siginfo(bbhandler, pn, taskname)
latestfiles = sorted(filedates.keys(), key=lambda f: filedates[f])[-2:]
if not latestfiles:
logger.error('No sigdata files found matching %s %s' % (pn, taskname))
sys.exit(1)
return latestfiles
# Define recursion callback
def recursecb(key, hash1, hash2):
hashes = [hash1, hash2]
hashfiles = find_siginfo(tinfoil, key, None, hashes)
recout = []
if not hashfiles:
recout.append("Unable to find matching sigdata for %s with hashes %s or %s" % (key, hash1, hash2))
elif hash1 not in hashfiles:
recout.append("Unable to find matching sigdata for %s with hash %s" % (key, hash1))
elif hash2 not in hashfiles:
recout.append("Unable to find matching sigdata for %s with hash %s" % (key, hash2))
else:
out2 = bb.siggen.compare_sigfiles(hashfiles[hash1], hashfiles[hash2], recursecb, color=color)
for change in out2:
for line in change.splitlines():
recout.append(' ' + line)
return recout
parser = argparse.ArgumentParser(
description=("Dumps" if is_dump else "Compares") + " siginfo/sigdata files written out by BitBake")
parser.add_argument('-D', '--debug',
help='Enable debug output',
action='store_true')
if is_dump:
parser.add_argument("-t", "--task",
help="find the signature data file for the last run of the specified task",
action="store", dest="taskargs", nargs=2, metavar=('recipename', 'taskname'))
parser.add_argument("sigdatafile1",
help="Signature file to dump. Not used when using -t/--task.",
action="store", nargs='?', metavar="sigdatafile")
else:
parser.add_argument('-c', '--color',
help='Colorize the output (where %(metavar)s is %(choices)s)',
choices=['auto', 'always', 'never'], default='auto', metavar='color')
parser.add_argument('-d', '--dump',
help='Dump the last signature data instead of comparing (equivalent to using bitbake-dumpsig)',
action='store_true')
parser.add_argument("-t", "--task",
help="find the signature data files for the last two runs of the specified task and compare them",
action="store", dest="taskargs", nargs=2, metavar=('recipename', 'taskname'))
parser.add_argument("-s", "--signature",
help="With -t/--task, specify the signatures to look for instead of taking the last two",
action="store", dest="sigargs", nargs=2, metavar=('fromsig', 'tosig'))
parser.add_argument("sigdatafile1",
help="First signature file to compare (or signature file to dump, if second not specified). Not used when using -t/--task.",
action="store", nargs='?')
parser.add_argument("sigdatafile2",
help="Second signature file to compare",
action="store", nargs='?')
options = parser.parse_args()
if is_dump:
options.color = 'never'
options.dump = True
options.sigdatafile2 = None
options.sigargs = None
if options.debug:
logger.setLevel(logging.DEBUG)
color = (options.color == 'always' or (options.color == 'auto' and sys.stdout.isatty()))
if options.taskargs:
with bb.tinfoil.Tinfoil() as tinfoil:
tinfoil.prepare(config_only=True)
if not options.dump and options.sigargs:
files = find_siginfo_task(tinfoil, options.taskargs[0], options.taskargs[1], options.sigargs[0],
options.sigargs[1])
else:
files = find_siginfo_task(tinfoil, options.taskargs[0], options.taskargs[1])
if options.dump:
logger.debug("Signature file: %s" % files[-1])
output = bb.siggen.dump_sigfile(files[-1])
else:
if len(files) < 2:
logger.error('Only one matching sigdata file found for the specified task (%s %s)' % (
options.taskargs[0], options.taskargs[1]))
sys.exit(1)
# Recurse into signature comparison
logger.debug("Signature file (previous): %s" % files[-2])
logger.debug("Signature file (latest): %s" % files[-1])
output = bb.siggen.compare_sigfiles(files[-2], files[-1], recursecb, color=color)
else:
if options.sigargs:
logger.error('-s/--signature can only be used together with -t/--task')
sys.exit(1)
try:
if not options.dump and options.sigdatafile1 and options.sigdatafile2:
with bb.tinfoil.Tinfoil() as tinfoil:
tinfoil.prepare(config_only=True)
output = bb.siggen.compare_sigfiles(options.sigdatafile1, options.sigdatafile2, recursecb, color=color)
elif options.sigdatafile1:
output = bb.siggen.dump_sigfile(options.sigdatafile1)
else:
logger.error('Must specify signature file(s) or -t/--task')
parser.print_help()
sys.exit(1)
except IOError as e:
logger.error(str(e))
sys.exit(1)
except (pickle.UnpicklingError, EOFError):
logger.error('Invalid signature data - ensure you are specifying sigdata/siginfo files')
sys.exit(1)
if output:
print('\n'.join(output))

1
bitbake/bin/bitbake-dumpsig Symbolic link
View File

@@ -0,0 +1 @@
bitbake-diffsigs

60
bitbake/bin/bitbake-getvar Executable file
View File

@@ -0,0 +1,60 @@
#! /usr/bin/env python3
#
# Copyright (C) 2021 Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
import argparse
import io
import os
import sys
import warnings
warnings.simplefilter("default")
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")
parser.add_argument('-q', '--quiet', help='Silence bitbake server logging', action="store_true")
parser.add_argument('--ignore-undefined', help='Suppress any errors related to undefined variables', action="store_true")
args = parser.parse_args()
if not args.value:
if args.unexpand:
sys.exit("--unexpand only makes sense with --value")
if args.flag:
sys.exit("--flag only makes sense with --value")
quiet = args.quiet or args.value
with bb.tinfoil.Tinfoil(tracking=True, setup_logging=not quiet) as tinfoil:
if args.recipe:
tinfoil.prepare(quiet=3 if quiet else 2)
d = tinfoil.parse_recipe(args.recipe)
else:
tinfoil.prepare(quiet=2, config_only=True)
d = tinfoil.config_data
value = None
if args.flag:
value = d.getVarFlag(args.variable, args.flag, expand=not args.unexpand)
if value is None and not args.ignore_undefined:
sys.exit(f"The flag '{args.flag}' is not defined for variable '{args.variable}'")
else:
value = d.getVar(args.variable, expand=not args.unexpand)
if value is None and not args.ignore_undefined:
sys.exit(f"The variable '{args.variable}' is not defined")
if args.value:
print(str(value if value is not None else ""))
else:
bb.data.emit_var(args.variable, d=d, all=True)

189
bitbake/bin/bitbake-hashclient Executable file
View File

@@ -0,0 +1,189 @@
#! /usr/bin/env python3
#
# Copyright (C) 2019 Garmin Ltd.
#
# SPDX-License-Identifier: GPL-2.0-only
#
import argparse
import hashlib
import logging
import os
import pprint
import sys
import threading
import time
import warnings
warnings.simplefilter("default")
try:
import tqdm
ProgressBar = tqdm.tqdm
except ImportError:
class ProgressBar(object):
def __init__(self, *args, **kwargs):
pass
def __enter__(self):
return self
def __exit__(self, *args, **kwargs):
pass
def update(self):
pass
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib'))
import hashserv
DEFAULT_ADDRESS = 'unix://./hashserve.sock'
METHOD = 'stress.test.method'
def main():
def handle_stats(args, client):
if args.reset:
s = client.reset_stats()
else:
s = client.get_stats()
pprint.pprint(s)
return 0
def handle_stress(args, client):
def thread_main(pbar, lock):
nonlocal found_hashes
nonlocal missed_hashes
nonlocal max_time
with hashserv.create_client(args.address) as client:
for i in range(args.requests):
taskhash = hashlib.sha256()
taskhash.update(args.taskhash_seed.encode('utf-8'))
taskhash.update(str(i).encode('utf-8'))
start_time = time.perf_counter()
l = client.get_unihash(METHOD, taskhash.hexdigest())
elapsed = time.perf_counter() - start_time
with lock:
if l:
found_hashes += 1
else:
missed_hashes += 1
max_time = max(elapsed, max_time)
pbar.update()
max_time = 0
found_hashes = 0
missed_hashes = 0
lock = threading.Lock()
total_requests = args.clients * args.requests
start_time = time.perf_counter()
with ProgressBar(total=total_requests) as pbar:
threads = [threading.Thread(target=thread_main, args=(pbar, lock), daemon=False) for _ in range(args.clients)]
for t in threads:
t.start()
for t in threads:
t.join()
elapsed = time.perf_counter() - start_time
with lock:
print("%d requests in %.1fs. %.1f requests per second" % (total_requests, elapsed, total_requests / elapsed))
print("Average request time %.8fs" % (elapsed / total_requests))
print("Max request time was %.8fs" % max_time)
print("Found %d hashes, missed %d" % (found_hashes, missed_hashes))
if args.report:
with ProgressBar(total=args.requests) as pbar:
for i in range(args.requests):
taskhash = hashlib.sha256()
taskhash.update(args.taskhash_seed.encode('utf-8'))
taskhash.update(str(i).encode('utf-8'))
outhash = hashlib.sha256()
outhash.update(args.outhash_seed.encode('utf-8'))
outhash.update(str(i).encode('utf-8'))
client.report_unihash(taskhash.hexdigest(), METHOD, outhash.hexdigest(), taskhash.hexdigest())
with lock:
pbar.update()
def handle_remove(args, client):
where = {k: v for k, v in args.where}
if where:
result = client.remove(where)
print("Removed %d row(s)" % (result["count"]))
else:
print("No query specified")
def handle_clean_unused(args, client):
result = client.clean_unused(args.max_age)
print("Removed %d rows" % (result["count"]))
return 0
parser = argparse.ArgumentParser(description='Hash Equivalence Client')
parser.add_argument('--address', default=DEFAULT_ADDRESS, help='Server address (default "%(default)s")')
parser.add_argument('--log', default='WARNING', help='Set logging level')
subparsers = parser.add_subparsers()
stats_parser = subparsers.add_parser('stats', help='Show server stats')
stats_parser.add_argument('--reset', action='store_true',
help='Reset server stats')
stats_parser.set_defaults(func=handle_stats)
stress_parser = subparsers.add_parser('stress', help='Run stress test')
stress_parser.add_argument('--clients', type=int, default=10,
help='Number of simultaneous clients')
stress_parser.add_argument('--requests', type=int, default=1000,
help='Number of requests each client will perform')
stress_parser.add_argument('--report', action='store_true',
help='Report new hashes')
stress_parser.add_argument('--taskhash-seed', default='',
help='Include string in taskhash')
stress_parser.add_argument('--outhash-seed', default='',
help='Include string in outhash')
stress_parser.set_defaults(func=handle_stress)
remove_parser = subparsers.add_parser('remove', help="Remove hash entries")
remove_parser.add_argument("--where", "-w", metavar="KEY VALUE", nargs=2, action="append", default=[],
help="Remove entries from table where KEY == VALUE")
remove_parser.set_defaults(func=handle_remove)
clean_unused_parser = subparsers.add_parser('clean-unused', help="Remove unused database entries")
clean_unused_parser.add_argument("max_age", metavar="SECONDS", type=int, help="Remove unused entries older than SECONDS old")
clean_unused_parser.set_defaults(func=handle_clean_unused)
args = parser.parse_args()
logger = logging.getLogger('hashserv')
level = getattr(logging, args.log.upper(), None)
if not isinstance(level, int):
raise ValueError('Invalid log level: %s' % args.log)
logger.setLevel(level)
console = logging.StreamHandler()
console.setLevel(level)
logger.addHandler(console)
func = getattr(args, 'func', None)
if func:
with hashserv.create_client(args.address) as client:
return func(args, client)
return 0
if __name__ == '__main__':
try:
ret = main()
except Exception:
ret = 1
import traceback
traceback.print_exc()
sys.exit(ret)

66
bitbake/bin/bitbake-hashserv Executable file
View File

@@ -0,0 +1,66 @@
#! /usr/bin/env python3
#
# Copyright (C) 2018 Garmin Ltd.
#
# SPDX-License-Identifier: GPL-2.0-only
#
import os
import sys
import logging
import argparse
import sqlite3
import warnings
warnings.simplefilter("default")
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib'))
import hashserv
VERSION = "1.0.0"
DEFAULT_BIND = 'unix://./hashserve.sock'
def main():
parser = argparse.ArgumentParser(description='Hash Equivalence Reference Server. Version=%s' % VERSION,
epilog='''The bind address is the path to a unix domain socket if it is
prefixed with "unix://". Otherwise, it is an IP address
and port in form ADDRESS:PORT. To bind to all addresses, leave
the ADDRESS empty, e.g. "--bind :8686". To bind to a specific
IPv6 address, enclose the address in "[]", e.g.
"--bind [::1]:8686"'''
)
parser.add_argument('-b', '--bind', default=DEFAULT_BIND, help='Bind address (default "%(default)s")')
parser.add_argument('-d', '--database', default='./hashserv.db', help='Database file (default "%(default)s")')
parser.add_argument('-l', '--log', default='WARNING', help='Set logging level')
parser.add_argument('-u', '--upstream', help='Upstream hashserv to pull hashes from')
parser.add_argument('-r', '--read-only', action='store_true', help='Disallow write operations from clients')
args = parser.parse_args()
logger = logging.getLogger('hashserv')
level = getattr(logging, args.log.upper(), None)
if not isinstance(level, int):
raise ValueError('Invalid log level: %s' % args.log)
logger.setLevel(level)
console = logging.StreamHandler()
console.setLevel(level)
logger.addHandler(console)
server = hashserv.create_server(args.bind, args.database, upstream=args.upstream, read_only=args.read_only)
server.serve_forever()
return 0
if __name__ == '__main__':
try:
ret = main()
except Exception:
ret = 1
import traceback
traceback.print_exc()
sys.exit(ret)

102
bitbake/bin/bitbake-layers Executable file
View File

@@ -0,0 +1,102 @@
#!/usr/bin/env python3
# This script has subcommands which operate against your bitbake layers, either
# displaying useful information, or acting against them.
# See the help output for details on available commands.
# Copyright (C) 2011 Mentor Graphics Corporation
# Copyright (C) 2011-2015 Intel Corporation
#
# SPDX-License-Identifier: GPL-2.0-only
#
import logging
import os
import sys
import argparse
import warnings
warnings.simplefilter("default")
bindir = os.path.dirname(__file__)
topdir = os.path.dirname(bindir)
sys.path[0:0] = [os.path.join(topdir, 'lib')]
import bb.tinfoil
import bb.msg
logger = bb.msg.logger_create('bitbake-layers', sys.stdout)
def main():
parser = argparse.ArgumentParser(
description="BitBake layers utility",
epilog="Use %(prog)s <subcommand> --help to get help on a specific command",
add_help=False)
parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true')
parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true')
parser.add_argument('-F', '--force', help='Force add without recipe parse verification', action='store_true')
parser.add_argument('--color', choices=['auto', 'always', 'never'], default='auto', help='Colorize output (where %(metavar)s is %(choices)s)', metavar='COLOR')
global_args, unparsed_args = parser.parse_known_args()
# Help is added here rather than via add_help=True, as we don't want it to
# be handled by parse_known_args()
parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
help='show this help message and exit')
subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
subparsers.required = True
if global_args.debug:
logger.setLevel(logging.DEBUG)
elif global_args.quiet:
logger.setLevel(logging.ERROR)
# Need to re-run logger_create with color argument
# (will be the same logger since it has the same name)
bb.msg.logger_create('bitbake-layers', output=sys.stdout,
color=global_args.color,
level=logger.getEffectiveLevel())
plugins = []
tinfoil = bb.tinfoil.Tinfoil(tracking=True)
tinfoil.logger.setLevel(logger.getEffectiveLevel())
try:
tinfoil.prepare(True)
for path in ([topdir] +
tinfoil.config_data.getVar('BBPATH').split(':')):
pluginpath = os.path.join(path, 'lib', 'bblayers')
bb.utils.load_plugins(logger, plugins, pluginpath)
registered = False
for plugin in plugins:
if hasattr(plugin, 'tinfoil_init'):
plugin.tinfoil_init(tinfoil)
if hasattr(plugin, 'register_commands'):
registered = True
plugin.register_commands(subparsers)
if not registered:
logger.error("No commands registered - missing plugins?")
sys.exit(1)
args = parser.parse_args(unparsed_args, namespace=global_args)
if getattr(args, 'parserecipes', False):
tinfoil.config_data.disableTracking()
tinfoil.parse_recipes()
tinfoil.config_data.enableTracking()
return args.func(args)
finally:
tinfoil.shutdown()
if __name__ == "__main__":
try:
ret = main()
except bb.BBHandledException:
ret = 1
except Exception:
ret = 1
import traceback
traceback.print_exc()
sys.exit(ret)

65
bitbake/bin/bitbake-prserv Executable file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/env python3
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
import os
import sys,logging
import optparse
import warnings
warnings.simplefilter("default")
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),'lib'))
import prserv
import prserv.serv
__version__="1.0.0"
PRHOST_DEFAULT='0.0.0.0'
PRPORT_DEFAULT=8585
def main():
parser = optparse.OptionParser(
version="Bitbake PR Service Core version %s, %%prog version %s" % (prserv.__version__, __version__),
usage = "%prog < --start | --stop > [options]")
parser.add_option("-f", "--file", help="database filename(default: prserv.sqlite3)", action="store",
dest="dbfile", type="string", default="prserv.sqlite3")
parser.add_option("-l", "--log", help="log filename(default: prserv.log)", action="store",
dest="logfile", type="string", default="prserv.log")
parser.add_option("--loglevel", help="logging level, i.e. CRITICAL, ERROR, WARNING, INFO, DEBUG",
action = "store", type="string", dest="loglevel", default = "INFO")
parser.add_option("--start", help="start daemon",
action="store_true", dest="start")
parser.add_option("--stop", help="stop daemon",
action="store_true", dest="stop")
parser.add_option("--host", help="ip address to bind", action="store",
dest="host", type="string", default=PRHOST_DEFAULT)
parser.add_option("--port", help="port number(default: 8585)", action="store",
dest="port", type="int", default=PRPORT_DEFAULT)
parser.add_option("-r", "--read-only", help="open database in read-only mode",
action="store_true")
options, args = parser.parse_args(sys.argv)
prserv.init_logger(os.path.abspath(options.logfile),options.loglevel)
if options.start:
ret=prserv.serv.start_daemon(options.dbfile, options.host, options.port,os.path.abspath(options.logfile), options.read_only)
elif options.stop:
ret=prserv.serv.stop_daemon(options.host, options.port)
else:
ret=parser.print_help()
return ret
if __name__ == "__main__":
try:
ret = main()
except Exception:
ret = 1
import traceback
traceback.print_exc()
sys.exit(ret)

77
bitbake/bin/bitbake-selftest Executable file
View File

@@ -0,0 +1,77 @@
#!/usr/bin/env python3
#
# Copyright (C) 2012 Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
import os
import sys, logging
import warnings
warnings.simplefilter("default")
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib'))
import unittest
try:
import bb
import hashserv
import layerindexlib
except RuntimeError as exc:
sys.exit(str(exc))
tests = ["bb.tests.codeparser",
"bb.tests.color",
"bb.tests.cooker",
"bb.tests.cow",
"bb.tests.data",
"bb.tests.event",
"bb.tests.fetch",
"bb.tests.parse",
"bb.tests.persist_data",
"bb.tests.runqueue",
"bb.tests.siggen",
"bb.tests.utils",
"bb.tests.compression",
"hashserv.tests",
"layerindexlib.tests.layerindexobj",
"layerindexlib.tests.restapi",
"layerindexlib.tests.cooker"]
for t in tests:
t = '.'.join(t.split('.')[:3])
__import__(t)
# Set-up logging
class StdoutStreamHandler(logging.StreamHandler):
"""Special handler so that unittest is able to capture stdout"""
def __init__(self):
# Override __init__() because we don't want to set self.stream here
logging.Handler.__init__(self)
@property
def stream(self):
# We want to dynamically write wherever sys.stdout is pointing to
return sys.stdout
handler = StdoutStreamHandler()
bb.logger.addHandler(handler)
bb.logger.setLevel(logging.DEBUG)
ENV_HELP = """\
Environment variables:
BB_SKIP_NETTESTS set to 'yes' in order to skip tests using network
connection
BB_TMPDIR_NOCLEAN set to 'yes' to preserve test tmp directories
"""
class main(unittest.main):
def _print_help(self, *args, **kwargs):
super(main, self)._print_help(*args, **kwargs)
print(ENV_HELP)
if __name__ == '__main__':
main(defaultTest=tests, buffer=True)

55
bitbake/bin/bitbake-server Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env python3
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2020 Richard Purdie
#
import os
import sys
import warnings
warnings.simplefilter("default")
import logging
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
import bb
bb.utils.check_system_locale()
# Users shouldn't be running this code directly
if len(sys.argv) != 11 or not sys.argv[1].startswith("decafbad"):
print("bitbake-server is meant for internal execution by bitbake itself, please don't use it standalone.")
sys.exit(1)
import bb.server.process
lockfd = int(sys.argv[2])
readypipeinfd = int(sys.argv[3])
logfile = sys.argv[4]
lockname = sys.argv[5]
sockname = sys.argv[6]
timeout = float(sys.argv[7])
profile = bool(int(sys.argv[8]))
xmlrpcinterface = (sys.argv[9], int(sys.argv[10]))
if xmlrpcinterface[0] == "None":
xmlrpcinterface = (None, xmlrpcinterface[1])
# Replace standard fds with our own
with open('/dev/null', 'r') as si:
os.dup2(si.fileno(), sys.stdin.fileno())
so = open(logfile, 'a+')
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(so.fileno(), sys.stderr.fileno())
# Have stdout and stderr be the same so log output matches chronologically
# and there aren't two seperate buffers
sys.stderr = sys.stdout
logger = logging.getLogger("BitBake")
# Ensure logging messages get sent to the UI as events
handler = bb.event.LogHandler()
logger.addHandler(handler)
bb.server.process.execServer(lockfd, readypipeinfd, lockname, sockname, timeout, xmlrpcinterface, profile)

564
bitbake/bin/bitbake-worker Executable file
View File

@@ -0,0 +1,564 @@
#!/usr/bin/env python3
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
import os
import sys
import warnings
warnings.simplefilter("default")
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
from bb import fetch2
import logging
import bb
import select
import errno
import signal
import pickle
import traceback
import queue
import shlex
import subprocess
from multiprocessing import Lock
from threading import Thread
bb.utils.check_system_locale()
# Users shouldn't be running this code directly
if len(sys.argv) != 2 or not sys.argv[1].startswith("decafbad"):
print("bitbake-worker is meant for internal execution by bitbake itself, please don't use it standalone.")
sys.exit(1)
profiling = False
if sys.argv[1].startswith("decafbadbad"):
profiling = True
try:
import cProfile as profile
except:
import profile
# Unbuffer stdout to avoid log truncation in the event
# of an unorderly exit as well as to provide timely
# updates to log files for use with tail
try:
if sys.stdout.name == '<stdout>':
import fcntl
fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
fl |= os.O_SYNC
fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)
#sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
except:
pass
logger = logging.getLogger("BitBake")
worker_pipe = sys.stdout.fileno()
bb.utils.nonblockingfd(worker_pipe)
# Need to guard against multiprocessing being used in child processes
# and multiple processes trying to write to the parent at the same time
worker_pipe_lock = None
handler = bb.event.LogHandler()
logger.addHandler(handler)
if 0:
# Code to write out a log file of all events passing through the worker
logfilename = "/tmp/workerlogfile"
format_str = "%(levelname)s: %(message)s"
conlogformat = bb.msg.BBLogFormatter(format_str)
consolelog = logging.FileHandler(logfilename)
consolelog.setFormatter(conlogformat)
logger.addHandler(consolelog)
worker_queue = queue.Queue()
def worker_fire(event, d):
data = b"<event>" + pickle.dumps(event) + b"</event>"
worker_fire_prepickled(data)
def worker_fire_prepickled(event):
global worker_queue
worker_queue.put(event)
#
# We can end up with write contention with the cooker, it can be trying to send commands
# and we can be trying to send event data back. Therefore use a separate thread for writing
# back data to cooker.
#
worker_thread_exit = False
def worker_flush(worker_queue):
worker_queue_int = bytearray()
global worker_pipe, worker_thread_exit
while True:
try:
worker_queue_int.extend(worker_queue.get(True, 1))
except queue.Empty:
pass
while (worker_queue_int or not worker_queue.empty()):
try:
(_, ready, _) = select.select([], [worker_pipe], [], 1)
if not worker_queue.empty():
worker_queue_int.extend(worker_queue.get())
written = os.write(worker_pipe, worker_queue_int)
worker_queue_int = worker_queue_int[written:]
except (IOError, OSError) as e:
if e.errno != errno.EAGAIN and e.errno != errno.EPIPE:
raise
if worker_thread_exit and worker_queue.empty() and not worker_queue_int:
return
worker_thread = Thread(target=worker_flush, args=(worker_queue,))
worker_thread.start()
def worker_child_fire(event, d):
global worker_pipe
global worker_pipe_lock
data = b"<event>" + pickle.dumps(event) + b"</event>"
try:
with bb.utils.lock_timeout(worker_pipe_lock):
while(len(data)):
written = worker_pipe.write(data)
data = data[written:]
except IOError:
sigterm_handler(None, None)
raise
bb.event.worker_fire = worker_fire
lf = None
#lf = open("/tmp/workercommandlog", "w+")
def workerlog_write(msg):
if lf:
lf.write(msg)
lf.flush()
def sigterm_handler(signum, frame):
signal.signal(signal.SIGTERM, signal.SIG_DFL)
os.killpg(0, signal.SIGTERM)
sys.exit()
def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask):
fn = runtask['fn']
task = runtask['task']
taskname = runtask['taskname']
taskhash = runtask['taskhash']
unihash = runtask['unihash']
appends = runtask['appends']
layername = runtask['layername']
taskdepdata = runtask['taskdepdata']
quieterrors = runtask['quieterrors']
# We need to setup the environment BEFORE the fork, since
# a fork() or exec*() activates PSEUDO...
envbackup = {}
fakeroot = False
fakeenv = {}
umask = None
uid = os.getuid()
gid = os.getgid()
taskdep = runtask['taskdep']
if 'umask' in taskdep and taskname in taskdep['umask']:
umask = taskdep['umask'][taskname]
elif workerdata["umask"]:
umask = workerdata["umask"]
if umask:
# umask might come in as a number or text string..
try:
umask = int(umask, 8)
except TypeError:
pass
dry_run = cfg.dry_run or runtask['dry_run']
# We can't use the fakeroot environment in a dry run as it possibly hasn't been built
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not dry_run:
fakeroot = True
envvars = (runtask['fakerootenv'] or "").split()
for key, value in (var.split('=') for var in envvars):
envbackup[key] = os.environ.get(key)
os.environ[key] = value
fakeenv[key] = value
fakedirs = (runtask['fakerootdirs'] or "").split()
for p in fakedirs:
bb.utils.mkdirhier(p)
logger.debug2('Running %s:%s under fakeroot, fakedirs: %s' %
(fn, taskname, ', '.join(fakedirs)))
else:
envvars = (runtask['fakerootnoenv'] or "").split()
for key, value in (var.split('=') for var in envvars):
envbackup[key] = os.environ.get(key)
os.environ[key] = value
fakeenv[key] = value
sys.stdout.flush()
sys.stderr.flush()
try:
pipein, pipeout = os.pipe()
pipein = os.fdopen(pipein, 'rb', 4096)
pipeout = os.fdopen(pipeout, 'wb', 0)
pid = os.fork()
except OSError as e:
logger.critical("fork failed: %d (%s)" % (e.errno, e.strerror))
sys.exit(1)
if pid == 0:
def child():
global worker_pipe
global worker_pipe_lock
pipein.close()
bb.utils.signal_on_parent_exit("SIGTERM")
# Save out the PID so that the event can include it the
# events
bb.event.worker_pid = os.getpid()
bb.event.worker_fire = worker_child_fire
worker_pipe = pipeout
worker_pipe_lock = Lock()
# Make the child the process group leader and ensure no
# child process will be controlled by the current terminal
# This ensures signals sent to the controlling terminal like Ctrl+C
# don't stop the child processes.
os.setsid()
signal.signal(signal.SIGTERM, sigterm_handler)
# Let SIGHUP exit as SIGTERM
signal.signal(signal.SIGHUP, sigterm_handler)
# No stdin
newsi = os.open(os.devnull, os.O_RDWR)
os.dup2(newsi, sys.stdin.fileno())
if umask:
os.umask(umask)
try:
(realfn, virtual, mc) = bb.cache.virtualfn2realfn(fn)
the_data = databuilder.mcdata[mc]
the_data.setVar("BB_WORKERCONTEXT", "1")
the_data.setVar("BB_TASKDEPDATA", taskdepdata)
the_data.setVar('BB_CURRENTTASK', taskname.replace("do_", ""))
if cfg.limited_deps:
the_data.setVar("BB_LIMITEDDEPS", "1")
the_data.setVar("BUILDNAME", workerdata["buildname"])
the_data.setVar("DATE", workerdata["date"])
the_data.setVar("TIME", workerdata["time"])
for varname, value in extraconfigdata.items():
the_data.setVar(varname, value)
bb.parse.siggen.set_taskdata(workerdata["sigdata"])
if "newhashes" in workerdata:
bb.parse.siggen.set_taskhashes(workerdata["newhashes"])
ret = 0
the_data = databuilder.parseRecipe(fn, appends, layername)
the_data.setVar('BB_TASKHASH', taskhash)
the_data.setVar('BB_UNIHASH', unihash)
bb.parse.siggen.setup_datacache_from_datastore(fn, the_data)
bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", "")))
if not bb.utils.to_boolean(the_data.getVarFlag(taskname, 'network')):
if bb.utils.is_local_uid(uid):
logger.debug("Attempting to disable network for %s" % taskname)
bb.utils.disable_network(uid, gid)
else:
logger.debug("Skipping disable network for %s since %s is not a local uid." % (taskname, uid))
# exported_vars() returns a generator which *cannot* be passed to os.environ.update()
# successfully. We also need to unset anything from the environment which shouldn't be there
exports = bb.data.exported_vars(the_data)
bb.utils.empty_environment()
for e, v in exports:
os.environ[e] = v
for e in fakeenv:
os.environ[e] = fakeenv[e]
the_data.setVar(e, fakeenv[e])
the_data.setVarFlag(e, 'export', "1")
task_exports = the_data.getVarFlag(taskname, 'exports')
if task_exports:
for e in task_exports.split():
the_data.setVarFlag(e, 'export', '1')
v = the_data.getVar(e)
if v is not None:
os.environ[e] = v
if quieterrors:
the_data.setVarFlag(taskname, "quieterrors", "1")
except Exception:
if not quieterrors:
logger.critical(traceback.format_exc())
os._exit(1)
try:
if dry_run:
return 0
try:
ret = bb.build.exec_task(fn, taskname, the_data, cfg.profile)
finally:
if fakeroot:
fakerootcmd = shlex.split(the_data.getVar("FAKEROOTCMD"))
subprocess.run(fakerootcmd + ['-S'], check=True, stdout=subprocess.PIPE)
return ret
except:
os._exit(1)
if not profiling:
os._exit(child())
else:
profname = "profile-%s.log" % (fn.replace("/", "-") + "-" + taskname)
prof = profile.Profile()
try:
ret = profile.Profile.runcall(prof, child)
finally:
prof.dump_stats(profname)
bb.utils.process_profilelog(profname)
os._exit(ret)
else:
for key, value in iter(envbackup.items()):
if value is None:
del os.environ[key]
else:
os.environ[key] = value
return pid, pipein, pipeout
class runQueueWorkerPipe():
"""
Abstraction for a pipe between a worker thread and the worker server
"""
def __init__(self, pipein, pipeout):
self.input = pipein
if pipeout:
pipeout.close()
bb.utils.nonblockingfd(self.input)
self.queue = bytearray()
def read(self):
start = len(self.queue)
try:
self.queue.extend(self.input.read(102400) or b"")
except (OSError, IOError) as e:
if e.errno != errno.EAGAIN:
raise
end = len(self.queue)
index = self.queue.find(b"</event>")
while index != -1:
msg = self.queue[:index+8]
assert msg.startswith(b"<event>") and msg.count(b"<event>") == 1
worker_fire_prepickled(msg)
self.queue = self.queue[index+8:]
index = self.queue.find(b"</event>")
return (end > start)
def close(self):
while self.read():
continue
if len(self.queue) > 0:
print("Warning, worker child left partial message: %s" % self.queue)
self.input.close()
normalexit = False
class BitbakeWorker(object):
def __init__(self, din):
self.input = din
bb.utils.nonblockingfd(self.input)
self.queue = bytearray()
self.cookercfg = None
self.databuilder = None
self.data = None
self.extraconfigdata = None
self.build_pids = {}
self.build_pipes = {}
signal.signal(signal.SIGTERM, self.sigterm_exception)
# Let SIGHUP exit as SIGTERM
signal.signal(signal.SIGHUP, self.sigterm_exception)
if "beef" in sys.argv[1]:
bb.utils.set_process_name("Worker (Fakeroot)")
else:
bb.utils.set_process_name("Worker")
def sigterm_exception(self, signum, stackframe):
if signum == signal.SIGTERM:
bb.warn("Worker received SIGTERM, shutting down...")
elif signum == signal.SIGHUP:
bb.warn("Worker received SIGHUP, shutting down...")
self.handle_finishnow(None)
signal.signal(signal.SIGTERM, signal.SIG_DFL)
os.kill(os.getpid(), signal.SIGTERM)
def serve(self):
while True:
(ready, _, _) = select.select([self.input] + [i.input for i in self.build_pipes.values()], [] , [], 1)
if self.input in ready:
try:
r = self.input.read()
if len(r) == 0:
# EOF on pipe, server must have terminated
self.sigterm_exception(signal.SIGTERM, None)
self.queue.extend(r)
except (OSError, IOError):
pass
if len(self.queue):
self.handle_item(b"cookerconfig", self.handle_cookercfg)
self.handle_item(b"extraconfigdata", self.handle_extraconfigdata)
self.handle_item(b"workerdata", self.handle_workerdata)
self.handle_item(b"newtaskhashes", self.handle_newtaskhashes)
self.handle_item(b"runtask", self.handle_runtask)
self.handle_item(b"finishnow", self.handle_finishnow)
self.handle_item(b"ping", self.handle_ping)
self.handle_item(b"quit", self.handle_quit)
for pipe in self.build_pipes:
if self.build_pipes[pipe].input in ready:
self.build_pipes[pipe].read()
if len(self.build_pids):
while self.process_waitpid():
continue
def handle_item(self, item, func):
if self.queue.startswith(b"<" + item + b">"):
index = self.queue.find(b"</" + item + b">")
while index != -1:
try:
func(self.queue[(len(item) + 2):index])
except pickle.UnpicklingError:
workerlog_write("Unable to unpickle data: %s\n" % ":".join("{:02x}".format(c) for c in self.queue))
raise
self.queue = self.queue[(index + len(item) + 3):]
index = self.queue.find(b"</" + item + b">")
def handle_cookercfg(self, data):
self.cookercfg = pickle.loads(data)
self.databuilder = bb.cookerdata.CookerDataBuilder(self.cookercfg, worker=True)
self.databuilder.parseBaseConfiguration(worker=True)
self.data = self.databuilder.data
def handle_extraconfigdata(self, data):
self.extraconfigdata = pickle.loads(data)
def handle_workerdata(self, data):
self.workerdata = pickle.loads(data)
bb.build.verboseShellLogging = self.workerdata["build_verbose_shell"]
bb.build.verboseStdoutLogging = self.workerdata["build_verbose_stdout"]
bb.msg.loggerDefaultLogLevel = self.workerdata["logdefaultlevel"]
bb.msg.loggerDefaultDomains = self.workerdata["logdefaultdomain"]
for mc in self.databuilder.mcdata:
self.databuilder.mcdata[mc].setVar("PRSERV_HOST", self.workerdata["prhost"])
self.databuilder.mcdata[mc].setVar("BB_HASHSERVE", self.workerdata["hashservaddr"])
self.databuilder.mcdata[mc].setVar("__bbclasstype", "recipe")
def handle_newtaskhashes(self, data):
self.workerdata["newhashes"] = pickle.loads(data)
def handle_ping(self, _):
workerlog_write("Handling ping\n")
logger.warning("Pong from bitbake-worker!")
def handle_quit(self, data):
workerlog_write("Handling quit\n")
global normalexit
normalexit = True
sys.exit(0)
def handle_runtask(self, data):
runtask = pickle.loads(data)
fn = runtask['fn']
task = runtask['task']
taskname = runtask['taskname']
workerlog_write("Handling runtask %s %s %s\n" % (task, fn, taskname))
pid, pipein, pipeout = fork_off_task(self.cookercfg, self.data, self.databuilder, self.workerdata, self.extraconfigdata, runtask)
self.build_pids[pid] = task
self.build_pipes[pid] = runQueueWorkerPipe(pipein, pipeout)
def process_waitpid(self):
"""
Return none is there are no processes awaiting result collection, otherwise
collect the process exit codes and close the information pipe.
"""
try:
pid, status = os.waitpid(-1, os.WNOHANG)
if pid == 0 or os.WIFSTOPPED(status):
return False
except OSError:
return False
workerlog_write("Exit code of %s for pid %s\n" % (status, pid))
if os.WIFEXITED(status):
status = os.WEXITSTATUS(status)
elif os.WIFSIGNALED(status):
# Per shell conventions for $?, when a process exits due to
# a signal, we return an exit code of 128 + SIGNUM
status = 128 + os.WTERMSIG(status)
task = self.build_pids[pid]
del self.build_pids[pid]
self.build_pipes[pid].close()
del self.build_pipes[pid]
worker_fire_prepickled(b"<exitcode>" + pickle.dumps((task, status)) + b"</exitcode>")
return True
def handle_finishnow(self, _):
if self.build_pids:
logger.info("Sending SIGTERM to remaining %s tasks", len(self.build_pids))
for k, v in iter(self.build_pids.items()):
try:
os.kill(-k, signal.SIGTERM)
os.waitpid(-1, 0)
except:
pass
for pipe in self.build_pipes:
self.build_pipes[pipe].read()
try:
worker = BitbakeWorker(os.fdopen(sys.stdin.fileno(), 'rb'))
if not profiling:
worker.serve()
else:
profname = "profile-worker.log"
prof = profile.Profile()
try:
profile.Profile.runcall(prof, worker.serve)
finally:
prof.dump_stats(profname)
bb.utils.process_profilelog(profname)
except BaseException as e:
if not normalexit:
import traceback
sys.stderr.write(traceback.format_exc())
sys.stderr.write(str(e))
finally:
worker_thread_exit = True
worker_thread.join()
workerlog_write("exiting")
if not normalexit:
sys.exit(1)
sys.exit(0)

173
bitbake/bin/git-make-shallow Executable file
View File

@@ -0,0 +1,173 @@
#!/usr/bin/env python3
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
"""git-make-shallow: make the current git repository shallow
Remove the history of the specified revisions, then optionally filter the
available refs to those specified.
"""
import argparse
import collections
import errno
import itertools
import os
import subprocess
import sys
import warnings
warnings.simplefilter("default")
version = 1.0
def main():
if sys.version_info < (3, 4, 0):
sys.exit('Python 3.4 or greater is required')
git_dir = check_output(['git', 'rev-parse', '--git-dir']).rstrip()
shallow_file = os.path.join(git_dir, 'shallow')
if os.path.exists(shallow_file):
try:
check_output(['git', 'fetch', '--unshallow'])
except subprocess.CalledProcessError:
try:
os.unlink(shallow_file)
except OSError as exc:
if exc.errno != errno.ENOENT:
raise
args = process_args()
revs = check_output(['git', 'rev-list'] + args.revisions).splitlines()
make_shallow(shallow_file, args.revisions, args.refs)
ref_revs = check_output(['git', 'rev-list'] + args.refs).splitlines()
remaining_history = set(revs) & set(ref_revs)
for rev in remaining_history:
if check_output(['git', 'rev-parse', '{}^@'.format(rev)]):
sys.exit('Error: %s was not made shallow' % rev)
filter_refs(args.refs)
if args.shrink:
shrink_repo(git_dir)
subprocess.check_call(['git', 'fsck', '--unreachable'])
def process_args():
# TODO: add argument to automatically keep local-only refs, since they
# can't be easily restored with a git fetch.
parser = argparse.ArgumentParser(description='Remove the history of the specified revisions, then optionally filter the available refs to those specified.')
parser.add_argument('--ref', '-r', metavar='REF', action='append', dest='refs', help='remove all but the specified refs (cumulative)')
parser.add_argument('--shrink', '-s', action='store_true', help='shrink the git repository by repacking and pruning')
parser.add_argument('revisions', metavar='REVISION', nargs='+', help='a git revision/commit')
if len(sys.argv) < 2:
parser.print_help()
sys.exit(2)
args = parser.parse_args()
if args.refs:
args.refs = check_output(['git', 'rev-parse', '--symbolic-full-name'] + args.refs).splitlines()
else:
args.refs = get_all_refs(lambda r, t, tt: t == 'commit' or tt == 'commit')
args.refs = list(filter(lambda r: not r.endswith('/HEAD'), args.refs))
args.revisions = check_output(['git', 'rev-parse'] + ['%s^{}' % i for i in args.revisions]).splitlines()
return args
def check_output(cmd, input=None):
return subprocess.check_output(cmd, universal_newlines=True, input=input)
def make_shallow(shallow_file, revisions, refs):
"""Remove the history of the specified revisions."""
for rev in follow_history_intersections(revisions, refs):
print("Processing %s" % rev)
with open(shallow_file, 'a') as f:
f.write(rev + '\n')
def get_all_refs(ref_filter=None):
"""Return all the existing refs in this repository, optionally filtering the refs."""
ref_output = check_output(['git', 'for-each-ref', '--format=%(refname)\t%(objecttype)\t%(*objecttype)'])
ref_split = [tuple(iter_extend(l.rsplit('\t'), 3)) for l in ref_output.splitlines()]
if ref_filter:
ref_split = (e for e in ref_split if ref_filter(*e))
refs = [r[0] for r in ref_split]
return refs
def iter_extend(iterable, length, obj=None):
"""Ensure that iterable is the specified length by extending with obj."""
return itertools.islice(itertools.chain(iterable, itertools.repeat(obj)), length)
def filter_refs(refs):
"""Remove all but the specified refs from the git repository."""
all_refs = get_all_refs()
to_remove = set(all_refs) - set(refs)
if to_remove:
check_output(['xargs', '-0', '-n', '1', 'git', 'update-ref', '-d', '--no-deref'],
input=''.join(l + '\0' for l in to_remove))
def follow_history_intersections(revisions, refs):
"""Determine all the points where the history of the specified revisions intersects the specified refs."""
queue = collections.deque(revisions)
seen = set()
for rev in iter_except(queue.popleft, IndexError):
if rev in seen:
continue
parents = check_output(['git', 'rev-parse', '%s^@' % rev]).splitlines()
yield rev
seen.add(rev)
if not parents:
continue
check_refs = check_output(['git', 'merge-base', '--independent'] + sorted(refs)).splitlines()
for parent in parents:
for ref in check_refs:
print("Checking %s vs %s" % (parent, ref))
try:
merge_base = check_output(['git', 'merge-base', parent, ref]).rstrip()
except subprocess.CalledProcessError:
continue
else:
queue.append(merge_base)
def iter_except(func, exception, start=None):
"""Yield a function repeatedly until it raises an exception."""
try:
if start is not None:
yield start()
while True:
yield func()
except exception:
pass
def shrink_repo(git_dir):
"""Shrink the newly shallow repository, removing the unreachable objects."""
subprocess.check_call(['git', 'reflog', 'expire', '--expire-unreachable=now', '--all'])
subprocess.check_call(['git', 'repack', '-ad'])
try:
os.unlink(os.path.join(git_dir, 'objects', 'info', 'alternates'))
except OSError as exc:
if exc.errno != errno.ENOENT:
raise
subprocess.check_call(['git', 'prune', '--expire', 'now'])
if __name__ == '__main__':
main()

324
bitbake/bin/toaster Executable file
View File

@@ -0,0 +1,324 @@
#!/bin/echo ERROR: This script needs to be sourced. Please run as .
# toaster - shell script to start Toaster
# Copyright (C) 2013-2015 Intel Corp.
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
HELP="
Usage 1: source toaster start|stop [webport=<address:port>] [noweb] [nobuild] [toasterdir]
Optional arguments:
[nobuild] Setup the environment for capturing builds with toaster but disable managed builds
[noweb] Setup the environment for capturing builds with toaster but don't start the web server
[webport] Set the development server (default: localhost:8000)
[toasterdir] Set absolute path to be used as TOASTER_DIR (default: BUILDDIR/../)
Usage 2: source toaster manage [createsuperuser|lsupdates|migrate|makemigrations|checksettings|collectstatic|...]
"
custom_extention()
{
custom_extension=$BBBASEDIR/lib/toaster/orm/fixtures/custom_toaster_append.sh
if [ -f $custom_extension ] ; then
$custom_extension $*
fi
}
databaseCheck()
{
retval=0
# you can always add a superuser later via
# ../bitbake/lib/toaster/manage.py createsuperuser --username=<ME>
$MANAGE migrate --noinput || retval=1
if [ $retval -eq 1 ]; then
echo "Failed migrations, halting system start" 1>&2
return $retval
fi
# Make sure that checksettings can pick up any value for TEMPLATECONF
export TEMPLATECONF
$MANAGE checksettings --traceback || retval=1
if [ $retval -eq 1 ]; then
printf "\nError while checking settings; exiting\n"
return $retval
fi
return $retval
}
webserverKillAll()
{
local pidfile
if [ -f ${BUILDDIR}/.toastermain.pid ] ; then
custom_extention web_stop_postpend
else
custom_extention noweb_stop_postpend
fi
for pidfile in ${BUILDDIR}/.toastermain.pid ${BUILDDIR}/.runbuilds.pid; do
if [ -f ${pidfile} ]; then
pid=`cat ${pidfile}`
while kill -0 $pid 2>/dev/null; do
kill -SIGTERM $pid 2>/dev/null
sleep 1
done
rm ${pidfile}
fi
done
}
webserverStartAll()
{
# do not start if toastermain points to a valid process
if ! cat "${BUILDDIR}/.toastermain.pid" 2>/dev/null | xargs -I{} kill -0 {} ; then
retval=1
rm "${BUILDDIR}/.toastermain.pid"
fi
retval=0
# check the database
databaseCheck || return 1
echo "Starting webserver..."
$MANAGE runserver --noreload "$ADDR_PORT" \
</dev/null >>${BUILDDIR}/toaster_web.log 2>&1 \
& echo $! >${BUILDDIR}/.toastermain.pid
sleep 1
if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then
retval=1
rm "${BUILDDIR}/.toastermain.pid"
else
echo "Toaster development webserver started at http://$ADDR_PORT"
echo -e "\nYou can now run 'bitbake <target>' on the command line and monitor your build in Toaster.\nYou can also use a Toaster project to configure and run a build.\n"
custom_extention web_start_postpend $ADDR_PORT
fi
return $retval
}
INSTOPSYSTEM=0
# define the stop command
stop_system()
{
# prevent reentry
if [ $INSTOPSYSTEM -eq 1 ]; then return; fi
INSTOPSYSTEM=1
webserverKillAll
# unset exported variables
unset TOASTER_DIR
unset BITBAKE_UI
unset BBBASEDIR
trap - SIGHUP
#trap - SIGCHLD
INSTOPSYSTEM=0
}
verify_prereq() {
# Verify Django version
reqfile=$(python3 -c "import os; print(os.path.realpath('$BBBASEDIR/toaster-requirements.txt'))")
exp='s/Django\([><=]\+\)\([^,]\+\),\([><=]\+\)\(.\+\)/'
# expand version parts to 2 digits to support 1.10.x > 1.8
# (note:helper functions hard to insert in-line)
exp=$exp'import sys,django;'
exp=$exp'version=["%02d" % int(n) for n in django.get_version().split(".")];'
exp=$exp'vmin=["%02d" % int(n) for n in "\2".split(".")];'
exp=$exp'vmax=["%02d" % int(n) for n in "\4".split(".")];'
exp=$exp'sys.exit(not (version \1 vmin and version \3 vmax))'
exp=$exp'/p'
if ! sed -n "$exp" $reqfile | python3 - ; then
req=`grep ^Django $reqfile`
echo "This program needs $req"
echo "Please install with pip3 install -r $reqfile"
return 2
fi
return 0
}
# read command line parameters
if [ -n "$BASH_SOURCE" ] ; then
TOASTER=${BASH_SOURCE}
elif [ -n "$ZSH_NAME" ] ; then
TOASTER=${(%):-%x}
else
TOASTER=$0
fi
export BBBASEDIR=`dirname $TOASTER`/..
MANAGE="python3 $BBBASEDIR/lib/toaster/manage.py"
if [ -z "$OE_ROOT" ]; then
OE_ROOT=`dirname $TOASTER`/../..
fi
# this is the configuraton file we are using for toaster
# we are using the same logic that oe-setup-builddir uses
# (based on TEMPLATECONF and .templateconf) to determine
# which toasterconf.json to use.
# note: There are a number of relative path assumptions
# in the local layers that currently make using an arbitrary
# toasterconf.json difficult.
. $OE_ROOT/.templateconf
if [ -n "$TEMPLATECONF" ]; then
if [ ! -d "$TEMPLATECONF" ]; then
# Allow TEMPLATECONF=meta-xyz/conf as a shortcut
if [ -d "$OE_ROOT/$TEMPLATECONF" ]; then
TEMPLATECONF="$OE_ROOT/$TEMPLATECONF"
fi
fi
fi
unset OE_ROOT
WEBSERVER=1
export TOASTER_BUILDSERVER=1
ADDR_PORT="localhost:8000"
TOASTERDIR=`dirname $BUILDDIR`
unset CMD
for param in $*; do
case $param in
noweb )
WEBSERVER=0
;;
nobuild )
TOASTER_BUILDSERVER=0
;;
start )
CMD=$param
;;
stop )
CMD=$param
;;
webport=*)
ADDR_PORT="${param#*=}"
# Split the addr:port string
ADDR=`echo $ADDR_PORT | cut -f 1 -d ':'`
PORT=`echo $ADDR_PORT | cut -f 2 -d ':'`
# If only a port has been speified then set address to localhost.
if [ $ADDR = $PORT ] ; then
ADDR_PORT="localhost:$PORT"
fi
;;
toasterdir=*)
TOASTERDIR="${param#*=}"
;;
manage )
CMD=$param
manage_cmd=""
;;
--help)
echo "$HELP"
return 0
;;
*)
if [ "manage" == "$CMD" ] ; then
manage_cmd="$manage_cmd $param"
else
echo "$HELP"
exit 1
fi
;;
esac
done
if [ `basename \"$0\"` = `basename \"${TOASTER}\"` ]; then
echo "Error: This script needs to be sourced. Please run as . $TOASTER"
return 1
fi
verify_prereq || return 1
# We make sure we're running in the current shell and in a good environment
if [ -z "$BUILDDIR" ] || ! which bitbake >/dev/null 2>&1 ; then
echo "Error: Build environment is not setup or bitbake is not in path." 1>&2
return 2
fi
# this defines the dir toaster will use for
# 1) clones of layers (in _toaster_clones )
# 2) the build dir (in build)
# 3) the sqlite db if that is being used.
# 4) pid's we need to clean up on exit/shutdown
export TOASTER_DIR=$TOASTERDIR
export BB_ENV_PASSTHROUGH_ADDITIONS="$BB_ENV_PASSTHROUGH_ADDITIONS TOASTER_DIR"
# Determine the action. If specified by arguments, fine, if not, toggle it
if [ "$CMD" = "start" ] ; then
if [ -n "$BBSERVER" ]; then
echo " Toaster is already running. Exiting..."
return 1
fi
elif [ "$CMD" = "" ]; then
echo "No command specified"
echo "$HELP"
return 1
fi
echo "The system will $CMD."
# Execute the commands
custom_extention toaster_prepend $CMD $ADDR_PORT
case $CMD in
start )
# check if addr:port is not in use
if [ "$CMD" == 'start' ]; then
if [ $WEBSERVER -gt 0 ]; then
$MANAGE checksocket "$ADDR_PORT" || return 1
fi
fi
# Create configuration file
conf=${BUILDDIR}/conf/local.conf
line='INHERIT+="toaster buildhistory"'
grep -q "$line" $conf || echo $line >> $conf
if [ $WEBSERVER -eq 0 ] ; then
# Do not update the database for "noweb" unless
# it does not yet exist
if [ ! -f "$TOASTER_DIR/toaster.sqlite" ] ; then
if ! databaseCheck; then
echo "Failed ${CMD}."
return 4
fi
fi
custom_extention noweb_start_postpend $ADDR_PORT
fi
if [ $WEBSERVER -gt 0 ] && ! webserverStartAll; then
echo "Failed ${CMD}."
return 4
fi
export BITBAKE_UI='toasterui'
if [ $TOASTER_BUILDSERVER -eq 1 ] ; then
$MANAGE runbuilds \
</dev/null >>${BUILDDIR}/toaster_runbuilds.log 2>&1 \
& echo $! >${BUILDDIR}/.runbuilds.pid
else
echo "Toaster build server not started."
fi
# set fail safe stop system on terminal exit
trap stop_system SIGHUP
echo "Successful ${CMD}."
custom_extention toaster_postpend $CMD $ADDR_PORT
return 0
;;
stop )
stop_system
echo "Successful ${CMD}."
;;
manage )
cd $BBBASEDIR/lib/toaster
$MANAGE $manage_cmd
;;
esac
custom_extention toaster_postpend $CMD $ADDR_PORT

115
bitbake/bin/toaster-eventreplay Executable file
View File

@@ -0,0 +1,115 @@
#!/usr/bin/env python3
#
# Copyright (C) 2014 Alex Damian
#
# SPDX-License-Identifier: GPL-2.0-only
#
# This file re-uses code spread throughout other Bitbake source files.
# As such, all other copyrights belong to their own right holders.
#
"""
This command takes a filename as a single parameter. The filename is read
as a build eventlog, and the ToasterUI is used to process events in the file
and log data in the database
"""
import os
import sys
import json
import pickle
import codecs
import warnings
warnings.simplefilter("default")
from collections import namedtuple
# mangle syspath to allow easy import of modules
from os.path import join, dirname, abspath
sys.path.insert(0, join(dirname(dirname(abspath(__file__))), 'lib'))
import bb.cooker
from bb.ui import toasterui
class EventPlayer:
"""Emulate a connection to a bitbake server."""
def __init__(self, eventfile, variables):
self.eventfile = eventfile
self.variables = variables
self.eventmask = []
def waitEvent(self, _timeout):
"""Read event from the file."""
line = self.eventfile.readline().strip()
if not line:
return
try:
event_str = json.loads(line)['vars'].encode('utf-8')
event = pickle.loads(codecs.decode(event_str, 'base64'))
event_name = "%s.%s" % (event.__module__, event.__class__.__name__)
if event_name not in self.eventmask:
return
return event
except ValueError as err:
print("Failed loading ", line)
raise err
def runCommand(self, command_line):
"""Emulate running a command on the server."""
name = command_line[0]
if name == "getVariable":
var_name = command_line[1]
variable = self.variables.get(var_name)
if variable:
return variable['v'], None
return None, "Missing variable %s" % var_name
elif name == "getAllKeysWithFlags":
dump = {}
flaglist = command_line[1]
for key, val in self.variables.items():
try:
if not key.startswith("__"):
dump[key] = {
'v': val['v'],
'history' : val['history'],
}
for flag in flaglist:
dump[key][flag] = val[flag]
except Exception as err:
print(err)
return (dump, None)
elif name == 'setEventMask':
self.eventmask = command_line[-1]
return True, None
else:
raise Exception("Command %s not implemented" % command_line[0])
def getEventHandle(self):
"""
This method is called by toasterui.
The return value is passed to self.runCommand but not used there.
"""
pass
def main(argv):
with open(argv[-1]) as eventfile:
# load variables from the first line
variables = json.loads(eventfile.readline().strip())['allvariables']
params = namedtuple('ConfigParams', ['observe_only'])(True)
player = EventPlayer(eventfile, variables)
return toasterui.main(player, player, params)
# run toaster ui on our mock bitbake class
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: %s <event file>" % os.path.basename(sys.argv[0]))
sys.exit(1)
sys.exit(main(sys.argv))

1
bitbake/contrib/README Normal file
View File

@@ -0,0 +1 @@
This directory is for additional contributed files which may be useful.

View File

@@ -0,0 +1,13 @@
{
"version": 1,
"loggers": {
"BitBake.SigGen.HashEquiv": {
"level": "VERBOSE",
"handlers": ["BitBake.verbconsole"]
},
"BitBake.RunQueue.HashEquiv": {
"level": "VERBOSE",
"handlers": ["BitBake.verbconsole"]
}
}
}

31
bitbake/contrib/bbdev.sh Normal file
View File

@@ -0,0 +1,31 @@
# This is a shell function to be sourced into your shell or placed in your .profile,
# which makes setting things up for BitBake a bit easier.
#
# The author disclaims copyright to the contents of this file and places it in the
# public domain.
bbdev () {
local BBDIR PKGDIR BUILDDIR
if test x"$1" = "x--help"; then echo >&2 "syntax: bbdev [bbdir [pkgdir [builddir]]]"; return 1; fi
if test x"$1" = x; then BBDIR=`pwd`; else BBDIR=$1; fi
if test x"$2" = x; then PKGDIR=`pwd`; else PKGDIR=$2; fi
if test x"$3" = x; then BUILDDIR=`pwd`; else BUILDDIR=$3; fi
BBDIR=`readlink -f $BBDIR`
PKGDIR=`readlink -f $PKGDIR`
BUILDDIR=`readlink -f $BUILDDIR`
if ! (test -d $BBDIR && test -d $PKGDIR && test -d $BUILDDIR); then
echo >&2 "syntax: bbdev [bbdir [pkgdir [builddir]]]"
return 1
fi
PATH=$BBDIR/bin:$PATH
BBPATH=$BBDIR
if test x"$BBDIR" != x"$PKGDIR"; then
BBPATH=$PKGDIR:$BBPATH
fi
if test x"$PKGDIR" != x"$BUILDDIR"; then
BBPATH=$BUILDDIR:$BBPATH
fi
export BBPATH
}

View File

@@ -0,0 +1,89 @@
#! /usr/bin/env python3
#
# Copyright (C) 2020 Joshua Watt <JPEWhacker@gmail.com>
#
# SPDX-License-Identifier: MIT
import argparse
import os
import random
import shutil
import signal
import subprocess
import sys
import time
def try_unlink(path):
try:
os.unlink(path)
except:
pass
def main():
def cleanup():
shutil.rmtree("tmp/cache", ignore_errors=True)
try_unlink("bitbake-cookerdaemon.log")
try_unlink("bitbake.sock")
try_unlink("bitbake.lock")
parser = argparse.ArgumentParser(
description="Bitbake parser torture test",
epilog="""
A torture test for bitbake's parser. Repeatedly interrupts parsing until
bitbake decides to deadlock.
""",
)
args = parser.parse_args()
if not "BUILDDIR" in os.environ:
print(
"'BUILDDIR' not found in the environment. Did you initialize the build environment?"
)
return 1
os.chdir(os.environ["BUILDDIR"])
run_num = 0
while True:
if run_num % 100 == 0:
print("Calibrating wait time...")
cleanup()
start_time = time.monotonic()
r = subprocess.run(["bitbake", "-p"])
max_wait_time = time.monotonic() - start_time
if r.returncode != 0:
print("Calibration run exited with %d" % r.returncode)
return 1
print("Maximum wait time is %f seconds" % max_wait_time)
run_num += 1
wait_time = random.random() * max_wait_time
print("Run #%d" % run_num)
print("Will sleep for %f seconds" % wait_time)
cleanup()
with subprocess.Popen(["bitbake", "-p"]) as proc:
time.sleep(wait_time)
proc.send_signal(signal.SIGINT)
try:
proc.wait(45)
except subprocess.TimeoutExpired:
print("Run #%d: Waited too long. Possible deadlock!" % run_num)
proc.wait()
return 1
if proc.returncode == 0:
print("Exited successfully. Timeout too long?")
else:
print("Exited with %d" % proc.returncode)
if __name__ == "__main__":
sys.exit(main())

83
bitbake/contrib/dump_cache.py Executable file
View File

@@ -0,0 +1,83 @@
#!/usr/bin/env python3
#
# Copyright (C) 2012, 2018 Wind River Systems, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# 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, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Used for dumping the bb_cache.dat
#
import os
import sys
import argparse
# For importing bb.cache
sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '../lib'))
from bb.cache import CoreRecipeInfo
import pickle
class DumpCache(object):
def __init__(self):
parser = argparse.ArgumentParser(
description="bb_cache.dat's dumper",
epilog="Use %(prog)s --help to get help")
parser.add_argument("-r", "--recipe",
help="specify the recipe, default: all recipes", action="store")
parser.add_argument("-m", "--members",
help = "specify the member, use comma as separator for multiple ones, default: all members", action="store", default="")
parser.add_argument("-s", "--skip",
help = "skip skipped recipes", action="store_true")
parser.add_argument("cachefile",
help = "specify bb_cache.dat", nargs = 1, action="store", default="")
self.args = parser.parse_args()
def main(self):
with open(self.args.cachefile[0], "rb") as cachefile:
pickled = pickle.Unpickler(cachefile)
while True:
try:
key = pickled.load()
val = pickled.load()
except Exception:
break
if isinstance(val, CoreRecipeInfo):
pn = val.pn
if self.args.recipe and self.args.recipe != pn:
continue
if self.args.skip and val.skipped:
continue
if self.args.members:
out = key
for member in self.args.members.split(','):
out += ": %s" % val.__dict__.get(member)
print("%s" % out)
else:
print("%s: %s" % (key, val.__dict__))
elif not self.args.recipe:
print("%s %s" % (key, val))
if __name__ == "__main__":
try:
dump = DumpCache()
ret = dump.main()
except Exception as esc:
ret = 1
import traceback
traceback.print_exc()
sys.exit(ret)

View File

@@ -0,0 +1,23 @@
# SPDX-License-Identifier: MIT
#
# Copyright (c) 2021 Joshua Watt <JPEWhacker@gmail.com>
#
# Dockerfile to build a bitbake hash equivalence server container
#
# From the root of the bitbake repository, run:
#
# docker build -f contrib/hashserv/Dockerfile .
#
FROM alpine:3.13.1
RUN apk add --no-cache python3
COPY bin/bitbake-hashserv /opt/bbhashserv/bin/
COPY lib/hashserv /opt/bbhashserv/lib/hashserv/
COPY lib/bb /opt/bbhashserv/lib/bb/
COPY lib/codegen.py /opt/bbhashserv/lib/codegen.py
COPY lib/ply /opt/bbhashserv/lib/ply/
COPY lib/bs4 /opt/bbhashserv/lib/bs4/
ENTRYPOINT ["/opt/bbhashserv/bin/bitbake-hashserv"]

View File

@@ -0,0 +1,62 @@
# SPDX-License-Identifier: MIT
#
# Copyright (c) 2022 Daniel Gomez <daniel@qtec.com>
#
# Dockerfile to build a bitbake PR service container
#
# From the root of the bitbake repository, run:
#
# docker build -f contrib/prserv/Dockerfile . -t prserv
#
# Running examples:
#
# 1. PR Service in RW mode, port 18585:
#
# docker run --detach --tty \
# --env PORT=18585 \
# --publish 18585:18585 \
# --volume $PWD:/var/lib/bbprserv \
# prserv
#
# 2. PR Service in RO mode, default port (8585) and custom LOGFILE:
#
# docker run --detach --tty \
# --env DBMODE="--read-only" \
# --env LOGFILE=/var/lib/bbprserv/prservro.log \
# --publish 8585:8585 \
# --volume $PWD:/var/lib/bbprserv \
# prserv
#
FROM alpine:3.14.4
RUN apk add --no-cache python3
COPY bin/bitbake-prserv /opt/bbprserv/bin/
COPY lib/prserv /opt/bbprserv/lib/prserv/
COPY lib/bb /opt/bbprserv/lib/bb/
COPY lib/codegen.py /opt/bbprserv/lib/codegen.py
COPY lib/ply /opt/bbprserv/lib/ply/
COPY lib/bs4 /opt/bbprserv/lib/bs4/
ENV PATH=$PATH:/opt/bbprserv/bin
RUN mkdir -p /var/lib/bbprserv
ENV DBFILE=/var/lib/bbprserv/prserv.sqlite3 \
LOGFILE=/var/lib/bbprserv/prserv.log \
LOGLEVEL=debug \
HOST=0.0.0.0 \
PORT=8585 \
DBMODE=""
ENTRYPOINT [ "/bin/sh", "-c", \
"bitbake-prserv \
--file=$DBFILE \
--log=$LOGFILE \
--loglevel=$LOGLEVEL \
--start \
--host=$HOST \
--port=$PORT \
$DBMODE \
&& tail -f $LOGFILE"]

View File

@@ -0,0 +1,18 @@
The MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,24 @@
" Vim filetype detection file
" Language: BitBake
" Author: Ricardo Salveti <rsalveti@rsalveti.net>
" Copyright: Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
" Licence: You may redistribute this under the same terms as Vim itself
"
" This sets up the syntax highlighting for BitBake files, like .bb, .bbclass and .inc
if &compatible || version < 600 || exists("b:loaded_bitbake_plugin")
finish
endif
" .bb, .bbappend and .bbclass
au BufNewFile,BufRead *.{bb,bbappend,bbclass} set filetype=bitbake
" .inc
au BufNewFile,BufRead *.inc set filetype=bitbake
" .conf
au BufNewFile,BufRead *.conf
\ if (match(expand("%:p:h"), "conf") > 0) |
\ set filetype=bitbake |
\ endif

View File

@@ -0,0 +1,13 @@
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
let b:undo_ftplugin = "setl cms< sts< sw< et< sua<"
setlocal commentstring=#\ %s
setlocal softtabstop=4 shiftwidth=4 expandtab
setlocal suffixesadd+=.bb,.bbclass

View File

@@ -0,0 +1,343 @@
" Vim indent file
" Language: BitBake
" Copyright: Copyright (C) 2019 Agilent Technologies, Inc.
" Maintainer: Chris Laplante <chris.laplante@agilent.com>
" License: You may redistribute this under the same terms as Vim itself
if exists("b:did_indent")
finish
endif
if exists("*BitbakeIndent")
finish
endif
runtime! indent/sh.vim
unlet b:did_indent
setlocal indentexpr=BitbakeIndent(v:lnum)
setlocal autoindent nolisp
function s:is_bb_python_func_def(lnum)
let stack = synstack(a:lnum, 1)
if len(stack) == 0
return 0
endif
let top = synIDattr(stack[0], "name")
echo top
return synIDattr(stack[0], "name") == "bbPyFuncDef"
endfunction
"""" begin modified from indent/python.vim, upstream commit 7a9bd7c1e0ce1baf5a02daf36eeae3638aa315c7
"""" This copied code is licensed the same as Vim itself.
setlocal indentkeys+=<:>,=elif,=except
let s:keepcpo= &cpo
set cpo&vim
let s:maxoff = 50 " maximum number of lines to look backwards for ()
function! GetBBPythonIndent(lnum)
" If this line is explicitly joined: If the previous line was also joined,
" line it up with that one, otherwise add two 'shiftwidth'
if getline(a:lnum - 1) =~ '\\$'
if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$'
return indent(a:lnum - 1)
endif
return indent(a:lnum - 1) + (exists("g:pyindent_continue") ? eval(g:pyindent_continue) : (shiftwidth() * 2))
endif
" If the start of the line is in a string don't change the indent.
if has('syntax_items')
\ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$"
return -1
endif
" Search backwards for the previous non-empty line.
let plnum = prevnonblank(v:lnum - 1)
if plnum == 0
" This is the first non-empty line, use zero indent.
return 0
endif
call cursor(plnum, 1)
" Identing inside parentheses can be very slow, regardless of the searchpair()
" timeout, so let the user disable this feature if he doesn't need it
let disable_parentheses_indenting = get(g:, "pyindent_disable_parentheses_indenting", 0)
if disable_parentheses_indenting == 1
let plindent = indent(plnum)
let plnumstart = plnum
else
" searchpair() can be slow sometimes, limit the time to 150 msec or what is
" put in g:pyindent_searchpair_timeout
let searchpair_stopline = 0
let searchpair_timeout = get(g:, 'pyindent_searchpair_timeout', 150)
" If the previous line is inside parenthesis, use the indent of the starting
" line.
" Trick: use the non-existing "dummy" variable to break out of the loop when
" going too far back.
let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW',
\ "line('.') < " . (plnum - s:maxoff) . " ? dummy :"
\ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
\ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
\ searchpair_stopline, searchpair_timeout)
if parlnum > 0
" We may have found the opening brace of a BitBake Python task, e.g. 'python do_task {'
" If so, ignore it here - it will be handled later.
if s:is_bb_python_func_def(parlnum)
let parlnum = 0
let plindent = indent(plnum)
let plnumstart = plnum
else
let plindent = indent(parlnum)
let plnumstart = parlnum
endif
else
let plindent = indent(plnum)
let plnumstart = plnum
endif
" When inside parenthesis: If at the first line below the parenthesis add
" two 'shiftwidth', otherwise same as previous line.
" i = (a
" + b
" + c)
call cursor(a:lnum, 1)
let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
\ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
\ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
\ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
\ searchpair_stopline, searchpair_timeout)
if p > 0
if s:is_bb_python_func_def(p)
" Handle first non-empty line inside a BB Python task
if p == plnum
return shiftwidth()
endif
" Handle the user actually trying to close a BitBake Python task
let line = getline(a:lnum)
if line =~ '^\s*}'
return -2
endif
" Otherwise ignore the brace
let p = 0
else
if p == plnum
" When the start is inside parenthesis, only indent one 'shiftwidth'.
let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
\ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
\ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
\ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
\ searchpair_stopline, searchpair_timeout)
if pp > 0
return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth())
endif
return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : (shiftwidth() * 2))
endif
if plnumstart == p
return indent(plnum)
endif
return plindent
endif
endif
endif
" Get the line and remove a trailing comment.
" Use syntax highlighting attributes when possible.
let pline = getline(plnum)
let pline_len = strlen(pline)
if has('syntax_items')
" If the last character in the line is a comment, do a binary search for
" the start of the comment. synID() is slow, a linear search would take
" too long on a long line.
if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$"
let min = 1
let max = pline_len
while min < max
let col = (min + max) / 2
if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$"
let max = col
else
let min = col + 1
endif
endwhile
let pline = strpart(pline, 0, min - 1)
endif
else
let col = 0
while col < pline_len
if pline[col] == '#'
let pline = strpart(pline, 0, col)
break
endif
let col = col + 1
endwhile
endif
" If the previous line ended with a colon, indent this line
if pline =~ ':\s*$'
return plindent + shiftwidth()
endif
" If the previous line was a stop-execution statement...
" TODO: utilize this logic to deindent when ending a bbPyDefRegion
if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\|bb\.fatal\)\>'
" See if the user has already dedented
if indent(a:lnum) > indent(plnum) - shiftwidth()
" If not, recommend one dedent
return indent(plnum) - shiftwidth()
endif
" Otherwise, trust the user
return -1
endif
" If the current line begins with a keyword that lines up with "try"
if getline(a:lnum) =~ '^\s*\(except\|finally\)\>'
let lnum = a:lnum - 1
while lnum >= 1
if getline(lnum) =~ '^\s*\(try\|except\)\>'
let ind = indent(lnum)
if ind >= indent(a:lnum)
return -1 " indent is already less than this
endif
return ind " line up with previous try or except
endif
let lnum = lnum - 1
endwhile
return -1 " no matching "try"!
endif
" If the current line begins with a header keyword, dedent
if getline(a:lnum) =~ '^\s*\(elif\|else\)\>'
" Unless the previous line was a one-liner
if getline(plnumstart) =~ '^\s*\(for\|if\|try\)\>'
return plindent
endif
" Or the user has already dedented
if indent(a:lnum) <= plindent - shiftwidth()
return -1
endif
return plindent - shiftwidth()
endif
" When after a () construct we probably want to go back to the start line.
" a = (b
" + c)
" here
if parlnum > 0
return plindent
endif
return -1
endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
""" end of stuff from indent/python.vim
let b:did_indent = 1
setlocal indentkeys+=0\"
function! BitbakeIndent(lnum)
if !has('syntax_items')
return -1
endif
let stack = synstack(a:lnum, 1)
if len(stack) == 0
return -1
endif
let name = synIDattr(stack[0], "name")
" TODO: support different styles of indentation for assignments. For now,
" we only support like this:
" VAR = " \
" value1 \
" value2 \
" "
"
" i.e. each value indented by shiftwidth(), with the final quote " completely unindented.
if name == "bbVarValue"
" Quote handling is tricky. kernel.bbclass has this line for instance:
" EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" " HOSTCPP="${BUILD_CPP}""
" Instead of trying to handle crazy cases like that, just assume that a
" double-quote on a line by itself (following an assignment) means the
" user is closing the assignment, and de-dent.
if getline(a:lnum) =~ '^\s*"$'
return 0
endif
let prevstack = synstack(a:lnum - 1, 1)
if len(prevstack) == 0
return -1
endif
let prevname = synIDattr(prevstack[0], "name")
" Only indent if there was actually a continuation character on
" the previous line, to avoid misleading indentation.
let prevlinelastchar = synIDattr(synID(a:lnum - 1, col([a:lnum - 1, "$"]) - 1, 1), "name")
let prev_continued = prevlinelastchar == "bbContinue"
" Did the previous line introduce an assignment?
if index(["bbVarDef", "bbVarFlagDef"], prevname) != -1
if prev_continued
return shiftwidth()
endif
endif
if !prev_continued
return 0
endif
" Autoindent can take it from here
return -1
endif
if index(["bbPyDefRegion", "bbPyFuncRegion"], name) != -1
let ret = GetBBPythonIndent(a:lnum)
" Should normally always be indented by at least one shiftwidth; but allow
" return of -1 (defer to autoindent) or -2 (force indent to 0)
if ret == 0
return shiftwidth()
elseif ret == -2
return 0
endif
return ret
endif
" TODO: GetShIndent doesn't detect tasks prepended with 'fakeroot'
" Need to submit a patch upstream to Vim to provide an extension point.
" Unlike the Python indenter, the Sh indenter is way too large to copy and
" modify here.
if name == "bbShFuncRegion"
return GetShIndent()
endif
" TODO:
" + heuristics for de-denting out of a bbPyDefRegion? e.g. when the user
" types an obvious BB keyword like addhandler or addtask, or starts
" writing a shell task. Maybe too hard to implement...
return -1
endfunction

View File

@@ -0,0 +1,88 @@
" Vim plugin file
" Purpose: Create a template for new bb files
" Author: Ricardo Salveti <rsalveti@gmail.com>
" Copyright: Copyright (C) 2008 Ricardo Salveti <rsalveti@gmail.com>
"
" This file is licensed under the MIT license, see COPYING.MIT in
" this source distribution for the terms.
"
" Based on the gentoo-syntax package
"
" Will try to use git to find the user name and email
if &compatible || v:version < 600 || exists("b:loaded_bitbake_plugin")
finish
endif
fun! <SID>GetUserName()
let l:user_name = system("git config --get user.name")
if v:shell_error
return "Unknown User"
else
return substitute(l:user_name, "\n", "", "")
endfun
fun! <SID>GetUserEmail()
let l:user_email = system("git config --get user.email")
if v:shell_error
return "unknown@user.org"
else
return substitute(l:user_email, "\n", "", "")
endfun
fun! BBHeader()
let l:current_year = strftime("%Y")
let l:user_name = <SID>GetUserName()
let l:user_email = <SID>GetUserEmail()
0 put ='# Copyright (C) ' . l:current_year .
\ ' ' . l:user_name . ' <' . l:user_email . '>'
put ='# Released under the MIT license (see COPYING.MIT for the terms)'
$
endfun
fun! NewBBTemplate()
if line2byte(line('$') + 1) != -1
return
endif
let l:paste = &paste
set nopaste
" Get the header
call BBHeader()
" New the bb template
put ='SUMMARY = \"\"'
put ='HOMEPAGE = \"\"'
put ='LICENSE = \"\"'
put ='SECTION = \"\"'
put ='DEPENDS = \"\"'
put =''
put ='SRC_URI = \"\"'
" Go to the first place to edit
0
/^SUMMARY =/
exec "normal 2f\""
if paste == 1
set paste
endif
endfun
if !exists("g:bb_create_on_empty")
let g:bb_create_on_empty = 1
endif
" disable in case of vimdiff
if v:progname =~ "vimdiff"
let g:bb_create_on_empty = 0
endif
augroup NewBB
au BufNewFile,BufReadPost *.bb
\ if g:bb_create_on_empty |
\ call NewBBTemplate() |
\ endif
augroup END

View File

@@ -0,0 +1,46 @@
" Vim plugin file
" Purpose: Create a template for new bbappend file
" Author: Joshua Watt <JPEWhacker@gmail.com>
" Copyright: Copyright (C) 2017 Joshua Watt <JPEWhacker@gmail.com>
"
" This file is licensed under the MIT license, see COPYING.MIT in
" this source distribution for the terms.
"
if &compatible || v:version < 600 || exists("b:loaded_bitbake_plugin")
finish
endif
fun! NewBBAppendTemplate()
if line2byte(line('$') + 1) != -1
return
endif
let l:paste = &paste
set nopaste
" New bbappend template
0 put ='FILESEXTRAPATHS:prepend := \"${THISDIR}/${PN}:\"'
2
if paste == 1
set paste
endif
endfun
if !exists("g:bb_create_on_empty")
let g:bb_create_on_empty = 1
endif
" disable in case of vimdiff
if v:progname =~ "vimdiff"
let g:bb_create_on_empty = 0
endif
augroup NewBBAppend
au BufNewFile,BufReadPost *.bbappend
\ if g:bb_create_on_empty |
\ call NewBBAppendTemplate() |
\ endif
augroup END

View File

@@ -0,0 +1,129 @@
" Vim syntax file
" Language: BitBake bb/bbclasses/inc
" Author: Chris Larson <kergoth@handhelds.org>
" Ricardo Salveti <rsalveti@rsalveti.net>
" Copyright: Copyright (C) 2004 Chris Larson <kergoth@handhelds.org>
" Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
"
" This file is licensed under the MIT license, see COPYING.MIT in
" this source distribution for the terms.
"
" Syntax highlighting for bb, bbclasses and inc files.
"
" It's an entirely new type, just has specific syntax in shell and python code
if &compatible || v:version < 600 || exists("b:loaded_bitbake_plugin")
finish
endif
if exists("b:current_syntax")
finish
endif
syn include @python syntax/python.vim
if exists("b:current_syntax")
unlet b:current_syntax
endif
" BitBake syntax
" Matching case
syn case match
" Indicates the error when nothing is matched
syn match bbUnmatched "."
" Comments
syn cluster bbCommentGroup contains=bbTodo,@Spell
syn keyword bbTodo COMBAK FIXME TODO XXX contained
syn match bbComment "#.*$" contains=@bbCommentGroup
" String helpers
syn match bbQuote +['"]+ contained
syn match bbDelimiter "[(){}=]" contained
syn match bbArrayBrackets "[\[\]]" contained
" BitBake strings
syn match bbContinue "\\$"
syn region bbString matchgroup=bbQuote start=+"+ skip=+\\$+ end=+"+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
syn region bbString matchgroup=bbQuote start=+'+ skip=+\\$+ end=+'+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
" Vars definition
syn match bbExport "^export" nextgroup=bbIdentifier skipwhite
syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite
syn match bbIdentifier "[a-zA-Z0-9\-_\.\/\+]\+" display contained
syn match bbVarDeref "${[a-zA-Z0-9\-_:\.\/\+]\+}" contained
syn match bbVarEq "\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)" contained nextgroup=bbVarValue
syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.\/\+][${}a-zA-Z0-9\-_:\.\/\+]*\)\s*\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbOverrideOperator,bbVarDeref nextgroup=bbVarEq
syn match bbVarValue ".*$" contained contains=bbString,bbVarDeref,bbVarPyValue
syn region bbVarPyValue start=+${@+ skip=+\\$+ end=+}+ contained contains=@python
" Vars metadata flags
syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.+]\+\]\)\@=" contains=bbIdentifier nextgroup=bbVarFlagFlag
syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(:=\|=\|.=\|=.|+=\|=+\|?=\)\@=" contained contains=bbIdentifier nextgroup=bbVarEq
" Includes and requires
syn keyword bbInclude inherit include require contained
syn match bbIncludeRest ".*$" contained contains=bbString,bbVarDeref
syn match bbIncludeLine "^\(inherit\|include\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest
" Add taks and similar
syn keyword bbStatement addtask deltask addhandler after before EXPORT_FUNCTIONS contained
syn match bbStatementRest ".*$" skipwhite contained contains=bbStatement
syn match bbStatementLine "^\(addtask\|deltask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest
" OE Important Functions
syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained
" Generic Functions
syn match bbFunction "\h[0-9A-Za-z_\-\.]*" display contained contains=bbOEFunctions
syn keyword bbOverrideOperator append prepend remove contained
" BitBake shell metadata
syn include @shell syntax/sh.vim
if exists("b:current_syntax")
unlet b:current_syntax
endif
syn keyword bbShFakeRootFlag fakeroot contained
syn match bbShFuncDef "^\(fakeroot\s*\)\?\([\.0-9A-Za-z_:${}\-\.]\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbShFuncRegion skipwhite
syn region bbShFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@shell
" Python value inside shell functions
syn region shDeref start=+${@+ skip=+\\$+ excludenl end=+}+ contained contains=@python
" BitBake python metadata
syn keyword bbPyFlag python contained
syn match bbPyFuncDef "^\(fakeroot\s*\)\?\(python\)\(\s\+[0-9A-Za-z_:${}\-\.]\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbPyFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbPyFuncRegion skipwhite
syn region bbPyFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@python
" BitBake 'def'd python functions
syn keyword bbPyDef def contained
syn region bbPyDefRegion start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' end='^\(\s\|$\)\@!' contains=@python
" Highlighting Definitions
hi def link bbUnmatched Error
hi def link bbInclude Include
hi def link bbTodo Todo
hi def link bbComment Comment
hi def link bbQuote String
hi def link bbString String
hi def link bbDelimiter Keyword
hi def link bbArrayBrackets Statement
hi def link bbContinue Special
hi def link bbExport Type
hi def link bbExportFlag Type
hi def link bbIdentifier Identifier
hi def link bbVarDeref PreProc
hi def link bbVarDef Identifier
hi def link bbVarValue String
hi def link bbShFakeRootFlag Type
hi def link bbFunction Function
hi def link bbPyFlag Type
hi def link bbPyDef Statement
hi def link bbStatement Statement
hi def link bbStatementRest Identifier
hi def link bbOEFunctions Special
hi def link bbVarPyValue PreProc
hi def link bbOverrideOperator Operator
let b:current_syntax = "bb"

1
bitbake/doc/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
_build/

339
bitbake/doc/COPYING.GPL Normal file
View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 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, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

17
bitbake/doc/COPYING.MIT Normal file
View File

@@ -0,0 +1,17 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
THE USE OR OTHER DEALINGS IN THE SOFTWARE.

35
bitbake/doc/Makefile Normal file
View File

@@ -0,0 +1,35 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?= -W --keep-going -j auto
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build
DESTDIR = final
ifeq ($(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi),0)
$(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed")
endif
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile clean publish
publish: Makefile html singlehtml
rm -rf $(BUILDDIR)/$(DESTDIR)/
mkdir -p $(BUILDDIR)/$(DESTDIR)/
cp -r $(BUILDDIR)/html/* $(BUILDDIR)/$(DESTDIR)/
cp $(BUILDDIR)/singlehtml/index.html $(BUILDDIR)/$(DESTDIR)/singleindex.html
sed -i -e 's@index.html#@singleindex.html#@g' $(BUILDDIR)/$(DESTDIR)/singleindex.html
clean:
@rm -rf $(BUILDDIR)
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

55
bitbake/doc/README Normal file
View File

@@ -0,0 +1,55 @@
Documentation
=============
This is the directory that contains the BitBake documentation.
Manual Organization
===================
Folders exist for individual manuals as follows:
* bitbake-user-manual --- The BitBake User Manual
Each folder is self-contained regarding content and figures.
If you want to find HTML versions of the BitBake manuals on the web,
go to https://www.openembedded.org/wiki/Documentation.
Sphinx
======
The BitBake documentation was migrated from the original DocBook
format to Sphinx based documentation for the Yocto Project 3.2
release.
Additional information related to the Sphinx migration, and guidelines
for developers willing to contribute to the BitBake documentation can
be found in the Yocto Project Documentation README file:
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/README
How to build the Yocto Project documentation
============================================
Sphinx is written in Python. While it might work with Python2, for
obvious reasons, we will only support building the BitBake
documentation with Python3.
Sphinx might be available in your Linux distro packages repositories,
however it is not recommend using distro packages, as they might be
old versions, especially if you are using an LTS version of your
distro. The recommended method to install Sphinx and all required
dependencies is to use the Python Package Index (pip).
To install all required packages run:
$ pip3 install sphinx sphinx_rtd_theme pyyaml
To build the documentation locally, run:
$ cd doc
$ make html
The resulting HTML index page will be _build/html/index.html, and you
can browse your own copy of the locally generated documentation with
your browser.

14
bitbake/doc/_templates/breadcrumbs.html vendored Normal file
View File

@@ -0,0 +1,14 @@
{% extends "!breadcrumbs.html" %}
{% block breadcrumbs %}
<li>
<span class="doctype_switcher_placeholder">{{ doctype or 'single' }}</span>
<span class="version_switcher_placeholder">{{ release }}</span>
</li>
<li> &raquo;</li>
{% for doc in parents %}
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a> &raquo;</li>
{% endfor %}
<li>{{ title }}</li>
{% endblock %}

9
bitbake/doc/_templates/footer.html vendored Normal file
View File

@@ -0,0 +1,9 @@
<footer>
<hr/>
<div role="contentinfo">
<p>&copy; Copyright {{ copyright }}
<br>Last updated on {{ last_updated }} from the <a href="https://git.openembedded.org/bitbake/">bitbake</a> git repository.
</p>
</div>
</footer>

7
bitbake/doc/_templates/layout.html vendored Normal file
View File

@@ -0,0 +1,7 @@
{% extends "!layout.html" %}
{% block extrabody %}
<div id="outdated-warning" style="text-align: center; background-color: #FFBABA; color: #6A0E0E;">
</div>
{% endblock %}

View File

@@ -0,0 +1,760 @@
.. SPDX-License-Identifier: CC-BY-2.5
=========
Execution
=========
|
The primary purpose for running BitBake is to produce some kind of
output such as a single installable package, a kernel, a software
development kit, or even a full, board-specific bootable Linux image,
complete with bootloader, kernel, and root filesystem. Of course, you
can execute the ``bitbake`` command with options that cause it to
execute single tasks, compile single recipe files, capture or clear
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::
$ bitbake target
For information on
the BitBake command and its options, see ":ref:`The BitBake Command
<bitbake-user-manual-command>`" section.
.. note::
Prior to executing BitBake, you should take advantage of available
parallel thread execution on your build host by setting the
:term:`BB_NUMBER_THREADS` variable in
your project's ``local.conf`` configuration file.
A common method to determine this value for your build host is to run
the following::
$ grep processor /proc/cpuinfo
This command returns
the number of processors, which takes into account hyper-threading.
Thus, a quad-core build host with hyper-threading most likely shows
eight processors, which is the value you would then assign to
:term:`BB_NUMBER_THREADS`.
A possibly simpler solution is that some Linux distributions (e.g.
Debian and Ubuntu) provide the ``ncpus`` command.
Parsing the Base Configuration Metadata
=======================================
The first thing BitBake does is parse base configuration metadata. Base
configuration metadata consists of your project's ``bblayers.conf`` file
to determine what layers BitBake needs to recognize, all necessary
``layer.conf`` files (one from each layer), and ``bitbake.conf``. The
data itself is of various types:
- **Recipes:** Details about particular pieces of software.
- **Class Data:** An abstraction of common build information (e.g. how to
build a Linux kernel).
- **Configuration Data:** Machine-specific settings, policy decisions,
and so forth. Configuration data acts as the glue to bind everything
together.
The ``layer.conf`` files are used to construct key variables such as
:term:`BBPATH` and :term:`BBFILES`.
:term:`BBPATH` is used to search for configuration and class files under the
``conf`` and ``classes`` directories, respectively. :term:`BBFILES` is used
to locate both recipe and recipe append files (``.bb`` and
``.bbappend``). If there is no ``bblayers.conf`` file, it is assumed the
user has set the :term:`BBPATH` and :term:`BBFILES` directly in the environment.
Next, the ``bitbake.conf`` file is located using the :term:`BBPATH` variable
that was just constructed. The ``bitbake.conf`` file may also include
other configuration files using the ``include`` or ``require``
directives.
Prior to parsing configuration files, BitBake looks at certain
variables, including:
- :term:`BB_ENV_PASSTHROUGH`
- :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
- :term:`BB_PRESERVE_ENV`
- :term:`BB_ORIGENV`
- :term:`BITBAKE_UI`
The first four variables in this list relate to how BitBake treats shell
environment variables during task execution. By default, BitBake cleans
the environment variables and provides tight control over the shell
execution environment. However, through the use of these first four
variables, you can apply your control regarding the environment
variables allowed to be used by BitBake in the shell during execution of
tasks. See the
":ref:`bitbake-user-manual/bitbake-user-manual-metadata:Passing Information Into the Build Task Environment`"
section and the information about these variables in the variable
glossary for more information on how they work and on how to use them.
The base configuration metadata is global and therefore affects all
recipes and tasks that are executed.
BitBake first searches the current working directory for an optional
``conf/bblayers.conf`` configuration file. This file is expected to
contain a :term:`BBLAYERS` variable that is a
space-delimited list of 'layer' directories. Recall that if BitBake
cannot find a ``bblayers.conf`` file, then it is assumed the user has
set the :term:`BBPATH` and :term:`BBFILES` variables directly in the
environment.
For each directory (layer) in this list, a ``conf/layer.conf`` file is
located and parsed with the :term:`LAYERDIR` variable
being set to the directory where the layer was found. The idea is these
files automatically set up :term:`BBPATH` and other
variables correctly for a given build directory.
BitBake then expects to find the ``conf/bitbake.conf`` file somewhere in
the user-specified :term:`BBPATH`. That configuration file generally has
include directives to pull in any other metadata such as files specific
to the architecture, the machine, the local environment, and so forth.
Only variable definitions and include directives are allowed in BitBake
``.conf`` files. Some variables directly influence BitBake's behavior.
These variables might have been set from the environment depending on
the environment variables previously mentioned or set in the
configuration files. The ":ref:`bitbake-user-manual/bitbake-user-manual-ref-variables:Variables Glossary`"
chapter presents a full list of
variables.
After parsing configuration files, BitBake uses its rudimentary
inheritance mechanism, which is through class files, to inherit some
standard classes. BitBake parses a class when the inherit directive
responsible for getting that class is encountered.
The ``base.bbclass`` file is always included. Other classes that are
specified in the configuration using the
:term:`INHERIT` variable are also included. BitBake
searches for class files in a ``classes`` subdirectory under the paths
in :term:`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::
$ bitbake -e > mybb.log
Examining the top of the ``mybb.log``
shows you the many configuration files and class files used in your
execution environment.
.. note::
You need to be aware of how BitBake parses curly braces. If a recipe
uses a closing curly brace within the function and the character has
no leading spaces, BitBake produces a parsing error. If you use a
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::
fakeroot create_shar() {
cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
usage()
{
echo "test"
###### The following "}" at the start of the line causes a parsing error ######
}
EOF
}
Writing the recipe this way avoids the error:
fakeroot create_shar() {
cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
usage()
{
echo "test"
###### The following "}" with a leading space at the start of the line avoids the error ######
}
EOF
}
Locating and Parsing Recipes
============================
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. :term:`BBFILES` is a space-separated list of available files and
supports wildcards. An example would be::
BBFILES = "/path/to/bbfiles/*.bb /path/to/appends/*.bbappend"
BitBake parses each
recipe and append file located with :term:`BBFILES` and stores the values of
various variables into the datastore.
.. note::
Append files are applied in the order they are encountered in BBFILES.
For each file, a fresh copy of the base configuration is made, then the
recipe is parsed line by line. Any inherit statements cause BitBake to
find and then parse class files (``.bbclass``) using
:term:`BBPATH` as the search path. Finally, BitBake
parses in order any append files found in :term:`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`::
PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
PV = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}"
In this example, a recipe called "something_1.2.3.bb" would set
:term:`PN` to "something" and :term:`PV` to "1.2.3".
By the time parsing is complete for a recipe, BitBake has a list of
tasks that the recipe defines and a set of data consisting of keys and
values as well as dependency information about the tasks.
BitBake does not need all of this information. It only needs a small
subset of the information to make decisions about the recipe.
Consequently, BitBake caches the values in which it is interested and
does not store the rest of the information. Experience has shown it is
faster to re-parse the metadata than to try and write it out to the disk
and then reload it.
Where possible, subsequent BitBake commands reuse this cache of recipe
information. The validity of this cache is determined by first computing
a checksum of the base configuration data (see
:term:`BB_HASHCONFIG_IGNORE_VARS`) and
then checking if the checksum matches. If that checksum matches what is
in the cache and the recipe and class files have not changed, BitBake is
able to use the cache. BitBake then reloads the cached information about
the recipe instead of reparsing it from scratch.
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::
BBFILES = "/stuff/openembedded/*/*.bb /stuff/openembedded.modified/*/*.bb"
BBFILE_COLLECTIONS = "upstream local"
BBFILE_PATTERN_upstream = "^/stuff/openembedded/"
BBFILE_PATTERN_local = "^/stuff/openembedded.modified/"
BBFILE_PRIORITY_upstream = "5"
BBFILE_PRIORITY_local = "10"
.. note::
The layers mechanism is now the preferred method of collecting code.
While the collections code remains, its main use is to set layer
priorities and to deal with overlap (conflicts) between layers.
.. _bb-bitbake-providers:
Providers
=========
Assuming BitBake has been instructed to execute a target and that all
the recipe files have been parsed, BitBake starts to figure out how to
build the target. BitBake looks through the :term:`PROVIDES` list for each
of the recipes. A :term:`PROVIDES` list is the list of names by which the
recipe can be known. Each recipe's :term:`PROVIDES` list is created
implicitly through the recipe's :term:`PN` variable and
explicitly through the recipe's :term:`PROVIDES`
variable, which is optional.
When a recipe uses :term:`PROVIDES`, that recipe's functionality can be
found under an alternative name or names other than the implicit :term:`PN`
name. As an example, suppose a recipe named ``keyboard_1.0.bb``
contained the following::
PROVIDES += "fullkeyboard"
The :term:`PROVIDES`
list for this recipe becomes "keyboard", which is implicit, and
"fullkeyboard", which is explicit. Consequently, the functionality found
in ``keyboard_1.0.bb`` can be found under two different names.
.. _bb-bitbake-preferences:
Preferences
===========
The :term:`PROVIDES` list is only part of the solution for figuring out a
target's recipes. Because targets might have multiple providers, BitBake
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 :term:`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::
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
The default :term:`PREFERRED_PROVIDER` is the provider
with the same name as the target. BitBake iterates through each target
it needs to build and resolves them and their dependencies using this
process.
Understanding how providers are chosen is made complicated by the fact
that multiple versions might exist for a given provider. BitBake
defaults to the highest version of a provider. Version comparisons are
made using the same method as Debian. You can use the
:term:`PREFERRED_VERSION` variable to
specify a particular version. You can influence the order by using the
:term:`DEFAULT_PREFERENCE` variable.
By default, files have a preference of "0". Setting
:term:`DEFAULT_PREFERENCE` to "-1" makes the recipe unlikely to be used
unless it is explicitly referenced. Setting :term:`DEFAULT_PREFERENCE` to
"1" makes it likely the recipe is used. :term:`PREFERRED_VERSION` overrides
any :term:`DEFAULT_PREFERENCE` setting. :term:`DEFAULT_PREFERENCE` is often used
to mark newer and more experimental recipe versions until they have
undergone sufficient testing to be considered stable.
When there are multiple "versions" of a given recipe, BitBake defaults
to selecting the most recent version, unless otherwise specified. If the
recipe in question has a
:term:`DEFAULT_PREFERENCE` set lower than
the other recipes (default is 0), then it will not be selected. This
allows the person or persons maintaining the repository of recipe files
to specify their preference for the default selected version.
Additionally, the user can specify their preferred version.
If the first recipe is named ``a_1.1.bb``, then the
:term:`PN` variable will be set to "a", and the
:term:`PV` variable will be set to 1.1.
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::
PREFERRED_VERSION_a = "1.1"
.. note::
It is common for a recipe to provide two versions -- a stable,
numbered (and preferred) version, and a version that is automatically
checked out from a source code repository that is considered more
"bleeding edge" but can be selected only explicitly.
For example, in the OpenEmbedded codebase, there is a standard,
versioned recipe file for BusyBox, ``busybox_1.22.1.bb``, but there
is also a Git-based version, ``busybox_git.bb``, which explicitly
contains the line ::
DEFAULT_PREFERENCE = "-1"
to ensure that the
numbered, stable version is always preferred unless the developer
selects otherwise.
.. _bb-bitbake-dependencies:
Dependencies
============
Each target BitBake builds consists of multiple tasks such as ``fetch``,
``unpack``, ``patch``, ``configure``, and ``compile``. For best
performance on multi-core systems, BitBake considers each task as an
independent entity with its own set of dependencies.
Dependencies are defined through several variables. You can find
information about variables BitBake uses in the
:doc:`bitbake-user-manual-ref-variables` near the end of this manual. At a
basic level, it is sufficient to know that BitBake uses the
:term:`DEPENDS` and
:term:`RDEPENDS` variables when calculating
dependencies.
For more information on how BitBake handles dependencies, see the
:ref:`bitbake-user-manual/bitbake-user-manual-metadata:Dependencies`
section.
.. _ref-bitbake-tasklist:
The Task List
=============
Based on the generated list of providers and the dependency information,
BitBake can now calculate exactly what tasks it needs to run and in what
order it needs to run them. The
:ref:`bitbake-user-manual/bitbake-user-manual-execution:executing tasks`
section has more information on how BitBake chooses which task to
execute next.
The build now starts with BitBake forking off threads up to the limit
set in the :term:`BB_NUMBER_THREADS`
variable. BitBake continues to fork threads as long as there are tasks
ready to run, those tasks have all their dependencies met, and the
thread threshold has not been exceeded.
It is worth noting that you can greatly speed up the build time by
properly setting the :term:`BB_NUMBER_THREADS` variable.
As each task completes, a timestamp is written to the directory
specified by the :term:`STAMP` variable. On subsequent
runs, BitBake looks in the build directory within ``tmp/stamps`` and
does not rerun tasks that are already completed unless a timestamp is
found to be invalid. Currently, invalid timestamps are only considered
on a per recipe file basis. So, for example, if the configure stamp has
a timestamp greater than the compile timestamp for a given target, then
the compile task would rerun. Running the compile task again, however,
has no effect on other providers that depend on that target.
The exact format of the stamps is partly configurable. In modern
versions of BitBake, a hash is appended to the stamp so that if the
configuration changes, the stamp becomes invalid and the task is
automatically rerun. This hash, or signature used, is governed by the
signature policy that is configured (see the
:ref:`bitbake-user-manual/bitbake-user-manual-execution:checksums (signatures)`
section for information). It is also
possible to append extra metadata to the stamp using the
``[stamp-extra-info]`` task flag. For example, OpenEmbedded uses this
flag to make some tasks machine-specific.
.. note::
Some tasks are marked as "nostamp" tasks. No timestamp file is
created when these tasks are run. Consequently, "nostamp" tasks are
always rerun.
For more information on tasks, see the
:ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks` section.
Executing Tasks
===============
Tasks can be either a shell task or a Python task. For shell tasks,
BitBake writes a shell script to
``${``\ :term:`T`\ ``}/run.do_taskname.pid`` and then
executes the script. The generated shell script contains all the
exported variables, and the shell functions with all variables expanded.
Output from the shell script goes to the file
``${``\ :term:`T`\ ``}/log.do_taskname.pid``. Looking at the expanded shell functions in
the run file and the output in the log files is a useful debugging
technique.
For Python tasks, BitBake executes the task internally and logs
information to the controlling terminal. Future versions of BitBake will
write the functions to files similar to the way shell tasks are handled.
Logging will be handled in a way similar to shell tasks as well.
The order in which BitBake runs the tasks is controlled by its task
scheduler. It is possible to configure the scheduler and define custom
implementations for specific use cases. For more information, see these
variables that control the behavior:
- :term:`BB_SCHEDULER`
- :term:`BB_SCHEDULERS`
It is possible to have functions run before and after a task's main
function. This is done using the ``[prefuncs]`` and ``[postfuncs]``
flags of the task that lists the functions to run.
.. _checksums:
Checksums (Signatures)
======================
A checksum is a unique signature of a task's inputs. The signature of a
task can be used to determine if a task needs to be run. Because it is a
change in a task's inputs that triggers running the task, BitBake needs
to detect all the inputs to a given task. For shell tasks, this turns
out to be fairly easy because BitBake generates a "run" shell script for
each task and it is possible to create a checksum that gives you a good
idea of when the task's data changes.
To complicate the problem, some things should not be included in the
checksum. First, there is the actual specific build path of a given task
- the working directory. It does not matter if the working directory
changes because it should not affect the output for target packages. The
simplistic approach for excluding the working directory is to set it to
some fixed value and create the checksum for the "run" script. BitBake
goes one step better and uses the
:term:`BB_BASEHASH_IGNORE_VARS` variable
to define a list of variables that should never be included when
generating the signatures.
Another problem results from the "run" scripts containing functions that
might or might not get called. The incremental build solution contains
code that figures out dependencies between shell functions. This code is
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 we have 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
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 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::
PACKAGE_ARCHS[vardepsexclude] = "MACHINE"
This example ensures that the
``PACKAGE_ARCHS`` variable does not depend on the value of ``MACHINE``,
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::
PACKAGE_ARCHS[vardeps] = "MACHINE"
This example explicitly
adds the ``MACHINE`` variable as a dependency for ``PACKAGE_ARCHS``.
Consider a case with in-line Python, for example, where BitBake is not
able to figure out dependencies. When running in debug mode (i.e. using
``-DDD``), BitBake produces output when it discovers something for which
it cannot figure out dependencies.
Thus far, this section has limited discussion to the direct inputs into
a task. Information based on direct inputs is referred to as the
"basehash" in the code. However, there is still the question of a task's
indirect inputs --- the things that were already built and present in the
build directory. The checksum (or signature) for a particular task needs
to add the hashes of all the tasks on which the particular task depends.
Choosing which dependencies 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, there are a variety of ways both the basehash and the
dependent task hashes can be influenced. Within the BitBake
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::
BB_BASEHASH_IGNORE_VARS ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \
SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL \
USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \
PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \
CCACHE_DIR EXTERNAL_TOOLCHAIN CCACHE CCACHE_DISABLE LICENSE_PATH SDKPKGSUFFIX"
The previous example excludes the work directory, which is part of
``TMPDIR``.
The rules for deciding which hashes of dependent tasks to include
through dependency chains are more complex and are generally
accomplished with a Python function. The code in
``meta/lib/oe/sstatesig.py`` shows two examples of this and also
illustrates how you can insert your own policy into the system if so
desired. This file defines the basic signature generator
OpenEmbedded-Core uses: "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::
BB_SIGNATURE_HANDLER ?= "OEBasicHash"
The main feature of the "OEBasicHash" :term:`BB_SIGNATURE_HANDLER` is that
it adds the task hash to the stamp files. Thanks to this, any metadata
change will change the task hash, automatically causing the task to be run
again. This removes the need to bump :term:`PR` values, and changes to
metadata automatically ripple across the build.
It is also worth noting that the end result of signature
generators is to make some dependency and hash information available to
the build. This information includes:
- ``BB_BASEHASH_task-``\ *taskname*: The base hashes for each task in the
recipe.
- ``BB_BASEHASH_``\ *filename:taskname*: The base hashes for each
dependent task.
- :term:`BB_TASKHASH`: The hash of the currently running task.
It is worth noting that BitBake's "-S" option lets you debug BitBake's
processing of signatures. The options passed to -S allow different
debugging modes to be used, either using BitBake's own debug functions
or possibly those defined in the metadata/signature handler itself. The
simplest parameter to pass is "none", which causes a set of signature
information to be written out into ``STAMPS_DIR`` corresponding to the
targets specified. The other currently available parameter is
"printdiff", which causes BitBake to try to establish the closest
signature match it can (e.g. in the sstate cache) and then run
``bitbake-diffsigs`` over the matches to determine the stamps and delta
where these two stamp trees diverge.
.. note::
It is likely that future versions of BitBake will provide other
signature handlers triggered through additional "-S" parameters.
You can find more information on checksum metadata in the
:ref:`bitbake-user-manual/bitbake-user-manual-metadata:task checksums and setscene`
section.
Setscene
========
The setscene process enables BitBake to handle "pre-built" artifacts.
The ability to handle and reuse these artifacts allows BitBake the
luxury of not having to build something from scratch every time.
Instead, BitBake can use, when possible, existing build artifacts.
BitBake needs to have reliable data indicating whether or not an
artifact is compatible. Signatures, described in the previous section,
provide an ideal way of representing whether an artifact is compatible.
If a signature is the same, an object can be reused.
If an object can be reused, the problem then becomes how to replace a
given task or set of tasks with the pre-built artifact. BitBake solves
the problem with the "setscene" process.
When BitBake is asked to build a given target, before building anything,
it first asks whether cached information is available for any of the
targets it's building, or any of the intermediate targets. If cached
information is available, BitBake uses this information instead of
running the main tasks.
BitBake first calls the function defined by the
:term:`BB_HASHCHECK_FUNCTION` variable
with a list of tasks and corresponding hashes it wants to build. This
function is designed to be fast and returns a list of the tasks for
which it believes in can obtain artifacts.
Next, for each of the tasks that were returned as possibilities, BitBake
executes a setscene version of the task that the possible artifact
covers. Setscene versions of a task have the string "_setscene" appended
to the task name. So, for example, the task with the name ``xxx`` has a
setscene task named ``xxx_setscene``. The setscene version of the task
executes and provides the necessary artifacts returning either success
or failure.
As previously mentioned, an artifact can cover more than one task. For
example, it is pointless to obtain a compiler if you already have the
compiled binary. To handle this, BitBake calls the
:term:`BB_SETSCENE_DEPVALID` function for
each successful setscene task to know whether or not it needs to obtain
the dependencies of that task.
You can find more information on setscene metadata in the
:ref:`bitbake-user-manual/bitbake-user-manual-metadata:task checksums and setscene`
section.
Logging
=======
In addition to the standard command line option to control how verbose
builds are when execute, bitbake also supports user defined
configuration of the `Python
logging <https://docs.python.org/3/library/logging.html>`__ facilities
through the :term:`BB_LOGCONFIG` variable. This
variable defines a JSON or YAML `logging
configuration <https://docs.python.org/3/library/logging.config.html>`__
that will be intelligently merged into the default configuration. The
logging configuration is merged using the following rules:
- The user defined configuration will completely replace the default
configuration if top level key ``bitbake_merge`` is set to the value
``False``. In this case, all other rules are ignored.
- The user configuration must have a top level ``version`` which must
match the value of the default configuration.
- Any keys defined in the ``handlers``, ``formatters``, or ``filters``,
will be merged into the same section in the default configuration,
with the user specified keys taking replacing a default one if there
is a conflict. In practice, this means that if both the default
configuration and user configuration specify a handler named
``myhandler``, the user defined one will replace the default. To
prevent the user from inadvertently replacing a default handler,
formatter, or filter, all of the default ones are named with a prefix
of "``BitBake.``"
- If a logger is defined by the user with the key ``bitbake_merge`` set
to ``False``, that logger will be completely replaced by user
configuration. In this case, no other rules will apply to that
logger.
- All user defined ``filter`` and ``handlers`` properties for a given
logger will be merged with corresponding properties from the default
logger. For example, if the user configuration adds a filter called
``myFilter`` to the ``BitBake.SigGen``, and the default configuration
adds a filter called ``BitBake.defaultFilter``, both filters will be
applied to the logger
As a first example, you can create a ``hashequiv.json`` user logging
configuration file to log all Hash Equivalence related messages of ``VERBOSE``
or higher priority to a file called ``hashequiv.log``::
{
"version": 1,
"handlers": {
"autobuilderlog": {
"class": "logging.FileHandler",
"formatter": "logfileFormatter",
"level": "DEBUG",
"filename": "hashequiv.log",
"mode": "w"
}
},
"formatters": {
"logfileFormatter": {
"format": "%(name)s: %(levelname)s: %(message)s"
}
},
"loggers": {
"BitBake.SigGen.HashEquiv": {
"level": "VERBOSE",
"handlers": ["autobuilderlog"]
},
"BitBake.RunQueue.HashEquiv": {
"level": "VERBOSE",
"handlers": ["autobuilderlog"]
}
}
}
Then set the :term:`BB_LOGCONFIG` variable in ``conf/local.conf``::
BB_LOGCONFIG = "hashequiv.json"
Another example is this ``warn.json`` file to log all ``WARNING`` and
higher priority messages to a ``warn.log`` file::
{
"version": 1,
"formatters": {
"warnlogFormatter": {
"()": "bb.msg.BBLogFormatter",
"format": "%(levelname)s: %(message)s"
}
},
"handlers": {
"warnlog": {
"class": "logging.FileHandler",
"formatter": "warnlogFormatter",
"level": "WARNING",
"filename": "warn.log"
}
},
"loggers": {
"BitBake": {
"handlers": ["warnlog"]
}
},
"@disable_existing_loggers": false
}
Note that BitBake's helper classes for structured logging are implemented in
``lib/bb/msg.py``.

View File

@@ -0,0 +1,851 @@
.. SPDX-License-Identifier: CC-BY-2.5
=====================
File Download Support
=====================
|
BitBake's fetch module is a standalone piece of library code that deals
with the intricacies of downloading source code and files from remote
systems. Fetching source code is one of the cornerstones of building
software. As such, this module forms an important part of BitBake.
The current fetch module is called "fetch2" and refers to the fact that
it is the second major version of the API. The original version is
obsolete and has been removed from the codebase. Thus, in all cases,
"fetch" refers to "fetch2" in this manual.
The Download (Fetch)
====================
BitBake takes several steps when fetching source code or files. The
fetcher codebase deals with two distinct processes in order: obtaining
the files from somewhere (cached or otherwise) and then unpacking those
files into a specific location and perhaps in a specific way. Getting
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::
src_uri = (d.getVar('SRC_URI') or "").split()
fetcher = bb.fetch2.Fetch(src_uri, d)
fetcher.download()
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::
rootdir = l.getVar('WORKDIR')
fetcher.unpack(rootdir)
This code unpacks the downloaded files to the specified by ``WORKDIR``.
.. note::
For convenience, the naming in these examples matches the variables
used by OpenEmbedded. If you want to see the above code in action,
examine the OpenEmbedded class file ``base.bbclass``
.
The :term:`SRC_URI` and ``WORKDIR`` variables are not hardcoded into the
fetcher, since those fetcher methods can be (and are) called with
different variable names. In OpenEmbedded for example, the shared state
(sstate) code uses the fetch module to fetch the sstate files.
When the ``download()`` method is called, BitBake tries to resolve the
URLs by looking for source files in a specific search order:
- *Pre-mirror Sites:* BitBake first uses pre-mirrors to try and find
source files. These locations are defined using the
:term:`PREMIRRORS` variable.
- *Source URI:* If pre-mirrors fail, BitBake uses the original URL (e.g
from :term:`SRC_URI`).
- *Mirror Sites:* If fetch failures occur, BitBake next uses mirror
locations as defined by the :term:`MIRRORS` variable.
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 :term:`SRC_URI` variable.
Consider the following two URLs::
https://git.yoctoproject.org/git/poky;protocol=git
git://git.yoctoproject.org/git/poky;protocol=http
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::
PREMIRRORS ?= "\
bzr://.*/.\* http://somemirror.org/sources/ \
cvs://.*/.\* http://somemirror.org/sources/ \
git://.*/.\* http://somemirror.org/sources/ \
hg://.*/.\* http://somemirror.org/sources/ \
osc://.*/.\* http://somemirror.org/sources/ \
p4://.*/.\* http://somemirror.org/sources/ \
svn://.*/.\* http://somemirror.org/sources/"
MIRRORS =+ "\
ftp://.*/.\* http://somemirror.org/sources/ \
http://.*/.\* http://somemirror.org/sources/ \
https://.*/.\* http://somemirror.org/sources/"
It is useful to note that BitBake
supports cross-URLs. It is possible to mirror a Git repository on an
HTTP server as a tarball. This is what the ``git://`` mapping in the
previous example does.
Since network accesses are slow, BitBake maintains a cache of files
downloaded from the network. Any source files that are not local (i.e.
downloaded from the Internet) are placed into the download directory,
which is specified by the :term:`DL_DIR` variable.
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 :term:`SRC_URI` variable with the
appropriate varflags as follows::
SRC_URI[md5sum] = "value"
SRC_URI[sha256sum] = "value"
You can also specify the checksums as
parameters on the :term:`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::
SRC_URI = "http://example.com/foobar.tar.bz2;name=foo"
SRC_URI[foo.md5sum] = 4a8e0f237e961fd7785d19d07fdb994d
After a file has been downloaded and
has had its checksum checked, a ".done" stamp is placed in :term:`DL_DIR`.
BitBake uses this stamp during subsequent builds to avoid downloading or
comparing a checksum for the file again.
.. note::
It is assumed that local storage is safe from data corruption. If
this were not the case, there would be bigger issues to worry about.
If :term:`BB_STRICT_CHECKSUM` is set, any
download without a checksum triggers an error message. The
:term:`BB_NO_NETWORK` variable can be used to
make any attempted network access a fatal error, which is useful for
checking that mirrors are complete as well as other things.
If :term:`BB_CHECK_SSL_CERTS` is set to ``0`` then SSL certificate checking will
be disabled. This variable defaults to ``1`` so SSL certificates are normally
checked.
.. _bb-the-unpack:
The Unpack
==========
The unpack process usually immediately follows the download. For all
URLs except Git URLs, BitBake uses the common ``unpack`` method.
A number of parameters exist that you can specify within the URL to
govern the behavior of the unpack stage:
- *unpack:* Controls whether the URL components are unpacked. If set to
"1", which is the default, the components are unpacked. If set to
"0", the unpack stage leaves the file alone. This parameter is useful
when you want an archive to be copied in and not be unpacked.
- *dos:* Applies to ``.zip`` and ``.jar`` files and specifies whether
to use DOS line ending conversion on text files.
- *striplevel:* Strip specified number of leading components (levels)
from file names on extraction
- *subdir:* Unpacks the specific URL to the specified subdirectory
within the root directory.
The unpack call automatically decompresses and extracts files with ".Z",
".z", ".gz", ".xz", ".zip", ".jar", ".ipk", ".rpm". ".srpm", ".deb" and
".bz2" extensions as well as various combinations of tarball extensions.
As mentioned, the Git fetcher has its own unpack method that is
optimized to work with Git trees. Basically, this method works by
cloning the tree into the final directory. The process is completed
using references so that there is only one central copy of the Git
metadata needed.
.. _bb-fetchers:
Fetchers
========
As mentioned earlier, the URL prefix determines which fetcher submodule
BitBake uses. Each submodule can support different URL parameters, which
are described in the following sections.
.. _local-file-fetcher:
Local file fetcher (``file://``)
--------------------------------
This submodule handles URLs that begin with ``file://``. The filename
you specify within the URL can be either an absolute or relative path to
a file. If the filename is relative, the contents of the
:term:`FILESPATH` variable is used in the same way
``PATH`` is used to find executables. If the file cannot be found, it is
assumed that it is available in :term:`DL_DIR` by the
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::
SRC_URI = "file://relativefile.patch"
SRC_URI = "file:///Users/ich/very_important_software"
.. _http-ftp-fetcher:
HTTP/FTP wget fetcher (``http://``, ``ftp://``, ``https://``)
-------------------------------------------------------------
This fetcher obtains files from web and FTP servers. Internally, the
fetcher uses the wget utility.
The executable and parameters used are specified by the
``FETCHCMD_wget`` variable, which defaults to sensible values. The
fetcher supports a parameter "downloadfilename" that allows the name of
the downloaded file to be specified. Specifying the name of the
downloaded file is useful for avoiding collisions in
:term:`DL_DIR` when dealing with multiple files that
have the same name.
If a username and password are specified in the ``SRC_URI``, a Basic
Authorization header will be added to each request, including across redirects.
To instead limit the Authorization header to the first request, add
"redirectauth=0" to the list of parameters.
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"
SRC_URI = "ftp://you@oe.handhelds.org/home/you/secret.plan"
.. note::
Because URL parameters are delimited by semi-colons, this can
introduce ambiguity when parsing URLs that also contain semi-colons,
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::
SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&a=snapshot&h=a5dd47"
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::
SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&a=snapshot&h=a5dd47;downloadfilename=myfile.bz2"
.. _cvs-fetcher:
CVS fetcher (``(cvs://``)
-------------------------
This submodule handles checking out files from the CVS version control
system. You can configure it using a number of different variables:
- :term:`FETCHCMD_cvs <FETCHCMD>`: The name of the executable to use when running
the ``cvs`` command. This name is usually "cvs".
- :term:`SRCDATE`: The date to use when fetching the CVS source code. A
special value of "now" causes the checkout to be updated on every
build.
- :term:`CVSDIR`: Specifies where a temporary
checkout is saved. The location is often ``DL_DIR/cvs``.
- CVS_PROXY_HOST: The name to use as a "proxy=" parameter to the
``cvs`` command.
- CVS_PROXY_PORT: The port number to use as a "proxyport="
parameter to the ``cvs`` command.
As well as the standard username and password URL syntax, you can also
configure the fetcher with various URL parameters:
The supported parameters are as follows:
- *"method":* The protocol over which to communicate with the CVS
server. By default, this protocol is "pserver". If "method" is set to
"ext", BitBake examines the "rsh" parameter and sets ``CVS_RSH``. You
can use "dir" for local directories.
- *"module":* Specifies the module to check out. You must supply this
parameter.
- *"tag":* Describes which CVS TAG should be used for the checkout. By
default, the TAG is empty.
- *"date":* Specifies a date. If no "date" is specified, the
:term:`SRCDATE` of the configuration is used to
checkout a specific date. The special value of "now" causes the
checkout to be updated on every build.
- *"localdir":* Used to rename the module. Effectively, you are
renaming the output directory to which the module is unpacked. You
are forcing the module into a special directory relative to
:term:`CVSDIR`.
- *"rsh":* Used in conjunction with the "method" parameter.
- *"scmdata":* Causes the CVS metadata to be maintained in the tarball
the fetcher creates when set to "keep". The tarball is expanded into
the work directory. By default, the CVS metadata is removed.
- *"fullpath":* Controls whether the resulting checkout is at the
module level, which is the default, or is at deeper paths.
- *"norecurse":* Causes the fetcher to only checkout the specified
directory with no recurse into any subdirectories.
- *"port":* The port to which the CVS server connects.
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"
.. _svn-fetcher:
Subversion (SVN) Fetcher (``svn://``)
-------------------------------------
This fetcher submodule fetches code from the Subversion source control
system. The executable used is specified by ``FETCHCMD_svn``, which
defaults to "svn". The fetcher's temporary working directory is set by
:term:`SVNDIR`, which is usually ``DL_DIR/svn``.
The supported parameters are as follows:
- *"module":* The name of the svn module to checkout. You must provide
this parameter. You can think of this parameter as the top-level
directory of the repository data you want.
- *"path_spec":* A specific directory in which to checkout the
specified svn module.
- *"protocol":* The protocol to use, which defaults to "svn". If
"protocol" is set to "svn+ssh", the "ssh" parameter is also used.
- *"rev":* The revision of the source code to checkout.
- *"scmdata":* Causes the ".svn" directories to be available during
compile-time when set to "keep". By default, these directories are
removed.
- *"ssh":* An optional parameter used when "protocol" is set to
"svn+ssh". You can use this parameter to specify the ssh program used
by svn.
- *"transportuser":* When required, sets the username for the
transport. By default, this parameter is empty. The transport
username is different than the username used in the main URL, which
is passed to the subversion command.
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"
SRC_URI = "svn://myrepos/proj1;module=trunk;protocol=http;path_spec=${MY_DIR}/proj1"
.. _git-fetcher:
Git Fetcher (``git://``)
------------------------
This fetcher submodule fetches code from the Git source control system.
The fetcher works by creating a bare clone of the remote into
:term:`GITDIR`, which is usually ``DL_DIR/git2``. This
bare clone is then cloned into the work directory during the unpack
stage when a specific tree is checked out. This is done using alternates
and by reference to minimize the amount of duplicate data on the disk
and make the unpack process fast. The executable used can be set with
``FETCHCMD_git``.
This fetcher supports the following parameters:
- *"protocol":* The protocol used to fetch the files. The default is
"git" when a hostname is set. If a hostname is not set, the Git
protocol is "file". You can also use "http", "https", "ssh" and
"rsync".
.. note::
When ``protocol`` is "ssh", the URL expected in :term:`SRC_URI` differs
from the one that is typically passed to ``git clone`` command and provided
by the Git server to fetch from. For example, the URL returned by GitLab
server for ``mesa`` when cloning over SSH is
``git@gitlab.freedesktop.org:mesa/mesa.git``, however the expected URL in
:term:`SRC_URI` is the following::
SRC_URI = "git://git@gitlab.freedesktop.org/mesa/mesa.git;branch=main;protocol=ssh;..."
Note the ``:`` character changed for a ``/`` before the path to the project.
- *"nocheckout":* Tells the fetcher to not checkout source code when
unpacking when set to "1". Set this option for the URL where there is
a custom routine to checkout code. The default is "0".
- *"rebaseable":* Indicates that the upstream Git repository can be
rebased. You should set this parameter to "1" if revisions can become
detached from branches. In this case, the source mirror tarball is
done per revision, which has a loss of efficiency. Rebasing the
upstream Git repository could cause the current revision to disappear
from the upstream repository. This option reminds the fetcher to
preserve the local cache carefully for future use. The default value
for this parameter is "0".
- *"nobranch":* Tells the fetcher to not check the SHA validation for
the branch when set to "1". The default is "0". Set this option for
the recipe that refers to the commit that is valid for any namespace
(branch, tag, ...) instead of the branch.
- *"bareclone":* Tells the fetcher to clone a bare clone into the
destination directory without checking out a working tree. Only the
raw Git metadata is provided. This parameter implies the "nocheckout"
parameter as well.
- *"branch":* The branch(es) of the Git tree to clone. Unless
"nobranch" is set to "1", this is a mandatory parameter. The number of
branch parameters must match the number of name parameters.
- *"rev":* The revision to use for the checkout. The default is
"master".
- *"tag":* Specifies a tag to use for the checkout. To correctly
resolve tags, BitBake must access the network. For that reason, tags
are often not used. As far as Git is concerned, the "tag" parameter
behaves effectively the same as the "rev" parameter.
- *"subpath":* Limits the checkout to a specific subpath of the tree.
By default, the whole tree is checked out.
- *"destsuffix":* The name of the path in which to place the checkout.
By default, the path is ``git/``.
- *"usehead":* Enables local ``git://`` URLs to use the current branch
HEAD as the revision for use with ``AUTOREV``. The "usehead"
parameter implies no branch and only works when the transfer protocol
is ``file://``.
Here are some example URLs::
SRC_URI = "git://github.com/fronteed/icheck.git;protocol=https;branch=${PV};tag=${PV}"
SRC_URI = "git://github.com/asciidoc/asciidoc-py;protocol=https;branch=main"
SRC_URI = "git://git@gitlab.freedesktop.org/mesa/mesa.git;branch=main;protocol=ssh;..."
.. note::
When using ``git`` as the fetcher of the main source code of your software,
``S`` should be set accordingly::
S = "${WORKDIR}/git"
.. note::
Specifying passwords directly in ``git://`` urls is not supported.
There are several reasons: :term:`SRC_URI` is often written out to logs and
other places, and that could easily leak passwords; it is also all too
easy to share metadata without removing passwords. SSH keys, ``~/.netrc``
and ``~/.ssh/config`` files can be used as alternatives.
Using tags with the git fetcher may cause surprising behaviour. Bitbake needs to
resolve the tag to a specific revision and to do that, it has to connect to and use
the upstream repository. This is because the revision the tags point at can change and
we've seen cases of this happening in well known public repositories. This can mean
many more network connections than expected and recipes may be reparsed at every build.
Source mirrors will also be bypassed as the upstream repository is the only source
of truth to resolve the revision accurately. For these reasons, whilst the fetcher
can support tags, we recommend being specific about revisions in recipes.
.. _gitsm-fetcher:
Git Submodule Fetcher (``gitsm://``)
------------------------------------
This fetcher submodule inherits from the :ref:`Git
fetcher<bitbake-user-manual/bitbake-user-manual-fetching:git fetcher
(\`\`git://\`\`)>` and extends that fetcher's behavior by fetching a
repository's submodules. :term:`SRC_URI` is passed to the Git fetcher as
described in the :ref:`bitbake-user-manual/bitbake-user-manual-fetching:git
fetcher (\`\`git://\`\`)` section.
.. note::
You must clean a recipe when switching between '``git://``' and
'``gitsm://``' URLs.
The Git Submodules fetcher is not a complete fetcher implementation.
The fetcher has known issues where it does not use the normal source
mirroring infrastructure properly. Further, the submodule sources it
fetches are not visible to the licensing and source archiving
infrastructures.
.. _clearcase-fetcher:
ClearCase Fetcher (``ccrc://``)
-------------------------------
This fetcher submodule fetches code from a
`ClearCase <http://en.wikipedia.org/wiki/Rational_ClearCase>`__
repository.
To use this fetcher, make sure your recipe has proper
:term:`SRC_URI`, :term:`SRCREV`, and
:term:`PV` settings. Here is an example::
SRC_URI = "ccrc://cc.example.org/ccrc;vob=/example_vob;module=/example_module"
SRCREV = "EXAMPLE_CLEARCASE_TAG"
PV = "${@d.getVar("SRCREV", False).replace("/", "+")}"
The fetcher uses the ``rcleartool`` or
``cleartool`` remote client, depending on which one is available.
Following are options for the :term:`SRC_URI` statement:
- *vob*: The name, which must include the prepending "/" character,
of the ClearCase VOB. This option is required.
- *module*: The module, which must include the prepending "/"
character, in the selected VOB.
.. note::
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::
load /example_vob/example_module
- *proto*: The protocol, which can be either ``http`` or ``https``.
By default, the fetcher creates a configuration specification. If you
want this specification written to an area other than the default, use
the ``CCASE_CUSTOM_CONFIG_SPEC`` variable in your recipe to define where
the specification is written.
.. note::
the SRCREV loses its functionality if you specify this variable. However,
SRCREV is still used to label the archive after a fetch even though it does
not define what is fetched.
Here are a couple of other behaviors worth mentioning:
- When using ``cleartool``, the login of ``cleartool`` is handled by
the system. The login require no special steps.
- In order to use ``rcleartool`` with authenticated users, an
"rcleartool login" is necessary before using the fetcher.
.. _perforce-fetcher:
Perforce Fetcher (``p4://``)
----------------------------
This fetcher submodule fetches code from the
`Perforce <https://www.perforce.com/>`__ source control system. The
executable used is specified by ``FETCHCMD_p4``, which defaults to "p4".
The fetcher's temporary working directory is set by
:term:`P4DIR`, which defaults to "DL_DIR/p4".
The fetcher does not make use of a perforce client, instead it
relies on ``p4 files`` to retrieve a list of
files and ``p4 print`` to transfer the content
of those files locally.
To use this fetcher, make sure your recipe has proper
:term:`SRC_URI`, :term:`SRCREV`, and
:term:`PV` values. The p4 executable is able to use the
config file defined by your system's ``P4CONFIG`` environment variable
in order to define the Perforce server URL and port, username, and
password if you do not wish to keep those values in a recipe itself. If
you choose not to use ``P4CONFIG``, or to explicitly set variables that
``P4CONFIG`` can contain, you can specify the ``P4PORT`` value, which is
the server's URL and port number, and you can specify a username and
password directly in your recipe within :term:`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::
SRC_URI = "p4://example-depot/main/source/..."
SRCREV = "${AUTOREV}"
PV = "p4-${SRCPV}"
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::
P4PORT = "tcp:p4server.example.net:1666"
SRC_URI = "p4://user:passwd@example-depot/main/source/..."
SRCREV = "release-1.0"
PV = "p4-${SRCPV}"
S = "${WORKDIR}/p4"
.. note::
You should always set S to "${WORKDIR}/p4" in your recipe.
By default, the fetcher strips the depot location from the local file paths. In
the above example, the content of ``example-depot/main/source/`` will be placed
in ``${WORKDIR}/p4``. For situations where preserving parts of the remote depot
paths locally is desirable, the fetcher supports two parameters:
- *"module":*
The top-level depot location or directory to fetch. The value of this
parameter can also point to a single file within the depot, in which case
the local file path will include the module path.
- *"remotepath":*
When used with the value "``keep``", the fetcher will mirror the full depot
paths locally for the specified location, even in combination with the
``module`` parameter.
Here is an example use of the the ``module`` parameter::
SRC_URI = "p4://user:passwd@example-depot/main;module=source/..."
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::
SRC_URI = "p4://user:passwd@example-depot/main;module=source/...;remotepath=keep"
In this case, the content of the top-level directory ``source/`` will be fetched
to ``${P4DIR}``, but the complete depot paths will be mirrored locally. The
top-level directory will be accessible at
``${P4DIR}/example-depot/main/source/``.
.. _repo-fetcher:
Repo Fetcher (``repo://``)
--------------------------
This fetcher submodule fetches code from ``google-repo`` source control
system. The fetcher works by initiating and syncing sources of the
repository into :term:`REPODIR`, which is usually
``${DL_DIR}/repo``.
This fetcher supports the following parameters:
- *"protocol":* Protocol to fetch the repository manifest (default:
git).
- *"branch":* Branch or tag of repository to get (default: master).
- *"manifest":* Name of the manifest file (default: ``default.xml``).
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"
.. _az-fetcher:
Az Fetcher (``az://``)
--------------------------
This submodule fetches data from an
`Azure Storage account <https://docs.microsoft.com/en-us/azure/storage/>`__ ,
it inherits its functionality from the HTTP wget fetcher, but modifies its
behavior to accomodate the usage of a
`Shared Access Signature (SAS) <https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview>`__
for non-public data.
Such functionality is set by the variable:
- :term:`AZ_SAS`: The Azure Storage Shared Access Signature provides secure
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::
AZ_SAS = "se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>"
Here is an example URL::
SRC_URI = "az://<azure-storage-account>.blob.core.windows.net/<foo_container>/<bar_file>"
It can also be used when setting mirrors definitions using the :term:`PREMIRRORS` variable.
.. _gcp-fetcher:
GCP Fetcher (``gs://``)
--------------------------
This submodule fetches data from a
`Google Cloud Storage Bucket <https://cloud.google.com/storage/docs/buckets>`__.
It uses the `Google Cloud Storage Python Client <https://cloud.google.com/python/docs/reference/storage/latest>`__
to check the status of objects in the bucket and download them.
The use of the Python client makes it substantially faster than using command
line tools such as gsutil.
The fetcher requires the Google Cloud Storage Python Client to be installed, along
with the gsutil tool.
The fetcher requires that the machine has valid credentials for accessing the
chosen bucket. Instructions for authentication can be found in the
`Google Cloud documentation <https://cloud.google.com/docs/authentication/provide-credentials-adc#local-dev>`__.
If it used from the OpenEmbedded build system, the fetcher can be used for
fetching sstate artifacts from a GCS bucket by specifying the
``SSTATE_MIRRORS`` variable as shown below::
SSTATE_MIRRORS ?= "\
file://.* gs://<bucket name>/PATH \
"
The fetcher can also be used in recipes::
SRC_URI = "gs://<bucket name>/<foo_container>/<bar_file>"
However, the checksum of the file should be also be provided::
SRC_URI[sha256sum] = "<sha256 string>"
.. _crate-fetcher:
Crate Fetcher (``crate://``)
----------------------------
This submodule fetches code for
`Rust language "crates" <https://doc.rust-lang.org/reference/glossary.html?highlight=crate#crate>`__
corresponding to Rust libraries and programs to compile. Such crates are typically shared
on https://crates.io/ but this fetcher supports other crate registries too.
The format for the :term:`SRC_URI` setting must be::
SRC_URI = "crate://REGISTRY/NAME/VERSION"
Here is an example URL::
SRC_URI = "crate://crates.io/glob/0.2.11"
.. _npm-fetcher:
NPM Fetcher (``npm://``)
------------------------
This submodule fetches source code from an
`NPM <https://en.wikipedia.org/wiki/Npm_(software)>`__
Javascript package registry.
The format for the :term:`SRC_URI` setting must be::
SRC_URI = "npm://some.registry.url;ParameterA=xxx;ParameterB=xxx;..."
This fetcher supports the following parameters:
- *"package":* The NPM package name. This is a mandatory parameter.
- *"version":* The NPM package version. This is a mandatory parameter.
- *"downloadfilename":* Specifies the filename used when storing the downloaded file.
- *"destsuffix":* Specifies the directory to use to unpack the package (default: ``npm``).
Note that NPM fetcher only fetches the package source itself. The dependencies
can be fetched through the `npmsw-fetcher`_.
Here is an example URL with both fetchers::
SRC_URI = " \
npm://registry.npmjs.org/;package=cute-files;version=${PV} \
npmsw://${THISDIR}/${BPN}/npm-shrinkwrap.json \
"
See :yocto_docs:`Creating Node Package Manager (NPM) Packages
</dev-manual/packages.html#creating-node-package-manager-npm-packages>`
in the Yocto Project manual for details about using
:yocto_docs:`devtool <https://docs.yoctoproject.org/ref-manual/devtool-reference.html>`
to automatically create a recipe from an NPM URL.
.. _npmsw-fetcher:
NPM shrinkwrap Fetcher (``npmsw://``)
-------------------------------------
This submodule fetches source code from an
`NPM shrinkwrap <https://docs.npmjs.com/cli/v8/commands/npm-shrinkwrap>`__
description file, which lists the dependencies
of an NPM package while locking their versions.
The format for the :term:`SRC_URI` setting must be::
SRC_URI = "npmsw://some.registry.url;ParameterA=xxx;ParameterB=xxx;..."
This fetcher supports the following parameters:
- *"dev":* Set this parameter to ``1`` to install "devDependencies".
- *"destsuffix":* Specifies the directory to use to unpack the dependencies
(``${S}`` by default).
Note that the shrinkwrap file can also be provided by the recipe for
the package which has such dependencies, for example::
SRC_URI = " \
npm://registry.npmjs.org/;package=cute-files;version=${PV} \
npmsw://${THISDIR}/${BPN}/npm-shrinkwrap.json \
"
Such a file can automatically be generated using
:yocto_docs:`devtool <https://docs.yoctoproject.org/ref-manual/devtool-reference.html>`
as described in the :yocto_docs:`Creating Node Package Manager (NPM) Packages
</dev-manual/packages.html#creating-node-package-manager-npm-packages>`
section of the Yocto Project.
Other Fetchers
--------------
Fetch submodules also exist for the following:
- Bazaar (``bzr://``)
- Mercurial (``hg://``)
- OSC (``osc://``)
- S3 (``s3://``)
- Secure FTP (``sftp://``)
- Secure Shell (``ssh://``)
- Trees using Git Annex (``gitannex://``)
No documentation currently exists for these lesser used fetcher
submodules. However, you might find the code helpful and readable.
Auto Revisions
==============
We need to document ``AUTOREV`` and :term:`SRCREV_FORMAT` here.

View File

@@ -0,0 +1,408 @@
.. SPDX-License-Identifier: CC-BY-2.5
===================
Hello World Example
===================
BitBake Hello World
===================
The simplest example commonly used to demonstrate any new programming
language or tool is the "`Hello
World <http://en.wikipedia.org/wiki/Hello_world_program>`__" example.
This appendix demonstrates, in tutorial form, Hello World within the
context of BitBake. The tutorial describes how to create a new project
and the applicable metadata files necessary to allow BitBake to build
it.
Obtaining BitBake
=================
See the :ref:`bitbake-user-manual/bitbake-user-manual-intro: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::
$ ls -al
total 108
drwxr-xr-x 9 fawkh 10000 4096 feb 24 12:10 .
drwx------ 36 fawkh 10000 4096 mar 2 17:00 ..
-rw-r--r-- 1 fawkh 10000 365 feb 24 12:10 AUTHORS
drwxr-xr-x 2 fawkh 10000 4096 feb 24 12:10 bin
-rw-r--r-- 1 fawkh 10000 16501 feb 24 12:10 ChangeLog
drwxr-xr-x 2 fawkh 10000 4096 feb 24 12:10 classes
drwxr-xr-x 2 fawkh 10000 4096 feb 24 12:10 conf
drwxr-xr-x 5 fawkh 10000 4096 feb 24 12:10 contrib
drwxr-xr-x 6 fawkh 10000 4096 feb 24 12:10 doc
drwxr-xr-x 8 fawkh 10000 4096 mar 2 16:26 .git
-rw-r--r-- 1 fawkh 10000 31 feb 24 12:10 .gitattributes
-rw-r--r-- 1 fawkh 10000 392 feb 24 12:10 .gitignore
drwxr-xr-x 13 fawkh 10000 4096 feb 24 12:11 lib
-rw-r--r-- 1 fawkh 10000 1224 feb 24 12:10 LICENSE
-rw-r--r-- 1 fawkh 10000 15394 feb 24 12:10 LICENSE.GPL-2.0-only
-rw-r--r-- 1 fawkh 10000 1286 feb 24 12:10 LICENSE.MIT
-rw-r--r-- 1 fawkh 10000 229 feb 24 12:10 MANIFEST.in
-rw-r--r-- 1 fawkh 10000 2413 feb 24 12:10 README
-rw-r--r-- 1 fawkh 10000 43 feb 24 12:10 toaster-requirements.txt
-rw-r--r-- 1 fawkh 10000 2887 feb 24 12:10 TODO
At this point, you should have BitBake cloned to a directory that
matches the previous listing except for dates and user names.
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::
$ ./bin/bitbake --version
BitBake Build Tool Core version 2.3.1
The console output tells you what version
you are running.
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::
$ 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::
$ export PATH=/home/scott-lenovo/bitbake/bin:$PATH
You should now be able to enter the ``bitbake`` command from the command
line while working from any directory.
The Hello World Example
=======================
The overall goal of this exercise is to build a complete "Hello World"
example utilizing task and layer concepts. Because this is how modern
projects such as OpenEmbedded and the Yocto Project utilize BitBake, the
example provides an excellent starting point for understanding BitBake.
To help you understand how to use BitBake to build targets, the example
starts with nothing but the ``bitbake`` command, which causes BitBake to
fail and report problems. The example progresses by adding pieces to the
build to eventually conclude with a working, minimal "Hello World"
example.
While every attempt is made to explain what is happening during the
example, the descriptions cannot cover everything. You can find further
information throughout this manual. Also, you can actively participate
in the :oe_lists:`/g/bitbake-devel`
discussion mailing list about the BitBake build tool.
.. note::
This example was inspired by and drew heavily from
`Mailing List post - The BitBake equivalent of "Hello, World!"
<https://www.mail-archive.com/yocto@yoctoproject.org/msg09379.html>`_.
As stated earlier, the goal of this example is to eventually compile
"Hello World". However, it is unknown what BitBake needs and what you
have to provide in order to achieve that goal. Recall that BitBake
utilizes three types of metadata files:
:ref:`bitbake-user-manual/bitbake-user-manual-intro:configuration files`,
:ref:`bitbake-user-manual/bitbake-user-manual-intro:classes`, and
:ref:`bitbake-user-manual/bitbake-user-manual-intro:recipes`.
But where do they go? How does BitBake find
them? BitBake's error messaging helps you answer these types of
questions and helps you better understand exactly what is going on.
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::
$ mkdir ~/hello
$ cd ~/hello
This is the directory that
BitBake will use to do all of its work. You can use this directory
to keep all the metafiles needed by BitBake. Having a project
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::
$ bitbake
ERROR: The BBPATH variable is not set and bitbake did not find a conf/bblayers.conf file in the expected location.
Maybe you accidentally invoked bitbake from the wrong directory?
When you run BitBake, it begins looking for metadata files. The
:term:`BBPATH` variable is what tells BitBake where
to look for those files. :term:`BBPATH` is not set and you need to set
it. Without :term:`BBPATH`, BitBake cannot find any configuration files
(``.conf``) or recipe files (``.bb``) at all. BitBake also cannot
find the ``bitbake.conf`` file.
#. **Setting BBPATH:** For this example, you can set :term:`BBPATH` in
the same manner that you set ``PATH`` earlier in the appendix. You
should realize, though, that it is much more flexible to set the
:term:`BBPATH` variable up in a configuration file for each project.
From your shell, enter the following commands to set and export the
:term:`BBPATH` variable::
$ BBPATH="projectdirectory"
$ export BBPATH
Use your actual project directory in the command. BitBake uses that
directory to find the metadata it needs for your project.
.. note::
When specifying your project directory, do not use the tilde
("~") character as BitBake does not expand that character as the
shell would.
#. **Run BitBake:** Now that you have :term:`BBPATH` defined, run the
``bitbake`` command again::
$ bitbake
ERROR: Unable to parse /home/scott-lenovo/bitbake/lib/bb/parse/__init__.py
Traceback (most recent call last):
File "/home/scott-lenovo/bitbake/lib/bb/parse/__init__.py", line 127, in resolve_file(fn='conf/bitbake.conf', d=<bb.data_smart.DataSmart object at 0x7f22919a3df0>):
if not newfn:
> raise IOError(errno.ENOENT, "file %s not found in %s" % (fn, bbpath))
fn = newfn
FileNotFoundError: [Errno 2] file conf/bitbake.conf not found in <projectdirectory>
This sample output shows that BitBake could not find the
``conf/bitbake.conf`` file in the project directory. This file is
the first thing BitBake must find in order to build a target. And,
since the project directory for this example is empty, you need to
provide a ``conf/bitbake.conf`` file.
#. **Creating conf/bitbake.conf:** The ``conf/bitbake.conf`` includes
a number of configuration variables BitBake uses for metadata and
recipe files. For this example, you need to create the file in your
project directory and define some key BitBake variables. For more
information on the ``bitbake.conf`` file, see
https://git.openembedded.org/bitbake/tree/conf/bitbake.conf.
Use the following commands to create the ``conf`` directory in the
project directory::
$ mkdir conf
From within the ``conf`` directory,
use some editor to create the ``bitbake.conf`` so that it contains
the following::
PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
TMPDIR = "${TOPDIR}/tmp"
CACHE = "${TMPDIR}/cache"
STAMP = "${TMPDIR}/${PN}/stamps"
T = "${TMPDIR}/${PN}/work"
B = "${TMPDIR}/${PN}"
.. note::
Without a value for :term:`PN`, the variables :term:`STAMP`, :term:`T`, and :term:`B`, prevent more
than one recipe from working. You can fix this by either setting :term:`PN` to
have a value similar to what OpenEmbedded and BitBake use in the default
``bitbake.conf`` file (see previous example). Or, by manually updating each
recipe to set :term:`PN`. You will also need to include :term:`PN` as part of the :term:`STAMP`,
:term:`T`, and :term:`B` variable definitions in the ``local.conf`` file.
The ``TMPDIR`` variable establishes a directory that BitBake uses
for build output and intermediate files other than the cached
information used by the
:ref:`bitbake-user-manual/bitbake-user-manual-execution:setscene`
process. Here, the ``TMPDIR`` directory is set to ``hello/tmp``.
.. tip::
You can always safely delete the tmp directory in order to rebuild a
BitBake target. The build process creates the directory for you when you
run BitBake.
For information about each of the other variables defined in this
example, check :term:`PN`, :term:`TOPDIR`, :term:`CACHE`, :term:`STAMP`,
:term:`T` or :term:`B` to take you to the definitions in the
glossary.
#. **Run BitBake:** After making sure that the ``conf/bitbake.conf`` file
exists, you can run the ``bitbake`` command again::
$ bitbake
ERROR: Unable to parse /home/scott-lenovo/bitbake/lib/bb/parse/parse_py/BBHandler.py
Traceback (most recent call last):
File "/home/scott-lenovo/bitbake/lib/bb/parse/parse_py/BBHandler.py", line 67, in inherit(files=['base'], fn='configuration INHERITs', lineno=0, d=<bb.data_smart.DataSmart object at 0x7fab6815edf0>):
if not os.path.exists(file):
> raise ParseError("Could not inherit file %s" % (file), fn, lineno)
bb.parse.ParseError: ParseError in configuration INHERITs: Could not inherit file classes/base.bbclass
In the sample output,
BitBake could not find the ``classes/base.bbclass`` file. You need
to create that file next.
#. **Creating classes/base.bbclass:** BitBake uses class files to
provide common code and functionality. The minimally required class
for BitBake is the ``classes/base.bbclass`` file. The ``base`` class
is implicitly inherited by every recipe. BitBake looks for the class
in the ``classes`` directory of the project (i.e ``hello/classes``
in this example).
Create the ``classes`` directory as follows::
$ cd $HOME/hello
$ mkdir classes
Move to the ``classes`` directory and then create the
``base.bbclass`` file by inserting this single line::
addtask build
The minimal task that BitBake runs is the ``do_build`` task. This is
all the example needs in order to build the project. Of course, the
``base.bbclass`` can have much more depending on which build
environments BitBake is supporting.
#. **Run BitBake:** After making sure that the ``classes/base.bbclass``
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.
BitBake is finally reporting
no errors. However, you can see that it really does not have
anything to do. You need to create a recipe that gives BitBake
something to do.
#. **Creating a Layer:** While it is not really necessary for such a
small example, it is good practice to create a layer in which to
keep your code separate from the general metadata used by BitBake.
Thus, this example creates and uses a layer called "mylayer".
.. note::
You can find additional information on layers in the
":ref:`bitbake-user-manual/bitbake-user-manual-intro:Layers`" section.
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::
$ cd $HOME
$ mkdir mylayer
$ cd mylayer
$ mkdir conf
Move to the ``conf`` directory and create a ``layer.conf`` file that has the
following::
BBPATH .= ":${LAYERDIR}"
BBFILES += "${LAYERDIR}/*.bb"
BBFILE_COLLECTIONS += "mylayer"
BBFILE_PATTERN_mylayer := "^${LAYERDIR_RE}/"
LAYERSERIES_CORENAMES = "hello_world_example"
LAYERSERIES_COMPAT_mylayer = "hello_world_example"
For information on these variables, click on :term:`BBFILES`,
:term:`LAYERDIR`, :term:`BBFILE_COLLECTIONS`, :term:`BBFILE_PATTERN_mylayer <BBFILE_PATTERN>`
or :term:`LAYERSERIES_COMPAT` to go to the definitions in the glossary.
.. note::
We are setting both ``LAYERSERIES_CORENAMES`` and :term:`LAYERSERIES_COMPAT` in this particular case, because we
are using bitbake without OpenEmbedded.
You should usually just use :term:`LAYERSERIES_COMPAT` to specify the OE-Core versions for which your layer
is compatible, and add the meta-openembedded layer to your project.
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::
DESCRIPTION = "Prints Hello World"
PN = 'printhello'
PV = '1'
python do_build() {
bb.plain("********************");
bb.plain("* *");
bb.plain("* Hello, World! *");
bb.plain("* *");
bb.plain("********************");
}
The recipe file simply provides
a description of the recipe, the name, version, and the ``do_build``
task, which prints out "Hello World" to the console. For more
information on :term:`DESCRIPTION`, :term:`PN` or :term:`PV`
follow the links to the glossary.
#. **Run BitBake With a Target:** Now that a BitBake target exists, run
the command and provide that target::
$ cd $HOME/hello
$ bitbake printhello
ERROR: no recipe files to build, check your BBPATH and BBFILES?
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
We have created the layer with the recipe and
the layer configuration file but it still seems that BitBake cannot
find the recipe. BitBake needs a ``conf/bblayers.conf`` that lists
the layers for the project. Without this file, BitBake cannot find
the recipe.
#. **Creating conf/bblayers.conf:** BitBake uses the
``conf/bblayers.conf`` file to locate layers needed for the project.
This file must reside in the ``conf`` directory of the project (i.e.
``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::
BBLAYERS ?= " \
/home/<you>/mylayer \
"
You need to provide your own information for ``you`` in the file.
#. **Run BitBake With a Target:** Now that you have supplied the
``bblayers.conf`` file, run the ``bitbake`` command and provide the
target::
$ bitbake printhello
Loading cache: 100% |
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |##################################################################################|
Parsing of 1 .bb files complete (0 cached, 1 parsed). 1 targets, 0 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |###############################################################################|
NOTE: No setscene tasks
NOTE: Executing Tasks
********************
* *
* Hello, World! *
* *
********************
NOTE: Tasks Summary: Attempted 1 tasks of which 0 didn't need to be rerun and all succeeded.
.. note::
After the first execution, re-running bitbake printhello again will not
result in a BitBake run that prints the same console output. The reason
for this is that the first time the printhello.bb recipe's do_build task
executes successfully, BitBake writes a stamp file for the task. Thus,
the next time you attempt to run the task using that same bitbake
command, BitBake notices the stamp and therefore determines that the task
does not need to be re-run. If you delete the tmp directory or run
bitbake -c clean printhello and then re-run the build, the "Hello,
World!" message will be printed again.

View File

@@ -0,0 +1,653 @@
.. SPDX-License-Identifier: CC-BY-2.5
========
Overview
========
|
Welcome to the BitBake User Manual. This manual provides information on
the BitBake tool. The information attempts to be as independent as
possible regarding systems that use BitBake, such as OpenEmbedded and
the Yocto Project. In some cases, scenarios or examples within the
context of a build system are used in the manual to help with
understanding. For these cases, the manual clearly states the context.
.. _intro:
Introduction
============
Fundamentally, BitBake is a generic task execution engine that allows
shell and Python tasks to be run efficiently and in parallel while
working within complex inter-task dependency constraints. One of
BitBake's main users, OpenEmbedded, takes this core and builds embedded
Linux software stacks using a task-oriented approach.
Conceptually, BitBake is similar to GNU Make in some regards but has
significant differences:
- BitBake executes tasks according to the provided metadata that builds up
the tasks. Metadata is stored in recipe (``.bb``) and related recipe
"append" (``.bbappend``) files, configuration (``.conf``) and
underlying include (``.inc``) files, and in class (``.bbclass``)
files. The metadata provides BitBake with instructions on what tasks
to run and the dependencies between those tasks.
- BitBake includes a fetcher library for obtaining source code from
various places such as local files, source control systems, or
websites.
- The instructions for each unit to be built (e.g. a piece of software)
are known as "recipe" files and contain all the information about the
unit (dependencies, source file locations, checksums, description and
so on).
- BitBake includes a client/server abstraction and can be used from a
command line or used as a service over XML-RPC and has several
different user interfaces.
History and Goals
=================
BitBake was originally a part of the OpenEmbedded project. It was
inspired by the Portage package management system used by the Gentoo
Linux distribution. On December 7, 2004, OpenEmbedded project team
member Chris Larson split the project into two distinct pieces:
- BitBake, a generic task executor
- OpenEmbedded, a metadata set utilized by BitBake
Today, BitBake is the primary basis of the
`OpenEmbedded <https://www.openembedded.org/>`__ project, which is being
used to build and maintain Linux distributions such as the `Poky
Reference Distribution <https://www.yoctoproject.org/software-item/poky/>`__,
developed under the umbrella of the `Yocto Project <https://www.yoctoproject.org>`__.
Prior to BitBake, no other build tool adequately met the needs of an
aspiring embedded Linux distribution. All of the build systems used by
traditional desktop Linux distributions lacked important functionality,
and none of the ad hoc Buildroot-based systems, prevalent in the
embedded space, were scalable or maintainable.
Some important original goals for BitBake were:
- Handle cross-compilation.
- Handle inter-package dependencies (build time on target architecture,
build time on native architecture, and runtime).
- Support running any number of tasks within a given package,
including, but not limited to, fetching upstream sources, unpacking
them, patching them, configuring them, and so forth.
- Be Linux distribution agnostic for both build and target systems.
- Be architecture agnostic.
- Support multiple build and target operating systems (e.g. Cygwin, the
BSDs, and so forth).
- Be self-contained, rather than tightly integrated into the build
machine's root filesystem.
- Handle conditional metadata on the target architecture, operating
system, distribution, and machine.
- Be easy to use the tools to supply local metadata and packages
against which to operate.
- Be easy to use BitBake to collaborate between multiple projects for
their builds.
- Provide an inheritance mechanism to share common metadata between
many packages.
Over time it became apparent that some further requirements were
necessary:
- Handle variants of a base recipe (e.g. native, sdk, and multilib).
- Split metadata into layers and allow layers to enhance or override
other layers.
- Allow representation of a given set of input variables to a task as a
checksum. Based on that checksum, allow acceleration of builds with
prebuilt components.
BitBake satisfies all the original requirements and many more with
extensions being made to the basic functionality to reflect the
additional requirements. Flexibility and power have always been the
priorities. BitBake is highly extensible and supports embedded Python
code and execution of any arbitrary tasks.
.. _Concepts:
Concepts
========
BitBake is a program written in the Python language. At the highest
level, BitBake interprets metadata, decides what tasks are required to
run, and executes those tasks. Similar to GNU Make, BitBake controls how
software is built. GNU Make achieves its control through "makefiles",
while BitBake uses "recipes".
BitBake extends the capabilities of a simple tool like GNU Make by
allowing for the definition of much more complex tasks, such as
assembling entire embedded Linux distributions.
The remainder of this section introduces several concepts that should be
understood in order to better leverage the power of BitBake.
Recipes
-------
BitBake Recipes, which are denoted by the file extension ``.bb``, are
the most basic metadata files. These recipe files provide BitBake with
the following:
- Descriptive information about the package (author, homepage, license,
and so on)
- The version of the recipe
- Existing dependencies (both build and runtime dependencies)
- Where the source code resides and how to fetch it
- Whether the source code requires any patches, where to find them, and
how to apply them
- How to configure and compile the source code
- How to assemble the generated artifacts into one or more installable
packages
- Where on the target machine to install the package or packages
created
Within the context of BitBake, or any project utilizing BitBake as its
build system, files with the ``.bb`` extension are referred to as
recipes.
.. note::
The term "package" is also commonly used to describe recipes.
However, since the same word is used to describe packaged output from
a project, it is best to maintain a single descriptive term -
"recipes". Put another way, a single "recipe" file is quite capable
of generating a number of related but separately installable
"packages". In fact, that ability is fairly common.
Configuration Files
-------------------
Configuration files, which are denoted by the ``.conf`` extension,
define various configuration variables that govern the project's build
process. These files fall into several areas that define machine
configuration, distribution configuration, possible compiler tuning,
general common configuration, and user configuration. The main
configuration file is the sample ``bitbake.conf`` file, which is located
within the BitBake source tree ``conf`` directory.
Classes
-------
Class files, which are denoted by the ``.bbclass`` extension, contain
information that is useful to share between metadata files. The BitBake
source tree currently comes with one class metadata file called
``base.bbclass``. You can find this file in the ``classes`` directory.
The ``base.bbclass`` class files is special since it is always included
automatically for all recipes and classes. This class contains
definitions for standard basic tasks such as fetching, unpacking,
configuring (empty by default), compiling (runs any Makefile present),
installing (empty by default) and packaging (empty by default). These
tasks are often overridden or extended by other classes added during the
project development process.
Layers
------
Layers allow you to isolate different types of customizations from each
other. While you might find it tempting to keep everything in one layer
when working on a single project, the more modular your metadata, the
easier it is to cope with future changes.
To illustrate how you can use layers to keep things modular, consider
customizations you might make to support a specific target machine.
These types of customizations typically reside in a special layer,
rather than a general layer, called a Board Support Package (BSP) layer.
Furthermore, the machine customizations should be isolated from recipes
and metadata that support a new GUI environment, for example. This
situation gives you a couple of layers: one for the machine
configurations and one for the GUI environment. It is important to
understand, however, that the BSP layer can still make machine-specific
additions to recipes within the GUI environment layer without polluting
the GUI layer itself with those machine-specific changes. You can
accomplish this through a recipe that is a BitBake append
(``.bbappend``) file.
.. _append-bbappend-files:
Append Files
------------
Append files, which are files that have the ``.bbappend`` file
extension, extend or override information in an existing recipe file.
BitBake expects every append file to have a corresponding recipe file.
Furthermore, the append file and corresponding recipe file must use the
same root filename. The filenames can differ only in the file type
suffix used (e.g. ``formfactor_0.0.bb`` and
``formfactor_0.0.bbappend``).
Information in append files extends or overrides the information in the
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::
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::
busybox_1.21.1.bb
busybox_1.21.2.bb
busybox_1.21.3.bb
.. note::
The use of the " % " character is limited in that it only works directly in
front of the .bbappend portion of the append file's name. You cannot use the
wildcard character in any other location of the name.
If the ``busybox`` recipe was updated to ``busybox_1.3.0.bb``, the
append name would not match. However, if you named the append file
``busybox_1.%.bbappend``, then you would have a match.
In the most general case, you could name the append file something as
simple as ``busybox_%.bbappend`` to be entirely version independent.
Obtaining BitBake
=================
You can obtain BitBake several different ways:
- **Cloning BitBake:** Using Git to clone the BitBake source code
repository is the recommended method for obtaining BitBake. Cloning
the repository makes it easy to get bug fixes and have access to
stable branches and the master branch. Once you have cloned BitBake,
you should use the latest stable branch for development since the
master branch is for BitBake development and might contain less
stable changes.
You usually need a version of BitBake that matches the metadata you
are using. The metadata is generally backwards compatible but not
forward compatible.
Here is an example that clones the BitBake repository::
$ git clone git://git.openembedded.org/bitbake
This command clones the BitBake
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``::
$ git clone git://git.openembedded.org/bitbake bbdev
- **Installation using your Distribution Package Management System:**
This method is not recommended because the BitBake version that is
provided by your distribution, in most cases, is several releases
behind a snapshot of the BitBake repository.
- **Taking a snapshot of BitBake:** Downloading a snapshot of BitBake
from the source code repository gives you access to a known branch or
release of BitBake.
.. note::
Cloning the Git repository, as described earlier, is the preferred
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::
$ wget https://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
$ tar zxpvf bitbake-1.17.0.tar.gz
After extraction of the tarball using
the tar utility, you have a directory entitled ``bitbake-1.17.0``.
- **Using the BitBake that Comes With Your Build Checkout:** A final
possibility for getting a copy of BitBake is that it already comes
with your checkout of a larger BitBake-based build system, such as
Poky. Rather than manually checking out individual layers and gluing
them together yourself, you can check out an entire build system. The
checkout will already include a version of BitBake that has been
thoroughly tested for compatibility with the other components. For
information on how to check out a particular BitBake-based build
system, consult that build system's supporting documentation.
.. _bitbake-user-manual-command:
The BitBake Command
===================
The ``bitbake`` command is the primary interface to the BitBake tool.
This section presents the BitBake command syntax and provides several
execution examples.
Usage and syntax
----------------
Following is the usage and syntax for BitBake::
$ bitbake -h
Usage: bitbake [options] [recipename/target recipe:do_task ...]
Executes the specified task (default is 'build') for a given set of target recipes (.bb files).
It is assumed there is a conf/bblayers.conf available in cwd or in BBPATH which
will provide the layer, BBFILES and other configuration information.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-b BUILDFILE, --buildfile=BUILDFILE
Execute tasks from a specific .bb recipe directly.
WARNING: Does not handle any dependencies from other
recipes.
-k, --continue Continue as much as possible after an error. While the
target that failed and anything depending on it cannot
be built, as much as possible will be built before
stopping.
-f, --force Force the specified targets/task to run (invalidating
any existing stamp file).
-c CMD, --cmd=CMD Specify the task to execute. The exact options
available depend on the metadata. Some examples might
be 'compile' or 'populate_sysroot' or 'listtasks' may
give a list of the tasks available.
-C INVALIDATE_STAMP, --clear-stamp=INVALIDATE_STAMP
Invalidate the stamp for the specified task such as
'compile' and then run the default task for the
specified target(s).
-r PREFILE, --read=PREFILE
Read the specified file before bitbake.conf.
-R POSTFILE, --postread=POSTFILE
Read the specified file after bitbake.conf.
-v, --verbose Enable tracing of shell tasks (with 'set -x'). Also
print bb.note(...) messages to stdout (in addition to
writing them to ${T}/log.do_&lt;task&gt;).
-D, --debug Increase the debug level. You can specify this more
than once. -D sets the debug level to 1, where only
bb.debug(1, ...) messages are printed to stdout; -DD
sets the debug level to 2, where both bb.debug(1, ...)
and bb.debug(2, ...) messages are printed; etc.
Without -D, no debug messages are printed. Note that
-D only affects output to stdout. All debug messages
are written to ${T}/log.do_taskname, regardless of the
debug level.
-q, --quiet Output less log message data to the terminal. You can
specify this more than once.
-n, --dry-run Don't execute, just go through the motions.
-S SIGNATURE_HANDLER, --dump-signatures=SIGNATURE_HANDLER
Dump out the signature construction information, with
no task execution. The SIGNATURE_HANDLER parameter is
passed to the handler. Two common values are none and
printdiff but the handler may define more/less. none
means only dump the signature, printdiff means compare
the dumped signature with the cached one.
-p, --parse-only Quit after parsing the BB recipes.
-s, --show-versions Show current and preferred versions of all recipes.
-e, --environment Show the global or per-recipe environment complete
with information about where variables were
set/changed.
-g, --graphviz Save dependency tree information for the specified
targets in the dot syntax.
-I EXTRA_ASSUME_PROVIDED, --ignore-deps=EXTRA_ASSUME_PROVIDED
Assume these dependencies don't exist and are already
provided (equivalent to ASSUME_PROVIDED). Useful to
make dependency graphs more appealing
-l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS
Show debug logging for the specified logging domains
-P, --profile Profile the command and save reports.
-u UI, --ui=UI The user interface to use (knotty, ncurses, taskexp or
teamcity - default knotty).
--token=XMLRPCTOKEN Specify the connection token to be used when
connecting to a remote server.
--revisions-changed Set the exit code depending on whether upstream
floating revisions have changed or not.
--server-only Run bitbake without a UI, only starting a server
(cooker) process.
-B BIND, --bind=BIND The name/address for the bitbake xmlrpc server to bind
to.
-T SERVER_TIMEOUT, --idle-timeout=SERVER_TIMEOUT
Set timeout to unload bitbake server due to
inactivity, set to -1 means no unload, default:
Environment variable BB_SERVER_TIMEOUT.
--no-setscene Do not run any setscene tasks. sstate will be ignored
and everything needed, built.
--skip-setscene Skip setscene tasks if they would be executed. Tasks
previously restored from sstate will be kept, unlike
--no-setscene
--setscene-only Only run setscene tasks, don't run any real tasks.
--remote-server=REMOTE_SERVER
Connect to the specified server.
-m, --kill-server Terminate any running bitbake server.
--observe-only Connect to a server as an observing-only client.
--status-only Check the status of the remote bitbake server.
-w WRITEEVENTLOG, --write-log=WRITEEVENTLOG
Writes the event log of the build to a bitbake event
json file. Use '' (empty string) to assign the name
automatically.
--runall=RUNALL Run the specified task for any recipe in the taskgraph
of the specified target (even if it wouldn't otherwise
have run).
--runonly=RUNONLY Run only the specified task within the taskgraph of
the specified targets (and any task dependencies those
tasks may have).
.. _bitbake-examples:
Examples
--------
This section presents some examples showing how to use BitBake.
.. _example-executing-a-task-against-a-single-recipe:
Executing a Task Against a Single Recipe
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Executing tasks for a single recipe file is relatively simple. You
specify the file in question, and BitBake parses it and executes the
specified task. If you do not specify a task, BitBake executes the
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::
$ bitbake -b foo_1.0.bb
The following command runs the clean task on the ``foo.bb`` recipe file::
$ bitbake -b foo.bb -c clean
.. note::
The "-b" option explicitly does not handle recipe dependencies. Other
than for debugging purposes, it is instead recommended that you use
the syntax presented in the next section.
Executing Tasks Against a Set of Recipe Files
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are a number of additional complexities introduced when one wants
to manage multiple ``.bb`` files. Clearly there needs to be a way to
tell BitBake what files are available and, of those, which you want to
execute. There also needs to be a way for each recipe to express its
dependencies, both for build-time and runtime. There must be a way for
you to express recipe preferences when multiple recipes provide the same
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::
$ 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::
$ bitbake -c clean foo
Executing a List of Task and Recipe Combinations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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::
$ bitbake myfirstrecipe:do_taskA mysecondrecipe:do_taskB
Generating Dependency Graphs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BitBake is able to generate dependency graphs using the ``dot`` syntax.
You can convert these graphs into images using the ``dot`` tool from
`Graphviz <http://www.graphviz.org>`__.
When you generate a dependency graph, BitBake writes two files to the
current working directory:
- ``task-depends.dot``: Shows dependencies between tasks. These
dependencies match BitBake's internal task execution list.
- ``pn-buildlist``: Shows a simple list of targets that are to be
built.
To stop depending on common depends, use the ``-I`` depend option and
BitBake omits them from the graph. Leaving this information out can
produce more readable graphs. This way, you can remove from the graph
:term:`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::
$ bitbake -g foo
$ bitbake -g -I virtual/kernel -I eglibc foo
Executing a Multiple Configuration Build
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BitBake is able to build multiple images or packages using a single
command where the different targets require different configurations
(multiple configuration builds). Each target, in this scenario, is
referred to as a "multiconfig".
To accomplish a multiple configuration build, you must define each
target's configuration separately using a parallel configuration file in
the build directory. The location for these multiconfig configuration
files is specific. They must reside in the current build directory in a
sub-directory of ``conf`` named ``multiconfig``. Following is an example
for two separate targets:
.. image:: figures/bb_multiconfig_files.png
:align: center
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 directory.
Minimally, each configuration file must define the machine and the
temporary directory BitBake uses for the build. Suggested practice
dictates that you do not overlap the temporary directories used during
the builds.
Aside from separate configuration files for each target, you must also
enable BitBake to perform multiple configuration builds. Enabling is
accomplished by setting the
:term:`BBMULTICONFIG` variable in the
``local.conf`` configuration file. As an example, suppose you had
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::
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::
$ bitbake [mc:multiconfigname:]target [[[mc:multiconfigname:]target] ... ]
Here is an example for two extra multiconfigs: ``target1`` and ``target2``::
$ bitbake mc::target mc:target1:target mc:target2:target
.. _bb-enabling-multiple-configuration-build-dependencies:
Enabling Multiple Configuration Build Dependencies
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sometimes dependencies can exist between targets (multiconfigs) in a
multiple configuration build. For example, suppose that in order to
build an image for a particular architecture, the root filesystem of
another build for a different architecture needs to exist. In other
words, the image for the first multiconfig depends on the root
filesystem of the second multiconfig. This dependency is essentially
that the task in the recipe that builds one multiconfig is dependent on
the completion of the task in the recipe that builds another
multiconfig.
To enable dependencies in a multiple configuration build, you must
declare the dependencies in the recipe using the following statement
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``::
image_task[mcdepends] = "mc:target1:target2:image2:rootfs_task"
In this example, the
``from_multiconfig`` is "target1" and the ``to_multiconfig`` is "target2". The
task on which the image whose recipe contains image_task depends on the
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::
$ bitbake mc:target1:image1
This command executes all the tasks needed to create ``image1`` for the "target1"
multiconfig. Because of the dependency, BitBake also executes through
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::
image_task[mcdepends] = "mc:target1:target2:image2:image_task"
In this case, BitBake must create ``image2`` for the "target2" build since
the "target1" build depends on it.
Because "target1" and "target2" are enabled for multiple configuration
builds and have separate configuration files, BitBake places the
artifacts for each build in the respective temporary build directories.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

142
bitbake/doc/bitbake.1 Normal file
View File

@@ -0,0 +1,142 @@
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH BITBAKE 1 "November 19, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
BitBake \- simple tool for the execution of tasks
.SH SYNOPSIS
.B bitbake
.RI [ options ] " packagenames"
.br
.SH DESCRIPTION
This manual page documents briefly the
.B bitbake
command.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
\fBbitbake\fP is a program that executes the specified task (default is 'build')
for a given set of BitBake files.
.br
It expects that BBFILES is defined, which is a space separated list of files to
be executed. BBFILES does support wildcards.
.br
Default BBFILES are the .bb files in the current directory.
.SH OPTIONS
This program follow the usual GNU command line syntax, with long
options starting with two dashes (`-').
.TP
.B \-h, \-\-help
Show summary of options.
.TP
.B \-\-version
Show version of program.
.TP
.B \-bBUILDFILE, \-\-buildfile=BUILDFILE
execute the task against this .bb file, rather than a package from BBFILES.
.TP
.B \-k, \-\-continue
continue as much as possible after an error. While the target that failed, and
those that depend on it, cannot be remade, the other dependencies of these
targets can be processed all the same.
.TP
.B \-a, \-\-tryaltconfigs
continue with builds by trying to use alternative providers where possible.
.TP
.B \-f, \-\-force
force run of specified cmd, regardless of stamp status
.TP
.B \-i, \-\-interactive
drop into the interactive mode also called the BitBake shell.
.TP
.B \-cCMD, \-\-cmd=CMD
Specify task to execute. Note that this only executes the specified task for
the providee and the packages it depends on, i.e. 'compile' does not implicitly
call stage for the dependencies (IOW: use only if you know what you are doing).
Depending on the base.bbclass a listtasks task is defined and will show
available tasks.
.TP
.B \-rFILE, \-\-read=FILE
read the specified file before bitbake.conf
.TP
.B \-v, \-\-verbose
output more chit-chat to the terminal
.TP
.B \-D, \-\-debug
Increase the debug level. You can specify this more than once.
.TP
.B \-n, \-\-dry-run
don't execute, just go through the motions
.TP
.B \-p, \-\-parse-only
quit after parsing the BB files (developers only)
.TP
.B \-s, \-\-show-versions
show current and preferred versions of all packages
.TP
.B \-e, \-\-environment
show the global or per-recipe environment (this is what used to be bbread)
.TP
.B \-g, \-\-graphviz
emit the dependency trees of the specified packages in the dot syntax
.TP
.B \-IIGNORED\_DOT\_DEPS, \-\-ignore-deps=IGNORED_DOT_DEPS
Stop processing at the given list of dependencies when generating dependency
graphs. This can help to make the graph more appealing
.TP
.B \-lDEBUG_DOMAINS, \-\-log-domains=DEBUG_DOMAINS
Show debug logging for the specified logging domains
.TP
.B \-P, \-\-profile
profile the command and print a report
.TP
.B \-uUI, \-\-ui=UI
User interface to use. Currently, knotty, taskexp or ncurses can be specified as UI.
.TP
.B \-tSERVERTYPE, \-\-servertype=SERVERTYPE
Choose which server to use, none, process or xmlrpc.
.TP
.B \-\-revisions-changed
Set the exit code depending on whether upstream floating revisions have changed or not.
.TP
.B \-\-server-only
Run bitbake without UI, the frontend can connect with bitbake server itself.
.TP
.B \-BBIND, \-\-bind=BIND
The name/address for the bitbake server to bind to.
.TP
.B \-\-no\-setscene
Do not run any setscene tasks, forces builds.
.SH ENVIRONMENT VARIABLES
bitbake uses the following environment variables to control its
operation:
.TP
.B BITBAKE_UI
The bitbake user interface; overridden by the \fB-u\fP commandline option.
.SH AUTHORS
BitBake was written by
Phil Blundell,
Holger Freyther,
Chris Larson,
Mickey Lauer,
Richard Purdie,
Holger Schurig
.PP
This manual page was written by Marcin Juszkiewicz <marcin@hrw.one.pl>
for the Debian project (but may be used by others).

101
bitbake/doc/conf.py Normal file
View File

@@ -0,0 +1,101 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
import sys
import datetime
current_version = "dev"
# String used in sidebar
version = 'Version: ' + current_version
if current_version == 'dev':
version = 'Version: Current Development'
# Version seen in documentation_options.js and hence in js switchers code
release = current_version
# -- Project information -----------------------------------------------------
project = 'Bitbake'
copyright = '2004-%s, Richard Purdie, Chris Larson, and Phil Blundell' \
% datetime.datetime.now().year
author = 'Richard Purdie, Chris Larson, and Phil Blundell'
# external links and substitutions
extlinks = {
'yocto_docs': ('https://docs.yoctoproject.org%s', None),
'oe_lists': ('https://lists.openembedded.org%s', None),
}
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autosectionlabel',
'sphinx.ext.extlinks',
]
autosectionlabel_prefix_document = True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# master document name. The default changed from contents to index. so better
# set it ourselves.
master_doc = 'index'
# create substitution for project configuration variables
rst_prolog = """
.. |project_name| replace:: %s
.. |copyright| replace:: %s
.. |author| replace:: %s
""" % (project, copyright, author)
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
try:
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
except ImportError:
sys.stderr.write("The Sphinx sphinx_rtd_theme HTML theme was not found.\
\nPlease make sure to install the sphinx_rtd_theme python package.\n")
sys.exit(1)
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['sphinx-static']
# Add customm CSS and JS files
html_css_files = ['theme_overrides.css']
html_js_files = ['switchers.js']
# Hide 'Created using Sphinx' text
html_show_sphinx = False
# Add 'Last updated' on each page
html_last_updated_fmt = '%b %d, %Y'
# Remove the trailing 'dot' in section numbers
html_secnumber_suffix = " "

3
bitbake/doc/genindex.rst Normal file
View File

@@ -0,0 +1,3 @@
=====
Index
=====

38
bitbake/doc/index.rst Normal file
View File

@@ -0,0 +1,38 @@
.. SPDX-License-Identifier: CC-BY-2.5
===================
BitBake User Manual
===================
|
.. toctree::
:caption: Table of Contents
:numbered:
bitbake-user-manual/bitbake-user-manual-intro
bitbake-user-manual/bitbake-user-manual-execution
bitbake-user-manual/bitbake-user-manual-metadata
bitbake-user-manual/bitbake-user-manual-fetching
bitbake-user-manual/bitbake-user-manual-ref-variables
bitbake-user-manual/bitbake-user-manual-hello
.. toctree::
:maxdepth: 1
:hidden:
genindex
releases
----
.. include:: <xhtml1-lat1.txt>
| BitBake Community
| Copyright |copy| |copyright|
| <bitbake-devel@lists.openembedded.org>
This work is licensed under the Creative Commons Attribution License. To view a
copy of this license, visit http://creativecommons.org/licenses/by/2.5/ or send
a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View,
California 94041, USA.

174
bitbake/doc/releases.rst Normal file
View File

@@ -0,0 +1,174 @@
.. SPDX-License-Identifier: CC-BY-2.5
=================================
BitBake Supported Release Manuals
=================================
*******************************
Release Series 4.2 (mickledore)
*******************************
- :yocto_docs:`BitBake 2.4 User Manual </bitbake/2.4/>`
******************************
Release Series 4.0 (kirkstone)
******************************
- :yocto_docs:`BitBake 2.0 User Manual </bitbake/2.0/>`
****************************
Release Series 3.1 (dunfell)
****************************
- :yocto_docs:`BitBake 1.46 User Manual </bitbake/1.46/>`
================================
BitBake Outdated Release Manuals
================================
*****************************
Release Series 4.1 (langdale)
*****************************
- :yocto_docs:`BitBake 2.2 User Manual </bitbake/2.2/>`
******************************
Release Series 3.4 (honister)
******************************
- :yocto_docs:`BitBake 1.52 User Manual </bitbake/1.52/>`
******************************
Release Series 3.3 (hardknott)
******************************
- :yocto_docs:`BitBake 1.50 User Manual </bitbake/1.50/>`
*******************************
Release Series 3.2 (gatesgarth)
*******************************
- :yocto_docs:`BitBake 1.48 User Manual </bitbake/1.48/>`
*******************************************
Release Series 3.1 (dunfell first versions)
*******************************************
- :yocto_docs:`3.1 BitBake User Manual </3.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`3.1.1 BitBake User Manual </3.1.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`3.1.2 BitBake User Manual </3.1.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`3.1.3 BitBake User Manual </3.1.3/bitbake-user-manual/bitbake-user-manual.html>`
*************************
Release Series 3.0 (zeus)
*************************
- :yocto_docs:`3.0 BitBake User Manual </3.0/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`3.0.1 BitBake User Manual </3.0.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`3.0.2 BitBake User Manual </3.0.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`3.0.3 BitBake User Manual </3.0.3/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`3.0.4 BitBake User Manual </3.0.4/bitbake-user-manual/bitbake-user-manual.html>`
****************************
Release Series 2.7 (warrior)
****************************
- :yocto_docs:`2.7 BitBake User Manual </2.7/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.7.1 BitBake User Manual </2.7.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.7.2 BitBake User Manual </2.7.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.7.3 BitBake User Manual </2.7.3/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.7.4 BitBake User Manual </2.7.4/bitbake-user-manual/bitbake-user-manual.html>`
*************************
Release Series 2.6 (thud)
*************************
- :yocto_docs:`2.6 BitBake User Manual </2.6/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.6.1 BitBake User Manual </2.6.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.6.2 BitBake User Manual </2.6.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.6.3 BitBake User Manual </2.6.3/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.6.4 BitBake User Manual </2.6.4/bitbake-user-manual/bitbake-user-manual.html>`
*************************
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>`
**************************
Release Series 2.4 (rocko)
**************************
- :yocto_docs:`2.4 BitBake User Manual </2.4/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.4.1 BitBake User Manual </2.4.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.4.2 BitBake User Manual </2.4.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.4.3 BitBake User Manual </2.4.3/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.4.4 BitBake User Manual </2.4.4/bitbake-user-manual/bitbake-user-manual.html>`
*************************
Release Series 2.3 (pyro)
*************************
- :yocto_docs:`2.3 BitBake User Manual </2.3/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.3.1 BitBake User Manual </2.3.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.3.2 BitBake User Manual </2.3.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.3.3 BitBake User Manual </2.3.3/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.3.4 BitBake User Manual </2.3.4/bitbake-user-manual/bitbake-user-manual.html>`
**************************
Release Series 2.2 (morty)
**************************
- :yocto_docs:`2.2 BitBake User Manual </2.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.2.1 BitBake User Manual </2.2.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.2.2 BitBake User Manual </2.2.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.2.3 BitBake User Manual </2.2.3/bitbake-user-manual/bitbake-user-manual.html>`
****************************
Release Series 2.1 (krogoth)
****************************
- :yocto_docs:`2.1 BitBake User Manual </2.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.1.1 BitBake User Manual </2.1.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.1.2 BitBake User Manual </2.1.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.1.3 BitBake User Manual </2.1.3/bitbake-user-manual/bitbake-user-manual.html>`
***************************
Release Series 2.0 (jethro)
***************************
- :yocto_docs:`1.9 BitBake User Manual </1.9/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.0 BitBake User Manual </2.0/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.0.1 BitBake User Manual </2.0.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.0.2 BitBake User Manual </2.0.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`2.0.3 BitBake User Manual </2.0.3/bitbake-user-manual/bitbake-user-manual.html>`
*************************
Release Series 1.8 (fido)
*************************
- :yocto_docs:`1.8 BitBake User Manual </1.8/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.8.1 BitBake User Manual </1.8.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.8.2 BitBake User Manual </1.8.2/bitbake-user-manual/bitbake-user-manual.html>`
**************************
Release Series 1.7 (dizzy)
**************************
- :yocto_docs:`1.7 BitBake User Manual </1.7/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.7.1 BitBake User Manual </1.7.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.7.2 BitBake User Manual </1.7.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.7.3 BitBake User Manual </1.7.3/bitbake-user-manual/bitbake-user-manual.html>`
**************************
Release Series 1.6 (daisy)
**************************
- :yocto_docs:`1.6 BitBake User Manual </1.6/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.6.1 BitBake User Manual </1.6.1/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.6.2 BitBake User Manual </1.6.2/bitbake-user-manual/bitbake-user-manual.html>`
- :yocto_docs:`1.6.3 BitBake User Manual </1.6.3/bitbake-user-manual/bitbake-user-manual.html>`

View File

@@ -0,0 +1,233 @@
(function() {
'use strict';
var all_versions = {
'dev': 'dev (3.2)',
'3.1.2': '3.1.2',
'3.0.3': '3.0.3',
'2.7.4': '2.7.4',
};
var all_doctypes = {
'single': 'Individual Webpages',
'mega': "All-in-one 'Mega' Manual",
};
// Simple version comparision
// Return 1 if a > b
// Return -1 if a < b
// Return 0 if a == b
function ver_compare(a, b) {
if (a == "dev") {
return 1;
}
if (a === b) {
return 0;
}
var a_components = a.split(".");
var b_components = b.split(".");
var len = Math.min(a_components.length, b_components.length);
// loop while the components are equal
for (var i = 0; i < len; i++) {
// A bigger than B
if (parseInt(a_components[i]) > parseInt(b_components[i])) {
return 1;
}
// B bigger than A
if (parseInt(a_components[i]) < parseInt(b_components[i])) {
return -1;
}
}
// If one's a prefix of the other, the longer one is greater.
if (a_components.length > b_components.length) {
return 1;
}
if (a_components.length < b_components.length) {
return -1;
}
// Otherwise they are the same.
return 0;
}
function build_version_select(current_series, current_version) {
var buf = ['<select>'];
$.each(all_versions, function(version, title) {
var series = version.substr(0, 3);
if (series == current_series) {
if (version == current_version)
buf.push('<option value="' + version + '" selected="selected">' + title + '</option>');
else
buf.push('<option value="' + version + '">' + title + '</option>');
if (version != current_version)
buf.push('<option value="' + current_version + '" selected="selected">' + current_version + '</option>');
} else {
buf.push('<option value="' + version + '">' + title + '</option>');
}
});
buf.push('</select>');
return buf.join('');
}
function build_doctype_select(current_doctype) {
var buf = ['<select>'];
$.each(all_doctypes, function(doctype, title) {
if (doctype == current_doctype)
buf.push('<option value="' + doctype + '" selected="selected">' +
all_doctypes[current_doctype] + '</option>');
else
buf.push('<option value="' + doctype + '">' + title + '</option>');
});
if (!(current_doctype in all_doctypes)) {
// In case we're browsing a doctype that is not yet in all_doctypes.
buf.push('<option value="' + current_doctype + '" selected="selected">' +
current_doctype + '</option>');
all_doctypes[current_doctype] = current_doctype;
}
buf.push('</select>');
return buf.join('');
}
function navigate_to_first_existing(urls) {
// Navigate to the first existing URL in urls.
var url = urls.shift();
// Web browsers won't redirect file:// urls to file urls using ajax but
// its useful for local testing
if (url.startsWith("file://")) {
window.location.href = url;
return;
}
if (urls.length == 0) {
window.location.href = url;
return;
}
$.ajax({
url: url,
success: function() {
window.location.href = url;
},
error: function() {
navigate_to_first_existing(urls);
}
});
}
function get_docroot_url() {
var url = window.location.href;
var root = DOCUMENTATION_OPTIONS.URL_ROOT;
var urlarray = url.split('/');
// Trim off anything after '/'
urlarray.pop();
var depth = (root.match(/\.\.\//g) || []).length;
for (var i = 0; i < depth; i++) {
urlarray.pop();
}
return urlarray.join('/') + '/';
}
function on_version_switch() {
var selected_version = $(this).children('option:selected').attr('value');
var url = window.location.href;
var current_version = DOCUMENTATION_OPTIONS.VERSION;
var docroot = get_docroot_url()
var new_versionpath = selected_version + '/';
if (selected_version == "dev")
new_versionpath = '';
// dev versions have no version prefix
if (current_version == "dev") {
var new_url = docroot + new_versionpath + url.replace(docroot, "");
var fallback_url = docroot + new_versionpath;
} else {
var new_url = url.replace('/' + current_version + '/', '/' + new_versionpath);
var fallback_url = new_url.replace(url.replace(docroot, ""), "");
}
console.log(get_docroot_url())
console.log(url + " to url " + new_url);
console.log(url + " to fallback " + fallback_url);
if (new_url != url) {
navigate_to_first_existing([
new_url,
fallback_url,
'https://www.yoctoproject.org/docs/',
]);
}
}
function on_doctype_switch() {
var selected_doctype = $(this).children('option:selected').attr('value');
var url = window.location.href;
if (selected_doctype == 'mega') {
var docroot = get_docroot_url()
var current_version = DOCUMENTATION_OPTIONS.VERSION;
// Assume manuals before 3.2 are using old docbook mega-manual
if (ver_compare(current_version, "3.2") < 0) {
var new_url = docroot + "mega-manual/mega-manual.html";
} else {
var new_url = docroot + "singleindex.html";
}
} else {
var new_url = url.replace("singleindex.html", "index.html")
}
if (new_url != url) {
navigate_to_first_existing([
new_url,
'https://www.yoctoproject.org/docs/',
]);
}
}
// Returns the current doctype based upon the url
function doctype_segment_from_url(url) {
if (url.includes("singleindex") || url.includes("mega-manual"))
return "mega";
return "single";
}
$(document).ready(function() {
var release = DOCUMENTATION_OPTIONS.VERSION;
var current_doctype = doctype_segment_from_url(window.location.href);
var current_series = release.substr(0, 3);
var version_select = build_version_select(current_series, release);
$('.version_switcher_placeholder').html(version_select);
$('.version_switcher_placeholder select').bind('change', on_version_switch);
var doctype_select = build_doctype_select(current_doctype);
$('.doctype_switcher_placeholder').html(doctype_select);
$('.doctype_switcher_placeholder select').bind('change', on_doctype_switch);
if (ver_compare(release, "3.1") < 0) {
$('#outdated-warning').html('Version ' + release + ' of the project is now considered obsolete, please select and use a more recent version');
$('#outdated-warning').css('padding', '.5em');
} else if (release != "dev") {
$.each(all_versions, function(version, title) {
var series = version.substr(0, 3);
if (series == current_series && version != release) {
$('#outdated-warning').html('This document is for outdated version ' + release + ', you should select the latest release version in this series, ' + version + '.');
$('#outdated-warning').css('padding', '.5em');
}
});
}
});
})();

View File

@@ -0,0 +1,162 @@
/*
SPDX-License-Identifier: CC-BY-2.0-UK
*/
body {
font-family: Verdana, Sans, sans-serif;
margin: 0em auto;
color: #333;
}
h1,h2,h3,h4,h5,h6,h7 {
font-family: Arial, Sans;
color: #00557D;
clear: both;
}
h1 {
font-size: 2em;
text-align: left;
padding: 0em 0em 0em 0em;
margin: 2em 0em 0em 0em;
}
h2.subtitle {
margin: 0.10em 0em 3.0em 0em;
padding: 0em 0em 0em 0em;
font-size: 1.8em;
padding-left: 20%;
font-weight: normal;
font-style: italic;
}
h2 {
margin: 2em 0em 0.66em 0em;
padding: 0.5em 0em 0em 0em;
font-size: 1.5em;
font-weight: bold;
}
h3.subtitle {
margin: 0em 0em 1em 0em;
padding: 0em 0em 0em 0em;
font-size: 142.14%;
text-align: right;
}
h3 {
margin: 1em 0em 0.5em 0em;
padding: 1em 0em 0em 0em;
font-size: 140%;
font-weight: bold;
}
h4 {
margin: 1em 0em 0.5em 0em;
padding: 1em 0em 0em 0em;
font-size: 120%;
font-weight: bold;
}
h5 {
margin: 1em 0em 0.5em 0em;
padding: 1em 0em 0em 0em;
font-size: 110%;
font-weight: bold;
}
h6 {
margin: 1em 0em 0em 0em;
padding: 1em 0em 0em 0em;
font-size: 110%;
font-weight: bold;
}
em {
font-weight: bold;
}
.pre {
font-size: medium;
font-family: Courier, monospace;
}
.wy-nav-content a {
text-decoration: underline;
color: #444;
background: transparent;
}
.wy-nav-content a:hover {
text-decoration: underline;
background-color: #dedede;
}
.wy-nav-content a:visited {
color: #444;
}
[alt='Permalink'] { color: #eee; }
[alt='Permalink']:hover { color: black; }
@media screen {
/* content column
*
* RTD theme's default is 800px as max width for the content, but we have
* tables with tons of columns, which need the full width of the view-port.
*/
.wy-nav-content{max-width: none; }
/* inline literal: drop the borderbox, padding and red color */
code, .rst-content tt, .rst-content code {
color: inherit;
border: none;
padding: unset;
background: inherit;
font-size: 85%;
}
.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal {
color: inherit;
}
/* Admonition should be gray, not blue or green */
.rst-content .note .admonition-title,
.rst-content .tip .admonition-title,
.rst-content .warning .admonition-title,
.rst-content .caution .admonition-title,
.rst-content .important .admonition-title {
background: #f0f0f2;
color: #00557D;
}
.rst-content .note,
.rst-content .tip,
.rst-content .important,
.rst-content .warning,
.rst-content .caution {
background: #f0f0f2;
}
/* Remove the icon in front of note/tip element, and before the logo */
.icon-home:before, .rst-content .admonition-title:before {
display: none
}
/* a custom informalexample container is used in some doc */
.informalexample {
border: 1px solid;
border-color: #aaa;
margin: 1em 0em;
padding: 1em;
page-break-inside: avoid;
}
/* Remove the blue background in the top left corner, around the logo */
.wy-side-nav-search {
background: inherit;
}
}

BIN
bitbake/doc/template/Vera.ttf vendored Normal file

Binary file not shown.

BIN
bitbake/doc/template/VeraMoBd.ttf vendored Normal file

Binary file not shown.

BIN
bitbake/doc/template/VeraMono.ttf vendored Normal file

Binary file not shown.

BIN
bitbake/doc/template/draft.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

197
bitbake/lib/bb/COW.py Normal file
View File

@@ -0,0 +1,197 @@
#
# This is a copy on write dictionary and set which abuses classes to try and be nice and fast.
#
# Copyright (C) 2006 Tim Ansell
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Please Note:
# Be careful when using mutable types (ie Dict and Lists) - operations involving these are SLOW.
# Assign a file to __warn__ to get warnings about slow operations.
#
import copy
ImmutableTypes = (
bool,
complex,
float,
int,
tuple,
frozenset,
str
)
MUTABLE = "__mutable__"
class COWMeta(type):
pass
class COWDictMeta(COWMeta):
__warn__ = False
__hasmutable__ = False
__marker__ = tuple()
def __str__(cls):
# FIXME: I have magic numbers!
return "<COWDict Level: %i Current Keys: %i>" % (cls.__count__, len(cls.__dict__) - 3)
__repr__ = __str__
def cow(cls):
class C(cls):
__count__ = cls.__count__ + 1
return C
copy = cow
__call__ = cow
def __setitem__(cls, key, value):
if value is not None and not isinstance(value, ImmutableTypes):
if not isinstance(value, COWMeta):
cls.__hasmutable__ = True
key += MUTABLE
setattr(cls, key, value)
def __getmutable__(cls, key, readonly=False):
nkey = key + MUTABLE
try:
return cls.__dict__[nkey]
except KeyError:
pass
value = getattr(cls, nkey)
if readonly:
return value
if not cls.__warn__ is False and not isinstance(value, COWMeta):
print("Warning: Doing a copy because %s is a mutable type." % key, file=cls.__warn__)
try:
value = value.copy()
except AttributeError as e:
value = copy.copy(value)
setattr(cls, nkey, value)
return value
__getmarker__ = []
def __getreadonly__(cls, key, default=__getmarker__):
"""
Get a value (even if mutable) which you promise not to change.
"""
return cls.__getitem__(key, default, True)
def __getitem__(cls, key, default=__getmarker__, readonly=False):
try:
try:
value = getattr(cls, key)
except AttributeError:
value = cls.__getmutable__(key, readonly)
# This is for values which have been deleted
if value is cls.__marker__:
raise AttributeError("key %s does not exist." % key)
return value
except AttributeError as e:
if not default is cls.__getmarker__:
return default
raise KeyError(str(e))
def __delitem__(cls, key):
cls.__setitem__(key, cls.__marker__)
def __revertitem__(cls, key):
if key not in cls.__dict__:
key += MUTABLE
delattr(cls, key)
def __contains__(cls, key):
return cls.has_key(key)
def has_key(cls, key):
value = cls.__getreadonly__(key, cls.__marker__)
if value is cls.__marker__:
return False
return True
def iter(cls, type, readonly=False):
for key in dir(cls):
if key.startswith("__"):
continue
if key.endswith(MUTABLE):
key = key[:-len(MUTABLE)]
if type == "keys":
yield key
try:
if readonly:
value = cls.__getreadonly__(key)
else:
value = cls[key]
except KeyError:
continue
if type == "values":
yield value
if type == "items":
yield (key, value)
return
def iterkeys(cls):
return cls.iter("keys")
def itervalues(cls, readonly=False):
if not cls.__warn__ is False and cls.__hasmutable__ and readonly is False:
print("Warning: If you aren't going to change any of the values call with True.", file=cls.__warn__)
return cls.iter("values", readonly)
def iteritems(cls, readonly=False):
if not cls.__warn__ is False and cls.__hasmutable__ and readonly is False:
print("Warning: If you aren't going to change any of the values call with True.", file=cls.__warn__)
return cls.iter("items", readonly)
class COWSetMeta(COWDictMeta):
def __str__(cls):
# FIXME: I have magic numbers!
return "<COWSet Level: %i Current Keys: %i>" % (cls.__count__, len(cls.__dict__) - 3)
__repr__ = __str__
def cow(cls):
class C(cls):
__count__ = cls.__count__ + 1
return C
def add(cls, value):
COWDictMeta.__setitem__(cls, repr(hash(value)), value)
def remove(cls, value):
COWDictMeta.__delitem__(cls, repr(hash(value)))
def __in__(cls, value):
return repr(hash(value)) in COWDictMeta
def iterkeys(cls):
raise TypeError("sets don't have keys")
def iteritems(cls):
raise TypeError("sets don't have 'items'")
# These are the actual classes you use!
class COWDictBase(metaclass=COWDictMeta):
__count__ = 0
class COWSetBase(metaclass=COWSetMeta):
__count__ = 0

229
bitbake/lib/bb/__init__.py Normal file
View File

@@ -0,0 +1,229 @@
#
# BitBake Build System Python Library
#
# Copyright (C) 2003 Holger Schurig
# Copyright (C) 2003, 2004 Chris Larson
#
# Based on Gentoo's portage.py.
#
# SPDX-License-Identifier: GPL-2.0-only
#
__version__ = "2.6.0"
import sys
if sys.version_info < (3, 8, 0):
raise RuntimeError("Sorry, python 3.8.0 or later is required for this version of bitbake")
if sys.version_info < (3, 10, 0):
# With python 3.8 and 3.9, we see errors of "libgcc_s.so.1 must be installed for pthread_cancel to work"
# https://stackoverflow.com/questions/64797838/libgcc-s-so-1-must-be-installed-for-pthread-cancel-to-work
# https://bugs.ams1.psf.io/issue42888
# so ensure libgcc_s is loaded early on
import ctypes
libgcc_s = ctypes.CDLL('libgcc_s.so.1')
class BBHandledException(Exception):
"""
The big dilemma for generic bitbake code is what information to give the user
when an exception occurs. Any exception inheriting this base exception class
has already provided information to the user via some 'fired' message type such as
an explicitly fired event using bb.fire, or a bb.error message. If bitbake
encounters an exception derived from this class, no backtrace or other information
will be given to the user, its assumed the earlier event provided the relevant information.
"""
pass
import os
import logging
class NullHandler(logging.Handler):
def emit(self, record):
pass
class BBLoggerMixin(object):
def __init__(self, *args, **kwargs):
# Does nothing to allow calling super() from derived classes
pass
def setup_bblogger(self, name):
if name.split(".")[0] == "BitBake":
self.debug = self._debug_helper
def _debug_helper(self, *args, **kwargs):
return self.bbdebug(1, *args, **kwargs)
def debug2(self, *args, **kwargs):
return self.bbdebug(2, *args, **kwargs)
def debug3(self, *args, **kwargs):
return self.bbdebug(3, *args, **kwargs)
def bbdebug(self, level, msg, *args, **kwargs):
loglevel = logging.DEBUG - level + 1
if not bb.event.worker_pid:
if self.name in bb.msg.loggerDefaultDomains and loglevel > (bb.msg.loggerDefaultDomains[self.name]):
return
if loglevel < bb.msg.loggerDefaultLogLevel:
return
if not isinstance(level, int) or not isinstance(msg, str):
mainlogger.warning("Invalid arguments in bbdebug: %s" % repr((level, msg,) + args))
return self.log(loglevel, msg, *args, **kwargs)
def plain(self, msg, *args, **kwargs):
return self.log(logging.INFO + 1, msg, *args, **kwargs)
def verbose(self, msg, *args, **kwargs):
return self.log(logging.INFO - 1, msg, *args, **kwargs)
def verbnote(self, msg, *args, **kwargs):
return self.log(logging.INFO + 2, msg, *args, **kwargs)
def warnonce(self, msg, *args, **kwargs):
return self.log(logging.WARNING - 1, msg, *args, **kwargs)
def erroronce(self, msg, *args, **kwargs):
return self.log(logging.ERROR - 1, msg, *args, **kwargs)
Logger = logging.getLoggerClass()
class BBLogger(Logger, BBLoggerMixin):
def __init__(self, name, *args, **kwargs):
self.setup_bblogger(name)
super().__init__(name, *args, **kwargs)
logging.raiseExceptions = False
logging.setLoggerClass(BBLogger)
class BBLoggerAdapter(logging.LoggerAdapter, BBLoggerMixin):
def __init__(self, logger, *args, **kwargs):
self.setup_bblogger(logger.name)
super().__init__(logger, *args, **kwargs)
if sys.version_info < (3, 6):
# These properties were added in Python 3.6. Add them in older versions
# for compatibility
@property
def manager(self):
return self.logger.manager
@manager.setter
def manager(self, value):
self.logger.manager = value
@property
def name(self):
return self.logger.name
def __repr__(self):
logger = self.logger
level = logger.getLevelName(logger.getEffectiveLevel())
return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level)
logging.LoggerAdapter = BBLoggerAdapter
logger = logging.getLogger("BitBake")
logger.addHandler(NullHandler())
logger.setLevel(logging.DEBUG - 2)
mainlogger = logging.getLogger("BitBake.Main")
class PrefixLoggerAdapter(logging.LoggerAdapter):
def __init__(self, prefix, logger):
super().__init__(logger, {})
self.__msg_prefix = prefix
def process(self, msg, kwargs):
return "%s%s" %(self.__msg_prefix, msg), kwargs
# This has to be imported after the setLoggerClass, as the import of bb.msg
# can result in construction of the various loggers.
import bb.msg
from bb import fetch2 as fetch
sys.modules['bb.fetch'] = sys.modules['bb.fetch2']
# Messaging convenience functions
def plain(*args):
mainlogger.plain(''.join(args))
def debug(lvl, *args):
if isinstance(lvl, str):
mainlogger.warning("Passed invalid debug level '%s' to bb.debug", lvl)
args = (lvl,) + args
lvl = 1
mainlogger.bbdebug(lvl, ''.join(args))
def note(*args):
mainlogger.info(''.join(args))
#
# A higher prioity note which will show on the console but isn't a warning
#
# Something is happening the user should be aware of but they probably did
# something to make it happen
#
def verbnote(*args):
mainlogger.verbnote(''.join(args))
#
# Warnings - things the user likely needs to pay attention to and fix
#
def warn(*args):
mainlogger.warning(''.join(args))
def warnonce(*args):
mainlogger.warnonce(''.join(args))
def error(*args, **kwargs):
mainlogger.error(''.join(args), extra=kwargs)
def erroronce(*args):
mainlogger.erroronce(''.join(args))
def fatal(*args, **kwargs):
mainlogger.critical(''.join(args), extra=kwargs)
raise BBHandledException()
def deprecated(func, name=None, advice=""):
"""This is a decorator which can be used to mark functions
as deprecated. It will result in a warning being emitted
when the function is used."""
import warnings
if advice:
advice = ": %s" % advice
if name is None:
name = func.__name__
def newFunc(*args, **kwargs):
warnings.warn("Call to deprecated function %s%s." % (name,
advice),
category=DeprecationWarning,
stacklevel=2)
return func(*args, **kwargs)
newFunc.__name__ = func.__name__
newFunc.__doc__ = func.__doc__
newFunc.__dict__.update(func.__dict__)
return newFunc
# For compatibility
def deprecate_import(current, modulename, fromlist, renames = None):
"""Import objects from one module into another, wrapping them with a DeprecationWarning"""
import sys
module = __import__(modulename, fromlist = fromlist)
for position, objname in enumerate(fromlist):
obj = getattr(module, objname)
newobj = deprecated(obj, "{0}.{1}".format(current, objname),
"Please use {0}.{1} instead".format(modulename, objname))
if renames:
newname = renames[position]
else:
newname = objname
setattr(sys.modules[current], newname, newobj)

215
bitbake/lib/bb/acl.py Executable file
View File

@@ -0,0 +1,215 @@
#! /usr/bin/env python3
#
# Copyright 2023 by Garmin Ltd. or its subsidiaries
#
# SPDX-License-Identifier: MIT
import sys
import ctypes
import os
import errno
import pwd
import grp
libacl = ctypes.CDLL("libacl.so.1", use_errno=True)
ACL_TYPE_ACCESS = 0x8000
ACL_TYPE_DEFAULT = 0x4000
ACL_FIRST_ENTRY = 0
ACL_NEXT_ENTRY = 1
ACL_UNDEFINED_TAG = 0x00
ACL_USER_OBJ = 0x01
ACL_USER = 0x02
ACL_GROUP_OBJ = 0x04
ACL_GROUP = 0x08
ACL_MASK = 0x10
ACL_OTHER = 0x20
ACL_READ = 0x04
ACL_WRITE = 0x02
ACL_EXECUTE = 0x01
acl_t = ctypes.c_void_p
acl_entry_t = ctypes.c_void_p
acl_permset_t = ctypes.c_void_p
acl_perm_t = ctypes.c_uint
acl_tag_t = ctypes.c_int
libacl.acl_free.argtypes = [acl_t]
def acl_free(acl):
libacl.acl_free(acl)
libacl.acl_get_file.restype = acl_t
libacl.acl_get_file.argtypes = [ctypes.c_char_p, ctypes.c_uint]
def acl_get_file(path, typ):
acl = libacl.acl_get_file(os.fsencode(path), typ)
if acl is None:
err = ctypes.get_errno()
raise OSError(err, os.strerror(err), str(path))
return acl
libacl.acl_get_entry.argtypes = [acl_t, ctypes.c_int, ctypes.c_void_p]
def acl_get_entry(acl, entry_id):
entry = acl_entry_t()
ret = libacl.acl_get_entry(acl, entry_id, ctypes.byref(entry))
if ret < 0:
err = ctypes.get_errno()
raise OSError(err, os.strerror(err))
if ret == 0:
return None
return entry
libacl.acl_get_tag_type.argtypes = [acl_entry_t, ctypes.c_void_p]
def acl_get_tag_type(entry_d):
tag = acl_tag_t()
ret = libacl.acl_get_tag_type(entry_d, ctypes.byref(tag))
if ret < 0:
err = ctypes.get_errno()
raise OSError(err, os.strerror(err))
return tag.value
libacl.acl_get_qualifier.restype = ctypes.c_void_p
libacl.acl_get_qualifier.argtypes = [acl_entry_t]
def acl_get_qualifier(entry_d):
ret = libacl.acl_get_qualifier(entry_d)
if ret is None:
err = ctypes.get_errno()
raise OSError(err, os.strerror(err))
return ctypes.c_void_p(ret)
libacl.acl_get_permset.argtypes = [acl_entry_t, ctypes.c_void_p]
def acl_get_permset(entry_d):
permset = acl_permset_t()
ret = libacl.acl_get_permset(entry_d, ctypes.byref(permset))
if ret < 0:
err = ctypes.get_errno()
raise OSError(err, os.strerror(err))
return permset
libacl.acl_get_perm.argtypes = [acl_permset_t, acl_perm_t]
def acl_get_perm(permset_d, perm):
ret = libacl.acl_get_perm(permset_d, perm)
if ret < 0:
err = ctypes.get_errno()
raise OSError(err, os.strerror(err))
return bool(ret)
class Entry(object):
def __init__(self, tag, qualifier, mode):
self.tag = tag
self.qualifier = qualifier
self.mode = mode
def __str__(self):
typ = ""
qual = ""
if self.tag == ACL_USER:
typ = "user"
qual = pwd.getpwuid(self.qualifier).pw_name
elif self.tag == ACL_GROUP:
typ = "group"
qual = grp.getgrgid(self.qualifier).gr_name
elif self.tag == ACL_USER_OBJ:
typ = "user"
elif self.tag == ACL_GROUP_OBJ:
typ = "group"
elif self.tag == ACL_MASK:
typ = "mask"
elif self.tag == ACL_OTHER:
typ = "other"
r = "r" if self.mode & ACL_READ else "-"
w = "w" if self.mode & ACL_WRITE else "-"
x = "x" if self.mode & ACL_EXECUTE else "-"
return f"{typ}:{qual}:{r}{w}{x}"
class ACL(object):
def __init__(self, acl):
self.acl = acl
def __del__(self):
acl_free(self.acl)
def entries(self):
entry_id = ACL_FIRST_ENTRY
while True:
entry = acl_get_entry(self.acl, entry_id)
if entry is None:
break
permset = acl_get_permset(entry)
mode = 0
for m in (ACL_READ, ACL_WRITE, ACL_EXECUTE):
if acl_get_perm(permset, m):
mode |= m
qualifier = None
tag = acl_get_tag_type(entry)
if tag == ACL_USER or tag == ACL_GROUP:
qual = acl_get_qualifier(entry)
qualifier = ctypes.cast(qual, ctypes.POINTER(ctypes.c_int))[0]
yield Entry(tag, qualifier, mode)
entry_id = ACL_NEXT_ENTRY
@classmethod
def from_path(cls, path, typ):
acl = acl_get_file(path, typ)
return cls(acl)
def main():
import argparse
import pwd
import grp
from pathlib import Path
parser = argparse.ArgumentParser()
parser.add_argument("path", help="File Path", type=Path)
args = parser.parse_args()
acl = ACL.from_path(args.path, ACL_TYPE_ACCESS)
for entry in acl.entries():
print(str(entry))
return 0
if __name__ == "__main__":
sys.exit(main())

View File

@@ -0,0 +1,33 @@
#
# Copyright BitBake Contributors
#
# 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, ClientError, ServerError

View File

@@ -0,0 +1,191 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
import abc
import asyncio
import json
import os
import socket
import sys
from . import chunkify, DEFAULT_MAX_CHUNK
class AsyncClient(object):
def __init__(self, proto_name, proto_version, logger, timeout=30):
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
self.timeout = timeout
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():
# AF_UNIX has path length issues so chdir here to workaround
cwd = os.getcwd()
try:
os.chdir(os.path.dirname(path))
# The socket must be opened synchronously so that CWD doesn't get
# changed out from underneath us so we pass as a sock into asyncio
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM, 0)
sock.connect(os.path.basename(path))
finally:
os.chdir(cwd)
return await asyncio.open_unix_connection(sock=sock)
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():
try:
line = await asyncio.wait_for(self.reader.readline(), self.timeout)
except asyncio.TimeoutError:
raise ConnectionError("Timed out waiting for server")
if not line:
raise ConnectionError("Connection closed")
line = line.decode("utf-8")
if not line.endswith("\n"):
raise ConnectionError("Bad message %r" % (line))
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': {}}
)
async def __aenter__(self):
return self
async def __aexit__(self, exc_type, exc_value, traceback):
await self.close()
class Client(object):
def __init__(self):
self.client = self._get_async_client()
self.loop = asyncio.new_event_loop()
# Override any pre-existing loop.
# Without this, the PR server export selftest triggers a hang
# when running with Python 3.7. The drawback is that there is
# potential for issues if the PR and hash equiv (or some new)
# clients need to both be instantiated in the same process.
# This should be revisited if/when Python 3.9 becomes the
# minimum required version for BitBake, as it seems not
# required (but harmless) with it.
asyncio.set_event_loop(self.loop)
self._add_methods('connect_tcp', '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):
self.loop.run_until_complete(self.client.connect_unix(path))
self.loop.run_until_complete(self.client.connect())
@property
def max_chunk(self):
return self.client.max_chunk
@max_chunk.setter
def max_chunk(self, value):
self.client.max_chunk = value
def close(self):
self.loop.run_until_complete(self.client.close())
if sys.version_info >= (3, 6):
self.loop.run_until_complete(self.loop.shutdown_asyncgens())
self.loop.close()
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
self.close()
return False

View File

@@ -0,0 +1,295 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
import abc
import asyncio
import json
import os
import signal
import socket
import sys
import multiprocessing
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 not client_protocol:
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 not line:
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):
self._cleanup_socket = None
self.logger = logger
self.start = None
self.address = None
self.loop = None
def start_tcp_server(self, host, port):
def start_tcp():
self.server = self.loop.run_until_complete(
asyncio.start_server(self.handle_client, host, port)
)
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)
# Enable keep alives. This prevents broken client connections
# from persisting on the server for long periods of time.
s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 30)
s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 15)
s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 4)
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])
self.start = start_tcp
def start_unix_server(self, path):
def cleanup():
os.unlink(path)
def start_unix():
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))
)
finally:
os.chdir(cwd)
self.logger.debug('Listening on %r' % path)
self._cleanup_socket = cleanup
self.address = "unix://%s" % os.path.abspath(path)
self.start = start_unix
@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.logger.debug("Got exit signal")
self.loop.stop()
def _serve_forever(self):
try:
self.loop.add_signal_handler(signal.SIGTERM, self.signal_handler)
signal.pthread_sigmask(signal.SIG_UNBLOCK, [signal.SIGTERM])
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._cleanup_socket is not None:
self._cleanup_socket()
def serve_forever(self):
"""
Serve requests in the current process
"""
# Create loop and override any loop that may have existed in
# a parent process. It is possible that the usecases of
# serve_forever might be constrained enough to allow using
# get_event_loop here, but better safe than sorry for now.
self.loop = asyncio.new_event_loop()
asyncio.set_event_loop(self.loop)
self.start()
self._serve_forever()
def serve_as_process(self, *, prefunc=None, args=()):
"""
Serve requests in a child process
"""
def run(queue):
# Create loop and override any loop that may have existed
# in a parent process. Without doing this and instead
# using get_event_loop, at the very minimum the hashserv
# unit tests will hang when running the second test.
# This happens since get_event_loop in the spawned server
# process for the second testcase ends up with the loop
# from the hashserv client created in the unit test process
# when running the first testcase. The problem is somewhat
# more general, though, as any potential use of asyncio in
# Cooker could create a loop that needs to replaced in this
# new process.
self.loop = asyncio.new_event_loop()
asyncio.set_event_loop(self.loop)
try:
self.start()
finally:
queue.put(self.address)
queue.close()
if prefunc is not None:
prefunc(self, *args)
self._serve_forever()
if sys.version_info >= (3, 6):
self.loop.run_until_complete(self.loop.shutdown_asyncgens())
self.loop.close()
queue = multiprocessing.Queue()
# Temporarily block SIGTERM. The server process will inherit this
# block which will ensure it doesn't receive the SIGTERM until the
# handler is ready for it
mask = signal.pthread_sigmask(signal.SIG_BLOCK, [signal.SIGTERM])
try:
self.process = multiprocessing.Process(target=run, args=(queue,))
self.process.start()
self.address = queue.get()
queue.close()
queue.join_thread()
return self.process
finally:
signal.pthread_sigmask(signal.SIG_SETMASK, mask)

1023
bitbake/lib/bb/build.py Normal file

File diff suppressed because it is too large Load Diff

999
bitbake/lib/bb/cache.py Normal file
View File

@@ -0,0 +1,999 @@
#
# BitBake Cache implementation
#
# Caching of bitbake variables before task execution
# Copyright (C) 2006 Richard Purdie
# Copyright (C) 2012 Intel Corporation
# but small sections based on code from bin/bitbake:
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
#
# SPDX-License-Identifier: GPL-2.0-only
#
import os
import logging
import pickle
from collections import defaultdict
from collections.abc import Mapping
import bb.utils
from bb import PrefixLoggerAdapter
import re
import shutil
logger = logging.getLogger("BitBake.Cache")
__cache_version__ = "155"
def getCacheFile(path, filename, mc, data_hash):
mcspec = ''
if mc:
mcspec = ".%s" % mc
return os.path.join(path, filename + mcspec + "." + data_hash)
# RecipeInfoCommon defines common data retrieving methods
# from meta data for caches. CoreRecipeInfo as well as other
# Extra RecipeInfo needs to inherit this class
class RecipeInfoCommon(object):
@classmethod
def listvar(cls, var, metadata):
return cls.getvar(var, metadata).split()
@classmethod
def intvar(cls, var, metadata):
return int(cls.getvar(var, metadata) or 0)
@classmethod
def depvar(cls, var, metadata):
return bb.utils.explode_deps(cls.getvar(var, metadata))
@classmethod
def pkgvar(cls, var, packages, metadata):
return dict((pkg, cls.depvar("%s:%s" % (var, pkg), metadata))
for pkg in packages)
@classmethod
def taskvar(cls, var, tasks, metadata):
return dict((task, cls.getvar("%s:task-%s" % (var, task), metadata))
for task in tasks)
@classmethod
def flaglist(cls, flag, varlist, metadata, squash=False):
out_dict = dict((var, metadata.getVarFlag(var, flag))
for var in varlist)
if squash:
return dict((k,v) for (k,v) in out_dict.items() if v)
else:
return out_dict
@classmethod
def getvar(cls, var, metadata, expand = True):
return metadata.getVar(var, expand) or ''
class CoreRecipeInfo(RecipeInfoCommon):
__slots__ = ()
cachefile = "bb_cache.dat"
def __init__(self, filename, metadata):
self.file_depends = metadata.getVar('__depends', False)
self.timestamp = bb.parse.cached_mtime(filename)
self.variants = self.listvar('__VARIANTS', metadata) + ['']
self.appends = self.listvar('__BBAPPEND', metadata)
self.nocache = self.getvar('BB_DONT_CACHE', metadata)
self.provides = self.depvar('PROVIDES', metadata)
self.rprovides = self.depvar('RPROVIDES', metadata)
self.pn = self.getvar('PN', metadata) or bb.parse.vars_from_file(filename,metadata)[0]
self.packages = self.listvar('PACKAGES', metadata)
if not self.packages:
self.packages.append(self.pn)
self.packages_dynamic = self.listvar('PACKAGES_DYNAMIC', metadata)
self.rprovides_pkg = self.pkgvar('RPROVIDES', self.packages, metadata)
self.skipreason = self.getvar('__SKIPPED', metadata)
if self.skipreason:
self.skipped = True
return
self.tasks = metadata.getVar('__BBTASKS', False)
self.basetaskhashes = metadata.getVar('__siggen_basehashes', False) or {}
self.hashfilename = self.getvar('BB_HASHFILENAME', metadata)
self.task_deps = metadata.getVar('_task_deps', False) or {'tasks': [], 'parents': {}}
self.skipped = False
self.pe = self.getvar('PE', metadata)
self.pv = self.getvar('PV', metadata)
self.pr = self.getvar('PR', metadata)
self.defaultpref = self.intvar('DEFAULT_PREFERENCE', metadata)
self.not_world = self.getvar('EXCLUDE_FROM_WORLD', metadata)
self.stamp = self.getvar('STAMP', metadata)
self.stampclean = self.getvar('STAMPCLEAN', metadata)
self.stamp_extrainfo = self.flaglist('stamp-extra-info', self.tasks, metadata)
self.file_checksums = self.flaglist('file-checksums', self.tasks, metadata, True)
self.depends = self.depvar('DEPENDS', metadata)
self.rdepends = self.depvar('RDEPENDS', metadata)
self.rrecommends = self.depvar('RRECOMMENDS', metadata)
self.rdepends_pkg = self.pkgvar('RDEPENDS', self.packages, metadata)
self.rrecommends_pkg = self.pkgvar('RRECOMMENDS', self.packages, metadata)
self.inherits = self.getvar('__inherit_cache', metadata, expand=False)
self.fakerootenv = self.getvar('FAKEROOTENV', metadata)
self.fakerootdirs = self.getvar('FAKEROOTDIRS', metadata)
self.fakerootlogs = self.getvar('FAKEROOTLOGS', metadata)
self.fakerootnoenv = self.getvar('FAKEROOTNOENV', metadata)
self.extradepsfunc = self.getvar('calculate_extra_depends', metadata)
@classmethod
def init_cacheData(cls, cachedata):
# CacheData in Core RecipeInfo Class
cachedata.task_deps = {}
cachedata.pkg_fn = {}
cachedata.pkg_pn = defaultdict(list)
cachedata.pkg_pepvpr = {}
cachedata.pkg_dp = {}
cachedata.stamp = {}
cachedata.stampclean = {}
cachedata.stamp_extrainfo = {}
cachedata.file_checksums = {}
cachedata.fn_provides = {}
cachedata.pn_provides = defaultdict(list)
cachedata.all_depends = []
cachedata.deps = defaultdict(list)
cachedata.packages = defaultdict(list)
cachedata.providers = defaultdict(list)
cachedata.rproviders = defaultdict(list)
cachedata.packages_dynamic = defaultdict(list)
cachedata.rundeps = defaultdict(lambda: defaultdict(list))
cachedata.runrecs = defaultdict(lambda: defaultdict(list))
cachedata.possible_world = []
cachedata.universe_target = []
cachedata.hashfn = {}
cachedata.basetaskhash = {}
cachedata.inherits = {}
cachedata.fakerootenv = {}
cachedata.fakerootnoenv = {}
cachedata.fakerootdirs = {}
cachedata.fakerootlogs = {}
cachedata.extradepsfunc = {}
def add_cacheData(self, cachedata, fn):
cachedata.task_deps[fn] = self.task_deps
cachedata.pkg_fn[fn] = self.pn
cachedata.pkg_pn[self.pn].append(fn)
cachedata.pkg_pepvpr[fn] = (self.pe, self.pv, self.pr)
cachedata.pkg_dp[fn] = self.defaultpref
cachedata.stamp[fn] = self.stamp
cachedata.stampclean[fn] = self.stampclean
cachedata.stamp_extrainfo[fn] = self.stamp_extrainfo
cachedata.file_checksums[fn] = self.file_checksums
provides = [self.pn]
for provide in self.provides:
if provide not in provides:
provides.append(provide)
cachedata.fn_provides[fn] = provides
for provide in provides:
cachedata.providers[provide].append(fn)
if provide not in cachedata.pn_provides[self.pn]:
cachedata.pn_provides[self.pn].append(provide)
for dep in self.depends:
if dep not in cachedata.deps[fn]:
cachedata.deps[fn].append(dep)
if dep not in cachedata.all_depends:
cachedata.all_depends.append(dep)
rprovides = self.rprovides
for package in self.packages:
cachedata.packages[package].append(fn)
rprovides += self.rprovides_pkg[package]
for rprovide in rprovides:
if fn not in cachedata.rproviders[rprovide]:
cachedata.rproviders[rprovide].append(fn)
for package in self.packages_dynamic:
cachedata.packages_dynamic[package].append(fn)
# Build hash of runtime depends and recommends
for package in self.packages:
cachedata.rundeps[fn][package] = list(self.rdepends) + self.rdepends_pkg[package]
cachedata.runrecs[fn][package] = list(self.rrecommends) + self.rrecommends_pkg[package]
# Collect files we may need for possible world-dep
# calculations
if not bb.utils.to_boolean(self.not_world):
cachedata.possible_world.append(fn)
#else:
# logger.debug2("EXCLUDE FROM WORLD: %s", fn)
# create a collection of all targets for sanity checking
# tasks, such as upstream versions, license, and tools for
# task and image creation.
cachedata.universe_target.append(self.pn)
cachedata.hashfn[fn] = self.hashfilename
for task, taskhash in self.basetaskhashes.items():
identifier = '%s:%s' % (fn, task)
cachedata.basetaskhash[identifier] = taskhash
cachedata.inherits[fn] = self.inherits
cachedata.fakerootenv[fn] = self.fakerootenv
cachedata.fakerootnoenv[fn] = self.fakerootnoenv
cachedata.fakerootdirs[fn] = self.fakerootdirs
cachedata.fakerootlogs[fn] = self.fakerootlogs
cachedata.extradepsfunc[fn] = self.extradepsfunc
class SiggenRecipeInfo(RecipeInfoCommon):
__slots__ = ()
classname = "SiggenRecipeInfo"
cachefile = "bb_cache_" + classname +".dat"
# we don't want to show this information in graph files so don't set cachefields
#cachefields = []
def __init__(self, filename, metadata):
self.siggen_gendeps = metadata.getVar("__siggen_gendeps", False)
self.siggen_varvals = metadata.getVar("__siggen_varvals", False)
self.siggen_taskdeps = metadata.getVar("__siggen_taskdeps", False)
@classmethod
def init_cacheData(cls, cachedata):
cachedata.siggen_taskdeps = {}
cachedata.siggen_gendeps = {}
cachedata.siggen_varvals = {}
def add_cacheData(self, cachedata, fn):
cachedata.siggen_gendeps[fn] = self.siggen_gendeps
cachedata.siggen_varvals[fn] = self.siggen_varvals
cachedata.siggen_taskdeps[fn] = self.siggen_taskdeps
# The siggen variable data is large and impacts:
# - bitbake's overall memory usage
# - the amount of data sent over IPC between parsing processes and the server
# - the size of the cache files on disk
# - the size of "sigdata" hash information files on disk
# The data consists of strings (some large) or frozenset lists of variables
# As such, we a) deplicate the data here and b) pass references to the object at second
# access (e.g. over IPC or saving into pickle).
store = {}
save_map = {}
save_count = 1
restore_map = {}
restore_count = {}
@classmethod
def reset(cls):
# Needs to be called before starting new streamed data in a given process
# (e.g. writing out the cache again)
cls.save_map = {}
cls.save_count = 1
cls.restore_map = {}
@classmethod
def _save(cls, deps):
ret = []
if not deps:
return deps
for dep in deps:
fs = deps[dep]
if fs is None:
ret.append((dep, None, None))
elif fs in cls.save_map:
ret.append((dep, None, cls.save_map[fs]))
else:
cls.save_map[fs] = cls.save_count
ret.append((dep, fs, cls.save_count))
cls.save_count = cls.save_count + 1
return ret
@classmethod
def _restore(cls, deps, pid):
ret = {}
if not deps:
return deps
if pid not in cls.restore_map:
cls.restore_map[pid] = {}
map = cls.restore_map[pid]
for dep, fs, mapnum in deps:
if fs is None and mapnum is None:
ret[dep] = None
elif fs is None:
ret[dep] = map[mapnum]
else:
try:
fs = cls.store[fs]
except KeyError:
cls.store[fs] = fs
map[mapnum] = fs
ret[dep] = fs
return ret
def __getstate__(self):
ret = {}
for key in ["siggen_gendeps", "siggen_taskdeps", "siggen_varvals"]:
ret[key] = self._save(self.__dict__[key])
ret['pid'] = os.getpid()
return ret
def __setstate__(self, state):
pid = state['pid']
for key in ["siggen_gendeps", "siggen_taskdeps", "siggen_varvals"]:
setattr(self, key, self._restore(state[key], pid))
def virtualfn2realfn(virtualfn):
"""
Convert a virtual file name to a real one + the associated subclass keyword
"""
mc = ""
if virtualfn.startswith('mc:') and virtualfn.count(':') >= 2:
elems = virtualfn.split(':')
mc = elems[1]
virtualfn = ":".join(elems[2:])
fn = virtualfn
cls = ""
if virtualfn.startswith('virtual:'):
elems = virtualfn.split(':')
cls = ":".join(elems[1:-1])
fn = elems[-1]
return (fn, cls, mc)
def realfn2virtual(realfn, cls, mc):
"""
Convert a real filename + the associated subclass keyword to a virtual filename
"""
if cls:
realfn = "virtual:" + cls + ":" + realfn
if mc:
realfn = "mc:" + mc + ":" + realfn
return realfn
def variant2virtual(realfn, variant):
"""
Convert a real filename + the associated subclass keyword to a virtual filename
"""
if variant == "":
return realfn
if variant.startswith("mc:") and variant.count(':') >= 2:
elems = variant.split(":")
if elems[2]:
return "mc:" + elems[1] + ":virtual:" + ":".join(elems[2:]) + ":" + realfn
return "mc:" + elems[1] + ":" + realfn
return "virtual:" + variant + ":" + realfn
#
# Cooker calls cacheValid on its recipe list, then either calls loadCached
# from it's main thread or parse from separate processes to generate an up to
# date cache
#
class Cache(object):
"""
BitBake Cache implementation
"""
def __init__(self, databuilder, mc, data_hash, caches_array):
self.databuilder = databuilder
self.data = databuilder.data
# Pass caches_array information into Cache Constructor
# It will be used later for deciding whether we
# need extra cache file dump/load support
self.mc = mc
self.logger = PrefixLoggerAdapter("Cache: %s: " % (mc if mc else "default"), logger)
self.caches_array = caches_array
self.cachedir = self.data.getVar("CACHE")
self.clean = set()
self.checked = set()
self.depends_cache = {}
self.data_fn = None
self.cacheclean = True
self.data_hash = data_hash
self.filelist_regex = re.compile(r'(?:(?<=:True)|(?<=:False))\s+')
if self.cachedir in [None, '']:
bb.fatal("Please ensure CACHE is set to the cache directory for BitBake to use")
def getCacheFile(self, cachefile):
return getCacheFile(self.cachedir, cachefile, self.mc, self.data_hash)
def prepare_cache(self, progress):
loaded = 0
self.cachefile = self.getCacheFile("bb_cache.dat")
self.logger.debug("Cache dir: %s", self.cachedir)
bb.utils.mkdirhier(self.cachedir)
cache_ok = True
if self.caches_array:
for cache_class in self.caches_array:
cachefile = self.getCacheFile(cache_class.cachefile)
cache_exists = os.path.exists(cachefile)
self.logger.debug2("Checking if %s exists: %r", cachefile, cache_exists)
cache_ok = cache_ok and cache_exists
cache_class.init_cacheData(self)
if cache_ok:
loaded = self.load_cachefile(progress)
elif os.path.isfile(self.cachefile):
self.logger.info("Out of date cache found, rebuilding...")
else:
self.logger.debug("Cache file %s not found, building..." % self.cachefile)
# We don't use the symlink, its just for debugging convinience
if self.mc:
symlink = os.path.join(self.cachedir, "bb_cache.dat.%s" % self.mc)
else:
symlink = os.path.join(self.cachedir, "bb_cache.dat")
if os.path.exists(symlink):
bb.utils.remove(symlink)
try:
os.symlink(os.path.basename(self.cachefile), symlink)
except OSError:
pass
return loaded
def cachesize(self):
cachesize = 0
for cache_class in self.caches_array:
cachefile = self.getCacheFile(cache_class.cachefile)
try:
with open(cachefile, "rb") as cachefile:
cachesize += os.fstat(cachefile.fileno()).st_size
except FileNotFoundError:
pass
return cachesize
def load_cachefile(self, progress):
previous_progress = 0
for cache_class in self.caches_array:
cachefile = self.getCacheFile(cache_class.cachefile)
self.logger.debug('Loading cache file: %s' % cachefile)
with open(cachefile, "rb") as cachefile:
pickled = pickle.Unpickler(cachefile)
# Check cache version information
try:
cache_ver = pickled.load()
bitbake_ver = pickled.load()
except Exception:
self.logger.info('Invalid cache, rebuilding...')
return 0
if cache_ver != __cache_version__:
self.logger.info('Cache version mismatch, rebuilding...')
return 0
elif bitbake_ver != bb.__version__:
self.logger.info('Bitbake version mismatch, rebuilding...')
return 0
# Load the rest of the cache file
current_progress = 0
while cachefile:
try:
key = pickled.load()
value = pickled.load()
except Exception:
break
if not isinstance(key, str):
bb.warn("%s from extras cache is not a string?" % key)
break
if not isinstance(value, RecipeInfoCommon):
bb.warn("%s from extras cache is not a RecipeInfoCommon class?" % value)
break
if key in self.depends_cache:
self.depends_cache[key].append(value)
else:
self.depends_cache[key] = [value]
# only fire events on even percentage boundaries
current_progress = cachefile.tell() + previous_progress
progress(cachefile.tell() + previous_progress)
previous_progress += current_progress
return len(self.depends_cache)
def parse(self, filename, appends, layername):
"""Parse the specified filename, returning the recipe information"""
self.logger.debug("Parsing %s", filename)
infos = []
datastores = self.databuilder.parseRecipeVariants(filename, appends, mc=self.mc, layername=layername)
depends = []
variants = []
# Process the "real" fn last so we can store variants list
for variant, data in sorted(datastores.items(),
key=lambda i: i[0],
reverse=True):
virtualfn = variant2virtual(filename, variant)
variants.append(variant)
depends = depends + (data.getVar("__depends", False) or [])
if depends and not variant:
data.setVar("__depends", depends)
if virtualfn == filename:
data.setVar("__VARIANTS", " ".join(variants))
info_array = []
for cache_class in self.caches_array:
info = cache_class(filename, data)
info_array.append(info)
infos.append((virtualfn, info_array))
return infos
def loadCached(self, filename, appends):
"""Obtain the recipe information for the specified filename,
using cached values.
"""
infos = []
# info_array item is a list of [CoreRecipeInfo, XXXRecipeInfo]
info_array = self.depends_cache[filename]
for variant in info_array[0].variants:
virtualfn = variant2virtual(filename, variant)
infos.append((virtualfn, self.depends_cache[virtualfn]))
return infos
def cacheValid(self, fn, appends):
"""
Is the cache valid for fn?
Fast version, no timestamps checked.
"""
if fn not in self.checked:
self.cacheValidUpdate(fn, appends)
if fn in self.clean:
return True
return False
def cacheValidUpdate(self, fn, appends):
"""
Is the cache valid for fn?
Make thorough (slower) checks including timestamps.
"""
self.checked.add(fn)
# File isn't in depends_cache
if not fn in self.depends_cache:
self.logger.debug2("%s is not cached", fn)
return False
mtime = bb.parse.cached_mtime_noerror(fn)
# Check file still exists
if mtime == 0:
self.logger.debug2("%s no longer exists", fn)
self.remove(fn)
return False
info_array = self.depends_cache[fn]
# Check the file's timestamp
if mtime != info_array[0].timestamp:
self.logger.debug2("%s changed", fn)
self.remove(fn)
return False
# Check dependencies are still valid
depends = info_array[0].file_depends
if depends:
for f, old_mtime in depends:
fmtime = bb.parse.cached_mtime_noerror(f)
# Check if file still exists
if old_mtime != 0 and fmtime == 0:
self.logger.debug2("%s's dependency %s was removed",
fn, f)
self.remove(fn)
return False
if (fmtime != old_mtime):
self.logger.debug2("%s's dependency %s changed",
fn, f)
self.remove(fn)
return False
if hasattr(info_array[0], 'file_checksums'):
for _, fl in info_array[0].file_checksums.items():
fl = fl.strip()
if not fl:
continue
# Have to be careful about spaces and colons in filenames
flist = self.filelist_regex.split(fl)
for f in flist:
if not f:
continue
f, exist = f.rsplit(":", 1)
if (exist == "True" and not os.path.exists(f)) or (exist == "False" and os.path.exists(f)):
self.logger.debug2("%s's file checksum list file %s changed",
fn, f)
self.remove(fn)
return False
if tuple(appends) != tuple(info_array[0].appends):
self.logger.debug2("appends for %s changed", fn)
self.logger.debug2("%s to %s" % (str(appends), str(info_array[0].appends)))
self.remove(fn)
return False
invalid = False
for cls in info_array[0].variants:
virtualfn = variant2virtual(fn, cls)
self.clean.add(virtualfn)
if virtualfn not in self.depends_cache:
self.logger.debug2("%s is not cached", virtualfn)
invalid = True
elif len(self.depends_cache[virtualfn]) != len(self.caches_array):
self.logger.debug2("Extra caches missing for %s?" % virtualfn)
invalid = True
# If any one of the variants is not present, mark as invalid for all
if invalid:
for cls in info_array[0].variants:
virtualfn = variant2virtual(fn, cls)
if virtualfn in self.clean:
self.logger.debug2("Removing %s from cache", virtualfn)
self.clean.remove(virtualfn)
if fn in self.clean:
self.logger.debug2("Marking %s as not clean", fn)
self.clean.remove(fn)
return False
self.clean.add(fn)
return True
def remove(self, fn):
"""
Remove a fn from the cache
Called from the parser in error cases
"""
if fn in self.depends_cache:
self.logger.debug("Removing %s from cache", fn)
del self.depends_cache[fn]
if fn in self.clean:
self.logger.debug("Marking %s as unclean", fn)
self.clean.remove(fn)
def sync(self):
"""
Save the cache
Called from the parser when complete (or exiting)
"""
if self.cacheclean:
self.logger.debug2("Cache is clean, not saving.")
return
for cache_class in self.caches_array:
cache_class_name = cache_class.__name__
cachefile = self.getCacheFile(cache_class.cachefile)
self.logger.debug2("Writing %s", cachefile)
with open(cachefile, "wb") as f:
p = pickle.Pickler(f, pickle.HIGHEST_PROTOCOL)
p.dump(__cache_version__)
p.dump(bb.__version__)
for key, info_array in self.depends_cache.items():
for info in info_array:
if isinstance(info, RecipeInfoCommon) and info.__class__.__name__ == cache_class_name:
p.dump(key)
p.dump(info)
del self.depends_cache
SiggenRecipeInfo.reset()
@staticmethod
def mtime(cachefile):
return bb.parse.cached_mtime_noerror(cachefile)
def add_info(self, filename, info_array, cacheData, parsed=None, watcher=None):
if self.mc is not None:
(fn, cls, mc) = virtualfn2realfn(filename)
if mc:
self.logger.error("Unexpected multiconfig %s", filename)
return
vfn = realfn2virtual(fn, cls, self.mc)
else:
vfn = filename
if isinstance(info_array[0], CoreRecipeInfo) and (not info_array[0].skipped):
cacheData.add_from_recipeinfo(vfn, info_array)
if watcher:
watcher(info_array[0].file_depends)
if (info_array[0].skipped or 'SRCREVINACTION' not in info_array[0].pv) and not info_array[0].nocache:
if parsed:
self.cacheclean = False
self.depends_cache[filename] = info_array
class MulticonfigCache(Mapping):
def __init__(self, databuilder, data_hash, caches_array):
def progress(p):
nonlocal current_progress
nonlocal previous_progress
nonlocal previous_percent
nonlocal cachesize
current_progress = previous_progress + p
if current_progress > cachesize:
# we might have calculated incorrect total size because a file
# might've been written out just after we checked its size
cachesize = current_progress
current_percent = 100 * current_progress / cachesize
if current_percent > previous_percent:
previous_percent = current_percent
bb.event.fire(bb.event.CacheLoadProgress(current_progress, cachesize),
databuilder.data)
cachesize = 0
current_progress = 0
previous_progress = 0
previous_percent = 0
self.__caches = {}
for mc, mcdata in databuilder.mcdata.items():
self.__caches[mc] = Cache(databuilder, mc, data_hash, caches_array)
cachesize += self.__caches[mc].cachesize()
bb.event.fire(bb.event.CacheLoadStarted(cachesize), databuilder.data)
loaded = 0
for c in self.__caches.values():
SiggenRecipeInfo.reset()
loaded += c.prepare_cache(progress)
previous_progress = current_progress
# Note: depends cache number is corresponding to the parsing file numbers.
# The same file has several caches, still regarded as one item in the cache
bb.event.fire(bb.event.CacheLoadCompleted(cachesize, loaded), databuilder.data)
def __len__(self):
return len(self.__caches)
def __getitem__(self, key):
return self.__caches[key]
def __contains__(self, key):
return key in self.__caches
def __iter__(self):
for k in self.__caches:
yield k
def init(cooker):
"""
The Objective: Cache the minimum amount of data possible yet get to the
stage of building packages (i.e. tryBuild) without reparsing any .bb files.
To do this, we intercept getVar calls and only cache the variables we see
being accessed. We rely on the cache getVar calls being made for all
variables bitbake might need to use to reach this stage. For each cached
file we need to track:
* Its mtime
* The mtimes of all its dependencies
* Whether it caused a parse.SkipRecipe exception
Files causing parsing errors are evicted from the cache.
"""
return Cache(cooker.configuration.data, cooker.configuration.data_hash)
class CacheData(object):
"""
The data structures we compile from the cached data
"""
def __init__(self, caches_array):
self.caches_array = caches_array
for cache_class in self.caches_array:
if not issubclass(cache_class, RecipeInfoCommon):
bb.error("Extra cache data class %s should subclass RecipeInfoCommon class" % cache_class)
cache_class.init_cacheData(self)
# Direct cache variables
self.task_queues = {}
self.preferred = {}
self.tasks = {}
# Indirect Cache variables (set elsewhere)
self.ignored_dependencies = []
self.world_target = set()
self.bbfile_priority = {}
def add_from_recipeinfo(self, fn, info_array):
for info in info_array:
info.add_cacheData(self, fn)
class MultiProcessCache(object):
"""
BitBake multi-process cache implementation
Used by the codeparser & file checksum caches
"""
def __init__(self):
self.cachefile = None
self.cachedata = self.create_cachedata()
self.cachedata_extras = self.create_cachedata()
def init_cache(self, cachedir, cache_file_name=None):
if not cachedir:
return
bb.utils.mkdirhier(cachedir)
self.cachefile = os.path.join(cachedir,
cache_file_name or self.__class__.cache_file_name)
logger.debug("Using cache in '%s'", self.cachefile)
glf = bb.utils.lockfile(self.cachefile + ".lock")
try:
with open(self.cachefile, "rb") as f:
p = pickle.Unpickler(f)
data, version = p.load()
except:
bb.utils.unlockfile(glf)
return
bb.utils.unlockfile(glf)
if version != self.__class__.CACHE_VERSION:
return
self.cachedata = data
def create_cachedata(self):
data = [{}]
return data
def save_extras(self):
if not self.cachefile:
return
have_data = any(self.cachedata_extras)
if not have_data:
return
glf = bb.utils.lockfile(self.cachefile + ".lock", shared=True)
i = os.getpid()
lf = None
while not lf:
lf = bb.utils.lockfile(self.cachefile + ".lock." + str(i), retry=False)
if not lf or os.path.exists(self.cachefile + "-" + str(i)):
if lf:
bb.utils.unlockfile(lf)
lf = None
i = i + 1
continue
with open(self.cachefile + "-" + str(i), "wb") as f:
p = pickle.Pickler(f, -1)
p.dump([self.cachedata_extras, self.__class__.CACHE_VERSION])
bb.utils.unlockfile(lf)
bb.utils.unlockfile(glf)
def merge_data(self, source, dest):
for j in range(0,len(dest)):
for h in source[j]:
if h not in dest[j]:
dest[j][h] = source[j][h]
def save_merge(self):
if not self.cachefile:
return
glf = bb.utils.lockfile(self.cachefile + ".lock")
data = self.cachedata
have_data = False
for f in [y for y in os.listdir(os.path.dirname(self.cachefile)) if y.startswith(os.path.basename(self.cachefile) + '-')]:
f = os.path.join(os.path.dirname(self.cachefile), f)
try:
with open(f, "rb") as fd:
p = pickle.Unpickler(fd)
extradata, version = p.load()
except (IOError, EOFError):
os.unlink(f)
continue
if version != self.__class__.CACHE_VERSION:
os.unlink(f)
continue
have_data = True
self.merge_data(extradata, data)
os.unlink(f)
if have_data:
with open(self.cachefile, "wb") as f:
p = pickle.Pickler(f, -1)
p.dump([data, self.__class__.CACHE_VERSION])
bb.utils.unlockfile(glf)
class SimpleCache(object):
"""
BitBake multi-process cache implementation
Used by the codeparser & file checksum caches
"""
def __init__(self, version):
self.cachefile = None
self.cachedata = None
self.cacheversion = version
def init_cache(self, d, cache_file_name=None, defaultdata=None):
cachedir = (d.getVar("PERSISTENT_DIR") or
d.getVar("CACHE"))
if not cachedir:
return defaultdata
bb.utils.mkdirhier(cachedir)
self.cachefile = os.path.join(cachedir,
cache_file_name or self.__class__.cache_file_name)
logger.debug("Using cache in '%s'", self.cachefile)
glf = bb.utils.lockfile(self.cachefile + ".lock")
try:
with open(self.cachefile, "rb") as f:
p = pickle.Unpickler(f)
data, version = p.load()
except:
bb.utils.unlockfile(glf)
return defaultdata
bb.utils.unlockfile(glf)
if version != self.cacheversion:
return defaultdata
return data
def save(self, data):
if not self.cachefile:
return
glf = bb.utils.lockfile(self.cachefile + ".lock")
with open(self.cachefile, "wb") as f:
p = pickle.Pickler(f, -1)
p.dump([data, self.cacheversion])
bb.utils.unlockfile(glf)
def copyfile(self, target):
if not self.cachefile:
return
glf = bb.utils.lockfile(self.cachefile + ".lock")
shutil.copy(self.cachefile, target)
bb.utils.unlockfile(glf)

View File

@@ -0,0 +1,63 @@
#
# Extra RecipeInfo will be all defined in this file. Currently,
# Only Hob (Image Creator) Requests some extra fields. So
# HobRecipeInfo is defined. It's named HobRecipeInfo because it
# is introduced by 'hob'. Users could also introduce other
# RecipeInfo or simply use those already defined RecipeInfo.
# In the following patch, this newly defined new extra RecipeInfo
# will be dynamically loaded and used for loading/saving the extra
# cache fields
# Copyright (C) 2011, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: GPL-2.0-only
#
from bb.cache import RecipeInfoCommon
class HobRecipeInfo(RecipeInfoCommon):
__slots__ = ()
classname = "HobRecipeInfo"
# please override this member with the correct data cache file
# such as (bb_cache.dat, bb_extracache_hob.dat)
cachefile = "bb_extracache_" + classname +".dat"
# override this member with the list of extra cache fields
# that this class will provide
cachefields = ['summary', 'license', 'section',
'description', 'homepage', 'bugtracker',
'prevision', 'files_info']
def __init__(self, filename, metadata):
self.summary = self.getvar('SUMMARY', metadata)
self.license = self.getvar('LICENSE', metadata)
self.section = self.getvar('SECTION', metadata)
self.description = self.getvar('DESCRIPTION', metadata)
self.homepage = self.getvar('HOMEPAGE', metadata)
self.bugtracker = self.getvar('BUGTRACKER', metadata)
self.prevision = self.getvar('PR', metadata)
self.files_info = self.getvar('FILES_INFO', metadata)
@classmethod
def init_cacheData(cls, cachedata):
# CacheData in Hob RecipeInfo Class
cachedata.summary = {}
cachedata.license = {}
cachedata.section = {}
cachedata.description = {}
cachedata.homepage = {}
cachedata.bugtracker = {}
cachedata.prevision = {}
cachedata.files_info = {}
def add_cacheData(self, cachedata, fn):
cachedata.summary[fn] = self.summary
cachedata.license[fn] = self.license
cachedata.section[fn] = self.section
cachedata.description[fn] = self.description
cachedata.homepage[fn] = self.homepage
cachedata.bugtracker[fn] = self.bugtracker
cachedata.prevision[fn] = self.prevision
cachedata.files_info[fn] = self.files_info

144
bitbake/lib/bb/checksum.py Normal file
View File

@@ -0,0 +1,144 @@
# Local file checksum cache implementation
#
# Copyright (C) 2012 Intel Corporation
#
# SPDX-License-Identifier: GPL-2.0-only
#
import glob
import operator
import os
import stat
import bb.utils
import logging
import re
from bb.cache import MultiProcessCache
logger = logging.getLogger("BitBake.Cache")
filelist_regex = re.compile(r'(?:(?<=:True)|(?<=:False))\s+')
# mtime cache (non-persistent)
# based upon the assumption that files do not change during bitbake run
class FileMtimeCache(object):
cache = {}
def cached_mtime(self, f):
if f not in self.cache:
self.cache[f] = os.stat(f)[stat.ST_MTIME]
return self.cache[f]
def cached_mtime_noerror(self, f):
if f not in self.cache:
try:
self.cache[f] = os.stat(f)[stat.ST_MTIME]
except OSError:
return 0
return self.cache[f]
def update_mtime(self, f):
self.cache[f] = os.stat(f)[stat.ST_MTIME]
return self.cache[f]
def clear(self):
self.cache.clear()
# Checksum + mtime cache (persistent)
class FileChecksumCache(MultiProcessCache):
cache_file_name = "local_file_checksum_cache.dat"
CACHE_VERSION = 1
def __init__(self):
self.mtime_cache = FileMtimeCache()
MultiProcessCache.__init__(self)
def get_checksum(self, f):
f = os.path.normpath(f)
entry = self.cachedata[0].get(f)
cmtime = self.mtime_cache.cached_mtime(f)
if entry:
(mtime, hashval) = entry
if cmtime == mtime:
return hashval
else:
bb.debug(2, "file %s changed mtime, recompute checksum" % f)
hashval = bb.utils.md5_file(f)
self.cachedata_extras[0][f] = (cmtime, hashval)
return hashval
def merge_data(self, source, dest):
for h in source[0]:
if h in dest:
(smtime, _) = source[0][h]
(dmtime, _) = dest[0][h]
if smtime > dmtime:
dest[0][h] = source[0][h]
else:
dest[0][h] = source[0][h]
def get_checksums(self, filelist, pn, localdirsexclude):
"""Get checksums for a list of files"""
def checksum_file(f):
try:
checksum = self.get_checksum(f)
except OSError as e:
bb.warn("Unable to get checksum for %s SRC_URI entry %s: %s" % (pn, os.path.basename(f), e))
return None
return checksum
#
# Changing the format of file-checksums is problematic as both OE and Bitbake have
# knowledge of them. We need to encode a new piece of data, the portion of the path
# we care about from a checksum perspective. This means that files that change subdirectory
# are tracked by the task hashes. To do this, we do something horrible and put a "/./" into
# the path. The filesystem handles it but it gives us a marker to know which subsection
# of the path to cache.
#
def checksum_dir(pth):
# Handle directories recursively
if pth == "/":
bb.fatal("Refusing to checksum /")
pth = pth.rstrip("/")
dirchecksums = []
for root, dirs, files in os.walk(pth, topdown=True):
[dirs.remove(d) for d in list(dirs) if d in localdirsexclude]
for name in files:
fullpth = os.path.join(root, name).replace(pth, os.path.join(pth, "."))
checksum = checksum_file(fullpth)
if checksum:
dirchecksums.append((fullpth, checksum))
return dirchecksums
checksums = []
for pth in filelist_regex.split(filelist):
if not pth:
continue
pth = pth.strip()
if not pth:
continue
exist = pth.split(":")[1]
if exist == "False":
continue
pth = pth.split(":")[0]
if '*' in pth:
# Handle globs
for f in glob.glob(pth):
if os.path.isdir(f):
if not os.path.islink(f):
checksums.extend(checksum_dir(f))
else:
checksum = checksum_file(f)
if checksum:
checksums.append((f, checksum))
elif os.path.isdir(pth):
if not os.path.islink(pth):
checksums.extend(checksum_dir(pth))
else:
checksum = checksum_file(pth)
if checksum:
checksums.append((pth, checksum))
checksums.sort(key=operator.itemgetter(1))
return checksums

View File

@@ -0,0 +1,516 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
"""
BitBake code parser
Parses actual code (i.e. python and shell) for functions and in-line
expressions. Used mainly to determine dependencies on other functions
and variables within the BitBake metadata. Also provides a cache for
this information in order to speed up processing.
(Not to be confused with the code that parses the metadata itself,
see lib/bb/parse/ for that).
NOTE: if you change how the parsers gather information you will almost
certainly need to increment CodeParserCache.CACHE_VERSION below so that
any existing codeparser cache gets invalidated. Additionally you'll need
to increment __cache_version__ in cache.py in order to ensure that old
recipe caches don't trigger "Taskhash mismatch" errors.
"""
import ast
import sys
import codegen
import logging
import inspect
import bb.pysh as pysh
import bb.utils, bb.data
import hashlib
from itertools import chain
from bb.pysh import pyshyacc, pyshlex
from bb.cache import MultiProcessCache
logger = logging.getLogger('BitBake.CodeParser')
def bbhash(s):
return hashlib.sha256(s.encode("utf-8")).hexdigest()
def check_indent(codestr):
"""If the code is indented, add a top level piece of code to 'remove' the indentation"""
i = 0
while codestr[i] in ["\n", "\t", " "]:
i = i + 1
if i == 0:
return codestr
if codestr[i-1] == "\t" or codestr[i-1] == " ":
if codestr[0] == "\n":
# Since we're adding a line, we need to remove one line of any empty padding
# to ensure line numbers are correct
codestr = codestr[1:]
return "if 1:\n" + codestr
return codestr
modulecode_deps = {}
def add_module_functions(fn, functions, namespace):
fstat = os.stat(fn)
fixedhash = fn + ":" + str(fstat.st_size) + ":" + str(fstat.st_mtime)
for f in functions:
name = "%s.%s" % (namespace, f)
parser = PythonParser(name, logger)
try:
parser.parse_python(None, filename=fn, lineno=1, fixedhash=fixedhash+f)
#bb.warn("Cached %s" % f)
except KeyError:
lines, lineno = inspect.getsourcelines(functions[f])
src = "".join(lines)
parser.parse_python(src, filename=fn, lineno=lineno, fixedhash=fixedhash+f)
#bb.warn("Not cached %s" % f)
execs = parser.execs.copy()
# Expand internal module exec references
for e in parser.execs:
if e in functions:
execs.remove(e)
execs.add(namespace + "." + e)
modulecode_deps[name] = [parser.references.copy(), execs, parser.var_execs.copy(), parser.contains.copy()]
#bb.warn("%s: %s\nRefs:%s Execs: %s %s %s" % (name, fn, parser.references, parser.execs, parser.var_execs, parser.contains))
def update_module_dependencies(d):
for mod in modulecode_deps:
excludes = set((d.getVarFlag(mod, "vardepsexclude") or "").split())
if excludes:
modulecode_deps[mod] = [modulecode_deps[mod][0] - excludes, modulecode_deps[mod][1] - excludes, modulecode_deps[mod][2] - excludes, modulecode_deps[mod][3]]
# A custom getstate/setstate using tuples is actually worth 15% cachesize by
# avoiding duplication of the attribute names!
class SetCache(object):
def __init__(self):
self.setcache = {}
def internSet(self, items):
new = []
for i in items:
new.append(sys.intern(i))
s = frozenset(new)
h = hash(s)
if h in self.setcache:
return self.setcache[h]
self.setcache[h] = s
return s
codecache = SetCache()
class pythonCacheLine(object):
def __init__(self, refs, execs, contains):
self.refs = codecache.internSet(refs)
self.execs = codecache.internSet(execs)
self.contains = {}
for c in contains:
self.contains[c] = codecache.internSet(contains[c])
def __getstate__(self):
return (self.refs, self.execs, self.contains)
def __setstate__(self, state):
(refs, execs, contains) = state
self.__init__(refs, execs, contains)
def __hash__(self):
l = (hash(self.refs), hash(self.execs))
for c in sorted(self.contains.keys()):
l = l + (c, hash(self.contains[c]))
return hash(l)
def __repr__(self):
return " ".join([str(self.refs), str(self.execs), str(self.contains)])
class shellCacheLine(object):
def __init__(self, execs):
self.execs = codecache.internSet(execs)
def __getstate__(self):
return (self.execs)
def __setstate__(self, state):
(execs) = state
self.__init__(execs)
def __hash__(self):
return hash(self.execs)
def __repr__(self):
return str(self.execs)
class CodeParserCache(MultiProcessCache):
cache_file_name = "bb_codeparser.dat"
# NOTE: you must increment this if you change how the parsers gather information,
# so that an existing cache gets invalidated. Additionally you'll need
# to increment __cache_version__ in cache.py in order to ensure that old
# recipe caches don't trigger "Taskhash mismatch" errors.
CACHE_VERSION = 11
def __init__(self):
MultiProcessCache.__init__(self)
self.pythoncache = self.cachedata[0]
self.shellcache = self.cachedata[1]
self.pythoncacheextras = self.cachedata_extras[0]
self.shellcacheextras = self.cachedata_extras[1]
# To avoid duplication in the codeparser cache, keep
# a lookup of hashes of objects we already have
self.pythoncachelines = {}
self.shellcachelines = {}
def newPythonCacheLine(self, refs, execs, contains):
cacheline = pythonCacheLine(refs, execs, contains)
h = hash(cacheline)
if h in self.pythoncachelines:
return self.pythoncachelines[h]
self.pythoncachelines[h] = cacheline
return cacheline
def newShellCacheLine(self, execs):
cacheline = shellCacheLine(execs)
h = hash(cacheline)
if h in self.shellcachelines:
return self.shellcachelines[h]
self.shellcachelines[h] = cacheline
return cacheline
def init_cache(self, cachedir):
# Check if we already have the caches
if self.pythoncache:
return
MultiProcessCache.init_cache(self, cachedir)
# cachedata gets re-assigned in the parent
self.pythoncache = self.cachedata[0]
self.shellcache = self.cachedata[1]
def create_cachedata(self):
data = [{}, {}]
return data
codeparsercache = CodeParserCache()
def parser_cache_init(cachedir):
codeparsercache.init_cache(cachedir)
def parser_cache_save():
codeparsercache.save_extras()
def parser_cache_savemerge():
codeparsercache.save_merge()
Logger = logging.getLoggerClass()
class BufferedLogger(Logger):
def __init__(self, name, level=0, target=None):
Logger.__init__(self, name)
self.setLevel(level)
self.buffer = []
self.target = target
def handle(self, record):
self.buffer.append(record)
def flush(self):
for record in self.buffer:
if self.target.isEnabledFor(record.levelno):
self.target.handle(record)
self.buffer = []
class DummyLogger():
def flush(self):
return
class PythonParser():
getvars = (".getVar", ".appendVar", ".prependVar", "oe.utils.conditional")
getvarflags = (".getVarFlag", ".appendVarFlag", ".prependVarFlag")
containsfuncs = ("bb.utils.contains", "base_contains")
containsanyfuncs = ("bb.utils.contains_any", "bb.utils.filter")
execfuncs = ("bb.build.exec_func", "bb.build.exec_task")
def warn(self, func, arg):
"""Warn about calls of bitbake APIs which pass a non-literal
argument for the variable name, as we're not able to track such
a reference.
"""
try:
funcstr = codegen.to_source(func)
argstr = codegen.to_source(arg)
except TypeError:
self.log.debug2('Failed to convert function and argument to source form')
else:
self.log.debug(self.unhandled_message % (funcstr, argstr))
def visit_Call(self, node):
name = self.called_node_name(node.func)
if name and (name.endswith(self.getvars) or name.endswith(self.getvarflags) or name in self.containsfuncs or name in self.containsanyfuncs):
if isinstance(node.args[0], ast.Constant) and isinstance(node.args[0].value, str):
varname = node.args[0].value
if name in self.containsfuncs and isinstance(node.args[1], ast.Str):
if varname not in self.contains:
self.contains[varname] = set()
self.contains[varname].add(node.args[1].s)
elif name in self.containsanyfuncs and isinstance(node.args[1], ast.Str):
if varname not in self.contains:
self.contains[varname] = set()
self.contains[varname].update(node.args[1].s.split())
elif name.endswith(self.getvarflags):
if isinstance(node.args[1], ast.Str):
self.references.add('%s[%s]' % (varname, node.args[1].s))
else:
self.warn(node.func, node.args[1])
else:
self.references.add(varname)
else:
self.warn(node.func, node.args[0])
elif name and name.endswith(".expand"):
if isinstance(node.args[0], ast.Str):
value = node.args[0].s
d = bb.data.init()
parser = d.expandWithRefs(value, self.name)
self.references |= parser.references
self.execs |= parser.execs
for varname in parser.contains:
if varname not in self.contains:
self.contains[varname] = set()
self.contains[varname] |= parser.contains[varname]
elif name in self.execfuncs:
if isinstance(node.args[0], ast.Str):
self.var_execs.add(node.args[0].s)
else:
self.warn(node.func, node.args[0])
elif name and isinstance(node.func, (ast.Name, ast.Attribute)):
self.execs.add(name)
def called_node_name(self, node):
"""Given a called node, return its original string form"""
components = []
while node:
if isinstance(node, ast.Attribute):
components.append(node.attr)
node = node.value
elif isinstance(node, ast.Name):
components.append(node.id)
return '.'.join(reversed(components))
else:
break
def __init__(self, name, log):
self.name = name
self.var_execs = set()
self.contains = {}
self.execs = set()
self.references = set()
self._log = log
# Defer init as expensive
self.log = DummyLogger()
self.unhandled_message = "in call of %s, argument '%s' is not a string literal"
self.unhandled_message = "while parsing %s, %s" % (name, self.unhandled_message)
# For the python module code it is expensive to have the function text so it is
# uses a different fixedhash to cache against. We can take the hit on obtaining the
# text if it isn't in the cache.
def parse_python(self, node, lineno=0, filename="<string>", fixedhash=None):
if not fixedhash and (not node or not node.strip()):
return
if fixedhash:
h = fixedhash
else:
h = bbhash(str(node))
if h in codeparsercache.pythoncache:
self.references = set(codeparsercache.pythoncache[h].refs)
self.execs = set(codeparsercache.pythoncache[h].execs)
self.contains = {}
for i in codeparsercache.pythoncache[h].contains:
self.contains[i] = set(codeparsercache.pythoncache[h].contains[i])
return
if h in codeparsercache.pythoncacheextras:
self.references = set(codeparsercache.pythoncacheextras[h].refs)
self.execs = set(codeparsercache.pythoncacheextras[h].execs)
self.contains = {}
for i in codeparsercache.pythoncacheextras[h].contains:
self.contains[i] = set(codeparsercache.pythoncacheextras[h].contains[i])
return
if fixedhash and not node:
raise KeyError
# Need to parse so take the hit on the real log buffer
self.log = BufferedLogger('BitBake.Data.PythonParser', logging.DEBUG, self._log)
# We can't add to the linenumbers for compile, we can pad to the correct number of blank lines though
node = "\n" * int(lineno) + node
code = compile(check_indent(str(node)), filename, "exec",
ast.PyCF_ONLY_AST)
for n in ast.walk(code):
if n.__class__.__name__ == "Call":
self.visit_Call(n)
self.execs.update(self.var_execs)
codeparsercache.pythoncacheextras[h] = codeparsercache.newPythonCacheLine(self.references, self.execs, self.contains)
class ShellParser():
def __init__(self, name, log):
self.funcdefs = set()
self.allexecs = set()
self.execs = set()
self._name = name
self._log = log
# Defer init as expensive
self.log = DummyLogger()
self.unhandled_template = "unable to handle non-literal command '%s'"
self.unhandled_template = "while parsing %s, %s" % (name, self.unhandled_template)
def parse_shell(self, value):
"""Parse the supplied shell code in a string, returning the external
commands it executes.
"""
h = bbhash(str(value))
if h in codeparsercache.shellcache:
self.execs = set(codeparsercache.shellcache[h].execs)
return self.execs
if h in codeparsercache.shellcacheextras:
self.execs = set(codeparsercache.shellcacheextras[h].execs)
return self.execs
# Need to parse so take the hit on the real log buffer
self.log = BufferedLogger('BitBake.Data.%s' % self._name, logging.DEBUG, self._log)
self._parse_shell(value)
self.execs = set(cmd for cmd in self.allexecs if cmd not in self.funcdefs)
codeparsercache.shellcacheextras[h] = codeparsercache.newShellCacheLine(self.execs)
return self.execs
def _parse_shell(self, value):
try:
tokens, _ = pyshyacc.parse(value, eof=True, debug=False)
except Exception:
bb.error('Error during parse shell code, the last 5 lines are:\n%s' % '\n'.join(value.split('\n')[-5:]))
raise
self.process_tokens(tokens)
def process_tokens(self, tokens):
"""Process a supplied portion of the syntax tree as returned by
pyshyacc.parse.
"""
def function_definition(value):
self.funcdefs.add(value.name)
return [value.body], None
def case_clause(value):
# Element 0 of each item in the case is the list of patterns, and
# Element 1 of each item in the case is the list of commands to be
# executed when that pattern matches.
words = chain(*[item[0] for item in value.items])
cmds = chain(*[item[1] for item in value.items])
return cmds, words
def if_clause(value):
main = chain(value.cond, value.if_cmds)
rest = value.else_cmds
if isinstance(rest, tuple) and rest[0] == "elif":
return chain(main, if_clause(rest[1]))
else:
return chain(main, rest)
def simple_command(value):
return None, chain(value.words, (assign[1] for assign in value.assigns))
token_handlers = {
"and_or": lambda x: ((x.left, x.right), None),
"async": lambda x: ([x], None),
"brace_group": lambda x: (x.cmds, None),
"for_clause": lambda x: (x.cmds, x.items),
"function_definition": function_definition,
"if_clause": lambda x: (if_clause(x), None),
"pipeline": lambda x: (x.commands, None),
"redirect_list": lambda x: ([x.cmd], None),
"subshell": lambda x: (x.cmds, None),
"while_clause": lambda x: (chain(x.condition, x.cmds), None),
"until_clause": lambda x: (chain(x.condition, x.cmds), None),
"simple_command": simple_command,
"case_clause": case_clause,
}
def process_token_list(tokens):
for token in tokens:
if isinstance(token, list):
process_token_list(token)
continue
name, value = token
try:
more_tokens, words = token_handlers[name](value)
except KeyError:
raise NotImplementedError("Unsupported token type " + name)
if more_tokens:
self.process_tokens(more_tokens)
if words:
self.process_words(words)
process_token_list(tokens)
def process_words(self, words):
"""Process a set of 'words' in pyshyacc parlance, which includes
extraction of executed commands from $() blocks, as well as grabbing
the command name argument.
"""
words = list(words)
for word in list(words):
wtree = pyshlex.make_wordtree(word[1])
for part in wtree:
if not isinstance(part, list):
continue
if part[0] in ('`', '$('):
command = pyshlex.wordtree_as_string(part[1:-1])
self._parse_shell(command)
if word[0] in ("cmd_name", "cmd_word"):
if word in words:
words.remove(word)
usetoken = False
for word in words:
if word[0] in ("cmd_name", "cmd_word") or \
(usetoken and word[0] == "TOKEN"):
if "=" in word[1]:
usetoken = True
continue
cmd = word[1]
if cmd.startswith("$"):
self.log.debug(self.unhandled_template % cmd)
elif cmd == "eval":
command = " ".join(word for _, word in words[1:])
self._parse_shell(command)
else:
self.allexecs.add(cmd)
break

789
bitbake/lib/bb/command.py Normal file
View File

@@ -0,0 +1,789 @@
"""
BitBake 'Command' module
Provide an interface to interact with the bitbake server through 'commands'
"""
# Copyright (C) 2006-2007 Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
"""
The bitbake server takes 'commands' from its UI/commandline.
Commands are either synchronous or asynchronous.
Async commands return data to the client in the form of events.
Sync commands must only return data through the function return value
and must not trigger events, directly or indirectly.
Commands are queued in a CommandQueue
"""
from collections import OrderedDict, defaultdict
import io
import bb.event
import bb.cooker
import bb.remotedata
class DataStoreConnectionHandle(object):
def __init__(self, dsindex=0):
self.dsindex = dsindex
class CommandCompleted(bb.event.Event):
pass
class CommandExit(bb.event.Event):
def __init__(self, exitcode):
bb.event.Event.__init__(self)
self.exitcode = int(exitcode)
class CommandFailed(CommandExit):
def __init__(self, message):
self.error = message
CommandExit.__init__(self, 1)
def __str__(self):
return "Command execution failed: %s" % self.error
class CommandError(Exception):
pass
class Command:
"""
A queue of asynchronous commands for bitbake
"""
def __init__(self, cooker, process_server):
self.cooker = cooker
self.cmds_sync = CommandsSync()
self.cmds_async = CommandsAsync()
self.remotedatastores = None
self.process_server = process_server
# Access with locking using process_server.{get/set/clear}_async_cmd()
self.currentAsyncCommand = None
def runCommand(self, commandline, process_server, ro_only=False):
command = commandline.pop(0)
# Ensure cooker is ready for commands
if command not in ["updateConfig", "setFeatures", "ping"]:
try:
self.cooker.init_configdata()
if not self.remotedatastores:
self.remotedatastores = bb.remotedata.RemoteDatastores(self.cooker)
except (Exception, SystemExit) as exc:
import traceback
if isinstance(exc, bb.BBHandledException):
# We need to start returning real exceptions here. Until we do, we can't
# tell if an exception is an instance of bb.BBHandledException
return None, "bb.BBHandledException()\n" + traceback.format_exc()
return None, traceback.format_exc()
if hasattr(CommandsSync, command):
# Can run synchronous commands straight away
command_method = getattr(self.cmds_sync, command)
if ro_only:
if not hasattr(command_method, 'readonly') or not getattr(command_method, 'readonly'):
return None, "Not able to execute not readonly commands in readonly mode"
try:
if getattr(command_method, 'needconfig', True):
self.cooker.updateCacheSync()
result = command_method(self, commandline)
except CommandError as exc:
return None, exc.args[0]
except (Exception, SystemExit) as exc:
import traceback
if isinstance(exc, bb.BBHandledException):
# We need to start returning real exceptions here. Until we do, we can't
# tell if an exception is an instance of bb.BBHandledException
return None, "bb.BBHandledException()\n" + traceback.format_exc()
return None, traceback.format_exc()
else:
return result, None
if command not in CommandsAsync.__dict__:
return None, "No such command"
if not process_server.set_async_cmd((command, commandline)):
return None, "Busy (%s in progress)" % self.process_server.get_async_cmd()[0]
self.cooker.idleCallBackRegister(self.runAsyncCommand, process_server)
return True, None
def runAsyncCommand(self, _, process_server, halt):
try:
if self.cooker.state in (bb.cooker.state.error, bb.cooker.state.shutdown, bb.cooker.state.forceshutdown):
# updateCache will trigger a shutdown of the parser
# and then raise BBHandledException triggering an exit
self.cooker.updateCache()
return bb.server.process.idleFinish("Cooker in error state")
cmd = process_server.get_async_cmd()
if cmd is not None:
(command, options) = cmd
commandmethod = getattr(CommandsAsync, command)
needcache = getattr( commandmethod, "needcache" )
if needcache and self.cooker.state != bb.cooker.state.running:
self.cooker.updateCache()
return True
else:
commandmethod(self.cmds_async, self, options)
return False
else:
return bb.server.process.idleFinish("Nothing to do, no async command?")
except KeyboardInterrupt as exc:
return bb.server.process.idleFinish("Interrupted")
except SystemExit as exc:
arg = exc.args[0]
if isinstance(arg, str):
return bb.server.process.idleFinish(arg)
else:
return bb.server.process.idleFinish("Exited with %s" % arg)
except Exception as exc:
import traceback
if isinstance(exc, bb.BBHandledException):
return bb.server.process.idleFinish("")
else:
return bb.server.process.idleFinish(traceback.format_exc())
def finishAsyncCommand(self, msg=None, code=None):
if msg or msg == "":
bb.event.fire(CommandFailed(msg), self.cooker.data)
elif code:
bb.event.fire(CommandExit(code), self.cooker.data)
else:
bb.event.fire(CommandCompleted(), self.cooker.data)
self.cooker.finishcommand()
self.process_server.clear_async_cmd()
def reset(self):
if self.remotedatastores:
self.remotedatastores = bb.remotedata.RemoteDatastores(self.cooker)
class CommandsSync:
"""
A class of synchronous commands
These should run quickly so as not to hurt interactive performance.
These must not influence any running synchronous command.
"""
def ping(self, command, params):
"""
Allow a UI to check the server is still alive
"""
return "Still alive!"
ping.needconfig = False
ping.readonly = True
def stateShutdown(self, command, params):
"""
Trigger cooker 'shutdown' mode
"""
command.cooker.shutdown(False)
def stateForceShutdown(self, command, params):
"""
Stop the cooker
"""
command.cooker.shutdown(True)
def getAllKeysWithFlags(self, command, params):
"""
Returns a dump of the global state. Call with
variable flags to be retrieved as params.
"""
flaglist = params[0]
return command.cooker.getAllKeysWithFlags(flaglist)
getAllKeysWithFlags.readonly = True
def getVariable(self, command, params):
"""
Read the value of a variable from data
"""
varname = params[0]
expand = True
if len(params) > 1:
expand = (params[1] == "True")
return command.cooker.data.getVar(varname, expand)
getVariable.readonly = True
def setVariable(self, command, params):
"""
Set the value of variable in data
"""
varname = params[0]
value = str(params[1])
command.cooker.extraconfigdata[varname] = value
command.cooker.data.setVar(varname, value)
def getSetVariable(self, command, params):
"""
Read the value of a variable from data and set it into the datastore
which effectively expands and locks the value.
"""
varname = params[0]
result = self.getVariable(command, params)
command.cooker.data.setVar(varname, result)
return result
def setConfig(self, command, params):
"""
Set the value of variable in configuration
"""
varname = params[0]
value = str(params[1])
setattr(command.cooker.configuration, varname, value)
def enableDataTracking(self, command, params):
"""
Enable history tracking for variables
"""
command.cooker.enableDataTracking()
def disableDataTracking(self, command, params):
"""
Disable history tracking for variables
"""
command.cooker.disableDataTracking()
def setPrePostConfFiles(self, command, params):
prefiles = params[0].split()
postfiles = params[1].split()
command.cooker.configuration.prefile = prefiles
command.cooker.configuration.postfile = postfiles
setPrePostConfFiles.needconfig = False
def matchFile(self, command, params):
fMatch = params[0]
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.matchFile(fMatch, mc)
matchFile.needconfig = False
def getUIHandlerNum(self, command, params):
return bb.event.get_uihandler()
getUIHandlerNum.needconfig = False
getUIHandlerNum.readonly = True
def setEventMask(self, command, params):
handlerNum = params[0]
llevel = params[1]
debug_domains = params[2]
mask = params[3]
return bb.event.set_UIHmask(handlerNum, llevel, debug_domains, mask)
setEventMask.needconfig = False
setEventMask.readonly = True
def setFeatures(self, command, params):
"""
Set the cooker features to include the passed list of features
"""
features = params[0]
command.cooker.setFeatures(features)
setFeatures.needconfig = False
# although we change the internal state of the cooker, this is transparent since
# we always take and leave the cooker in state.initial
setFeatures.readonly = True
def updateConfig(self, command, params):
options = params[0]
environment = params[1]
cmdline = params[2]
command.cooker.updateConfigOpts(options, environment, cmdline)
updateConfig.needconfig = False
def parseConfiguration(self, command, params):
"""Instruct bitbake to parse its configuration
NOTE: it is only necessary to call this if you aren't calling any normal action
(otherwise parsing is taken care of automatically)
"""
command.cooker.parseConfiguration()
parseConfiguration.needconfig = False
def getLayerPriorities(self, command, params):
command.cooker.parseConfiguration()
ret = []
# regex objects cannot be marshalled by xmlrpc
for collection, pattern, regex, pri in command.cooker.bbfile_config_priorities:
ret.append((collection, pattern, regex.pattern, pri))
return ret
getLayerPriorities.readonly = True
def revalidateCaches(self, command, params):
"""Called by UI clients when metadata may have changed"""
command.cooker.revalidateCaches()
parseConfiguration.needconfig = False
def getRecipes(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return list(command.cooker.recipecaches[mc].pkg_pn.items())
getRecipes.readonly = True
def getRecipeDepends(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return list(command.cooker.recipecaches[mc].deps.items())
getRecipeDepends.readonly = True
def getRecipeVersions(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].pkg_pepvpr
getRecipeVersions.readonly = True
def getRecipeProvides(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].fn_provides
getRecipeProvides.readonly = True
def getRecipePackages(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].packages
getRecipePackages.readonly = True
def getRecipePackagesDynamic(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].packages_dynamic
getRecipePackagesDynamic.readonly = True
def getRProviders(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].rproviders
getRProviders.readonly = True
def getRuntimeDepends(self, command, params):
ret = []
try:
mc = params[0]
except IndexError:
mc = ''
rundeps = command.cooker.recipecaches[mc].rundeps
for key, value in rundeps.items():
if isinstance(value, defaultdict):
value = dict(value)
ret.append((key, value))
return ret
getRuntimeDepends.readonly = True
def getRuntimeRecommends(self, command, params):
ret = []
try:
mc = params[0]
except IndexError:
mc = ''
runrecs = command.cooker.recipecaches[mc].runrecs
for key, value in runrecs.items():
if isinstance(value, defaultdict):
value = dict(value)
ret.append((key, value))
return ret
getRuntimeRecommends.readonly = True
def getRecipeInherits(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].inherits
getRecipeInherits.readonly = True
def getBbFilePriority(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].bbfile_priority
getBbFilePriority.readonly = True
def getDefaultPreference(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].pkg_dp
getDefaultPreference.readonly = True
def getSkippedRecipes(self, command, params):
# Return list sorted by reverse priority order
import bb.cache
def sortkey(x):
vfn, _ = x
realfn, _, mc = bb.cache.virtualfn2realfn(vfn)
return (-command.cooker.collections[mc].calc_bbfile_priority(realfn)[0], vfn)
skipdict = OrderedDict(sorted(command.cooker.skiplist.items(), key=sortkey))
return list(skipdict.items())
getSkippedRecipes.readonly = True
def getOverlayedRecipes(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return list(command.cooker.collections[mc].overlayed.items())
getOverlayedRecipes.readonly = True
def getFileAppends(self, command, params):
fn = params[0]
try:
mc = params[1]
except IndexError:
mc = ''
return command.cooker.collections[mc].get_file_appends(fn)
getFileAppends.readonly = True
def getAllAppends(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.collections[mc].bbappends
getAllAppends.readonly = True
def findProviders(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.findProviders(mc)
findProviders.readonly = True
def findBestProvider(self, command, params):
(mc, pn) = bb.runqueue.split_mc(params[0])
return command.cooker.findBestProvider(pn, mc)
findBestProvider.readonly = True
def allProviders(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return list(bb.providers.allProviders(command.cooker.recipecaches[mc]).items())
allProviders.readonly = True
def getRuntimeProviders(self, command, params):
rprovide = params[0]
try:
mc = params[1]
except IndexError:
mc = ''
all_p = bb.providers.getRuntimeProviders(command.cooker.recipecaches[mc], rprovide)
if all_p:
best = bb.providers.filterProvidersRunTime(all_p, rprovide,
command.cooker.data,
command.cooker.recipecaches[mc])[0][0]
else:
best = None
return all_p, best
getRuntimeProviders.readonly = True
def dataStoreConnectorCmd(self, command, params):
dsindex = params[0]
method = params[1]
args = params[2]
kwargs = params[3]
d = command.remotedatastores[dsindex]
ret = getattr(d, method)(*args, **kwargs)
if isinstance(ret, bb.data_smart.DataSmart):
idx = command.remotedatastores.store(ret)
return DataStoreConnectionHandle(idx)
return ret
def dataStoreConnectorVarHistCmd(self, command, params):
dsindex = params[0]
method = params[1]
args = params[2]
kwargs = params[3]
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]
args = params[2]
kwargs = params[3]
d = command.remotedatastores[dsindex].inchistory
return getattr(d, method)(*args, **kwargs)
def dataStoreConnectorRelease(self, command, params):
dsindex = params[0]
if dsindex <= 0:
raise CommandError('dataStoreConnectorRelease: invalid index %d' % dsindex)
command.remotedatastores.release(dsindex)
def parseRecipeFile(self, command, params):
"""
Parse the specified recipe file (with or without bbappends)
and return a datastore object representing the environment
for the recipe.
"""
virtualfn = params[0]
(fn, cls, mc) = bb.cache.virtualfn2realfn(virtualfn)
appends = params[1]
appendlist = params[2]
if len(params) > 3:
config_data = command.remotedatastores[params[3]]
else:
config_data = None
if appends:
if appendlist is not None:
appendfiles = appendlist
else:
appendfiles = command.cooker.collections[mc].get_file_appends(fn)
else:
appendfiles = []
layername = command.cooker.collections[mc].calc_bbfile_priority(fn)[2]
# We are calling bb.cache locally here rather than on the server,
# but that's OK because it doesn't actually need anything from
# the server barring the global datastore (which we have a remote
# version of)
if config_data:
# We have to use a different function here if we're passing in a datastore
# NOTE: we took a copy above, so we don't do it here again
envdata = command.cooker.databuilder._parse_recipe(config_data, fn, appendfiles, mc, layername)[cls]
else:
# Use the standard path
envdata = command.cooker.databuilder.parseRecipe(virtualfn, appendfiles, layername)
idx = command.remotedatastores.store(envdata)
return DataStoreConnectionHandle(idx)
parseRecipeFile.readonly = True
class CommandsAsync:
"""
A class of asynchronous commands
These functions communicate via generated events.
Any function that requires metadata parsing should be here.
"""
def buildFile(self, command, params):
"""
Build a single specified .bb file
"""
bfile = params[0]
task = params[1]
if len(params) > 2:
internal = params[2]
else:
internal = False
if internal:
command.cooker.buildFileInternal(bfile, task, fireevents=False, quietlog=True)
else:
command.cooker.buildFile(bfile, task)
buildFile.needcache = False
def buildTargets(self, command, params):
"""
Build a set of targets
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.buildTargets(pkgs_to_build, task)
buildTargets.needcache = True
def generateDepTreeEvent(self, command, params):
"""
Generate an event containing the dependency information
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.generateDepTreeEvent(pkgs_to_build, task)
command.finishAsyncCommand()
generateDepTreeEvent.needcache = True
def generateDotGraph(self, command, params):
"""
Dump dependency information to disk as .dot files
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.generateDotGraphFiles(pkgs_to_build, task)
command.finishAsyncCommand()
generateDotGraph.needcache = True
def generateTargetsTree(self, command, params):
"""
Generate a tree of buildable targets.
If klass is provided ensure all recipes that inherit the class are
included in the package list.
If pkg_list provided use that list (plus any extras brought in by
klass) rather than generating a tree for all packages.
"""
klass = params[0]
pkg_list = params[1]
command.cooker.generateTargetsTree(klass, pkg_list)
command.finishAsyncCommand()
generateTargetsTree.needcache = True
def findConfigFiles(self, command, params):
"""
Find config files which provide appropriate values
for the passed configuration variable. i.e. MACHINE
"""
varname = params[0]
command.cooker.findConfigFiles(varname)
command.finishAsyncCommand()
findConfigFiles.needcache = False
def findFilesMatchingInDir(self, command, params):
"""
Find implementation files matching the specified pattern
in the requested subdirectory of a BBPATH
"""
pattern = params[0]
directory = params[1]
command.cooker.findFilesMatchingInDir(pattern, directory)
command.finishAsyncCommand()
findFilesMatchingInDir.needcache = False
def testCookerCommandEvent(self, command, params):
"""
Dummy command used by OEQA selftest to test tinfoil without IO
"""
pattern = params[0]
command.cooker.testCookerCommandEvent(pattern)
command.finishAsyncCommand()
testCookerCommandEvent.needcache = False
def findConfigFilePath(self, command, params):
"""
Find the path of the requested configuration file
"""
configfile = params[0]
command.cooker.findConfigFilePath(configfile)
command.finishAsyncCommand()
findConfigFilePath.needcache = False
def showVersions(self, command, params):
"""
Show the currently selected versions
"""
command.cooker.showVersions()
command.finishAsyncCommand()
showVersions.needcache = True
def showEnvironmentTarget(self, command, params):
"""
Print the environment of a target recipe
(needs the cache to work out which recipe to use)
"""
pkg = params[0]
command.cooker.showEnvironment(None, pkg)
command.finishAsyncCommand()
showEnvironmentTarget.needcache = True
def showEnvironment(self, command, params):
"""
Print the standard environment
or if specified the environment for a specified recipe
"""
bfile = params[0]
command.cooker.showEnvironment(bfile)
command.finishAsyncCommand()
showEnvironment.needcache = False
def parseFiles(self, command, params):
"""
Parse the .bb files
"""
command.cooker.updateCache()
command.finishAsyncCommand()
parseFiles.needcache = True
def compareRevisions(self, command, params):
"""
Parse the .bb files
"""
if bb.fetch.fetcher_compare_revisions(command.cooker.data):
command.finishAsyncCommand(code=1)
else:
command.finishAsyncCommand()
compareRevisions.needcache = True
def triggerEvent(self, command, params):
"""
Trigger a certain event
"""
event = params[0]
bb.event.fire(eval(event), command.cooker.data)
process_server.clear_async_cmd()
triggerEvent.needcache = False
def resetCooker(self, command, params):
"""
Reset the cooker to its initial state, thus forcing a reparse for
any async command that has the needcache property set to True
"""
command.cooker.reset()
command.finishAsyncCommand()
resetCooker.needcache = False
def clientComplete(self, command, params):
"""
Do the right thing when the controlling client exits
"""
command.cooker.clientComplete()
command.finishAsyncCommand()
clientComplete.needcache = False
def findSigInfo(self, command, params):
"""
Find signature info files via the signature generator
"""
(mc, pn) = bb.runqueue.split_mc(params[0])
taskname = params[1]
sigs = params[2]
res = bb.siggen.find_siginfo(pn, taskname, sigs, command.cooker.databuilder.mcdata[mc])
bb.event.fire(bb.event.FindSigInfoResult(res), command.cooker.databuilder.mcdata[mc])
command.finishAsyncCommand()
findSigInfo.needcache = False
def getTaskSignatures(self, command, params):
res = command.cooker.getTaskSignatures(params[0], params[1])
bb.event.fire(bb.event.GetTaskSignatureResult(res), command.cooker.data)
command.finishAsyncCommand()
getTaskSignatures.needcache = True

View File

@@ -0,0 +1,196 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Helper library to implement streaming compression and decompression using an
# external process
#
# This library should be used directly by end users; a wrapper library for the
# specific compression tool should be created
import builtins
import io
import os
import subprocess
def open_wrap(
cls, filename, mode="rb", *, encoding=None, errors=None, newline=None, **kwargs
):
"""
Open a compressed file in binary or text mode.
Users should not call this directly. A specific compression library can use
this helper to provide it's own "open" command
The filename argument can be an actual filename (a str or bytes object), or
an existing file object to read from or write to.
The mode argument can be "r", "rb", "w", "wb", "x", "xb", "a" or "ab" for
binary mode, or "rt", "wt", "xt" or "at" for text mode. The default mode is
"rb".
For binary mode, this function is equivalent to the cls constructor:
cls(filename, mode). In this case, the encoding, errors and newline
arguments must not be provided.
For text mode, a cls object is created, and wrapped in an
io.TextIOWrapper instance with the specified encoding, error handling
behavior, and line ending(s).
"""
if "t" in mode:
if "b" in mode:
raise ValueError("Invalid mode: %r" % (mode,))
else:
if encoding is not None:
raise ValueError("Argument 'encoding' not supported in binary mode")
if errors is not None:
raise ValueError("Argument 'errors' not supported in binary mode")
if newline is not None:
raise ValueError("Argument 'newline' not supported in binary mode")
file_mode = mode.replace("t", "")
if isinstance(filename, (str, bytes, os.PathLike, int)):
binary_file = cls(filename, file_mode, **kwargs)
elif hasattr(filename, "read") or hasattr(filename, "write"):
binary_file = cls(None, file_mode, fileobj=filename, **kwargs)
else:
raise TypeError("filename must be a str or bytes object, or a file")
if "t" in mode:
return io.TextIOWrapper(
binary_file, encoding, errors, newline, write_through=True
)
else:
return binary_file
class CompressionError(OSError):
pass
class PipeFile(io.RawIOBase):
"""
Class that implements generically piping to/from a compression program
Derived classes should add the function get_compress() and get_decompress()
that return the required commands. Input will be piped into stdin and the
(de)compressed output should be written to stdout, e.g.:
class FooFile(PipeCompressionFile):
def get_decompress(self):
return ["fooc", "--decompress", "--stdout"]
def get_compress(self):
return ["fooc", "--compress", "--stdout"]
"""
READ = 0
WRITE = 1
def __init__(self, filename=None, mode="rb", *, stderr=None, fileobj=None):
if "t" in mode or "U" in mode:
raise ValueError("Invalid mode: {!r}".format(mode))
if not "b" in mode:
mode += "b"
if mode.startswith("r"):
self.mode = self.READ
elif mode.startswith("w"):
self.mode = self.WRITE
else:
raise ValueError("Invalid mode %r" % mode)
if fileobj is not None:
self.fileobj = fileobj
else:
self.fileobj = builtins.open(filename, mode or "rb")
if self.mode == self.READ:
self.p = subprocess.Popen(
self.get_decompress(),
stdin=self.fileobj,
stdout=subprocess.PIPE,
stderr=stderr,
close_fds=True,
)
self.pipe = self.p.stdout
else:
self.p = subprocess.Popen(
self.get_compress(),
stdin=subprocess.PIPE,
stdout=self.fileobj,
stderr=stderr,
close_fds=True,
)
self.pipe = self.p.stdin
self.__closed = False
def _check_process(self):
if self.p is None:
return
returncode = self.p.wait()
if returncode:
raise CompressionError("Process died with %d" % returncode)
self.p = None
def close(self):
if self.closed:
return
self.pipe.close()
if self.p is not None:
self._check_process()
self.fileobj.close()
self.__closed = True
@property
def closed(self):
return self.__closed
def fileno(self):
return self.pipe.fileno()
def flush(self):
self.pipe.flush()
def isatty(self):
return self.pipe.isatty()
def readable(self):
return self.mode == self.READ
def writable(self):
return self.mode == self.WRITE
def readinto(self, b):
if self.mode != self.READ:
import errno
raise OSError(
errno.EBADF, "read() on write-only %s object" % self.__class__.__name__
)
size = self.pipe.readinto(b)
if size == 0:
self._check_process()
return size
def write(self, data):
if self.mode != self.WRITE:
import errno
raise OSError(
errno.EBADF, "write() on read-only %s object" % self.__class__.__name__
)
data = self.pipe.write(data)
if not data:
self._check_process()
return data

View File

@@ -0,0 +1,19 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
import bb.compress._pipecompress
def open(*args, **kwargs):
return bb.compress._pipecompress.open_wrap(LZ4File, *args, **kwargs)
class LZ4File(bb.compress._pipecompress.PipeFile):
def get_compress(self):
return ["lz4c", "-z", "-c"]
def get_decompress(self):
return ["lz4c", "-d", "-c"]

View File

@@ -0,0 +1,30 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
import bb.compress._pipecompress
import shutil
def open(*args, **kwargs):
return bb.compress._pipecompress.open_wrap(ZstdFile, *args, **kwargs)
class ZstdFile(bb.compress._pipecompress.PipeFile):
def __init__(self, *args, num_threads=1, compresslevel=3, **kwargs):
self.num_threads = num_threads
self.compresslevel = compresslevel
super().__init__(*args, **kwargs)
def _get_zstd(self):
if self.num_threads == 1 or not shutil.which("pzstd"):
return ["zstd"]
return ["pzstd", "-p", "%d" % self.num_threads]
def get_compress(self):
return self._get_zstd() + ["-c", "-%d" % self.compresslevel]
def get_decompress(self):
return self._get_zstd() + ["-d", "-c"]

2359
bitbake/lib/bb/cooker.py Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,547 @@
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
import logging
import os
import re
import sys
import hashlib
from functools import wraps
import bb
from bb import data
import bb.parse
logger = logging.getLogger("BitBake")
parselog = logging.getLogger("BitBake.Parsing")
class ConfigParameters(object):
def __init__(self, argv=None):
self.options, targets = self.parseCommandLine(argv or sys.argv)
self.environment = self.parseEnvironment()
self.options.pkgs_to_build = targets or []
for key, val in self.options.__dict__.items():
setattr(self, key, val)
def parseCommandLine(self, argv=sys.argv):
raise Exception("Caller must implement commandline option parsing")
def parseEnvironment(self):
return os.environ.copy()
def updateFromServer(self, server):
if not self.options.cmd:
defaulttask, error = server.runCommand(["getVariable", "BB_DEFAULT_TASK"])
if error:
raise Exception("Unable to get the value of BB_DEFAULT_TASK from the server: %s" % error)
self.options.cmd = defaulttask or "build"
_, error = server.runCommand(["setConfig", "cmd", self.options.cmd])
if error:
raise Exception("Unable to set configuration option 'cmd' on the server: %s" % error)
if not self.options.pkgs_to_build:
bbpkgs, error = server.runCommand(["getVariable", "BBTARGETS"])
if error:
raise Exception("Unable to get the value of BBTARGETS from the server: %s" % error)
if bbpkgs:
self.options.pkgs_to_build.extend(bbpkgs.split())
def updateToServer(self, server, environment):
options = {}
for o in ["halt", "force", "invalidate_stamp",
"dry_run", "dump_signatures",
"extra_assume_provided", "profile",
"prefile", "postfile", "server_timeout",
"nosetscene", "setsceneonly", "skipsetscene",
"runall", "runonly", "writeeventlog"]:
options[o] = getattr(self.options, o)
options['build_verbose_shell'] = self.options.verbose
options['build_verbose_stdout'] = self.options.verbose
options['default_loglevel'] = bb.msg.loggerDefaultLogLevel
options['debug_domains'] = bb.msg.loggerDefaultDomains
ret, error = server.runCommand(["updateConfig", options, environment, sys.argv])
if error:
raise Exception("Unable to update the server configuration with local parameters: %s" % error)
def parseActions(self):
# Parse any commandline into actions
action = {'action':None, 'msg':None}
if self.options.show_environment:
if 'world' in self.options.pkgs_to_build:
action['msg'] = "'world' is not a valid target for --environment."
elif 'universe' in self.options.pkgs_to_build:
action['msg'] = "'universe' is not a valid target for --environment."
elif len(self.options.pkgs_to_build) > 1:
action['msg'] = "Only one target can be used with the --environment option."
elif self.options.buildfile and len(self.options.pkgs_to_build) > 0:
action['msg'] = "No target should be used with the --environment and --buildfile options."
elif self.options.pkgs_to_build:
action['action'] = ["showEnvironmentTarget", self.options.pkgs_to_build]
else:
action['action'] = ["showEnvironment", self.options.buildfile]
elif self.options.buildfile is not None:
action['action'] = ["buildFile", self.options.buildfile, self.options.cmd]
elif self.options.revisions_changed:
action['action'] = ["compareRevisions"]
elif self.options.show_versions:
action['action'] = ["showVersions"]
elif self.options.parse_only:
action['action'] = ["parseFiles"]
elif self.options.dot_graph:
if self.options.pkgs_to_build:
action['action'] = ["generateDotGraph", self.options.pkgs_to_build, self.options.cmd]
else:
action['msg'] = "Please specify a package name for dependency graph generation."
else:
if self.options.pkgs_to_build:
action['action'] = ["buildTargets", self.options.pkgs_to_build, self.options.cmd]
else:
#action['msg'] = "Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information."
action = None
self.options.initialaction = action
return action
class CookerConfiguration(object):
"""
Manages build options and configurations for one run
"""
def __init__(self):
self.debug_domains = bb.msg.loggerDefaultDomains
self.default_loglevel = bb.msg.loggerDefaultLogLevel
self.extra_assume_provided = []
self.prefile = []
self.postfile = []
self.cmd = None
self.halt = True
self.force = False
self.profile = False
self.nosetscene = False
self.setsceneonly = False
self.skipsetscene = False
self.invalidate_stamp = False
self.dump_signatures = []
self.build_verbose_shell = False
self.build_verbose_stdout = False
self.dry_run = False
self.tracking = False
self.writeeventlog = False
self.limited_deps = False
self.runall = []
self.runonly = []
self.env = {}
def __getstate__(self):
state = {}
for key in self.__dict__.keys():
state[key] = getattr(self, key)
return state
def __setstate__(self,state):
for k in state:
setattr(self, k, state[k])
def catch_parse_error(func):
"""Exception handling bits for our parsing"""
@wraps(func)
def wrapped(fn, *args):
try:
return func(fn, *args)
except Exception as exc:
import traceback
bbdir = os.path.dirname(__file__) + os.sep
exc_class, exc, tb = sys.exc_info()
for tb in iter(lambda: tb.tb_next, None):
# Skip frames in bitbake itself, we only want the metadata
fn, _, _, _ = traceback.extract_tb(tb, 1)[0]
if not fn.startswith(bbdir):
break
parselog.critical("Unable to parse %s" % fn, exc_info=(exc_class, exc, tb))
raise bb.BBHandledException()
return wrapped
@catch_parse_error
def parse_config_file(fn, data, include=True):
return bb.parse.handle(fn, data, include, baseconfig=True)
@catch_parse_error
def _inherit(bbclass, data):
bb.parse.BBHandler.inherit(bbclass, "configuration INHERITs", 0, data)
return data
def findConfigFile(configfile, data):
search = []
bbpath = data.getVar("BBPATH")
if bbpath:
for i in bbpath.split(":"):
search.append(os.path.join(i, "conf", configfile))
path = os.getcwd()
while path != "/":
search.append(os.path.join(path, "conf", configfile))
path, _ = os.path.split(path)
for i in search:
if os.path.exists(i):
return i
return None
#
# We search for a conf/bblayers.conf under an entry in BBPATH or in cwd working
# up to /. If that fails, bitbake would fall back to cwd.
#
def findTopdir():
d = bb.data.init()
bbpath = None
if 'BBPATH' in os.environ:
bbpath = os.environ['BBPATH']
d.setVar('BBPATH', bbpath)
layerconf = findConfigFile("bblayers.conf", d)
if layerconf:
return os.path.dirname(os.path.dirname(layerconf))
return os.path.abspath(os.getcwd())
class CookerDataBuilder(object):
def __init__(self, cookercfg, worker = False):
self.prefiles = cookercfg.prefile
self.postfiles = cookercfg.postfile
self.tracking = cookercfg.tracking
bb.utils.set_context(bb.utils.clean_context())
bb.event.set_class_handlers(bb.event.clean_class_handlers())
self.basedata = bb.data.init()
if self.tracking:
self.basedata.enableTracking()
# Keep a datastore of the initial environment variables and their
# values from when BitBake was launched to enable child processes
# to use environment variables which have been cleaned from the
# BitBake processes env
self.savedenv = bb.data.init()
for k in cookercfg.env:
self.savedenv.setVar(k, cookercfg.env[k])
if k in bb.data_smart.bitbake_renamed_vars:
bb.error('Shell environment variable %s has been renamed to %s' % (k, bb.data_smart.bitbake_renamed_vars[k]))
bb.fatal("Exiting to allow enviroment variables to be corrected")
filtered_keys = bb.utils.approved_variables()
bb.data.inheritFromOS(self.basedata, self.savedenv, filtered_keys)
self.basedata.setVar("BB_ORIGENV", self.savedenv)
self.basedata.setVar("__bbclasstype", "global")
if worker:
self.basedata.setVar("BB_WORKERCONTEXT", "1")
self.data = self.basedata
self.mcdata = {}
def parseBaseConfiguration(self, worker=False):
mcdata = {}
data_hash = hashlib.sha256()
try:
self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
if self.data.getVar("BB_WORKERCONTEXT", False) is None and not worker:
bb.fetch.fetcher_init(self.data)
bb.parse.init_parser(self.data)
bb.event.fire(bb.event.ConfigParsed(), self.data)
reparse_cnt = 0
while self.data.getVar("BB_INVALIDCONF", False) is True:
if reparse_cnt > 20:
logger.error("Configuration has been re-parsed over 20 times, "
"breaking out of the loop...")
raise Exception("Too deep config re-parse loop. Check locations where "
"BB_INVALIDCONF is being set (ConfigParsed event handlers)")
self.data.setVar("BB_INVALIDCONF", False)
self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
reparse_cnt += 1
bb.event.fire(bb.event.ConfigParsed(), self.data)
bb.parse.init_parser(self.data)
data_hash.update(self.data.get_hash().encode('utf-8'))
mcdata[''] = self.data
multiconfig = (self.data.getVar("BBMULTICONFIG") or "").split()
for config in multiconfig:
if config[0].isdigit():
bb.fatal("Multiconfig name '%s' is invalid as multiconfigs cannot start with a digit" % config)
parsed_mcdata = self.parseConfigurationFiles(self.prefiles, self.postfiles, config)
bb.event.fire(bb.event.ConfigParsed(), parsed_mcdata)
mcdata[config] = parsed_mcdata
data_hash.update(parsed_mcdata.get_hash().encode('utf-8'))
if multiconfig:
bb.event.fire(bb.event.MultiConfigParsed(mcdata), self.data)
self.data_hash = data_hash.hexdigest()
except bb.data_smart.ExpansionError as e:
logger.error(str(e))
raise bb.BBHandledException()
bb.codeparser.update_module_dependencies(self.data)
# Handle obsolete variable names
d = self.data
renamedvars = d.getVarFlags('BB_RENAMED_VARIABLES') or {}
renamedvars.update(bb.data_smart.bitbake_renamed_vars)
issues = False
for v in renamedvars:
if d.getVar(v) != None or d.hasOverrides(v):
issues = True
loginfo = {}
history = d.varhistory.get_variable_refs(v)
for h in history:
for line in history[h]:
loginfo = {'file' : h, 'line' : line}
bb.data.data_smart._print_rename_error(v, loginfo, renamedvars)
if not history:
bb.data.data_smart._print_rename_error(v, loginfo, renamedvars)
if issues:
raise bb.BBHandledException()
for mc in mcdata:
mcdata[mc].renameVar("__depends", "__base_depends")
mcdata[mc].setVar("__bbclasstype", "recipe")
# Create a copy so we can reset at a later date when UIs disconnect
self.mcorigdata = mcdata
for mc in mcdata:
self.mcdata[mc] = bb.data.createCopy(mcdata[mc])
self.data = self.mcdata['']
def reset(self):
# We may not have run parseBaseConfiguration() yet
if not hasattr(self, 'mcorigdata'):
return
for mc in self.mcorigdata:
self.mcdata[mc] = bb.data.createCopy(self.mcorigdata[mc])
self.data = self.mcdata['']
def _findLayerConf(self, data):
return findConfigFile("bblayers.conf", data)
def parseConfigurationFiles(self, prefiles, postfiles, mc = "default"):
data = bb.data.createCopy(self.basedata)
data.setVar("BB_CURRENT_MC", mc)
# Parse files for loading *before* bitbake.conf and any includes
for f in prefiles:
data = parse_config_file(f, data)
layerconf = self._findLayerConf(data)
if layerconf:
parselog.debug2("Found bblayers.conf (%s)", layerconf)
# By definition bblayers.conf is in conf/ of TOPDIR.
# We may have been called with cwd somewhere else so reset TOPDIR
data.setVar("TOPDIR", os.path.dirname(os.path.dirname(layerconf)))
data = parse_config_file(layerconf, data)
if not data.getVar("BB_CACHEDIR"):
data.setVar("BB_CACHEDIR", "${TOPDIR}/cache")
bb.codeparser.parser_cache_init(data.getVar("BB_CACHEDIR"))
layers = (data.getVar('BBLAYERS') or "").split()
broken_layers = []
if not layers:
bb.fatal("The bblayers.conf file doesn't contain any BBLAYERS definition")
data = bb.data.createCopy(data)
approved = bb.utils.approved_variables()
# Check whether present layer directories exist
for layer in layers:
if not os.path.isdir(layer):
broken_layers.append(layer)
if broken_layers:
parselog.critical("The following layer directories do not exist:")
for layer in broken_layers:
parselog.critical(" %s", layer)
parselog.critical("Please check BBLAYERS in %s" % (layerconf))
raise bb.BBHandledException()
layerseries = None
compat_entries = {}
for layer in layers:
parselog.debug2("Adding layer %s", layer)
if 'HOME' in approved and '~' in layer:
layer = os.path.expanduser(layer)
if layer.endswith('/'):
layer = layer.rstrip('/')
data.setVar('LAYERDIR', layer)
data.setVar('LAYERDIR_RE', re.escape(layer))
data = parse_config_file(os.path.join(layer, "conf", "layer.conf"), data)
data.expandVarref('LAYERDIR')
data.expandVarref('LAYERDIR_RE')
# Sadly we can't have nice things.
# Some layers think they're going to be 'clever' and copy the values from
# another layer, e.g. using ${LAYERSERIES_COMPAT_core}. The whole point of
# this mechanism is to make it clear which releases a layer supports and
# show when a layer master branch is bitrotting and is unmaintained.
# We therefore avoid people doing this here.
collections = (data.getVar('BBFILE_COLLECTIONS') or "").split()
for c in collections:
compat_entry = data.getVar("LAYERSERIES_COMPAT_%s" % c)
if compat_entry:
compat_entries[c] = set(compat_entry.split())
data.delVar("LAYERSERIES_COMPAT_%s" % c)
if not layerseries:
layerseries = set((data.getVar("LAYERSERIES_CORENAMES") or "").split())
if layerseries:
data.delVar("LAYERSERIES_CORENAMES")
data.delVar('LAYERDIR_RE')
data.delVar('LAYERDIR')
for c in compat_entries:
data.setVar("LAYERSERIES_COMPAT_%s" % c, " ".join(sorted(compat_entries[c])))
bbfiles_dynamic = (data.getVar('BBFILES_DYNAMIC') or "").split()
collections = (data.getVar('BBFILE_COLLECTIONS') or "").split()
invalid = []
for entry in bbfiles_dynamic:
parts = entry.split(":", 1)
if len(parts) != 2:
invalid.append(entry)
continue
l, f = parts
invert = l[0] == "!"
if invert:
l = l[1:]
if (l in collections and not invert) or (l not in collections and invert):
data.appendVar("BBFILES", " " + f)
if invalid:
bb.fatal("BBFILES_DYNAMIC entries must be of the form {!}<collection name>:<filename pattern>, not:\n %s" % "\n ".join(invalid))
collections_tmp = collections[:]
for c in collections:
collections_tmp.remove(c)
if c in collections_tmp:
bb.fatal("Found duplicated BBFILE_COLLECTIONS '%s', check bblayers.conf or layer.conf to fix it." % c)
compat = set()
if c in compat_entries:
compat = compat_entries[c]
if compat and not layerseries:
bb.fatal("No core layer found to work with layer '%s'. Missing entry in bblayers.conf?" % c)
if compat and not (compat & layerseries):
bb.fatal("Layer %s is not compatible with the core layer which only supports these series: %s (layer is compatible with %s)"
% (c, " ".join(layerseries), " ".join(compat)))
elif not compat and not data.getVar("BB_WORKERCONTEXT"):
bb.warn("Layer %s should set LAYERSERIES_COMPAT_%s in its conf/layer.conf file to list the core layer names it is compatible with." % (c, c))
data.setVar("LAYERSERIES_CORENAMES", " ".join(sorted(layerseries)))
if not data.getVar("BBPATH"):
msg = "The BBPATH variable is not set"
if not layerconf:
msg += (" and bitbake did not find a conf/bblayers.conf file in"
" the expected location.\nMaybe you accidentally"
" invoked bitbake from the wrong directory?")
bb.fatal(msg)
if not data.getVar("TOPDIR"):
data.setVar("TOPDIR", os.path.abspath(os.getcwd()))
if not data.getVar("BB_CACHEDIR"):
data.setVar("BB_CACHEDIR", "${TOPDIR}/cache")
bb.codeparser.parser_cache_init(data.getVar("BB_CACHEDIR"))
data = parse_config_file(os.path.join("conf", "bitbake.conf"), data)
# Parse files for loading *after* bitbake.conf and any includes
for p in postfiles:
data = parse_config_file(p, data)
# Handle any INHERITs and inherit the base class
bbclasses = ["base"] + (data.getVar('INHERIT') or "").split()
for bbclass in bbclasses:
data = _inherit(bbclass, data)
# Normally we only register event handlers at the end of parsing .bb files
# We register any handlers we've found so far here...
for var in data.getVar('__BBHANDLERS', False) or []:
handlerfn = data.getVarFlag(var, "filename", False)
if not handlerfn:
parselog.critical("Undefined event handler function '%s'" % var)
raise bb.BBHandledException()
handlerln = int(data.getVarFlag(var, "lineno", False))
bb.event.register(var, data.getVar(var, False), (data.getVarFlag(var, "eventmask") or "").split(), handlerfn, handlerln, data)
data.setVar('BBINCLUDED',bb.parse.get_file_depends(data))
return data
@staticmethod
def _parse_recipe(bb_data, bbfile, appends, mc, layername):
bb_data.setVar("__BBMULTICONFIG", mc)
bb_data.setVar("FILE_LAYERNAME", layername)
bbfile_loc = os.path.abspath(os.path.dirname(bbfile))
bb.parse.cached_mtime_noerror(bbfile_loc)
if appends:
bb_data.setVar('__BBAPPEND', " ".join(appends))
bb_data = bb.parse.handle(bbfile, bb_data)
return bb_data
def parseRecipeVariants(self, bbfile, appends, virtonly=False, mc=None, layername=None):
"""
Load and parse one .bb build file
Return the data and whether parsing resulted in the file being skipped
"""
if virtonly:
(bbfile, virtual, mc) = bb.cache.virtualfn2realfn(bbfile)
bb_data = self.mcdata[mc].createCopy()
bb_data.setVar("__ONLYFINALISE", virtual or "default")
datastores = self._parse_recipe(bb_data, bbfile, appends, mc, layername)
return datastores
if mc is not None:
bb_data = self.mcdata[mc].createCopy()
return self._parse_recipe(bb_data, bbfile, appends, mc, layername)
bb_data = self.data.createCopy()
datastores = self._parse_recipe(bb_data, bbfile, appends, '', layername)
for mc in self.mcdata:
if not mc:
continue
bb_data = self.mcdata[mc].createCopy()
newstores = self._parse_recipe(bb_data, bbfile, appends, mc, layername)
for ns in newstores:
datastores["mc:%s:%s" % (mc, ns)] = newstores[ns]
return datastores
def parseRecipe(self, virtualfn, appends, layername):
"""
Return a complete set of data for fn.
To do this, we need to parse the file.
"""
logger.debug("Parsing %s (full)" % virtualfn)
(fn, virtual, mc) = bb.cache.virtualfn2realfn(virtualfn)
bb_data = self.parseRecipeVariants(virtualfn, appends, virtonly=True, layername=layername)
return bb_data[virtual]

101
bitbake/lib/bb/daemonize.py Normal file
View File

@@ -0,0 +1,101 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
"""
Python Daemonizing helper
Originally based on code Copyright (C) 2005 Chad J. Schroeder but now heavily modified
to allow a function to be daemonized and return for bitbake use by Richard Purdie
"""
import os
import sys
import io
import traceback
import bb
def createDaemon(function, logfile):
"""
Detach a process from the controlling terminal and run it in the
background as a daemon, returning control to the caller.
"""
# Ensure stdout/stderror are flushed before forking to avoid duplicate output
sys.stdout.flush()
sys.stderr.flush()
try:
# Fork a child process so the parent can exit. This returns control to
# the command-line or shell. It also guarantees that the child will not
# be a process group leader, since the child receives a new process ID
# and inherits the parent's process group ID. This step is required
# to insure that the next call to os.setsid is successful.
pid = os.fork()
except OSError as e:
raise Exception("%s [%d]" % (e.strerror, e.errno))
if (pid == 0): # The first child.
# To become the session leader of this new session and the process group
# leader of the new process group, we call os.setsid(). The process is
# also guaranteed not to have a controlling terminal.
os.setsid()
try:
# Fork a second child and exit immediately to prevent zombies. This
# causes the second child process to be orphaned, making the init
# process responsible for its cleanup. And, since the first child is
# a session leader without a controlling terminal, it's possible for
# it to acquire one by opening a terminal in the future (System V-
# based systems). This second fork guarantees that the child is no
# longer a session leader, preventing the daemon from ever acquiring
# a controlling terminal.
pid = os.fork() # Fork a second child.
except OSError as e:
raise Exception("%s [%d]" % (e.strerror, e.errno))
if (pid != 0):
# Parent (the first child) of the second child.
# exit() or _exit()?
# _exit is like exit(), but it doesn't call any functions registered
# with atexit (and on_exit) or any registered signal handlers. It also
# closes any open file descriptors, but doesn't flush any buffered output.
# Using exit() may cause all any temporary files to be unexpectedly
# removed. It's therefore recommended that child branches of a fork()
# and the parent branch(es) of a daemon use _exit().
os._exit(0)
else:
os.waitpid(pid, 0)
return
# The second child.
# Replace standard fds with our own
with open('/dev/null', 'r') as si:
os.dup2(si.fileno(), sys.stdin.fileno())
with open(logfile, 'a+') as so:
try:
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(so.fileno(), sys.stderr.fileno())
except io.UnsupportedOperation:
sys.stdout = so
# Have stdout and stderr be the same so log output matches chronologically
# and there aren't two separate buffers
sys.stderr = sys.stdout
try:
function()
except Exception as e:
traceback.print_exc()
finally:
bb.event.print_ui_queue()
# os._exit() doesn't flush open files like os.exit() does. Manually flush
# stdout and stderr so that any logging output will be seen, particularly
# exception tracebacks.
sys.stdout.flush()
sys.stderr.flush()
os._exit(0)

448
bitbake/lib/bb/data.py Normal file
View File

@@ -0,0 +1,448 @@
"""
BitBake 'Data' implementations
Functions for interacting with the data structure used by the
BitBake build tools.
expandKeys and datastore iteration are the most expensive
operations. Updating overrides is now "on the fly" but still based
on the idea of the cookie monster introduced by zecke:
"At night the cookie monster came by and
suggested 'give me cookies on setting the variables and
things will work out'. Taking this suggestion into account
applying the skills from the not yet passed 'Entwurf und
Analyse von Algorithmen' lecture and the cookie
monster seems to be right. We will track setVar more carefully
to have faster datastore operations."
This is a trade-off between speed and memory again but
the speed is more critical here.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2005 Holger Hans Peter Freyther
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import sys, os, re
import hashlib
from itertools import groupby
from bb import data_smart
from bb import codeparser
import bb
logger = data_smart.logger
_dict_type = data_smart.DataSmart
def init():
"""Return a new object representing the Bitbake data"""
return _dict_type()
def init_db(parent = None):
"""Return a new object representing the Bitbake data,
optionally based on an existing object"""
if parent is not None:
return parent.createCopy()
else:
return _dict_type()
def createCopy(source):
"""Link the source set to the destination
If one does not find the value in the destination set,
search will go on to the source set to get the value.
Value from source are copy-on-write. i.e. any try to
modify one of them will end up putting the modified value
in the destination set.
"""
return source.createCopy()
def initVar(var, d):
"""Non-destructive var init for data structure"""
d.initVar(var)
def keys(d):
"""Return a list of keys in d"""
return d.keys()
def expand(s, d, varname = None):
"""Variable expansion using the data store"""
return d.expand(s, varname)
def expandKeys(alterdata, readdata = None):
if readdata is None:
readdata = alterdata
todolist = {}
for key in alterdata:
if not '${' in key:
continue
ekey = expand(key, readdata)
if key == ekey:
continue
todolist[key] = ekey
# These two for loops are split for performance to maximise the
# usefulness of the expand cache
for key in sorted(todolist):
ekey = todolist[key]
newval = alterdata.getVar(ekey, False)
if newval is not None:
val = alterdata.getVar(key, False)
if val is not None:
bb.warn("Variable key %s (%s) replaces original key %s (%s)." % (key, val, ekey, newval))
alterdata.renameVar(key, ekey)
def inheritFromOS(d, savedenv, permitted):
"""Inherit variables from the initial environment."""
exportlist = bb.utils.preserved_envvars_exported()
for s in savedenv.keys():
if s in permitted:
try:
d.setVar(s, savedenv.getVar(s), op = 'from env')
if s in exportlist:
d.setVarFlag(s, "export", True, op = 'auto env export')
except TypeError:
pass
def emit_var(var, o=sys.__stdout__, d = init(), all=False):
"""Emit a variable to be sourced by a shell."""
func = d.getVarFlag(var, "func", False)
if d.getVarFlag(var, 'python', False) and func:
return False
export = bb.utils.to_boolean(d.getVarFlag(var, "export"))
unexport = bb.utils.to_boolean(d.getVarFlag(var, "unexport"))
if not all and not export and not unexport and not func:
return False
try:
if all:
oval = d.getVar(var, False)
val = d.getVar(var)
except (KeyboardInterrupt):
raise
except Exception as exc:
o.write('# expansion of %s threw %s: %s\n' % (var, exc.__class__.__name__, str(exc)))
return False
if all:
d.varhistory.emit(var, oval, val, o, d)
if (var.find("-") != -1 or var.find(".") != -1 or var.find('{') != -1 or var.find('}') != -1 or var.find('+') != -1) and not all:
return False
varExpanded = d.expand(var)
if unexport:
o.write('unset %s\n' % varExpanded)
return False
if val is None:
return False
val = str(val)
if varExpanded.startswith("BASH_FUNC_"):
varExpanded = varExpanded[10:-2]
val = val[3:] # Strip off "() "
o.write("%s() %s\n" % (varExpanded, val))
o.write("export -f %s\n" % (varExpanded))
return True
if func:
# Write a comment indicating where the shell function came from (line number and filename) to make it easier
# for the user to diagnose task failures. This comment is also used by build.py to determine the metadata
# location of shell functions.
o.write("# line: {0}, file: {1}\n".format(
d.getVarFlag(var, "lineno", False),
d.getVarFlag(var, "filename", False)))
# NOTE: should probably check for unbalanced {} within the var
val = val.rstrip('\n')
o.write("%s() {\n%s\n}\n" % (varExpanded, val))
return 1
if export:
o.write('export ')
# if we're going to output this within doublequotes,
# to a shell, we need to escape the quotes in the var
alter = re.sub('"', '\\"', val)
alter = re.sub('\n', ' \\\n', alter)
alter = re.sub('\\$', '\\\\$', alter)
o.write('%s="%s"\n' % (varExpanded, alter))
return False
def emit_env(o=sys.__stdout__, d = init(), all=False):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
isfunc = lambda key: bool(d.getVarFlag(key, "func", False))
keys = sorted((key for key in d.keys() if not key.startswith("__")), key=isfunc)
grouped = groupby(keys, isfunc)
for isfunc, keys in grouped:
for key in sorted(keys):
emit_var(key, o, d, all and not isfunc) and o.write('\n')
def exported_keys(d):
return (key for key in d.keys() if not key.startswith('__') and
bb.utils.to_boolean(d.getVarFlag(key, 'export')) and
not bb.utils.to_boolean(d.getVarFlag(key, 'unexport')))
def exported_vars(d):
k = list(exported_keys(d))
for key in k:
try:
value = d.getVar(key)
except Exception as err:
bb.warn("%s: Unable to export ${%s}: %s" % (d.getVar("FILE"), key, err))
continue
if value is not None:
yield key, str(value)
def emit_func(func, o=sys.__stdout__, d = init()):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
keys = (key for key in d.keys() if not key.startswith("__") and not d.getVarFlag(key, "func", False))
for key in sorted(keys):
emit_var(key, o, d, False)
o.write('\n')
emit_var(func, o, d, False) and o.write('\n')
newdeps = bb.codeparser.ShellParser(func, logger).parse_shell(d.getVar(func))
newdeps |= set((d.getVarFlag(func, "vardeps") or "").split())
seen = set()
while newdeps:
deps = newdeps
seen |= deps
newdeps = set()
for dep in sorted(deps):
if d.getVarFlag(dep, "func", False) and not d.getVarFlag(dep, "python", False):
emit_var(dep, o, d, False) and o.write('\n')
newdeps |= bb.codeparser.ShellParser(dep, logger).parse_shell(d.getVar(dep))
newdeps |= set((d.getVarFlag(dep, "vardeps") or "").split())
newdeps -= seen
_functionfmt = """
def {function}(d):
{body}"""
def emit_func_python(func, o=sys.__stdout__, d = init()):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
def write_func(func, o, call = False):
body = d.getVar(func, False)
if not body.startswith("def"):
body = _functionfmt.format(function=func, body=body)
o.write(body.strip() + "\n\n")
if call:
o.write(func + "(d)" + "\n\n")
write_func(func, o, True)
pp = bb.codeparser.PythonParser(func, logger)
pp.parse_python(d.getVar(func, False))
newdeps = pp.execs
newdeps |= set((d.getVarFlag(func, "vardeps") or "").split())
seen = set()
while newdeps:
deps = newdeps
seen |= deps
newdeps = set()
for dep in deps:
if d.getVarFlag(dep, "func", False) and d.getVarFlag(dep, "python", False):
write_func(dep, o)
pp = bb.codeparser.PythonParser(dep, logger)
pp.parse_python(d.getVar(dep, False))
newdeps |= pp.execs
newdeps |= set((d.getVarFlag(dep, "vardeps") or "").split())
newdeps -= seen
def build_dependencies(key, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d, codeparsedata):
def handle_contains(value, contains, exclusions, d):
newvalue = []
if value:
newvalue.append(str(value))
for k in sorted(contains):
if k in exclusions or k in ignored_vars:
continue
l = (d.getVar(k) or "").split()
for item in sorted(contains[k]):
for word in item.split():
if not word in l:
newvalue.append("\n%s{%s} = Unset" % (k, item))
break
else:
newvalue.append("\n%s{%s} = Set" % (k, item))
return "".join(newvalue)
def handle_remove(value, deps, removes, d):
for r in sorted(removes):
r2 = d.expandWithRefs(r, None)
value += "\n_remove of %s" % r
deps |= r2.references
deps = deps | (keys & r2.execs)
value = handle_contains(value, r2.contains, exclusions, d)
return value
deps = set()
try:
if key in mod_funcs:
exclusions = set()
moddep = bb.codeparser.modulecode_deps[key]
value = handle_contains("", moddep[3], exclusions, d)
return frozenset((moddep[0] | keys & moddep[1]) - ignored_vars), value
if key[-1] == ']':
vf = key[:-1].split('[')
if vf[1] == "vardepvalueexclude":
return deps, ""
value, parser = d.getVarFlag(vf[0], vf[1], False, retparser=True)
deps |= parser.references
deps = deps | (keys & parser.execs)
deps -= ignored_vars
return frozenset(deps), value
varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {}
vardeps = varflags.get("vardeps")
exclusions = varflags.get("vardepsexclude", "").split()
if "vardepvalue" in varflags:
value = varflags.get("vardepvalue")
elif varflags.get("func"):
if varflags.get("python"):
value = codeparsedata.getVarFlag(key, "_content", False)
parser = bb.codeparser.PythonParser(key, logger)
parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno"))
deps = deps | parser.references
deps = deps | (keys & parser.execs)
value = handle_contains(value, parser.contains, exclusions, d)
else:
value, parsedvar = codeparsedata.getVarFlag(key, "_content", False, retparser=True)
parser = bb.codeparser.ShellParser(key, logger)
parser.parse_shell(parsedvar.value)
deps = deps | shelldeps
deps = deps | parsedvar.references
deps = deps | (keys & parser.execs) | (keys & parsedvar.execs)
value = handle_contains(value, parsedvar.contains, exclusions, d)
if hasattr(parsedvar, "removes"):
value = handle_remove(value, deps, parsedvar.removes, d)
if vardeps is None:
parser.log.flush()
if "prefuncs" in varflags:
deps = deps | set(varflags["prefuncs"].split())
if "postfuncs" in varflags:
deps = deps | set(varflags["postfuncs"].split())
if "exports" in varflags:
deps = deps | set(varflags["exports"].split())
else:
value, parser = d.getVarFlag(key, "_content", False, retparser=True)
deps |= parser.references
deps = deps | (keys & parser.execs)
value = handle_contains(value, parser.contains, exclusions, d)
if hasattr(parser, "removes"):
value = handle_remove(value, deps, parser.removes, d)
if "vardepvalueexclude" in varflags:
exclude = varflags.get("vardepvalueexclude")
for excl in exclude.split('|'):
if excl:
value = value.replace(excl, '')
# Add varflags, assuming an exclusion list is set
if varflagsexcl:
varfdeps = []
for f in varflags:
if f not in varflagsexcl:
varfdeps.append('%s[%s]' % (key, f))
if varfdeps:
deps |= set(varfdeps)
deps |= set((vardeps or "").split())
deps -= set(exclusions)
deps -= ignored_vars
except bb.parse.SkipRecipe:
raise
except Exception as e:
bb.warn("Exception during build_dependencies for %s" % key)
raise
return frozenset(deps), value
#bb.note("Variable %s references %s and calls %s" % (key, str(deps), str(execs)))
#d.setVarFlag(key, "vardeps", deps)
def generate_dependencies(d, ignored_vars):
mod_funcs = set(bb.codeparser.modulecode_deps.keys())
keys = set(key for key in d if not key.startswith("__")) | mod_funcs
shelldeps = set(key for key in d.getVar("__exportlist", False) if bb.utils.to_boolean(d.getVarFlag(key, "export")) and not bb.utils.to_boolean(d.getVarFlag(key, "unexport")))
varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS')
codeparserd = d.createCopy()
for forced in (d.getVar('BB_HASH_CODEPARSER_VALS') or "").split():
key, value = forced.split("=", 1)
codeparserd.setVar(key, value)
deps = {}
values = {}
tasklist = d.getVar('__BBTASKS', False) or []
for task in tasklist:
deps[task], values[task] = build_dependencies(task, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d, codeparserd)
newdeps = deps[task]
seen = set()
while newdeps:
nextdeps = newdeps
seen |= nextdeps
newdeps = set()
for dep in nextdeps:
if dep not in deps:
deps[dep], values[dep] = build_dependencies(dep, keys, mod_funcs, shelldeps, varflagsexcl, ignored_vars, d, codeparserd)
newdeps |= deps[dep]
newdeps -= seen
#print "For %s: %s" % (task, str(deps[task]))
return tasklist, deps, values
def generate_dependency_hash(tasklist, gendeps, lookupcache, ignored_vars, fn):
taskdeps = {}
basehash = {}
for task in tasklist:
data = lookupcache[task]
if data is None:
bb.error("Task %s from %s seems to be empty?!" % (task, fn))
data = []
else:
data = [data]
newdeps = gendeps[task]
seen = set()
while newdeps:
nextdeps = newdeps
seen |= nextdeps
newdeps = set()
for dep in nextdeps:
newdeps |= gendeps[dep]
newdeps -= seen
alldeps = sorted(seen)
for dep in alldeps:
data.append(dep)
var = lookupcache[dep]
if var is not None:
data.append(str(var))
k = fn + ":" + task
basehash[k] = hashlib.sha256("".join(data).encode("utf-8")).hexdigest()
taskdeps[task] = frozenset(seen)
return taskdeps, basehash
def inherits_class(klass, d):
val = d.getVar('__inherit_cache', False) or []
needle = '/%s.bbclass' % klass
for v in val:
if v.endswith(needle):
return True
return False

1118
bitbake/lib/bb/data_smart.py Normal file

File diff suppressed because it is too large Load Diff

874
bitbake/lib/bb/event.py Normal file
View File

@@ -0,0 +1,874 @@
"""
BitBake 'Event' implementation
Classes and functions for manipulating 'events' in the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# SPDX-License-Identifier: GPL-2.0-only
#
import ast
import atexit
import collections
import logging
import pickle
import sys
import threading
import traceback
import bb.exceptions
import bb.utils
# This is the pid for which we should generate the event. This is set when
# the runqueue forks off.
worker_pid = 0
worker_fire = None
logger = logging.getLogger('BitBake.Event')
class Event(object):
"""Base class for events"""
def __init__(self):
self.pid = worker_pid
class HeartbeatEvent(Event):
"""Triggered at regular time intervals of 10 seconds. Other events can fire much more often
(runQueueTaskStarted when there are many short tasks) or not at all for long periods
of time (again runQueueTaskStarted, when there is just one long-running task), so this
event is more suitable for doing some task-independent work occasionally."""
def __init__(self, time):
Event.__init__(self)
self.time = time
Registered = 10
AlreadyRegistered = 14
def get_class_handlers():
return _handlers
def set_class_handlers(h):
global _handlers
_handlers = h
def clean_class_handlers():
return collections.OrderedDict()
# Internal
_handlers = clean_class_handlers()
_ui_handlers = {}
_ui_logfilters = {}
_ui_handler_seq = 0
_event_handler_map = {}
_catchall_handlers = {}
_eventfilter = None
_uiready = False
_thread_lock = threading.Lock()
_heartbeat_enabled = False
_should_exit = threading.Event()
def enable_threadlock():
# Always needed now
return
def disable_threadlock():
# Always needed now
return
def enable_heartbeat():
global _heartbeat_enabled
_heartbeat_enabled = True
def disable_heartbeat():
global _heartbeat_enabled
_heartbeat_enabled = False
#
# In long running code, this function should be called periodically
# to check if we should exit due to an interuption (.e.g Ctrl+C from the UI)
#
def check_for_interrupts(d):
global _should_exit
if _should_exit.is_set():
bb.warn("Exiting due to interrupt.")
raise bb.BBHandledException()
def execute_handler(name, handler, event, d):
event.data = d
try:
ret = handler(event, d)
except (bb.parse.SkipRecipe, bb.BBHandledException):
raise
except Exception:
etype, value, tb = sys.exc_info()
logger.error("Execution of event handler '%s' failed" % name,
exc_info=(etype, value, tb.tb_next))
raise
except SystemExit as exc:
if exc.code != 0:
logger.error("Execution of event handler '%s' failed" % name)
raise
finally:
del event.data
def fire_class_handlers(event, d):
if isinstance(event, logging.LogRecord):
return
eid = str(event.__class__)[8:-2]
evt_hmap = _event_handler_map.get(eid, {})
for name, handler in list(_handlers.items()):
if name in _catchall_handlers or name in evt_hmap:
if _eventfilter:
if not _eventfilter(name, handler, event, d):
continue
if d is not None and not name in (d.getVar("__BBHANDLERS_MC") or set()):
continue
execute_handler(name, handler, event, d)
ui_queue = []
@atexit.register
def print_ui_queue():
global ui_queue
"""If we're exiting before a UI has been spawned, display any queued
LogRecords to the console."""
logger = logging.getLogger("BitBake")
if not _uiready:
from bb.msg import BBLogFormatter
# Flush any existing buffered content
try:
sys.stdout.flush()
except:
pass
try:
sys.stderr.flush()
except:
pass
stdout = logging.StreamHandler(sys.stdout)
stderr = logging.StreamHandler(sys.stderr)
formatter = BBLogFormatter("%(levelname)s: %(message)s")
stdout.setFormatter(formatter)
stderr.setFormatter(formatter)
# First check to see if we have any proper messages
msgprint = False
msgerrs = False
# Should we print to stderr?
for event in ui_queue[:]:
if isinstance(event, logging.LogRecord) and event.levelno >= logging.WARNING:
msgerrs = True
break
if msgerrs:
logger.addHandler(stderr)
else:
logger.addHandler(stdout)
for event in ui_queue[:]:
if isinstance(event, logging.LogRecord):
if event.levelno > logging.DEBUG:
logger.handle(event)
msgprint = True
# Nope, so just print all of the messages we have (including debug messages)
if not msgprint:
for event in ui_queue[:]:
if isinstance(event, logging.LogRecord):
logger.handle(event)
if msgerrs:
logger.removeHandler(stderr)
else:
logger.removeHandler(stdout)
ui_queue = []
def fire_ui_handlers(event, d):
global _thread_lock
if not _uiready:
# No UI handlers registered yet, queue up the messages
ui_queue.append(event)
return
with bb.utils.lock_timeout(_thread_lock):
errors = []
for h in _ui_handlers:
#print "Sending event %s" % event
try:
if not _ui_logfilters[h].filter(event):
continue
# We use pickle here since it better handles object instances
# which xmlrpc's marshaller does not. Events *must* be serializable
# by pickle.
if hasattr(_ui_handlers[h].event, "sendpickle"):
_ui_handlers[h].event.sendpickle((pickle.dumps(event)))
else:
_ui_handlers[h].event.send(event)
except:
errors.append(h)
for h in errors:
del _ui_handlers[h]
def fire(event, d):
"""Fire off an Event"""
# We can fire class handlers in the worker process context and this is
# desired so they get the task based datastore.
# UI handlers need to be fired in the server context so we defer this. They
# don't have a datastore so the datastore context isn't a problem.
fire_class_handlers(event, d)
if worker_fire:
worker_fire(event, d)
else:
# If messages have been queued up, clear the queue
global _uiready, ui_queue
if _uiready and ui_queue:
for queue_event in ui_queue:
fire_ui_handlers(queue_event, d)
ui_queue = []
fire_ui_handlers(event, d)
def fire_from_worker(event, d):
fire_ui_handlers(event, d)
noop = lambda _: None
def register(name, handler, mask=None, filename=None, lineno=None, data=None):
"""Register an Event handler"""
if data is not None and data.getVar("BB_CURRENT_MC"):
mc = data.getVar("BB_CURRENT_MC")
name = '%s%s' % (mc.replace('-', '_'), name)
# already registered
if name in _handlers:
if data is not None:
bbhands_mc = (data.getVar("__BBHANDLERS_MC") or set())
bbhands_mc.add(name)
data.setVar("__BBHANDLERS_MC", bbhands_mc)
return AlreadyRegistered
if handler is not None:
# handle string containing python code
if isinstance(handler, str):
tmp = "def %s(e, d):\n%s" % (name, handler)
try:
code = bb.methodpool.compile_cache(tmp)
if not code:
if filename is None:
filename = "%s(e, d)" % name
code = compile(tmp, filename, "exec", ast.PyCF_ONLY_AST)
if lineno is not None:
ast.increment_lineno(code, lineno-1)
code = compile(code, filename, "exec")
bb.methodpool.compile_cache_add(tmp, code)
except SyntaxError:
logger.error("Unable to register event handler '%s':\n%s", name,
''.join(traceback.format_exc(limit=0)))
_handlers[name] = noop
return
env = {}
bb.utils.better_exec(code, env)
func = bb.utils.better_eval(name, env)
_handlers[name] = func
else:
_handlers[name] = handler
if not mask or '*' in mask:
_catchall_handlers[name] = True
else:
for m in mask:
if _event_handler_map.get(m, None) is None:
_event_handler_map[m] = {}
_event_handler_map[m][name] = True
if data is not None:
bbhands_mc = (data.getVar("__BBHANDLERS_MC") or set())
bbhands_mc.add(name)
data.setVar("__BBHANDLERS_MC", bbhands_mc)
return Registered
def remove(name, handler, data=None):
"""Remove an Event handler"""
if data is not None:
if data.getVar("BB_CURRENT_MC"):
mc = data.getVar("BB_CURRENT_MC")
name = '%s%s' % (mc.replace('-', '_'), name)
_handlers.pop(name)
if name in _catchall_handlers:
_catchall_handlers.pop(name)
for event in _event_handler_map.keys():
if name in _event_handler_map[event]:
_event_handler_map[event].pop(name)
if data is not None:
bbhands_mc = (data.getVar("__BBHANDLERS_MC") or set())
if name in bbhands_mc:
bbhands_mc.remove(name)
data.setVar("__BBHANDLERS_MC", bbhands_mc)
def get_handlers():
return _handlers
def set_handlers(handlers):
global _handlers
_handlers = handlers
def set_eventfilter(func):
global _eventfilter
_eventfilter = func
def register_UIHhandler(handler, mainui=False):
with bb.utils.lock_timeout(_thread_lock):
bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1
_ui_handlers[_ui_handler_seq] = handler
level, debug_domains = bb.msg.constructLogOptions()
_ui_logfilters[_ui_handler_seq] = UIEventFilter(level, debug_domains)
if mainui:
global _uiready
_uiready = _ui_handler_seq
return _ui_handler_seq
def unregister_UIHhandler(handlerNum, mainui=False):
if mainui:
global _uiready
_uiready = False
with bb.utils.lock_timeout(_thread_lock):
if handlerNum in _ui_handlers:
del _ui_handlers[handlerNum]
return
def get_uihandler():
if _uiready is False:
return None
return _uiready
# Class to allow filtering of events and specific filtering of LogRecords *before* we put them over the IPC
class UIEventFilter(object):
def __init__(self, level, debug_domains):
self.update(None, level, debug_domains)
def update(self, eventmask, level, debug_domains):
self.eventmask = eventmask
self.stdlevel = level
self.debug_domains = debug_domains
def filter(self, event):
if isinstance(event, logging.LogRecord):
if event.levelno >= self.stdlevel:
return True
if event.name in self.debug_domains and event.levelno >= self.debug_domains[event.name]:
return True
return False
eid = str(event.__class__)[8:-2]
if self.eventmask and eid not in self.eventmask:
return False
return True
def set_UIHmask(handlerNum, level, debug_domains, mask):
if not handlerNum in _ui_handlers:
return False
if '*' in mask:
_ui_logfilters[handlerNum].update(None, level, debug_domains)
else:
_ui_logfilters[handlerNum].update(mask, level, debug_domains)
return True
def getName(e):
"""Returns the name of a class or class instance"""
if getattr(e, "__name__", None) is None:
return e.__class__.__name__
else:
return e.__name__
class OperationStarted(Event):
"""An operation has begun"""
def __init__(self, msg = "Operation Started"):
Event.__init__(self)
self.msg = msg
class OperationCompleted(Event):
"""An operation has completed"""
def __init__(self, total, msg = "Operation Completed"):
Event.__init__(self)
self.total = total
self.msg = msg
class OperationProgress(Event):
"""An operation is in progress"""
def __init__(self, current, total, msg = "Operation in Progress"):
Event.__init__(self)
self.current = current
self.total = total
self.msg = msg + ": %s/%s" % (current, total);
class ConfigParsed(Event):
"""Configuration Parsing Complete"""
class MultiConfigParsed(Event):
"""Multi-Config Parsing Complete"""
def __init__(self, mcdata):
self.mcdata = mcdata
Event.__init__(self)
class RecipeEvent(Event):
def __init__(self, fn):
self.fn = fn
Event.__init__(self)
class RecipePreFinalise(RecipeEvent):
""" Recipe Parsing Complete but not yet finalised"""
class RecipePostKeyExpansion(RecipeEvent):
""" Recipe Parsing Complete but not yet finalised"""
class RecipeTaskPreProcess(RecipeEvent):
"""
Recipe Tasks about to be finalised
The list of tasks should be final at this point and handlers
are only able to change interdependencies
"""
def __init__(self, fn, tasklist):
self.fn = fn
self.tasklist = tasklist
Event.__init__(self)
class RecipeParsed(RecipeEvent):
""" Recipe Parsing Complete """
class BuildBase(Event):
"""Base class for bitbake build events"""
def __init__(self, n, p, failures = 0):
self._name = n
self._pkgs = p
Event.__init__(self)
self._failures = failures
def getPkgs(self):
return self._pkgs
def setPkgs(self, pkgs):
self._pkgs = pkgs
def getName(self):
return self._name
def setName(self, name):
self._name = name
def getFailures(self):
"""
Return the number of failed packages
"""
return self._failures
pkgs = property(getPkgs, setPkgs, None, "pkgs property")
name = property(getName, setName, None, "name property")
class BuildInit(BuildBase):
"""buildFile or buildTargets was invoked"""
def __init__(self, p=[]):
name = None
BuildBase.__init__(self, name, p)
class BuildStarted(BuildBase, OperationStarted):
"""Event when builds start"""
def __init__(self, n, p, failures = 0):
OperationStarted.__init__(self, "Building Started")
BuildBase.__init__(self, n, p, failures)
class BuildCompleted(BuildBase, OperationCompleted):
"""Event when builds have completed"""
def __init__(self, total, n, p, failures=0, interrupted=0):
if not failures:
OperationCompleted.__init__(self, total, "Building Succeeded")
else:
OperationCompleted.__init__(self, total, "Building Failed")
self._interrupted = interrupted
BuildBase.__init__(self, n, p, failures)
class DiskFull(Event):
"""Disk full case build halted"""
def __init__(self, dev, type, freespace, mountpoint):
Event.__init__(self)
self._dev = dev
self._type = type
self._free = freespace
self._mountpoint = mountpoint
class DiskUsageSample:
def __init__(self, available_bytes, free_bytes, total_bytes):
# Number of bytes available to non-root processes.
self.available_bytes = available_bytes
# Number of bytes available to root processes.
self.free_bytes = free_bytes
# Total capacity of the volume.
self.total_bytes = total_bytes
class MonitorDiskEvent(Event):
"""If BB_DISKMON_DIRS is set, then this event gets triggered each time disk space is checked.
Provides information about devices that are getting monitored."""
def __init__(self, disk_usage):
Event.__init__(self)
# hash of device root path -> DiskUsageSample
self.disk_usage = disk_usage
class NoProvider(Event):
"""No Provider for an Event"""
def __init__(self, item, runtime=False, dependees=None, reasons=None, close_matches=None):
Event.__init__(self)
self._item = item
self._runtime = runtime
self._dependees = dependees
self._reasons = reasons
self._close_matches = close_matches
def getItem(self):
return self._item
def isRuntime(self):
return self._runtime
def __str__(self):
msg = ''
if self._runtime:
r = "R"
else:
r = ""
extra = ''
if not self._reasons:
if self._close_matches:
extra = ". Close matches:\n %s" % '\n '.join(sorted(set(self._close_matches)))
if self._dependees:
msg = "Nothing %sPROVIDES '%s' (but %s %sDEPENDS on or otherwise requires it)%s" % (r, self._item, ", ".join(self._dependees), r, extra)
else:
msg = "Nothing %sPROVIDES '%s'%s" % (r, self._item, extra)
if self._reasons:
for reason in self._reasons:
msg += '\n' + reason
return msg
class MultipleProviders(Event):
"""Multiple Providers"""
def __init__(self, item, candidates, runtime = False):
Event.__init__(self)
self._item = item
self._candidates = candidates
self._is_runtime = runtime
def isRuntime(self):
"""
Is this a runtime issue?
"""
return self._is_runtime
def getItem(self):
"""
The name for the to be build item
"""
return self._item
def getCandidates(self):
"""
Get the possible Candidates for a PROVIDER.
"""
return self._candidates
def __str__(self):
msg = "Multiple providers are available for %s%s (%s)" % (self._is_runtime and "runtime " or "",
self._item,
", ".join(self._candidates))
rtime = ""
if self._is_runtime:
rtime = "R"
msg += "\nConsider defining a PREFERRED_%sPROVIDER entry to match %s" % (rtime, self._item)
return msg
class ParseStarted(OperationStarted):
"""Recipe parsing for the runqueue has begun"""
def __init__(self, total):
OperationStarted.__init__(self, "Recipe parsing Started")
self.total = total
class ParseCompleted(OperationCompleted):
"""Recipe parsing for the runqueue has completed"""
def __init__(self, cached, parsed, skipped, masked, virtuals, errors, total):
OperationCompleted.__init__(self, total, "Recipe parsing Completed")
self.cached = cached
self.parsed = parsed
self.skipped = skipped
self.virtuals = virtuals
self.masked = masked
self.errors = errors
self.sofar = cached + parsed
class ParseProgress(OperationProgress):
"""Recipe parsing progress"""
def __init__(self, current, total):
OperationProgress.__init__(self, current, total, "Recipe parsing")
class CacheLoadStarted(OperationStarted):
"""Loading of the dependency cache has begun"""
def __init__(self, total):
OperationStarted.__init__(self, "Loading cache Started")
self.total = total
class CacheLoadProgress(OperationProgress):
"""Cache loading progress"""
def __init__(self, current, total):
OperationProgress.__init__(self, current, total, "Loading cache")
class CacheLoadCompleted(OperationCompleted):
"""Cache loading is complete"""
def __init__(self, total, num_entries):
OperationCompleted.__init__(self, total, "Loading cache Completed")
self.num_entries = num_entries
class TreeDataPreparationStarted(OperationStarted):
"""Tree data preparation started"""
def __init__(self):
OperationStarted.__init__(self, "Preparing tree data Started")
class TreeDataPreparationProgress(OperationProgress):
"""Tree data preparation is in progress"""
def __init__(self, current, total):
OperationProgress.__init__(self, current, total, "Preparing tree data")
class TreeDataPreparationCompleted(OperationCompleted):
"""Tree data preparation completed"""
def __init__(self, total):
OperationCompleted.__init__(self, total, "Preparing tree data Completed")
class DepTreeGenerated(Event):
"""
Event when a dependency tree has been generated
"""
def __init__(self, depgraph):
Event.__init__(self)
self._depgraph = depgraph
class TargetsTreeGenerated(Event):
"""
Event when a set of buildable targets has been generated
"""
def __init__(self, model):
Event.__init__(self)
self._model = model
class ReachableStamps(Event):
"""
An event listing all stamps reachable after parsing
which the metadata may use to clean up stale data
"""
def __init__(self, stamps):
Event.__init__(self)
self.stamps = stamps
class StaleSetSceneTasks(Event):
"""
An event listing setscene tasks which are 'stale' and will
be rerun. The metadata may use to clean up stale data.
tasks is a mapping of tasks and matching stale stamps.
"""
def __init__(self, tasks):
Event.__init__(self)
self.tasks = tasks
class FilesMatchingFound(Event):
"""
Event when a list of files matching the supplied pattern has
been generated
"""
def __init__(self, pattern, matches):
Event.__init__(self)
self._pattern = pattern
self._matches = matches
class ConfigFilesFound(Event):
"""
Event when a list of appropriate config files has been generated
"""
def __init__(self, variable, values):
Event.__init__(self)
self._variable = variable
self._values = values
class ConfigFilePathFound(Event):
"""
Event when a path for a config file has been found
"""
def __init__(self, path):
Event.__init__(self)
self._path = path
class MsgBase(Event):
"""Base class for messages"""
def __init__(self, msg):
self._message = msg
Event.__init__(self)
class MsgDebug(MsgBase):
"""Debug Message"""
class MsgNote(MsgBase):
"""Note Message"""
class MsgWarn(MsgBase):
"""Warning Message"""
class MsgError(MsgBase):
"""Error Message"""
class MsgFatal(MsgBase):
"""Fatal Message"""
class MsgPlain(MsgBase):
"""General output"""
class LogExecTTY(Event):
"""Send event containing program to spawn on tty of the logger"""
def __init__(self, msg, prog, sleep_delay, retries):
Event.__init__(self)
self.msg = msg
self.prog = prog
self.sleep_delay = sleep_delay
self.retries = retries
class LogHandler(logging.Handler):
"""Dispatch logging messages as bitbake events"""
def emit(self, record):
if record.exc_info:
etype, value, tb = record.exc_info
if hasattr(tb, 'tb_next'):
tb = list(bb.exceptions.extract_traceback(tb, context=3))
# Need to turn the value into something the logging system can pickle
record.bb_exc_info = (etype, value, tb)
record.bb_exc_formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
value = str(value)
record.exc_info = None
fire(record, None)
def filter(self, record):
record.taskpid = worker_pid
return True
class MetadataEvent(Event):
"""
Generic event that target for OE-Core classes
to report information during asynchronous execution
"""
def __init__(self, eventtype, eventdata):
Event.__init__(self)
self.type = eventtype
self._localdata = eventdata
class ProcessStarted(Event):
"""
Generic process started event (usually part of the initial startup)
where further progress events will be delivered
"""
def __init__(self, processname, total):
Event.__init__(self)
self.processname = processname
self.total = total
class ProcessProgress(Event):
"""
Generic process progress event (usually part of the initial startup)
"""
def __init__(self, processname, progress):
Event.__init__(self)
self.processname = processname
self.progress = progress
class ProcessFinished(Event):
"""
Generic process finished event (usually part of the initial startup)
"""
def __init__(self, processname):
Event.__init__(self)
self.processname = processname
class SanityCheck(Event):
"""
Event to run sanity checks, either raise errors or generate events as return status.
"""
def __init__(self, generateevents = True):
Event.__init__(self)
self.generateevents = generateevents
class SanityCheckPassed(Event):
"""
Event to indicate sanity check has passed
"""
class SanityCheckFailed(Event):
"""
Event to indicate sanity check has failed
"""
def __init__(self, msg, network_error=False):
Event.__init__(self)
self._msg = msg
self._network_error = network_error
class NetworkTest(Event):
"""
Event to run network connectivity tests, either raise errors or generate events as return status.
"""
def __init__(self, generateevents = True):
Event.__init__(self)
self.generateevents = generateevents
class NetworkTestPassed(Event):
"""
Event to indicate network test has passed
"""
class NetworkTestFailed(Event):
"""
Event to indicate network test has failed
"""
class FindSigInfoResult(Event):
"""
Event to return results from findSigInfo command
"""
def __init__(self, result):
Event.__init__(self)
self.result = result
class GetTaskSignatureResult(Event):
"""
Event to return results from GetTaskSignatures command
"""
def __init__(self, sig):
Event.__init__(self)
self.sig = sig
class ParseError(Event):
"""
Event to indicate parse failed
"""
def __init__(self, msg):
super().__init__()
self._msg = msg

View File

@@ -0,0 +1,96 @@
#
# Copyright BitBake Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
import inspect
import traceback
import bb.namedtuple_with_abc
from collections import namedtuple
class TracebackEntry(namedtuple.abc):
"""Pickleable representation of a traceback entry"""
_fields = 'filename lineno function args code_context index'
_header = ' File "{0.filename}", line {0.lineno}, in {0.function}{0.args}'
def format(self, formatter=None):
if not self.code_context:
return self._header.format(self) + '\n'
formatted = [self._header.format(self) + ':\n']
for lineindex, line in enumerate(self.code_context):
if formatter:
line = formatter(line)
if lineindex == self.index:
formatted.append(' >%s' % line)
else:
formatted.append(' %s' % line)
return formatted
def __str__(self):
return ''.join(self.format())
def _get_frame_args(frame):
"""Get the formatted arguments and class (if available) for a frame"""
arginfo = inspect.getargvalues(frame)
try:
if not arginfo.args:
return '', None
# There have been reports from the field of python 2.6 which doesn't
# return a namedtuple here but simply a tuple so fallback gracefully if
# args isn't present.
except AttributeError:
return '', None
firstarg = arginfo.args[0]
if firstarg == 'self':
self = arginfo.locals['self']
cls = self.__class__.__name__
arginfo.args.pop(0)
del arginfo.locals['self']
else:
cls = None
formatted = inspect.formatargvalues(*arginfo)
return formatted, cls
def extract_traceback(tb, context=1):
frames = inspect.getinnerframes(tb, context)
for frame, filename, lineno, function, code_context, index in frames:
formatted_args, cls = _get_frame_args(frame)
if cls:
function = '%s.%s' % (cls, function)
yield TracebackEntry(filename, lineno, function, formatted_args,
code_context, index)
def format_extracted(extracted, formatter=None, limit=None):
if limit:
extracted = extracted[-limit:]
formatted = []
for tracebackinfo in extracted:
formatted.extend(tracebackinfo.format(formatter))
return formatted
def format_exception(etype, value, tb, context=1, limit=None, formatter=None):
formatted = ['Traceback (most recent call last):\n']
if hasattr(tb, 'tb_next'):
tb = extract_traceback(tb, context)
formatted.extend(format_extracted(tb, formatter, limit))
formatted.extend(traceback.format_exception_only(etype, value))
return formatted
def to_string(exc):
if isinstance(exc, SystemExit):
if not isinstance(exc.code, str):
return 'Exited with "%d"' % exc.code
return str(exc)

View File

@@ -0,0 +1,57 @@
There are expectations of users of the fetcher code. This file attempts to document
some of the constraints that are present. Some are obvious, some are less so. It is
documented in the context of how OE uses it but the API calls are generic.
a) network access for sources is only expected to happen in the do_fetch task.
This is not enforced or tested but is required so that we can:
i) audit the sources used (i.e. for license/manifest reasons)
ii) support offline builds with a suitable cache
iii) allow work to continue even with downtime upstream
iv) allow for changes upstream in incompatible ways
v) allow rebuilding of the software in X years time
b) network access is not expected in do_unpack task.
c) you can take DL_DIR and use it as a mirror for offline builds.
d) access to the network is only made when explicitly configured in recipes
(e.g. use of AUTOREV, or use of git tags which change revision).
e) fetcher output is deterministic (i.e. if you fetch configuration XXX now it
will match in future exactly in a clean build with a new DL_DIR).
One specific pain point example are git tags. They can be replaced and change
so the git fetcher has to resolve them with the network. We use git revisions
where possible to avoid this and ensure determinism.
f) network access is expected to work with the standard linux proxy variables
so that access behind firewalls works (the fetcher sets these in the
environment but only in the do_fetch tasks).
g) access during parsing has to be minimal, a "git ls-remote" for an AUTOREV
git recipe might be ok but you can't expect to checkout a git tree.
h) we need to provide revision information during parsing such that a version
for the recipe can be constructed.
i) versions are expected to be able to increase in a way which sorts allowing
package feeds to operate (see PR server required for git revisions to sort).
j) API to query for possible version upgrades of a url is highly desireable to
allow our automated upgrage code to function (it is implied this does always
have network access).
k) Where fixes or changes to behaviour in the fetcher are made, we ask that
test cases are added (run with "bitbake-selftest bb.tests.fetch"). We do
have fairly extensive test coverage of the fetcher as it is the only way
to track all of its corner cases, it still doesn't give entire coverage
though sadly.
l) If using tools during parse time, they will have to be in ASSUME_PROVIDED
in OE's context as we can't build git-native, then parse a recipe and use
git ls-remote.
Not all fetchers support all features, autorev is optional and doesn't make
sense for some. Upgrade detection means different things in different contexts
too.

Some files were not shown because too many files have changed in this diff Show More