From 03514f1996efa799e50da744818ba331c2e893b6 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Fri, 5 Apr 2024 07:04:11 -0500 Subject: subtree updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit meta-security: 30e755c592..283a773f24: Armin Kuster (2): meta-security: Drop ${PYTHON_PN} openscap: update to tip to fix new build issue. Jeremy A. Puhlman (4): arpwatch: fix misspelling of PACKAGECONFIG aprwatch: Add path for sendmail Check for usrmerge before removing /usr/lib arpwatch: install man8 dir Kevin Hao (4): docs: dm-verity.txt: Fix a typo dm-verity: Adjust the image names according to the oe-core change dm-verity: Set the IMAGE_FSTYPES correctly when dm-verity is enabled dm-verity-image-initramfs: Set IMAGE_NAME_SUFFIX to empty Max Krummenacher (1): layer.conf: Update for the scarthgap release series Mingli Yu (1): python3-pyinotify: Make asyncore support optional for Python 3 poky: 7165c23237..110ee701b3: Alejandro Hernandez Samaniego (1): python3-manifest: Sync RDEPENDS with latest version Alexander Kanavin (11): meson: correct upstream version check (exclude pre-releases) cargo-c-native: convert from git fetcher to crate fetcher cargo-c-native: update 0.9.18 -> 0.9.30 man-pages: use env from coreutils-native sdk-manual: correctly describe separate build-sysroots tasks in direct sdk workflows dev/ref-manual: document conf-summary.txt together with conf-notes.txt dev-manual: improve descriptions of 'bitbake -S printdiff' wayland: fix upstream version check by asking gitlab directly python3: correct upstream version check bitbake: bitbake: improve descriptions of '-S printdiff' selftest/sstatetests: run CDN check twice, ignoring errors the first time Alexandre Truong (1): oeqa/selftest/devtool: fix test_devtool_add_git_style2 Anibal Limon (1): wic: bootimg-partition allow to set var to get boot files BELOUARGA Mohamed (1): ref-manual: add documentation of the variable SPDX_NAMESPACE_PREFIX Bartosz Golaszewski (1): linux-firmware: update to 20240312 Baruch Siach (1): oeqa/selftest/overlayfs: test read-only rootfs Bruce Ashfield (16): linux-yocto/6.6: cfg: generic arm64 linux-yocto/6.6: cfg: riscv XHCI linux-yocto/6.6: update to v6.6.21 linux-yocto/6.6: update CVE exclusions (6.6.21) linux-yocto/6.6: cfg: drop unsettable options linux-yocto/6.6: drm/tilcdc: Set preferred depth linux-yocto/6.6: update to v6.6.22 linux-yocto/6.6: update CVE exclusions (6.6.22) yocto-bsps: update to v6.6.21 linux-yocto/6.6: cfg: genericarm64 platform/peripheral support linux-yocto/6.6: cfg: genericarm64 configuration updates linux-yocto/6.6: nftables: ptest and cleanup tweaks linux-yocto/6.6: update to v6.6.23 linux-yocto/6.6: update CVE exclusions (6.6.23) linux-yocto-dev: bump to v6.9 lttng-modules: update to v2.13.12 Changqing Li (1): dnf: fix Exception handling for class ProcessLock Chen Qi (1): ovmf: set CVE_PRODUCT and CVE_VERSION Christian Taedcke (1): kernel-fitImage: only include valid compatible line Derek Erdmann (1): bitbake: fetch2/git: Install Git LFS in local repository config Enrico Jörns (3): cml1: remove needless check for write_taint attribute cml1: prompt location of updated .config after do_menuconfig() perf: fix TMPDIR contamination for recent mainline kernels Enrico Scholz (1): shadow: fix copydir operation with 'pseudo' Felix Moessbauer (1): bitbake: utils: better estimate number of available cpus Harish Sadineni (3): gcc: Oe-selftest failure analysis - fix for tcl errors gcc: Oe-selftest failure analysis - fix for vect-simd test failures binutils: gprofng - change use of bignum to use of bignint Jermain Horsman (1): bblayers/makesetup.py: Move git utility functions to oe.buildcfg module Joe Slater (1): systemd: enable mac based names in NamePolicy Jose Quaresma (5): go.bbclass: set GOPROXY elfutils: fix unused variable BUFFER_SIZE go: keep the patches in order go: upgrade 1.22.1 -> 1.22.2 sstatesig: fix netrc.NetrcParseError exception Joshua Watt (4): sstatesig: Set hash server credentials from bitbake variables bitbake: siggen: Add support for hashserve credentials sstatesig: Warn on bad .netrc bitbake: bitbake-hashclient: Warn on bad .netrc Jörg Sommer (1): autotools: update link in comment for cross compiling Kevin Hao (1): image-live.bbclass: Adjust the default value for INITRD_LIVE Khem Raj (13): systemd: Check for directory before chmod'ing it llvm: Update to 18.1.1 release elfutils: Fix build break with clang glibc: Update to tip of 2.39 branch pam: Fix build with musl piglit: Switch to upstreamed patch for musl fix qemuriscv: Fix kbd and mouse emulation for qemuriscv64 llvm: Upgrade to 18.1.2 bugfix release glibc: Repace aarch configure patch fix with a backport valgrind: Backport fixes from 3.22 branch tcl: Forward port skip logic for musl ptests readline: Apply patches from readline-8.2-patches mesa: Drop LLVM-17 patch Lee Chee Yang (1): migration-guides: add release notes for 4.0.17 Marcel Ziswiler (1): mesa: enable imagination powervr support Markus Volk (11): mesa: fix opencl-spirv build vala: merge bb and inc files vala: fix for gtk4 prior to 4.14 libsoup: enable vapi support gsettings-desktop-schemas: update 45.0 -> 46.0 libadwaita: update 1.4.4 -> 1.5.0 gtk4: update 4.12.5 -> 4.14.1 systemd: disable mdns feature in resolved for zeroconf webkitgtk: update 2.42.5 -> 2.44.0 gtk+3: disable wayland without opengl epiphany: update 45.3 -> 46.0 Martin Jansa (2): contributor-guide: be more specific about meta-* trees pixman: explicitly disable openmp in native builds Max Krummenacher (1): git: git-replacement-native: depend on ca-certificate Michael Opdenacker (8): manuals: add initial stylechecks with Vale profile-manual: usage.rst: formatting fixes manuals: use "manual page(s)" profile-manual: usage.rst: fix reference to bug report documentation: Makefile: remove releases.rst in "make clean" migration-guides: draft notes for upcoming release 5.0 manuals: add initial stylechecks with Vale profile-manual: usage.rst: further style improvements Oleh Matiusha (3): bash: improve reproducibility curl: improve reproducibility gmp: improve reproducibility Paul Barker (1): kernel: Fix check_oldest_kernel Peter A. Bigot (1): bitbake: lib/bb: support NO_COLOR Peter Kjellerstedt (1): util-linux: Set the license for util-linux-fcntl-lock to MIT Philippe Rivest (1): bitbake: bitbake: fetch2/git: Escape parentheses in git src name Quentin Schulz (1): u-boot: fix externalsrc not triggering do_configure on defconfig changes Randy MacLeod (1): gstreamer: upgrade 1.22.10 -> 1.22.11 Richard Purdie (10): poky: Update to prepare for scarthgap release layer.conf: Prepare for release, drop nanbield LAYERSERIES expat: Upgrade 2.6.1 -> 2.6.2 bash/flex: Ensure BUILD_FLAGS doesn't leak onto target uninative: Add pthread linking workaround poky-altcfg: Default to ipk packaging util-linux: Add missing MIT license util-linux: Add fcntl-lock run-postinsts: Add workaround for locking deadlock issue oeqa/sstatetests: Fix race issue Ross Burton (22): genericarm64.wks: reorder partitions genericarm64: clean up kernel modules and firmware linux-firmware: add support for deduplicating the firmware linux-firmware: set LICENSE field for -liquidui and -mellanox linux-firmware: remove pointless linux-firmware-gplv2-license package curl: improve run-ptest curl: increase test timeouts gstreamer1.0: improve test reliability linux-yocto: put COMPATIBLE_MACHINE first linux-yocto: implicitly track oe-core's kernel version for genericarm64 bitbake: fetch2: handle URIs with single-valued query parameters python3_pip517: just count wheels in the directory, not subdirectories python-*: don't set PYPI_ARCHIVE_NAME and S when PYPI_PACKAGE is sufficient tcl: improve run-ptest tcl: skip I/O channel 46.1 genericarm64: add qemuboot configuration classes/qemuboot: add depends on qemu-system-native and qemu-helper-native README.hardware.md: fix Markdown formatting README.hardware.md: add section on genericarm64 on qemu glib-2.0: skip a timing sensitive ptest openssl: fix crash on aarch64 if BTI is enabled but no Crypto instructions curl: fix quoting when disabling flaky tests Ryan Eatmon (1): perf: Fix QA error due to most recent kernel Sam Van Den Berge (1): shadow: don't install libattr.so.* when xattr not in DISTRO_FEATURES Sava Jakovljev (1): bitbake: bitbake-worker: Fix bug where umask 0 was not being applied to a task Simone Weiß (1): gnutls: upgrade 3.8.3 -> 3.8.4 Soumya Sambu (1): go: Upgrade 1.22.0 -> 1.22.1 Sourav Kumar Pramanik (1): libseccomp: Add back in PTESTS_SLOW list Sundeep KOKKONDA (1): rust: reproducibility issue fix with v1.75 Tim Orling (2): coreutils: drop obsolete liberror-perl RDEPENDS liberror-perl: move to meta-perl Timon Bergelt (1): populate_sdk_ext.bbclass: only overwirte lsb string if uninative is used Tom Hochstein (2): bmaptool: Add bmap-tools runtime alias for compatibility toolchain-shar-relocate.sh: Add check for missing command 'file' Trevor Woerner (1): bmaptool: update to latest Ulrich Ölmann (1): ref-manual: classes: update description of class 'image_types' Viswanath Kraleti (1): bitbake: fetch2: Fix misleading "no output" msg Wang Mingyu (1): libadwaita: upgrade 1.4.3 -> 1.4.4 William Lyu (1): openssh: Add a workaround for ICE on powerpc64le Xiangyu Chen (3): lttng-tools: skip kernel tests if no kernel modules present ltp: fix missing connectors tests in scenario_groups/default lttng-tools: fix rotation-destroy-flush test fails if no kernel module present Yang Xu (1): bitbake: bitbake-worker: Fix silent hang issue caused by unexpected stdout content Yannick Rodriguez (1): linux-firmware: Move Intel 9260 modules firmware. Yash Shinde (1): glibc: Skip 2 qemu tests that can hang in oe-selftest Yi Zhao (1): libtirpc: drop redundant PACKAGECONFIG Yoann Congal (6): cve-update-nvd2-native: Fix typo in comment cve-update-nvd2-native: Add an age threshold for incremental update cve-update-nvd2-native: Remove duplicated CVE_CHECK_DB_FILE definition cve-update-nvd2-native: nvd_request_next: Improve comment cve-update-nvd2-native: Fix CVE configuration update cve-update-nvd2-native: Remove rejected CVE from database Yogesh Tyagi (1): lttng-modules: fix v6.8+ build david d zuhn (1): bitbake: bitbake-worker: allow '=' in environment variable values lixiaoyong (3): kernel-module-split.bbclass: enhance objcopy command call for kernel compilation with llvm utils: enhance readelf command call with llvm oe/package: enhance objdump command call with llvm meta-raspberrypi: 92a9b7a012..d072cc8a48: Khem Raj (9): linux-raspberrypi: Add recipe for 6.6 LTS kernel bluez-firmware-rpidistro: Upgrade to 1.2-9+rpt3 release linux-firmware-rpidistro: Upgrade to bookworm/20230625-2+rpt2 raspberrypi-firmware: Fetch using git URI rpi-base: Add missing broadcom/ prefix to find DTB files rpi-default-versions: Switch default kernel to 6.6 linux-raspberrypi_6.6: Bump to 6.6.22 rpi-bootfiles: Resort to github APIs for tarballs raspberrypi-firmware: Revert to debian archive Martin Jansa (1): userland: fix installed-vs-shipped in multilib builds jdavidsson (1): rpi-base: Add hifiberry-dacplusadc overlay meta-arm: aba9250494..d9e18ce792: Abdellatif El Khlifi (1): arm-bsp/corstone1000: add documentation disclaimer Alexander Sverdlin (1): optee-ftpm: fix EARLY_TA_PATHS passed to optee-os Ali Can Ozaslan (4): arm-bsp/trusted-firmware-m: corstone1000: update to 2.0 arm-bsp/trusted-services: corstone1000: Client Id adjustments after TF-M 2.0 arm/trusted-firmware-m: Change GNU Arm compiler version for TF-M 2.0 arm-bsp/trusted-firmware-a: n1sdp: update to 2.10 Anusmita Dutta Mazumder (2): arm-bsp/n1sdp: Update scp-firmware version arm-bsp/n1sdp: Update EDK2 version Bence Balogh (2): arm-bsp/u-boot: corstone1000: fix SMCCC_ARCH_FEATURES detection in the PSCI driver arm-bsp/trusted-firmware-a: corstone1000: remove SMCCC_ARCH_FEATURES discovery workaround Delane Brandy (1): arm/trusted-firmware-a: fix mbedTLS version Drew Reed (2): kas: Corstone-1000 kas files updated bsp: Corstone-1000 userguide updates Emekcan Aras (2): arm-bsp/trusted-firmware-a: Upgrade Corstone1000 to TF-A v2.10 arm/trusted-services: Add recipe for block storage service Jon Mason (17): README: Add information about release process and mailing list arm/linux-yocto: remove unreferenced patch arm/optee: disable clang due to breakage arm-bsp/tf-a-tests: remove corstone1000 intermediate SHA arm-bsp/tfa-tests: move n1sdp patch to platform directory CI: update kas to 4.3.1 arm/edk2: update to 202402 arm/trusted-firmware-a: update to 2.10.2 arm/sbsa-acs: update to 7.1.4 arm/scp-firmware: update to v2.14.0 arm-toolchain/gcc-arm-none-eabi: remove 11.2 CI: reduce coverage of dev kernel arm/sbsa-acs: remove unreferenced patch arm-toolchain: correct UPSTREAM_CHECK Revert "arm/rmm: Add bitbake, include and patch file for RMM firmware" arm/sbsa-acs: use UPSTREAM_CHECK_URI for version checking arm: use UPSTREAM_CHECK_COMMITS for git versioned recipes Mathieu Poirier (1): arm/rmm: Add bitbake, include and patch file for RMM firmware Ross Burton (3): arm arm-bsp: enable patch-status warnings Add SECURITY.md CI: ignore netrc warnings caused by Kas meta-openembedded: a0237019f5..a6bcdca5b4: Bartosz Golaszewski (1): libgpiod: update to v2.1.1 Chad Rockey (1): cppzmq-dev expects /usr/lib/libzmq.a Changqing Li (1): postgresql: fix a runtime error Chen Qi (1): tcprelay: fix a minor cross compilation do_configure issue Christophe Chapuis (9): lvgl: fix typo in lv-conf.inc lvgl: install lv_conf.h lvgl: remove useless FILES include lvgl: cleanup sed instructions in lv-conf.inc lvgl: add more variables to lv-conf.inc lvgl: fix libdrm include lvgl: lv-conf.inc: generalize sed instructions lvgl: make libdrm include conditional lvgl: cleanup sed expression Dan McGregor (2): python3-pylint: Update to 3.1.0 python3-pylint: Fix ptest failures Derek Straka (1): python3-dbus: re-add recipe with latest patches and add ptest Etienne Cordonnier (1): uutils-coreutils: upgrade 0.0.24 -> 0.0.25 Fathi Boudra (1): python3-django: upgrade 4.2.10 -> 4.2.11 Guðni Már Gilbert (2): python3-ecdsa: remove python3-pbr python3-ecdsa: cleanup DEPENDS Jaeyoon Jung (1): lvgl: Set resolution prior to buffer Joe Slater (1): googletest: allow for shared libraries Jose Quaresma (1): ostree: Upgrade 2024.4 -> 2024.5 Jörg Sommer (3): sngrep: new recipe for ncurses SIP Messages flow viewer spandsp: new telephony DSP library bluez-tools: New recipe for bluez5 tools Kai Kang (2): Packages depends on libadwaita should require distro feature opengl thin-provisioning-tools: install binary to ${sbindir} Khem Raj (55): squid: Upgrade to 6.8 libosinfo: Fix build with libxml2 v2.12 xmlstarlet: Fix build with API breakage in libxml2 2.12 mariadb: Fix build with libxml2 2.12 ABI changes libmusicbrainz: Update to tip of trunk gnome-commander: Fix build with taglib 2.0 gnome-online-accounts: Fix build with libxml2 2.12 vlc: Upgrade to 3.0.20 netcf: Fix build with latest gnulib php: Upgrade to 8.2.16 vlc: Fix build on 32bit x86 libtinyxml2: Extend for nativesdk lvgl: Fix dev-elf build QA layer.conf: Update for the scarthgap release series dietsplash: Update and fix build with musl frr: Upgrade to latest on 9.1 stable frr: Fix build on newer musl layer.conf: Prepare for release, drop nanbield LAYERSERIES libcamera: Fix clang support patches plocate: Fix sys/stat.h and linux/stat.h conflicts with musl liburing: Upgrade to 2.5 openflow: Delete recipe for 1.0 openflow: Merge .inc into .bb openflow: Fix build with musl tracker-miners: Disable seccomp support on musl libcamera: Fix build on musl systems ipset: Update to 7.21 ot-daemon: Update to tip of trunk ot-br-posix: Update to latest wpantund: Update to latest xfsdump: Fix build with musl >= 1.2.5 xfstests: Fix build with musl >= 1.2.5 net-snmp: Fix build with musl rdma-core: Fix build with musl >= 1.2.5 ssmtp: Fix build with musl >= 1.2.5 autofs: Fix build with musl >= 1.2.5 lvm2: Fix build with musl 1.5.2+ sanlock: Fix build with musl >= 1.2.5 ndctl: Fix build issues seen with musl 1.2.5 sdbus-c++-libsystemd: Upgrade to 255.4 release of systemd sdbus-c++,sdbus-c++-tools: Upgrade to 1.5.0 release wtmpdb: Upgrade to 0.11.0 release uftrace: Fix build with musl >= 1.2.5 fio: Upgrade to 3.36+git i2cdev: Include libgen.h on musl directfb: Fix build with musl >= 1.2.5 iwd: Upgrade to 2.16 minifi-cpp: Fix libsodium build on aarch64/clang multipath-tools: Fix build with musl >= 1.2.5 aer-inject: Fix build with latest musl aer-inject: Replace hardcoded /usr with ${prefix} microsoft-gsl: Disable disabled-macro-expansion warning as error on clang/musl meta-python-image-ptest: Use 2G RAM for some demanding tests python3-pydbus: Add bash dependency for ptests highway,libjxl: Remove -mfp16-format=ieee when using clang compiler Leon Anavi (7): python3-anyio: Upgrade 4.2.0 -> 4.3.0 python3-httpx: Upgrade 0.26.0 -> 0.27.0 python3-multidict: Upgrade 6.0.4 -> 6.0.5 python3-croniter: Upgrade 2.0.1 -> 2.0.3 python3-paho-mqtt: Upgrade 1.6.1 -> 2.0.0 python3-typeguard: Upgrade 4.1.5 -> 4.2.1 python3-cachetools: Upgrade 5.3.2 -> 5.3.3 Marek Vasut (14): lvgl: Drop dialog-lvgl lvgl: Upgrade to LVGL 9 series lvgl: Rename lv-drivers.inc to lv-conf.inc lvgl: Add SDL2 fullscreen mode configuration option lvgl: Configure assertions based on DEBUG_BUILD lvgl: Default to XRGB8888 DRM framebuffer lvgl: Build shared library lvgl: Replace sed patching with real patches lvgl: Generate proper shared libraries with version suffix lvgl: Reinstate demo configuration settings lvgl: Update to 9.1.0 lvgl: Drop superfluous ALLOW_EMPTY lvgl: Drop unnecessary PV append lvgl: Deduplicate PACKAGECONFIG into lv-conf Markus Volk (66): mozjs-115: fix reproducibility issue webp-pixbuf-loader: update 0.2.5 -> 0.2.7 gnome-control-center: fix reproducibility issue gnome-disk-utility: fix reproducibility issue gnome-settings-daemon: fix reproducibility issue gnome-terminal: fix reproducibility issue libvncserver: fix reproducibility issue editorconfig-core-c: fix reproducibility issue crossguid: fix reproducibility issue waylandpp: fix reproducibility issue polkit: remove unneeded workaround gtk-vnc: fix reproducibility issue pipewire: update 1.0.3 -> 1.0.4 mutter: remove zenity from rdepends mutter: update 45.4 -> 46.0 gnome-shell: update 45.4 -> 46.0 gnome-settings-daemon: update 45.0 -> 46.0 gnome-software: update 45.3 -> 46.0 evince: update 45.0 -> 46.0 gnome-online-accounts: update 3.48.0 -> 3.50.0 evolution-data-server: build with webkitgtk4 folks: update 0.15.7 -> 0.15.8 gnome-control-center: update 45.3 -> 46.0 xdg-desktop-portal-gnome: update 45.1 -> 46.0 tracker: update 3.6.0 -> 3.7.0 tracker-miners: update 3.6.2 -> 3.7.0 freerdp3: add recipe wireplumber: update 0.4.17 -> 0.5.0 tecle: update 45.0 -> 46.0 gnome-calculator: update 45.0.2 -> 46.0 gnome-session: update 45.0 -> 46.0 gnome-remote-desktop: update 45.1 -> 46.0 gnome-calendar: update 45.1 -> 46.0 libgweather4: update 4.4.0 -> 4.4.2 gtksourceview5: update 5.10.0 -> 5.12.0 gnome-control-center: use gcr4 variant libcloudproviders: update 0.3.5 -> 0.3.6 gnome-themes-extra: build with gtk+3 gtk4mm: add recipe gnome-system-monitor: update 45.0.1 -> 46.0 gnome-boxes: update 45.0 -> 46.0 eog: update 45.2 -> 45.3 gparted: update 1.5.0 -> 1.6.0 libgtop: update 2.41.1 -> 2.41.3 gnome-bluetooth: update 42.8 -> 46.0 gnome-text-editor: update 45.1 -> 46.0 gnome-chess: update 43.2 -> 46.0 gnome-disk-utility: update 45.0 -> 46.0 gnome-shell-extensions: update 45.2 -> 46.0 msgraph: add recipe gvfs: update 1.52.2 -> 1.54.0 tracker-miners: drop buildpath from tracker-miner-fs-3 evolution-data-server: disable tests and examples tracker-miners: fix reproducibility issue for landlock file-roller: update 43.1 -> 44.0 apache2: preset mpm=prefork by default gnome-user-share: add recipe gnome-control-center: update 46.0 -> 46.0.1 gdm: update 45.0.1 -> 46.0 gnome-user-share: remove hardcoded paths ghex: update 45.1 -> 46.0 libjxl: add recipe gnome-backgrounds: add runtime depenency for libjxl highway: add recipe webkitgtk3: update 2.42.5 -> 2.44.0 gnome-control-center: restore Upstream-Status line Martin Jansa (5): unionfs-fuse, dropwatch, postgresql, yasm, multipath-tools, python3-pybind11: add missing Upstream-Status recipes: Drop remaining PR values from recipes freerdp3: disable shadow without x11 xfstests: upgrade to v2024.03.03 gtkmm4: add x11 to REQUIRED_DISTRO_FEATURES Maxin John (7): tracker: remove unused patch openal-soft: remove unused patches libio-pty-perl: remove unsed patch opengl-es-cts: remove unused patch emacs: remove unused patch webkitgtk3: remove unused patch python3-eth-utils: remove unused patches Michael Heimpold (1): ser2net: add a systemd service file Mingli Yu (4): gosu: Upgrade to 1.17 googletest: Pass -fPIC to CFLAGS re2: Upgrade 2023.03.01 -> 2024.03.01 nss: Upgrade 3.74 -> 3.98 Ola x Nilsson (2): abseil-cpp: Split so-files into separate packages abseil-cpp: Split so-files into separate packages Peter Kjellerstedt (3): abseil-cpp: A little clean-up libnice: Disable the examples and the tests abseil-cpp: A little clean-up Peter Marko (5): jwt-cpp: fix cmake file install path soci: fix buildpaths warning libcpr: add new recipe python3-grpcio: cleanup dependencies microsoft-gsl: add new recipe including ptest Petr Gotthard (2): libmbim: Revert back to the latest stable 1.30.0 libqmi: Revert back to the latest stable 1.34.0 Randy MacLeod (2): rsyslog: update from 8.2306.0 to 8.2402.0 nftables: Add DESCRIPTION and HOMEPAGE Richard Purdie (2): imagemagick/lcms/fftw: Allow nativesdk versions to exist buildtools-imagemagick: Add new recipe Robert P. J. Day (1): fmt: remove unnecessary "inherit ptest" directive Robert Yang (6): yaffs2-utils: Upgrade to 20221209 xfsprogs: 6.5.0 -> 6.6.0 gnulib: 2018-12-18 -> 202401 thin-provisioning-tools: 1.0.9 -> 1.0.12 gperftools: 2.10 -> 2.15 freeradius: 3.0.26 -> 3.2.3 Ross Burton (1): python3-pydantic-core: just set PYPI_PACKAGE Sam Van Den Berge (1): python3-aiohttp: add missing dependencies Samuli Piippo (1): geoclue: enable demo agent Thomas Roos (1): usrsctp: upgrade to latest version Tim Orling (1): liberror-perl: move recipe from oe-core Tomasz Żyjewski (1): python: python-libusb1: add recipe Wang Mingyu (124): bats: upgrade 1.10.0 -> 1.11.0 c-ares: upgrade 1.26.0 -> 1.27.0 ctags: upgrade 6.1.20240114.0 -> 6.1.20240225.0 dbus-cxx: upgrade 2.5.0 -> 2.5.1 ddrescue: upgrade 1.27 -> 1.28 fetchmail: upgrade 6.4.37 -> 6.4.38 libtalloc: upgrade 2.4.1 -> 2.4.2 libtdb: upgrade 1.4.9 -> 1.4.10 neatvnc: upgrade 0.7.2 -> 0.8.0 ostree: upgrade 2024.3 -> 2024.4 python3-astroid: upgrade 3.0.3 -> 3.1.0 python3-cbor2: upgrade 5.6.1 -> 5.6.2 python3-dnspython: upgrade 2.6.0 -> 2.6.1 python3-eventlet: upgrade 0.35.1 -> 0.35.2 python3-gcovr: upgrade 7.0 -> 7.2 python3-google-api-core: upgrade 2.16.2 -> 2.17.1 python3-google-api-python-client: upgrade 2.118.0 -> 2.120.0 python3-grpcio(-tools): upgrade 1.60.1 -> 1.62.0 python3-ipython: upgrade 8.21.0 -> 8.22.1 python3-pdm: upgrade 2.12.3 -> 2.12.4 python3-pymisp: upgrade 2.4.185 -> 2.4.186 python3-scrypt: upgrade 0.8.20 -> 0.8.24 python3-sentry-sdk: upgrade 1.40.4 -> 1.40.6 smarty: upgrade 4.3.4 -> 4.4.1 stunnel: upgrade 5.69 -> 5.72 abseil-cpp: upgrade 20230802.1 -> 20240116.1 dnf-plugin-tui: upgrade 1.3 -> 1.4 boost-sml: upgrade 1.1.9 -> 1.1.11 ctags: upgrade 6.1.20240225.0 -> 6.1.20240310.0 dialog: upgrade 1.3-20240101 -> 1.3-20240307 flatbuffers: upgrade 23.5.26 -> 24.3.7 gjs: upgrade 1.78.4 -> 1.80.0 hwdata: upgrade 0.379 -> 0.380 iceauth: upgrade 1.0.9 -> 1.0.10 libdnet: upgrade 1.17.0 -> 1.18.0 libopus: upgrade 1.4 -> 1.5.1 libreport: upgrade 2.17.11 -> 2.17.15 libxaw: upgrade 1.0.15 -> 1.0.16 mcelog: upgrade 196 -> 197 networkd-dispatcher: upgrade 2.1 -> 2.2.4 openlldp: upgrade 1.1.0 -> 1.1.1 opensc: upgrade 0.24.0 -> 0.25.0 pcsc-lite: upgrade 2.0.1 -> 2.0.3 python3-a2wsgi: upgrade 1.10.2 -> 1.10.4 python3-apiflask: upgrade 2.1.0 -> 2.1.1 python3-argcomplete: upgrade 3.2.2 -> 3.2.3 python3-bandit: upgrade 1.7.7 -> 1.7.8 python3-blivet: upgrade 3.8.2 -> 3.9.1 python3-blivetgui: upgrade 2.4.2 -> 2.5.0 python3-django: upgrade 5.0.2 -> 5.0.3 python3-elementpath: upgrade 4.3.0 -> 4.4.0 python3-eth-abi: upgrade 5.0.0 -> 5.0.1 python3-eth-rlp: upgrade 1.0.1 -> 2.0.0 python3-flask-migrate: upgrade 4.0.5 -> 4.0.7 python3-google-api-python-client: upgrade 2.120.0 -> 2.122.0 python3-google-auth: upgrade 2.28.1 -> 2.28.2 python3-googleapis-common-protos: upgrade 1.62.0 -> 1.63.0 python3-grpcio-tools: upgrade 1.62.0 -> 1.62.1 python3-grpcio: upgrade 1.62.0 -> 1.62.1 python3-ipython: upgrade 8.22.1 -> 8.22.2 python3-mypy: upgrade 1.8.0 -> 1.9.0 python3-pydantic: upgrade 2.6.3 -> 2.6.4 python3-pymisp: upgrade 2.4.186 -> 2.4.187 python3-pymodbus: upgrade 3.6.4 -> 3.6.6 python3-pyperf: upgrade 2.6.2 -> 2.6.3 python3-pytest-lazy-fixtures: upgrade 1.0.5 -> 1.0.6 python3-pytest-timeout: upgrade 2.2.0 -> 2.3.1 python3-requests-oauthlib: upgrade 1.3.1 -> 1.4.0 python3-sentry-sdk: upgrade 1.40.6 -> 1.42.0 python3-tox: upgrade 4.13.0 -> 4.14.1 python3-traitlets: upgrade 5.14.1 -> 5.14.2 python3-types-psutil: upgrade 5.9.5.20240205 -> 5.9.5.20240316 python3-types-python-dateutil: upgrade 2.8.19.20240106 -> 2.9.0.20240316 tcsh: upgrade 6.24.10 -> 6.24.11 thingsboard-gateway: upgrade 3.4.4 -> 3.4.5 xmessage: upgrade 1.0.6 -> 1.0.7 xrefresh: upgrade 1.0.7 -> 1.1.0 gjs: upgrade 1.80.0 -> 1.80.2 gnome-backgrounds: upgrade 45.0 -> 46.0 gnome-font-viewer: upgrade 45.0 -> 46.0 libblockdev: upgrade 3.1.0 -> 3.1.1 libdeflate: upgrade 1.19 -> 1.20 libmbim: upgrade 1.30.0 -> 1.31.2 libqmi: upgrade 1.34.0 -> 1.35.2 libtommath: upgrade 1.2.1 -> 1.3.0 mcelog: upgrade 197 -> 198 metacity: upgrade 3.50.0 -> 3.52.0 python3-asgiref: upgrade 3.7.2 -> 3.8.1 python3-blivet: upgrade 3.9.1 -> 3.9.2 python3-cassandra-driver: upgrade 3.29.0 -> 3.29.1 python3-djangorestframework: upgrade 3.14.0 -> 3.15.1 python3-eth-rlp: upgrade 2.0.0 -> 2.1.0 python3-eventlet: upgrade 0.35.2 -> 0.36.1 python3-filelock: upgrade 3.13.1 -> 3.13.3 python3-flask-marshmallow: upgrade 1.2.0 -> 1.2.1 python3-flatbuffers: upgrade 24.3.7 -> 24.3.25 python3-google-api-core: upgrade 2.17.1 -> 2.18.0 python3-google-api-python-client: upgrade 2.122.0 -> 2.124.0 python3-google-auth: upgrade 2.28.2 -> 2.29.0 python3-graphviz: upgrade 0.20.1 -> 0.20.3 python3-gspread: upgrade 6.0.2 -> 6.1.0 python3-jdatetime: upgrade 4.1.1 -> 5.0.0 python3-pdm: upgrade 2.12.4 -> 2.13.2 python3-pyasn1-modules: upgrade 0.3.0 -> 0.4.0 python3-pymisp: upgrade 2.4.187 -> 2.4.188 python3-pytest-asyncio: upgrade 0.23.5 -> 0.23.6 python3-pytest-cov: upgrade 4.1.0 -> 5.0.0 python3-pytest-lazy-fixtures: upgrade 1.0.6 -> 1.0.7 python3-pywbem: upgrade 1.6.2 -> 1.6.3 python3-pywbemtools: upgrade 1.2.0 -> 1.2.1 python3-pyzstd: upgrade 0.15.9 -> 0.15.10 python3-requests-oauthlib: upgrade 1.4.0 -> 2.0.0 python3-sentry-sdk: upgrade 1.42.0 -> 1.44.0 python3-socketio: upgrade 5.11.1 -> 5.11.2 python3-thrift: upgrade 0.16.0 -> 0.20.0 python3-tox: upgrade 4.14.1 -> 4.14.2 python3-web3: upgrade 6.15.1 -> 6.16.0 st: upgrade 0.9 -> 0.9.1 thingsboard-gateway: upgrade 3.4.5 -> 3.4.6 thrift: upgrade 0.19.0 -> 0.20.0 tracker-miners: upgrade 3.7.0 -> 3.7.1 tracker: upgrade 3.7.0 -> 3.7.1 wireshark: upgrade 4.2.3 -> 4.2.4 wolfssl: upgrade 5.6.6 -> 5.7.0 William Lyu (3): nftables: Fix ptest output format issues nftables: Fix ShellCheck violations in ptest wrapper script "run-ptest" nftables: Fix failed ptest testcases Yi Zhao (13): netplan: upgrade 0.106 -> 1.0 networkmanager: 1.44.0 -> 1.46.0 postfix: upgrade 3.8.5 -> 3.8.6 net-snmp: upgrade 5.9.3 -> 5.9.4 cryptsetup: upgrade 2.7.0 -> 2.7.1 samba: upgrade 4.19.4 -> 4.19.5 civetweb: remove buildpaths from civetweb-targets.cmake minifi-cpp: upgrade 0.7.0 -> 0.15.0 openvpn: upgrade 2.6.9 -> 2.6.10 rocksdb: upgrade 7.9.2 -> 9.0.0 audit: upgrade 4.0 -> 4.0.1 netplan: add missing config directory strongswan: upgrade 5.9.13 -> 5.9.14 alperak (15): python3-icecream: add recipe python3-invoke: add recipe python3-traitlets: add ptest and update runtime dependencies python3-google-auth-oauthlib: add ptest python3-tomli-w: added recipe which is also include ptest python3-pytest-localserver: added recipe which is also include ptest python3-responses: add recipe python3-google-auth: add ptest and update runtime dependencies remove obsolete PIP_INSTALL_PACKAGE and PIP_INSTALL_DIST_PATH python3-a2wsgi: added recipe which is also include ptest python3-httptools: added recipe which is also include ptest python3-wsproto: Add recipe python3-portalocker: enable ptest python3-validators: upgrade 0.22.0 > 0.24.0 and enable ptest python3-pydbus: Drop ${PYTHON_PN} chenheyun (1): aer-inject:add new recipe Change-Id: I3cf0e5c87ecdfa18c35d318cb64c0e6559348618 Signed-off-by: Patrick Williams --- ...ion-attribute-conforming-to-introspect.dt.patch | 40 ++ .../0002-Support-asynchronous-calls-58.patch | 206 +++++++++ ...nsformation-between-D-Bus-errors-and-exce.patch | 495 +++++++++++++++++++++ .../python/python3-pydbus/run-ptest | 15 + 4 files changed, 756 insertions(+) create mode 100644 meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-make-direction-attribute-conforming-to-introspect.dt.patch create mode 100644 meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-asynchronous-calls-58.patch create mode 100644 meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0003-Support-transformation-between-D-Bus-errors-and-exce.patch create mode 100644 meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/run-ptest (limited to 'meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus') diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-make-direction-attribute-conforming-to-introspect.dt.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-make-direction-attribute-conforming-to-introspect.dt.patch new file mode 100644 index 0000000000..1bd17986e6 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-make-direction-attribute-conforming-to-introspect.dt.patch @@ -0,0 +1,40 @@ +From 5fe65a35e0e7106347639f0258206fadb451c439 Mon Sep 17 00:00:00 2001 +From: Hiroaki KAWAI +Date: Wed, 1 Feb 2017 18:00:33 +0900 +Subject: [PATCH 1/3] make direction attribute conforming to introspect.dtd + +direction attribute defaults to "in" as +in the DTD(*1), direction attribute is defined as following: + +``` + +``` + +*1) http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd + +Adapted from Fedora [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/] + +Upstream-Status: Inactive-Upstream (Last release 12/18/2016; Last commit 05/6/2018) + +Signed-off-by: Derek Straka +--- + pydbus/proxy_method.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py +index 8798edd..3e6e6ee 100644 +--- a/pydbus/proxy_method.py ++++ b/pydbus/proxy_method.py +@@ -33,8 +33,8 @@ class ProxyMethod(object): + self.__name__ = method.attrib["name"] + self.__qualname__ = self._iface_name + "." + self.__name__ + +- self._inargs = [(arg.attrib.get("name", ""), arg.attrib["type"]) for arg in method if arg.tag == "arg" and arg.attrib["direction"] == "in"] +- self._outargs = [arg.attrib["type"] for arg in method if arg.tag == "arg" and arg.attrib["direction"] == "out"] ++ self._inargs = [(arg.attrib.get("name", ""), arg.attrib["type"]) for arg in method if arg.tag == "arg" and arg.attrib.get("direction", "in") == "in"] ++ self._outargs = [arg.attrib["type"] for arg in method if arg.tag == "arg" and arg.attrib.get("direction", "in") == "out"] + self._sinargs = "(" + "".join(x[1] for x in self._inargs) + ")" + self._soutargs = "(" + "".join(self._outargs) + ")" + +-- +2.13.5 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-asynchronous-calls-58.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-asynchronous-calls-58.patch new file mode 100644 index 0000000000..b3c57edade --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-asynchronous-calls-58.patch @@ -0,0 +1,206 @@ +From 31d6dd7893a5e1bb9eb14bfcee861a5b62f64960 Mon Sep 17 00:00:00 2001 +From: Vendula Poncova +Date: Thu, 27 Jul 2017 18:41:29 +0200 +Subject: [PATCH 2/3] Support asynchronous calls (#58) + +Added support for asynchronous calls of methods. A method is called +synchronously unless its callback parameter is specified. A callback +is a function f(*args, returned=None, error=None), where args is +callback_args specified in the method call, returned is a return +value of the method and error is an exception raised by the method. + +Example of an asynchronous call: + +def func(x, y, returned=None, error=None): + pass + +proxy.Method(a, b, callback=func, callback_args=(x, y)) + +Adapted from Fedora [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/] + +Upstream-Status: Inactive-Upstream (Last release 12/18/2016; Last commit 05/6/2018) + +Signed-off-by: Derek Straka +--- + doc/tutorial.rst | 11 ++++++++- + pydbus/proxy_method.py | 44 ++++++++++++++++++++++++++++++----- + tests/publish_async.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ + tests/run.sh | 1 + + 4 files changed, 112 insertions(+), 7 deletions(-) + create mode 100644 tests/publish_async.py + +diff --git a/doc/tutorial.rst b/doc/tutorial.rst +index 7474de3..b8479cf 100644 +--- a/doc/tutorial.rst ++++ b/doc/tutorial.rst +@@ -84,7 +84,8 @@ All objects have methods, properties and signals. + Setting up an event loop + ======================== + +-To handle signals emitted by exported objects, or to export your own objects, you need to setup an event loop. ++To handle signals emitted by exported objects, to asynchronously call methods ++or to export your own objects, you need to setup an event loop. + + The only main loop supported by ``pydbus`` is GLib.MainLoop. + +@@ -156,6 +157,14 @@ To call a method:: + + dev.Disconnect() + ++To asynchronously call a method:: ++ ++ def print_result(returned=None, error=None): ++ print(returned, error) ++ ++ dev.GetAppliedConnection(0, callback=print_result) ++ loop.run() ++ + To read a property:: + + print(dev.Autoconnect) +diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py +index 3e6e6ee..442fe07 100644 +--- a/pydbus/proxy_method.py ++++ b/pydbus/proxy_method.py +@@ -65,15 +65,34 @@ class ProxyMethod(object): + + # Python 2 sux + for kwarg in kwargs: +- if kwarg not in ("timeout",): ++ if kwarg not in ("timeout", "callback", "callback_args"): + raise TypeError(self.__qualname__ + " got an unexpected keyword argument '{}'".format(kwarg)) + timeout = kwargs.get("timeout", None) ++ callback = kwargs.get("callback", None) ++ callback_args = kwargs.get("callback_args", tuple()) ++ ++ call_args = ( ++ instance._bus_name, ++ instance._path, ++ self._iface_name, ++ self.__name__, ++ GLib.Variant(self._sinargs, args), ++ GLib.VariantType.new(self._soutargs), ++ 0, ++ timeout_to_glib(timeout), ++ None ++ ) ++ ++ if callback: ++ call_args += (self._finish_async_call, (callback, callback_args)) ++ instance._bus.con.call(*call_args) ++ return None ++ else: ++ ret = instance._bus.con.call_sync(*call_args) ++ return self._unpack_return(ret) + +- ret = instance._bus.con.call_sync( +- instance._bus_name, instance._path, +- self._iface_name, self.__name__, GLib.Variant(self._sinargs, args), GLib.VariantType.new(self._soutargs), +- 0, timeout_to_glib(timeout), None).unpack() +- ++ def _unpack_return(self, values): ++ ret = values.unpack() + if len(self._outargs) == 0: + return None + elif len(self._outargs) == 1: +@@ -81,6 +100,19 @@ class ProxyMethod(object): + else: + return ret + ++ def _finish_async_call(self, source, result, user_data): ++ error = None ++ return_args = None ++ ++ try: ++ ret = source.call_finish(result) ++ return_args = self._unpack_return(ret) ++ except Exception as err: ++ error = err ++ ++ callback, callback_args = user_data ++ callback(*callback_args, returned=return_args, error=error) ++ + def __get__(self, instance, owner): + if instance is None: + return self +diff --git a/tests/publish_async.py b/tests/publish_async.py +new file mode 100644 +index 0000000..3f79b62 +--- /dev/null ++++ b/tests/publish_async.py +@@ -0,0 +1,63 @@ ++from pydbus import SessionBus ++from gi.repository import GLib ++from threading import Thread ++import sys ++ ++done = 0 ++loop = GLib.MainLoop() ++ ++class TestObject(object): ++ ''' ++ ++ ++ ++ ++ ++ ++ ++ ++ ''' ++ def __init__(self, id): ++ self.id = id ++ ++ def HelloWorld(self, x): ++ res = self.id + ": " + str(x) ++ print(res) ++ return res ++ ++bus = SessionBus() ++ ++with bus.publish("net.lew21.pydbus.tests.publish_async", TestObject("Obj")): ++ remote = bus.get("net.lew21.pydbus.tests.publish_async") ++ ++ def callback(x, returned=None, error=None): ++ print("asyn: " + returned) ++ assert (returned is not None) ++ assert(error is None) ++ assert(x == int(returned.split()[1])) ++ ++ global done ++ done += 1 ++ if done == 3: ++ loop.quit() ++ ++ def t1_func(): ++ remote.HelloWorld(1, callback=callback, callback_args=(1,)) ++ remote.HelloWorld(2, callback=callback, callback_args=(2,)) ++ print("sync: " + remote.HelloWorld(3)) ++ remote.HelloWorld(4, callback=callback, callback_args=(4,)) ++ ++ t1 = Thread(None, t1_func) ++ t1.daemon = True ++ ++ def handle_timeout(): ++ print("ERROR: Timeout.") ++ sys.exit(1) ++ ++ GLib.timeout_add_seconds(2, handle_timeout) ++ ++ t1.start() ++ ++ loop.run() ++ ++ t1.join() +diff --git a/tests/run.sh b/tests/run.sh +index 8d93644..271c58a 100755 +--- a/tests/run.sh ++++ b/tests/run.sh +@@ -15,4 +15,5 @@ then + "$PYTHON" $TESTS_DIR/publish.py + "$PYTHON" $TESTS_DIR/publish_properties.py + "$PYTHON" $TESTS_DIR/publish_multiface.py ++ "$PYTHON" $TESTS_DIR/publish_async.py + fi +-- +2.13.5 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0003-Support-transformation-between-D-Bus-errors-and-exce.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0003-Support-transformation-between-D-Bus-errors-and-exce.patch new file mode 100644 index 0000000000..a1b8a6c38c --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0003-Support-transformation-between-D-Bus-errors-and-exce.patch @@ -0,0 +1,495 @@ +From 773858e1afd21cdf3ceef2cd35509f0b4882bf16 Mon Sep 17 00:00:00 2001 +From: Vendula Poncova +Date: Tue, 1 Aug 2017 16:54:24 +0200 +Subject: [PATCH 3/3] Support transformation between D-Bus errors and + exceptions. + +Exceptions can be registered with decorators, raised in a remote +method and recreated after return from the remote call. + +Adapted from Fedora [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/] + +Upstream-Status: Inactive-Upstream (Last release 12/18/2016; Last commit 05/6/2018) + +Signed-off-by: Derek Straka +--- + doc/tutorial.rst | 47 ++++++++++++++++++ + pydbus/error.py | 97 ++++++++++++++++++++++++++++++++++++ + pydbus/proxy_method.py | 18 +++++-- + pydbus/registration.py | 16 ++++-- + tests/error.py | 67 +++++++++++++++++++++++++ + tests/publish_error.py | 132 +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/run.sh | 2 + + 7 files changed, 371 insertions(+), 8 deletions(-) + create mode 100644 pydbus/error.py + create mode 100644 tests/error.py + create mode 100644 tests/publish_error.py + +diff --git a/doc/tutorial.rst b/doc/tutorial.rst +index b8479cf..7fe55e1 100644 +--- a/doc/tutorial.rst ++++ b/doc/tutorial.rst +@@ -341,6 +341,53 @@ See ``help(bus.request_name)`` and ``help(bus.register_object)`` for details. + + .. -------------------------------------------------------------------- + ++Error handling ++============== ++ ++You can map D-Bus errors to your exception classes for better error handling. ++To handle D-Bus errors, use the ``@map_error`` decorator:: ++ ++ from pydbus.error import map_error ++ ++ @map_error("org.freedesktop.DBus.Error.InvalidArgs") ++ class InvalidArgsException(Exception): ++ pass ++ ++ try: ++ ... ++ catch InvalidArgsException as e: ++ print(e) ++ ++To register new D-Bus errors, use the ``@register_error`` decorator:: ++ ++ from pydbus.error import register_error ++ ++ @map_error("net.lew21.pydbus.TutorialExample.MyError", MY_DOMAIN, MY_EXCEPTION_CODE) ++ class MyException(Exception): ++ pass ++ ++Then you can raise ``MyException`` from the D-Bus method of the remote object:: ++ ++ def Method(): ++ raise MyException("Message") ++ ++And catch the same exception on the client side:: ++ ++ try: ++ proxy.Method() ++ catch MyException as e: ++ print(e) ++ ++To handle all unknown D-Bus errors, use the ``@map_by_default`` decorator to specify the default exception:: ++ ++ from pydbus.error import map_by_default ++ ++ @map_by_default ++ class DefaultException(Exception): ++ pass ++ ++.. -------------------------------------------------------------------- ++ + Data types + ========== + +diff --git a/pydbus/error.py b/pydbus/error.py +new file mode 100644 +index 0000000..aaa3510 +--- /dev/null ++++ b/pydbus/error.py +@@ -0,0 +1,97 @@ ++from gi.repository import GLib, Gio ++ ++ ++def register_error(name, domain, code): ++ """Register and map decorated exception class to a DBus error.""" ++ def decorated(cls): ++ error_registration.register_error(cls, name, domain, code) ++ return cls ++ ++ return decorated ++ ++ ++def map_error(error_name): ++ """Map decorated exception class to a DBus error.""" ++ def decorated(cls): ++ error_registration.map_error(cls, error_name) ++ return cls ++ ++ return decorated ++ ++ ++def map_by_default(cls): ++ """Map decorated exception class to all unknown DBus errors.""" ++ error_registration.map_by_default(cls) ++ return cls ++ ++ ++class ErrorRegistration(object): ++ """Class for mapping exceptions to DBus errors.""" ++ ++ _default = None ++ _map = dict() ++ _reversed_map = dict() ++ ++ def map_by_default(self, exception_cls): ++ """Set the exception class as a default.""" ++ self._default = exception_cls ++ ++ def map_error(self, exception_cls, name): ++ """Map the exception class to a DBus name.""" ++ self._map[name] = exception_cls ++ self._reversed_map[exception_cls] = name ++ ++ def register_error(self, exception_cls, name, domain, code): ++ """Map and register the exception class to a DBus name.""" ++ self.map_error(exception_cls, name) ++ return Gio.DBusError.register_error(domain, code, name) ++ ++ def is_registered_exception(self, obj): ++ """Is the exception registered?""" ++ return obj.__class__ in self._reversed_map ++ ++ def get_dbus_name(self, obj): ++ """Get the DBus name of the exception.""" ++ return self._reversed_map.get(obj.__class__) ++ ++ def get_exception_class(self, name): ++ """Get the exception class mapped to the DBus name.""" ++ return self._map.get(name, self._default) ++ ++ def transform_message(self, name, message): ++ """Transform the message of the exception.""" ++ prefix = "{}:{}: ".format("GDBus.Error", name) ++ ++ if message.startswith(prefix): ++ return message[len(prefix):] ++ ++ return message ++ ++ def transform_exception(self, e): ++ """Transform the remote error to the exception.""" ++ if not isinstance(e, GLib.Error): ++ return e ++ ++ if not Gio.DBusError.is_remote_error(e): ++ return e ++ ++ # Get DBus name of the error. ++ name = Gio.DBusError.get_remote_error(e) ++ # Get the exception class. ++ exception_cls = self.get_exception_class(name) ++ ++ # Return the original exception. ++ if not exception_cls: ++ return e ++ ++ # Return new exception. ++ message = self.transform_message(name, e.message) ++ exception = exception_cls(message) ++ exception.dbus_name = name ++ exception.dbus_domain = e.domain ++ exception.dbus_code = e.code ++ return exception ++ ++ ++# Default error registration. ++error_registration = ErrorRegistration() +diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py +index 442fe07..a73f9eb 100644 +--- a/pydbus/proxy_method.py ++++ b/pydbus/proxy_method.py +@@ -2,6 +2,7 @@ from gi.repository import GLib + from .generic import bound_method + from .identifier import filter_identifier + from .timeout import timeout_to_glib ++from .error import error_registration + + try: + from inspect import Signature, Parameter +@@ -87,9 +88,20 @@ class ProxyMethod(object): + call_args += (self._finish_async_call, (callback, callback_args)) + instance._bus.con.call(*call_args) + return None ++ + else: +- ret = instance._bus.con.call_sync(*call_args) +- return self._unpack_return(ret) ++ result = None ++ error = None ++ ++ try: ++ result = instance._bus.con.call_sync(*call_args) ++ except Exception as e: ++ error = error_registration.transform_exception(e) ++ ++ if error: ++ raise error ++ ++ return self._unpack_return(result) + + def _unpack_return(self, values): + ret = values.unpack() +@@ -108,7 +120,7 @@ class ProxyMethod(object): + ret = source.call_finish(result) + return_args = self._unpack_return(ret) + except Exception as err: +- error = err ++ error = error_registration.transform_exception(err) + + callback, callback_args = user_data + callback(*callback_args, returned=return_args, error=error) +diff --git a/pydbus/registration.py b/pydbus/registration.py +index f531539..1d2cbcb 100644 +--- a/pydbus/registration.py ++++ b/pydbus/registration.py +@@ -5,6 +5,7 @@ from . import generic + from .exitable import ExitableWithAliases + from functools import partial + from .method_call_context import MethodCallContext ++from .error import error_registration + import logging + + try: +@@ -91,11 +92,16 @@ class ObjectWrapper(ExitableWithAliases("unwrap")): + logger = logging.getLogger(__name__) + logger.exception("Exception while handling %s.%s()", interface_name, method_name) + +- #TODO Think of a better way to translate Python exception types to DBus error types. +- e_type = type(e).__name__ +- if not "." in e_type: +- e_type = "unknown." + e_type +- invocation.return_dbus_error(e_type, str(e)) ++ if error_registration.is_registered_exception(e): ++ name = error_registration.get_dbus_name(e) ++ invocation.return_dbus_error(name, str(e)) ++ else: ++ logger.info("name is not registered") ++ e_type = type(e).__name__ ++ if not "." in e_type: ++ e_type = "unknown." + e_type ++ ++ invocation.return_dbus_error(e_type, str(e)) + + def Get(self, interface_name, property_name): + type = self.readable_properties[interface_name + "." + property_name] +diff --git a/tests/error.py b/tests/error.py +new file mode 100644 +index 0000000..3ec507d +--- /dev/null ++++ b/tests/error.py +@@ -0,0 +1,67 @@ ++from pydbus.error import ErrorRegistration ++ ++ ++class ExceptionA(Exception): ++ pass ++ ++ ++class ExceptionB(Exception): ++ pass ++ ++ ++class ExceptionC(Exception): ++ pass ++ ++ ++class ExceptionD(Exception): ++ pass ++ ++ ++class ExceptionE(Exception): ++ pass ++ ++ ++def test_error_mapping(): ++ r = ErrorRegistration() ++ r.map_error(ExceptionA, "net.lew21.pydbus.tests.ErrorA") ++ r.map_error(ExceptionB, "net.lew21.pydbus.tests.ErrorB") ++ r.map_error(ExceptionC, "net.lew21.pydbus.tests.ErrorC") ++ ++ assert r.is_registered_exception(ExceptionA("Test")) ++ assert r.is_registered_exception(ExceptionB("Test")) ++ assert r.is_registered_exception(ExceptionC("Test")) ++ assert not r.is_registered_exception(ExceptionD("Test")) ++ assert not r.is_registered_exception(ExceptionE("Test")) ++ ++ assert r.get_dbus_name(ExceptionA("Test")) == "net.lew21.pydbus.tests.ErrorA" ++ assert r.get_dbus_name(ExceptionB("Test")) == "net.lew21.pydbus.tests.ErrorB" ++ assert r.get_dbus_name(ExceptionC("Test")) == "net.lew21.pydbus.tests.ErrorC" ++ ++ assert r.get_exception_class("net.lew21.pydbus.tests.ErrorA") == ExceptionA ++ assert r.get_exception_class("net.lew21.pydbus.tests.ErrorB") == ExceptionB ++ assert r.get_exception_class("net.lew21.pydbus.tests.ErrorC") == ExceptionC ++ assert r.get_exception_class("net.lew21.pydbus.tests.ErrorD") is None ++ assert r.get_exception_class("net.lew21.pydbus.tests.ErrorE") is None ++ ++ r.map_by_default(ExceptionD) ++ assert not r.is_registered_exception(ExceptionD("Test")) ++ assert r.get_exception_class("net.lew21.pydbus.tests.ErrorD") == ExceptionD ++ assert r.get_exception_class("net.lew21.pydbus.tests.ErrorE") == ExceptionD ++ ++ ++def test_transform_message(): ++ r = ErrorRegistration() ++ n1 = "net.lew21.pydbus.tests.ErrorA" ++ m1 = "GDBus.Error:net.lew21.pydbus.tests.ErrorA: Message1" ++ ++ n2 = "net.lew21.pydbus.tests.ErrorB" ++ m2 = "GDBus.Error:net.lew21.pydbus.tests.ErrorB: Message2" ++ ++ assert r.transform_message(n1, m1) == "Message1" ++ assert r.transform_message(n2, m2) == "Message2" ++ assert r.transform_message(n1, m2) == m2 ++ assert r.transform_message(n2, m1) == m1 ++ ++ ++test_error_mapping() ++test_transform_message() +diff --git a/tests/publish_error.py b/tests/publish_error.py +new file mode 100644 +index 0000000..aa8a18a +--- /dev/null ++++ b/tests/publish_error.py +@@ -0,0 +1,132 @@ ++import sys ++from threading import Thread ++from gi.repository import GLib, Gio ++from pydbus import SessionBus ++from pydbus.error import register_error, map_error, map_by_default, error_registration ++ ++import logging ++logger = logging.getLogger('pydbus.registration') ++logger.disabled = True ++ ++loop = GLib.MainLoop() ++DOMAIN = Gio.DBusError.quark() # TODO: Register new domain. ++ ++ ++@register_error("net.lew21.pydbus.tests.ErrorA", DOMAIN, 1000) ++class ExceptionA(Exception): ++ pass ++ ++ ++@register_error("net.lew21.pydbus.tests.ErrorB", DOMAIN, 2000) ++class ExceptionB(Exception): ++ pass ++ ++ ++@map_error("org.freedesktop.DBus.Error.InvalidArgs") ++class ExceptionC(Exception): ++ pass ++ ++ ++@map_by_default ++class ExceptionD(Exception): ++ pass ++ ++ ++class ExceptionE(Exception): ++ pass ++ ++ ++class TestObject(object): ++ ''' ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ''' ++ ++ def RaiseA(self, msg): ++ raise ExceptionA(msg) ++ ++ def RaiseB(self, msg): ++ raise ExceptionB(msg) ++ ++ def RaiseD(self, msg): ++ raise ExceptionD(msg) ++ ++ def RaiseE(self, msg): ++ raise ExceptionE(msg) ++ ++bus = SessionBus() ++ ++with bus.publish("net.lew21.pydbus.tests.Test", TestObject()): ++ remote = bus.get("net.lew21.pydbus.tests.Test") ++ ++ def t_func(): ++ # Test new registered errors. ++ try: ++ remote.RaiseA("Test A") ++ except ExceptionA as e: ++ assert str(e) == "Test A" ++ ++ try: ++ remote.RaiseB("Test B") ++ except ExceptionB as e: ++ assert str(e) == "Test B" ++ ++ # Test mapped errors. ++ try: ++ remote.Get("net.lew21.pydbus.tests.TestInterface", "Foo") ++ except ExceptionC as e: ++ assert str(e) == "No such property 'Foo'" ++ ++ # Test default errors. ++ try: ++ remote.RaiseD("Test D") ++ except ExceptionD as e: ++ assert str(e) == "Test D" ++ ++ try: ++ remote.RaiseE("Test E") ++ except ExceptionD as e: ++ assert str(e) == "Test E" ++ ++ # Test with no default errors. ++ error_registration.map_by_default(None) ++ ++ try: ++ remote.RaiseD("Test D") ++ except Exception as e: ++ assert not isinstance(e, ExceptionD) ++ ++ try: ++ remote.RaiseE("Test E") ++ except Exception as e: ++ assert not isinstance(e, ExceptionD) ++ assert not isinstance(e, ExceptionE) ++ ++ loop.quit() ++ ++ t = Thread(None, t_func) ++ t.daemon = True ++ ++ def handle_timeout(): ++ print("ERROR: Timeout.") ++ sys.exit(1) ++ ++ GLib.timeout_add_seconds(4, handle_timeout) ++ ++ t.start() ++ loop.run() ++ t.join() +diff --git a/tests/run.sh b/tests/run.sh +index 271c58a..a08baf8 100755 +--- a/tests/run.sh ++++ b/tests/run.sh +@@ -10,10 +10,11 @@ PYTHON=${1:-python} + + "$PYTHON" $TESTS_DIR/context.py + "$PYTHON" $TESTS_DIR/identifier.py ++"$PYTHON" $TESTS_DIR/error.py + if [ "$2" != "dontpublish" ] + then + "$PYTHON" $TESTS_DIR/publish.py + "$PYTHON" $TESTS_DIR/publish_properties.py + "$PYTHON" $TESTS_DIR/publish_multiface.py + "$PYTHON" $TESTS_DIR/publish_async.py + fi +-- +2.13.5 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/run-ptest new file mode 100644 index 0000000000..782ceed3bb --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/run-ptest @@ -0,0 +1,15 @@ +#!/bin/sh + +for case in `find tests -type f -name '*.sh'`; do + bash $case python3 >$case.output 2>&1 + ret=$? + if [ $ret -ne 0 ]; then + cat $case.output + echo "FAIL: ${case}" + elif grep -i 'SKIP' $case.output; then + echo "SKIP: ${case}" + else + echo "PASS: ${case}" + fi + rm -f $case.output +done \ No newline at end of file -- cgit v1.2.3