summaryrefslogtreecommitdiff
path: root/poky/bitbake
diff options
context:
space:
mode:
authorAndrew Geissler <geissonator@yahoo.com>2023-09-11 15:41:39 +0300
committerAndrew Geissler <geissonator@yahoo.com>2023-09-18 14:19:32 +0300
commit5082cc7fedfff6c28a1406c79606b09012b134bc (patch)
treebc994073c7289536f801a16ca7e20d21c05ad7b6 /poky/bitbake
parent2edf0648b7c401072e7183c7f9e0e7c437e5f3f0 (diff)
downloadopenbmc-5082cc7fedfff6c28a1406c79606b09012b134bc.tar.xz
subtree updates openembedded poky
meta-openembedded: 491b7592f4..eff1b182c1: Alejandro Hernandez Samaniego (1): emacs: update to 29.1 Archana Polampalli (2): python3-pyroute2: fix ptest failure nodejs: upgrade 18.17.0 -> 18.17.1 Bartosz Golaszewski (1): libgpiod: update to v2.0.2 Beniamin Sandu (3): unbound: upgrade 1.17.1 -> 1.18.0 mbedtls: upgrade 3.4.0 -> 3.4.1 mbedtls: upgrade 2.28.3 -> 2.28.4 Benjamin Bara (3): libvpx: fix VPXTARGET for non-neon armv7a ne10: set incompatible for armv7 without neon openh264: make neon optional and disable if not supported Chaitanya Vadrevu (1): bolt: Add recipe Chen Qi (2): spice-protocol: fix populate_sdk error when spice is installed python3-blivetgui: switch from master to main Christophe Vu-Brugier (1): sg3-utils: upgrade 1.47 -> 1.48 Danik (2): python3-gspread: interface for google spreadsheet python3-piccata: piccata - a simple CoAP toolkit added Denys Zagorui (1): bpftool: add native and nativesdk support Emil Kronborg Andersen (3): lcms: add CVE_PRODUCT snappy: add CVE_PRODUCT libopus: add CVE_PRODUCT Enrico Jorns (1): microcom: add new recipe Ewa Kujawska (1): python3-oauth2client_4.1.2.bb: recipe added Frieder Schrempf (1): python3-can: Add missing runtime dependencies Gianfranco Costamagna (1): dlt-daemon: upgrade 2.18.9 -> 2.18.10 (commit: 0f2d4cfffada6f8448a2cb27995b38eb4271044f) Joe Slater (1): python3-inotify: fix tests Justin Bronder (5): python3-mypy-extensions: upgrade 0.4.3 -> 1.0.0 python3-types-setuptools: add 68.0.0.3 python3-typed-ast: remove EOL package python3-types-psutil: add 5.9.5.16 python3-mypy: upgrade 0.971 -> 1.5.0 Kai Kang (1): libmcrypt: fix multilib conflict Khem Raj (31): qad: Fix build with clang python3-dominate: Fix get_thread_context ptest on musl perfetto: Add SRCREV_FORMAT gosu: Define SRCREV_FORMAT libsdl2-ttf: Define SRCREV_FORMAT gosu: Define SRCREV_FORMAT sysdig: Add SRCREV_FORMAT cockpit: Upgrade to 298 release librelp: Fix function prototypes in tests jemalloc: Unbolt clang workaroud python3-protobuf: Fix build errors seen with clang mariadb: Fix build with libfmt 10.1+ librelp: Add packageconfigs for TLS implementations librelp: Fix ptests builds on musl librelp: Fix ptest installs to work with dash librelp: Add to meta-oe ptest image liburing: Upgrade to 2.4 release rsyslog: Enable openssl transport by default libio-socket-ssl-perl: Upgrade to 2.083 libfaketime: Fix build with clang libfaketime: Eanable LFS64 on musl python3-lz4: Drop using PYTHON_PN python3-lz4: Add missing rdeps needed for ptests rsyslog: Skip failing omfile-outchannel test on musl python3-m2crypto: Append architecture to SWIG_FEATURES instead of overriding networkmanager: Fix build on musl network-manager-applet: Fix build with musl/lld linker networkmanager-openvpn: Fix build with lld on musl openconnect: Upgrade to 9.12 openconnect: Fix build with GnuTLS v3.8.1 fontforge: Fix build with gettext 0.22 Kirk Hays (1): jack: Drop dependency on readline Leon Anavi (2): aml: add new recipe neatvnc: add new recipe Marek Vasut (2): libiio: Use tagged v0.25 libiio: Rename to versioned recipe filename Marine Vovard (1): python3-kivy: Require X11 or Wayland in DISTRO_FEATURES Mark Hatle (1): kconfig-frontends: Avoid using hard coded /usr/include paths Markus Volk (28): gvfs: update 1.51.1 -> 1.51.90 gnome-themes-extra: fix datadir path libnice: add graphviz-native dependency libcanberra: fix api-documentation build libgweather4: fix api-documentation build appstream: disable docs gtksourceview5: fix api-documentation build libpeas: fix api-documentation build nautilus: fix api-documentation build evince: fix api-documentation build usbids: add recipe libcacard: add recipe usbredir: upgrade 0.9.0 -> 0.13.0 spice: upgrade 0.14.2 -> 0.15.2 gnome-remote-desktop: add recipe libosinfo: add recipe gnome-boxes: add recipe pipewire: upgrade 0.3.77 -> 0.3.78 spice-gtk: fix api-documentation build flatpak: fix api-documentation build phodav: add recipe libdecor: update to latest commit spice-guest-vdagent: add recipe pipewire: upgrade 0.3.78 -> 0.3.79 spice: add missing dependency on orc spice-guest-vdagent: add missing dependencies libosinfo: build vapi only if gobject-introspection is enabled gnome-boxes: remove dependency on ovmf Martin Jansa (12): openh264: fix installed-vs-shared QA issue with multilib libfaketime: simplify packaging json-schema-validator: restore 0004-cmake-Use-GNUInstallDirs.patch phodav: make sure systemd files are packaged correctly sysbench: avoid -L/usr/lib32 and configure-unsafe QA issue mongodb: enable hardware crc32 only with crc in TUNE_FEATURES khronos-cts.inc: respect MLPREFIX when appending DEPENDS with anonymous python libcyusbserial: fix installed-vs-shipped QA issue with multilib tcpreplay: fix pcap detection with /usr/lib32 multilib libiio: use main branch instead of master webkitgtk: explicitly disable JIT for armv7* with softfp layer.conf: update LAYERSERIES_COMPAT for nanbield Ming Liu (1): libusbgx: usbgx.service: use Type=oneshot Mingli Yu (4): mariadb: Upgrade to 10.11.5 dialog: Update the SRC_URI gnulib: Update SRC_URI thrift: Remove buildpaths Nicolas Marguet (1): librelp: add ptest Parian Golchin (1): json-schema-validator: Updrade to 2.2.0 Pawel Langowski (1): qcbor: add recipe Petr Chernikov (1): Fix empty 0.0.0-0-g0 jemalloc version by adding --with-version Petr Gotthard (1): python3-sdbus: add recipe Robert Yang (1): frr: Fix CVE-2023-41358 and CVE-2023-41360 Roger Knecht (1): python3-schedule: add recipe Roland Hieber (1): fbida: update Upstream-Status for submitted patches Ross Burton (1): Revert "protobuf: stage protoc binary to sysroot" Soumya (1): yasm: fix CVE-2023-37732 Soumya Sambu (1): krb5: Upgrade 1.20.1 -> 1.20.2 Sourav Kumar Pramanik (1): meta-oe-components: Avoid usage of nobranch=1 Sourav Pramanik (2): rapidjson: Avoid usage of nobranch=1 nlohmann-json: Avoid usage of nobranch=1 Stanislav Angelovic (1): feat: bump sdbus-c++ up to v1.3.0 Sudip Mukherjee (1): qad: Add initial recipe Trevor Gamblin (1): python3-kivy: fix filename Tymoteusz Burak (2): ttf-google-fira: add recipe libfaketime: add recipe Vincent Davis Jr (1): cglm: upgrade v0.8.9 -> v0.9.1 Wang Mingyu (108): libcloudproviders: upgrade 0.3.1 -> 0.3.2 chrony: upgrade 4.3 -> 4.4 networkmanager: upgrade 1.42.8 -> 1.44.0 weechat: upgrade 4.0.2 -> 4.0.3 ctags: upgrade 6.0.20230730.0 -> 6.0.20230813.0 fmt: upgrade 10.0.0 -> 10.1.0 gensio: upgrade 2.6.7 -> 2.7.2 googletest: upgrade 1.13.0 -> 1.14.0 lvgl: upgrade 8.3.8 -> 8.3.9 postgresql: upgrade 15.3 -> 15.4 smartmontools: upgrade 7.3 -> 7.4 xdg-dbus-proxy: upgrade 0.1.4 -> 0.1.5 yaml-cpp: upgrade 0.7.0 -> 0.8.0 libtest-harness-perl: upgrade 3.44 -> 3.47 python3-alembic: upgrade 1.11.1 -> 1.11.2 python3-async-timeout: upgrade 4.0.2 -> 4.0.3 python3-bitarray: upgrade 2.8.0 -> 2.8.1 python3-cmake: upgrade 3.27.0 -> 3.27.2 python3-coverage: upgrade 7.2.7 -> 7.3.0 python3-dnspython: upgrade 2.4.1 -> 2.4.2 python3-google-api-python-client: upgrade 2.95.0 -> 2.96.0 python3-googleapis-common-protos: upgrade 1.59.1 -> 1.60.0 python3-joblib: upgrade 1.3.1 -> 1.3.2 python3-luma-oled: upgrade 3.12.0 -> 3.13.0 python3-platformdirs: upgrade 3.9.1 -> 3.10.0 python3-pycodestyle: upgrade 2.10.0 -> 2.11.0 python3-pyflakes: upgrade 3.0.1 -> 3.1.0 python3-pymisp: upgrade 2.4.173 -> 2.4.174 python3-rdflib: upgrade 6.3.2 -> 7.0.0 python3-regex: upgrade 2023.6.3 -> 2023.8.8 python3-rich: upgrade 13.4.2 -> 13.5.2 python3-sh: upgrade 2.0.4 -> 2.0.6 python3-tox: upgrade 4.6.4 -> 4.8.0 python3-tqdm: upgrade 4.65.0 -> 4.66.1 python3-uefi-firmware: upgrade 1.10 -> 1.11 python3-virtualenv: upgrade 20.24.2 -> 20.24.3 python3-web3: upgrade 6.7.0 -> 6.8.0 python3-yamlloader: upgrade 1.2.2 -> 1.3.2 python3-zeroconf: upgrade 0.71.4 -> 0.76.0 python3-protobuf: upgrade 4.23.4 -> 4.24.0 ctags: upgrade 6.0.20230813.0 -> 6.0.20230820.0 debootstrap: upgrade 1.0.128 -> 1.0.131 gensio: upgrade 2.7.2 -> 2.7.4 gnome-bluetooth: upgrade 42.5 -> 42.6 nginx: upgrade 1.25.1 -> 1.25.2 geary: update 44.0 -> 44.1 php: upgrade 8.2.8 -> 8.2.9 python3-redis: upgrade 4.6.0 -> 5.0.0 python3-alembic: upgrade 1.11.2 -> 1.11.3 python3-awesomeversion: upgrade 23.5.0 -> 23.8.0 python3-bitstring: upgrade 4.0.2 -> 4.1.0 python3-click: upgrade 8.1.6 -> 8.1.7 python3-engineio: upgrade 4.5.1 -> 4.6.0 python3-google-api-python-client: upgrade 2.96.0 -> 2.97.0 python3-humanize: upgrade 4.7.0 -> 4.8.0 python3-mypy: upgrade 1.5.0 -> 1.5.1 python3-oauth2client: upgrade 4.1.2 -> 4.1.3 python3-protobuf: upgrade 4.24.0 -> 4.24.1 python3-pycocotools: upgrade 2.0.6 -> 2.0.7 python3-pymetno: upgrade 0.10.0 -> 0.11.0 python3-pymongo: upgrade 4.4.1 -> 4.5.0 python3-pywbem: upgrade 1.6.1 -> 1.6.2 python3-sqlalchemy: upgrade 2.0.19 -> 2.0.20 python3-tox: upgrade 4.8.0 -> 4.10.0 python3-typeguard: upgrade 4.1.0 -> 4.1.2 python3-types-setuptools: upgrade 68.0.0.3 -> 68.1.0.0 python3-zeroconf: upgrade 0.76.0 -> 0.82.1 redis: upgrade 7.0.12 -> 7.2.0 weechat: upgrade 4.0.3 -> 4.0.4 traceroute: upgrade 2.1.2 -> 2.1.3 wireshark: upgrade 4.0.7 -> 4.0.8 adw-gtk3: upgrade 4.8 -> 4.9 ctags: upgrade 6.0.20230820.0 -> 6.0.20230827.0 debootstrap: upgrade 1.0.131 -> 1.0.132 dialog: upgrade 1.3-20210509 -> 1.3-20230209 fmt: upgrade 10.1.0 -> 10.1.1 gensio: upgrade 2.7.4 -> 2.7.5 iwd: upgrade 2.7 -> 2.8 libgphoto2: upgrade 2.5.30 -> 2.5.31 libzip: upgrade 1.10.0 -> 1.10.1 logwatch: upgrade 7.8 -> 7.9 thrift: upgrade 0.18.1 -> 0.19.0 libnet-dns-perl: upgrade 1.39 -> 1.40 python3-alembic: upgrade 1.11.3 -> 1.12.0 python3-argh: upgrade 0.28.1 -> 0.29.3 python3-asttokens: upgrade 2.2.1 -> 2.4.0 python3-bitstring: upgrade 4.1.0 -> 4.1.1 python3-cmake: upgrade 3.27.2 -> 3.27.4.1 python3-diskcache: upgrade 5.6.1 -> 5.6.3 python3-engineio: upgrade 4.6.0 -> 4.7.0 python3-imageio: upgrade 2.31.1 -> 2.31.3 python3-ipython: upgrade 8.14.0 -> 8.15.0 python3-kiwisolver: upgrade 1.4.4 -> 1.4.5 python3-langtable: upgrade 0.0.62 -> 0.0.63 python3-luma-core: upgrade 2.4.0 -> 2.4.1 python3-protobuf: upgrade 4.24.1 -> 4.24.2 python3-pymisp: upgrade 2.4.174 -> 2.4.175 python3-pymodbus: upgrade 3.4.1 -> 3.5.0 python3-smbus2: upgrade 0.4.2 -> 0.4.3 python3-snagboot: upgrade 1.1 -> 1.2 python3-socketio: upgrade 5.8.0 -> 5.9.0 python3-soupsieve: upgrade 2.4.1 -> 2.5 python3-tox: upgrade 4.10.0 -> 4.11.1 python3-typeguard: upgrade 4.1.2 -> 4.1.3 python3-types-setuptools: upgrade 68.1.0.0 -> 68.1.0.1 python3-virtualenv: upgrade 20.24.3 -> 20.24.4 python3-web3: upgrade 6.8.0 -> 6.9.0 python3-zeroconf: upgrade 0.82.1 -> 0.97.0 Willy Tu (1): abseil-cpp: upgrade 20230125.3 -> 20230802.0 Yi Zhao (7): nftables: upgrade 1.0.7 -> 1.0.8 libssh: upgrade 0.10.4 -> 0.10.5 samba: upgrade 4.18.5 -> 4.18.6 libyang: upgrade 2.1.55 -> 2.1.111 frr: Security fix CVE-2023-3748 vsomeip: add recipe ntp: add missing runtime dependencies Yogita Urade (2): poppler: fix CVE-2023-34872 hwloc: fix CVE-2022-47022 Βούλγαρη Αικατερίνη (1): collectd: build with rrdcached plugin poky: 71282bbc53..61531cd395: Adrian Freihofer (2): cmake.bbclass: cleanup spaces and tabs cmake.bbclass: refactor cmake args Alberto Planas (1): bitbake.conf: add bunzip2 in HOSTTOOLS Alexander Kanavin (18): lib/oe/recipeutils.py: accommodate SRCPV being optional and deprecated in version check regex python3-sphinx: correct version check systemd-bootchart: musl fixes have been rejected upstream openssl: build and install manpages only if they are enabled gettext: upgrade 0.21.1 -> 0.22 connman: update 1.41 -> 1.42 libcgroup: update 3.0.0 -> 3.1.0 perlcross: update 1.4.1 -> 1.5 perl: update 5.36.1 -> 5.38.0 groff: update 1.22.4 -> 1.23.0 libglu: update 9.0.2 -> 9.0.3 libpthread-stubs: update 0.4 -> 0.5 gpgme: upgrade 1.20.0 -> 1.22.0 libgudev: upgrade 237 -> 238 gnupg: upgrade 2.4.2 -> 2.4.3 gnutls: update 3.8.0 -> 3.8.1 runqemu: check permissions of available render nodes as well as their presence build-sysroots: target or native sysroot population need to be selected explicitly Alexis Lothoré (7): oeqa/utils/gitarchive: fix tag computation when creating archive oeqa/selftest: introduce gitarchive tests oeqa/utils/gitarchive: fix tag computation when creating archive oeqa/selftest/gitarchive: add tests about tags lisiting when no remote is configured oeqa/utils/gitarchive: allow to pass a logger to get_tags oeqa/utils/gitarchive: fall back to local tags when listing existing tags oeqa/utils/gitarchive: replace warning with info when reading local tags Angelo Ribeiro (1): ccache.bbclass: Add allowed list for native recipes Anuj Mittal (3): gstreamer1.0: upgrade 1.22.4 -> 1.22.5 harfbuzz: upgrade 8.0.1 -> 8.1.1 stress-ng: upgrade 0.15.08 -> 0.16.04 Archana Polampalli (1): vim: upgrade 9.0.1592 -> 9.0.1664 Benjamin Bara (6): rust-target-config: fix target_features for vfpv3d16 README: fix mail address in git example command pixman: avoid neon on unsupported machines nettle: avoid neon on unsupported machines ffmpeg: avoid neon on unsupported machines ghostscript: avoid neon on unsupported machines Bruce Ashfield (19): conf/machine: set preferred kernel to be 6.4 poky/poky-tiny: set preferred linux-yocto version to 6.4 linux-yocto/6.1: update to v6.1.44 linux-yocto/6.4: update to v6.4.10 linux-yocto/6.1: update to v6.1.45 kern-tools: include utility to post process config diffs linux-yocto/6.1: fix uninitialized read in nohz_full/isolcpus setup linux-yocto/6.4: fix uninitialized read in nohz_full/isolcpus setup linux-yocto/6.4: update to v6.4.11 linux-yocto/6.1: update to v6.1.46 linux-yocto/6.1: fix IRQ-80 warnings linux-yocto/6.4: fix IRQ-80 warnings linux-yocto/6.4: fix CONFIG_F2FS_IO_TRACE configuration warning linux-yocto/6.1: fix CONFIG_F2FS_IO_TRACE configuration warning linux-yocto/6.4: update to v6.4.12 linux-yocto/6.1: update to v6.1.50 linux-yocto/6.4: update to v6.4.13 linux-yocto/6.4: update to v6.4.14 linux-yocto/6.1: update to v6.1.51 Changqing Li (1): sqlite3: set CVE_STATUS for CVE-2023-36191 Chen Qi (6): bitbake: runqueue.py: fix PSI check logic cmake: drop OE specific environment variable support cmake.bbclass: fix allarch override syntax uninative.bbclass: sync to use UNINATIVE_STAGING_DIR stress-ng: disable DEBUG_BUILD oe-depends-dot: improve '-w' behavior Daniel Semkowicz (1): dev-manual: wic.rst: Update native tools build command David Reyna (3): bitbake: toaster: Update to Django 4.2 bitbake: toaster: import only used layers bitbake: toaster: accommodate missing 'Image Name' value in buildinfohelper Dmitry Baryshkov (4): mdadm: disable strace on rv32 arch linux-firmware: upgrade 20230625 -> 20230804 linux-firmware: package audio topology for Lenovo X13s linux-firmware: package Dragonboard 845c sensors DSP firmware Eilís 'pidge' Ní Fhlannagáin (1): nativesdk-intercept: Fix bad intercept chgrp/chown logic Emil Ekmečić (2): bitbake: fetch2: add Google Cloud Platform (GCP) fetcher Add GCP fetcher to list of supported protocols Emil Kronborg Andersen (2): dbus: add additional entries to CVE_PRODUCT libxkbcommon: add CVE_PRODUCT Etienne Cordonnier (2): vim: update obsolete comment migration-guides: system-conf -> systemd-conf Frederic Martinsons (5): rust: add cargo-c native recipe classes-recipe: add cargo_c.bbclass rust: provide examples for C library generation in rust oeqa/runtime/rust: correct rust test ref-manual: classes.rst: suppress rust-hello-world reference, add ptest-cargo class Jaeyoon Jung (1): cml1: Fix KCONFIG_CONFIG_COMMAND not conveyed fully in do_menuconfig Jasper Orschulko (1): cve_check: Fix cpe_id generation Joe Slater (1): file: fix call to localtime_r() Jon Mason (1): linux-yocto-dev: correct qemuarmv5 device tree location Jose Quaresma (3): systemd: fix efi dependency systemd-boot: remove old gummiboot TUNE_CCARGS pybootchartgui: also match do_compile and do_configure subtasks Joshua Watt (9): bitbake: bblayers/query: Add multiconfig support to `show-appends` bitbake: cooker: Fix error message bitbake: lib/bb: Add xattr and acl libraries buildtools-tarball: Add libacl classes/image_types: Add vfat image type bitbake: fetch2: git: Check if clone directory is a git repo wic: Add gpt-hybrid partition layout bitbake: fetch2: git: Remove useless try..else clause Add libacl to required packages Julien Stephan (4): less: upgrade 633 -> 643 less: add ptest support patch.py: use --absolute-git-dir instead of --show-toplevel to retrieve gitdir vulkan-samples: convert debugfix.patch to git format patch Kai Kang (1): webkitgtk: fix build failure with DEBUG_BUILD enabled Khem Raj (22): gnu-efi: Fix build on musl systemd-boot: Fix build on musl glibc: Upgrade to 2.38 release glibc: Enable fortify sources by defaults glibc: Drop --enable-tunables glibc: Fix SVE detection on aarch64 glibc-tests: Add missing libgcc runtime dependency kernel.bbclass: Use KERNEL_STRIP instead of STRIP build-sysroots: Add SUMMARY field tunes: Add support for sve instructions on armv8/armv9 arch-armv8,arch-armv9: Add sve based tune options python3: Increase default thread stack size on musl inetutils: Fix CVE-2023-40303 inetutils: Apply devtool formatting suggestions qemu: Fix CVE-2023-40360 core-image-ptest: Define a fallback for SUMMARY field dos2unix: upgrade 7.5.0 -> 7.5.1 python3: Fix ptests on musl tcl: Add a way to skip ptests rust-target-config: Map rust target to OE target libc-test: Depend on musl-staticdev apr: Fix ptests on musl Lee Chee Yang (2): migration-guides: add release notes for 4.2.3 migration-guides: add release notes for 4.0.12 Lei Maohui (1): glibc-package: Fix conflict error when enable multilib. Luan Rafael Carneiro (2): weston: Upgrade version 12.0.1 -> 12.0.2 weston: Add sysconfdir to FILES:${PN} Luca Ceresoli (1): Revert "oeqa/runtime/parselogs: Exclude preempt-rt error for now" Markus Niebel (2): wic: fix wrong attempt to create file system in upartitioned regions oeqa: wic: Add test for --no-table option Markus Volk (8): gtk4: upgrade 4.10.4 -> 4.10.5 libadwaita: upgrade 1.3.3 -> 1.3.4 gtk4: upgrade 4.10.5 -> 4.12.0 qemu: fix libudev packageconfig for systemd images qemu: build pulseaudio support depending on distro_feature qemu: add packageconfigs for fuse and dbus-display gtk4: upgrade 4.12.0 -> 4.12.1 mesa: add intel raytracing support to opencl build Martin Jansa (6): tcl: prevent installing another copy of tzdata cross-localedef-native: fix build on hosts with older glibc bitbake: runqueue: show more pressure data Makefile: remove from top-level directory bitbake: runqueue: show number of currently running bitbake threads when pressure changes webkitgtk: explicitly disable JIT for armv7* with softfp Michael Halstead (2): yocto-uninative: Update to 4.2 for glibc 2.38 yocto-uninative: Update to 4.3 Michael Opdenacker (26): scripts/create-pull-request: update URLs to git repositories manuals: create a dedicated "Contributor Guide" document ref-manual: classes.rst: fix location of _ref-classes-ccache ref-manual: update supported distro versions contributor-guide: add missing links to mailing lists contributor-guide: add section about why we use mailing lists contributor-guide: add recipe style guide ref-manual: remove AUTHOR variable contributor guide: call section "Reporting a defect" contributor-guide: remove obsolete pkg-config guidelines contributor guide: remove unnecessary information about mailing lists contributor-guide: clarification about patchtest contributor guide: update instructions for making and sharing changes dev-manual: disk-space: mention faster "find" command to trim sstate cache contributor-guide: move to 2nd place in top menu contributor-guide: submit-changes: simplify note contributor-guide: identify component: provide link to repositories contributor-guide: submit-changes: detail commit and patch creation contributor-guide: submit-changes: develop sending patches section manuals: README: update list of manuals contributor-guide: submit-changes: reorganize and develop sections contributor-guide: submit-changes: improvements to mailing lists section contributor-guide: submit-changes: commit guidelines for recipes contributor-guide: submit-changes: how to request push access to repositories README: update/fix contribution guidelines bitbake: doc: bitbake-user-manual: remove reference to SSTATE_MIRRORS variable Mikko Rapeli (4): openssh: capture ptest regression test failure logs oeqa selftest context.py: whitespace fix oeqa selftest context.py: remove warning from missing meta-selftest oeqa selftest context.py: fix git commands and set branch name Mingli Yu (2): qemu: Add qemu-common package webkitgtk: Add opengl to REQUIRED_DISTRO_FEATURES Narpat Mali (1): ffmpeg: add CVE_STATUS for CVE-2023-39018 Otavio Salvador (2): weston-init: remove misleading comment about udev rule weston-init: fix init code indentation Ovidiu Panait (1): mdadm: skip running 04update-uuid and 07revert-inplace testcases Paulo Neves (1): bitbake: siggen.py: Improve taskhash reproducibility Peter Kjellerstedt (3): bin_package.bbclass: Inhibit the default dependencies insane.bbclass: Remove an unused variable poky.conf: Switch to post release name/version Peter Marko (2): openssl: Upgrade 3.1.1 -> 3.1.2 gcc-runtime: remove bashism Poonam Jadhav (1): pixman: Remove duplication of license MIT Randolph Sapp (1): bitbake: gitsm: tolerate git-lfs in submodules Richard Purdie (39): bitbake: siggen: Fix indentation bitbake: siggen: Update debug resulttool/report: Avoid divide by zero gcc-testsuite: Fix qemu binary filtering code logic error gcc-testsuite: Set qemu options for mips correctly mips/tune-mips64r2: Set qemu cpu option correctly binutils-cross-testsuite: Pass TUNE_LDARGS to tests arch-mips: Ensure TUNE_LDARGS is set correctly gcc: Add patch to improve testsuite failures, particularly mips oeqa/runtime/parselogs: Exclude preempt-rt error for now qemu: Upgrade 8.0.3 -> 8.0.4 lib/package_manager: Improve repo artefact filtering Revert "oeqa/utils/gitarchive: fix tag computation when creating archive" lttng-modules: Upgrade 2.13.9 -> 2.13.10 lttng-tools: Upgrade 2.13.9 -> 2.13.10 pseudo: Fix to work with glibc 2.38 binutils: Add missing DEPENDS on pod2man build-sysroots: Ensure dependency chains are minimal bitbake: fetch2: Add new srcrev fetcher API base/package: Move source revision information from PV to PKGV recipes/classes/scripts: Drop SRCPV usage in OE-Core glibc: Add glibc 2.38 stable updates README: Update to point to new contributor guide bitbake: README: Update to point to new contributor guide bitbake: command: Avoid time intensive distractions for ping README: Clarify/standardise contributions process python3-numpy: Attempt to fix reproducibility issue bitbake: doc: Document challenges of tags with git fetcher bitbake: server/process: Add more timing debug qemu: Upgrade 8.0.4 -> 8.1.0 qemu: Add patches to resolve x86 and then mips boot issues mdadm: Disable further tests due to intermittent failures Revert "oeqa selftest context.py: fix git commands and set branch name" classes: Drop ';' delimiter from ROOTFS/IMAGE*COMMAND variables build-appliance-image: Update to master head revision layer.conf: Update to nanbield release series bitbake: bitbake: Update to 2.6.0 release series/version layer.conf: Update to nanbield release series build-appliance-image: Update to master head revision Ross Burton (47): connman-conf: don't take over any ethernet devices, not just eth0 meson.bbclass: add MESON_TARGET meson.bbclass:: update do_write_config vardeps systemd-boot: use MESON_TARGET systemd-boot: improve cross file generation p11-kit: fix build without qemu-usermode gi-docgen: depend on qemu-usermode MACHINE_FEATURES python3-pygobject: add explicit check for qemu-usermode MACHINE_FEATURE graphene: fix runtime detection of IEEE754 behaviour python3: ignore disputed CVE-2023-36632 procps: backport fix for CVE-2023-4016 linux/generate-cve-exclusions.py: fix comparison linux/cve-exclusions: update CVE_STATUS exclusions perf: enable verbose feature detection perf: add more PACKAGECONFIGs perf: fix perl binding support perf: split scripting PACKAGECONFIG into perl and python perf: disable perl support libtraceevent: build with Meson linux/generate-cve-exclusions: add version check warning linux-yocto: update CVE exclusions files site: remove at-spi2-core values inetutils: don't guess target paths inetutils: remove obsolete patches inetutils: remove obsolete cruft from do_configure glib-networking: enable build with GnuTLS if PKCS#11 was disabled glib-networking: use gnutls backend for TLS sockets cve-extra-exclusions: remove historic kernel CVEs which are handled now cve-extra-exclusions: remove BlueZ issues linux-yocto: update kernel CVE status linux: review some historic CVE_STATUS glib-2.0: explicitly enable strlcpy() scripts/oe-find-native-sysroot: use bitbake-getvar qemu-system-native: enable PNG support python3-build: upgrade to 1.0.0 glib-2.0: libelf has a configure option now, specify it harfbuzz: update PACKAGECONFIG pango: explictly enable/disable libthai libsoup-2.4: update PACKAGECONFIG libsoup: update PACKAGECONFIG wayland-utils: add libdrm PACKAGECONFIG cve-exclusion: review the last of the historical kernel CVEs busybox: remove coreutils dependency in busybox-ptest libgudev: explicitly disable tests and vapi linux: update CVE exclusions python3-build: upgrade to 1.0.3 avahi: handle invalid service types gracefully Ryan Eatmon (1): kernel.bbclass: Add force flag to rm calls Samantha Jalabert (1): bitbake: Fix disk space monitoring on cephfs Stéphane Veyret (1): nfs-utils: Add needed library to client Sudip Mukherjee (4): kea: upgrade to v2.4.0 cmake: upgrade to v3.27.4 dpkg: upgrade to v1.22.0 openssh: upgrade to v9.4p1 Tom Hochstein (1): linux-firmware: add firmware files for NXP BT chipsets Trevor Gamblin (16): python3-hypothesis: upgrade 6.82.0 -> 6.82.5 python3-more-itertools: upgrade 10.0.0 -> 10.1.0 python3-pygments: upgrade 2.15.1 -> 2.16.1 python3-wheel: upgrade 0.41.0 -> 0.41.1 maintainers.inc: Add self for unmaintained Python recipes oe-buildenv-internal: update required Python version python3-dbusmock: upgrade 0.29.0 -> 0.29.1 python3-numpy: upgrade 1.25.1 -> 1.25.2 python3-trove-classfiers: upgrade 2023.7.6 -> 2023.8.7 python3-setuptools: upgrade 68.0.0 -> 68.1.0 python3-dtc: upgrade 1.6.1 -> 1.7.0 python3-poetry: upgrade 1.6.1 -> 1.7.0 python3-git: upgrade 3.1.32 -> 3.1.34 python3-hypothesis: upgrade 6.82.7 -> 6.84.0 python3-pytest: upgrade 7.4.0 -> 7.4.1 python3-sphinx: upgrade 7.1.1 -> 7.2.5 Ulrich Ölmann (1): weston: fix comment Wang Mingyu (47): btrfs-tools: upgrade 6.3.1 -> 6.3.3 curl: upgrade 8.2.0 -> 8.2.1 file: upgrade 5.44 -> 5.45 gmp: upgrade 6.2.1 -> 6.3.0 xxhash: upgrade 0.8.1 -> 0.8.2 python3-editables: upgrade 0.4 -> 0.5 python3-markdown: upgrade 3.4.3 -> 3.4.4 python3-pathspec: upgrade 0.11.1 -> 0.11.2 python3-pip: upgrade 23.2 -> 23.2.1 python3-pyparsing: upgrade 3.1.0 -> 3.1.1 re2c: upgrade 3.0 -> 3.1 shaderc: upgrade 2023.4 -> 2023.5 sudo: upgrade 1.9.14p2 -> 1.9.14p3 libarchive: upgrade 3.6.2 -> 3.7.1 tar: upgrade 1.34 -> 1.35 bind: upgrade 9.18.17 -> 9.18.18 bluez5: upgrade 5.68 -> 5.69 ell: upgrade 0.57 -> 0.58 git: upgrade 2.41.0 -> 2.42.0 kbd: upgrade 2.6.1 -> 2.6.2 libconvert-asn1-perl: upgrade 0.33 -> 0.34 libdrm: upgrade 2.4.115 -> 2.4.116 libedit: upgrade 20221030-3.1 -> 20230828-3.1 libgit2: upgrade 1.7.0 -> 1.7.1 librepo: upgrade 1.15.1 -> 1.15.2 libsecret: upgrade 0.20.5 -> 0.21.0 libsndfile1: upgrade 1.2.0 -> 1.2.2 libxml2: upgrade 2.11.4 -> 2.11.5 mc: upgrade 4.8.29 -> 4.8.30 mpfr: upgrade 4.2.0 -> 4.2.1 neard: upgrade 0.18 -> 0.19 python3: upgrade 3.11.4 -> 3.11.5 pango: upgrade 1.50.14 -> 1.51.0 pigz: upgrade 2.7 -> 2.8 pkgconf: upgrade 1.9.5 -> 2.0.2 python3-setuptools: upgrade 68.1.0 -> 68.1.2 repo: upgrade 2.35 -> 2.36.1 shaderc: upgrade 2023.5 -> 2023.6 sqlite3: upgrade 3.42.0 -> 3.43.0 sysklogd: upgrade 2.5.0 -> 2.5.2 xz: upgrade 5.4.3 -> 5.4.4 zlib: upgrade 1.2.13 -> 1.3 python3-hypothesis: upgrade 6.82.5 -> 6.82.7 python3-pluggy: upgrade 1.2.0 -> 1.3.0 python3-sphinx-rtd-theme: upgrade 1.2.2 -> 1.3.0 python3-wheel: upgrade 0.41.1 -> 0.41.2 librepo: upgrade 1.15.2 -> 1.16.0 Yang Xu (1): meson: don't fail if no .pyc exists Yi Zhao (2): dhcpcd: upgrade 10.0.1 -> 10.0.2 dhcpcd: fix buffer overflow Yoann Congal (1): dev-manual: remove unsupported :term: markup inside markup Yogita Urade (1): dropbear: fix CVE-2023-36328 Yuta Hayama (3): linux/generate-cve-exclusions: print the generated time in UTC linux/generate-cve-exclusions: fix mishandling of boundary values linux-yocto: correct the wording in CVE_STATUS Zang Ruochen (6): tcf-agent: Disable non-building features on loongarch64 gcc-sanitizers: Add loongarch as a compatible architecture. goarch.bbclass: Add loongarch64 to go_map_arch qemuloongarch.inc:Change to use virtio-serial-pci kernel-devsrc: Fixed missing loongarch64 kernel source code when test_kernelmodules gcc: Fresh 0003-64-bit-multilib-hack.patch to add loongarch64 support Change-Id: I4d4752539711b34471002dd1817bb7c14a590675 Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Diffstat (limited to 'poky/bitbake')
-rw-r--r--poky/bitbake/README17
-rwxr-xr-xpoky/bitbake/bin/bitbake2
-rw-r--r--poky/bitbake/doc/README4
-rw-r--r--poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst45
-rw-r--r--poky/bitbake/lib/bb/__init__.py2
-rwxr-xr-xpoky/bitbake/lib/bb/acl.py215
-rw-r--r--poky/bitbake/lib/bb/command.py7
-rw-r--r--poky/bitbake/lib/bb/cooker.py2
-rw-r--r--poky/bitbake/lib/bb/fetch2/__init__.py33
-rw-r--r--poky/bitbake/lib/bb/fetch2/gcp.py98
-rw-r--r--poky/bitbake/lib/bb/fetch2/git.py30
-rw-r--r--poky/bitbake/lib/bb/fetch2/gitsm.py11
-rw-r--r--poky/bitbake/lib/bb/monitordisk.py7
-rw-r--r--poky/bitbake/lib/bb/runqueue.py21
-rw-r--r--poky/bitbake/lib/bb/server/process.py13
-rw-r--r--poky/bitbake/lib/bb/siggen.py21
-rw-r--r--poky/bitbake/lib/bb/ui/buildinfohelper.py13
-rwxr-xr-xpoky/bitbake/lib/bb/xattr.py126
-rw-r--r--poky/bitbake/lib/bblayers/query.py14
-rw-r--r--poky/bitbake/lib/toaster/bldcollector/urls.py2
-rw-r--r--poky/bitbake/lib/toaster/bldcontrol/models.py4
-rw-r--r--poky/bitbake/lib/toaster/orm/models.py28
-rw-r--r--poky/bitbake/lib/toaster/toastergui/urls.py2
-rw-r--r--poky/bitbake/lib/toaster/toastergui/views.py6
-rw-r--r--poky/bitbake/lib/toaster/toastergui/widgets.py5
-rw-r--r--poky/bitbake/lib/toaster/toastermain/management/commands/buildimport.py2
-rw-r--r--poky/bitbake/lib/toaster/toastermain/management/commands/checksocket.py4
-rw-r--r--poky/bitbake/lib/toaster/toastermain/urls.py2
-rw-r--r--poky/bitbake/toaster-requirements.txt2
29 files changed, 657 insertions, 81 deletions
diff --git a/poky/bitbake/README b/poky/bitbake/README
index 78610e65f1..38a461f5c9 100644
--- a/poky/bitbake/README
+++ b/poky/bitbake/README
@@ -18,16 +18,19 @@ Bitbake requires Python version 3.8 or newer.
Contributing
------------
-Please refer to
-https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
-for guidelines on how to submit patches, just note that the latter documentation is intended
-for OpenEmbedded (and its core) not bitbake patches (bitbake-devel@lists.openembedded.org)
-but in general main guidelines apply. Once the commit(s) have been created, the way to send
-the patch is through git-send-email. For example, to send the last commit (HEAD) on current
-branch, type:
+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
diff --git a/poky/bitbake/bin/bitbake b/poky/bitbake/bin/bitbake
index 42ab14876e..8cfa165f9a 100755
--- a/poky/bitbake/bin/bitbake
+++ b/poky/bitbake/bin/bitbake
@@ -27,7 +27,7 @@ from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
bb.utils.check_system_locale()
-__version__ = "2.4.0"
+__version__ = "2.6.0"
if __name__ == "__main__":
if __version__ != bb.__version__:
diff --git a/poky/bitbake/doc/README b/poky/bitbake/doc/README
index cdbb23776e..d4f56afa37 100644
--- a/poky/bitbake/doc/README
+++ b/poky/bitbake/doc/README
@@ -47,8 +47,8 @@ To install all required packages run:
To build the documentation locally, run:
- $ cd documentation
- $ make -f Makefile.sphinx html
+ $ 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
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
index c061bd70ea..fb4f0a23d7 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
@@ -476,6 +476,14 @@ Here are some example URLs::
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:
@@ -688,6 +696,41 @@ Here is an example URL::
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://``)
@@ -791,6 +834,8 @@ Fetch submodules also exist for the following:
- OSC (``osc://``)
+- S3 (``s3://``)
+
- Secure FTP (``sftp://``)
- Secure Shell (``ssh://``)
diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py
index 0e2d8677b8..3163481e56 100644
--- a/poky/bitbake/lib/bb/__init__.py
+++ b/poky/bitbake/lib/bb/__init__.py
@@ -9,7 +9,7 @@
# SPDX-License-Identifier: GPL-2.0-only
#
-__version__ = "2.4.0"
+__version__ = "2.6.0"
import sys
if sys.version_info < (3, 8, 0):
diff --git a/poky/bitbake/lib/bb/acl.py b/poky/bitbake/lib/bb/acl.py
new file mode 100755
index 0000000000..0f41b275cf
--- /dev/null
+++ b/poky/bitbake/lib/bb/acl.py
@@ -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())
diff --git a/poky/bitbake/lib/bb/command.py b/poky/bitbake/lib/bb/command.py
index a355f56c60..b494f84a0a 100644
--- a/poky/bitbake/lib/bb/command.py
+++ b/poky/bitbake/lib/bb/command.py
@@ -65,7 +65,7 @@ class Command:
command = commandline.pop(0)
# Ensure cooker is ready for commands
- if command != "updateConfig" and command != "setFeatures":
+ if command not in ["updateConfig", "setFeatures", "ping"]:
try:
self.cooker.init_configdata()
if not self.remotedatastores:
@@ -85,7 +85,8 @@ class Command:
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:
- self.cooker.process_inotify_updates_apply()
+ if command != "ping":
+ self.cooker.process_inotify_updates_apply()
if getattr(command_method, 'needconfig', True):
self.cooker.updateCacheSync()
result = command_method(self, commandline)
@@ -169,6 +170,8 @@ class CommandsSync:
Allow a UI to check the server is still alive
"""
return "Still alive!"
+ ping.needconfig = False
+ ping.readonly = True
def stateShutdown(self, command, params):
"""
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py
index 11c9fa2c40..064e3cae6e 100644
--- a/poky/bitbake/lib/bb/cooker.py
+++ b/poky/bitbake/lib/bb/cooker.py
@@ -650,7 +650,7 @@ class BBCooker:
raise
else:
if not mc in self.databuilder.mcdata:
- bb.fatal('Not multiconfig named "%s" found' % mc)
+ bb.fatal('No multiconfig named "%s" found' % mc)
envdata = self.databuilder.mcdata[mc]
data.expandKeys(envdata)
parse.ast.runAnonFuncs(envdata)
diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py
index 2428a26fa6..765aedd51d 100644
--- a/poky/bitbake/lib/bb/fetch2/__init__.py
+++ b/poky/bitbake/lib/bb/fetch2/__init__.py
@@ -753,7 +753,7 @@ def get_autorev(d):
d.setVar("__BBAUTOREV_SEEN", True)
return "AUTOINC"
-def get_srcrev(d, method_name='sortable_revision'):
+def _get_srcrev(d, method_name='sortable_revision'):
"""
Return the revision string, usually for use in the version string (PV) of the current package
Most packages usually only have one SCM so we just pass on the call.
@@ -774,6 +774,7 @@ def get_srcrev(d, method_name='sortable_revision'):
d.setVar("__BBINSRCREV", True)
scms = []
+ revs = []
fetcher = Fetch(d.getVar('SRC_URI').split(), d)
urldata = fetcher.ud
for u in urldata:
@@ -781,16 +782,19 @@ def get_srcrev(d, method_name='sortable_revision'):
scms.append(u)
if not scms:
- raise FetchError("SRCREV was used yet no valid SCM was found in SRC_URI")
+ d.delVar("__BBINSRCREV")
+ return "", revs
+
if len(scms) == 1 and len(urldata[scms[0]].names) == 1:
autoinc, rev = getattr(urldata[scms[0]].method, method_name)(urldata[scms[0]], d, urldata[scms[0]].names[0])
+ revs.append(rev)
if len(rev) > 10:
rev = rev[:10]
d.delVar("__BBINSRCREV")
if autoinc:
- return "AUTOINC+" + rev
- return rev
+ return "AUTOINC+" + rev, revs
+ return rev, revs
#
# Mutiple SCMs are in SRC_URI so we resort to SRCREV_FORMAT
@@ -806,6 +810,7 @@ def get_srcrev(d, method_name='sortable_revision'):
ud = urldata[scm]
for name in ud.names:
autoinc, rev = getattr(ud.method, method_name)(ud, d, name)
+ revs.append(rev)
seenautoinc = seenautoinc or autoinc
if len(rev) > 10:
rev = rev[:10]
@@ -823,7 +828,21 @@ def get_srcrev(d, method_name='sortable_revision'):
format = "AUTOINC+" + format
d.delVar("__BBINSRCREV")
- return format
+ return format, revs
+
+def get_hashvalue(d, method_name='sortable_revision'):
+ pkgv, revs = _get_srcrev(d, method_name=method_name)
+ return " ".join(revs)
+
+def get_pkgv_string(d, method_name='sortable_revision'):
+ pkgv, revs = _get_srcrev(d, method_name=method_name)
+ return pkgv
+
+def get_srcrev(d, method_name='sortable_revision'):
+ pkgv, revs = _get_srcrev(d, method_name=method_name)
+ if not pkgv:
+ raise FetchError("SRCREV was used yet no valid SCM was found in SRC_URI")
+ return pkgv
def localpath(url, d):
fetcher = bb.fetch2.Fetch([url], d)
@@ -1290,7 +1309,7 @@ class FetchData(object):
if checksum_name in self.parm:
checksum_expected = self.parm[checksum_name]
- elif self.type not in ["http", "https", "ftp", "ftps", "sftp", "s3", "az", "crate"]:
+ elif self.type not in ["http", "https", "ftp", "ftps", "sftp", "s3", "az", "crate", "gs"]:
checksum_expected = None
else:
checksum_expected = d.getVarFlag("SRC_URI", checksum_name)
@@ -1976,6 +1995,7 @@ from . import npm
from . import npmsw
from . import az
from . import crate
+from . import gcp
methods.append(local.Local())
methods.append(wget.Wget())
@@ -1997,3 +2017,4 @@ methods.append(npm.Npm())
methods.append(npmsw.NpmShrinkWrap())
methods.append(az.Az())
methods.append(crate.Crate())
+methods.append(gcp.GCP())
diff --git a/poky/bitbake/lib/bb/fetch2/gcp.py b/poky/bitbake/lib/bb/fetch2/gcp.py
new file mode 100644
index 0000000000..f42c81fda8
--- /dev/null
+++ b/poky/bitbake/lib/bb/fetch2/gcp.py
@@ -0,0 +1,98 @@
+"""
+BitBake 'Fetch' implementation for Google Cloup Platform Storage.
+
+Class for fetching files from Google Cloud Storage using the
+Google Cloud Storage Python Client. The GCS Python Client must
+be correctly installed, configured and authenticated prior to use.
+Additionally, gsutil must also be installed.
+
+"""
+
+# Copyright (C) 2023, Snap Inc.
+#
+# Based in part on bb.fetch2.s3:
+# Copyright (C) 2017 Andre McCurdy
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import os
+import bb
+import urllib.parse, urllib.error
+from bb.fetch2 import FetchMethod
+from bb.fetch2 import FetchError
+from bb.fetch2 import logger
+
+class GCP(FetchMethod):
+ """
+ Class to fetch urls via GCP's Python API.
+ """
+ def __init__(self):
+ self.gcp_client = None
+
+ def supports(self, ud, d):
+ """
+ Check to see if a given url can be fetched with GCP.
+ """
+ return ud.type in ['gs']
+
+ def recommends_checksum(self, urldata):
+ return True
+
+ def urldata_init(self, ud, d):
+ if 'downloadfilename' in ud.parm:
+ ud.basename = ud.parm['downloadfilename']
+ else:
+ ud.basename = os.path.basename(ud.path)
+
+ ud.localfile = d.expand(urllib.parse.unquote(ud.basename))
+
+ def get_gcp_client(self):
+ from google.cloud import storage
+ self.gcp_client = storage.Client(project=None)
+
+ def download(self, ud, d):
+ """
+ Fetch urls using the GCP API.
+ Assumes localpath was called first.
+ """
+ logger.debug2(f"Trying to download gs://{ud.host}{ud.path} to {ud.localpath}")
+ if self.gcp_client is None:
+ self.get_gcp_client()
+
+ bb.fetch2.check_network_access(d, "gsutil stat", ud.url)
+
+ # Path sometimes has leading slash, so strip it
+ path = ud.path.lstrip("/")
+ blob = self.gcp_client.bucket(ud.host).blob(path)
+ blob.download_to_filename(ud.localpath)
+
+ # Additional sanity checks copied from the wget class (although there
+ # are no known issues which mean these are required, treat the GCP API
+ # tool with a little healthy suspicion).
+ if not os.path.exists(ud.localpath):
+ raise FetchError(f"The GCP API returned success for gs://{ud.host}{ud.path} but {ud.localpath} doesn't exist?!")
+
+ if os.path.getsize(ud.localpath) == 0:
+ os.remove(ud.localpath)
+ raise FetchError(f"The downloaded file for gs://{ud.host}{ud.path} resulted in a zero size file?! Deleting and failing since this isn't right.")
+
+ return True
+
+ def checkstatus(self, fetch, ud, d):
+ """
+ Check the status of a URL.
+ """
+ logger.debug2(f"Checking status of gs://{ud.host}{ud.path}")
+ if self.gcp_client is None:
+ self.get_gcp_client()
+
+ bb.fetch2.check_network_access(d, "gsutil stat", ud.url)
+
+ # Path sometimes has leading slash, so strip it
+ path = ud.path.lstrip("/")
+ if self.gcp_client.bucket(ud.host).blob(path).exists() == False:
+ raise FetchError(f"The GCP API reported that gs://{ud.host}{ud.path} does not exist")
+ else:
+ return True
diff --git a/poky/bitbake/lib/bb/fetch2/git.py b/poky/bitbake/lib/bb/fetch2/git.py
index 2a3c06fe4e..e11271b757 100644
--- a/poky/bitbake/lib/bb/fetch2/git.py
+++ b/poky/bitbake/lib/bb/fetch2/git.py
@@ -65,6 +65,7 @@ import fnmatch
import os
import re
import shlex
+import shutil
import subprocess
import tempfile
import bb
@@ -365,8 +366,35 @@ class Git(FetchMethod):
runfetchcmd(fetch_cmd, d, workdir=ud.clonedir)
repourl = self._get_repo_url(ud)
+ needs_clone = False
+ if os.path.exists(ud.clonedir):
+ # The directory may exist, but not be the top level of a bare git
+ # repository in which case it needs to be deleted and re-cloned.
+ try:
+ # Since clones can be bare, use --absolute-git-dir instead of --show-toplevel
+ output = runfetchcmd("LANG=C %s rev-parse --absolute-git-dir" % ud.basecmd, d, workdir=ud.clonedir)
+
+ toplevel = os.path.abspath(output.rstrip())
+ abs_clonedir = os.path.abspath(ud.clonedir).rstrip('/')
+ # The top level Git directory must either be the clone directory
+ # or a child of the clone directory. Any ancestor directory of
+ # the clone directory is not valid as the Git directory (and
+ # probably belongs to some other unrelated repository), so a
+ # clone is required
+ if os.path.commonprefix([abs_clonedir, toplevel]) != abs_clonedir:
+ logger.warning("Top level directory '%s' doesn't match expected '%s'. Re-cloning", toplevel, ud.clonedir)
+ needs_clone = True
+ except bb.fetch2.FetchError as e:
+ logger.warning("Unable to get top level for %s (not a git directory?): %s", ud.clonedir, e)
+ needs_clone = True
+
+ if needs_clone:
+ shutil.rmtree(ud.clonedir)
+ else:
+ needs_clone = True
+
# If the repo still doesn't exist, fallback to cloning it
- if not os.path.exists(ud.clonedir):
+ if needs_clone:
# We do this since git will use a "-l" option automatically for local urls where possible,
# but it doesn't work when git/objects is a symlink, only works when it is a directory.
if repourl.startswith("file://"):
diff --git a/poky/bitbake/lib/bb/fetch2/gitsm.py b/poky/bitbake/lib/bb/fetch2/gitsm.py
index 47225b9721..a87361ccf3 100644
--- a/poky/bitbake/lib/bb/fetch2/gitsm.py
+++ b/poky/bitbake/lib/bb/fetch2/gitsm.py
@@ -123,6 +123,7 @@ class GitSM(Git):
url += ";name=%s" % module
url += ";subpath=%s" % module
url += ";nobranch=1"
+ url += ";lfs=%s" % self._need_lfs(ud)
# Note that adding "user=" here to give credentials to the
# submodule is not supported. Since using SRC_URI to give git://
# URL a password is not supported, one have to use one of the
@@ -242,10 +243,12 @@ class GitSM(Git):
ret = self.process_submodules(ud, ud.destdir, unpack_submodules, d)
if not ud.bareclone and ret:
- # All submodules should already be downloaded and configured in the tree. This simply sets
- # up the configuration and checks out the files. The main project config should remain
- # unmodified, and no download from the internet should occur.
- runfetchcmd("%s submodule update --recursive --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
+ # All submodules should already be downloaded and configured in the tree. This simply
+ # sets up the configuration and checks out the files. The main project config should
+ # remain unmodified, and no download from the internet should occur. As such, lfs smudge
+ # should also be skipped as these files were already smudged in the fetch stage if lfs
+ # was enabled.
+ runfetchcmd("GIT_LFS_SKIP_SMUDGE=1 %s submodule update --recursive --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
def implicit_urldata(self, ud, d):
import shutil, subprocess, tempfile
diff --git a/poky/bitbake/lib/bb/monitordisk.py b/poky/bitbake/lib/bb/monitordisk.py
index a1b910007d..f928210351 100644
--- a/poky/bitbake/lib/bb/monitordisk.py
+++ b/poky/bitbake/lib/bb/monitordisk.py
@@ -234,9 +234,10 @@ class diskMonitor:
freeInode = st.f_favail
if minInode and freeInode < minInode:
- # Some filesystems use dynamic inodes so can't run out
- # (e.g. btrfs). This is reported by the inode count being 0.
- if st.f_files == 0:
+ # Some filesystems use dynamic inodes so can't run out.
+ # This is reported by the inode count being 0 (btrfs) or the free
+ # inode count being -1 (cephfs).
+ if st.f_files == 0 or st.f_favail == -1:
self.devDict[k][2] = None
continue
# Always show warning, the self.checked would always be False if the action is WARN
diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py
index 48788f4aa6..c88d7129ca 100644
--- a/poky/bitbake/lib/bb/runqueue.py
+++ b/poky/bitbake/lib/bb/runqueue.py
@@ -200,21 +200,24 @@ class RunQueueScheduler(object):
curr_memory_pressure = memory_pressure_fds.readline().split()[4].split("=")[1]
now = time.time()
tdiff = now - self.prev_pressure_time
- if tdiff > 1.0:
- exceeds_cpu_pressure = self.rq.max_cpu_pressure and (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) / tdiff > self.rq.max_cpu_pressure
- exceeds_io_pressure = self.rq.max_io_pressure and (float(curr_io_pressure) - float(self.prev_io_pressure)) / tdiff > self.rq.max_io_pressure
- exceeds_memory_pressure = self.rq.max_memory_pressure and (float(curr_memory_pressure) - float(self.prev_memory_pressure)) / tdiff > self.rq.max_memory_pressure
+ psi_accumulation_interval = 1.0
+ cpu_pressure = (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) / tdiff
+ io_pressure = (float(curr_io_pressure) - float(self.prev_io_pressure)) / tdiff
+ memory_pressure = (float(curr_memory_pressure) - float(self.prev_memory_pressure)) / tdiff
+ exceeds_cpu_pressure = self.rq.max_cpu_pressure and cpu_pressure > self.rq.max_cpu_pressure
+ exceeds_io_pressure = self.rq.max_io_pressure and io_pressure > self.rq.max_io_pressure
+ exceeds_memory_pressure = self.rq.max_memory_pressure and memory_pressure > self.rq.max_memory_pressure
+
+ if tdiff > psi_accumulation_interval:
self.prev_cpu_pressure = curr_cpu_pressure
self.prev_io_pressure = curr_io_pressure
self.prev_memory_pressure = curr_memory_pressure
self.prev_pressure_time = now
- else:
- exceeds_cpu_pressure = self.rq.max_cpu_pressure and (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) > self.rq.max_cpu_pressure
- exceeds_io_pressure = self.rq.max_io_pressure and (float(curr_io_pressure) - float(self.prev_io_pressure)) > self.rq.max_io_pressure
- exceeds_memory_pressure = self.rq.max_memory_pressure and (float(curr_memory_pressure) - float(self.prev_memory_pressure)) > self.rq.max_memory_pressure
+
pressure_state = (exceeds_cpu_pressure, exceeds_io_pressure, exceeds_memory_pressure)
+ pressure_values = (round(cpu_pressure,1), self.rq.max_cpu_pressure, round(io_pressure,1), self.rq.max_io_pressure, round(memory_pressure,1), self.rq.max_memory_pressure)
if hasattr(self, "pressure_state") and pressure_state != self.pressure_state:
- bb.note("Pressure status changed to CPU: %s, IO: %s, Mem: %s" % pressure_state)
+ bb.note("Pressure status changed to CPU: %s, IO: %s, Mem: %s (CPU: %s/%s, IO: %s/%s, Mem: %s/%s) - using %s/%s bitbake threads" % (pressure_state + pressure_values + (len(self.rq.runq_running.difference(self.rq.runq_complete)), self.rq.number_tasks)))
self.pressure_state = pressure_state
return (exceeds_cpu_pressure or exceeds_io_pressure or exceeds_memory_pressure)
return False
diff --git a/poky/bitbake/lib/bb/server/process.py b/poky/bitbake/lib/bb/server/process.py
index f62faed000..40cb99bc97 100644
--- a/poky/bitbake/lib/bb/server/process.py
+++ b/poky/bitbake/lib/bb/server/process.py
@@ -38,8 +38,11 @@ logger = logging.getLogger('BitBake')
class ProcessTimeout(SystemExit):
pass
+def currenttime():
+ return datetime.datetime.now().strftime('%H:%M:%S.%f')
+
def serverlog(msg):
- print(str(os.getpid()) + " " + datetime.datetime.now().strftime('%H:%M:%S.%f') + " " + msg)
+ print(str(os.getpid()) + " " + currenttime() + " " + msg)
sys.stdout.flush()
#
@@ -289,7 +292,9 @@ class ProcessServer():
continue
try:
serverlog("Running command %s" % command)
- self.command_channel_reply.send(self.cooker.command.runCommand(command, self))
+ reply = self.cooker.command.runCommand(command, self)
+ serverlog("Sending reply %s" % repr(reply))
+ self.command_channel_reply.send(reply)
serverlog("Command Completed (socket: %s)" % os.path.exists(self.sockname))
except Exception as e:
stack = traceback.format_exc()
@@ -502,9 +507,9 @@ class ServerCommunicator():
def runCommand(self, command):
self.connection.send(command)
if not self.recv.poll(30):
- logger.info("No reply from server in 30s (for command %s)" % command[0])
+ logger.info("No reply from server in 30s (for command %s at %s)" % (command[0], currenttime()))
if not self.recv.poll(30):
- raise ProcessTimeout("Timeout while waiting for a reply from the bitbake server (60s)")
+ raise ProcessTimeout("Timeout while waiting for a reply from the bitbake server (60s at %s)" % currenttime())
ret, exc = self.recv.get()
# Should probably turn all exceptions in exc back into exceptions?
# For now, at least handle BBHandledException
diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py
index d0a555654b..b023b79eca 100644
--- a/poky/bitbake/lib/bb/siggen.py
+++ b/poky/bitbake/lib/bb/siggen.py
@@ -261,10 +261,6 @@ class SignatureGeneratorBasic(SignatureGenerator):
bb.warn("Error during finalise of %s" % mcfn)
raise
- #Slow but can be useful for debugging mismatched basehashes
- #for task in self.taskdeps[mcfn]:
- # self.dump_sigtask(mcfn, task, d.getVar("STAMP"), False)
-
basehashes = {}
for task in taskdeps:
basehashes[task] = self.basehash[mcfn + ":" + task]
@@ -274,6 +270,11 @@ class SignatureGeneratorBasic(SignatureGenerator):
d.setVar("__siggen_varvals", lookupcache)
d.setVar("__siggen_taskdeps", taskdeps)
+ #Slow but can be useful for debugging mismatched basehashes
+ #self.setup_datacache_from_datastore(mcfn, d)
+ #for task in taskdeps:
+ # self.dump_sigtask(mcfn, task, d.getVar("STAMP"), False)
+
def setup_datacache_from_datastore(self, mcfn, d):
super().setup_datacache_from_datastore(mcfn, d)
@@ -360,7 +361,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
for dep in sorted(self.runtaskdeps[tid]):
data += self.get_unihash(dep[1])
- for (f, cs) in self.file_checksum_values[tid]:
+ for (f, cs) in sorted(self.file_checksum_values[tid], key=clean_checksum_file_path):
if cs:
if "/./" in f:
data += "./" + f.split("/./")[1]
@@ -418,14 +419,14 @@ class SignatureGeneratorBasic(SignatureGenerator):
data['varvals'][task] = self.datacaches[mc].siggen_varvals[mcfn][task]
for dep in self.datacaches[mc].siggen_taskdeps[mcfn][task]:
if dep in self.basehash_ignore_vars:
- continue
+ continue
data['gendeps'][dep] = self.datacaches[mc].siggen_gendeps[mcfn][dep]
data['varvals'][dep] = self.datacaches[mc].siggen_varvals[mcfn][dep]
if runtime and tid in self.taskhash:
data['runtaskdeps'] = [dep[0] for dep in sorted(self.runtaskdeps[tid])]
data['file_checksum_values'] = []
- for f,cs in self.file_checksum_values[tid]:
+ for f,cs in sorted(self.file_checksum_values[tid], key=clean_checksum_file_path):
if "/./" in f:
data['file_checksum_values'].append(("./" + f.split("/./")[1], cs))
else:
@@ -744,6 +745,12 @@ class SignatureGeneratorTestEquivHash(SignatureGeneratorUniHashMixIn, SignatureG
self.server = data.getVar('BB_HASHSERVE')
self.method = "sstate_output_hash"
+def clean_checksum_file_path(file_checksum_tuple):
+ f, cs = file_checksum_tuple
+ if "/./" in f:
+ return "./" + f.split("/./")[1]
+ return f
+
def dump_this_task(outfile, d):
import bb.parse
mcfn = d.getVar("BB_FILENAME")
diff --git a/poky/bitbake/lib/bb/ui/buildinfohelper.py b/poky/bitbake/lib/bb/ui/buildinfohelper.py
index 129bb329c3..8b212b7803 100644
--- a/poky/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/poky/bitbake/lib/bb/ui/buildinfohelper.py
@@ -1746,7 +1746,6 @@ class BuildInfoHelper(object):
buildname = self.server.runCommand(['getVariable', 'BUILDNAME'])[0]
machine = self.server.runCommand(['getVariable', 'MACHINE'])[0]
- image_name = self.server.runCommand(['getVariable', 'IMAGE_NAME'])[0]
# location of the manifest files for this build;
# note that this file is only produced if an image is produced
@@ -1767,6 +1766,18 @@ class BuildInfoHelper(object):
# filter out anything which isn't an image target
image_targets = [target for target in targets if target.is_image]
+ if len(image_targets) > 0:
+ #if there are image targets retrieve image_name
+ image_name = self.server.runCommand(['getVariable', 'IMAGE_NAME'])[0]
+ if not image_name:
+ #When build target is an image and image_name is not found as an environment variable
+ logger.info("IMAGE_NAME not found, extracting from bitbake command")
+ cmd = self.server.runCommand(['getVariable','BB_CMDLINE'])[0]
+ #filter out tokens that are command line options
+ cmd = [token for token in cmd if not token.startswith('-')]
+ image_name = cmd[1].split(':', 1)[0] # remove everything after : in image name
+ logger.info("IMAGE_NAME found as : %s " % image_name)
+
for image_target in image_targets:
# this is set to True if we find at least one file relating to
# this target; if this remains False after the scan, we copy the
diff --git a/poky/bitbake/lib/bb/xattr.py b/poky/bitbake/lib/bb/xattr.py
new file mode 100755
index 0000000000..7b634944a4
--- /dev/null
+++ b/poky/bitbake/lib/bb/xattr.py
@@ -0,0 +1,126 @@
+#! /usr/bin/env python3
+#
+# Copyright 2023 by Garmin Ltd. or its subsidiaries
+#
+# SPDX-License-Identifier: MIT
+
+import sys
+import ctypes
+import os
+import errno
+
+libc = ctypes.CDLL("libc.so.6", use_errno=True)
+fsencoding = sys.getfilesystemencoding()
+
+
+libc.listxattr.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_size_t]
+libc.llistxattr.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_size_t]
+
+
+def listxattr(path, follow=True):
+ func = libc.listxattr if follow else libc.llistxattr
+
+ os_path = os.fsencode(path)
+
+ while True:
+ length = func(os_path, None, 0)
+
+ if length < 0:
+ err = ctypes.get_errno()
+ raise OSError(err, os.strerror(err), str(path))
+
+ if length == 0:
+ return []
+
+ arr = ctypes.create_string_buffer(length)
+
+ read_length = func(os_path, arr, length)
+ if read_length != length:
+ # Race!
+ continue
+
+ return [a.decode(fsencoding) for a in arr.raw.split(b"\x00") if a]
+
+
+libc.getxattr.argtypes = [
+ ctypes.c_char_p,
+ ctypes.c_char_p,
+ ctypes.c_char_p,
+ ctypes.c_size_t,
+]
+libc.lgetxattr.argtypes = [
+ ctypes.c_char_p,
+ ctypes.c_char_p,
+ ctypes.c_char_p,
+ ctypes.c_size_t,
+]
+
+
+def getxattr(path, name, follow=True):
+ func = libc.getxattr if follow else libc.lgetxattr
+
+ os_path = os.fsencode(path)
+ os_name = os.fsencode(name)
+
+ while True:
+ length = func(os_path, os_name, None, 0)
+
+ if length < 0:
+ err = ctypes.get_errno()
+ if err == errno.ENODATA:
+ return None
+ raise OSError(err, os.strerror(err), str(path))
+
+ if length == 0:
+ return ""
+
+ arr = ctypes.create_string_buffer(length)
+
+ read_length = func(os_path, os_name, arr, length)
+ if read_length != length:
+ # Race!
+ continue
+
+ return arr.raw
+
+
+def get_all_xattr(path, follow=True):
+ attrs = {}
+
+ names = listxattr(path, follow)
+
+ for name in names:
+ value = getxattr(path, name, follow)
+ if value is None:
+ # This can happen if a value is erased after listxattr is called,
+ # so ignore it
+ continue
+ attrs[name] = value
+
+ return attrs
+
+
+def main():
+ import argparse
+ from pathlib import Path
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument("path", help="File Path", type=Path)
+
+ args = parser.parse_args()
+
+ attrs = get_all_xattr(args.path)
+
+ for name, value in attrs.items():
+ try:
+ value = value.decode(fsencoding)
+ except UnicodeDecodeError:
+ pass
+
+ print(f"{name} = {value}")
+
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/poky/bitbake/lib/bblayers/query.py b/poky/bitbake/lib/bblayers/query.py
index bec76db98a..bfc18a7593 100644
--- a/poky/bitbake/lib/bblayers/query.py
+++ b/poky/bitbake/lib/bblayers/query.py
@@ -282,7 +282,10 @@ Lists recipes with the bbappends that apply to them as subitems.
else:
logger.plain('=== Appended recipes ===')
- pnlist = list(self.tinfoil.cooker_data.pkg_pn.keys())
+
+ cooker_data = self.tinfoil.cooker.recipecaches[args.mc]
+
+ pnlist = list(cooker_data.pkg_pn.keys())
pnlist.sort()
appends = False
for pn in pnlist:
@@ -295,7 +298,7 @@ Lists recipes with the bbappends that apply to them as subitems.
if not found:
continue
- if self.show_appends_for_pn(pn):
+ if self.show_appends_for_pn(pn, cooker_data, args.mc):
appends = True
if not args.pnspec and self.show_appends_for_skipped():
@@ -304,8 +307,10 @@ Lists recipes with the bbappends that apply to them as subitems.
if not appends:
logger.plain('No append files found')
- def show_appends_for_pn(self, pn):
- filenames = self.tinfoil.cooker_data.pkg_pn[pn]
+ def show_appends_for_pn(self, pn, cooker_data, mc):
+ filenames = cooker_data.pkg_pn[pn]
+ if mc:
+ pn = "mc:%s:%s" % (mc, pn)
best = self.tinfoil.find_best_provider(pn)
best_filename = os.path.basename(best[3])
@@ -530,6 +535,7 @@ NOTE: .bbappend files can impact the dependencies.
parser_show_appends = self.add_command(sp, 'show-appends', self.do_show_appends)
parser_show_appends.add_argument('pnspec', nargs='*', help='optional recipe name specification (wildcards allowed, enclose in quotes to avoid shell expansion)')
+ parser_show_appends.add_argument('--mc', help='use specified multiconfig', default='')
parser_show_cross_depends = self.add_command(sp, 'show-cross-depends', self.do_show_cross_depends)
parser_show_cross_depends.add_argument('-f', '--filenames', help='show full file path', action='store_true')
diff --git a/poky/bitbake/lib/toaster/bldcollector/urls.py b/poky/bitbake/lib/toaster/bldcollector/urls.py
index efd67a81a5..3c34070351 100644
--- a/poky/bitbake/lib/toaster/bldcollector/urls.py
+++ b/poky/bitbake/lib/toaster/bldcollector/urls.py
@@ -6,7 +6,7 @@
# SPDX-License-Identifier: GPL-2.0-only
#
-from django.conf.urls import url
+from django.urls import re_path as url
import bldcollector.views
diff --git a/poky/bitbake/lib/toaster/bldcontrol/models.py b/poky/bitbake/lib/toaster/bldcontrol/models.py
index c2f302da24..42750e7180 100644
--- a/poky/bitbake/lib/toaster/bldcontrol/models.py
+++ b/poky/bitbake/lib/toaster/bldcontrol/models.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
from django.db import models
-from django.utils.encoding import force_text
+from django.utils.encoding import force_str
from orm.models import Project, Build, Layer_Version
import logging
@@ -124,7 +124,7 @@ class BuildRequest(models.Model):
return self.brvariable_set.get(name="MACHINE").value
def __str__(self):
- return force_text('%s %s' % (self.project, self.get_state_display()))
+ return force_str('%s %s' % (self.project, self.get_state_display()))
# These tables specify the settings for running an actual build.
# They MUST be kept in sync with the tables in orm.models.Project*
diff --git a/poky/bitbake/lib/toaster/orm/models.py b/poky/bitbake/lib/toaster/orm/models.py
index 2cb7d7e049..f9fcf9e4fb 100644
--- a/poky/bitbake/lib/toaster/orm/models.py
+++ b/poky/bitbake/lib/toaster/orm/models.py
@@ -107,7 +107,7 @@ class ToasterSetting(models.Model):
class ProjectManager(models.Manager):
- def create_project(self, name, release, existing_project=None):
+ def create_project(self, name, release, existing_project=None, imported=False):
if existing_project and (release is not None):
prj = existing_project
prj.bitbake_version = release.bitbake_version
@@ -134,19 +134,19 @@ class ProjectManager(models.Manager):
if release is None:
return prj
-
- for rdl in release.releasedefaultlayer_set.all():
- lv = Layer_Version.objects.filter(
- layer__name=rdl.layer_name,
- release=release).first()
-
- if lv:
- ProjectLayer.objects.create(project=prj,
- layercommit=lv,
- optional=False)
- else:
- logger.warning("Default project layer %s not found" %
- rdl.layer_name)
+ if not imported:
+ for rdl in release.releasedefaultlayer_set.all():
+ lv = Layer_Version.objects.filter(
+ layer__name=rdl.layer_name,
+ release=release).first()
+
+ if lv:
+ ProjectLayer.objects.create(project=prj,
+ layercommit=lv,
+ optional=False)
+ else:
+ logger.warning("Default project layer %s not found" %
+ rdl.layer_name)
return prj
diff --git a/poky/bitbake/lib/toaster/toastergui/urls.py b/poky/bitbake/lib/toaster/toastergui/urls.py
index d2df4e6048..bc3b0c79d8 100644
--- a/poky/bitbake/lib/toaster/toastergui/urls.py
+++ b/poky/bitbake/lib/toaster/toastergui/urls.py
@@ -6,7 +6,7 @@
# SPDX-License-Identifier: GPL-2.0-only
#
-from django.conf.urls import url
+from django.urls import re_path as url
from django.views.generic import RedirectView
from toastergui import tables
diff --git a/poky/bitbake/lib/toaster/toastergui/views.py b/poky/bitbake/lib/toaster/toastergui/views.py
index a571b8cc18..552ff1649b 100644
--- a/poky/bitbake/lib/toaster/toastergui/views.py
+++ b/poky/bitbake/lib/toaster/toastergui/views.py
@@ -670,11 +670,11 @@ def xhr_dirinfo(request, build_id, target_id):
return HttpResponse(_get_dir_entries(build_id, target_id, top), content_type = "application/json")
from django.utils.functional import Promise
-from django.utils.encoding import force_text
+from django.utils.encoding import force_str
class LazyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Promise):
- return force_text(obj)
+ return force_str(obj)
return super(LazyEncoder, self).default(obj)
from toastergui.templatetags.projecttags import filtered_filesizeformat
@@ -1404,7 +1404,7 @@ if True:
if not os.path.isdir('%s/conf' % request.POST['importdir']):
raise BadParameterException("Bad path or missing 'conf' directory (%s)" % request.POST['importdir'])
from django.core import management
- management.call_command('buildimport', '--command=import', '--name=%s' % request.POST['projectname'], '--path=%s' % request.POST['importdir'], interactive=False)
+ management.call_command('buildimport', '--command=import', '--name=%s' % request.POST['projectname'], '--path=%s' % request.POST['importdir'])
prj = Project.objects.get(name = request.POST['projectname'])
prj.merged_attr = True
prj.save()
diff --git a/poky/bitbake/lib/toaster/toastergui/widgets.py b/poky/bitbake/lib/toaster/toastergui/widgets.py
index ceff52942e..53696912a4 100644
--- a/poky/bitbake/lib/toaster/toastergui/widgets.py
+++ b/poky/bitbake/lib/toaster/toastergui/widgets.py
@@ -7,6 +7,7 @@
#
from django.views.generic import View, TemplateView
+from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_control
from django.shortcuts import HttpResponse
from django.core.cache import cache
@@ -63,8 +64,8 @@ class ToasterTable(TemplateView):
self.default_orderby = ""
# prevent HTTP caching of table data
- @cache_control(must_revalidate=True,
- max_age=0, no_store=True, no_cache=True)
+ @method_decorator(cache_control(must_revalidate=True,
+ max_age=0, no_store=True, no_cache=True))
def dispatch(self, *args, **kwargs):
return super(ToasterTable, self).dispatch(*args, **kwargs)
diff --git a/poky/bitbake/lib/toaster/toastermain/management/commands/buildimport.py b/poky/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
index e25b55e5ab..f7139aa041 100644
--- a/poky/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
+++ b/poky/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
@@ -545,7 +545,7 @@ class Command(BaseCommand):
# Find the directory's release, and promote to default_release if local paths
release = self.find_import_release(layers_list,lv_dict,default_release)
# create project, SANITY: reuse any project of same name
- project = Project.objects.create_project(project_name,release,project)
+ project = Project.objects.create_project(project_name,release,project, imported=True)
# Apply any new layers or variables
self.apply_conf_variables(project,layers_list,lv_dict,release)
# WORKAROUND: since we now derive the release, redirect 'newproject_specific' to 'project_specific'
diff --git a/poky/bitbake/lib/toaster/toastermain/management/commands/checksocket.py b/poky/bitbake/lib/toaster/toastermain/management/commands/checksocket.py
index 811fd5d516..b2c002da7a 100644
--- a/poky/bitbake/lib/toaster/toastermain/management/commands/checksocket.py
+++ b/poky/bitbake/lib/toaster/toastermain/management/commands/checksocket.py
@@ -13,7 +13,7 @@ import errno
import socket
from django.core.management.base import BaseCommand, CommandError
-from django.utils.encoding import force_text
+from django.utils.encoding import force_str
DEFAULT_ADDRPORT = "0.0.0.0:8000"
@@ -51,7 +51,7 @@ class Command(BaseCommand):
if hasattr(err, 'errno') and err.errno in errors:
errtext = errors[err.errno]
else:
- errtext = force_text(err)
+ errtext = force_str(err)
raise CommandError(errtext)
self.stdout.write("OK")
diff --git a/poky/bitbake/lib/toaster/toastermain/urls.py b/poky/bitbake/lib/toaster/toastermain/urls.py
index 5fb520b384..0360302668 100644
--- a/poky/bitbake/lib/toaster/toastermain/urls.py
+++ b/poky/bitbake/lib/toaster/toastermain/urls.py
@@ -6,7 +6,7 @@
# SPDX-License-Identifier: GPL-2.0-only
#
-from django.conf.urls import include, url
+from django.urls import re_path as url, include
from django.views.generic import RedirectView, TemplateView
from django.views.decorators.cache import never_cache
import bldcollector.views
diff --git a/poky/bitbake/toaster-requirements.txt b/poky/bitbake/toaster-requirements.txt
index dedd423556..c1f433f9ec 100644
--- a/poky/bitbake/toaster-requirements.txt
+++ b/poky/bitbake/toaster-requirements.txt
@@ -1,3 +1,3 @@
-Django>3.2,<3.3
+Django>4.2,<4.3
beautifulsoup4>=4.4.0
pytz