summaryrefslogtreecommitdiffstats
path: root/meta/classes-global
Commit message (Collapse)AuthorAgeFilesLines
* sanity.bbclass: skip check_userns for non-local uidChangqing Li2025-01-091-0/+2
| | | | | | | | | | | | | | | Bitbake preserve network for non-local uid, refer [1], so check_userns is not needed for non-local uid [1] https://git.openembedded.org/bitbake/commit/?id=4eafae7904bae6e5c6bc50356e8a9077f2e207fa (From OE-Core rev: c3e0666dd2624c20c5f32657846d6f044046205b) Signed-off-by: Changqing Li <changqing.li@windriver.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 808d0cece22bcbee15236717e158da247cbedaf1) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* sanity: check for working user namespacesRoss Burton2024-12-131-0/+24
| | | | | | | | | | | | | | | | | | If user namespaces are not available (typically because AppArmor is blocking them), alert the user. We consider network isolation sufficiently important that this is a fatal error, and the user will need to configure AppArmor to allow bitbake to create a user namespace. [ YOCTO #15592 ] (From OE-Core rev: 3577ceca39c7c3be81563de9ccf06a805f61d3ca) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit b6af956fe6e876957a49d4abf425e8c789bf0459) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* do_package/sstate/sstatesig: Change timestamp clamping to hash output onlyRichard Purdie2024-12-091-16/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code was changing the timestamps of the files in the do_package output, particularly the files added for debug sources. This was to do two things: a) make do_package sstate more reproducible b) ensure better hash equivalence matching Unfortuately the debug source files are hardlinks into the source tree for efficiency so touching these, touches a lot of files in ${B} and ${S}. This causes unpredictable effects if compile is run again for example, or could cause compiling in the install task. The hash equivalence matching is of key importance but we can mimic that using clamping of the file timestamps in the depsig output used to generate the hashes. This patch drops the global timestamp clamping, instead allowing the files to retain their creation timestamps into sstate. This makes do_package sstate slightly less reproducibile. We could clamp the sstate timestamps but that would lead to two different sets of timestamps depending on whether the data came from sstate or not. I'd prefer to have consistent code behaviour, rather than differing behavhour depending on whether data came from sstate or not. If we wanted to have reproducibiliy and fix the "corruption" of S/B and have consistent codepaths, the only other option would be two copies of the sources, which could end up huge and seems the least desireable option. This patch therefore drops the timestamp clamping in the sstate files and tweaks the depsig data generation to clamp the timestamps for do_package instead since this seems the best compromise. I validated that rpm/deb/ipk files still generate correctly as before. (From OE-Core rev: 9df0bf5775ec96773e77c489ba6a443037d65ab6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 475759fdab7200488b2a568b2ba1aa31a456d113) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* package_rpm: Check if file exists before open()Pavel Zhukov2024-11-261-4/+12
| | | | | | | | | | | | | | | | | | Exception handler tries to read() /etc/passwd file in sysroot and if file doesn't exist for any reason then it raises FileNotFoundError exception which mask the original source of the problem and makes debugging of the issue more difficult. Fixes: Exception: FileNotFoundError: [Errno 2] No such file or directory: '/codebuild/output/src1899304708/src/build/tmp-container/work/core2-64-oe-linux/emqx-bin/4.3.12/recipe-sysroot/etc/passwd' (From OE-Core rev: 1adfa8b78991764ed1f9951c5bee5412553f3b9d) Signed-off-by: Pavel Zhukov <pavel@zhukoff.net> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 4ad9a0e0b11eb7bc5a3dd45fc8945e094ea949e9) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* package_rpm: restrict rpm to 4 threadsAlexander Kanavin2024-11-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TL;DR version: with this, and the previous compression level changes I am seeing drastic speedups in package_write_rpm completion times: webkitgtk goes from 78 seconds to 37 seconds glibc-locale goes from 399 seconds to 58 seconds (!) The long version: rpm uses multithreading for two purposes: - spawning compressors (which are nowadays themselves multi-threaded, so the feature is not as useful as it once was) - parallel file classification While the former behaves well on massively parallel CPUs (it was written and verified here :), the latter was then added by upstream and only benchmarked on their very old, slow laptop, apparently: https://github.com/rpm-software-management/rpm/commit/41f0e214f2266f02d6185ba11f797716de8125d4 On anything more capable it starts showing pathologic behavior, presumably from spawning massive amount of very short-lived threads, and then having to synchronize them. For example classifying glibc-locale takes 5m20s with 256 threads (default on my machine!) 1m49s with 64 threads 59s with 16 threads 48s with 8 threads Even a more typical recipe like webkitgtk is affected: 47s with 256 threads 32s with 64 threads 27s with 16 or 8 threads I have found that the optimal amount is actually four: this also means that only four compressors are running at a time, but as they're themselves using threads, and typical recipes are dominated by just two or three large packages, this does not affect overall completion time. (From OE-Core rev: 8cbf3a2cddbff1728bd3d1382c3fec00b604501e) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Steve Sakoman <steve@sakoman.com>
* package_rpm: use zstd's default compression levelAlexander Kanavin2024-11-261-1/+1
| | | | | | | | | | | | | | | | | | zstd uses 3 by default, while 19 is the highest and slowest. It's not clear why 19 was picked to begin with, possibly I copy-pasted it from rpm's examples without thinking: https://git.yoctoproject.org/poky/commit/?h=master-next&id=4a4d5f78a6962dda5f63e9891825c80a8a87bf66 This brings significant speedups in rpm's compression step: for example compressing webkitgtk takes 11s instead of 36s. The rpm size increases from 175648k to 234860k. I think it's a worthy default tradeoff. (From OE-Core rev: 515fc186d796eaf3bfce41bd17a908ff283242ce) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Steve Sakoman <steve@sakoman.com>
* license: Fix directory layout issuesRichard Purdie2024-10-181-2/+8
| | | | | | | | | | | | | | | | | | | | | There are several issues: a) pointless empty directories were being created as a path wasn't fixed in a previous commit b) SSTATE_PKGARCH wasn't being captured into the task signature since it is in the ignore list by default. We want to capture the absolute value, not the dependencies c) with those issues fixed, cross/native issues became apparent so those need to be fixed too. (From OE-Core rev: a31b46627a85ea871deb760f3d0008de72ceb439) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Backport from oe-core master: f68aed302a0e4b86fb8c16a6ef4e7295bed48b86 Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org> Signed-off-by: Steve Sakoman <steve@sakoman.com>
* buildhistory: Simplify intercept call sites and drop SSTATEPOSTINSTFUNC usageRichard Purdie2024-09-251-1/+4
| | | | | | | | | | | | | | | | | | We planned to drop SSTATEPOSTINSTFUNC some time ago with the introduction of postfuncs. Finally get around to doing that which should make the buildhistory code a little more readable. Unfortunately ordering the buildhistory function calls after the sstate ones is difficult without coding that into the sstate class. This patch does that to ensure everything functions as expected until we can find a better way. This is still likely preferable than the generic sstate postfuncs support since the function flow is much more readable. (From OE-Core rev: 466c505b779dec2ba790f4e6cde7fbb35037f4ef) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit c9e2a8fa2f0305ef1247ec405555612326f798f8) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* insane.bbclass: remove leftover variables and commentEmil Kronborg2024-07-261-4/+0
| | | | | | | | | | | | | | | | The code that used these variable and the comment was introduced in commit b44d32ef41ef ("insane.bbclass: Portions of code were not running, fix this and sync with OE.dev. Also add tests for bad sysroot rpaths in binaries"). Later, in commit 17dae13fabe2 ("insane.bbclass: Fix ELF bitsize comparison"), some of that code was removed again, but not the variables and the comment. (From OE-Core rev: c00a9a8f25b0042b0723a5d20b88e92d473d22bf) Signed-off-by: Emil Kronborg <emil.kronborg@protonmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 730d00b0d1d1d617b62900be12fa034bb41fc48b) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* insane.bbclass: fix HOST_ variable namesEmil Kronborg2024-07-261-6/+6
| | | | | | | | | | | | | | Commit cd25e5544ca3 ("insane: use HOST_ variables, not TARGET_ to determine the cross system") updated the variables themselves, but not their names. To prevent confusion, match the Python variable name to the BitBake variable name. (From OE-Core rev: 7fd25eaa8fd5533d03d5f10792e2e6c30c64cc3c) Signed-off-by: Emil Kronborg <emil.kronborg@protonmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit f5bebc96580ec74d10bc96b4265357ebc9bcd6ad) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* insane.bbclass: remove skipping of cross-compiled packagesEmil Kronborg2024-07-261-5/+0
| | | | | | | | | | | | | | After commit cd25e5544ca3 ("insane: use HOST_ variables, not TARGET_ to determine the cross system"), this check is no longer necessary. The introduction of HOST_ variables ensures architecture compatibility is correctly checked. (From OE-Core rev: dd29c810970038e9ee427cc1b75f61e708fcd0d5) Signed-off-by: Emil Kronborg <emil.kronborg@protonmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 6e1ddeb05dcd5ff77e0f5526a6e56a484daa4864) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* sanity: Check if tar is gnutarSimone Weiß2024-07-261-0/+3
| | | | | | | | | | | | | | | | In sanity.bbclass the tar version is checked as tar needs to be recent enough for reproducible builds. Tar could also be provided by other means then gnutar, but we mean the version of gnutar in the check. Hence we also should ensure that the installed tar is gnutar. [YOCTO #14205] (From OE-Core rev: 49edd9e5d48abe66135391617c6b901a5f454dab) Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit bdef30bd887cd208d7822dd7853d33e24a6b7a4c) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* insane: handle dangling symlinks in the libdir QA checkRoss Burton2024-07-031-2/+2
| | | | | | | | | | | | | | | | | The "libdir" QA check tries to open every file it finds as an ELF. If it finds a dangling symlink that looks like a library by the filename it will try to open it and fail with FileNotFoundError error. As this dangling symlink probably points to a real file, silently absorb the error. [ YOCTO #13949 ] (From OE-Core rev: 0c263b207a309e9cdf6f55ce72e3cc751041a47c) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit f044290f98ea66f2cecfbffd7d392dbc3d986da9) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* sstate.bbclass: Add _SSTATE_EXCLUDEDEPS_SYSROOT to vardepsexcludeMark Hatle2024-05-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When using tinfoil to control the build, multiple commands (serially) could trigger an error such as: When reparsing ....bb:do_package, the basehash value changed from ... to .... The metadata is not deterministic and this needs to be fixed. ERROR: The following commands may help: ERROR: $ bitbake esw-conf -cdo_package -Snone ERROR: Then: ERROR: $ bitbake esw-conf -cdo_package -Sprintdiff However following these commands it was not able to be reproduced. Forcing bitbake to dump the signatures and then running bitbake-diffsigs showed that the value of _SSTATE_EXCLUDEDEPS_SYSROOT was being set in one run, but was blank is a different version. Upon inspecting the code in sstate.bbclass, one usage (without the _) is already excludes, the leading _ version is used as a cache, only if set but is not actually required to be defined. So ignoring the value should work properly. (From OE-Core rev: 4138f0a048149195d39347d97f8155199b6cf0cb) Signed-off-by: Mark Hatle <mark.hatle@amd.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 4ec704ed6a1cfaf0a6c20f2038e7192e361ef590) Signed-off-by: Steve Sakoman <steve@sakoman.com>
* abi_version/sstate: Switch to a new version for the upcoming releaseRichard Purdie2024-04-161-1/+1
| | | | | | | | | | | In testing websocket hashequivalence, corrupted sstate was injected into the autobuilder extensively. With the new release/LTS, being able to clearly differentiate between old and new sstate is probably desireable anyway so bump the appropriate versions. (From OE-Core rev: 7f107c180f592be29f57f580c60a6adbbebd7714) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sanity: Use diff instead of meld by defaultKhem Raj2024-04-111-1/+1
| | | | | | | | | | | meld fallback assumes that user has a gnome desktop its better to fallback to good old diff tool which will most distributions on build host will carry (From OE-Core rev: d027236eac2a136b06903d4a47adbc50ccd6b7c6) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* utils: enhance readelf command call with llvmlixiaoyong2024-03-301-2/+2
| | | | | | | | | | | | | | Replace `${HOST_PREFIX}readelf` with `${READELF}`. When utilizing llvm for compiling packages, the invocation of GNU readelf will consistently occur if the oe_soinstall and oe_libinstall functions, which are defined in utils.bbclass, are called. This behavior is unfriendly to llvm. So prefer `${READELF}` over `${HOST_PREFIX}readelf`. (From OE-Core rev: daecdd577213da0c045e45c47e7acbd279956d41) Signed-off-by: lixiaoyong <lixiaoyong19@huawei.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uninative: Add pthread linking workaroundRichard Purdie2024-03-191-2/+2
| | | | | | | | | | | | | | | With newer glibc versions, pthread was merged into the main library so there is no longer any need to link with -lpthread. On newer systems this means that linker flag is dropped from places like pkgconfig .pc files. If uninative then uses this newer library on an older system, the flag is missing and linker errors about missing symbols occur. Adding the linkage unconditionally to our uninative linking flags avoids that problem at a potential cost of slight over linking. (From OE-Core rev: 5ec2bc7ef663db4c04c85eee518297d442556481) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* mirrors: Switch llvm to use shallow cloningRichard Purdie2024-02-291-1/+5
| | | | | | | | | | | The llvm github repo appears to see a lot of churn on branches we're not interested in and is in general huge and unreliable to clone. Switch to shallow clones to improve the user experience. (From OE-Core rev: 6cf98a4954751977fb02fb2024ef842865352138) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Fix order of postinst-useradd-*Piotr Łobacz2024-02-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | postinst-useradd-* haven't been running in order of dependency. This patch is reworked from Piotr Łobacz's patch and fixes: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15084 https://bugzilla.yoctoproject.org/show_bug.cgi?id=13904 basepasswd_sysroot_postinst in base-passwd can install postinst-useradd-* scripts with any order. Sometimes this means, for example a useradd postinst will attempt to run without the corresponding group postinst causing errors. This patch ensures that we first run groupadd, then useradd and then group membership. [RP: Tweaked to avoid removing previous fixes and for whitespace/style issues Also ensure the scripts are changed to execute with -e to highlight errors] (From OE-Core rev: 322ef726132a47d977d2c6ee41de5358f1e85994) Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com> Signed-off-by: Piotr Łobacz <p.lobacz@welotec.com> Signed-off-by: Jan Górski <j.gorski@welotec.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane.bbclass: Allow the warning about virtual/ to be disabledPeter Kjellerstedt2024-02-201-6/+7
| | | | | | | | | | | Commit f673d3d239799fb1ab50f4aa5d44187666aa0cd7 introduced a warning for virtual/ being used in RPROVIDES and RDEPENDS. Make it possible to disable the warning by removing "virtual-slash from WARN_QA. (From OE-Core rev: 968ffdb9fee5017eecce36ce878ea604c869ce95) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* patch.bbclass: Make use of oe.patch.GitApplyTree.commitIgnored()Peter Kjellerstedt2024-02-191-3/+1
| | | | | | | | | | This makes use of the oe.patch.GitApplyTree.commitIgnored() function to create commits that shall be ignored by `devtool finish`. (From OE-Core rev: 2393dc35a93546eccee0dd313a6927c7d1512c3b) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: Only sign packages at the time of their creationTobias Hagelborn2024-02-181-46/+94
| | | | | | | | | | | | | | | | | The purpose of the change is to never sign a package not created by the build itself. sstate_create_package is refactored into Python and re-designed to handle signing inside the function. Thus, the signing should never apply to existing sstate packages. The function is therefore renamed into sstate_create_and_sign_package. The creation of the archive remains in a separate shellscript function. Co-authored-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> (From OE-Core rev: ba223f8fff19ea59440d56cf3fe46200f3f71e22) Signed-off-by: Tobias Hagelborn <tobias.hagelborn@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/package: add LOCALE_PATHS to add define all locations for localesJonathan GUILLOT2024-02-141-0/+1
| | | | | | | | | | | | | Some packages may contain localized files not located in default path ${datadir}/locale. Add the new variable LOCALE_PATHS to allow a recipe to define extra paths or even fully override the scanned directories. LOCALE_PATHS is set at ${datadir}/locale by default to keep the exact same behavior for the recipes which did not need modification. (From OE-Core rev: 0ffc7cf01225743789ac30dd325fca05b9203be1) Signed-off-by: Jonathan GUILLOT <jonathan@joggee.fr> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sanity.bbclass: raise_sanity_error if /tmp is noexecMichal Sieron2024-02-131-0/+4
| | | | | | | | | | | | | Older meson versions save temporary scripts in /tmp. Similarly some recipies also do that (e.g. ccan in sbsigntool). As this can lead to unexpected build failures with no simple way to workaround, make such setup a fatal error. (From OE-Core rev: ee93a8e89322143252040bd5bc99259c5efff831) Signed-off-by: Michal Sieron <michalwsieron@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane: Clarify runtime/ warningRichard Purdie2024-02-131-1/+1
| | | | | | | | | | We should be pointing people at VIRTUAL-RUNTIME, not virtual so tweak the warning. Try and make it clear the difference between the build dependencies and the runtime ones. (From OE-Core rev: 01d815aa2c0bea113fb79b51bf67c0ff90d57dd2) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* mirrors.bbclass: add infraroot as an https mirrorRandolph Sapp2024-02-101-0/+1
| | | | | | | | | | | | | | Add the new infraroot.at mirror to the MIRRORS string for https sources since infradead.org does not support https and certain proxy configs cause this fetch to fail. Mirror info fetched from the following announcement: https://lists.infradead.org/pipermail/linux-mtd/2023-August/100922.html (From OE-Core rev: ce8f7bb81598aecafe486a461c94254b97518832) Signed-off-by: Randolph Sapp <rs@ti.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* mirrors: Allow shallow glibc to work correctlyRichard Purdie2024-02-081-0/+2
| | | | | | | | | | | | | | The intention of the mirror code was to allow faster cloning of glibc. This wasn't quite working since the full clone was needed by glibc-tests or cross-localedef-native. I noticed this when I updated a build and it was trying to unpack glibc but fetch cross-localedef-native. Add entries to cover these and restore the faster cloning for glibc and realted recipes. (From OE-Core rev: 7891b5fb96f757274bebbb77df634e7af9054298) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* package_rpm: add RPMBUILD_EXTRA_PARAMS variableMartin Jansa2024-02-081-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * e.g. for DISTROs which define extra user-defined fields with PACKAGE_ADD_METADATA/PACKAGE_ADD_METADATA_RPM as undefined fields in packagedata are fatal error for rpmbuild: "error: line 9: Unknown tag: Author: Unspecified" as shown in: http://errors.yoctoproject.org/Errors/Details/751706/ with "Author" field added with: PACKAGE_CLASSES = "package_rpm" PACKAGE_ADD_AUTHOR_METADATA = "test-author" PACKAGE_ADD_METADATA = "Author: ${PACKAGE_ADD_AUTHOR_METADATA}" to fix rpm build you can use: RPMBUILD_EXTRA_PARAMS = " --define '_Author Author'" keep in mind that this doesn't cause this Author field to be added in .rpm, it just avoids the BUILDSPEC failure. and for ipk build: OPKG_MAKE_INDEX_EXTRA_PARAMS = "-f" alternatively you can avoid additional packagedata fields ending in the package manager (if you use them only with buildhistory or packagedata) with: PACKAGE_ADD_METADATA_RPM = "" PACKAGE_ADD_METADATA_IPK = "" PACKAGE_ADD_METADATA_DEP = "" (From OE-Core rev: 31030e7a19a27ad424b997fad36ee4f633ce0d63) Signed-off-by: Martin Jansa <martin.jansa@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/package_rpm: streamline the logic in one of the condition blocksAlexander Kanavin2024-02-081-4/+2
| | | | | | | | (From OE-Core rev: e6a8ca554509c0edf9fd36ced88165dc3caf0e87) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/package_rpm: additionally escape \ and " in filenamesAlexander Kanavin2024-02-081-1/+1
| | | | | | | | | | | As specified in: https://github.com/rpm-software-management/rpm/blob/rpm-4.19.x/docs/manual/spec.md#shell-globbing (From OE-Core rev: 78d22c80c3f3a9f82c9f0d3dd1c591d395e02918) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/package_rpm: correctly escape percent charactersAlexander Kanavin2024-02-021-8/+8
| | | | | | | | | | | | | | | | | | This many characters doesn't work with rpm 4.19 packaging (as shown by nodejs recipes), and per documentation a single escape is enough: https://github.com/rpm-software-management/rpm/blob/rpm-4.19.x/docs/manual/spec.md#shell-globbing It also should be done in a function, and just before writing out the corrected filename to .spec, not earlier where the path may still be needed for file operations (such as gettings file attributes). (From OE-Core rev: 6d9fe2623c37e405a80acf71633f7291ecdde533) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/package_rpm: set bogus locations for passwd/group filesAlexander Kanavin2024-01-271-0/+2
| | | | | | | | | | | | | | | | | Since https://github.com/rpm-software-management/rpm/commit/f3eaeeb7341085e1850e914350cf1f33d538320d rpm does its own parsing of /etc/passwd and /etc/group instead of relying on getpwnam() and friends. This has an unfortunate effect of leaking build host uid/gid values for users and groups into the cpio header inside rpm file (where previously those were always zero). Installation of rpm packages relies on rpm header to set files ownership, and that is a different structure that is build from .spec information, so we can avoid host contamination by setting the paths to something bogus. (From OE-Core rev: ac8ea64bb39a5e56599e078c7e6cd056a2aa4144) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/package_rpm: use weak user/group dependenciesAlexander Kanavin2024-01-271-0/+1
| | | | | | | | | | | | | | | rpm 4.19 automatically generates provides and depends for user and groups: https://github.com/rpm-software-management/rpm/blob/rpm-4.19.x/docs/manual/users_and_groups.md#dependencies This mechanism relies on sysusers.d for the 'provides' part, and thus is systemd-only at best. So we need to disable it for now, otherwise image generation fails with unresolved dependencies. (From OE-Core rev: 10064e364f015ad3c0c8d63511cd9a7da5e22c69) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/package_rpm: write file permissions and ownership explicitly into .specAlexander Kanavin2024-01-271-6/+28
| | | | | | | | | | | | | | | | | | | | | | Per https://github.com/rpm-software-management/rpm/commit/77d3529c31ca090a40b8d3959a0bcdd721a556d6 rpm 4.19.1+ will not consider actual filesystem permissions and ownership, and will quietly default to root if not expictly set otherwise in .spec file. There's also additional diagnostics (printing what is in passwd/group) when user/group name lookup against the sysroot fails. That is never supposed to happen, and yet there was one report that it did: https://autobuilder.yoctoproject.org/typhoon/#/builders/44/builds/8493/steps/23/logs/stdio Investigating that issue led to the first three commits in this patchset: sysroot user management postinsts: run with /bin/sh -e to report errors when they happen classes/multilib: expand PACKAGE_WRITE_DEPS in addition to DEPENDS classes/staging: capture output of sysroot postinsts into logs (From OE-Core rev: a9db9a56617459e8f6f6dd466f2e18a7eed5c1e3) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/staging: capture output of sysroot postinsts into logsAlexander Kanavin2024-01-271-2/+2
| | | | | | | | | | | | | | | | | This particularly helps with user management postinsts as otherwise there's no trace left of what was run, in which order, and what was the output. Here's an example from the logs: NOTE: Running postinst /srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/lib64-recipe-sysroot/usr/bin/postinst-lib64-base-passwd, output: b'/srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/recipe-sysroot-native/usr/sbin/useradd\nRunning useradd commands...\nNOTE: lib64-ptest-runner: Performing useradd with [--root /srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/lib64-recipe-sysroot --system --no-create-home --home / --user-group ptest]\n' NOTE: Running postinst /srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/lib64-recipe-sysroot/usr/bin/postinst-useradd-lib64-ptest-runner, output: b'/srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/recipe-sysroot-native/usr/sbin/useradd\nRunning useradd commands...\nNOTE: lib64-ptest-runner: Performing useradd with [--root /srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/lib64-recipe-sysroot --system --no-create-home --home / --user-group ptest]\nNOTE: lib64-ptest-runner: user ptest already exists, not re-creating it\n' (From OE-Core rev: a4dc96293268804b214a02e08d266205fad428b0) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-global/insane: Add check for "virtual/" in RPROVIDES and RDEPENDSSimone Weiß2024-01-191-0/+6
| | | | | | | | | | | | | Fixes [YOCTO #14538] Recipes shouldn't use "virtual/" in RPROVIDES and RDEPENDS. This was addressed already in recipes in meta-oe and oe-core. Add a test for this in insane.bbclass to ensure no regressions occur. (From OE-Core rev: f673d3d239799fb1ab50f4aa5d44187666aa0cd7) Signed-off-by: Simone Weiß <simone.p.weiss@posteo.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane.bbclass: Python code cleanup in check_32bit_symbolsOla x Nilsson2024-01-151-3/+3
| | | | | | | | (From OE-Core rev: 67b06035326048323f972107f66eb50cf74def0b) Signed-off-by: Ola x Nilsson <olani@axis.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane.bbclass: Check for adjtime in check_32_bit_symbolsOla x Nilsson2024-01-151-0/+1
| | | | | | | | | | adjtime was overlooked in the original commit. (From OE-Core rev: 07faecd87e77716cfedffeadc52e0982edfd6c7e) Signed-off-by: Ola x Nilsson <olani@axis.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sanity.bbclass: Check for additional native perl modules.Philip Balister2024-01-031-1/+1
| | | | | | | | | | | | | | | Since we use the build systems native perl, we need to check that all perl modules required for a build are installed. For a default Fedora 39 install, autoconf-native and libxcrypt both fail to build due to missing perl modules. After taking careful notes, this commits adds checks for File::Compare, File::Copy, open, and FindBin. [YOCTO #14691] (From OE-Core rev: 3d09e759f838a7ce66fd1fb6e6a6653abce9e3a4) Signed-off-by: Philip Balister <philip@balister.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-global/insane: Look up all runtime providers for file-rdepsJoshua Watt2023-12-241-18/+12
| | | | | | | | | | | | Uses the new foreach_runtime_provider_pkgdata() API to look up all possible runtime providers of a given dependency when resolving file-rdeps. This allows the check to correctly handle RPROVIDES for non-virtual dependencies (From OE-Core rev: 018fa1b7cb5e6a362ebb45b93e52b0909a782ac9) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-global/sstate: Fix variable typoJoshua Watt2023-12-241-1/+1
| | | | | | | | | | The vardepsexclude was subtly wrong in that it referenced STATE_MANMACH when the actual variable name is SSTATE_MANMACH. (From OE-Core rev: ec5054396f7fafea2a071d2695ae111fc585d6e6) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* ipk: Switch to using zstd compressionJoshua Watt2023-12-231-2/+2
| | | | | | | | | | | | | | | | | | | | | Converts IPK package generation to use zstd instead of xz. zstd has a much larger compression/speed tradeoff range allowing users to choose what suits them best, and fast decompression speeds. It also continues to support parallel compression as xz did. A new variable called ZSTD_DEFAULTS is provided to set the defaults for places that want to use zstd for compression; the zst image conversion command is also modified to use this. Finally, in order for this to function properly, opkg must include zstd support, so it is enabled all the time with no PACKAGECONFIG to turn it off. (From OE-Core rev: 1bc3e9bbaa670b6128c74c76b4b5264e60ce3463) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Fix dir ownership issues in SSTATE_DIRRichard Purdie2023-12-151-2/+7
| | | | | | | | | | | | | | | | | | | 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: ae642a4b038c6946e6c8aa9778bf09099d938a31) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* base: Unpack .7z files with p7zipDaniel Ammann2023-12-131-0/+4
| | | | | | | | (From OE-Core rev: b129a45288ce465888b609e463cf94538de22a3c) Signed-off-by: Daniel Ammann <daniel.ammann@bytesatwork.ch> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane: ensure more paths have the workdir removedRoss Burton2023-12-091-10/+10
| | | | | | | | | | | When showing paths to the user we don't want to include the whole build directory. Passing the package name to package_qa_clean_path strips this completely. (From OE-Core rev: 7f1a862d2a432f216e37bf63648bef787422a43d) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Remove unneeded code from setscene_depvalid() related to useraddRichard Purdie2023-12-081-5/+0
| | | | | | | | | With recent changes to runqueue in bitbake, this horrible hack is no longer needed and we can drop it. (From OE-Core rev: f7f50b6013f7b636fe46448b1cbe1473de891527) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gdb/systemd: enable minidebuginfo support conditionallyEtienne Cordonnier2023-12-061-1/+1
| | | | | | | | | | | | | | Enabling minidebuginfo is not useful if gdb and systemd-coredump are unable to parse it. In order to parse it, gdb needs xz support. Systemd needs coredump enabled, as well as elfutil enabled as well (systemd-coredump loads libdw which is part of elfutils using dlopen). (From OE-Core rev: 0d2df803bebfd7e832ab7da54c4dacaaeeb424a9) Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* package_ipk: Fix Source: field variable dependencyRichard Purdie2023-11-231-1/+5
| | | | | | | | | | | 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: 3ea7da76c6930031a0071069027b1d71f737fbc9) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* staging.bbclass: process installed dependencies in deterministic order as wellMartin Jansa2023-11-201-1/+1
| | | | | | | | | | | | | | | | | | * similarly as direct dependencies before * this doesn't fix any issue (at least AFAIK), just keeps the log files more deterministic to avoid unnecessary churn like in: perl-native.log.do_configure: -NOTE: Installed into sysroot: ['zlib-native', 'make-native', 'perlcross-native', 'gdbm-native', 'xz-native', 'gettext-minimal-native', 'texinfo-dummy-native', 'libtool-native'] +NOTE: Installed into sysroot: ['zlib-native', 'make-native', 'perlcross-native', 'gdbm-native', 'libtool-native', 'gettext-minimal-native', 'texinfo-dummy-native', 'xz-native'] and similarly in "Note: Skipping as already exists in sysroot: (From OE-Core rev: cedee02e1acaffd8932809ceb5b6f9bd4f861283) Signed-off-by: Martin Jansa <martin.jansa@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>